Merge "Support installing packages by default"
This commit is contained in:
commit
ce67ce87ea
@ -124,7 +124,14 @@ Install Types
|
||||
-------------
|
||||
|
||||
Install types permit elements to be installed from different sources, such as
|
||||
git repositories, distribution packages, or pip.
|
||||
git repositories, distribution packages, or pip. The default install type
|
||||
is 'source' but it can be modified on the disk-image-create command line
|
||||
via the --install-type option. For example you can set:
|
||||
|
||||
--install-type=package
|
||||
|
||||
to enable package installs by default. Alternately, you can also
|
||||
set DIB\_DEFAULT\_INSTALLTYPE.
|
||||
|
||||
Many elements expose different install types. The different implementations
|
||||
live under `<install-dir-prefix>-<install-type>-install` directories under an
|
||||
|
@ -65,6 +65,7 @@ function show_options () {
|
||||
echo " Options need to be comma separated, and follow the key=value pattern."
|
||||
echo " --root-label label -- label for the root filesystem. Defaults to 'cloudimg-rootfs'."
|
||||
echo " --ramdisk-element -- specify the main element to be used for building ramdisks."
|
||||
echo " --install-type -- specify the default installation type. Defaults to 'source'. Set to 'package' to use package based installations by default."
|
||||
if [ "$IS_RAMDISK" == "0" ]; then
|
||||
echo " -n skip the default inclusion of the 'base' element"
|
||||
echo " -p package[,package,package] -- list of packages to install in the image"
|
||||
@ -90,7 +91,8 @@ INSTALL_PACKAGES=""
|
||||
IMAGE_TYPES=("qcow2")
|
||||
COMPRESS_IMAGE="true"
|
||||
export DIB_ROOT_LABEL=""
|
||||
TEMP=`getopt -o a:ho:t:xucnp: -l no-tmpfs,offline,help,min-tmpfs:,image-size:,image-cache:,max-online-resize:,qemu-img-options:,ramdisk-element:,root-label: -n $SCRIPTNAME -- "$@"`
|
||||
DIB_DEFAULT_INSTALLTYPE=${DIB_DEFAULT_INSTALLTYPE:-"source"}
|
||||
TEMP=`getopt -o a:ho:t:xucnp: -l no-tmpfs,offline,help,min-tmpfs:,image-size:,image-cache:,max-online-resize:,qemu-img-options:,ramdisk-element:,root-label:,install-type: -n $SCRIPTNAME -- "$@"`
|
||||
if [ $? -ne 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
|
||||
|
||||
# Note the quotes around `$TEMP': they are essential!
|
||||
@ -116,6 +118,7 @@ while true ; do
|
||||
--qemu-img-options) QEMU_IMG_OPTIONS=$2; shift 2;;
|
||||
--root-label) export DIB_ROOT_LABEL=$2; shift 2;;
|
||||
--ramdisk-element) RAMDISK_ELEMENT=$2; shift 2;;
|
||||
--install-type) DIB_DEFAULT_INSTALLTYPE=$2; shift 2;;
|
||||
--) shift ; break ;;
|
||||
*) echo "Internal error!" ; exit 1 ;;
|
||||
esac
|
||||
@ -162,6 +165,8 @@ fi
|
||||
|
||||
mk_build_dir
|
||||
create_base
|
||||
# This variable needs to be propagated into the chroot
|
||||
echo "export DIB_DEFAULT_INSTALLTYPE=\"${DIB_DEFAULT_INSTALLTYPE}\"" > $TMP_HOOKS_PATH/environment.d/11-dib-install-type.bash
|
||||
run_d extra-data
|
||||
# Run pre-install scripts. These do things that prepare the chroot for package installs
|
||||
run_d_in_target pre-install
|
||||
|
@ -45,14 +45,14 @@ for _install_type_var in $INSTALL_TYPE_VARS; do
|
||||
|
||||
done
|
||||
|
||||
# For any existing *-source-install directory under install.d, if an
|
||||
# environment variable setting a different install type was not seen, enable
|
||||
# the source install type.
|
||||
source_install_dirs=$(ls -d $TMP_HOOKS_PATH/install.d/*-source-install || true)
|
||||
for _source_install_dir in $source_install_dirs; do
|
||||
SUFFIX="-source-install"
|
||||
_source_install_dir=$(basename $_source_install_dir)
|
||||
INSTALLDIRPREFIX=${_source_install_dir%$SUFFIX}
|
||||
# For any existing *-<default_install_dir>-install directory under install.d,
|
||||
# if an environment variable setting a different install type was not seen,
|
||||
# enable the default (set via --install-type).
|
||||
default_install_type_dirs=$(ls -d $TMP_HOOKS_PATH/install.d/*-${DIB_DEFAULT_INSTALLTYPE}-install || true)
|
||||
for _install_dir in $default_install_type_dirs; do
|
||||
SUFFIX="-${DIB_DEFAULT_INSTALLTYPE}-install"
|
||||
_install_dir=$(basename $_install_dir)
|
||||
INSTALLDIRPREFIX=${_install_dir%$SUFFIX}
|
||||
|
||||
found=0
|
||||
for specified in ${SPECIFIED_ELEMS[@]}; do
|
||||
@ -65,7 +65,7 @@ for _source_install_dir in $source_install_dirs; do
|
||||
# install type not specified, assume source
|
||||
if [ "$found" = "0" ]; then
|
||||
pushd $TMP_HOOKS_PATH/install.d
|
||||
ln -sf $_source_install_dir/* .
|
||||
ln -sf $_install_dir/* .
|
||||
popd
|
||||
fi
|
||||
done
|
||||
|
@ -89,7 +89,7 @@ function get_repos_for_element(){
|
||||
|
||||
# Return if install type is not source
|
||||
local INSTALL_TYPE_VAR=DIB_INSTALLTYPE_${REPONAME//[^A-Za-z0-9]/_}
|
||||
local INSTALL_TYPE=${!INSTALL_TYPE_VAR:-source}
|
||||
local INSTALL_TYPE=${!INSTALL_TYPE_VAR:-$DIB_DEFAULT_INSTALLTYPE}
|
||||
if [ ! $INSTALL_TYPE = "source" ]; then
|
||||
echo "$REPONAME install type not set to source"
|
||||
continue
|
||||
|
Loading…
Reference in New Issue
Block a user