#!/bin/bash if [ -z "$FUEL_BRANCH" ]; then echo "`basename $0`: FUEL_BRANCH is not defined!" exit 1 fi #apt_altstate=`mktemp -d --suffix="-apt-altstate"` apt_lists_dir="$apt_altstate/var/lib/apt/lists" apt_cache_dir="$apt_altstate/var/cache/apt" null_dpkg_status="$apt_altstate/var/lib/dpkg/status" apt_alt_etc="$apt_altstate/etc/apt" mkdir -p "$apt_lists_dir" mkdir -p "$apt_cache_dir" mkdir -p "$apt_alt_etc/trusted.gpg.d/" mkdir -p "$apt_alt_etc/preferences.d/" mkdir -p "${null_dpkg_status%/*}" touch "${null_dpkg_status}" cp -a /usr/share/keyrings/ubuntu*.gpg "$apt_alt_etc/trusted.gpg.d/" apt_altstate_opts="-o APT::Get::AllowUnauthenticated=1" apt_altstate_opts="${apt_altstate_opts} -o Dir=${apt_altstate}" apt_altstate_opts="${apt_altstate_opts} -o Dir::State::Lists=${apt_lists_dir}" apt_altstate_opts="${apt_altstate_opts} -o Dir::State::status=${null_dpkg_status}" apt_altstate_opts="${apt_altstate_opts} -o Dir::Cache=${apt_cache_dir}" if ! source "$(dirname $(readlink -f "${BASH_SOURCE[0]}"))/../config/ubuntu.cfg"; then echo "`basename $0`: cannot read config for Ubuntu, please create one!" exit 1 fi for dist in ${DISTs[@]}; do echo deb http://${UPSTREAM}/${UPSTREAM_DIR} $dist "${DIST_COMPONENTs[$dist]}" >> ${apt_alt_etc}/sources.list done if ! source "$(dirname $(readlink -f "${BASH_SOURCE[0]}"))/../config/mos-ubuntu.cfg"; then echo "`basename $0`: cannot read config for MOS Ubuntu, please create one!" exit 1 fi for dist in ${DISTs[@]}; do echo deb http://${UPSTREAM}/${UPSTREAM_DIR_HTTP} $dist "${DIST_COMPONENTs[$dist]}" >> ${apt_alt_etc}/sources.list done cat < ${apt_alt_etc}/preferences Package: * Pin: origin ${UPSTREAM} Pin-Priority: 1001 EOF if ! apt-get $apt_altstate_opts update; then echo "`basename $0`: failed to populate alt apt state!" exit 1 fi if ! hash wget 2>/dev/null; then apt-get -y install wget; fi if ! wget -nv https://raw.githubusercontent.com/stackforge/fuel-main/${FUEL_BRANCH}/requirements-deb.txt -O $apt_altstate/requirements-deb.txt; then echo "`basename $0`: failed to fetch requirements-deb.txt" exit 1 fi echo "Processing Fuel dependencies..." has_apt_errors='' while read pkg; do downloads_list="$apt_altstate/downloads_${pkg}.list" if ! apt-get $apt_altstate_opts --print-uris --yes -qq install $pkg >"${downloads_list}" 2>>"$apt_altstate/apt-errors.log"; then echo "package $pkg can not be installed" >>$apt_altstate/apt-errors.log # run apt-get once more to get a verbose error message apt-get $apt_altstate_opts --print-uris --yes install $pkg >>$apt_altstate/apt-errors.log 2>&1 || true has_apt_errors='yes' fi sed -i "${downloads_list}" -n -e "s/^'\([^']\+\)['].*$/\1/p" done < $apt_altstate/requirements-deb.txt if [ -n "$has_apt_errors" ]; then echo "`basename $0`some packages are not installable" >&2 cat < $apt_altstate/apt-errors.log >&2 exit 1 fi # Prepare list of upstream packages to download cat $apt_altstate/downloads_*.list | grep -v ${UPSTREAM} | perl -p -e 's/^.*?pool/pool/' | sort -u > $apt_altstate/deb rm -f $apt_altstate/downloads_*.list NETBOOT_FILES="linux initrd.gz" for dload in $NETBOOT_FILES; do echo dists/${UBUNTU_RELEASE}-updates/main/installer-${UBUNTU_ARCH}/current/images/${UBUNTU_NETBOOT_FLAVOR}/ubuntu-installer/${UBUNTU_ARCH}/${dload} >> $apt_altstate/netboot.list echo NONE NONE dists/${UBUNTU_RELEASE}-updates/main/installer-${UBUNTU_ARCH}/current/images/${UBUNTU_NETBOOT_FLAVOR}/ubuntu-installer/${UBUNTU_ARCH}/${dload} >> $apt_altstate/netboot_md5.list done exit 0