| Index: src/scripts/install_packages.sh
|
| diff --git a/src/scripts/install_packages.sh b/src/scripts/install_packages.sh
|
| index 48748c01fbda634f734a51a1c2cad4f27618b6ee..1346510075d31bffb2b4604a379bc20fa78a4055 100755
|
| --- a/src/scripts/install_packages.sh
|
| +++ b/src/scripts/install_packages.sh
|
| @@ -79,13 +79,10 @@ cleanup_rootfs_mounts() {
|
| sudo umount "${ROOT_FS_DIR}/proc"
|
| }
|
|
|
| -# Create setup directory and copy over scripts, config files, and locally
|
| -# built packages.
|
| +# Set up repository for locally built packages; these take highest precedence.
|
| mkdir -p "${SETUP_DIR}/local_packages"
|
| cp "${FLAGS_build_root}/${FLAGS_target}/local_packages"/* \
|
| "${SETUP_DIR}/local_packages"
|
| -
|
| -# Set up repository for local packages to install in the rootfs via apt-get.
|
| cd "$SETUP_DIR"
|
| dpkg-scanpackages local_packages/ /dev/null | \
|
| gzip > local_packages/Packages.gz
|
| @@ -98,8 +95,9 @@ deb file:"$SETUP_DIR" local_packages/
|
| deb $FLAGS_server $FLAGS_suite main restricted multiverse universe
|
| EOF
|
|
|
| -# Cache directory for APT to use.
|
| -APT_CACHE_DIR="${OUTPUT_DIR}/tmp/cache/"
|
| +# Cache directory for APT to use. This cache is re-used across builds. We
|
| +# rely on the cache to reduce traffic to the hosted repositories.
|
| +APT_CACHE_DIR="${FLAGS_build_root}/apt_cache-${FLAGS_target}/"
|
| mkdir -p "${APT_CACHE_DIR}/archives/partial"
|
|
|
| # Create the apt configuration file. See "man apt.conf"
|
| @@ -118,6 +116,7 @@ APT
|
| Get
|
| {
|
| Assume-Yes "1";
|
| + AllowUnauthenticated "1";
|
| };
|
| };
|
| Dir
|
| @@ -158,12 +157,12 @@ if [ -z "$EXPERIMENTAL_NO_DEBOOTSTRAP" -a \
|
| -z "$EXPERIMENTAL_NO_MAINTAINER_SCRIPTS" ]; then
|
| # Use debootstrap, which runs maintainer scripts.
|
| sudo debootstrap --arch=i386 $FLAGS_suite "$ROOT_FS_DIR" "${FLAGS_server}"
|
| + sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive apt-get update
|
| else
|
| - # A hack-in-progress that does our own debootstrap equivalent and skips
|
| - # maintainer scripts.
|
| -
|
| - # TODO: Replace with a pointer to lool's repo or maybe apt-get --download-only?
|
| - REPO="${GCLIENT_ROOT}/repo/var/cache/make_local_repo"
|
| + # We do a rough equivalent to debootstrap that installs the minimal
|
| + # packages needed to be able to run apt to install the rest. We don't
|
| + # use debootstrap since it is geared toward having a second stage that
|
| + # needs to run package maintainer scripts. This is also simpler.
|
|
|
| # The set of required packages before apt can take over.
|
| PACKAGES="debconf libacl1 libattr1 libc6 libgcc1 libselinux1"
|
| @@ -185,6 +184,12 @@ else
|
| sudo mkdir -p "${ROOT_FS_DIR}/var/lib/apt/lists/partial" \
|
| "${ROOT_FS_DIR}/var/lib/dpkg/updates"
|
|
|
| + # Download the initial packages into the apt cache if necessary.
|
| + REPO="${APT_CACHE_DIR}/archives"
|
| + sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive apt-get update
|
| + sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive \
|
| + apt-get --download-only install $PACKAGES $EXTRA_PACKAGES
|
| +
|
| i=0
|
| for p in $PACKAGES $EXTRA_PACKAGES; do
|
| set +e
|
| @@ -199,6 +204,13 @@ else
|
| i=$((i + 1))
|
| done
|
|
|
| + # Make sure that apt is ready to work. We use --fix-broken to trigger apt
|
| + # to install additional critical packages. If there are any of these, we
|
| + # disable the maintainer scripts so they install ok.
|
| + TMP_FORCE_NO_SCRIPTS="-o=Dir::Bin::dpkg=${SCRIPTS_DIR}/dpkg_no_scripts.sh"
|
| + sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive \
|
| + apt-get $TMP_FORCE_NO_SCRIPTS --force-yes --fix-broken install
|
| +
|
| # ----- MAINTAINER SCRIPT FIXUPS -----
|
|
|
| # TODO: Remove when we stop having maintainer scripts altogether.
|
| @@ -231,7 +243,6 @@ else
|
| sudo mkdir -p "${ROOT_FS_DIR}/etc/init.d"
|
| fi # EXPERIMENTAL_NO_DEBOOTSTRAP
|
|
|
| -
|
| # Set up mounts for working within the rootfs. We copy some basic
|
| # network information from the host so that maintainer scripts can
|
| # access the network as needed.
|
| @@ -241,14 +252,6 @@ sudo mount -t proc proc "${ROOT_FS_DIR}/proc"
|
| sudo cp /etc/hosts "${ROOT_FS_DIR}/etc"
|
| trap cleanup_rootfs_mounts EXIT
|
|
|
| -# Make sure that apt is ready to work. We use --fix-broken to trigger apt
|
| -# to install additional critical packages. If there are any of these, we
|
| -# disable the maintainer scripts so they install ok.
|
| -sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive apt-get update
|
| -TMP_FORCE_NO_SCRIPTS="-o=Dir::Bin::dpkg=${SCRIPTS_DIR}/dpkg_no_scripts.sh"
|
| -sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive \
|
| - apt-get $TMP_FORCE_NO_SCRIPTS --force-yes --fix-broken install
|
| -
|
| # Install prod packages
|
| COMPONENTS=`cat $FLAGS_package_list | grep -v ' *#' | grep -v '^ *$' | sed '/$/{N;s/\n/ /;}'`
|
| sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive \
|
| @@ -271,13 +274,6 @@ EOF
|
| sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive \
|
| apt-get --force-yes install "linux-image-${KERNEL_VERSION}"
|
|
|
| -# Clean up the apt cache.
|
| -# TODO: The cache was populated by debootstrap, not these installs. Remove
|
| -# this line when we can get debootstrap to stop doing this.
|
| -sudo rm -f "${ROOT_FS_DIR}"/var/cache/apt/archives/*.deb
|
| -# Need to rm read-only created lock files in order for archiving step to work
|
| -sudo rm -rf "$APT_CACHE_DIR"
|
| -
|
| # List all packages installed so far, since these are what the local
|
| # repository needs to contain.
|
| # TODO: Replace with list_installed_packages.sh when it is fixed up.
|
|
|