summaryrefslogtreecommitdiff
path: root/scripts/build/binary_debian-installer
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build/binary_debian-installer')
-rwxr-xr-xscripts/build/binary_debian-installer686
1 files changed, 686 insertions, 0 deletions
diff --git a/scripts/build/binary_debian-installer b/scripts/build/binary_debian-installer
new file mode 100755
index 000000000..fa7b022a6
--- /dev/null
+++ b/scripts/build/binary_debian-installer
@@ -0,0 +1,686 @@
+#!/bin/sh
+
+# lh_binary_debian-installer(1) - install debian-installer into binary
+# Copyright (C) 2006-2010 Daniel Baumann <daniel@debian.org>
+#
+# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
+# This is free software, and you are welcome to redistribute it
+# under certain conditions; see COPYING for details.
+
+set -e
+
+# Including common functions
+. "${LH_BASE:-/usr/share/live-helper}"/scripts/build.sh
+
+# Setting static variables
+DESCRIPTION="$(Echo 'install debian-installer into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
+Set_defaults
+
+if [ "${LH_BINARY_IMAGES}" = "virtual-hdd" ]
+then
+ exit 0
+fi
+
+if [ "${_DEBUG}" = "true" ]
+then
+ WGET_OPTIONS="${WGET_OPTIONS} --verbose"
+elif [ "${_QUIET}" = "true" ]
+then
+ WGET_OPTIONS="${WGET_OPTIONS} --quiet"
+else
+ WGET_OPTIONS="${WGET_OPTIONS} --no-verbose"
+fi
+
+# Check d-i configuration
+case "${LH_DEBIAN_INSTALLER}" in
+ true|cdrom|netinst|netboot|businesscard|live)
+ ;;
+
+ false)
+ exit 0
+ ;;
+
+ *)
+ Echo_error "debian-installer flavour %s not supported." "${LH_DEBIAN_INSTALLER}"
+ exit 1
+ ;;
+esac
+
+Echo_message "Begin installing debian-installer..."
+
+# Requiring stage file
+Require_stagefile .stage/config .stage/bootstrap
+
+# Checking stage file
+Check_stagefile .stage/binary_debian-installer
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package chroot/usr/bin/wget wget
+Check_package chroot/usr/bin/apt-ftparchive apt-utils
+
+# Restoring cache
+Restore_cache cache/packages_binary
+
+# Installing depends
+Install_package
+
+# Setting destination directory
+case "${LH_BINARY_IMAGES}" in
+ net)
+ DESTDIR="tftpboot/debian-install/${LH_ARCHITECTURE}"
+ ;;
+
+ usb*|tar)
+ DESTDIR="binary/install"
+ ;;
+
+ *)
+ DESTDIR="binary/install"
+ ;;
+esac
+
+# Set d-i image type
+case "${LH_DEBIAN_INSTALLER}" in
+ businesscard|netboot|netinst)
+ DI_IMAGE_TYPE="netboot"
+ ;;
+ *)
+ case "${LH_BINARY_IMAGES}" in
+ net)
+ DI_IMAGE_TYPE="netboot"
+ ;;
+
+ *)
+ DI_IMAGE_TYPE="cdrom"
+ ;;
+ esac
+ ;;
+esac
+
+# Set architecture-specific variables
+case "${LH_ARCHITECTURE}" in
+ powerpc)
+ case "${DI_IMAGE_TYPE}" in
+ cdrom)
+ DI_REMOTE_BASE="${LH_ARCHITECTURE}/cdrom"
+ ;;
+
+ netboot)
+ DI_REMOTE_BASE="${LH_ARCHITECTURE}/netboot"
+ ;;
+ esac
+
+ DI_REMOTE_KERNEL="vmlinux"
+ DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk"
+ ;;
+
+ sparc)
+ DEFAULT_FLAVOUR="$(echo ${LH_LINUX_FLAVOURS} | awk '{ print $1 }')"
+ DI_REMOTE_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})"
+ DI_REMOTE_BASE_GTK="none"
+
+ DI_REMOTE_BASE="cdrom"
+ ;;
+ *)
+ case "${DI_IMAGE_TYPE}" in
+ netboot)
+ DI_REMOTE_BASE="netboot/debian-installer/${LH_ARCHITECTURE}"
+ DI_REMOTE_BASE_GTK="netboot/gtk/debian-installer/${LH_ARCHITECTURE}"
+ DI_REMOTE_KERNEL="linux"
+ ;;
+
+ cdrom)
+ DI_REMOTE_BASE="cdrom"
+ DI_REMOTE_BASE_GTK="cdrom/gtk"
+ DI_REMOTE_KERNEL="vmlinuz"
+ ;;
+ esac
+ ;;
+esac
+
+Check_multiarchitecture
+
+Install_file() {
+ local FILE
+ FILE="${1}"
+
+ local TARGET
+ TARGET="${2}"
+
+ SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')"
+
+ if [ -z "${SOURCE}" ]
+ then
+ SOURCE="$(basename ${FILE} | awk -F_ '{ print $1 }')"
+ fi
+
+ case "${SOURCE}" in
+ lib?*)
+ LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')"
+ ;;
+
+ *)
+ LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')"
+ ;;
+ esac
+
+ # Install directory
+ mkdir -p "${TARGET}"/"${LETTER}"/"${SOURCE}"
+
+ # Move files
+ cp "${FILE}" "${TARGET}"/"${LETTER}"/"${SOURCE}"
+}
+
+# Set absolute directory for caching; we require it when we call Download_file
+# from a non-standard cwd.
+_LH_CACHE_DIR="$(pwd)/cache/binary_debian-installer"
+
+Download_file () {
+ local _LH_TARGET
+ _LH_TARGET="${1}"
+
+ local _LH_URL
+ _LH_URL="${2}"
+
+ _LH_CACHE_FILE="${_LH_CACHE_DIR}/$(echo "${_LH_URL}" | sed 's|/|_|g')"
+
+ if [ ! -f "${_LH_CACHE_FILE}" ]
+ then
+ mkdir -p ${_LH_CACHE_DIR}
+ if ! wget ${WGET_OPTIONS} -O "${_LH_CACHE_FILE}" "${_LH_URL}"
+ then
+ rm -f "${_LH_CACHE_FILE}"
+
+ Echo_error "Could not download file: %s" "${_LH_URL}"
+ exit 1
+ fi
+ fi
+
+ if [ "$(stat --printf %d "${_LH_CACHE_DIR}")" = "$(stat --printf %d ./)" ]
+ then
+ CP_OPTIONS="-l"
+ fi
+
+ cp -f ${CP_OPTIONS} -- "${_LH_CACHE_FILE}" "${_LH_TARGET}"
+}
+
+VMLINUZ_DI="vmlinuz"
+INITRD_DI="initrd.gz"
+DESTDIR_DI="${DESTDIR}"
+
+VMLINUZ_GI="gtk/vmlinuz"
+INITRD_GI="gtk/initrd.gz"
+DESTDIR_GI="${DESTDIR}/gtk"
+
+if [ "${LH_DEBIAN_INSTALLER_DISTRIBUTION}" = "daily" ]
+then
+ LH_DEBIAN_INSTALLER_DISTRIBUTION="sid"
+
+ # Debian Installer daily builds
+ case "${LH_ARCHITECTURE}" in
+ alpha|amd64|hppa|ia64|mips|mipsel|powerpc)
+ URL="http://d-i.debian.org/daily-images/${LH_ARCHITECTURE}/daily/"
+ ;;
+
+ arm|armel)
+ URL="http://people.debian.org/~kmuto/d-i/images/daily/"
+ ;;
+
+ i386)
+ URL="http://people.debian.org/~joeyh/d-i/images/daily/"
+ ;;
+
+ m68k)
+ URL="http://people.debian.org/~smarenka/d-i/images-m68k/daily/"
+ ;;
+
+ s390)
+ URL="http://lophos.multibuild.org/d-i/images/daily/"
+ ;;
+
+ sparc)
+ URL="http://people.debian.org/~stappers/d-i/images/daily/"
+ ;;
+
+ *)
+ Echo_error "No daily-builds found for your architecture."
+ exit 1
+ ;;
+ esac
+else
+ URL="${LH_MIRROR_DEBIAN_INSTALLER}/dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LH_ARCHITECTURE}/current/images/"
+fi
+
+mkdir -p "${DESTDIR_DI}"
+
+if [ "${LH_ARCHITECTURE}" = "sparc" ] && [ "${DI_IMAGE_TYPE}" = "netboot" ]
+then
+ # There are no prepared kernel/initrd pairs for sparc netboot so we
+ # must unpack them from a mini.iso
+ Download_file mini.iso ${URL}/mini.iso
+
+ mkdir mini.tmp
+ ${LH_ROOT_COMMAND} mount -o loop -t iso9660 mini.iso mini.tmp
+
+ cp mini.tmp/boot/vmlinuz-${DEFAULT_FLAVOUR} "${DESTDIR}"/"${VMLINUZ_DI}"
+ cp mini.tmp/boot/initrd.gz "${DESTDIR}"/"${INITRD_DI}"
+
+ ${LH_ROOT_COMMAND} umount mini.tmp
+ rm -rf mini.tmp mini.iso
+else
+ # Downloading debian-installer
+ Download_file "${DESTDIR}"/"${VMLINUZ_DI}" ${URL}/${DI_REMOTE_BASE}/${DI_REMOTE_KERNEL}
+ Download_file "${DESTDIR}"/"${INITRD_DI}" ${URL}/${DI_REMOTE_BASE}/initrd.gz
+
+ # Downloading graphical-installer
+ DOWNLOAD_GTK_INSTALLER=0
+ if [ "${LH_DEBIAN_INSTALLER_GUI}" = "true" ]
+ then
+ case "${LH_ARCHITECTURE}" in
+ amd64|i386)
+ DOWNLOAD_GTK_INSTALLER=1
+ ;;
+
+ powerpc)
+ if [ "${LH_DEBIAN_INSTALLER}" = "netboot" ]
+ then
+ DOWNLOAD_GTK_INSTALLER=1
+ fi
+ ;;
+ esac
+ fi
+
+ if [ ${DOWNLOAD_GTK_INSTALLER} -eq 1 ]
+ then
+ mkdir -p "${DESTDIR_GI}"
+ Download_file "${DESTDIR}"/"${VMLINUZ_GI}" ${URL}/${DI_REMOTE_BASE_GTK}/${DI_REMOTE_KERNEL}
+ Download_file "${DESTDIR}"/"${INITRD_GI}" ${URL}/${DI_REMOTE_BASE_GTK}/initrd.gz
+ fi
+fi
+
+# Only download additional packages if appropriate
+if [ "${DI_IMAGE_TYPE}" != "netboot" ]
+then
+ # Downloading additional packages
+ mkdir -p chroot/binary.deb/archives/partial
+ mkdir -p binary/pool/main
+ mv chroot/var/lib/dpkg/status chroot/var/lib/dpkg/status.tmp
+ touch chroot/var/lib/dpkg/status
+
+ case "${LH_ARCHITECTURE}" in
+ amd64)
+ #DI_REQ_PACKAGES="lilo grub grub2"
+ DI_REQ_PACKAGES="lilo grub"
+
+ case "${LH_MODE}" in
+ ubuntu)
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-2.6-generic"
+ ;;
+
+ *)
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-2.6-amd64"
+ ;;
+ esac
+ ;;
+
+ i386)
+ #DI_REQ_PACKAGES="elilo lilo grub grub2"
+ DI_REQ_PACKAGES="elilo lilo grub"
+
+ case "${LH_MODE}" in
+ ubuntu)
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-2.6-generic"
+ ;;
+
+ *)
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-2.6-486 linux-image-2.6-686"
+ ;;
+ esac
+ ;;
+
+ sparc)
+ DI_REQ_PACKAGES="silo"
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-2.6-sparc64 linux-image-2.6-sparc64-smp"
+ ;;
+
+ powerpc)
+ DI_REQ_PACKAGES="yaboot"
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-2.6-powerpc linux-image-2.6-powerpc64 linux-image-2.6-powerpc-smp"
+ ;;
+ esac
+
+ DI_PACKAGES="${DI_PACKAGES} busybox cryptsetup lvm2"
+
+ # Set apt command prefix
+ _LH_APT_COMMAND="apt-get ${APT_OPTIONS} -o Dir::Cache=/binary.deb -o APT::Install-Recommends=false --download-only"
+
+ if [ "${LH_DEBIAN_INSTALLER}" = "live" ]
+ then
+ # We don't want to duplicate .debs of packages in binary/pool that are already
+ # installed to target/ via live-installer.
+ #
+ # However, we need to force various packages' inclusion in binary/pool/main as
+ # d-i does not support (for example) re-installing grub from target/ - the grub
+ # .debs must actually exist.
+
+ # Modify dpkg status to show the required packages are not installed.
+ cp chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status
+ for PACKAGE in ${DI_REQ_PACKAGES}
+ do
+ awk -v f=0 '
+ f == 1 { print "Status: purge ok not-installed"; f=0; next }
+ /Package: '"${PACKAGE}"'/ { f=1; }
+ { print }
+ ' chroot/var/lib/dpkg/status > chroot/var/lib/dpkg/status.awk
+ mv chroot/var/lib/dpkg/status.awk chroot/var/lib/dpkg/status
+ done
+
+ # Download .deb's that we just marked as "purged" which caused broken dependencies
+ Chroot chroot ${_LH_APT_COMMAND} -f dist-upgrade
+
+ # Revert dpkg status file
+ mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status
+
+ # Download .debs of the required packages
+ Chroot chroot ${_LH_APT_COMMAND} install ${DI_REQ_PACKAGES}
+ else
+ # Download .debs of the required packages
+ Chroot chroot ${_LH_APT_COMMAND} install ${DI_PACKAGES}
+
+ # Revert dpkg status file
+ mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status
+ fi
+
+ mv chroot/binary.deb ./
+
+ if Find_files binary.deb/archives/*.deb
+ then
+ for FILE in binary.deb/archives/*.deb
+ do
+ Install_file "${FILE}" "binary/pool/main"
+ done
+ fi
+
+ if [ "${LH_DEBIAN_INSTALLER}" != "live" ]
+ then
+ # Including base debian packages
+ if ls cache/packages_bootstrap/*.deb > /dev/null 2>&1
+ then
+ for FILE in cache/packages_bootstrap/*.deb
+ do
+ Install_file "${FILE}" "binary/pool/main"
+ done
+ else
+ Echo_error "Could not find packages in cache/packages_bootstrap."
+ Echo_error "You selected values of LH_CACHE, LH_CACHE_PACKAGES, LH_CACHE_STAGES and LH_DEBIAN_INSTALLER which will result in 'bootstrap' packages not being cached - these are required when integrating the Debian Installer."
+ exit 1
+ fi
+ fi
+
+ # Including local debs
+ if Find_files config/binary_local-debs/*_"${LH_ARCHITECTURE}".deb
+ then
+ for FILE in config/binary_local-debs/*_"${LH_ARCHITECTURE}".deb
+ do
+ Install_file "${FILE}" "binary/pool/main"
+ done
+ fi
+
+ if Find_files config/binary_local-debs/*_all.deb
+ then
+ for FILE in config/binary_local-debs/*_all.deb
+ do
+ Install_file "${FILE}" "binary/pool/main"
+ done
+ fi
+
+ # Generating deb indices
+ mkdir -p binary/dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/binary-${LH_ARCHITECTURE}
+
+ mv binary chroot/root
+ echo "cd /root/binary && apt-ftparchive packages pool/main > dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/binary-${LH_ARCHITECTURE}/Packages" > chroot/binary.sh
+ Chroot chroot "sh binary.sh"
+ rm -f chroot/binary.sh
+ mv chroot/root/binary ./
+
+ gzip -9 -c binary/dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/binary-${LH_ARCHITECTURE}/Packages > binary/dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/binary-${LH_ARCHITECTURE}/Packages.gz
+
+ # Fetching release
+ Download_file binary/dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/binary-${LH_ARCHITECTURE}/Release "${LH_MIRROR_CHROOT}"/dists/"${LH_DEBIAN_INSTALLER_DISTRIBUTION}"/main/binary-"${LH_ARCHITECTURE}"/Release
+
+ mkdir binary.udeb
+ cd binary.udeb
+
+ # Downloading udeb indices
+ Download_file Packages.gz "${LH_MIRROR_CHROOT}"/dists/"${LH_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LH_ARCHITECTURE}"/Packages.gz
+ gunzip -c Packages.gz > Packages
+
+ # Sorting udebs
+ UDEBS="$(awk '/Filename: / { print $2 }' Packages)"
+
+ # Downloading udebs
+ for UDEB in ${UDEBS}
+ do
+ if [ -f ../cache/packages_debian-installer.udeb/"$(basename ${UDEB})" ]
+ then
+ # Copying cached udebs
+ cp ../cache/packages_debian-installer.udeb/"$(basename ${UDEB})" ./
+ else
+ # Downloading udebs
+ wget ${WGET_OPTIONS} "${LH_MIRROR_CHROOT}"/${UDEB}
+ fi
+ done
+
+ # Caching udebs
+ rm -rf ../cache/packages_debian-installer.udeb
+ mkdir -p ../cache/packages_debian-installer.udeb
+ cp *.udeb ../cache/packages_debian-installer.udeb
+
+ # Including local udebs
+ if Find_files ../config/binary_local-udebs/*_"${LH_ARCHITECTURE}".udeb
+ then
+ for FILE in ../config/binary_local-udebs/*_"${LH_ARCHITECTURE}".udeb
+ do
+ Install_file "${FILE}" "pool/main"
+
+ # Prefer local udebs over downloaded udebs
+ rm -f "$(basename ${FILE} | awk -F_ '{ print $1 }')"_*.udeb
+ done
+ fi
+
+ if Find_files ../config/binary_local-udebs/*_all.udeb
+ then
+ for FILE in ../config/binary_local-udebs/*_all.udeb
+ do
+ Install_file "${FILE}" "pool/main"
+
+ # Prefer local udebs over downloaded udebs
+ rm -f "$(basename ${FILE} | awk -F_ '{ print $1 }')"_*.udeb
+ done
+ fi
+
+ # Excluding udebs
+ grep -v "^#" "${LH_BASE}"/data/debian-cd/"${LH_DEBIAN_INSTALLER_DISTRIBUTION}"/udeb_exclude > exclude || true
+ grep -v "^#" "${LH_BASE}"/data/debian-cd/"${LH_DEBIAN_INSTALLER_DISTRIBUTION}"/exclude-udebs >> exclude || true
+ grep -v "^#" "${LH_BASE}"/data/debian-cd/"${LH_DEBIAN_INSTALLER_DISTRIBUTION}"/exclude-udebs-${LH_ARCHITECTURE} >> exclude || true
+
+ # Local exclude file
+ if [ -e ../config/binary_debian-installer/udeb_exclude ]
+ then
+ cat ../config/binary_debian-installer/udeb_exclude >> exclude
+ fi
+
+ # Excluding udebs from excludes because we want them to be in the image on purpose
+ sed -i -e 's|di-utils-exit-installer||' exclude # used for live-installer-launcher
+
+ while read EXCLUDE
+ do
+ if [ "${LH_DEBIAN_INSTALLER}" = "live" ] && [ "${EXCLUDE}" = "live-installer" ]
+ then
+ continue
+ fi
+
+ rm -f ${EXCLUDE}_*.udeb
+ done < exclude
+
+ # Enable live-installer
+ if [ "${LH_DEBIAN_INSTALLER}" = "live" ]
+ then
+ # Remove local udebs
+ rm -f pool/main/b/base-installer/bootstrap-base_*.udeb
+
+ # Remove d-i udebs
+ rm -f bootstrap-base_*.udeb
+ fi
+
+ # Moving udebs
+ for UDEB in ${UDEBS}
+ do
+ if [ -f "$(basename ${UDEB})" ]
+ then
+ mkdir -p $(dirname ${UDEB})
+ mv "$(basename ${UDEB})" "$(dirname ${UDEB})"
+ fi
+ done
+
+ # Creating udeb indices
+ mkdir -p dists/"${LH_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LH_ARCHITECTURE}"
+ cd "${OLDPWD}"
+
+ mv binary.udeb chroot/root
+ echo "cd /root/binary.udeb && apt-ftparchive packages pool/main > dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LH_ARCHITECTURE}/Packages" > chroot/binary.sh
+ Chroot chroot "sh binary.sh"
+ rm -f chroot/binary.sh
+ mv chroot/root/binary.udeb ./
+
+ cd binary.udeb
+ gzip -9 -c dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LH_ARCHITECTURE}/Packages > dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LH_ARCHITECTURE}/Packages.gz
+
+ rm -f Packages* exclude
+ find . | cpio -dmpu "${OLDPWD}"/binary
+ cd "${OLDPWD}"
+
+ rm -rf binary.udeb
+ rm -rf binary.deb
+
+ # Generating release file
+ mv binary chroot/root
+
+cat > chroot/binary.sh << EOF
+cd /root/binary && apt-ftparchive \
+ -o APT::FTPArchive::Release::Origin="Debian" \
+ -o APT::FTPArchive::Release::Label="Debian" \
+ -o APT::FTPArchive::Release::Suite="${LH_DEBIAN_INSTALLER_DISTRIBUTION}" \
+ -o APT::FTPArchive::Release::Version="4.0" \
+ -o APT::FTPArchive::Release::Codename="${LH_DEBIAN_INSTALLER_DISTRIBUTION}" \
+ -o APT::FTPArchive::Release::Date="$(date -R)" \
+ -o APT::FTPArchive::Release::Architectures="${LH_ARCHITECTURE}" \
+ -o APT::FTPArchive::Release::Components="main" \
+ -o APT::FTPArchive::Release::Description="Last updated: $(date -R)" \
+ release dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION} > dists/${LH_DEBIAN_INSTALLER_DISTRIBUTION}/Release
+EOF
+
+ Chroot chroot "sh binary.sh"
+ rm -f chroot/binary.sh
+ mv chroot/root/binary ./
+
+ # Creating dist symlinks
+ for DISTRIBUTION in frozen stable testing unstable
+ do
+ ln -s ${LH_DEBIAN_INSTALLER_DISTRIBUTION} binary/dists/${DISTRIBUTION}
+ done
+
+ case "${LH_BINARY_IMAGES}" in
+ usb*)
+ ;;
+
+ *)
+ ln -s . binary/debian
+ ;;
+ esac
+
+ # Including preseeding files
+ if Find_files config/binary_debian-installer/*.cfg
+ then
+ cp config/binary_debian-installer/*.cfg binary/install
+ fi
+fi
+
+Repack_initrd()
+{
+ local TARGET_INITRD
+ local INCLUDE_PATH
+ TARGET_INITRD="${1}"
+ INCLUDE_PATH="${2}"
+ REPACK_TMPDIR="unpacked-initrd"
+
+ if [ -d "${INCLUDE_PATH}" ]
+ then
+ INCLUDE_PATH=$(readlink -f ${INCLUDE_PATH})
+ fi
+
+ # cpio does not have a "extract to directory", so we must change directory
+ mkdir -p ${REPACK_TMPDIR}
+ cd ${REPACK_TMPDIR}
+
+ gzip -d < ../${TARGET_INITRD} | cpio -i --make-directories --no-absolute-filenames
+ if [ ! -d "${INCLUDE_PATH}" ]
+ then
+ # Invoked the old way, just copy the preseeds
+ cp ../config/binary_debian-installer/*.cfg .
+ else
+ # New way, include target directory content in the initrd
+ REPACK_TMPDIR_ABS="${PWD}"
+ cd "${INCLUDE_PATH}"
+ find -print0 | cpio -pumd0 --no-preserve-owner "${REPACK_TMPDIR_ABS}/"
+ cd "${OLDPWD}"
+ fi
+ find -print0 | cpio -H newc -o0 | gzip -9 > ../${TARGET_INITRD}
+
+ cd ..
+ rm -rf ${REPACK_TMPDIR}
+}
+
+# Preseed d-i by repacking the initrd in certain situations
+if [ "${DI_IMAGE_TYPE}" = "netboot" ] && [ -e config/binary_debian-installer/preseed.cfg ]
+then
+ Repack_initrd "${DESTDIR}"/"${INITRD_DI}"
+
+ if [ -e "${DESTDIR}"/"${INITRD_GI}" ]
+ then
+ Repack_initrd "${DESTDIR}"/"${INITRD_GI}"
+ fi
+fi
+
+# Include content of config/binary_debian-installer-includes if exists and not empty
+if [ -d config/binary_debian-installer-includes ] && [ -n "$(ls -A config/binary_debian-installer-includes)" ]
+then
+ Repack_initrd "${DESTDIR}"/"${INITRD_DI}" config/binary_debian-installer-includes
+
+ if [ -e "${DESTDIR}"/"${INITRD_GI}" ]
+ then
+ Repack_initrd "${DESTDIR}"/"${INITRD_GI}" config/binary_debian-installer-includes
+ fi
+fi
+
+# Saving cache
+Save_cache cache/packages_binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .stage/binary_debian-installer