This is the list of Ubuntu high level specific assumptions found in plugins to aid in the work needed to reach the consistent build environment work ahead using build VMs.
No portability issues describe in the text below exclude potential issues with the python interpreter driving snapcraft itself on the target build environment.
All the plugins are mostly straight forward fixes except for the ROS specific ones (i.e.; ament, catkin, catkin-tools).
ament
- This plugin is very debian package specific.
- Requires ROS
sources.list
ant
build-packages
ant
stage-packages
N/A
Other
- Inherits from the
jdkplugin. - Parametrizes calls to
antwith proxy information from the conventional (https_proxy,http_proxy) environment variables.
autotools
build-packages
autoconfautomakeautopointlibtool
stage-packages
N/A
Others
- Assumes
makeis onPATHonce installed throughbuild-packages. - Inherits from the
makeplugin. - Cross compiling requires knowledge of the architecture triplet.
catkin
- This plugin is very debian package specific.
- Requires ROS
sources.list
catkin-tools
- This plugin is very debian package specific.
- Requires ROS
sources.list - Inherits from the
catkinplugin.
cmake
build-packages
cmake
stage-packages
N/A
Others
- Assumes
makeis onPATHonce installed throughbuild-packages. - Inherits from the
makeplugin. - Sets environment
CMAKE_INCLUDE_PATHusing architecture triplet.
copy
- This plugin is deprecated.
- It has no portability issues.
dotnet
build-packages
N/A
stage-packages
libcurl3libcurl3-gnutlslibicu55liblttng-ust0libunwind8lldblibssl1.0.0libgssapi-krb5-2zlib1glibgcc1
Others
- Uses debian architecture
- For older versions of the SDK, uses the Ubuntu target names (from the SDK).
dump
build-packages
N/A
stage-packages
N/A
Others
- Has exception logic for
libc6Ubuntu package file list for LP: #1658774
godeps
build-packages
golang-gogit
stage-packages
N/A
Others
- Assumes
goandgitare onPATHonce installed throughbuild-packages. - Uses standard
gotool primitives to setupgodeps
go
build-packages
golang-go
stage-packages
N/A
Others
- Assumes
gois onPATHonce installed throughbuild-packages. - Sets environment for
CGOusing architecture triplet. - Sets environment
GOARCHusing deb arch.
gradle
build-packages
ca-certificates-javagradle
stage-packages
- N/A
Others
- gradle is added as
build-packagesonly ifgradlewis not part of the project source tree. - Parametrizes calls to
gradleorgradlewwith proxy information from the conventional (https_proxy,http_proxy) environment variables. - Inherits from the
jdkplugin.
gulp
build-packages
N/A
stage-packages
N/A
Others
- Sets up
npmfrom upstream tarball - Sets up
gulpwithnpm
jdk
build-packages
N/A
stage-packages
default-jdk
Others
- Paths for environment assuming java related paths from
default-jdkfrombuild-packages. - This plugin has minimal use on its own and only availbale for backwards compatibility.
jhbuild
build-packages
apt-fileautoconfautomakeautopointautotools-devbisonbuild-essentialca-certificatescvsdocbookdocbook-xmldocbook-xslflexgettextgitintltooliso-codeslibtext-csv-perllibtoollibxml-parser-perlmakeninja-buildpkg-configpython-devpython3-devsubversionsymlinksyelp-toolszlib1g-dev
stage-packages
- N/A
Others
- Requires building as non-root.
- Uses
sudoto escalate.
kbuild
build-packages
bcgccmake
stage-packages
N/A
Others
- Has specific option for kconfigflavour for Ubuntu kernels (not affected if not used).
- Cross compiling requires knowledge of the architecture triplet.
kernel
build-packages
kmod
stage-packages
N/A
Others
- Inherits from the
kbuildplugin. - Tied to
basesnap to rebuild initrd (until split initrd happens). - Depends on debian architecture with default settings.
- Uses
unsquashfsprovided as a core dependency of snapcraft (from debDependsor snap).
make
build-packages
make
stage-packages
N/A
Others
- Assumes
makeis onPATHonce installed throughbuild-packages. - Assumes the convention of the existence of an
installtarget which could be overriden.
maven
build-packages
maven
stage-packages
N/A
Other
- Inherits from the
jdkplugin. - Creates
settings.xmlto pickup the proxy from the conventional (https_proxy,http_proxy) environment variables.
meson
build-packages
mesonninja-build
stage-packages
N/A
Others
- Assumes
mesonandninjaare onPATHonce installed throughbuild-packages. - Uses
ninjato execute the build.
nil
N/A
nodejs
build-packages
N/A
stage-packages
N/A
Others
- Retrieves npm and yarn from upstream urls.
- Uses the debian architecture as a key to download.
- Parametrizes calls to
yarnwith proxy information from the conventional (https_proxy,http_proxy) environment variables.
plainbox-provider
build-packages
intltool
Others
- Missing dependency on
python3(assumes already resolved). - This plugin is not maintained by the snapcraft team.
- Assumes python
sitecustomize.pypaths
python
build-packages
For python3:
python3-devpython3-pippython3-pkg-resourcespython3-setuptools
For python2:
python-devpython-pippython-pkg-resourcespython-setuptools
stage-packages
For python3:
python3
For python2:
python
Others
- Requires python binaries to be called
pythonandpython3for version 2 and 3 respectively. - Plugin fileset paths may be Ubuntu specific.
- If
pip,setuptoolsand/orwheelis provided as astage-packagesentry or manually provided, those are preferred, if not, they are retrieved from PyPI.
qmake
build-packages
For qt5:
qt5-qmakeqtbase5-dev
For qt4:
qt4-qmakelibqt4-dev
stage-packages
N/A
Others
N/A
ruby
build-packages
gccg++makezlib1g-devlibssl-devlibreadline-dev
stage-packages
N/A
Others
- Downloads the ruby source from upstream.
- Builds ruby/gems using
./configure && make && make install.
rust
build-packages
gccgitcurlfile
stage-packages
N/A
Others
- Sets up
rustcandcargousing rustup.
scons
build-packages
sconsninja-build
stage-packages
N/A
Others
-
- Assumes
sconsis onPATHonce installed throughbuild-packages.
- Assumes
tar-content
build-packages
N/A
stage-packages
N/A
Others
- This plugin is pure python.
- This plugin has been deprecated in favour of the
dumpplugin.
waf
build-packages
python-dev:native
stage-packages
N/A
Others
-
wafis part of the project’s source tree. - Cross compiling requires knowledge of the architecture triplet.