diff options
Diffstat (limited to 'scripts/build/chroot_archives')
-rwxr-xr-x | scripts/build/chroot_archives | 324 |
1 files changed, 164 insertions, 160 deletions
diff --git a/scripts/build/chroot_archives b/scripts/build/chroot_archives index 6e464ec4d..3785b65ba 100755 --- a/scripts/build/chroot_archives +++ b/scripts/build/chroot_archives @@ -1,7 +1,7 @@ #!/bin/sh ## live-build(7) - System Build Scripts -## Copyright (C) 2006-2013 Daniel Baumann <daniel@debian.org> +## Copyright (C) 2006-2012 Daniel Baumann <daniel@debian.org> ## ## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. ## This is free software, and you are welcome to redistribute it @@ -131,7 +131,7 @@ EOF fi ;; - ubuntu) + ubuntu|kubuntu) echo "deb ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}-security ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] @@ -196,7 +196,7 @@ EOF do # ubuntu workaround to allow using live.debian.net case "${LB_MODE}" in - ubuntu) + ubuntu|kubuntu) if [ "${REPOSITORY}" = "live.debian.net" ] then _DISTRIBUTION="sid" @@ -217,86 +217,83 @@ EOF continue fi - # Adding apt sources (chroot) - for _FILE in "${_BASE}/archives/${REPOSITORY}" "${_BASE}/archives/${REPOSITORY}.chroot" - do - if [ -e "${_FILE}" ] - then - sed -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \ - -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ - -e "s|@ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ - "${_FILE}" > "chroot/etc/apt/sources.list.d/${REPOSITORY}.list" - fi - done + # Adding sources.list entries (chroot) + if [ -e "${_BASE}/archives/${REPOSITORY}.chroot" ] + then + sed -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${_BASE}/archives/${REPOSITORY}.chroot" > \ + "chroot/etc/apt/sources.list.d/${REPOSITORY}.list" + elif [ -e "${_BASE}/archives/${REPOSITORY}" ] + then + sed -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${_BASE}/archives/${REPOSITORY}" > \ + "chroot/etc/apt/sources.list.d/${REPOSITORY}.list" + fi - # Adding apt configuration (chroot) - for _FILE in "${_BASE}/archives/${REPOSITORY}.conf" "${_BASE}/archives/${REPOSITORY}.conf.chroot" - do - if [ -e "${_FILE}" ] - then - cp "${_FILE}" "chroot/etc/apt/conf.d/${REPOSITORY}.conf" - fi - done + # Adding pinning preferences (chroot) + if [ -e "${_BASE}/archives/${REPOSITORY}.pref" ] + then + cp "${_BASE}/archives/${REPOSITORY}.pref" chroot/etc/apt/sources.list.d + elif [ -e "${_BASE}/archives/${REPOSITORY}.pref.chroot" ] + then + cp "${_BASE}/archives/${REPOSITORY}.pref.chroot" "chroot/etc/apt/sources.list.d/${REPOSITORY}.pref" + fi - # Adding apt preferences (chroot) - for _FILE in "${_BASE}/archives/${REPOSITORY}.pref" "${_BASE}/archives/${REPOSITORY}.pref.chroot" - do - if [ -e "${_FILE}" ] + if [ "${LB_APT_SECURE}" != false ] + then + # Adding archive signing keys (chroot) + if [ -e "${_BASE}/archives/${REPOSITORY}.key.chroot" ] + then + cat "${_BASE}/archives/${REPOSITORY}.key.chroot" | Chroot chroot "apt-key add -" + elif [ -e "${_BASE}/archives/${REPOSITORY}.key" ] then - cp "${_FILE}" "chroot/etc/apt/preferences.d/${REPOSITORY}.pref" + cat "${_BASE}/archives/${REPOSITORY}.key" | Chroot chroot "apt-key add -" fi - done + fi + done + fi - # Adding apt keys (chroot) - if [ "${LB_APT_SECURE}" != false ] + # Check local sources.list + if Find_files config/archives/*.list || \ + Find_files config/archives/*.list.chroot + then + for FILE in config/archives/*.list \ + config/archives/*.list.chroot + do + if [ -e "${FILE}" ] then - for _FILE in "${_BASE}/archives/${REPOSITORY}.key" "${_BASE}/archives/${REPOSITORY}.key.chroot" - do - if [ -e "${_FILE}" ] - then - cat "${_FILE}" | Chroot chroot "apt-key add -" - fi - done + sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \ + -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + + if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ] + then + # Strip out source archives + sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + fi fi done fi - # Adding local apt sources (chroot) - for FILE in config/archives/*.list config/archives/*.list.chroot - do - if [ -e "${FILE}" ] - then - sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \ - -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ - -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \ - -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ - "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" - - if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ] + # Check local pinning preferences + if Find_files config/archives/*.pref || \ + Find_files config/archives/*.pref.chroot + then + for FILE in config/archives/*.pref \ + config/archives/*.pref.chroot + do + if [ -e "${FILE}" ] then - # Strip out source archives - sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot) fi - fi - done - - # Adding local apt configuration (chroot) - for FILE in config/archives/*.conf config/archives/*.conf.chroot - do - if [ -e "${FILE}" ] - then - cp ${FILE} chroot/etc/apt/conf.d/$(basename ${FILE} .chroot) - fi - done - - # Adding local apt preferences (chroot) - for FILE in config/archives/*.pref config/archives/*.pref.chroot - do - if [ -e "${FILE}" ] - then - cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot) - fi - done + done + fi # Configure local package repository if Find_files config/packages.chroot/*.deb || Find_files config/packages/*.deb @@ -366,12 +363,13 @@ EOF if [ "${LB_APT_SECURE}" = "true" ] then - if [ -e chroot/root/.gnupg ] + _LB_DOTGNUPG_EXISTED=0 + if [ -d chroot/root/.gnupg ] then - mv chroot/root/.gnupg chroot/root/.gnupg.orig + _LB_DOTGNUPG_EXISTED=1 fi - # Ensure ~/.gnupg exists + # Ensure ~/.gnupg exists (required for gnupg >= ~1.4.9) mkdir -p chroot/root/.gnupg # Temporarily replace /dev/random with /dev/urandom so as not @@ -435,11 +433,10 @@ EOF mv chroot/dev/random.orig chroot/dev/random fi - rm -rf chroot/root/.gnupg - - if [ -e chroot/root/.gnupg.orig ] + # Remove /root/.gnupg if we created it during the signing process + if [ "${_LB_DOTGNUPG_EXISTED}" -eq 0 ] then - mv chroot/root/.gnupg.orig chroot/root/.gnupg + rm -rf chroot/root/.gnupg fi fi @@ -554,7 +551,13 @@ EOF # Installing keyring packages if [ -n "${LB_KEYRING_PACKAGES}" ] then - Apt chroot "install ${LB_KEYRING_PACKAGES}" + if [ "${LB_DERIVATIVE}" = "true" ] + then + # Temporary hack (FIXME) + Chroot chroot "apt-get ${APT_OPTIONS} --force-yes install ${LB_KEYRING_PACKAGES}" + else + Apt chroot "install ${LB_KEYRING_PACKAGES}" + fi fi rm -rf chroot/var/cache/apt/*.bin @@ -695,7 +698,7 @@ EOF fi ;; - ubuntu) + ubuntu|kubuntu) echo "deb ${LB_PARENT_MIRROR_BINARY_SECURITY} ${LB_PARENT_DISTRIBUTION}-security ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] @@ -754,7 +757,6 @@ EOF fi # probably too bold, needs refinment (FIXME) - rm -f chroot/etc/apt/conf.d/* rm -f chroot/etc/apt/preferences.d/* # Configure third-party archives @@ -772,97 +774,99 @@ EOF continue fi - # Adding apt sources (binary) - for _FILE in "${_BASE}/archives/${REPOSITORY}" "${_BASE}/archives/${REPOSITORY}.binary" - do - if [ -e "${_FILE}" ] - then - sed -e "s|@DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ - -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ - -e "s|@ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ - "${_FILE}" > "chroot/etc/apt/sources.list.d/${REPOSITORY}.list" - fi - done + # Adding sources.list entries (binary) + if [ -e "${_BASE}/archives/${REPOSITORY}.binary" ] + then + sed -e "s|@DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${_BASE}/archives/${REPOSITORY}.binary" > \ + "chroot/etc/apt/sources.list.d/${REPOSITORY}.list" + elif [ -e "${_BASE}/archives/${REPOSITORY}" ] + then + sed -e "s|@DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${_BASE}/archives/${REPOSITORY}" > \ + "chroot/etc/apt/sources.list.d/${REPOSITORY}.list" + fi - # Adding apt configuration (binary) - for _FILE in "${_BASE}/archives/${REPOSITORY}.conf" "${_BASE}/archives/${REPOSITORY}.conf.binary" - do - if [ -e "${_FILE}" ] + # Adding pinning preferences (binary) + if [ -e "${_BASE}/archives/${REPOSITORY}.pref" ] + then + cp "${_BASE}/archives/${REPOSITORY}.pref" chroot/etc/apt/sources.list.d + elif [ -e "${_BASE}/archives/${REPOSITORY}.pref.binary" ] + then + cp "${_BASE}/archives/${REPOSITORY}.pref.binary" "chroot/etc/apt/sources.list.d/${REPOSITORY}.pref" + fi + + if [ "${LB_APT_SECURE}" != false ] + then + # Adding archive signing keys (binary) + if [ -e "${_BASE}/archives/${REPOSITORY}.key.binary" ] then - cp "${_FILE}" "chroot/etc/apt/conf.d/${REPOSITORY}.conf" + cat "${_BASE}/archives/${REPOSITORY}.key.binary" | Chroot chroot "apt-key add -" + elif [ -e "${_BASE}/archives/${REPOSITORY}.key" ] + then + cat "${_BASE}/archives/${REPOSITORY}.key" | Chroot chroot "apt-key add -" fi - done + fi + done + fi - # Adding apt preferences (binary) - for _FILE in "${_BASE}/archives/${REPOSITORY}.pref" "${_BASE}/archives/${REPOSITORY}.pref.binary" - do - if [ -e "${_FILE}" ] + # Check local sources.list + if Find_files config/archives/*.list || \ + Find_files config/archives/*.list.binary + then + for FILE in config/archives/*.list \ + config/archives/*.list.binary + do + if [ -e "${FILE}" ] + then + sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \ + -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)" + + if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ] then - cp "${_FILE}" "chroot/etc/apt/preferences.d/${REPOSITORY}.pref" + # Strip out source archives + sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)" fi - done + fi + done + fi - # Adding apt keys (binary) - if [ "${LB_APT_SECURE}" != false ] + # Check local pinning preferences + if Find_files config/archives/*.pref || \ + Find_files config/archives/*.pref.binary + then + for FILE in config/archives/*.pref \ + config/archives/*.pref.binary + do + if [ -e "${FILE}" ] then - for _FILE in "${_BASE}/archives/${REPOSITORY}.key" "${_BASE}/archives/${REPOSITORY}.key.binary" - do - if [ -e "${_FILE}" ] - then - cat "${_FILE}" | Chroot chroot "apt-key add -" - fi - done + cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .binary) fi done fi - # Adding local apt sources (binary) - for FILE in config/archives/*.list config/archives/*.list.binary - do - if [ -e "${FILE}" ] - then - sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \ - -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ - -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \ - -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ - "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)" - - if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ] + # Check local archive keys + if Find_files config/archives/*.key || \ + Find_files config/archives/*.key.binary + then + for FILE in config/archives/*.key \ + config/archives/*.key.binary + do + if [ -e "${FILE}" ] then - # Strip out source archives - sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)" + cp ${FILE} chroot/root + Chroot chroot "apt-key add /root/$(basename ${FILE})" + rm -f chroot/root/$(basename ${FILE}) fi - fi - done - - # Adding local apt configuration (binary) - for FILE in config/archives/*.conf config/archives/*.conf.binary - do - if [ -e "${FILE}" ] - then - cp ${FILE} chroot/etc/apt/conf.d/$(basename ${FILE} .binary) - fi - done - - # Adding local apt preferences (binary) - for FILE in config/archives/*.pref config/archives/*.pref.binary - do - if [ -e "${FILE}" ] - then - cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .binary) - fi - done - - # Adding local apt keys (binary) - for FILE in config/archives/*.key config/archives/*.key.binary - do - if [ -e "${FILE}" ] - then - cp ${FILE} chroot/root - Chroot chroot "apt-key add /root/$(basename ${FILE})" - rm -f chroot/root/$(basename ${FILE}) - fi - done + done + fi # Updating indices Apt chroot update @@ -883,9 +887,9 @@ EOF rm -rf chroot/root/packages # Remove local packages key if it exists - if Chroot chroot apt-key list | grep -q ${_LB_LOCAL_KEY_EMAIL} + if apt-key list | grep -q ${_LB_LOCAL_KEY_EMAIL} then - Chroot chroot apt-key del ${_LB_LOCAL_KEY_EMAIL} + apt-key del ${_LB_LOCAL_KEY_EMAIL} fi # Removing stage file |