MycroftAI/mycroft-core

Remove unused packages?

maggie44 opened this issue · 1 comments

Describe the solution you'd like
The dev_setup.sh script installs a lot of packages for the build process:

mycroft-core/dev_setup.sh

Lines 361 to 366 in 1b67bf3

function debian_install() {
APT_PACKAGE_LIST=(git python3 python3-dev python3-setuptools libtool \
libffi-dev libssl-dev autoconf automake bison swig libglib2.0-dev \
portaudio19-dev mpg123 screen flac curl libicu-dev pkg-config \
libjpeg-dev libfann-dev build-essential jq pulseaudio \
pulseaudio-utils)

Are they all required to run MyCroft, or are some just for installation? If things like build-essential and pkg-config could be removed at the end of the script it would make a big difference in installation size (particularly relevant for the Docker builds and PiCroft).

This is a tricky question I think. Some are definitely not needed anymore (screen for example).

Others (like libicu-dev) are only needed for the Mimic1 build during installation. Since mimic3 is out and very cool these might be phased out shortly.

Libjpeg-dev I think is only needed for the Mark-1 enclosure? so could technically be removed from the general package install.

libglib2.0-dev could also possibly be dropped. I think it was originally added for the default "desktop launch application" skill

Build-essential, automake, bison and some of the other I think is in a bit of a limbo state. They are needed for building mimic so when/if mimic3 lands as a default they're no longer needed. However they are useful for allowing pip to build C-libraries and such when doing installs on system where there exist no binary wheels.

And also remember, the dev_setup.sh is meant to be used for development setups and not really for distributions. Picroft uses it since it was meant as a development platform. A dockerfile could for example replace the dev_setup.sh for docker installing the required packages.