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

Side by Side Diff: src/scripts/install_packages.sh

Issue 536045: Fix i386 hardcode. (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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # Script to install packages into the target root file system. 7 # Script to install packages into the target root file system.
8 # 8 #
9 # NOTE: This script should be called by build_image.sh. Do not run this 9 # NOTE: This script should be called by build_image.sh. Do not run this
10 # on your own unless you know what you are doing. 10 # on your own unless you know what you are doing.
11 11
12 # Load common constants. This should be the first executable line. 12 # Load common constants. This should be the first executable line.
13 # The path to common.sh should be relative to your script's location. 13 # The path to common.sh should be relative to your script's location.
14 . "$(dirname "$0")/common.sh" 14 . "$(dirname "$0")/common.sh"
15 15
16 # Script must be run inside the chroot 16 # Script must be run inside the chroot
17 assert_inside_chroot 17 assert_inside_chroot
18 assert_not_root_user 18 assert_not_root_user
19 19
20 DEFAULT_PKGLIST="${SRC_ROOT}/package_repo/package-list-prod.txt" 20 DEFAULT_PKGLIST="${SRC_ROOT}/package_repo/package-list-prod.txt"
21 21
22 # Flags 22 # Flags
23 DEFINE_string output_dir "" \ 23 DEFINE_string output_dir "" \
24 "The location of the output directory to use [REQUIRED]." 24 "The location of the output directory to use [REQUIRED]."
25 DEFINE_string root "" \ 25 DEFINE_string root "" \
26 "The root file system to install packages in." 26 "The root file system to install packages in."
27 DEFINE_string target "x86" \ 27 DEFINE_string arch "x86" \
28 "The target architecture to build for. One of { x86, arm }." 28 "The target architecture to build for. One of { x86, armel }."
29 DEFINE_string build_root "$DEFAULT_BUILD_ROOT" \ 29 DEFINE_string build_root "$DEFAULT_BUILD_ROOT" \
30 "Root of build output" 30 "Root of build output"
31 DEFINE_string package_list "$DEFAULT_PKGLIST" \ 31 DEFINE_string package_list "$DEFAULT_PKGLIST" \
32 "The package list file to use." 32 "The package list file to use."
33 DEFINE_string server "$DEFAULT_EXT_MIRROR" \ 33 DEFINE_string server "$DEFAULT_EXT_MIRROR" \
34 "The package server to use." 34 "The package server to use."
35 DEFINE_string suite "$DEFAULT_IMG_SUITE" \ 35 DEFINE_string suite "$DEFAULT_IMG_SUITE" \
36 "The package suite to use." 36 "The package suite to use."
37 37
38 # Parse command line 38 # Parse command line
39 FLAGS "$@" || exit 1 39 FLAGS "$@" || exit 1
40 eval set -- "${FLAGS_ARGV}" 40 eval set -- "${FLAGS_ARGV}"
41 41
42 # Die on any errors. 42 # Die on any errors.
43 set -e 43 set -e
44 44
45 KERNEL_DEB_PATH=$(find "${FLAGS_build_root}/${FLAGS_target}/local_packages" \ 45 KERNEL_DEB_PATH=$(find "${FLAGS_build_root}/${FLAGS_arch}/local_packages" \
46 -name "linux-image-*.deb") 46 -name "linux-image-*.deb")
47 KERNEL_DEB=$(basename "${KERNEL_DEB_PATH}" .deb | sed -e 's/linux-image-//' \ 47 KERNEL_DEB=$(basename "${KERNEL_DEB_PATH}" .deb | sed -e 's/linux-image-//' \
48 -e 's/_.*//') 48 -e 's/_.*//')
49 KERNEL_VERSION=${KERNEL_VERSION:-${KERNEL_DEB}} 49 KERNEL_VERSION=${KERNEL_VERSION:-${KERNEL_DEB}}
50 50
51 if [[ -z "$FLAGS_output_dir" ]]; then 51 if [[ -z "$FLAGS_output_dir" ]]; then
52 echo "Error: --output_dir is required." 52 echo "Error: --output_dir is required."
53 exit 1 53 exit 1
54 fi 54 fi
55 OUTPUT_DIR=$(readlink -f "$FLAGS_output_dir") 55 OUTPUT_DIR=$(readlink -f "$FLAGS_output_dir")
(...skipping 18 matching lines...) Expand all
74 74
75 # Sometimes the volatile directory is left mounted and sometimes it is not, 75 # Sometimes the volatile directory is left mounted and sometimes it is not,
76 # so we precede by '!' to disable the ERR trap. 76 # so we precede by '!' to disable the ERR trap.
77 ! sudo umount "$ROOT_FS_DIR"/lib/modules/2.6.*/volatile/ > /dev/null 2>&1 77 ! sudo umount "$ROOT_FS_DIR"/lib/modules/2.6.*/volatile/ > /dev/null 2>&1
78 78
79 sudo umount "${ROOT_FS_DIR}/proc" 79 sudo umount "${ROOT_FS_DIR}/proc"
80 } 80 }
81 81
82 # Set up repository for locally built packages; these take highest precedence. 82 # Set up repository for locally built packages; these take highest precedence.
83 mkdir -p "${SETUP_DIR}/local_packages" 83 mkdir -p "${SETUP_DIR}/local_packages"
84 cp "${FLAGS_build_root}/${FLAGS_target}/local_packages"/* \ 84 cp "${FLAGS_build_root}/${FLAGS_arch}/local_packages"/* \
85 "${SETUP_DIR}/local_packages" 85 "${SETUP_DIR}/local_packages"
86 cd "$SETUP_DIR" 86 cd "$SETUP_DIR"
87 dpkg-scanpackages local_packages/ /dev/null | \ 87 dpkg-scanpackages local_packages/ /dev/null | \
88 gzip > local_packages/Packages.gz 88 gzip > local_packages/Packages.gz
89 cd - 89 cd -
90 90
91 # Create the temporary apt source.list used to install packages. 91 # Create the temporary apt source.list used to install packages.
92 APT_SOURCE="${OUTPUT_DIR}/sources.list" 92 APT_SOURCE="${OUTPUT_DIR}/sources.list"
93 cat <<EOF > "$APT_SOURCE" 93 cat <<EOF > "$APT_SOURCE"
94 deb file:"$SETUP_DIR" local_packages/ 94 deb file:"$SETUP_DIR" local_packages/
95 deb $FLAGS_server $FLAGS_suite main restricted multiverse universe 95 deb $FLAGS_server $FLAGS_suite main restricted multiverse universe
96 EOF 96 EOF
97 97
98 # Cache directory for APT to use. This cache is re-used across builds. We 98 # Cache directory for APT to use. This cache is re-used across builds. We
99 # rely on the cache to reduce traffic to the hosted repositories. 99 # rely on the cache to reduce traffic to the hosted repositories.
100 APT_CACHE_DIR="${FLAGS_build_root}/apt_cache-${FLAGS_target}/" 100 APT_CACHE_DIR="${FLAGS_build_root}/apt_cache-${FLAGS_arch}/"
101 mkdir -p "${APT_CACHE_DIR}/archives/partial" 101 mkdir -p "${APT_CACHE_DIR}/archives/partial"
102 102
103 # Create the apt configuration file. See "man apt.conf" 103 # Create the apt configuration file. See "man apt.conf"
104 APT_PARTS="${OUTPUT_DIR}/apt.conf.d" 104 APT_PARTS="${OUTPUT_DIR}/apt.conf.d"
105 mkdir -p "$APT_PARTS" # An empty apt.conf.d to avoid other configs. 105 mkdir -p "$APT_PARTS" # An empty apt.conf.d to avoid other configs.
106 export APT_CONFIG="${OUTPUT_DIR}/apt.conf" 106 export APT_CONFIG="${OUTPUT_DIR}/apt.conf"
107 cat <<EOF > "$APT_CONFIG" 107 cat <<EOF > "$APT_CONFIG"
108 APT 108 APT
109 { 109 {
110 Install-Recommends "0"; 110 Install-Recommends "0";
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 sudo mkdir -p "${ROOT_FS_DIR}/var/lib/apt/lists/partial" \ 170 sudo mkdir -p "${ROOT_FS_DIR}/var/lib/apt/lists/partial" \
171 "${ROOT_FS_DIR}/var/lib/dpkg/updates" 171 "${ROOT_FS_DIR}/var/lib/dpkg/updates"
172 172
173 # Download the initial packages into the apt cache if necessary. 173 # Download the initial packages into the apt cache if necessary.
174 REPO="${APT_CACHE_DIR}/archives" 174 REPO="${APT_CACHE_DIR}/archives"
175 sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive apt-get update 175 sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive apt-get update
176 sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive \ 176 sudo APT_CONFIG="$APT_CONFIG" DEBIAN_FRONTEND=noninteractive \
177 apt-get --download-only install $PACKAGES $EXTRA_PACKAGES 177 apt-get --download-only install $PACKAGES $EXTRA_PACKAGES
178 178
179 # Install initial packages directly with dpkg_no_scripts.sh 179 # Install initial packages directly with dpkg_no_scripts.sh
180 ARCH="$FLAGS_arch"
181 if [ "$ARCH" = "x86" ]; then
182 ARCH="i?86" # Match i386 | i686
183 fi
180 for p in $PACKAGES $EXTRA_PACKAGES; do 184 for p in $PACKAGES $EXTRA_PACKAGES; do
181 PKG=$(ls "${REPO}"/${p}_*_i386.deb || /bin/true) 185 PKG=$(ls "${REPO}"/${p}_*_$ARCH.deb || /bin/true)
182 if [ -z "$PKG" ]; then 186 if [ -z "$PKG" ]; then
183 PKG=$(ls "${REPO}"/${p}_*_all.deb) 187 PKG=$(ls "${REPO}"/${p}_*_all.deb)
184 fi 188 fi
185 sudo "${SCRIPTS_DIR}"/dpkg_no_scripts.sh \ 189 sudo "${SCRIPTS_DIR}"/dpkg_no_scripts.sh \
186 --root="$ROOT_FS_DIR" --nodpkg_fallback --unpack "$PKG" 190 --root="$ROOT_FS_DIR" --nodpkg_fallback --unpack "$PKG"
187 sudo "${SCRIPTS_DIR}"/dpkg_no_scripts.sh \ 191 sudo "${SCRIPTS_DIR}"/dpkg_no_scripts.sh \
188 --root="$ROOT_FS_DIR" --nodpkg_fallback --configure "$p" 192 --root="$ROOT_FS_DIR" --nodpkg_fallback --configure "$p"
189 done 193 done
190 194
191 # Make sure that apt is ready to work. We use --fix-broken to trigger apt 195 # Make sure that apt is ready to work. We use --fix-broken to trigger apt
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 apt-get --force-yes install "linux-image-${KERNEL_VERSION}" 237 apt-get --force-yes install "linux-image-${KERNEL_VERSION}"
234 238
235 # List all packages installed so far, since these are what the local 239 # List all packages installed so far, since these are what the local
236 # repository needs to contain. 240 # repository needs to contain.
237 # TODO: Replace with list_installed_packages.sh when it is fixed up. 241 # TODO: Replace with list_installed_packages.sh when it is fixed up.
238 dpkg --root="${ROOT_FS_DIR}" -l > \ 242 dpkg --root="${ROOT_FS_DIR}" -l > \
239 "${OUTPUT_DIR}/package_list_installed.txt" 243 "${OUTPUT_DIR}/package_list_installed.txt"
240 244
241 cleanup_rootfs_mounts 245 cleanup_rootfs_mounts
242 trap - EXIT 246 trap - EXIT
OLDNEW
« 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