Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1052)

Unified Diff: src/scripts/install_packages.sh

Issue 519075: Decrease the number of bootstrap packages in install_packages.sh. (Closed)
Patch Set: Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/scripts/install_packages.sh
diff --git a/src/scripts/install_packages.sh b/src/scripts/install_packages.sh
index 7ca402b1c2613bbd651662232e234dc09e777b9d..48748c01fbda634f734a51a1c2cad4f27618b6ee 100755
--- a/src/scripts/install_packages.sh
+++ b/src/scripts/install_packages.sh
@@ -77,7 +77,6 @@ cleanup_rootfs_mounts() {
! sudo umount "$ROOT_FS_DIR"/lib/modules/2.6.*/volatile/ > /dev/null 2>&1
sudo umount "${ROOT_FS_DIR}/proc"
- sudo umount "${ROOT_FS_DIR}/sys"
}
# Create setup directory and copy over scripts, config files, and locally
@@ -167,8 +166,16 @@ else
REPO="${GCLIENT_ROOT}/repo/var/cache/make_local_repo"
# The set of required packages before apt can take over.
- # TODO: Trim this as much as possible. It is *very* picky, so be careful.
- PACKAGES="base-files base-passwd bash bsdutils coreutils dash debconf debconf-i18n debianutils diff dpkg e2fslibs e2fsprogs findutils gcc-4.4-base grep gzip hostname initscripts insserv libacl1 libattr1 libblkid1 libc-bin libc6 libcomerr2 libdb4.7 libdbus-1-3 libgcc1 liblocale-gettext-perl libncurses5 libpam-modules libpam-runtime libpam0g libselinux1 libsepol1 libslang2 libss2 libssl0.9.8 libstdc++6 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libudev0 libuuid1 locales login lsb-base lzma makedev mawk mount mountall ncurses-base ncurses-bin passwd perl-base procps python-minimal python2.6-minimal sed sysv-rc sysvinit-utils tar tzdata upstart util-linux zlib1g apt"
+ PACKAGES="debconf libacl1 libattr1 libc6 libgcc1 libselinux1"
+
+ # Set of packages that we need to install early so that other packages
+ # maintainer scripts can still basically run.
+ #
+ # login - So that groupadd will work
+ # base-passwd/passwd - So that chmod and useradd/groupadd will work
+ # bash - So that scripts can run
+ # libpam-runtim/libuuid1 - Not exactly sure why
+ EXTRA_PACKAGES="base-files base-passwd bash libpam-runtime libuuid1 login passwd"
# Prep the rootfs to work with dpgk and apt
sudo mkdir -p "${ROOT_FS_DIR}/var/lib/dpkg/info"
@@ -179,12 +186,12 @@ else
"${ROOT_FS_DIR}/var/lib/dpkg/updates"
i=0
- for p in $PACKAGES; do
+ for p in $PACKAGES $EXTRA_PACKAGES; do
set +e
- PKG=$(ls "${REPO}"/${p}*_i386.deb)
+ PKG=$(ls "${REPO}"/${p}_*_i386.deb)
Bill Richardson 2010/01/07 18:25:40 This is for the target filesystem, not the chroot,
set -e
if [ -z "$PKG" ]; then
- PKG=$(ls "${REPO}"/${p}*_all.deb)
+ PKG=$(ls "${REPO}"/${p}_*_all.deb)
fi
echo "Installing package: $PKG [$i]"
sudo "${SCRIPTS_DIR}"/dpkg_no_scripts.sh \
@@ -192,11 +199,11 @@ else
i=$((i + 1))
done
+ # ----- MAINTAINER SCRIPT FIXUPS -----
+
# TODO: Remove when we stop having maintainer scripts altogether.
sudo cp -a /dev/* "${ROOT_FS_DIR}/dev"
- # ----- MAINTAINER SCRIPT FIXUPS -----
-
# base-passwd
sudo cp "${ROOT_FS_DIR}/usr/share/base-passwd/passwd.master" \
"${ROOT_FS_DIR}/etc/passwd"
@@ -219,6 +226,9 @@ else
# base-files?
sudo touch "${ROOT_FS_DIR}/etc/fstab"
+
+ # sysv-rc needs this
+ sudo mkdir -p "${ROOT_FS_DIR}/etc/init.d"
fi # EXPERIMENTAL_NO_DEBOOTSTRAP
@@ -228,18 +238,16 @@ fi # EXPERIMENTAL_NO_DEBOOTSTRAP
# TODO: All of this rootfs mount stuff can be removed as soon as we stop
# running the maintainer scripts on install.
sudo mount -t proc proc "${ROOT_FS_DIR}/proc"
-sudo mount -t sysfs sysfs "${ROOT_FS_DIR}/sys" # TODO: Do we need sysfs?
sudo cp /etc/hosts "${ROOT_FS_DIR}/etc"
trap cleanup_rootfs_mounts EXIT
-# Make sure that apt is ready to work.
+# 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
-
-# TODO: We found that apt-get install --fix-broken is needed. It removes some
-# -dev packages and we need to allow it to run maintainer scripts for now.
-TMP_FORCE_DPKG="-o=Dir::Bin::dpkg=/usr/bin/dpkg"
+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_DPKG --force-yes -f install
+ 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/ /;}'`
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698