Support declarative package installs/uninstalls

Adds a new element, package-installs, that provides an interface for
declarative package installs and uninstalls. Packages to install can be
added to an install.d/package-installs-<element-name> file. The set of
packages listed across such files are installed in a single transaction
at the beginning of install.d.

Prefacing the package name with a "-" indicates that the package should
be uninstalled at the end of the install.d phase. Again, the full set of
uninstalls are done in a single transaction.

An element providing a package-installs file should add package-installs
to its element-deps file.

Change-Id: I5b540388eff1079c8dee933b869463371481152b
This commit is contained in:
James Slagle 2014-04-24 16:51:24 -04:00
parent b46ece4de9
commit 7f9ebf2632
3 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,8 @@
The package-installs element allows for a declarative method of installing and
uninstalling packages for an image build. Adding a file under your elements
install.d directory called package-installs-<element-name> will cause the list
of packages in that file to be installed at the beginning of the install.d
phase.
If the package name in the file starts with a "-", then that package will be
removed at the end of the install.d phase.

View File

@ -0,0 +1,17 @@
#!/bin/bash
set -eux
set -o pipefail
PACKAGES=
for PACKAGEFILE in $(find $(dirname $0) -maxdepth 1 -name "package-installs-*" ); do
while read pkg; do
if [ ${pkg:0:1} = "-" ]; then
pkg=${pkg:1}
fi
PACKAGES="$PACKAGES $pkg"
done < $PACKAGEFILE
done
install-packages $PACKAGES

View File

@ -0,0 +1,18 @@
#!/bin/bash
set -eux
set -o pipefail
PACKAGES=
for PACKAGEFILE in $(find $(dirname $0) -maxdepth 1 -name "package-installs-*" ); do
while read pkg; do
if [ ! ${pkg:0:1} = "-" ]; then
continue
fi
pkg=${pkg:1}
PACKAGES="$PACKAGES $pkg"
done < $PACKAGEFILE
done
install-packages -e $PACKAGES