#!/bin/sh ## live-build(7) - System Build Scripts ## Copyright (C) 2006-2014 Daniel Baumann ## ## This program 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 [ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh # Setting static variables DESCRIPTION="$(Echo 'install local packages 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 Echo_message "Begin installing local package lists..." # Requiring stage file Require_stagefile .build/config .build/bootstrap # Checking stage file Check_stagefile .build/binary_package-lists # Checking lock file Check_lockfile .lock # Creating lock file Create_lockfile .lock case "${LB_MODE}" in progress-linux) DISTS="installer/dists" POOL="installer/pool" ;; *) DISTS="dists" POOL="pool" ;; esac if ls config/package-lists/*.list > /dev/null 2>&1 || \ ls config/package-lists/*.list.binary > /dev/null 2>&1 then case "${LB_BUILD_WITH_CHROOT}" in true) # Restoring cache Restore_cache cache/packages.chroot # Check depends Check_package chroot/usr/bin/apt-ftparchive apt-utils Check_package chroot/usr/bin/grep-aptavail dctrl-tools # Installing depends Install_package ;; false) if [ ! -e /usr/bin/apt-ftparchive ]; then # apt-utils Echo_error "/usr/bin/apt-ftparchive - no such file." exit 1 fi if [ ! -e /usr/bin/grep-aptavail ]; then # dctrl-tools Echo_error "/usr/bin/grep-aptavail - no such file." exit 1 fi ;; esac if [ -e "${LIVE_BUILD}/share/bin/Packages" ] then cp "${LIVE_BUILD}/share/bin/Packages" chroot/bin else cp /usr/share/live/build/bin/Packages chroot/bin fi 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 LIST in config/package-lists/*.list \ config/package-lists/*.list.binary do if [ -e "${LIST}" ] then # Generate package list Expand_packagelist "${LIST}" "config/package-lists" > chroot/root/"$(basename ${LIST})" # Downloading additional packages Chroot chroot "xargs --no-run-if-empty --arg-file=/root/$(basename ${LIST}) apt-get ${APT_OPTIONS} -o Dir::Cache=/binary.deb --download-only install" # Remove package list rm chroot/root/"$(basename ${LIST})" fi done for FILE in chroot/binary.deb/archives/*.deb do if [ ! -e ${FILE} ]; then break # Do nothing if the package lists were empty... fi SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')" SECTION="$(dpkg -f ${FILE} Section | 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 if echo "${SECTION}" | grep -qs contrib then SECTION="contrib" elif echo "${SECTION}" | grep -qs non-free then SECTION="non-free" else SECTION="main" fi # Install directory mkdir -p binary/${POOL}/${SECTION}/"${LETTER}"/"${SOURCE}" # Move files mv "${FILE}" binary/${POOL}/${SECTION}/"${LETTER}"/"${SOURCE}" done cd binary for SECTION in ${POOL}/* do SECTION="$(basename ${SECTION})" mkdir -p ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES} apt-ftparchive packages ${POOL}/${SECTION} > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages gzip -9 -c ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages.gz done cd "${OLDPWD}" rm -f chroot/bin/Packages rm -rf chroot/binary.deb mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status case "${LB_BUILD_WITH_CHROOT}" in true) # Removing depends Remove_package # Saving cache Save_cache cache/packages.chroot ;; esac # Creating stage file Create_stagefile .build/binary_package-lists fi