diff options
author | Ben Howard <ben.howard@canonical.com> | 2011-09-30 16:24:08 -0600 |
---|---|---|
committer | Daniel Baumann <daniel@debian.org> | 2011-10-05 07:38:53 +0200 |
commit | d90c311ef937a95ead004142c1d0740eca313a0a (patch) | |
tree | e2a020b20c2529d56068da01b7fa7981b21c34fc | |
parent | 9e5218ec75190dc497224d41f68939f460573754 (diff) | |
download | vyos-live-build-d90c311ef937a95ead004142c1d0740eca313a0a.tar.gz vyos-live-build-d90c311ef937a95ead004142c1d0740eca313a0a.zip |
Adding foreign bootstrap via qemu for cross arch building.
-rwxr-xr-x | functions/architectures.sh | 36 | ||||
-rwxr-xr-x | functions/defaults.sh | 9 | ||||
-rwxr-xr-x | scripts/build/lb_bootstrap_debootstrap | 19 | ||||
-rwxr-xr-x | scripts/build/lb_config | 36 |
4 files changed, 97 insertions, 3 deletions
diff --git a/functions/architectures.sh b/functions/architectures.sh index 53d925bf1..d2c99dd65 100755 --- a/functions/architectures.sh +++ b/functions/architectures.sh @@ -22,6 +22,24 @@ Check_architectures () fi done + if [ "${ARCHITECTURES}" = "${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" ] + then + VALID="true" + + if [ ! -e "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_ARCHITECTURES} was not found" + VALID="false" + fi + + if [ ! -x "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_STATIC} is not executable" + VALID="false" + fi + + fi + if [ "${VALID}" = "false" ] then Echo_warning "skipping %s, foreign architecture(s)." "${0}" @@ -52,6 +70,24 @@ Check_crossarchitectures () ;; esac + if [ "${LB_ARCHITECTURES}" = "${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" ] + then + + if [ ! -e "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_ARCHITECTURES} was not found" + exit 0 + fi + + if [ ! -x "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_STATIC} is not executable" + exit 0 + fi + return + fi + + Check_architectures "${CROSS}" } diff --git a/functions/defaults.sh b/functions/defaults.sh index 52b710724..a0dfd2bbc 100755 --- a/functions/defaults.sh +++ b/functions/defaults.sh @@ -1276,4 +1276,13 @@ Check_defaults () fi fi + # Architectures to use foreign bootstrap for + LB_BOOTSTRAP_QEMU_ARCHITECTURES="${LB_BOOTSTRAP_QEMU_ARCHITECTURES:-}" + + # Packages to exclude for the foreign/ports bootstrapping + LB_BOOTSTRAP_QEMU_EXCLUDE="${LB_PORTS_BOOTSTRAP_EXCLUDE:-}" + + # Ports using foreign bootstrap need a working qemu-*-system. This is the location it + LB_BOOTSTRAP_QEMU_STATIC="${LB_BOOTSTRAP_QEMU_STATIC:-}" + } diff --git a/scripts/build/lb_bootstrap_debootstrap b/scripts/build/lb_bootstrap_debootstrap index 1b5f5fe05..16e478dab 100755 --- a/scripts/build/lb_bootstrap_debootstrap +++ b/scripts/build/lb_bootstrap_debootstrap @@ -137,7 +137,24 @@ then fi Echo_breakage "Running debootstrap... " - ${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}" + + # Run appropriate bootstrap, i.e. foreign or regular bootstrap + if [ "${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" = "${LB_ARCHITECTURES}" ]; then + + if [ -n "${LB_BOOTSTRAP_QEMU_EXCLUDE}" ] + then + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --exclude=$(echo ${LB_BOOTSTRAP_QEMU_EXCLUDE} | sed 's| *|,|g')" + fi + + Echo_message "Bootstrap will be foreign" + ${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} --foreign "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}" + + Echo_message "Running debootstrap second stage under QEMU" + cp ${LB_BOOTSTRAP_QEMU_STATIC} chroot/usr/bin + Chroot chroot /debootstrap/debootstrap --second-stage + else + ${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}" + fi if [ -n "${LB_ROOT_COMMAND}" ] then diff --git a/scripts/build/lb_config b/scripts/build/lb_config index 3f7ab0fe8..aa4564ffb 100755 --- a/scripts/build/lb_config +++ b/scripts/build/lb_config @@ -147,7 +147,11 @@ USAGE="${PROGRAM} [--apt apt|aptitude]\n\ \t [--exposed-root true|false]\n\ \t [--username NAME]\n\ \t [--verbose]\n\ -\t [--win32-loader true|false]" +\t [--win32-loader true|false]\n\ +\t [--bootstrap-qemu-exclude PACKAGES]\n\ +\t [--bootstrap-qemu-static PATH]\n\ +\t [--bootstrap-qemu-arch ARCH]" + Local_arguments () { @@ -170,7 +174,8 @@ Local_arguments () net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:, net-cow-server:,net-tarball:,swap-file-path:,swap-file-size:,syslinux-theme:, username:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force, - help,ignore-system-defaults,quiet,usage,verbose,version" + help,ignore-system-defaults,quiet,usage,verbose,version,bootstrap-qemu-static:,bootstrap-qemu-arch:, + bootstrap-qemu-exclude:" # Remove spaces added by indentation LONG_OPTIONS="$(echo ${LONG_OPTIONS} | tr -d ' ')" ARGUMENTS="$(getopt --longoptions ${LONG_OPTIONS} --name="${PROGRAM}" --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")" @@ -781,6 +786,21 @@ Local_arguments () shift 2 ;; + --bootstrap-qemu-arch) + LB_BOOTSTRAP_QEMU_ARCHITECTURES="${2}" + shift 2 + ;; + + --bootstrap-qemu-exclude) + LB_BOOTSTRAP_QEMU_EXCLUDE="${2}" + shift 2 + ;; + + --bootstrap-qemu-static) + LB_BOOTSTRAP_QEMU_STATIC="${2}" + shift 2 + ;; + # config/source --source) LB_SOURCE="${2}" @@ -1171,6 +1191,18 @@ LB_ARCHIVE_AREAS="${LB_ARCHIVE_AREAS}" # \$LB_PARENT_ARCHIVE_AREAS: select archive areas to use # (Default: ${LB_PARENT_ARCHIVE_AREAS}) LB_PARENT_ARCHIVE_AREAS="${LB_PARENT_ARCHIVE_AREAS}" + +# \$LB_BOOTSTRAP_QEMU_ARCHITECTURES: architectures to use foreign bootstrap +# (Default: ${LB_BOOTSTRAP_QEMU_ARCHITECTURES}) +LB_BOOTSTRAP_QEMU_ARCHITECTURES="${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" + +# \$LB_BOOTSTRAP_QEMU_EXCLUDE: packages to exclude during foreign bootstrap +# (Default: ${LB_BOOTSTRAP_QEMU_EXCLUDE}) +LB_BOOTSTRAP_QEMU_EXCLUDE="${LB_BOOTSTRAP_QEMU_EXCLUDE}" + +# \$LB_BOOTSTRAP_QEMU_STATIC: static qemu binary for foreign bootstrap +# (Default: ${LB_BOOTSTRAP_QEMU_STATIC}) +LB_BOOTSTRAP_QEMU_STATIC="${LB_BOOTSTRAP_QEMU_STATIC}" EOF # Creating lb_chroot_* configuration |