summaryrefslogtreecommitdiff
path: root/helpers/lh_binary_debian-installer
diff options
context:
space:
mode:
Diffstat (limited to 'helpers/lh_binary_debian-installer')
-rwxr-xr-xhelpers/lh_binary_debian-installer247
1 files changed, 247 insertions, 0 deletions
diff --git a/helpers/lh_binary_debian-installer b/helpers/lh_binary_debian-installer
new file mode 100755
index 0000000..6d6d784
--- /dev/null
+++ b/helpers/lh_binary_debian-installer
@@ -0,0 +1,247 @@
+#!/bin/sh
+
+# lh_binary_debian-installer(1) - install debian-installer into binary
+# Copyright (C) 2006-2007 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
+
+# Source common functions
+for FUNCTION in /usr/share/live-helper/functions/*.sh
+do
+ . ${FUNCTION}
+done
+
+# Set static variables
+DESCRIPTION="install debian-installer into binary"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+Echo_debug "Init ${PROGRAM}"
+
+# Reading configuration files
+Read_conffile config/common
+Read_conffile config/bootstrap
+Read_conffile config/chroot
+Read_conffile config/binary
+Read_conffile config/source
+Set_defaults
+
+if [ "${LIVE_DEBIAN_INSTALLER}" != "enabled" ]
+then
+ exit 0
+fi
+
+Breakpoint "binary_debian-installer: Init"
+
+# Requiring stage file
+Require_stagefile .stage/bootstrap
+
+# Checking stage file
+Check_stagefile .stage/binary_debian-installer
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Setting destination directory
+case "${LIVE_BINARY_IMAGE}" in
+ iso)
+ DESTDIR="binary/install"
+ DESTDIR_INSTALLER="cdrom"
+ ;;
+
+ net)
+ DESTDIR="tftpboot"
+ DESTDIR_INSTALLER="netboot"
+
+ Echo_error "Not supported yet (FIXME)"
+ exit 1
+ ;;
+
+ usb-hdd|hdd)
+ DESTDIR="binary"
+ DESTDIR_INSTALLER="hd-media"
+ ;;
+esac
+
+# Temporary check for broken syslinux
+if [ "${LIVE_BINARY_IMAGE}" = "iso" ]
+then
+ # Assemble multi-arch
+ if [ -n "${MULTIARCH}" ]
+ then
+ case "${LIVE_ARCHITECTURE}" in
+ amd64)
+ DESTDIR="${DESTDIR}.amd"
+ ;;
+
+ i386)
+ DESTDIR="${DESTDIR}.386"
+ ;;
+
+ powerpc)
+ DESTDIR="${DESTDIR}.ppc"
+ ;;
+ esac
+ fi
+fi
+
+# Downloading debian-installer
+mkdir -p "${DESTDIR}"
+
+wget --no-clobber -O "${DESTDIR}"/vmlinuz "${LIVE_MIRROR_BUILD}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/vmlinuz
+wget --no-clobber -O "${DESTDIR}"/initrd.gz "${LIVE_MIRROR_BUILD}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/initrd.gz
+
+# Downloading graphical-installer
+if [ "${LIVE_ARCHITECTURE}" = "amd64" ] || [ "${LIVE_ARCHITECTURE}" = "i386" ] || [ "${LIVE_ARCHITECTURE}" = "powerpc" ]
+then
+ mkdir -p "${DESTDIR}"/gtk
+
+ wget --no-clobber -O "${DESTDIR}"/gtk/vmlinuz "${LIVE_MIRROR_BUILD}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/vmlinuz
+ wget --no-clobber -O "${DESTDIR}"/gtk/initrd.gz "${LIVE_MIRROR_BUILD}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/initrd.gz
+fi
+
+# Downloading udebs
+mkdir -p binary/dists/"${LIVE_DISTRIBUTION}"/main/debian-installer/binary-"${LIVE_ARCHITECTURE}"
+cd binary/dists/"${LIVE_DISTRIBUTION}"/main/debian-installer/binary-"${LIVE_ARCHITECTURE}"
+wget "${LIVE_MIRROR_BUILD}"/dists/"${LIVE_DISTRIBUTION}"/main/debian-installer/binary-"${LIVE_ARCHITECTURE}"/Packages.gz
+gunzip -c Packages.gz > Packages
+cd "${OLDPWD}"
+
+for DISTRIBUTION in frozen stable testing unstable
+do
+ ln -s ${LIVE_DISTRIBUTION} binary/dists/${DISTRIBUTION}
+done
+
+DEBS="`awk '/Filename: / { print $2 }' binary/dists/${LIVE_DISTRIBUTION}/main/debian-installer/binary-${LIVE_ARCHITECTURE}/Packages`"
+UDEBS="`echo ${DEBS} | grep '.*.udeb'`"
+
+rm -f packages.di
+
+for UDEB in ${UDEBS}
+do
+ mkdir -p binary/`dirname ${UDEB}`
+ cd binary/`dirname ${UDEB}`
+ wget "${LIVE_MIRROR_BUILD}"/${UDEB}
+ cd "${OLDPWD}"
+done
+
+# Downloading debs
+if [ -d cache/packages_bootstrap ]
+then
+ for FILE in cache/packages_bootstrap/*.deb
+ do
+ SOURCE="`dpkg -f ${FILE} Source`"
+
+ 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 binary/pool/main/"${LETTER}"/"${SOURCE}"
+
+ # Move files
+ cp "${FILE}" binary/pool/main/"${LETTER}"/"${SOURCE}"
+ done
+fi
+
+mkdir -p binary/dists/${LIVE_DISTRIBUTION}/main/binary-${LIVE_ARCHITECTURE}
+
+cat > binary/dists/${LIVE_DISTRIBUTION}/main/binary-${LIVE_ARCHITECTURE}/Release << EOF
+Archive: ${LIVE_DISTRIBUTION}
+Component: main
+Origin: Debian
+Label: Debian
+Architecture: ${LIVE_ARCHITECTURE}
+EOF
+
+mkdir -p cache/indices_debian-installer
+
+cat > cache/indices_debian-installer/archive << EOF
+Dir
+{
+ ArchiveDir "binary";
+ // OverrideDir "";
+ // CacheDir "";
+ FileListDir "cache/indices_debian-installer";
+};
+
+Default
+{
+ Packages::Compress ". gzip";
+ // Packages::Extension ".deb";
+ // Sources::Extensions ".dsc";
+ // Contents::Compress "gzip";
+ // DeLinkLimit "0";
+ // FileMode "0644";
+};
+
+TreeDefault
+{
+ // MaxContentsChange
+ // ContentsAge
+ Directory "dists/\$(DIST)/\$(SECTION)/binary-\$(ARCH)/";
+ Packages "dists/\$(DIST)/\$(SECTION)/binary-\$(ARCH)/Packages";
+ InternalPrefix "dists/\$(DIST)/\$(SECTION)/";
+ Contents "dists/\$(DIST)/Contents-\$(ARCH)";
+ // Contents::Header
+ // BinCacheDB "cache.\$(DIST).\$(SECTION).\$(ARCH)";
+ // FileList "filelist.\$(DIST).\$(SECTION).\$(ARCH)";
+ FileList "filelist";
+ // BinOverride "override.\$(DIST).\$(SECTION)";
+};
+
+tree "${LIVE_DISTRIBUTION}"
+{
+ Sections "main";
+ Architectures "${LIVE_ARCHITECTURE}";
+};
+EOF
+
+cd binary
+find pool -name "*.deb" | sort > ../cache/indices_debian-installer/filelist
+cd "${OLDPWD}"
+
+cat > cache/indices_debian-installer/release << EOF
+APT::FTPArchive::Release::Origin "Debian";
+APT::FTPArchive::Release::Label "Debian";
+APT::FTPArchive::Release::Suite "${LIVE_DISTRIBUTION}";
+APT::FTPArchive::Release::Version "4.0";
+APT::FTPArchive::Release::Codename "${LIVE_DISTRIBUTION}";
+APT::FTPArchive::Release::Date "`date -R`";
+APT::FTPArchive::Release::Architectures "${LIVE_ARCHITECTURE}";
+APT::FTPArchive::Release::Components "main";
+EOF
+
+apt-ftparchive generate cache/indices_debian-installer/archive
+apt-ftparchive -c cache/indices_debian-installer/release -o APT::FTPArchive::Release::Description="Last updated: `date -R`" release binary/dists/${LIVE_DISTRIBUTION} > binary/dists/${LIVE_DISTRIBUTION}/Release
+
+mkdir binary/.disk
+echo "main" > binary/.disk/base_components
+touch binary/.disk/base_installable
+echo "not_complete" > binary/.disk/cd_type
+#echo "Debian GNU/Linux 4.0 r0 \"Etch\" - Official i386 NETINST Binary-1 20070407-11:29" > binary/.disk/info
+echo "Debian GNU/Linux ${LIVE_DISTRIBUTION} - Unofficial ${LIVE_ARCHITECTURE} NETINST Binary-1 `date +%Y%m%d-%H:%M`" > binary/.disk/info
+touch binary/.disk/mkisofs
+
+# Creating stage file
+Create_stagefile .stage/binary_debian-installer