Merge pull request #235 from marineam/clean

maint(build_library): Remove special case code for -usr disk layouts
This commit is contained in:
Michael Marineau 2014-04-26 15:54:29 -07:00
commit 54aac646d0
9 changed files with 21 additions and 163 deletions

View File

@ -131,8 +131,7 @@ fi
# Create the output directory and temporary mount points. # Create the output directory and temporary mount points.
mkdir -p "${BUILD_DIR}" mkdir -p "${BUILD_DIR}"
DISK_LAYOUT_SUFFIX=$(portageq-$BOARD envvar COREOS_DISK_LAYOUT_SUFFIX) DISK_LAYOUT="${FLAGS_disk_layout:-base}"
DISK_LAYOUT="${FLAGS_disk_layout:-base}${DISK_LAYOUT_SUFFIX}"
# Create the base image. # Create the base image.
create_base_image "${PRISTINE_IMAGE_NAME}" "${DISK_LAYOUT}" "${FLAGS_group}" create_base_image "${PRISTINE_IMAGE_NAME}" "${DISK_LAYOUT}" "${FLAGS_group}"

View File

@ -44,11 +44,9 @@ create_base_image() {
sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \ sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \
--output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_var.conf" \ --output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_var.conf" \
${tmp_ignore} "${root_fs_dir}/var" ${tmp_ignore} "${root_fs_dir}/var"
if [[ "${disk_layout}" == *-usr ]]; then
sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \ sudo "${BUILD_LIBRARY_DIR}/gen_tmpfiles.py" --root="${root_fs_dir}" \
--output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_etc.conf" \ --output="${root_fs_dir}/usr/lib/tmpfiles.d/base_image_etc.conf" \
${tmp_ignore} "${root_fs_dir}/etc" ${tmp_ignore} "${root_fs_dir}/etc"
fi
# Set /etc/lsb-release on the image. # Set /etc/lsb-release on the image.
"${BUILD_LIBRARY_DIR}/set_lsb_release" \ "${BUILD_LIBRARY_DIR}/set_lsb_release" \
@ -56,26 +54,17 @@ create_base_image() {
--group="${update_group}" \ --group="${update_group}" \
--board="${BOARD}" --board="${BOARD}"
local boot_dir="/boot"
if [[ "${disk_layout}" == *-usr ]]; then
boot_dir="/usr/boot"
fi
${BUILD_LIBRARY_DIR}/configure_bootloaders.sh \ ${BUILD_LIBRARY_DIR}/configure_bootloaders.sh \
--arch=${ARCH} \ --arch=${ARCH} \
--disk_layout="${disk_layout}" \ --disk_layout="${disk_layout}" \
--boot_dir="${root_fs_dir}${boot_dir}" \ --boot_dir="${root_fs_dir}"/usr/boot \
--esp_dir="${root_fs_dir}"/boot/efi \ --esp_dir="${root_fs_dir}"/boot/efi \
--boot_args="${FLAGS_boot_args}" --boot_args="${FLAGS_boot_args}"
# Zero all fs free space to make it more compressible so auto-update # Zero all fs free space to make it more compressible so auto-update
# payloads become smaller, not fatal since it won't work on linux < 3.2 # payloads become smaller, not fatal since it won't work on linux < 3.2
sudo fstrim "${root_fs_dir}" || true sudo fstrim "${root_fs_dir}" || true
if [[ "${disk_layout}" == *-usr ]]; then
sudo fstrim "${root_fs_dir}/usr" || true sudo fstrim "${root_fs_dir}/usr" || true
else
sudo fstrim "${root_fs_dir}/media/state" || true
fi
cleanup_mounts "${root_fs_dir}" cleanup_mounts "${root_fs_dir}"
trap - EXIT trap - EXIT

View File

@ -40,17 +40,11 @@ get_uuid() {
readuuid "$1" readuuid "$1"
} }
# Filesystem args differ between the old and new usr layouts. # Filesystem command line args.
if [[ "${FLAGS_disk_layout}" == *-usr ]]; then root_args="root=LABEL=ROOT rootflags=subvol=root"
root_args="root=LABEL=ROOT rootflags=subvol=root" gptprio_args="${root_args} usr=gptprio:"
gptprio_args="${root_args} usr=gptprio:" slot_a_args="${root_args} usr=PARTUUID=$(get_uuid USR-A)"
slot_a_args="${root_args} usr=PARTUUID=$(get_uuid USR-A)" slot_b_args="${root_args} usr=PARTUUID=$(get_uuid USR-B)"
slot_b_args="${root_args} usr=PARTUUID=$(get_uuid USR-B)"
else
gptprio_args="root=gptprio:"
slot_a_args="root=PARTUUID=$(get_uuid ROOT-A)"
slot_b_args="root=PARTUUID=$(get_uuid ROOT-B)"
fi
GRUB_DIR="${FLAGS_boot_dir}/grub" GRUB_DIR="${FLAGS_boot_dir}/grub"
SYSLINUX_DIR="${FLAGS_boot_dir}/syslinux" SYSLINUX_DIR="${FLAGS_boot_dir}/syslinux"

View File

@ -100,19 +100,11 @@ EOF
# The remount services are provided by coreos-base/coreos-init # The remount services are provided by coreos-base/coreos-init
local fs_wants="${root_fs_dir}/usr/lib/systemd/system/local-fs.target.wants" local fs_wants="${root_fs_dir}/usr/lib/systemd/system/local-fs.target.wants"
sudo mkdir -p "${fs_wants}" sudo mkdir -p "${fs_wants}"
if [[ "${disk_layout}" == *-usr ]]; then
sudo ln -s ../remount-usr.service "${fs_wants}" sudo ln -s ../remount-usr.service "${fs_wants}"
else
sudo ln -s ../remount-root.service "${fs_wants}"
fi
# Zero all fs free space, not fatal since it won't work on linux < 3.2 # Zero all fs free space, not fatal since it won't work on linux < 3.2
sudo fstrim "${root_fs_dir}" || true sudo fstrim "${root_fs_dir}" || true
if [[ "${disk_layout}" == *-usr ]]; then
sudo fstrim "${root_fs_dir}/usr" || true sudo fstrim "${root_fs_dir}/usr" || true
else
sudo fstrim "${root_fs_dir}/media/state" || true
fi
info "Developer image built and stored at ${image_name}" info "Developer image built and stored at ${image_name}"

View File

@ -21,16 +21,16 @@
"blocks":"131072" "blocks":"131072"
}, },
"3":{ "3":{
"label":"ROOT-A", "label":"USR-A",
"uuid":"7130c94a-213a-4e5a-8e26-6cce9662f132", "uuid":"7130c94a-213a-4e5a-8e26-6cce9662f132",
"type":"coreos-rootfs", "type":"coreos-rootfs",
"blocks":"2097152", "blocks":"2097152",
"fs_blocks":"262144", "fs_blocks":"262144",
"fs_type":"ext2", "fs_type":"ext2",
"mount":"/" "mount":"/usr"
}, },
"4":{ "4":{
"label":"ROOT-B", "label":"USR-B",
"uuid":"e03dd35c-7c2d-4a47-b3fe-27f15780a57c", "uuid":"e03dd35c-7c2d-4a47-b3fe-27f15780a57c",
"type":"coreos-rootfs", "type":"coreos-rootfs",
"blocks":"2097152", "blocks":"2097152",
@ -60,78 +60,23 @@
"blocks":"0" "blocks":"0"
}, },
"9":{ "9":{
"label":"STATE", "label":"ROOT",
"type":"coreos-resize", "type":"coreos-resize",
"blocks":"1048576", "blocks":"1048576",
"fs_type":"ext4",
"mount":"/media/state",
"binds":{
"overlays/home":"/home",
"overlays/opt":"/opt",
"overlays/srv":"/srv",
"overlays/var":"/var"
}
}
},
"base-usr":{
"3":{
"label":"USR-A",
"mount":"/usr"
},
"4":{
"label":"USR-B"
},
"9":{
"label":"ROOT",
"fs_type":"btrfs", "fs_type":"btrfs",
"fs_subvolume":"root", "fs_subvolume":"root",
"mount":"/", "mount":"/"
"binds":{}
} }
}, },
"vm":{ "vm":{
"9":{
"label":"STATE",
"blocks":"6291456"
}
},
"vm-usr":{
"3":{
"label":"USR-A",
"mount":"/usr"
},
"4":{
"label":"USR-B"
},
"9":{ "9":{
"label":"ROOT", "label":"ROOT",
"fs_type":"btrfs",
"fs_subvolume":"root",
"mount":"/",
"binds":{},
"blocks":"6291456" "blocks":"6291456"
} }
}, },
"vagrant":{ "vagrant":{
"9":{
"label":"STATE",
"blocks":"33587200"
}
},
"vagrant-usr":{
"3":{
"label":"USR-A",
"mount":"/usr"
},
"4":{
"label":"USR-B"
},
"9":{ "9":{
"label":"ROOT", "label":"ROOT",
"fs_type":"btrfs",
"fs_subvolume":"root",
"mount":"/",
"binds":{},
"blocks":"33587200" "blocks":"33587200"
} }
} }

View File

@ -362,7 +362,7 @@ def FormatExt(part, device):
tune_cmd = ['tune2fs', '-L', part['label'], '-e', 'remount-ro'] tune_cmd = ['tune2fs', '-L', part['label'], '-e', 'remount-ro']
if part['type'] in ('coreos-rootfs', 'coreos-usr'): if part['type'] == 'coreos-usr':
tune_cmd += ['-U', 'clear', tune_cmd += ['-U', 'clear',
'-T', '20091119110000', '-T', '20091119110000',
'-c', '0', '-i', '0', # Disable auto fsck '-c', '0', '-i', '0', # Disable auto fsck

View File

@ -55,11 +55,7 @@ EOF
# Make the filesystem un-mountable as read-write. # Make the filesystem un-mountable as read-write.
if [ ${FLAGS_enable_rootfs_verification} -eq ${FLAGS_TRUE} ]; then if [ ${FLAGS_enable_rootfs_verification} -eq ${FLAGS_TRUE} ]; then
local ro_label="ROOT-A"
if [[ "${disk_layout}" == *-usr ]]; then
ro_label="USR-A"
fi
"${BUILD_LIBRARY_DIR}/disk_util" --disk_layout="${disk_layout}" \ "${BUILD_LIBRARY_DIR}/disk_util" --disk_layout="${disk_layout}" \
tune --disable2fs_rw "${BUILD_DIR}/${image_name}" "${ro_label}" tune --disable2fs_rw "${BUILD_DIR}/${image_name}" "USR-A"
fi fi
} }

View File

@ -2,37 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
# Files that are known to conflict with /usr but are OK because they
# are already fixed by toggling the symlink-usr USE flag.
USR_CONFLICT_WHITELIST=(
/bin/awk
/bin/basename
/bin/chroot
/bin/cut
/bin/dir
/bin/dirname
/bin/du
/bin/env
/bin/expr
/bin/gawk
/bin/head
/bin/mkfifo
/bin/mktemp
/bin/passwd
/bin/readlink
/bin/seq
/bin/sleep
/bin/sort
/bin/tail
/bin/touch
/bin/tr
/bin/tty
/bin/uname
/bin/vdir
/bin/wc
/bin/yes
)
test_image_content() { test_image_content() {
local root="$1" local root="$1"
local returncode=0 local returncode=0
@ -77,37 +46,12 @@ test_image_content() {
fi fi
done done
# Check that the symlink-usr flag agrees with the filesystem state.
# Things are likely to break if they don't match.
if [[ $(ROOT="${root}" $portageq envvar USE) == *symlink-usr* ]]; then
local dir
for dir in bin sbin lib32 lib64; do
if [[ -d "${root}/usr/${dir}" ]]; then
if [[ ! -h "${root}/${dir}" || \
$(readlink "${root}/${dir}") != "usr/${dir}" ]]
then
error "test_image_content: /${dir} is not a symlink to /usr/${dir}"
returncode=1
fi
fi
done
# The whitelist is only required if the use flag is unset
USR_CONFLICT_WHITELIST=()
fi
# Check that there are no conflicts between /* and /usr/* # Check that there are no conflicts between /* and /usr/*
local pkgdb=$(ROOT="${root}" $portageq vdb_path) local pkgdb=$(ROOT="${root}" $portageq vdb_path)
local files=$(awk '$2 ~ /^\/(bin|sbin|lib|lib32|lib64)\// {print $2}' \ local files=$(awk '$2 ~ /^\/(bin|sbin|lib|lib32|lib64)\// {print $2}' \
"${pkgdb}"/*/*/CONTENTS) "${pkgdb}"/*/*/CONTENTS)
local check_file local check_file
for check_file in $files; do for check_file in $files; do
local whitelist
for whitelist in "${USR_CONFLICT_WHITELIST[@]}"; do
if [[ "${check_file}" == "${whitelist}" ]]; then
continue 2
fi
done
if grep -q "^... /usr$check_file " "${pkgdb}"/*/*/CONTENTS; then if grep -q "^... /usr$check_file " "${pkgdb}"/*/*/CONTENTS; then
error "test_image_content: $check_file conflicts with /usr$check_file" error "test_image_content: $check_file conflicts with /usr$check_file"
returncode=1 returncode=1

View File

@ -224,8 +224,7 @@ _disk_ext() {
} }
setup_disk_image() { setup_disk_image() {
local suffix=$(portageq-$BOARD envvar COREOS_DISK_LAYOUT_SUFFIX) local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}"
local disk_layout="${1:-$(_get_vm_opt DISK_LAYOUT)}${suffix}"
rm -rf "${VM_TMP_DIR}" rm -rf "${VM_TMP_DIR}"
mkdir -p "${VM_TMP_DIR}" "${VM_TMP_ROOT}" mkdir -p "${VM_TMP_DIR}" "${VM_TMP_ROOT}"