diff options
Diffstat (limited to 'helpers/lh_source_download')
-rwxr-xr-x | helpers/lh_source_download | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/helpers/lh_source_download b/helpers/lh_source_download new file mode 100755 index 000000000..0684d87de --- /dev/null +++ b/helpers/lh_source_download @@ -0,0 +1,67 @@ +#!/bin/sh + +# lh_source_download(1) - download sources + +set -e + +# Source common functions +for FUNCTION in /usr/share/live-helper/functions/*.sh +do + . ${FUNCTION} +done + +# Reading configuration files +Read_conffile config/common +Read_conffile config/image +Set_defaults + +if [ "${LIVE_SOURCE}" = "enabled" ] +then + # Requiring stage file + Require_stagefile "${LIVE_ROOT}"/.stage/bootstrap + + # Checking lock file + Check_lockfile "${LIVE_ROOT}"/.lock + + # Creating lock file + Create_lockfile "${LIVE_ROOT}"/.lock + + # Checking stage file + Check_stagefile "${LIVE_ROOT}"/.stage/source_download + + # Remove old sources + if [ "${LIVE_ROOT}"/source ] + then + rm -rf "${LIVE_ROOT}"/source + fi + + # Download sources + Chroot "dpkg --get-selections" | awk '{ print $1 }' > "${LIVE_CHROOT}"/root/dpkg-selection.txt + Chroot "xargs --arg-file=/root/dpkg-selection.txt apt-get source --download-only" + rm -f "${LIVE_CHROOT}"/root/dpkg-selection.txt + + # Sort sources + for DSC in "${LIVE_CHROOT}"/*.dsc + do + SOURCE="`awk '/Source:/ { print $2; }' ${DSC}`" + + if [ "`echo ${SOURCE} | cut -b 1-3`" == "lib" ] + then + LETTER="`echo ${SOURCE} | cut -b 1-4`" + else + LETTER="`echo ${SOURCE} | cut -b 1`" + fi + + # Install directory + install -d -m 0755 "${LIVE_ROOT}"/source/"${LETTER}"/"${SOURCE}" + + # Move files + mv "${LIVE_CHROOT}"/"${SOURCE}"_* "${LIVE_ROOT}"/source/"${LETTER}"/"${SOURCE}" + done + + # Copy system configuration + cp -a "${LIVE_ROOT}"/config "${LIVE_ROOT}"/source + + # Creating stage file + Create_stagefile "${LIVE_ROOT}"/.stage/source_download +fi |