OLD | NEW |
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. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 if [[ -z "$ROOT_FS_DIR" ]]; then | 45 if [[ -z "$ROOT_FS_DIR" ]]; then |
46 echo "Error: --root is required." | 46 echo "Error: --root is required." |
47 exit 1 | 47 exit 1 |
48 fi | 48 fi |
49 if [[ ! -d "$ROOT_FS_DIR" ]]; then | 49 if [[ ! -d "$ROOT_FS_DIR" ]]; then |
50 echo "Error: Root FS does not exist? ($ROOT_FS_DIR)" | 50 echo "Error: Root FS does not exist? ($ROOT_FS_DIR)" |
51 exit 1 | 51 exit 1 |
52 fi | 52 fi |
53 | 53 |
54 # Create the temporary apt source.list used to install packages. | 54 # Create the temporary apt source.list used to install packages. |
55 APT_SOURCE="${ROOT_FS_DIR}/../sources.list" | 55 APT_SOURCE="${FLAGS_output_dir}/sources.list" |
56 cat <<EOF > "$APT_SOURCE" | 56 cat <<EOF > "$APT_SOURCE" |
57 deb file:"$FLAGS_setup_dir" local_packages/ | 57 deb file:"$FLAGS_setup_dir" local_packages/ |
58 deb $FLAGS_server $FLAGS_suite main restricted multiverse universe | 58 deb $FLAGS_server $FLAGS_suite main restricted multiverse universe |
59 EOF | 59 EOF |
60 | 60 |
61 # Cache directory for APT to use. | 61 # Cache directory for APT to use. |
62 APT_CACHE_DIR="${FLAGS_output_dir}/tmp/cache/" | 62 APT_CACHE_DIR="${FLAGS_output_dir}/tmp/cache/" |
63 mkdir -p "${APT_CACHE_DIR}/archives/partial" | 63 mkdir -p "${APT_CACHE_DIR}/archives/partial" |
64 | 64 |
65 # Create the apt configuration file. See "man apt.conf" | 65 # Create the apt configuration file. See "man apt.conf" |
66 APT_CONFIG="${ROOT_FS_DIR}/../apt.conf" | 66 APT_PARTS="${FLAGS_output_dir}/apt.conf.d" |
| 67 mkdir -p "$APT_PARTS" # An empty apt.conf.d to avoid other configs. |
| 68 export APT_CONFIG="${FLAGS_output_dir}/apt.conf" |
67 cat <<EOF > "$APT_CONFIG" | 69 cat <<EOF > "$APT_CONFIG" |
| 70 APT |
| 71 { |
| 72 Install-Recommends "0"; |
| 73 Install-Suggests "0"; |
| 74 Get |
| 75 { |
| 76 Assume-Yes "1"; |
| 77 }; |
| 78 }; |
68 Dir | 79 Dir |
69 { | 80 { |
70 Cache "$APT_CACHE_DIR"; # TODO: Empty string to disable? | 81 Cache "$APT_CACHE_DIR"; |
71 Cache { | 82 Cache { |
72 archives "${APT_CACHE_DIR}/archives"; # TODO: Why do we need this? | 83 archives "${APT_CACHE_DIR}/archives"; |
73 }; | 84 }; |
74 Etc | 85 Etc |
75 { | 86 { |
76 sourcelist "$APT_SOURCE" | 87 sourcelist "$APT_SOURCE"; |
| 88 parts "$APT_PARTS"; |
77 }; | 89 }; |
78 State "${ROOT_FS_DIR}/var/lib/apt/"; | 90 State "${ROOT_FS_DIR}/var/lib/apt/"; |
79 State | 91 State |
80 { | 92 { |
81 status "${ROOT_FS_DIR}/var/lib/dpkg/status"; | 93 status "${ROOT_FS_DIR}/var/lib/dpkg/status"; |
82 }; | 94 }; |
83 }; | 95 }; |
84 DPkg | 96 DPkg |
85 { | 97 { |
86 options {"--root=${ROOT_FS_DIR}";}; | 98 options {"--root=${ROOT_FS_DIR}";}; |
87 }; | 99 }; |
88 EOF | 100 EOF |
89 | 101 |
90 # TODO: Full audit of the apt conf dump to make sure things are ok. | 102 # TODO: Full audit of the apt conf dump to make sure things are ok. |
91 apt-config -c="$APT_CONFIG" dump > "${ROOT_FS_DIR}/../apt.conf.dump" | 103 apt-config dump > "${FLAGS_output_dir}/apt.conf.dump" |
92 | 104 |
93 # Install prod packages | 105 # Install prod packages |
94 COMPONENTS=`cat $FLAGS_package_list | grep -v ' *#' | grep -v '^ *$' | sed '/$/{
N;s/\n/ /;}'` | 106 COMPONENTS=`cat $FLAGS_package_list | grep -v ' *#' | grep -v '^ *$' | sed '/$/{
N;s/\n/ /;}'` |
95 sudo apt-get -c="$APT_CONFIG" update | 107 sudo APT_CONFIG="$APT_CONFIG" apt-get update |
96 sudo apt-get -c="$APT_CONFIG" --yes --force-yes --no-install-recommends \ | 108 sudo APT_CONFIG="$APT_CONFIG" apt-get --force-yes \ |
97 install $COMPONENTS | 109 install $COMPONENTS |
98 | 110 |
99 # Create kernel installation configuration to suppress warnings, | 111 # Create kernel installation configuration to suppress warnings, |
100 # install the kernel in /boot, and manage symlinks. | 112 # install the kernel in /boot, and manage symlinks. |
101 cat <<EOF | sudo dd of="${ROOT_FS_DIR}/etc/kernel-img.conf" | 113 cat <<EOF | sudo dd of="${ROOT_FS_DIR}/etc/kernel-img.conf" |
102 link_in_boot = yes | 114 link_in_boot = yes |
103 do_symlinks = yes | 115 do_symlinks = yes |
104 minimal_swap = yes | 116 minimal_swap = yes |
105 clobber_modules = yes | 117 clobber_modules = yes |
106 warn_reboot = no | 118 warn_reboot = no |
107 do_bootloader = no | 119 do_bootloader = no |
108 do_initrd = yes | 120 do_initrd = yes |
109 warn_initrd = no | 121 warn_initrd = no |
110 EOF | 122 EOF |
111 | 123 |
112 # Install the kernel. | 124 # Install the kernel. |
113 sudo apt-get -c="$APT_CONFIG" --yes --force-yes --no-install-recommends \ | 125 sudo APT_CONFIG="$APT_CONFIG" apt-get --force-yes \ |
114 install "linux-image-${FLAGS_kernel_version}" | 126 install "linux-image-${FLAGS_kernel_version}" |
115 | 127 |
116 # Setup bootchart. | 128 # Setup bootchart. |
117 # TODO: Move this and other developer oriented "components" into an optional | 129 # TODO: Move this and other developer oriented "components" into an optional |
118 # package-list-prod-dev.txt (ideally with a better name). | 130 # package-list-prod-dev.txt (ideally with a better name). |
119 sudo apt-get -c="$APT_CONFIG" --yes --force-yes --no-install-recommends \ | 131 sudo APT_CONFIG="$APT_CONFIG" apt-get --force-yes \ |
120 install bootchart | 132 install bootchart |
121 | 133 |
122 # Clean up the apt cache. | 134 # Clean up the apt cache. |
123 # TODO: The cache was populated by debootstrap, not these installs. Remove | 135 # TODO: The cache was populated by debootstrap, not these installs. Remove |
124 # this line when we can get debootstrap to stop doing this. | 136 # this line when we can get debootstrap to stop doing this. |
125 sudo rm -f "${ROOT_FS_DIR}"/var/cache/apt/archives/*.deb | 137 sudo rm -f "${ROOT_FS_DIR}"/var/cache/apt/archives/*.deb |
126 | 138 |
127 # List all packages installed so far, since these are what the local | 139 # List all packages installed so far, since these are what the local |
128 # repository needs to contain. | 140 # repository needs to contain. |
129 # TODO: Replace with list_installed_packages.sh when it is fixed up. | 141 # TODO: Replace with list_installed_packages.sh when it is fixed up. |
130 dpkg --root="${ROOT_FS_DIR}" -l > \ | 142 dpkg --root="${ROOT_FS_DIR}" -l > \ |
131 "${FLAGS_output_dir}/package_list_installed.txt" | 143 "${FLAGS_output_dir}/package_list_installed.txt" |
OLD | NEW |