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-installer288
1 files changed, 146 insertions, 142 deletions
diff --git a/helpers/lh_binary_debian-installer b/helpers/lh_binary_debian-installer
index d04ec3125..de15f1ca5 100755
--- a/helpers/lh_binary_debian-installer
+++ b/helpers/lh_binary_debian-installer
@@ -55,32 +55,26 @@ Create_lockfile .lock
case "${LIVE_BINARY_IMAGES}" in
iso)
DESTDIR="binary/install"
- DESTDIR_INSTALLER="cdrom"
+ DI="cdrom"
;;
net)
DESTDIR="tftpboot"
- DESTDIR_INSTALLER="netboot"
+ DI="netboot"
Echo_error "Not supported yet (FIXME)"
exit 1
;;
tar|usb-hdd)
+ DESTDIR="binary/install"
+ DI="hd-media"
+
# Workaround for syslinux (<< 3.36) which doesn't support long file/path names
- if [ "${LIVE_DISTRIBUTION}" = "etch" ] || [ "${LIVE_DISTRIBUTION}" = "lenny" ]
+ if [ "${LIVE_DISTRIBUTION}" = "etch" ] && [ "${LIVE_BOOTLOADER}" = "syslinux" ]
then
- if [ "${LIVE_BOOTLOADER}" = "syslinux" ]
- then
- DESTDIR="binary"
- else
- DESTDIR="binary/install"
- fi
- else
- DESTDIR="binary/install"
+ DESTDIR="binary"
fi
-
- DESTDIR_INSTALLER="hd-media"
;;
esac
@@ -106,96 +100,71 @@ then
fi
fi
-# Downloading debian-installer
-mkdir -p "${DESTDIR}"
+VMLINUZ_DI="vmlinuz"
+INITRD_DI="initrd.gz"
+DESTDIR_DI="${DESTDIR}"
+
+VMLINUZ_GI="gtk/vmlinuz"
+INITRD_GI="gtk/initrd.gz"
+DESTDIR_GI="${DESTDIR}/gtk"
# Workaround for syslinux (<< 3.36) which doesn't support long file/path names
-if [ "${LIVE_DISTRIBUTION}" = "etch" ] || [ "${LIVE_DISTRIBUTION}" = "lenny" ]
+if [ "${LIVE_DISTRIBUTION}" = "etch" ]
then
if [ "${LIVE_BINARY_IMAGES}" = "tar" ] || [ "${LIVE_BINARY_IMAGES}" = "usb-hdd" ]
then
- if [ "${LIVE_BOOTLOADER}" = "syslinux" ]
- then
- wget --no-clobber -O "${DESTDIR}"/vmlinuz.di "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/initrddi.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/initrd.gz
- else
- wget --no-clobber -O "${DESTDIR}"/vmlinuz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/initrd.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/initrd.gz
- fi
- else
- wget --no-clobber -O "${DESTDIR}"/vmlinuz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/initrd.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/initrd.gz
+ VMLINUZ_DI="vmlinuz.di"
+ INITRD_DI="initrddi.gz"
+ DESTDIR_DI="${DESTDIR}"
+
+ VMLINUZ_GI="vmlinuz.gi"
+ INITRD_GI="initrdgi.gz"
+ DESTDIR_GI="${DESTDIR}"
fi
-else
- wget --no-clobber -O "${DESTDIR}"/vmlinuz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/initrd.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/initrd.gz
fi
+# Downloading debian-installer
+mkdir -p "${DESTDIR_DI}"
+wget --no-clobber -O "${DESTDIR}"/"${VMLINUZ_DI}" "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DI}"/vmlinuz
+wget --no-clobber -O "${DESTDIR}"/"${INITRD_DI}" "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DI}"/initrd.gz
+
# Downloading graphical-installer
if [ "${LIVE_ARCHITECTURE}" = "amd64" ] || [ "${LIVE_ARCHITECTURE}" = "i386" ] || [ "${LIVE_ARCHITECTURE}" = "powerpc" ]
then
- # Workaround for syslinux (<< 3.36) which doesn't support long file/path names
- if [ "${LIVE_DISTRIBUTION}" = "etch" ] || [ "${LIVE_DISTRIBUTION}" = "lenny" ]
- then
- if [ "${LIVE_BINARY_IMAGES}" = "tar" ] || [ "${LIVE_BINARY_IMAGES}" = "usb-hdd" ]
- then
- if [ "${LIVE_BOOTLOADER}" = "syslinux" ]
- then
- wget --no-clobber -O "${DESTDIR}"/vmlinuz.gi "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/initrdgi.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/initrd.gz
- else
- mkdir -p "${DESTDIR}"/gtk
-
- wget --no-clobber -O "${DESTDIR}"/gtk/vmlinuz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/gtk/initrd.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/initrd.gz
- fi
- else
- mkdir -p "${DESTDIR}"/gtk
-
- wget --no-clobber -O "${DESTDIR}"/gtk/vmlinuz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/gtk/initrd.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/initrd.gz
- fi
- else
- mkdir -p "${DESTDIR}"/gtk
-
- wget --no-clobber -O "${DESTDIR}"/gtk/vmlinuz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/vmlinuz
- wget --no-clobber -O "${DESTDIR}"/gtk/initrd.gz "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DESTDIR_INSTALLER}"/gtk/initrd.gz
- fi
+ mkdir -p "${DESTDIR_GI}"
+ wget --no-clobber -O "${DESTDIR}"/"${VMLINUZ_GI}" "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DI}"/gtk/vmlinuz
+ wget --no-clobber -O "${DESTDIR}"/"${INITRD_GI}" "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/installer-"${LIVE_ARCHITECTURE}"/current/images/"${DI}"/gtk/initrd.gz
fi
-FIXME ()
-{
-# 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_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/debian-installer/binary-"${LIVE_ARCHITECTURE}"/Packages.gz
-gunzip -c Packages.gz > Packages
-cd "${OLDPWD}"
+# Downloading additional packages
+mkdir -p chroot/binary.deb/archives/partial
+mv chroot/var/lib/dpkg/status chroot/var/lib/dpkg/status.tmp
+touch chroot/var/lib/dpkg/status
-for DISTRIBUTION in frozen stable testing unstable
-do
- ln -s ${LIVE_DISTRIBUTION} binary/dists/${DISTRIBUTION}
-done
+case "${LIVE_ARCHITECTURE}" in
+ amd64)
+ DI_PACKAGES="linux-image-2.6-amd64 lilo grub"
+ ;;
-DEBS="`awk '/Filename: / { print $2 }' binary/dists/${LIVE_DISTRIBUTION}/main/debian-installer/binary-${LIVE_ARCHITECTURE}/Packages`"
-UDEBS="`echo ${DEBS} | grep '.*.udeb'`"
+ i386)
+ DI_PACKAGES="linux-image-2.6-486 linux-image-2.6-686 lilo grub"
+ ;;
-rm -f packages.di
+ powerpc)
+ DI_PACKAGES="linux-image-2.6-powerpc linux-image-2.6-powerpc64 linux-image-2.6-powerpc-smp linux-image-2.6-prep yaboot" # FIXME bootloader?
+ ;;
+esac
-for UDEB in ${UDEBS}
-do
- mkdir -p binary/`dirname ${UDEB}`
- cd binary/`dirname ${UDEB}`
- wget "${LIVE_MIRROR_BOOTSTRAP}"/${UDEB}
- cd "${OLDPWD}"
-done
+Chroot "apt-get -o Dir::Cache=/binary.deb --download-only install --yes ${DI_PACKAGES}"
+mv chroot/binary.deb ./
+mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status
-# Downloading debs
+# Including base debian packages
if [ -d cache/packages_bootstrap ]
then
- for FILE in cache/packages_bootstrap/*.deb
+ for FILE in cache/packages_bootstrap/*.deb binary.deb/archives/*.deb
do
- SOURCE="`dpkg -f ${FILE} Source`"
+ SOURCE="`dpkg -f ${FILE} Source | awk '{ print $1 }'`"
if [ -z "${SOURCE}" ]
then
@@ -220,85 +189,120 @@ then
done
fi
+# Generating deb indices
mkdir -p binary/dists/${LIVE_DISTRIBUTION}/main/binary-${LIVE_ARCHITECTURE}
+cd binary
+apt-ftparchive packages pool/main > dists/${LIVE_DISTRIBUTION}/main/binary-${LIVE_ARCHITECTURE}/Packages
+gzip -9 -c dists/${LIVE_DISTRIBUTION}/main/binary-${LIVE_ARCHITECTURE}/Packages > dists/${LIVE_DISTRIBUTION}/main/binary-${LIVE_ARCHITECTURE}/Packages.gz
+#apt-ftparchive sources pool/main > dists/${LIVE_DISTRIBUTION}/main/source/Sources
+#gzip -9 -c dists/${LIVE_DISTRIBUTION}/main/source/Sources > dists/${LIVE_DISTRIBUTION}/main/source/Sources
+cd "${OLDPWD}"
+
+# Writing release
cat > binary/dists/${LIVE_DISTRIBUTION}/main/binary-${LIVE_ARCHITECTURE}/Release << EOF
-Archive: ${LIVE_DISTRIBUTION}
+Archive: stable
+Version: 4.0r0
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
+#cat > binary/dists/${LIVE_DISTRIBUTION}/main/source/Release << EOF
+#Archive: stable
+#Version: 4.0r0
+#Component: main
+#Origin: Debian
+#Label: Debian
+#Architecture: source
+#EOF
-cd binary
-find pool -name "*.deb" | sort > ../cache/indices_debian-installer/filelist
+mkdir binary.udeb
+cd binary.udeb
+
+# Downloading udeb indices
+wget "${LIVE_MIRROR_BOOTSTRAP}"/dists/"${LIVE_DISTRIBUTION}"/main/debian-installer/binary-"${LIVE_ARCHITECTURE}"/Packages.gz
+gunzip -c Packages.gz > Packages
+
+# Sorting udebs
+UDEBS="`awk '/Filename: / { print $2 }' Packages`"
+
+# Downloading udebs
+DOWNLOAD=""
+for UDEB in ${UDEBS}
+do
+ DOWNLOAD="$DOWNLOAD ${LIVE_MIRROR_BOOTSTRAP}/${UDEB}"
+done
+echo $DOWNLOAD | xargs wget
+
+# Excluding udebs
+grep -v "^#" ${LH_BASE:-/usr/share/live-helper}/data/debian-cd/"${LIVE_DISTRIBUTION}"/udeb_exclude > exclude
+grep -v "^#" ${LH_BASE:-/usr/share/live-helper}/data/debian-cd/"${LIVE_DISTRIBUTION}"/exclude-udebs > exclude
+grep -v "^#" ${LH_BASE:-/usr/share/live-helper}/data/debian-cd/"${LIVE_DISTRIBUTION}"/exclude-udebs-${LIVE_ARCHITECTURE} >> exclude
+
+for EXCLUDE in `cat exclude`
+do
+ rm -f "${EXCLUDE}"_*.udeb
+done
+
+# 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/"${LIVE_DISTRIBUTION}"/main/debian-installer/binary-"${LIVE_ARCHITECTURE}"
+apt-ftparchive packages pool/main > dists/"${LIVE_DISTRIBUTION}"/main/debian-installer/binary-"${LIVE_ARCHITECTURE}"/Packages
+gzip -9 -c dists/${LIVE_DISTRIBUTION}/main/debian-installer/binary-${LIVE_ARCHITECTURE}/Packages > dists/${LIVE_DISTRIBUTION}/main/debian-installer/binary-${LIVE_ARCHITECTURE}/Packages.gz
+
+rm -f Packages* exclude
+find . | cpio -dmpu "${OLDPWD}"/binary
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
+rm -rf binary.udeb
+rm -rf binary.deb
+
+# Generating release file
+apt-ftparchive \
+ -o APT::FTPArchive::Release::Origin="Debian" \
+ -o APT::FTPArchive::Release::Label="Debian" \
+ -o APT::FTPArchive::Release::Suite="${LIVE_DISTRIBUTION}" \
+ -o APT::FTPArchive::Release::Version="4.0" \
+ -o APT::FTPArchive::Release::Codename="${LIVE_DISTRIBUTION}" \
+ -o APT::FTPArchive::Release::Date="`date -R`" \
+ -o APT::FTPArchive::Release::Architectures="${LIVE_ARCHITECTURE}" \
+ -o APT::FTPArchive::Release::Components="main" \
+ -o APT::FTPArchive::Release::Description="Last updated: `date -R`" \
+release binary/dists/${LIVE_DISTRIBUTION} > binary/dists/${LIVE_DISTRIBUTION}/Release
+
+# Creating dist symlinks
+for DISTRIBUTION in frozen stable testing unstable
+do
+ ln -s ${LIVE_DISTRIBUTION} binary/dists/${DISTRIBUTION}
+done
-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
-}
+ln -s . binary/debian
+# Creating disk info
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
+echo "Debian GNU/Linux ${LIVE_DISTRIBUTION} - Unofficial ${LIVE_ARCHITECTURE} LIVE Binary `date +%Y%m%d-%H:%M`" > binary/.disk/info
touch binary/.disk/mkisofs
+cat > binary/.disk/udeb_include << EOF
+netcfg
+ethdetect
+pcmcia-cs-udeb
+pcmciautils-udeb
+wireless-tools-udeb
+EOF
# Creating stage file
Create_stagefile .stage/binary_debian-installer