summaryrefslogtreecommitdiffstats
path: root/system-build/scripts/build
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xsystem-build/scripts/build.sh45
-rwxr-xr-xsystem-build/scripts/build/binary106
-rwxr-xr-xsystem-build/scripts/build/binary_checksums96
-rwxr-xr-xsystem-build/scripts/build/binary_chroot101
-rwxr-xr-xsystem-build/scripts/build/binary_disk175
-rwxr-xr-xsystem-build/scripts/build/binary_grub-legacy288
-rwxr-xr-xsystem-build/scripts/build/binary_grub-pc263
-rwxr-xr-xsystem-build/scripts/build/binary_hdd348
-rwxr-xr-xsystem-build/scripts/build/binary_hooks81
-rwxr-xr-xsystem-build/scripts/build/binary_includes57
-rwxr-xr-xsystem-build/scripts/build/binary_iso220
-rwxr-xr-xsystem-build/scripts/build/binary_linux-image85
-rwxr-xr-xsystem-build/scripts/build/binary_loadlin102
-rwxr-xr-xsystem-build/scripts/build/binary_loopback_cfg341
-rwxr-xr-xsystem-build/scripts/build/binary_manifest68
-rwxr-xr-xsystem-build/scripts/build/binary_memtest120
-rwxr-xr-xsystem-build/scripts/build/binary_netboot113
-rwxr-xr-xsystem-build/scripts/build/binary_package-lists178
-rwxr-xr-xsystem-build/scripts/build/binary_rootfs462
-rwxr-xr-xsystem-build/scripts/build/binary_syslinux349
-rwxr-xr-xsystem-build/scripts/build/binary_tar73
-rwxr-xr-xsystem-build/scripts/build/binary_win32-loader135
-rwxr-xr-xsystem-build/scripts/build/binary_zsync130
-rwxr-xr-xsystem-build/scripts/build/bootstrap71
-rwxr-xr-xsystem-build/scripts/build/bootstrap_archive-keys77
-rwxr-xr-xsystem-build/scripts/build/bootstrap_archives273
-rwxr-xr-xsystem-build/scripts/build/bootstrap_cache86
-rwxr-xr-xsystem-build/scripts/build/bootstrap_debootstrap138
-rwxr-xr-xsystem-build/scripts/build/build84
-rwxr-xr-xsystem-build/scripts/build/chroot92
-rwxr-xr-xsystem-build/scripts/build/chroot_apt315
-rwxr-xr-xsystem-build/scripts/build/chroot_archives675
-rwxr-xr-xsystem-build/scripts/build/chroot_cache82
-rwxr-xr-xsystem-build/scripts/build/chroot_debianchroot81
-rwxr-xr-xsystem-build/scripts/build/chroot_devpts77
-rwxr-xr-xsystem-build/scripts/build/chroot_dpkg105
-rwxr-xr-xsystem-build/scripts/build/chroot_firmware124
-rwxr-xr-xsystem-build/scripts/build/chroot_hacks128
-rwxr-xr-xsystem-build/scripts/build/chroot_hooks119
-rwxr-xr-xsystem-build/scripts/build/chroot_hostname91
-rwxr-xr-xsystem-build/scripts/build/chroot_hosts97
-rwxr-xr-xsystem-build/scripts/build/chroot_includes50
-rwxr-xr-xsystem-build/scripts/build/chroot_install-packages94
-rwxr-xr-xsystem-build/scripts/build/chroot_interactive62
-rwxr-xr-xsystem-build/scripts/build/chroot_linux-image60
-rwxr-xr-xsystem-build/scripts/build/chroot_live-packages79
-rwxr-xr-xsystem-build/scripts/build/chroot_package-lists120
-rwxr-xr-xsystem-build/scripts/build/chroot_preseed72
-rwxr-xr-xsystem-build/scripts/build/chroot_proc81
-rwxr-xr-xsystem-build/scripts/build/chroot_resolv107
-rwxr-xr-xsystem-build/scripts/build/chroot_selinuxfs78
-rwxr-xr-xsystem-build/scripts/build/chroot_sysfs75
-rwxr-xr-xsystem-build/scripts/build/chroot_sysv-rc87
-rwxr-xr-xsystem-build/scripts/build/chroot_tmpfs80
-rwxr-xr-xsystem-build/scripts/build/clean166
-rwxr-xr-xsystem-build/scripts/build/config1379
-rwxr-xr-xsystem-build/scripts/build/installer75
-rwxr-xr-xsystem-build/scripts/build/installer_debian-installer829
-rwxr-xr-xsystem-build/scripts/build/installer_preseed72
-rwxr-xr-xsystem-build/scripts/build/source66
-rwxr-xr-xsystem-build/scripts/build/source_checksums101
-rwxr-xr-xsystem-build/scripts/build/source_debian207
-rwxr-xr-xsystem-build/scripts/build/source_debian-live62
-rwxr-xr-xsystem-build/scripts/build/source_disk123
-rwxr-xr-xsystem-build/scripts/build/source_hdd155
-rwxr-xr-xsystem-build/scripts/build/source_hooks81
-rwxr-xr-xsystem-build/scripts/build/source_iso122
-rwxr-xr-xsystem-build/scripts/build/source_live62
-rwxr-xr-xsystem-build/scripts/build/source_tar85
69 files changed, 11281 insertions, 0 deletions
diff --git a/system-build/scripts/build.sh b/system-build/scripts/build.sh
new file mode 100755
index 0000000..abeb29c
--- /dev/null
+++ b/system-build/scripts/build.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <http://www.gnu.org/licenses/>.
+##
+## The complete text of the GNU General Public License
+## can be found in /usr/share/common-licenses/GPL-3 file.
+
+
+set -e
+
+if [ -e local/live-build ]
+then
+ LIVE_BUILD="${LIVE_BUILD:-${PWD}/local/live-build}"
+ export LIVE_BUILD
+fi
+
+for _DIRECTORY in "${LIVE_BUILD}/functions" /usr/share/live/build/functions
+do
+ if [ -e "${_DIRECTORY}" ]
+ then
+ for _FILE in "${_DIRECTORY}"/*.sh
+ do
+ if [ -e "${_FILE}" ]
+ then
+ . "${_FILE}"
+ fi
+ done
+
+ break
+ fi
+done
diff --git a/system-build/scripts/build/binary b/system-build/scripts/build/binary
new file mode 100755
index 0000000..551431d
--- /dev/null
+++ b/system-build/scripts/build/binary
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+
+# Automatically populating config tree
+if [ -x auto/config ] && [ ! -e .build/config ]
+then
+ Echo_message "Automatically populating config tree."
+ lb config
+fi
+
+# Setting static variables
+DESCRIPTION="$(Echo 'build binary images')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Setup cleanup function
+Setup_cleanup
+
+# Preparing root filesystem
+lb binary_chroot ${@}
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
+then
+ # Configuring chroot
+ lb chroot_devpts install ${@}
+ lb chroot_proc install ${@}
+ lb chroot_selinuxfs install ${@}
+ lb chroot_sysfs install ${@}
+ lb chroot_hosts install ${@}
+ lb chroot_resolv install ${@}
+ lb chroot_hostname install ${@}
+ lb chroot_sysv-rc install ${@}
+ lb chroot_apt install-binary ${@}
+ lb chroot_archives chroot install ${@}
+fi
+
+# Building root filesystem
+lb binary_rootfs ${@}
+lb binary_manifest ${@}
+
+# Prepare images
+lb binary_package-lists ${@}
+lb binary_linux-image ${@}
+lb binary_memtest ${@}
+lb binary_grub-legacy ${@}
+lb binary_grub-pc ${@}
+lb binary_loopback_cfg ${@}
+lb binary_syslinux ${@}
+lb binary_disk ${@}
+lb binary_loadlin ${@}
+lb binary_win32-loader ${@}
+lb binary_includes ${@}
+lb binary_hooks ${@}
+lb binary_checksums ${@}
+
+if [ "${LB_BUILD_WITH_CHROOT}" != "true" ]
+then
+ lb chroot_devpts install ${@}
+ lb chroot_proc install ${@}
+ lb chroot_selinuxfs install ${@}
+ lb chroot_sysfs install ${@}
+fi
+
+# Building images
+lb binary_iso ${@}
+lb binary_netboot ${@}
+lb binary_tar ${@}
+lb binary_hdd ${@}
+
+lb binary_zsync ${@}
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
+then
+ # Deconfiguring chroot
+ rm -f .build/chroot_archives
+ lb chroot_apt remove ${@}
+ lb chroot_hostname remove ${@}
+ lb chroot_resolv remove ${@}
+ lb chroot_hosts remove ${@}
+ lb chroot_sysv-rc remove ${@}
+ lb chroot_dpkg remove ${@}
+ lb chroot_debianchroot remove ${@}
+fi
+
+lb chroot_sysfs remove ${@}
+lb chroot_selinuxfs remove ${@}
+lb chroot_proc remove ${@}
+lb chroot_devpts remove ${@}
diff --git a/system-build/scripts/build/binary_checksums b/system-build/scripts/build/binary_checksums
new file mode 100755
index 0000000..a64334e
--- /dev/null
+++ b/system-build/scripts/build/binary_checksums
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'create binary checksums')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_CHECKSUMS}" = "none" ]
+then
+ exit 0
+fi
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_checksums
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+for CHECKSUM in ${LB_CHECKSUMS}
+do
+ case "${LB_MODE}" in
+ progress-linux)
+ CHECKSUMS="$(echo ${CHECKSUM} | tr [a-z] [A-Z])SUMS"
+ ;;
+
+ *)
+ CHECKSUMS="${CHECKSUM}sum.txt"
+ ;;
+ esac
+
+ Echo_message "Begin creating binary ${CHECKSUMS}..."
+
+ # Remove old checksums
+ if [ -f binary/${CHECKSUMS} ]
+ then
+ rm -f binary/${CHECKSUMS}
+ fi
+
+ # Calculating checksums
+ cd binary
+ find . -type f \
+ \! -path './isolinux/isolinux.bin' \
+ \! -path './boot/boot.bin' \
+ \! -path './boot/grub/stage2_eltorito' \
+ \! -path './*SUMS' \
+ \! -path './*sum.txt' \
+ -print0 | sort -z | xargs -0 ${CHECKSUM}sum > ../${CHECKSUMS}
+
+cat > ${CHECKSUMS} << EOF
+## This file contains the list of ${CHECKSUM} checksums of all files on this
+## medium.
+##
+## You can verify them automatically with the 'verify-checksums' boot parameter,
+## or, manually with: '${CHECKSUM}sum -c ${CHECKSUMS}'.
+##
+##
+EOF
+
+ cat ../${CHECKSUMS} >> ${CHECKSUMS}
+ rm -f ../${CHECKSUMS}
+
+ cd "${OLDPWD}"
+done
+
+# File list
+cd binary
+find . | sed -e 's|^.||g' | grep "^/" | sort > ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.contents
+cd "${OLDPWD}"
+
+# Creating stage file
+Create_stagefile .build/binary_checksums
diff --git a/system-build/scripts/build/binary_chroot b/system-build/scripts/build/binary_chroot
new file mode 100755
index 0000000..d809b7f
--- /dev/null
+++ b/system-build/scripts/build/binary_chroot
@@ -0,0 +1,101 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'copy chroot into chroot')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin copying chroot..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_chroot
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Normally, virtual filesystems are not mounted here, but people tend to be lazy
+if [ -f chroot/proc/version ]
+then
+ umount chroot/proc
+fi
+
+if [ -d chroot/sys/kernel ]
+then
+ umount chroot/sys
+fi
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "false" ]
+then
+ exit 0
+fi
+
+if [ "${LB_CACHE}" = "true" ] && Find_files cache/binary_rootfs/filesystem*
+then
+ exit 0
+fi
+
+Echo_message "This may take a while."
+
+# Removing old chroot
+rm -rf chroot/chroot
+rm -rf chroot.tmp
+
+# Copying new chroot
+if [ -d cache/bootstrap ] && [ "${LB_CHROOT_FILESYSTEM}" != "none" ] && [ "${LB_CHROOT_FILESYSTEM}" != "plain" ]
+then
+ mv chroot chroot.tmp
+ cp -a cache/bootstrap chroot
+ touch chroot/chroot.cache
+else
+ cp -a chroot chroot.tmp
+fi
+
+mv chroot.tmp chroot/chroot
+
+# Handling chroot excludes
+if [ -f config/rootfs/excludes ] && [ "${LB_CHROOT_FILESYSTEM}" != "squashfs" ]
+then
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ cp config/rootfs/excludes chroot/chroot/excludes
+ # Not using Chroot() here because we want explicitly /bin/bash (for the time being)
+ chroot chroot/chroot /usr/bin/env -i xargs --arg-file=/excludes -I FILE bash -c 'rm -rf FILE'
+ rm -f chroot/chroot/excludes
+ ;;
+
+ false)
+ cp config/rootfs/excludes chroot/excludes
+ # Not using Chroot() here because we want explicitly /bin/bash (for the time being)
+ chroot chroot /usr/bin/env -i xargs --arg-file=/excludes -I FILE bash -c 'rm -rf FILE'
+ rm -f chroot/excludes
+ ;;
+ esac
+fi
+
+# Creating stage file
+Create_stagefile .build/binary_chroot
diff --git a/system-build/scripts/build/binary_disk b/system-build/scripts/build/binary_disk
new file mode 100755
index 0000000..7ddcc35
--- /dev/null
+++ b/system-build/scripts/build/binary_disk
@@ -0,0 +1,175 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 disk information into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+case "${LIVE_IMAGE_TYPE}" in
+ iso*|hdd*)
+ ;;
+ *)
+ exit 0
+ ;;
+esac
+
+Echo_message "Begin installing disk information..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_disk
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+mkdir -p binary/.disk
+
+ARCHITECTURE="$(echo ${LB_ARCHITECTURES} | sed -e 's| |/|g')"
+DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | cut -b 1 | tr '[a-z]' '[A-Z]')"
+DISTRIBUTION="${DISTRIBUTION}$(echo ${LB_DISTRIBUTION} | cut -b 2-)"
+
+if [ -e chroot/etc/os-release ]
+then
+ VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})"
+fi
+
+VERSION="${VERSION:-none}"
+
+case "${LB_MODE}" in
+ debian)
+ TITLE="Debian GNU/Linux"
+ STRING="Official Snapshot ${ARCHITECTURE}"
+ TRACE="project/trace/ftp-master.debian.org"
+ ;;
+
+ progress-linux)
+ TITLE="Progress Linux"
+ STRING="${VERSION} (${DISTRIBUTION}) - ${ARCHITECTURE}"
+ TRACE="project/trace/archive-master.progress-linux.org"
+ ;;
+
+ *)
+ TITLE="Debian GNU/Linux"
+ STRING="Snapshot ${ARCHITECTURE}"
+ TRACE=""
+ ;;
+esac
+
+if [ -n "${TRACE}" ]
+then
+ case "${LB_DERIVATIVE}" in
+ true)
+ echo "$(echo ${LB_PARENT_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \
+ > binary/.disk/archive_trace
+
+ echo "$(echo ${LB_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \
+ >> binary/.disk/archive_trace
+ ;;
+
+ false)
+ echo "$(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \
+ > binary/.disk/archive_trace
+ ;;
+ esac
+fi
+
+case "${LB_DEBIAN_INSTALLER}" in
+ cdrom)
+ echo "main" > binary/.disk/base_components
+
+ touch binary/.disk/base_installable
+
+ echo "full_cd" > binary/.disk/cd_type
+
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/CD Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info
+
+ for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd
+ do
+ if [ -e "${LOCATION}" ]
+ then
+ cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_udeb_include" binary/.disk/udeb_include
+
+ continue
+ fi
+ done
+ ;;
+
+ true|netinst|live)
+ echo "main" > binary/.disk/base_components
+
+ touch binary/.disk/base_installable
+
+ if [ "${LB_DEBIAN_INSTALLER}" = "live" ]
+ then
+ echo "live" > binary/.disk/cd_type
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/INSTALL Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info
+ else
+ echo "not_complete" > binary/.disk/cd_type
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/NETINST Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info
+ fi
+
+ for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd
+ do
+ if [ -e "${LOCATION}" ]
+ then
+ cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_netinst_udeb_include" binary/.disk/udeb_include
+
+ continue
+ fi
+ done
+
+ if [ "${LB_DEBIAN_INSTALLER}" = "live" ]
+ then
+ echo "live-installer" >> binary/.disk/udeb_include
+ fi
+ ;;
+
+ businesscard)
+ echo "main" > binary/.disk/base_components
+
+ echo "not_complete" > binary/.disk/cd_type
+
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/BC Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info
+
+ for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd
+ do
+ if [ -e "${LOCATION}" ]
+ then
+ cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_businesscard_udeb_include" binary/.disk/udeb_include
+
+ continue
+ fi
+ done
+ ;;
+
+ false)
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/binary_disk
diff --git a/system-build/scripts/build/binary_grub-legacy b/system-build/scripts/build/binary_grub-legacy
new file mode 100755
index 0000000..a9fb74b
--- /dev/null
+++ b/system-build/scripts/build/binary_grub-legacy
@@ -0,0 +1,288 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'installs grub-legacy into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+FOUND_MYSELF=""
+IFS=","
+for BOOTLOADER in ${LB_BOOTLOADERS}
+do
+
+ case ${BOOTLOADER} in
+ "grub-legacy" )
+ FOUND_MYSELF="True"
+ break ;;
+ esac
+
+done
+
+if [ -z ${FOUND_MYSELF} ] ; then
+ exit 0
+fi
+
+Echo_message "Begin installing grub-legacy..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_grub-legacy
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Check architecture
+Check_architectures amd64 i386
+Check_crossarchitectures
+
+# Checking depends
+Check_package chroot /usr/sbin/grub grub-legacy
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+# Local functions
+Grub_live_entry ()
+{
+ LABEL="${1}"
+ KERNEL="${2}"
+ INITRD="${3}"
+ APPEND="${4}"
+
+ LINUX_LIVE="${LINUX_LIVE}\ntitle\t\tDebian GNU/Linux - ${LABEL}"
+ LINUX_LIVE="${LINUX_LIVE}\nkernel\t\t/${KERNEL} ${INITFS:+boot=${INITFS} }config LB_BOOTAPPEND_LIVE ${APPEND}"
+ LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}"
+}
+
+Grub_install_entry ()
+{
+ LABEL="${1}"
+ KERNEL="${2}"
+ INITRD="${3}"
+ APPEND="${4}"
+
+ QAPPEND="quiet"
+
+ for TYPE in Install Expert Rescue Auto
+ do
+ case "${TYPE}" in
+ Install)
+ TAPPEND="${APPEND} ${QAPPEND}"
+ ;;
+
+ Expert)
+ TAPPEND="priority=low ${APPEND}"
+ ;;
+
+ Rescue)
+ TAPPEND="rescue/enable=true ${APPEND} ${QAPPEND}"
+ ;;
+
+ Auto)
+ TAPPEND="auto=true priority=critical ${APPEND} ${QAPPEND}"
+ ;;
+ esac
+
+ case "${LABEL}" in
+ Text)
+ TYPE_SUFFIX=""
+ ;;
+ GUI)
+ TYPE_SUFFIX="gui"
+ ;;
+ esac
+
+
+ LINUX_INSTALL="${LINUX_INSTALL}\ntitle\t\t${LABEL} ${TYPE}"
+ LINUX_INSTALL="${LINUX_INSTALL}\nkernel\t\t/${KERNEL} ${TAPPEND} ${LB_BOOTAPPEND_INSTALL}"
+ LINUX_INSTALL="${LINUX_INSTALL}\ninitrd\t\t/${INITRD}"
+ done
+}
+
+if [ -e "config/bootloaders/grub-legacy" ]
+then
+ # Internal local copy
+ _SOURCE="config/bootloaders/grub-legacy"
+else
+ # Internal system copy
+ if [ -n "${LIVE_BUILD}" ]
+ then
+ _SOURCE="${LIVE_BUILD}/share/bootloaders/grub-legacy"
+ else
+ _SOURCE="/usr/share/live/build/bootloaders/grub-legacy"
+ fi
+fi
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ INITFS="live"
+ ;;
+
+ *)
+ INITFS=""
+ ;;
+esac
+
+# Setting destination directory
+case "${LIVE_IMAGE_TYPE}" in
+ iso*|tar)
+ case "${LB_INITRAMFS}" in
+ system-boot)
+ DESTDIR_LIVE="binary/live"
+ ;;
+
+ *)
+ DESTDIR_LIVE="binary/boot"
+ ;;
+ esac
+
+ DESTDIR_INSTALL="binary/install"
+ ;;
+
+ hdd*|netboot)
+ Echo_warning "Bootloader in this image type not yet supported by live-build."
+ Echo_warning "This would produce a not bootable image, aborting (FIXME)."
+ exit 1
+ ;;
+esac
+
+Check_multiarchitectures
+
+# Creating directory
+mkdir -p "${DESTDIR_LIVE}"
+
+# Setting boot parameters
+if [ "${LB_UNION_FILESYSTEM}" != "aufs" ]
+then
+ LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} union=${LB_UNION_FILESYSTEM}"
+fi
+
+if [ -n "${LB_NET_COW_PATH}" ]
+then
+ Echo_error "Net cow not yet supported on grub-legacy"
+ exit 1
+fi
+
+LB_BOOTAPPEND_LIVE="$(echo ${LB_BOOTAPPEND_LIVE} | sed -e 's| ||')"
+
+# Assembling kernel configuration
+
+# Default entries
+DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
+DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})"
+DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')"
+
+Grub_live_entry "live" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}"
+
+if [ "${LB_BOOTAPPEND_FAILSAFE}" != "none" ]
+then
+ Grub_live_entry "live (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}" "${LB_BOOTAPPEND_FAILSAFE}"
+fi
+
+for KERNEL in chroot/boot/vmlinuz-*
+do
+ VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
+
+ Grub_live_entry "live, kernel ${VERSION}" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}"
+ Grub_live_entry "live, kernel ${VERSION} (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}" "${LB_BOOTAPPEND_FAILSAFE}"
+done
+
+LINUX_LIVE="$(/bin/echo ${LINUX_LIVE} | sed -e 's|binary||g' -e 's|//|/|g')"
+
+# Assembling debian-installer configuration
+if [ "${LB_DEBIAN_INSTALLER}" != "false" ]
+then
+ LINUX_LIVE="title\t\tLive:\nroot\n\n${LINUX_LIVE}"
+ LINUX_INSTALL="title\t\tInstaller:\nroot"
+
+ VMLINUZ_DI="install/vmlinuz"
+ INITRD_DI="install/initrd.gz"
+ APPEND_DI="vga=normal"
+
+ VMLINUZ_GI="install/gtk/vmlinuz"
+ INITRD_GI="install/gtk/initrd.gz"
+ APPEND_GI="video=vesa:ywrap,mtrr vga=788"
+
+ if [ -f "binary/${VMLINUZ_DI}" ] && [ -f "binary/${INITRD_DI}" ]
+ then
+ Grub_install_entry "Text" "${VMLINUZ_DI}" "${INITRD_DI}" "${APPEND_DI}"
+ fi
+
+ if [ -f "binary/${VMLINUZ_GI}" ] && [ -f "binary/${INITRD_GI}" ]
+ then
+ Grub_install_entry "GUI" "${VMLINUZ_GI}" "${INITRD_GI}" "${APPEND_GI}"
+ fi
+fi
+
+LINUX_INSTALL="$(/bin/echo ${LINUX_INSTALL} | sed -e 's|binary||g' -e 's|//|/|g')"
+
+# Assembling memtest configuration
+if [ -f "${DESTDIR_LIVE}"/memtest ]
+then
+ MEMTEST="title\t\tOther:\nroot"
+ MEMTEST="${MEMTEST}\n\ntitle\t\t${LB_MEMTEST}\nkernel\t\t/$(basename ${DESTDIR_LIVE})/memtest"
+ MEMTEST="$(/bin/echo ${MEMTEST} | sed -e 's|//|/|g')"
+fi
+
+# Copying templates
+mkdir -p binary/boot/grub
+cp -r "${_SOURCE}"/* binary/boot/grub
+
+case ${LIVE_IMAGE_TYPE} in
+ iso*)
+ FILES="chroot/usr/lib/grub/*/stage2_eltorito"
+ ;;
+
+ hdd*|tar)
+ FILES="chroot/usr/lib/grub/*/stage1 chroot/usr/lib/grub/*/e2fs_stage1_5 chroot/usr/lib/grub/*/stage2"
+ ;;
+esac
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "false" ]
+then
+ FILES="$(echo ${FILES} | sed -e 's|chroot||g')"
+fi
+
+# Copying grub
+cp ${FILES} binary/boot/grub
+
+sed -i -e "s|LINUX_LIVE|${LINUX_LIVE}|" -e "s|LINUX_INSTALL|${LINUX_INSTALL}|" -e "s|MEMTEST|${MEMTEST}|" binary/boot/grub/menu.lst
+sed -i -e "s#LB_BOOTAPPEND_INSTALL#${LB_BOOTAPPEND_INSTALL}#" -e "s#LB_BOOTAPPEND_LIVE#${LB_BOOTAPPEND_LIVE}#" binary/boot/grub/menu.lst
+
+sed -i -e 's|\ $||g' binary/boot/grub/menu.lst
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/binary_grub
diff --git a/system-build/scripts/build/binary_grub-pc b/system-build/scripts/build/binary_grub-pc
new file mode 100755
index 0000000..f3a6450
--- /dev/null
+++ b/system-build/scripts/build/binary_grub-pc
@@ -0,0 +1,263 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'installs grub-pc into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+FOUND_MYSELF=""
+OLDIFS="$IFS"
+IFS=","
+for BOOTLOADER in ${LB_BOOTLOADERS}
+do
+
+ case ${BOOTLOADER} in
+ "grub-pc" )
+ FOUND_MYSELF="True"
+ break ;;
+ esac
+
+done
+IFS="$OLDIFS"
+
+if [ -z ${FOUND_MYSELF} ] ; then
+ exit 0
+fi
+
+Echo_message "Begin installing grub-pc..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_grub
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Check architecture
+Check_architectures amd64 i386
+Check_crossarchitectures
+
+# Checking depends
+Check_package chroot /usr/bin/grub-mkimage grub-pc
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+# Local functions
+Grub_live_entry ()
+{
+ LABEL="${1}"
+ KERNEL="${2}"
+ INITRD="${3}"
+ APPEND="${4}"
+
+ LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {"
+ LINUX_LIVE="${LINUX_LIVE}\nlinux\t\t/${KERNEL} ${INITFS:+boot=${INITFS} }config LB_BOOTAPPEND_LIVE ${APPEND}"
+ LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}"
+ LINUX_LIVE="${LINUX_LIVE}\n}"
+}
+
+Grub_install_entry ()
+{
+ LABEL="${1}"
+ KERNEL="${2}"
+ INITRD="${3}"
+ APPEND="${4}"
+
+ if [ "${LABEL}" != "rescue" ] && [ "${LABEL}" != "rescuegui" ]
+ then
+ APPEND="${APPEND} quiet"
+ fi
+
+ LINUX_INSTALL="${LINUX_INSTALL}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {"
+ LINUX_INSTALL="${LINUX_INSTALL}\nlinux\t\t/${KERNEL} ${APPEND} LB_BOOTAPPEND_INSTALL"
+ LINUX_INSTALL="${LINUX_INSTALL}\ninitrd\t\t/${INITRD}"
+ LINUX_INSTALL="${LINUX_INSTALL}\n}"
+}
+
+if [ -e "config/bootloaders/grub-pc" ]
+then
+ # Internal local copy
+ _SOURCE="config/bootloaders/grub-pc"
+else
+ # Internal system copy
+ if [ -n "${LIVE_BUILD}" ]
+ then
+ _SOURCE="${LIVE_BUILD}/share/bootloaders/grub-pc"
+ else
+ _SOURCE="/usr/share/live/build/bootloaders/grub-pc"
+ fi
+fi
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ INITFS="live"
+ ;;
+
+ *)
+ INITFS=""
+ ;;
+esac
+
+# Setting destination directory
+case "${LIVE_IMAGE_TYPE}" in
+ iso*|tar)
+ case "${LB_INITRAMFS}" in
+ system-boot)
+ DESTDIR_LIVE="binary/live"
+ ;;
+
+ *)
+ DESTDIR_LIVE="binary/live"
+ ;;
+ esac
+
+ DESTDIR_INSTALL="binary/install"
+ ;;
+
+ hdd*|netboot)
+ Echo_warning "Bootloader in this image type not yet supported by live-build."
+ Echo_warning "This would produce a not bootable image, aborting (FIXME)."
+ exit 1
+ ;;
+esac
+
+Check_multiarchitectures
+
+# Creating directory
+mkdir -p "${DESTDIR_LIVE}"
+
+# Setting boot parameters
+if [ "${LB_UNION_FILESYSTEM}" != "aufs" ]
+then
+ LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} union=${LB_UNION_FILESYSTEM}"
+fi
+
+if [ -n "${LB_NET_COW_PATH}" ]
+then
+ Echo_error "Net cow not yet supported on grub"
+ exit 1
+fi
+
+LB_BOOTAPPEND_LIVE="$(echo ${LB_BOOTAPPEND_LIVE} | sed -e 's| ||')"
+
+# Assembling kernel configuration
+
+# Default entries
+DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
+DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})"
+DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')"
+
+Grub_live_entry "live" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}"
+
+if [ "${LB_BOOTAPPEND_FAILSAFE}" != "none" ]
+then
+ Grub_live_entry "live (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}" "${LB_BOOTAPPEND_FAILSAFE}"
+fi
+
+for KERNEL in chroot/boot/vmlinuz-*
+do
+ VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
+
+ Grub_live_entry "live, kernel ${VERSION}" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}"
+ Grub_live_entry "live, kernel ${VERSION} (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}" "${LB_BOOTAPPEND_FAILSAFE}"
+done
+
+LINUX_LIVE="$(/bin/echo ${LINUX_LIVE} | sed -e 's|binary||g' -e 's|//|/|g')"
+
+# Assembling debian-installer configuration
+if [ "${LB_DEBIAN_INSTALLER}" != "false" ]
+then
+ LINUX_LIVE="#\t \"Live\"\n${LINUX_LIVE}"
+ LINUX_INSTALL="#\t \"Installer\"\n"
+
+ VMLINUZ_DI="install/vmlinuz"
+ INITRD_DI="install/initrd.gz"
+ APPEND_DI="vga=normal"
+
+ VMLINUZ_GI="install/gtk/vmlinuz"
+ INITRD_GI="install/gtk/initrd.gz"
+ APPEND_GI="video=vesa:ywrap,mtrr vga=788"
+
+ Grub_install_entry "install" "${VMLINUZ_DI}" "${INITRD_DI}" "${APPEND_DI}"
+ Grub_install_entry "installgui" "${VMLINUZ_GI}" "${INITRD_GI}" "${APPEND_GI}"
+ Grub_install_entry "expert" "${VMLINUZ_DI}" "${INITRD_DI}" "priority=low ${APPEND_DI}"
+ Grub_install_entry "expertgui" "${VMLINUZ_GI}" "${INITRD_GI}" "priority=low ${APPEND_GI}"
+ Grub_install_entry "rescue" "${VMLINUZ_DI}" "${INITRD_DI}" "rescue/enable=true ${APPEND_DI}"
+ Grub_install_entry "rescuegui" "${VMLINUZ_GI}" "${INITRD_GI}" "rescue/enable=true ${APPEND_GI}"
+ Grub_install_entry "auto" "${VMLINUZ_DI}" "${INITRD_DI}" "auto=true priority=critical ${APPEND_DI}"
+ Grub_install_entry "autogui" "${VMLINUZ_GI}" "${INITRD_GI}" "auto=true priority=critical ${APPEND_GI}"
+fi
+
+LINUX_INSTALL="$(/bin/echo ${LINUX_INSTALL} | sed -e 's|binary||g' -e 's|//|/|g')"
+
+# Assembling memtest configuration
+if [ -f "${DESTDIR_LIVE}"/memtest ]
+then
+ MEMTEST="#\t \"Other\"\n"
+ MEMTEST="${MEMTEST}\nmenuentry\t\"${LB_MEMTEST}\" {\nlinux16\t$(basename ${DESTDIR_LIVE})/memtest\n}"
+ MEMTEST="$(/bin/echo ${MEMTEST} | sed -e 's|//|/|g')"
+fi
+
+# Copying templates
+mkdir -p binary/boot/grub/i386-pc
+cp -r "${_SOURCE}"/* binary/boot/grub
+
+case ${LIVE_IMAGE_TYPE} in
+ iso*)
+ FILES="chroot/usr/lib/grub/i386-pc/*.mod chroot/usr/lib/grub/i386-pc/*.lst chroot/usr/lib/grub/i386-pc/efiemu??.o chroot/usr/share/grub/*.pf2"
+ ;;
+
+ hdd*|tar)
+ FILES="chroot/usr/lib/grub/i386-pc/*"
+ ;;
+esac
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "false" ]
+then
+ FILES="$(echo ${FILES} | sed -e 's|chroot||g')"
+fi
+
+# Copying grub
+cp ${FILES} binary/boot/grub/i386-pc
+
+sed -i -e "s|LINUX_LIVE|${LINUX_LIVE}|" -e "s|LINUX_INSTALL|${LINUX_INSTALL}|" -e "s|MEMTEST|${MEMTEST}|" binary/boot/grub/grub.cfg
+sed -i -e "s#LB_BOOTAPPEND_INSTALL#${LB_BOOTAPPEND_INSTALL}#" -e "s#LB_BOOTAPPEND_LIVE#${LB_BOOTAPPEND_LIVE}#" binary/boot/grub/grub.cfg
+
+sed -i -e 's|\ $||g' binary/boot/grub/grub.cfg
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/binary_grub
diff --git a/system-build/scripts/build/binary_hdd b/system-build/scripts/build/binary_hdd
new file mode 100755
index 0000000..1e7489c
--- /dev/null
+++ b/system-build/scripts/build/binary_hdd
@@ -0,0 +1,348 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build binary image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if ! In_list hdd "${LIVE_IMAGE_TYPE}"
+then
+ exit 0
+fi
+
+Echo_message "Begin building binary hdd image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap .build/chroot_proc
+
+# Checking stage file
+Check_stagefile .build/binary_hdd
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+case "${LB_BINARY_FILESYSTEM}" in
+ fat*)
+ Check_package chroot /sbin/mkdosfs dosfstools
+ ;;
+
+ ntfs)
+ Check_package chroot /sbin/mkfs.nfts ntfs-3g
+ ;;
+esac
+
+Check_package chroot /usr/share/doc/mtools mtools
+Check_package chroot /sbin/parted parted
+
+echo "${LB_BOOTLOADERS}" | \
+while IFS="," read -r BOOTLOADER
+do
+ case "${BOOTLOADER}" in
+ grub)
+ Check_package chroot /usr/sbin/grub grub
+ ;;
+ esac
+done
+
+LB_PRIMARY_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }')
+
+case ${LB_PRIMARY_BOOTLOADER} in
+ syslinux)
+ case ${LB_BINARY_FILESYSTEM} in
+ fat*|ntfs)
+ _BOOTLOADER=syslinux
+ ;;
+ ext[234]|btrfs)
+ _BOOTLOADER=extlinux
+ ;;
+ *)
+ Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}"
+ exit 1
+ ;;
+ esac
+ Check_package chroot /usr/bin/${_BOOTLOADER} ${_BOOTLOADER}
+ ;;
+esac
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+# Remove old binary
+if [ -f ${LIVE_iMAGE_NAME}.img ]
+then
+ rm -f ${LIVE_iMAGE_NAME}.img
+fi
+
+# Enforce fat32 if we find individual files bigger than 2GB
+if [ "${LB_BINARY_FILESYSTEM}" = "fat16" ] && [ -n "$(find binary -size +1999M)" ]
+then
+ Echo_warning "FAT16 doesn't support files larger than 2GB, automatically enforcing FAT32."
+
+ LB_BINARY_FILESYSTEM="fat32"
+ export LB_BINARY_FILESYSTEM
+fi
+
+# Enforce fat32 if we have images in total bigger than 2GB
+if [ "${LB_BINARY_FILESYSTEM}" = "fat16" ] && [ "$(du -s binary | awk '{ print $1 }')" -gt "1900000" ]
+then
+ Echo_warning "FAT16 doesn't support partitions larger than 2GB, automatically enforcing FAT32"
+
+ LB_BINARY_FILESYSTEM="fat32"
+ export LB_BINARY_FILESYSTEM
+fi
+
+# Enforce ntfs if we find individual files bigger than 4GB
+if [ "${LB_BINARY_FILESYSTEM}" = "fat32" ] && [ -n "$(find binary -size +3999M)" ]
+then
+ Echo_warning "FAT32 doesn't support files larger than 4GB, automatically enforcing NTFS."
+
+ LB_BINARY_FILESYSTEM="ntfs"
+ export LB_BINARY_FILESYSTEM
+fi
+
+# Everything which comes here needs to be cleaned up,
+if [ "$LB_HDD_SIZE" = "auto" ];
+then
+ DU_DIM="$(du -ms binary | cut -f1)"
+ REAL_DIM="$(Calculate_partition_size ${DU_DIM} ${LB_BINARY_FILESYSTEM})"
+else
+ REAL_DIM=$LB_HDD_SIZE
+fi
+
+dd if=/dev/zero of=chroot/binary.img bs=1024k count=0 seek=${REAL_DIM}
+FREELO="$(${LB_LOSETUP} -f)"
+if [ ! -b chroot/${FREELO} ]
+then
+ MAKEDEV="true"
+
+ mv chroot/dev chroot/dev.tmp
+ find /dev | cpio -dmpu chroot
+fi
+
+echo "!!! The following error/warning messages can be ignored !!!"
+Losetup $FREELO chroot/binary.img 0
+
+PARTITION_TABLE_TYPE="msdos"
+
+case "${LB_BINARY_FILESYSTEM}" in
+ ext2|ext3|ext4)
+ PARTITION_TYPE="ext2"
+ ;;
+
+ fat16|fat32)
+ PARTITION_TYPE="${LB_BINARY_FILESYSTEM}"
+ ;;
+
+ ntfs)
+ PARTITION_TYPE="NTFS"
+ ;;
+
+ *)
+ Echo_error "Unsupported binary filesystem %s" "${LB_BINARY_FILESYSTEM}"
+ exit 1
+ ;;
+esac
+
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ Chroot chroot "parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE}" || true
+ if [ "x${LB_HDD_PARTITION_START}" = "x" ];
+ then
+ Chroot chroot "parted -a optimal -s ${FREELO} mkpart primary\
+ ${PARTITION_TYPE} 0% 100%" || true
+ else
+ Echo_message "using partition start at ${LB_HDD_PARTITION_START}"
+ Chroot chroot "parted -s ${FREELO} mkpart primary ${PARTITION_TYPE}\
+ ${LB_HDD_PARTITION_START} 100%" || true
+ fi
+ Chroot chroot "parted -s ${FREELO} set 1 boot on" || true
+ Chroot chroot "parted -s ${FREELO} set 1 lba off" || true
+
+ if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ]
+ then
+ dd if=chroot/usr/lib/SYSLINUX/mbr.bin of=${FREELO} bs=440 count=1
+ fi
+ ;;
+
+ false)
+ parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE} || true
+ if [ "x${LB_HDD_PARTITION_START}" = "x" ];
+ then
+ parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE}\
+ 0% 100% || true
+ else
+ Echo_message "using partition start at ${LB_HDD_PARTITION_START}"
+ parted -s ${FREELO} mkpart primary ${PARTITION_TYPE}\
+ ${LB_HDD_PARTITION_START} 100% || true
+ fi
+ parted -s "${FREELO}" set 1 boot on || true
+ parted -s "${FREELO}" set 1 lba off || true
+
+ if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ]
+ then
+ dd if=/usr/lib/SYSLINUX/mbr.bin of=${FREELO} bs=440 count=1
+ fi
+ ;;
+esac
+
+Lodetach ${FREELO}
+
+FREELO="$(${LB_LOSETUP} -f)"
+Losetup $FREELO chroot/binary.img 1
+
+case "${LB_BINARY_FILESYSTEM}" in
+ ext2|ext3|ext4)
+ MKFS="${LB_BINARY_FILESYSTEM}"
+ MKFS_OPTIONS="-L ${LB_HDD_LABEL} -m 0 -O ^64bit"
+ MOUNT_OPTIONS=""
+ ;;
+
+ fat16)
+ MKFS="vfat"
+ MKFS_OPTIONS="-F 16 -n ${LB_HDD_LABEL}"
+ MOUNT_OPTIONS=""
+ ;;
+
+ fat32)
+ MKFS="vfat"
+ MKFS_OPTIONS="-F 32 -n ${LB_HDD_LABEL}"
+ MOUNT_OPTIONS=""
+ ;;
+
+ ntfs)
+ MKFS="ntfs"
+ MKFS_OPTIONS="-L ${LB_HDD_LABEL}"
+ MOUNT_OPTIONS="-t ntfs-3g"
+ ;;
+esac
+
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ Chroot chroot "mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}"
+ ;;
+
+ false)
+ mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}
+ ;;
+esac
+
+case "${LB_BINARY_FILESYSTEM}" in
+ fat*)
+ CP_OPTIONS="-r -L"
+ ;;
+
+ *)
+ CP_OPTIONS="-a"
+ ;;
+esac
+
+Echo_message "Copying binary contents into image..."
+
+mkdir -p chroot/binary.tmp
+mount ${MOUNT_OPTIONS} ${FREELO} chroot/binary.tmp
+cp -T ${CP_OPTIONS} binary/ chroot/binary.tmp
+
+FIXME()
+{
+if [ "${LB_PRIMARY_BOOTLOADER}" = "grub" ]
+then
+
+cat > chroot/grub.sh << EOF
+cd binary.tmp
+grub --batch << EOM
+find /live/vmlinuz
+EOM
+EOF
+
+ rootpartition="$(Chroot chroot 'sh grub.sh' 2>/dev/null | grep -A 1 'find /live/vmlinuz' | grep -v 'find /live/vmlinuz')"
+ hdddev="$(echo $rootpartition | sed -e 's|,[[:digit:]]||')"
+ echo "Root partition is $rootpartition, device is: $hdddev"
+
+ echo "WAITING..." && read WAIT
+
+#cat > chroot/grub.sh << EOF
+#grub --batch << EOM
+#root $rootpartition
+#setup $hdddev
+#EOM
+#EOF
+
+#Chroot chroot "sh grub.sh"
+
+ rm -f chroot/grub.sh
+fi
+}
+
+case "${_BOOTLOADER}" in
+ syslinux)
+ _SYSLINUX_INSTALLER="syslinux ${FREELO}"
+ ;;
+ extlinux)
+ _SYSLINUX_INSTALLER="extlinux --install /binary.tmp/boot/extlinux"
+ ;;
+ *)
+ _SYSLINUX_INSTALLER=""
+ ;;
+esac
+
+if [ -n "${_SYSLINUX_INSTALLER}" ]
+then
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ Chroot chroot "${_SYSLINUX_INSTALLER}"
+ ;;
+ false)
+ ${_SYSLINUX_INSTALLER}
+ ;;
+ esac
+fi
+
+umount chroot/binary.tmp
+rmdir chroot/binary.tmp
+
+Lodetach ${FREELO}
+
+echo "!!! The above error/warning messages can be ignored !!!"
+
+if [ -n "${MAKEDEV}" ]
+then
+ rm -rf chroot/dev
+ mv chroot/dev.tmp chroot/dev
+fi
+
+mv chroot/binary.img ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.img
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/binary_hdd
diff --git a/system-build/scripts/build/binary_hooks b/system-build/scripts/build/binary_hooks
new file mode 100755
index 0000000..0458ce9
--- /dev/null
+++ b/system-build/scripts/build/binary_hooks
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'execute hooks in binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin executing hooks..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_hooks
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+## Processing distribution hooks
+
+# Running hooks
+for _HOOK in ${LB_BINARY_HOOKS}
+do
+ for LOCATION in "${LIVE_BUILD}/hooks" /usr/share/live/build/hooks
+ do
+ for FILE in "${LOCATION}"/????-"${_HOOK}".binary
+ do
+ if [ -e "${FILE}" ]
+ then
+ cd binary
+ "${FILE}" || { Echo_error "${_HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
+ cd "${OLDPWD}"
+ fi
+ done
+ done
+done
+
+## Processing local hooks
+for HOOK in config/hooks/normal/*.binary config/hooks/live/*.binary
+do
+ if [ ! -e "${HOOK}" ]
+ then
+ continue
+ fi
+
+ # Making hook executable
+ if [ ! -x "${HOOK}" ]
+ then
+ chmod +x "${HOOK}"
+ fi
+
+ # Executing hook
+ cd binary
+ ../"${HOOK}" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
+ cd "${OLDPWD}"
+done
+
+# Creating stage file
+Create_stagefile .build/binary_hooks
diff --git a/system-build/scripts/build/binary_includes b/system-build/scripts/build/binary_includes
new file mode 100755
index 0000000..48bb6e5
--- /dev/null
+++ b/system-build/scripts/build/binary_includes
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'copy files into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin copying binary includes..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/includes.binary
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+if Find_files config/includes.binary/
+then
+ # Copying includes
+ cd config/includes.binary
+ find . | cpio -dmpu --no-preserve-owner "${OLDPWD}"/binary
+ cd "${OLDPWD}"
+
+ # Removing symlinks
+ case "${LIVE_IMAGE_TYPE}" in
+ hdd*)
+ find binary -type l | xargs rm -f
+ ;;
+ esac
+
+ # Creating stage file
+ Create_stagefile .build/binary_includes
+fi
diff --git a/system-build/scripts/build/binary_iso b/system-build/scripts/build/binary_iso
new file mode 100755
index 0000000..bd659a2
--- /dev/null
+++ b/system-build/scripts/build/binary_iso
@@ -0,0 +1,220 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build iso binary image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+case "${LIVE_IMAGE_TYPE}" in
+ iso)
+ IMAGE="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.iso"
+ ;;
+
+ iso-hybrid)
+ IMAGE="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.hybrid.iso"
+ ;;
+
+ *)
+ exit 0
+ ;;
+esac
+
+Echo_message "Begin building binary iso image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_iso
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package chroot /usr/bin/xorriso xorriso
+Check_package chroot /usr/lib/ISOLINUX/isohdpfx.bin isolinux
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+# Remove old iso image
+if [ -f ${IMAGE} ]
+then
+ rm -f ${IMAGE}
+fi
+
+# Handle xorriso generic options
+XORRISO_OPTIONS="-R -r -J -joliet-long -l -cache-inodes -iso-level 3"
+
+# Handle xorriso live-build specific options
+if [ "${LIVE_IMAGE_TYPE}" = "iso-hybrid" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16"
+fi
+
+if [ "${_QUIET}" = "true" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -quiet"
+fi
+
+if [ "${_VERBOSE}" = "true" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -v"
+fi
+
+if [ -n "${LB_ISO_APPLICATION}" ] && [ "${LB_ISO_APPLICATION}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -A \"${LB_ISO_APPLICATION}\""
+fi
+
+if [ -n "${LB_ISO_PREPARER}" ] && [ "${LB_ISO_PREPARER}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -p \"${LB_ISO_PREPARER}\""
+fi
+
+if [ -n "${LB_ISO_PUBLISHER}" ] && [ "${LB_ISO_PUBLISHER}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -publisher \"${LB_ISO_PUBLISHER}\""
+fi
+
+if [ -n "${LB_ISO_VOLUME}" ] && [ "${LB_ISO_VOLUME}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -V \"${LB_ISO_VOLUME}\""
+fi
+
+# Set an explicit modification date
+XORRISO_OPTIONS="${XORRISO_OPTIONS} --modification-date=$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d%H%m%S00)"
+
+LB_PRIMARY_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }')
+
+# Handle xorriso architecture specific options
+case "${LB_PRIMARY_BOOTLOADER}" in
+ grub)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table"
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/grub/stage2_eltorito"
+ XORRISO_EXCLUDE="boot/grub/stage2_eltorito"
+ ;;
+
+ grub-pc)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table"
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/grub/grub_eltorito -J"
+ XORRISO_EXCLUDE="boot/grub/grub_eltorito"
+ ;;
+
+ syslinux)
+ case "${LB_MODE}" in
+ progress-linux)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/boot.bin -c boot/boot.cat"
+ XORRISO_EXCLUDE="boot/boot.bin"
+ ;;
+
+ *)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b isolinux/isolinux.bin -c isolinux/boot.cat"
+ XORRISO_EXCLUDE="isolinux/isolinux.bin"
+ ;;
+ esac
+
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table"
+ ;;
+
+ *)
+ Echo_warning "Bootloader on your architecture not yet supported by live-build."
+ Echo_warning "This will produce a most likely not bootable image (Continuing in 5 seconds)."
+ sleep 5
+ ;;
+esac
+
+#if [ "${LB_DEBIAN_INSTALLER}" != "live" ]
+#then
+# XORRISO_OPTIONS="${XORRISO_OPTIONS} -m ${XORRISO_EXCLUDE}"
+#fi
+
+if [ "${LB_PRIMARY_BOOTLOADER}" = "grub-pc" ]
+then
+
+cat > binary.sh << EOF
+#!/bin/sh
+
+input_dir=/usr/lib/grub/i386-pc
+
+# build core.img
+core_img=\$(mktemp)
+grub-mkimage -d \${input_dir} -o \${core_img} -O i386-pc biosdisk iso9660
+
+# build grub_eltorito image
+cat \${input_dir}/cdboot.img \${core_img} > binary/boot/grub/grub_eltorito
+
+rm -f \${core_img}
+
+for file in \${input_dir}/*.mod \${input_dir}/efiemu??.o \
+ \${input_dir}/command.lst \${input_dir}/moddep.lst \${input_dir}/fs.lst \
+ \${input_dir}/handler.lst \${input_dir}/parttool.lst
+do
+ if test -f "\$file"
+ then
+ cp -f "\$file" binary/boot/grub/i386-pc
+ fi
+done
+EOF
+
+else
+ echo "#!/bin/sh" > binary.sh
+fi
+
+cat >> binary.sh << EOF
+
+xorriso -as mkisofs ${XORRISO_OPTIONS} -o ${IMAGE} binary
+EOF
+
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Moving image
+ mv binary.sh chroot
+ mv binary chroot
+
+ Chroot chroot "sh binary.sh"
+
+ # Move image
+ mv chroot/binary chroot/${IMAGE} ./
+ rm -f chroot/binary.sh
+ ;;
+
+ false)
+ sh binary.sh
+ rm -f binary.sh
+ ;;
+esac
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/binary_iso
diff --git a/system-build/scripts/build/binary_linux-image b/system-build/scripts/build/binary_linux-image
new file mode 100755
index 0000000..34676ce
--- /dev/null
+++ b/system-build/scripts/build/binary_linux-image
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 linux-image into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_LINUX_PACKAGES}" = "none" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin install linux-image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_linux-image
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ DESTDIR="binary/live"
+ ;;
+
+ *)
+ DESTDIR="binary/boot"
+ ;;
+esac
+
+case "${LB_ARCHITECTURES}" in
+ powerpc)
+ LINUX="vmlinux"
+ ;;
+
+ *)
+ LINUX="vmlinuz"
+ ;;
+esac
+
+Check_multiarchitectures
+
+# Creating directory
+mkdir -p "${DESTDIR}"
+
+# Installing linux-image
+cp chroot/boot/"${LINUX}"-* "${DESTDIR}"
+cp chroot/boot/initrd.img-* "${DESTDIR}"
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ if ls chroot/usr/share/doc/*system-boot/parameters.txt > /dev/null 2>&1
+ then
+ cp chroot/usr/share/doc/*system-boot/parameters.txt "${DESTDIR}"/parameters
+ fi
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/binary_linux-image
diff --git a/system-build/scripts/build/binary_loadlin b/system-build/scripts/build/binary_loadlin
new file mode 100755
index 0000000..1fed0a5
--- /dev/null
+++ b/system-build/scripts/build/binary_loadlin
@@ -0,0 +1,102 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'copy loadlin into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_LOADLIN}" != "true" ] || [ "${LB_BINARY_IMAGES}" = "netboot" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin copying loadlin..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_loadlin
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LB_ARCHITECTURES}" in
+ amd64|i386)
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Checking depends
+ Check_package chroot /usr/lib/loadlin/loadlin.exe.gz loadlin
+
+ # Restoring cache
+ Restore_cache cache/packages.binary
+
+ # Installing depends
+ Install_package
+
+ _PREFIX="chroot"
+ ;;
+
+ false)
+ _PREFIX=""
+ ;;
+ esac
+
+ # Copying loadlin
+ mkdir -p binary/tools
+ gunzip -c "${_PREFIX}/usr/lib/loadlin/loadlin.exe.gz" > binary/tools/loadlin.exe
+ gunzip -c "${_PREFIX}/usr/share/doc/loadlin/manual.txt.gz" > binary/tools/loadlin.txt
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Saving cache
+ Save_cache cache/packages.binary
+
+ # Removing depends
+ Remove_package
+ ;;
+ esac
+
+cat > binary/install/install.bat << EOF
+\tools\loadlin.exe vmlinuz initrd=initrd.gz
+EOF
+
+ if [ -e binary/install/gtk ]
+ then
+
+cat > binary/install/gtk/install.bat << EOF
+\tools\loadlin.exe \install\vmlinuz initrd=initrd.gz vga=788
+EOF
+
+ fi
+
+ # Creating stage file
+ Create_stagefile .build/binary_loadlin
+ ;;
+
+ *)
+ Echo_warning "loadlin inclusion is set to true but not compatible with your architecture, ignoring."
+ ;;
+esac
diff --git a/system-build/scripts/build/binary_loopback_cfg b/system-build/scripts/build/binary_loopback_cfg
new file mode 100755
index 0000000..87c1d67
--- /dev/null
+++ b/system-build/scripts/build/binary_loopback_cfg
@@ -0,0 +1,341 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'installs loopback.cfg into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# We avoid checking if we need to be running this bootloader
+# on purpose. The reason: You will always want to have
+# a loopback.cfg file
+# TODO: Add an option to be able to disable this file creation
+Echo_message "Begin installing loopback.cfg..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_loopback_cfg
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Check architecture
+Check_architectures amd64 i386
+Check_crossarchitectures
+
+# Local functions
+Grub_live_entry_commands ()
+{
+ local KERNEL="${1}"
+ local INITRD="${2}"
+ local APPEND="${3}"
+
+ LINUX_LIVE="${LINUX_LIVE}\nlinux\t\t/${KERNEL} ${INITFS:+boot=${INITFS} }config LB_BOOTAPPEND_LIVE ${APPEND}"
+ LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}"
+}
+
+Grub_live_entry ()
+{
+ local LABEL="${1}"
+ local KERNEL="${2}"
+ local INITRD="${3}"
+ local APPEND="${4}"
+
+ LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {"
+ Grub_live_entry_commands "${KERNEL}" "${INITRD}" "${APPEND} findiso=\${iso_path}"
+ LINUX_LIVE="${LINUX_LIVE}\n}"
+}
+
+Grub_live_autodetect_entry ()
+{
+ local LABEL="${1}"
+ local AMD64_KERNEL="${2}"
+ local AMD64_INITRD="${3}"
+ local _486_KERNEL="${4}"
+ local _486_INITRD="${5}"
+ local APPEND="${6}"
+
+ LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {"
+ LINUX_LIVE="${LINUX_LIVE}\nif cpuid -l ; then"
+ Grub_live_entry_commands "${AMD64_KERNEL}" "${AMD64_INITRD}" "${APPEND} findiso=\${iso_path}"
+ LINUX_LIVE="${LINUX_LIVE}\nelse"
+ Grub_live_entry_commands "${_486_KERNEL}" "${_486_INITRD}" "${APPEND} findiso=\${iso_path}"
+ LINUX_LIVE="${LINUX_LIVE}\nfi"
+ LINUX_LIVE="${LINUX_LIVE}\n}"
+}
+
+if [ -e "config/bootloaders/grub-pc" ]
+then
+ # Internal local copy
+ _SOURCE="config/bootloaders/grub-pc"
+else
+ # Internal system copy
+ if [ -n "${LIVE_BUILD}" ]
+ then
+ _SOURCE="${LIVE_BUILD}/share/bootloaders/grub-pc"
+ else
+ _SOURCE="/usr/share/live/build/bootloaders/grub-pc"
+ fi
+fi
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ INITFS="live"
+ ;;
+
+ *)
+ INITFS=""
+ ;;
+esac
+
+# Assembling image specifics
+case "${LIVE_IMAGE_TYPE}" in
+ iso*)
+ _BOOTLOADER="isolinux"
+
+ case "${LB_MODE}" in
+ progress-linux)
+ _TARGET="binary/boot"
+ ;;
+
+ *)
+ _TARGET="binary/isolinux"
+ ;;
+ esac
+ ;;
+
+ netboot)
+ _BOOTLOADER="pxelinux"
+ _TARGET="tftpboot"
+ ;;
+
+ hdd*|*)
+ case ${LB_BINARY_FILESYSTEM} in
+ fat*|ntfs)
+ _BOOTLOADER=syslinux
+
+ case "${LB_MODE}" in
+ progress-linux)
+ _TARGET="binary/boot"
+ ;;
+
+ *)
+ _TARGET="binary/syslinux"
+ ;;
+ esac
+ ;;
+
+ ext[234]|btrfs)
+ _BOOTLOADER=extlinux
+ _TARGET="binary/boot/extlinux"
+ ;;
+ *)
+ Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}"
+ exit 1
+ ;;
+ esac
+ ;;
+esac
+
+DESTDIR_LIVE="${_TARGET}"
+
+Check_multiarchitectures
+
+# Creating directory
+mkdir -p "${DESTDIR_LIVE}"
+
+# Setting boot parameters
+if [ "${LB_UNION_FILESYSTEM}" != "aufs" ]
+then
+ LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} union=${LB_UNION_FILESYSTEM}"
+fi
+
+if [ -n "${LB_NET_COW_PATH}" ]
+then
+ Echo_error "Net cow not yet supported on grub"
+ exit 1
+fi
+
+LB_BOOTAPPEND_LIVE="$(echo ${LB_BOOTAPPEND_LIVE} | sed -e 's| ||')"
+
+# Assembling kernel configuration
+# If Bootloader is not syslinux that means
+# binary_syslinux it's not going to rename kernel filenames in a later stage.
+# We will use binary_grub2 algorithm which does not rename kernel filenames.
+
+FOUND_SYSLINUX=""
+OLDIFS="$IFS"
+IFS=","
+for BOOTLOADER in ${LB_BOOTLOADERS}
+do
+
+ case ${BOOTLOADER} in
+ "syslinux" )
+ FOUND_SYSLINUX="True"
+ break ;;
+ esac
+
+done
+IFS="$OLDIFS"
+
+if [ -z ${FOUND_SYSLINUX} ]
+then
+
+ _AMD64_486_NUMBER="0"
+
+ for _FLAVOUR in ${LB_LINUX_FLAVOURS}
+ do
+ if [ "${_FLAVOUR}" = "amd64" -o "${_FLAVOUR}" = "486" ] ; then
+ _AMD64_486_NUMBER="$((${_AMD64_486_NUMBER} + 1))"
+ fi
+ done
+
+ if [ "${_AMD64_486_NUMBER}" -ge 2 ] ; then
+ # Default entries
+ AMD64_KERNEL="$(basename chroot/boot/vmlinuz-*amd64)"
+ AMD64_INITRD="initrd.img-$(echo ${AMD64_KERNEL} | sed -e 's|vmlinuz-||')"
+ _486_KERNEL="$(basename chroot/boot/vmlinuz-*486)"
+ _486_INITRD="initrd.img-$(echo ${_486_KERNEL} | sed -e 's|vmlinuz-||')"
+
+ Grub_live_autodetect_entry "live (autodetect)" \
+ "${INITFS}/${AMD64_KERNEL}" \
+ "${INITFS}/${AMD64_INITRD}" \
+ "${INITFS}/${_486_KERNEL}" \
+ "${INITFS}/${_486_INITRD}"
+ fi
+
+ # Default entries
+ DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
+ DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})"
+ DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')"
+
+ Grub_live_entry "live" "${INITFS}/${DEFAULT_KERNEL}" "${INITFS}/${DEFAULT_INITRD}"
+
+ if [ "${LB_BOOTAPPEND_FAILSAFE}" != "none" ]
+ then
+ Grub_live_entry "live (fail-safe mode)" "${INITFS}/${DEFAULT_KERNEL}" "${INITFS}/${DEFAULT_INITRD}" "${LB_BOOTAPPEND_FAILSAFE}"
+ fi
+
+ for KERNEL in chroot/boot/vmlinuz-*
+ do
+ VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
+
+ Grub_live_entry "live, kernel ${VERSION}" "${INITFS}/$(basename ${KERNEL})" "${INITFS}/initrd.img-${VERSION}"
+ Grub_live_entry "live, kernel ${VERSION} (fail-safe mode)" "${INITFS}/$(basename ${KERNEL})" "${INITFS}/initrd.img-${VERSION}" "${LB_BOOTAPPEND_FAILSAFE}"
+ done
+else # LB_BOOTLOADERS does not contain syslinux
+# If one of the bootloader is syslinux that means
+# binary_syslinux it's going to rename kernel filenames.
+# We will use binary_syslinux algorithm but without renaming kernel filenames.
+# That will ensure binary_syslinux will find the original kernel filenames.
+ #if [ -e "${_TARGET}/live.cfg.in" ]
+ #then
+ # This is all rather suboptimal.. needs prettifying at some point
+ _FLAVOURS="$(echo ${LB_LINUX_FLAVOURS} | wc -w)"
+
+ case "${_FLAVOURS}" in
+ 1)
+ Grub_live_entry "live (${LB_LINUX_FLAVOURS})" "${INITFS}/vmlinuz" "${INITFS}/initrd.img" "${LB_BOOTAPPEND_LIVE}"
+ Grub_live_entry "live (${LB_LINUX_FLAVOURS}) (failsafe mode)" "${INITFS}/vmlinuz" "${INITFS}/initrd.img" "${LB_BOOTAPPEND_LIVE_FAILSAFE}"
+ ;;
+
+ *)
+ _AMD64_486_NUMBER="0"
+
+ for _FLAVOUR in ${LB_LINUX_FLAVOURS}
+ do
+ if [ "${_FLAVOUR}" = "amd64" -o "${_FLAVOUR}" = "486" ] ; then
+ _AMD64_486_NUMBER="$((${_AMD64_486_NUMBER} + 1))"
+ fi
+ done
+
+ _NUMBER="0"
+ for _FLAVOUR in ${LB_LINUX_FLAVOURS}
+ do
+ _NUMBER="$((${_NUMBER} + 1))"
+ if [ "${_FLAVOUR}" = "amd64" ] ; then
+ AMD64_KERNEL="vmlinuz${_NUMBER}"
+ AMD64_INITRD="initrd${_NUMBER}.img"
+ fi
+
+ if [ "${_FLAVOUR}" = "486" ] ; then
+ _486_KERNEL="vmlinuz${_NUMBER}"
+ _486_INITRD="initrd${_NUMBER}.img"
+ fi
+ done
+
+ _NUMBER="0"
+
+ for _FLAVOUR in ${LB_LINUX_FLAVOURS}
+ do
+ _NUMBER="$((${_NUMBER} + 1))"
+
+ if [ "${_NUMBER}" -gt 1 ]
+ then
+ Grub_live_entry "live (${_FLAVOUR})" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE}"
+ Grub_live_entry "live (${_FLAVOUR}) (failsafe mode)" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE_FAILSAFE}"
+
+ else
+ if [ "${_AMD64_486_NUMBER}" -ge 2 ] ; then
+
+ Grub_live_autodetect_entry "live (autodetect)" \
+ "${INITFS}/${AMD64_KERNEL}" \
+ "${INITFS}/${AMD64_INITRD}" \
+ "${INITFS}/${_486_KERNEL}" \
+ "${INITFS}/${_486_INITRD}"
+ fi
+
+ Grub_live_entry "live (${_FLAVOUR})" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE}"
+ Grub_live_entry "live (${_FLAVOUR}) (failsafe mode)" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE_FAILSAFE}"
+ fi
+
+ done
+
+ ;;
+ esac
+ #fi
+fi
+LINUX_LIVE="$(/bin/echo ${LINUX_LIVE} | sed -e 's|binary||g' -e 's|//|/|g')"
+
+# Assembling memtest configuration
+if [ -f "${DESTDIR_LIVE}"/memtest ]
+then
+ MEMTEST="#\t \"Other\"\n"
+ MEMTEST="${MEMTEST}\nmenuentry\t\"${LB_MEMTEST}\" {\nlinux16\t${INITFS}/memtest\n}"
+ MEMTEST="$(/bin/echo ${MEMTEST} | sed -e 's|//|/|g')"
+fi
+
+# Copying templates
+mkdir -p binary/boot/grub
+cp "${_SOURCE}"/grub.cfg binary/boot/grub/loopback.cfg
+
+sed -i -e "s|LINUX_LIVE|${LINUX_LIVE}|" -e "s|LINUX_INSTALL||" -e "s|MEMTEST|${MEMTEST}|" binary/boot/grub/loopback.cfg
+sed -i -e "s#LB_BOOTAPPEND_INSTALL##" -e "s#LB_BOOTAPPEND_LIVE#${LB_BOOTAPPEND_LIVE}#" binary/boot/grub/loopback.cfg
+
+sed -i -e 's|\ $||g' binary/boot/grub/loopback.cfg
+
+# Creating stage file
+Create_stagefile .build/binary_loopback_cfg
diff --git a/system-build/scripts/build/binary_manifest b/system-build/scripts/build/binary_manifest
new file mode 100755
index 0000000..55c6520
--- /dev/null
+++ b/system-build/scripts/build/binary_manifest
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'create manifest')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_CHROOT_FILESYSTEM}" = "none" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin creating manifest..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_manifest
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ INITFS="live"
+ SUFFIX="packages"
+ ;;
+
+ *)
+ INITFS="boot"
+ SUFFIX="packages"
+ ;;
+esac
+
+# Add filesystem.packages
+cp chroot.packages.live "binary/${INITFS}/filesystem.${SUFFIX}"
+echo "$(diff chroot.packages.live chroot.packages.install | awk '/^< / { print $2 }')" \
+ > "binary/${INITFS}/filesystem.${SUFFIX}-remove"
+
+cp chroot.packages.live ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.packages
+
+cp chroot.files ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.files
+
+# Creating stage file
+Create_stagefile .build/binary_manifest
diff --git a/system-build/scripts/build/binary_memtest b/system-build/scripts/build/binary_memtest
new file mode 100755
index 0000000..1ce4195
--- /dev/null
+++ b/system-build/scripts/build/binary_memtest
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'installs a memtest into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_MEMTEST}" = "false" ] || [ "${LB_MEMTEST}" = "none" ] || [ "${LB_CHROOT_FILESYSTEM}" = "none" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin installing memtest..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_memtest
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+if [ "${LB_ARCHITECTURES}" != "amd64" ] && [ "${LB_ARCHITECTURES}" != "i386" ]
+then
+ Echo_warning "skipping binary_memtest, foreign architecture."
+ exit 0
+fi
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
+then
+
+ if [ -f chroot/usr/sbin/grub ] && [ ! -f chroot/boot/grub/menu.lst ]
+ then
+ GRUB="yes"
+
+ mkdir -p chroot/boot/grub
+ touch chroot/boot/grub/menu.lst
+ fi
+fi
+
+# Checking depends
+case "${LB_MEMTEST}" in
+ memtest86)
+ Check_package chroot /boot/memtest86.bin memtest86
+ ;;
+
+ memtest86+)
+ Check_package chroot /boot/memtest86+.bin memtest86+
+ ;;
+esac
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+# Setting destination directory
+case "${LB_INITRAMFS}" in
+ system-boot)
+ DESTDIR="binary/live"
+ ;;
+
+ *)
+ DESTDIR="binary/boot"
+ ;;
+esac
+
+Check_multiarchitectures
+
+# Creating directory
+mkdir -p "${DESTDIR}"
+
+# Installing memtest
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ cp chroot/boot/${LB_MEMTEST}.bin "${DESTDIR}"/memtest
+ ;;
+
+ false)
+ cp /boot/${LB_MEMTEST}.bin "${DESTDIR}"/memtest
+ ;;
+esac
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+if [ "${GRUB}" ]
+then
+ rm -rf chroot/boot/grub
+fi
+
+# Creating stage file
+Create_stagefile .build/binary_memtest
diff --git a/system-build/scripts/build/binary_netboot b/system-build/scripts/build/binary_netboot
new file mode 100755
index 0000000..d8cfe51
--- /dev/null
+++ b/system-build/scripts/build/binary_netboot
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build netboot binary image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if ! In_list netboot "${LIVE_IMAGE_TYPE}"
+then
+ exit 0
+fi
+
+if [ "${LB_NET_TARBALL}" = "false" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin building binary netboot image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_netboot
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Remove old binary
+rm -f ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.gz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.bz2 ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.xz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.xz
+
+# Creating image file
+ROOT_DIR=$(basename ${LB_NET_ROOT_PATH})
+
+if [ "${ROOT_DIR}" = "chroot" ]
+then
+ mv chroot chroot.tmp
+fi
+
+if [ "${ROOT_DIR}" != "binary" ]
+then
+ mv binary ${ROOT_DIR}
+fi
+
+mkdir binary.tmp
+mv ${ROOT_DIR} tftpboot binary.tmp
+cd binary.tmp
+
+# Moving kernel and initrd image arround
+mkdir tftpboot/live
+mv */live/vmlinuz* */live/initrd* tftpboot/live
+
+tar cf ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar *
+
+case "${LB_COMPRESSION}" in
+ bzip2)
+ bzip2 ${BZIP2_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar
+ ;;
+
+ gzip)
+ gzip ${GZIP_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar
+ ;;
+
+ lzip)
+ lzip ${LZIP_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar
+ ;;
+
+ xz)
+ xz ${XZ_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar
+ ;;
+
+ none)
+ ;;
+esac
+
+mv * ../
+cd "${OLDPWD}"
+rmdir binary.tmp
+
+if [ "${ROOT_DIR}" != "binary" ]
+then
+ mv ${ROOT_DIR} binary
+fi
+
+if [ "${ROOT_DIR}" = "chroot" ]
+then
+ mv chroot.tmp chroot
+fi
+
+# Creating stage file
+Create_stagefile .build/binary_netboot
diff --git a/system-build/scripts/build/binary_package-lists b/system-build/scripts/build/binary_package-lists
new file mode 100755
index 0000000..fc47154
--- /dev/null
+++ b/system-build/scripts/build/binary_package-lists
@@ -0,0 +1,178 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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/system 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
+ # Check depends
+ Check_package host /usr/bin/apt-ftparchive apt-utils
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Restoring cache
+ Restore_cache cache/packages.chroot
+
+ # Check depends
+ Check_package chroot /usr/bin/grep-aptavail dctrl-tools
+
+ # Installing depends
+ Install_package
+ ;;
+
+ false)
+ Check_package host /usr/bin/grep-aptavail dctrl-tools
+ ;;
+ 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
+ if [ ! -d "${SECTION}" ]; then
+ break # Do nothing if the package lists were empty...
+ fi
+
+ 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
diff --git a/system-build/scripts/build/binary_rootfs b/system-build/scripts/build/binary_rootfs
new file mode 100755
index 0000000..f230d17
--- /dev/null
+++ b/system-build/scripts/build/binary_rootfs
@@ -0,0 +1,462 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build rootfs image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin building root filesystem image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap .build/binary_chroot
+
+# Checking stage file
+Check_stagefile .build/binary_rootfs
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LB_ARCHITECTURES}" in
+ amd64|i386)
+ LINUX="vmlinuz"
+ ;;
+
+ powerpc)
+ LINUX="vmlinux"
+ ;;
+esac
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ INITFS="live"
+ ;;
+
+ *)
+ INITFS="boot"
+ ;;
+esac
+
+# Creating directory
+mkdir -p binary/${INITFS}
+
+for STAGE in ${LB_CACHE_STAGES}
+do
+ if [ "${STAGE}" = "rootfs" ] && [ -d cache/binary_rootfs ]
+ then
+ # Removing old chroot
+ rm -rf binary/"${INITFS}"/filesystem.*
+
+ # Restoring old cache
+ mkdir -p binary/"${INITFS}"
+ cp -a cache/binary_rootfs/filesystem.* binary/"${INITFS}"
+
+ # Creating stage file
+ Create_stagefile .build/binary_rootfs
+ exit 0
+ fi
+done
+
+case "${LB_CHROOT_FILESYSTEM}" in
+ ext2|ext3|ext4)
+ # Checking depends
+ Check_package chroot /sbin/mkfs.${LB_CHROOT_FILESYSTEM} e2fsprogs
+
+ # Restoring cache
+ Restore_cache cache/packages.binary
+
+ # Installing depends
+ Install_package
+
+ # Remove old image
+ if [ -f binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} ]
+ then
+ rm -f binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM}
+ fi
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ DU_DIM="$(du -ms chroot/chroot | cut -f1)"
+ INODES="$(find chroot/chroot | wc -l)"
+ ;;
+
+ false)
+ DU_DIM="$(du -ms chroot | cut -f1)"
+ INODES="$(find chroot | wc -l)"
+ ;;
+ esac
+
+ REAL_DIM="$(Calculate_partition_size ${DU_DIM} ${LB_CHROOT_FILESYSTEM})"
+ REAL_INODES="$(Calculate_partition_size ${INODES} ${LB_CHROOT_FILESYSTEM})"
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ dd if=/dev/zero of=chroot/filesystem.${LB_CHROOT_FILESYSTEM} bs=1024k count=0 seek=${REAL_DIM}
+
+ if ! Chroot chroot "test -s /etc/mtab"
+ then
+ Chroot chroot "ln -s /proc/mounts/mtab /etc/mtab"
+ FAKE_MTAB="true"
+ fi
+
+ Chroot chroot "mkfs.${LB_CHROOT_FILESYSTEM} -F -b 1024 -N ${REAL_INODES} -m 0 filesystem.${LB_CHROOT_FILESYSTEM}"
+
+ mkdir -p filesystem.tmp
+ mount -o loop chroot/filesystem.${LB_CHROOT_FILESYSTEM} filesystem.tmp
+ cp -a chroot/chroot/* filesystem.tmp
+
+ if [ "${FAKE_MTAB}" = "true" ]
+ then
+ Chroot chroot "rm -f /etc/mtab"
+ fi
+
+ umount filesystem.tmp
+ rmdir filesystem.tmp
+
+ # Move image
+ mv chroot/filesystem.${LB_CHROOT_FILESYSTEM} binary/${INITFS}
+
+ du -B 1 -s chroot/chroot | cut -f1 > binary/${INITFS}/filesystem.size
+
+ if [ -e chroot/chroot.cache ]
+ then
+ rm -f .lock
+ mv chroot/chroot chroot.tmp
+
+ lb chroot_archives binary remove ${@}
+ lb chroot_apt remove ${@}
+ lb chroot_hostname remove ${@}
+ lb chroot_resolv remove ${@}
+ lb chroot_hosts remove ${@}
+ lb chroot_sysv-rc remove ${@}
+ lb chroot_dpkg remove ${@}
+ lb chroot_debianchroot remove ${@}
+ lb chroot_sysfs remove ${@}
+ lb chroot_selinuxfs remove ${@}
+ lb chroot_proc remove ${@}
+ lb chroot_devpts remove ${@}
+
+ rm -rf chroot
+ mv chroot.tmp chroot
+
+ lb chroot_devpts install ${@}
+ lb chroot_proc install ${@}
+ lb chroot_selinuxfs install ${@}
+ lb chroot_sysfs install ${@}
+ lb chroot_debianchroot install ${@}
+ lb chroot_dpkg install ${@}
+ lb chroot_sysv-rc install ${@}
+ lb chroot_hosts install ${@}
+ lb chroot_resolv install ${@}
+ lb chroot_hostname install ${@}
+ lb chroot_apt install ${@}
+ lb chroot_archives binary install ${@}
+
+ touch .lock
+ else
+ rm -rf chroot/chroot
+
+ # Removing depends
+ Remove_package
+ fi
+ ;;
+
+ false)
+ dd if=/dev/zero of=binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} bs=1024k count=0 seek=${REAL_DIM}
+ mkfs.${LB_CHROOT_FILESYSTEM} -F -b 1024 -N ${REAL_INODES} -m 0 binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM}
+
+ mkdir -p filesystem.tmp
+ mount -o loop binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} filesystem.tmp
+ cp -a chroot/* filesystem.tmp
+
+ umount filesystem.tmp
+ rmdir filesystem.tmp
+ ;;
+ esac
+
+ # Saving cache
+ Save_cache cache/packages.binary
+ ;;
+
+ jffs2)
+ # Checking depends
+ Check_package chroot /usr/sbin/mkfs.jffs2 mtd-tools
+
+ # Restoring cache
+ Restore_cache cache/packages.binary
+
+ # Installing depends
+ Install_package
+
+ # Remove old jffs2 image
+ if [ -f binary/${INITFS}/filesystem.jffs2 ]
+ then
+ rm -f binary/${INITFS}/filesystem.jffs2
+ fi
+
+ if [ -n "${LB_JFFS2_ERASEBLOCK}" ]
+ then
+ JFFS2_OPTIONS="--eraseblock=${LB_JFFS2_ERASEBLOCK}"
+ fi
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ Chroot chroot "mkfs.jffs2 ${JFFS2_OPTIONS} --root=chroot --output filesystem.jffs2"
+
+ # Move image
+ mv chroot/filesystem.jffs2 binary/${INITFS}
+
+ if [ -e chroot/chroot.cache ]
+ then
+ rm -f .lock
+ mv chroot/chroot chroot.tmp
+
+ lb chroot_archives binary remove ${@}
+ lb chroot_apt remove ${@}
+ lb chroot_hostname remove ${@}
+ lb chroot_resolv remove ${@}
+ lb chroot_hosts remove ${@}
+ lb chroot_sysv-rc remove ${@}
+ lb chroot_dpkg remove ${@}
+ lb chroot_debianchroot remove ${@}
+ lb chroot_sysfs remove ${@}
+ lb chroot_selinuxfs remove ${@}
+ lb chroot_proc remove ${@}
+ lb chroot_devpts remove ${@}
+
+ rm -rf chroot
+ mv chroot.tmp chroot
+
+ lb chroot_devpts install ${@}
+ lb chroot_proc install ${@}
+ lb chroot_selinuxfs install ${@}
+ lb chroot_sysfs install ${@}
+ lb chroot_debianchroot install ${@}
+ lb chroot_dpkg install ${@}
+ lb chroot_sysv-rc install ${@}
+ lb chroot_hosts install ${@}
+ lb chroot_resolv install ${@}
+ lb chroot_hostname install ${@}
+ lb chroot_apt install ${@}
+ lb chroot_archives binary install ${@}
+
+ touch .lock
+ else
+ rm -rf chroot/chroot
+
+ # Removing depends
+ Remove_package
+ fi
+ ;;
+
+ false)
+ mkfs.jffs2 ${JFFS2_OPTIONS} --root=chroot --output binary/${INITFS}/filesystem.jffs2
+ ;;
+ esac
+
+ # Saving cache
+ Save_cache cache/packages.binary
+ ;;
+
+ plain)
+ if [ -d binary/${INITFS}/filesystem.dir ]
+ then
+ rm -rf binary/${INITFS}/filesystem.dir
+ fi
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ mv chroot/chroot binary/${INITFS}/filesystem.dir
+ ;;
+
+ false)
+ cp -a chroot binary/${INITFS}/filesystem.dir
+ ;;
+ esac
+ ;;
+
+ squashfs)
+ # Checking depends
+ Check_package chroot /usr/share/doc/squashfs-tools squashfs-tools
+
+ # Restoring cache
+ Restore_cache cache/packages.binary
+
+ # Installing depends
+ Install_package
+
+ Echo_message "Preparing squashfs image..."
+ Echo_message "This may take a while."
+
+ # Remove old squashfs image
+ if [ -f binary/${INITFS}/filesystem.squashfs ]
+ then
+ rm -f binary/${INITFS}/filesystem.squashfs
+ fi
+
+ # Remove stale squashfs image
+ rm -f chroot/filesystem.squashfs
+
+ MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -no-progress"
+
+ if [ "${_VERBOSE}" = "true" ]
+ then
+ MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -info"
+ fi
+
+ if [ -f config/rootfs/squashfs.sort ]
+ then
+ MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -sort squashfs.sort"
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ cp config/rootfs/squashfs.sort chroot
+ ;;
+
+ false)
+ cp config/rootfs/squashfs.sort .
+ ;;
+ esac
+ fi
+
+ MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -comp xz"
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ if [ -e config/rootfs/excludes ]
+ then
+ cp config/rootfs/excludes chroot/excludes
+
+ MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -wildcards -ef /excludes"
+ fi
+
+ # Create image
+ Chroot chroot "mksquashfs chroot filesystem.squashfs ${MKSQUASHFS_OPTIONS}"
+
+ rm -f chroot/chroot/excludes
+
+ du -B 1 -s chroot/chroot | cut -f1 > binary/${INITFS}/filesystem.size
+
+ # Move image
+ mv chroot/filesystem.squashfs binary/${INITFS}
+ rm -f chroot/squashfs.sort
+
+ if [ -e chroot/chroot.cache ]
+ then
+ rm -f .lock
+ mv chroot/chroot chroot.tmp
+
+ lb chroot_archives binary remove ${@}
+ lb chroot_apt remove ${@}
+ lb chroot_hostname remove ${@}
+ lb chroot_resolv remove ${@}
+ lb chroot_hosts remove ${@}
+ lb chroot_sysv-rc remove ${@}
+ lb chroot_dpkg remove ${@}
+ lb chroot_debianchroot remove ${@}
+ lb chroot_sysfs remove ${@}
+ lb chroot_selinuxfs remove ${@}
+ lb chroot_proc remove ${@}
+ lb chroot_devpts remove ${@}
+
+ rm -rf chroot
+ mv chroot.tmp chroot
+
+ lb chroot_devpts install ${@}
+ lb chroot_proc install ${@}
+ lb chroot_selinuxfs install ${@}
+ lb chroot_sysfs install ${@}
+ lb chroot_debianchroot install ${@}
+ lb chroot_dpkg install ${@}
+ lb chroot_sysv-rc install ${@}
+ lb chroot_hosts install ${@}
+ lb chroot_resolv install ${@}
+ lb chroot_hostname install ${@}
+ lb chroot_apt install ${@}
+ lb chroot_archives binary install ${@}
+
+ touch .lock
+ else
+ rm -rf chroot/chroot
+
+ # Removing depends
+ Remove_package
+ fi
+
+ chmod 0644 binary/${INITFS}/filesystem.squashfs
+ ;;
+
+ false)
+ if [ -e config/rootfs/excludes ]
+ then
+ MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -wildcards -ef config/rootfs/excludes"
+ fi
+
+ mksquashfs chroot binary/${INITFS}/filesystem.squashfs ${MKSQUASHFS_OPTIONS}
+
+ du -B 1 -s chroot | cut -f1 > binary/${INITFS}/filesystem.size
+ ;;
+ esac
+
+ # Saving cache
+ Save_cache cache/packages.binary
+ ;;
+
+ none)
+ if [ -d binary ]
+ then
+ rm -rf binary
+ fi
+
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ mv chroot/chroot binary
+ ;;
+
+ false)
+ Echo_message "This may take a while."
+ cp -a chroot binary
+ ;;
+ esac
+ ;;
+
+esac
+
+for STAGE in ${LB_CACHE_STAGES}
+do
+ if [ "${STAGE}" = "rootfs" ]
+ then
+ rm -rf cache/binary_rootfs
+
+ mkdir -p cache/binary_rootfs
+
+ if [ "${LB_CHROOT_FILESYSTEM}" != "none" ]
+ then
+ cp -a binary/"${INITFS}"/filesystem.* cache/binary_rootfs
+ fi
+ fi
+done
+
+# Creating stage file
+Create_stagefile .build/binary_rootfs
diff --git a/system-build/scripts/build/binary_syslinux b/system-build/scripts/build/binary_syslinux
new file mode 100755
index 0000000..3224d21
--- /dev/null
+++ b/system-build/scripts/build/binary_syslinux
@@ -0,0 +1,349 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'installs syslinux into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+FOUND_MYSELF=""
+OLDIFS="$IFS"
+IFS=","
+for BOOTLOADER in ${LB_BOOTLOADERS}
+do
+
+ case ${BOOTLOADER} in
+ "syslinux" )
+ FOUND_MYSELF="True"
+ break ;;
+ esac
+
+done
+IFS="$OLDIFS"
+
+if [ -z ${FOUND_MYSELF} ] ; then
+ exit 0
+fi
+
+Echo_message "Begin installing syslinux..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_syslinux
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Check architecture
+Check_architectures amd64 i386
+Check_crossarchitectures
+
+case "${LB_INITRAMFS}" in
+ *)
+ _INITRAMFS="live"
+ ;;
+esac
+
+# Assembling image specifics
+case "${LIVE_IMAGE_TYPE}" in
+ iso*)
+ _BOOTLOADER="isolinux"
+
+ case "${LB_MODE}" in
+ progress-linux)
+ _TARGET="binary/boot"
+ ;;
+
+ *)
+ _TARGET="binary/isolinux"
+ ;;
+ esac
+ ;;
+
+ netboot)
+ _BOOTLOADER="pxelinux"
+ _TARGET="tftpboot"
+ ;;
+
+ hdd*|*)
+ case ${LB_BINARY_FILESYSTEM} in
+ fat*|ntfs)
+ _BOOTLOADER=syslinux
+
+ case "${LB_MODE}" in
+ progress-linux)
+ _TARGET="binary/boot"
+ ;;
+
+ *)
+ _TARGET="binary/syslinux"
+ ;;
+ esac
+ ;;
+
+ ext[234]|btrfs)
+ _BOOTLOADER=extlinux
+ _TARGET="binary/boot/extlinux"
+ ;;
+ *)
+ Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}"
+ exit 1
+ ;;
+ esac
+ ;;
+esac
+
+if [ -e "config/bootloaders/${_BOOTLOADER}" ]
+then
+ # Internal local copy
+ _SOURCE="config/bootloaders/${_BOOTLOADER}"
+else
+ # Internal system copy
+ if [ -n "${LIVE_BUILD}" ]
+ then
+ _SOURCE="${LIVE_BUILD}/share/bootloaders/${_BOOTLOADER}"
+ else
+ _SOURCE="/usr/share/live/build/bootloaders/${_BOOTLOADER}"
+ fi
+fi
+
+# Checking depends
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ Check_package chroot /usr/lib/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z]) ${_BOOTLOADER}
+ Check_package chroot /usr/lib/syslinux syslinux-common
+
+ if ls "${_SOURCE}"/*.svg* > /dev/null 2>&1
+ then
+ Check_package chroot /usr/bin/rsvg-convert librsvg2-bin
+ fi
+ ;;
+
+ false)
+ if [ ! -e "/usr/share/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z])" ]
+ then
+ Echo_error "/usr/share/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z])"
+ exit 1
+ fi
+
+ if [ ! -e /usr/lib/syslinux ]
+ then
+ # syslinux-common
+ Echo_error "/usr/lib/syslinux - no such directory"
+ exit 1
+ fi
+
+ if ls "${_SOURCE}"/*.svg* > /dev/null 2>&1
+ then
+ if [ ! -e /usr/bin/rsvg-convert ]
+ then
+ # librsvg2-bin
+ Echo_error "/usr/bin/rsvg-convert - no such file"
+ exit 1
+ fi
+ fi
+ ;;
+esac
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+# Copying files
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ mkdir -p ${_TARGET}
+
+ # Copy in two steps since the theme can have absolute symlinks and would therefore not be dereferenced correctly
+ cp -a ${_SOURCE} chroot/root
+ Chroot chroot cp -aL /root/$(basename ${_SOURCE}) /root/$(basename ${_SOURCE}).tmp > /dev/null 2>&1 || true
+ cp -a chroot/root/$(basename ${_SOURCE}).tmp/* ${_TARGET}
+ rm -rf chroot/root/$(basename ${_SOURCE}) chroot/root/$(basename ${_SOURCE}).tmp
+ ;;
+
+ false)
+ mkdir -p ${_TARGET}
+
+ cp -aL ${_SOURCE}/* ${_TARGET} > /dev/null 2>&1 || true
+ ;;
+esac
+
+# Configuring files
+if [ -e "${_TARGET}/live.cfg.in" ]
+then
+ # This is all rather suboptimal.. needs prettifying at some point
+ _FLAVOURS="$(echo ${LB_LINUX_FLAVOURS} | wc -w)"
+
+ case "${_FLAVOURS}" in
+ 1)
+ # If multiple initrd images are being generated (by DKMS packages, etc),
+ # we likely only want the latest version.
+ mv $(ls -r1 --sort=version binary/${_INITRAMFS}/vmlinuz-* | head -n 1) binary/${_INITRAMFS}/vmlinuz
+ mv $(ls -r1 --sort=version binary/${_INITRAMFS}/initrd.img-* | head -n 1) binary/${_INITRAMFS}/initrd.img
+
+ sed -e "s|@FLAVOUR@|${LB_LINUX_FLAVOURS}|g" \
+ -e "s|@LINUX@|/${_INITRAMFS}/vmlinuz|g" \
+ -e "s|@INITRD@|/${_INITRAMFS}/initrd.img|g" \
+ "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
+
+ rm -f "${_TARGET}/live.cfg.in"
+ ;;
+
+ *)
+ _NUMBER="0"
+
+ for _FLAVOUR in ${LB_LINUX_FLAVOURS}
+ do
+ _NUMBER="$((${_NUMBER} + 1))"
+
+ mv binary/${_INITRAMFS}/vmlinuz-*-${_FLAVOUR} binary/${_INITRAMFS}/vmlinuz${_NUMBER}
+ mv binary/${_INITRAMFS}/initrd.img-*-${_FLAVOUR} binary/${_INITRAMFS}/initrd${_NUMBER}.img
+
+ if [ "${_NUMBER}" -gt 1 ]
+ then
+ echo "" >> "${_TARGET}/live.cfg"
+ grep -v 'menu default' "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
+ else
+ cat "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
+ fi
+
+ sed -i -e "s|@FLAVOUR@|${_FLAVOUR}|g" \
+ -e "s|@LINUX@|/${_INITRAMFS}/vmlinuz${_NUMBER}|g" \
+ -e "s|@INITRD@|/${_INITRAMFS}/initrd${_NUMBER}.img|g" \
+ "${_TARGET}/live.cfg"
+ done
+
+ rm -f "${_TARGET}/live.cfg.in"
+ ;;
+ esac
+fi
+
+if [ -e chroot/etc/os-release ]
+then
+ _VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})"
+fi
+
+_VERSION="${_VERSION:-none}"
+
+_DISTRIBUTION="${LB_DISTRIBUTION}"
+_ARCHITECTURE="${LB_ARCHITECTURES}"
+
+_DATE=$(date -R)
+_YEAR="$(date +%Y)"
+_MONTH="$(date +%m)"
+_DAY="$(date +%d)"
+_HOUR="$(date +%H)"
+_MINUTE="$(date +%M)"
+_SECOND="$(date +%S)"
+
+_LINUX_VERSIONS="$(for _LINUX in chroot/boot/vmlinuz-* ; do chroot chroot apt-cache policy $(basename ${_LINUX} | sed -e 's|vmlinuz-|linux-image-|') | awk '/Installed: / { print $2 }' ; done | sort -Vru | tr "\n" " ")"
+
+_SYSTEM_BUILD_VERSION="$(lb --version)"
+_SYSTEM_BOOT_VERSION="$(chroot chroot apt-cache policy open-infrastructure-system-boot | awk '/Installed: / { print $2 }')"
+_SYSTEM_CONFIG_VERSION="$(chroot chroot apt-cache policy open-infrastructure-system-config | awk '/Installed: / { print $2 }')"
+
+case "${LB_MODE}" in
+ progress-linux)
+ _PROJECT="Progress Linux"
+ ;;
+
+ *)
+ _PROJECT="Debian GNU/Linux"
+ ;;
+esac
+
+for _FILE in "${_TARGET}"/*.cfg ${_TARGET}/*.svg
+do
+ if [ -e "${_FILE}" ] && [ ! -d "${_FILE}" ]
+ then
+ sed -i -e "s#@APPEND_LIVE@#${LB_BOOTAPPEND_LIVE}#g" \
+ -e "s#@APPEND_LIVE_FAILSAFE@#${LB_BOOTAPPEND_LIVE_FAILSAFE}#g" \
+ -e "s#@APPEND_INSTALL@#${LB_BOOTAPPEND_INSTALL}#g" \
+ -e "s#@APPEND_INSTALL_FAILSAFE@#${LB_BOOTAPPEND_INSTALL_FAILSAFE}#g" \
+ -e "s|@PROJECT@|${_PROJECT}|g" \
+ -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \
+ -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \
+ -e "s|@VERSION@|${_VERSION}|g" \
+ -e "s|@ARCHITECTURE@|${_ARCHITECTURE}|g" \
+ -e "s|@DATE@|${_DATE}|g" \
+ -e "s|@YEAR@|${_YEAR}|g" \
+ -e "s|@MONTH@|${_MONTH}|g" \
+ -e "s|@DAY@|${_DAY}|g" \
+ -e "s|@HOUR@|${_HOUR}|g" \
+ -e "s|@MINUTE@|${_MINUTE}|g" \
+ -e "s|@SECOND@|${_SECOND}|g" \
+ -e "s|@LINUX_VERSIONS@|${_LINUX_VERSIONS}|g" \
+ -e "s|@SYSTEM_BUILD_VERSION@|${_SYSTEM_BUILD_VERSION}|g" \
+ -e "s|@SYSTEM_BOOT_VERSION@|${_SYSTEM_BOOT_VERSION}|g" \
+ -e "s|@SYSTEM_CONFIG_VERSION@|${_SYSTEM_CONFIG_VERSION}|g" \
+ "${_FILE}"
+ fi
+done
+
+if [ -e "${_TARGET}/splash.svg" ]
+then
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ cp "${_TARGET}/splash.svg" chroot
+ Chroot chroot "rsvg-convert --format png --height 480 --width 640 splash.svg -o splash.png"
+ mv chroot/splash.png "${_TARGET}"
+ rm -f chroot/splash.svg
+ ;;
+
+ false)
+ rsvg-convert --format png --height 480 --width 640 "${_TARGET}/splash.svg" -o "${_TARGET}/splash.png"
+ ;;
+ esac
+
+ rm -f "${_TARGET}/splash.svg"
+fi
+
+case "${LB_MODE}" in
+ progress-linux)
+ for _FILE in "${_TARGET}/isolinux.bin" "${_TARGET}/isolinux.cfg" "${_TARGET}/syslinux.cfg"
+ do
+ if [ -e "${_FILE}" ]
+ then
+ mv "${_FILE}" "${_TARGET}/$(echo ${_FILE} | sed -e 's|.*linux|boot|')"
+ fi
+ done
+ ;;
+esac
+
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Saving cache
+ Save_cache cache/packages.binary
+
+ # Removing depends
+ Remove_package
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/binary_syslinux
diff --git a/system-build/scripts/build/binary_tar b/system-build/scripts/build/binary_tar
new file mode 100755
index 0000000..2200586
--- /dev/null
+++ b/system-build/scripts/build/binary_tar
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build binary tarball')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if ! In_list tar "${LIVE_IMAGE_TYPE}"
+then
+ exit 0
+fi
+
+Echo_message "Begin building binary tarball..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_tar
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Remove old binary
+rm -f ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.bz2 ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.gz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.lz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar
+
+tar cf ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar binary
+
+case "${LB_COMPRESSION}" in
+ bzip2)
+ bzip2 ${BZIP2_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar
+ ;;
+
+ gzip)
+ gzip ${GZIP_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar
+ ;;
+
+ lzip)
+ lzip ${LZIP_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar
+ ;;
+
+ xz)
+ xz ${XZ_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar
+ ;;
+
+ none)
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/binary_tar
diff --git a/system-build/scripts/build/binary_win32-loader b/system-build/scripts/build/binary_win32-loader
new file mode 100755
index 0000000..b04103a
--- /dev/null
+++ b/system-build/scripts/build/binary_win32-loader
@@ -0,0 +1,135 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'copy win32-loader into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_WIN32_LOADER}" != "true" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin copying win32-loader..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_win32-loader
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LB_MODE}" in
+ progress-linux)
+ RUN_LABEL="Run Progress Linux"
+ ;;
+
+ *)
+ RUN_LABEL="Run Debian GNU/Linux"
+ ;;
+esac
+
+case "${LB_ARCHITECTURES}" in
+ amd64|i386)
+ if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
+ then
+ # Checking depends
+ Check_package chroot /usr/share/win32/win32-loader.exe win32-loader
+
+ # Restoring cache
+ Restore_cache cache/packages.binary
+
+ # Installing depends
+ Install_package
+
+ # Copying win32-loader
+ cp -r chroot/usr/share/win32/* binary
+ else
+ cp -r usr/share/win32/* binary
+ fi
+
+ mv binary/win32-loader.exe binary/setup.exe
+ mv binary/win32-loader/g2ldr* binary
+ rmdir binary/win32-loader > /dev/null 2>&1 || true
+
+cat > binary/autorun.inf << EOF
+[autorun]
+open=setup.exe
+icon=setup.exe,0
+label=${RUN_LABEL}
+
+[Content]
+MusicFiles=false
+PictureFiles=false
+VideoFiles=false
+EOF
+
+ if [ "${LB_DEBIAN_INSTALLER}" != "false" ]
+ then
+
+cat > binary/win32-loader.ini << EOF
+[installer]
+kernel=linux
+arch=${LB_ARCHITECTURES}
+default_desktop=gnome
+${LB_ARCHITECTURES}/linux=install/vmlinuz
+${LB_ARCHITECTURES}/initrd=install/initrd.gz
+EOF
+
+ if [ -e binary/install/gtk ]
+ then
+
+cat >> binary/win32-loader.ini << EOF
+${LB_ARCHITECTURES}/gtk/linux=install/vmlinuz
+${LB_ARCHITECTURES}/gtk/initrd=install/gtk/initrd.gz
+EOF
+
+ fi
+
+cat >> binary/win32-loader.ini << EOF
+
+[grub]
+g2ldr=g2ldr
+g2ldr.mbr=g2ldr.mbr
+EOF
+
+ fi
+
+ # Saving cache
+ Save_cache cache/packages.binary
+
+ # Removing depends
+ Remove_package
+ ;;
+
+ *)
+ Echo_warning "win32-loader inclusion is set to true but not compatible with your architecture, ignoring."
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/binary_win32-loader
diff --git a/system-build/scripts/build/binary_zsync b/system-build/scripts/build/binary_zsync
new file mode 100755
index 0000000..83fdb55
--- /dev/null
+++ b/system-build/scripts/build/binary_zsync
@@ -0,0 +1,130 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build zsync control files')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LIVE_IMAGE_TYPE}" != "iso" ] && [ "${LIVE_IMAGE_TYPE}" != "iso-hybrid" ]
+then
+ exit 0
+fi
+
+if [ "${LB_ZSYNC}" != "true" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin building zsync control files..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_zsync
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package chroot /usr/bin/zsyncmake zsync
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+case "${LIVE_IMAGE_TYPE}" in
+ iso)
+ _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.iso"
+ ;;
+
+ iso-hybrid)
+ _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.hybrid.iso"
+ ;;
+
+ hdd)
+ _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.img"
+ ;;
+
+ net)
+ _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar*"
+ ;;
+
+ tar)
+ _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar*"
+ ;;
+esac
+
+for _IMAGE in ${_IMAGES}
+do
+ if [ -e "${_IMAGE}" ]
+ then
+ case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ mv ${_IMAGE} chroot
+ Chroot chroot "zsyncmake -C -b 2048 -u ${_IMAGE} ${_IMAGE}"
+ mv chroot/${_IMAGE} chroot/${_IMAGE}.zsync ./
+ ;;
+
+ false)
+ zsyncmake -C -b 2048 -u "${_IMAGE}" "${_IMAGE}"
+ ;;
+ esac
+
+ case "${LB_COMPRESSION}" in
+ bzip2)
+ bzip2 ${BZIP2_OPTIONS} ${_IMAGE}.zsync
+ ;;
+
+ gzip)
+ gzip ${GZIP_OPTIONS} ${_IMAGE}.zsync
+ ;;
+
+ lzip)
+ lzip ${LZIP_OPTIONS} ${_IMAGE}.zsync
+ ;;
+
+ xz)
+ xz ${XZ_OPTIONS} ${_IMAGE}.zsync
+ ;;
+
+ none)
+ ;;
+ esac
+ fi
+done
+
+#CHECKSUMS
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/binary_zsync
diff --git a/system-build/scripts/build/bootstrap b/system-build/scripts/build/bootstrap
new file mode 100755
index 0000000..48f2119
--- /dev/null
+++ b/system-build/scripts/build/bootstrap
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+
+# Automatically populating config tree
+if [ -x auto/config ] && [ ! -e .build/config ]
+then
+ Echo_message "Automatically populating config tree."
+ lb config
+fi
+
+# Setting static variables
+DESCRIPTION="$(Echo 'bootstrap a Debian system')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Setup cleanup function
+Setup_cleanup
+
+# Bootstrapping system
+lb bootstrap_cache restore ${@}
+lb bootstrap_debootstrap ${@}
+lb bootstrap_archive-keys ${@}
+lb bootstrap_cache save ${@}
+
+# Configuring chroot
+lb chroot_devpts install ${@}
+lb chroot_proc install ${@}
+lb chroot_selinuxfs install ${@}
+lb chroot_sysfs install ${@}
+lb chroot_debianchroot install ${@}
+lb chroot_dpkg install ${@}
+lb chroot_tmpfs install ${@}
+lb chroot_sysv-rc install ${@}
+lb chroot_hosts install ${@}
+lb chroot_resolv install ${@}
+lb chroot_hostname install ${@}
+lb chroot_apt install ${@}
+
+lb bootstrap_archives binary ${@}
+
+# Deconfiguring chroot
+lb chroot_apt remove ${@}
+lb chroot_hostname remove ${@}
+lb chroot_resolv remove ${@}
+lb chroot_hosts remove ${@}
+lb chroot_sysv-rc remove ${@}
+lb chroot_tmpfs remove ${@}
+lb chroot_dpkg remove ${@}
+lb chroot_debianchroot remove ${@}
+lb chroot_sysfs remove ${@}
+lb chroot_selinuxfs remove ${@}
+lb chroot_proc remove ${@}
+lb chroot_devpts remove ${@}
diff --git a/system-build/scripts/build/bootstrap_archive-keys b/system-build/scripts/build/bootstrap_archive-keys
new file mode 100755
index 0000000..3f4fd45
--- /dev/null
+++ b/system-build/scripts/build/bootstrap_archive-keys
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'bootstrap non-Debian archive-signing-keys')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# TODO: allow verification against user-specified keyring
+# For now, we'll only validate against debian-keyring
+
+# TODO2: use chrooted validation rather than host system based one
+
+case "${LB_MODE}" in
+ progress-linux)
+ case "${LB_DISTRIBUTION}" in
+ artax*)
+ _KEYS="artax artax-backports"
+ ;;
+
+ baureo*)
+ _KEYS="baureo baureo-backports"
+ ;;
+
+ cairon*)
+ _KEYS="cairon cairon-backports"
+ ;;
+ esac
+
+ _URL="${LB_MIRROR_CHROOT}/project/pgp"
+ ;;
+esac
+
+for _KEY in ${_KEYS}
+do
+ Echo_message "Fetching archive-key ${_KEY}..."
+
+ wget -q "${_URL}/archive-key-${_KEY}.asc" -O chroot/key.asc
+ wget -q "${_URL}/archive-key-${_KEY}.asc.sig" -O chroot/key.asc.sig
+
+ if [ -e /usr/bin/gpgv ] && [ -e /usr/share/keyrings/debian-keyring.gpg ]
+ then
+ Echo_message "Verifying archive-key ${_KEY} against debian-keyring..."
+
+ /usr/bin/gpgv --quiet --keyring /usr/share/keyrings/debian-keyring.gpg chroot/key.asc.sig chroot/key.asc > /dev/null 2>&1 || { Echo_error "archive-key ${_KEY} has invalid signature."; return 1;}
+ else
+ Echo_warning "Skipping archive-key ${_KEY} verification, either gpgv or debian-keyring not available on host system..."
+ fi
+
+ Echo_message "Importing archive-key ${_KEY}..."
+
+ Chroot chroot "apt-key add key.asc"
+ rm -f chroot/key.asc chroot/key.asc.sig
+done
+
+Chroot chroot "apt-get update"
+
+# Creating stage file
+Create_stagefile .build/bootstrap_archive-keys
diff --git a/system-build/scripts/build/bootstrap_archives b/system-build/scripts/build/bootstrap_archives
new file mode 100755
index 0000000..4e07051
--- /dev/null
+++ b/system-build/scripts/build/bootstrap_archives
@@ -0,0 +1,273 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /etc/apt/sources.list')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+_PASS="${1:-binary}"
+if [ -n "${1}" ]
+then
+ shift
+fi
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${LB_DERIVATIVE}" in
+ true)
+ _PARENT_FILE="sources.list.d/debian.list"
+ ;;
+
+ false)
+ _PARENT_FILE="sources.list"
+ ;;
+esac
+
+Echo_message "Configuring file /etc/apt/sources.list"
+
+# Checking stage file
+Check_stagefile .build/chroot_archives
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Restoring cache
+Restore_cache cache/packages.chroot
+
+# Configure custom sources.list
+
+if echo "${LB_PARENT_MIRROR_CHROOT}" | grep -q '^file:/'
+then
+ Chroot_bind_path chroot "$(echo ${LB_PARENT_MIRROR_CHROOT} | sed -e 's|file:||')"
+fi
+
+cat > chroot/etc/apt/${_PARENT_FILE} << EOF
+deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}
+EOF
+
+if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+fi
+
+if [ "${LB_DERIVATIVE}" = "true" ]
+then
+ rm -f chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')"
+
+ echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+fi
+
+if [ "${LB_SECURITY}" = "true" ]
+then
+ case "${LB_MODE}" in
+ debian|progress-linux)
+ case "${LB_PARENT_DISTRIBUTION}" in
+ sid)
+
+ ;;
+
+ *)
+ echo "deb ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+ ;;
+ esac
+
+ if [ "${LB_MODE}" = progress-linux ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ else
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+ fi
+ ;;
+ esac
+fi
+
+if [ "${LB_UPDATES}" = "true" ]
+then
+ echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+fi
+
+if [ "${LB_BACKPORTS}" = "true" ]
+then
+ case "${LB_MODE}" in
+ debian)
+ if [ "${LB_PARENT_DISTRIBUTION}" != "sid" ]
+ then
+ echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+ fi
+ ;;
+ esac
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+fi
+
+# Adding local apt sources (chroot)
+for FILE in config/archives/*.list config/archives/*.list.chroot
+do
+ if [ -e "${FILE}" ]
+ then
+ sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \
+ -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \
+ -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \
+ -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \
+ "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)"
+
+ if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ]
+ then
+ # Strip out source archives
+ sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)"
+ fi
+ fi
+done
+
+# Adding local apt configuration (chroot)
+for FILE in config/archives/*.conf config/archives/*.conf.chroot
+do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/etc/apt/apt.conf.d/$(basename ${FILE} .chroot)
+ fi
+done
+
+# Adding local apt preferences (chroot)
+for FILE in config/archives/*.pref config/archives/*.pref.chroot
+do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot)
+ fi
+done
+
+# Check local archive keys
+if Find_files config/archives/*.key || \
+ Find_files config/archives/*.key.chroot
+then
+ for FILE in config/archives/*.key \
+ config/archives/*.key.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/root
+ Chroot chroot "apt-key add /root/$(basename ${FILE})"
+ rm -f chroot/root/$(basename ${FILE})
+ fi
+ done
+fi
+
+# Check local keyring packages
+if Find_files config/archives/*.deb
+then
+ for PACKAGE in config/archives/*.deb
+ do
+ cp ${PACKAGE} chroot/root
+ Chroot chroot "dpkg -i /root/$(basename ${PACKAGE})"
+ rm -f chroot/root/$(basename ${PACKAGE})
+ done
+fi
+
+# Rebuild apt indices from scratch.
+# Due to the fact that apt doesn't understand
+# pinning on the fly, we need to manually remove
+# the cached indices and rebuild them again.
+rm -rf chroot/var/cache/apt/*.bin
+
+Apt chroot update
+
+# Installing keyring packages
+if [ -n "${LB_KEYRING_PACKAGES}" ]
+then
+ Apt chroot "install ${LB_KEYRING_PACKAGES}"
+fi
+
+rm -rf chroot/var/cache/apt/*.bin
+
+Apt chroot update
+
+if [ "${LB_DERIVATIVE}" = "true" ]
+then
+ Apt chroot install apt dpkg
+fi
+
+Apt chroot "upgrade"
+Apt chroot "dist-upgrade"
+
+# Saving cache
+Save_cache cache/packages.chroot
+
+# Creating stage file
+Create_stagefile .build/bootstrap_archives
diff --git a/system-build/scripts/build/bootstrap_cache b/system-build/scripts/build/bootstrap_cache
new file mode 100755
index 0000000..bef9e5e
--- /dev/null
+++ b/system-build/scripts/build/bootstrap_cache
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'cache bootstrap stage')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Check architecture
+Check_crossarchitectures
+
+for STAGE in ${LB_CACHE_STAGES}
+do
+ if [ "${STAGE}" = "bootstrap" ]
+ then
+ case "${1}" in
+ restore)
+ Echo_message "Restoring bootstrap stage from cache..."
+
+ # Checking stage file
+ Check_stagefile .build/bootstrap_cache.restore
+
+ if [ -d cache/bootstrap ]
+ then
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Removing old chroot
+ rm -rf chroot
+
+ # Restoring old cache
+ cp -a cache/bootstrap chroot
+
+ # Creating stage file
+ Create_stagefile .build/bootstrap_cache.restore
+ Create_stagefile .build/bootstrap
+
+ exit 0
+ fi
+ ;;
+
+ save)
+ Echo_message "Saving bootstrap stage to cache..."
+
+ # Checking stage file
+ Check_stagefile .build/bootstrap_cache.save
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ rm -rf cache/bootstrap
+
+ mkdir -p cache
+
+ cp -a chroot cache/bootstrap
+
+ # Creating stage file
+ Create_stagefile .build/bootstrap_cache.save
+ ;;
+ esac
+ fi
+done
diff --git a/system-build/scripts/build/bootstrap_debootstrap b/system-build/scripts/build/bootstrap_debootstrap
new file mode 100755
index 0000000..b95475e
--- /dev/null
+++ b/system-build/scripts/build/bootstrap_debootstrap
@@ -0,0 +1,138 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'bootstrap a Debian system with debootstrap(8)')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ ! -x "$(which debootstrap 2>/dev/null)" ]
+then
+ echo "E: debootstrap - command not found"
+ echo "I: debootstrap can be obtained from http://ftp.debian.org/debian/pool/main/d/debootstrap/"
+ echo "I: On Debian based systems, debootstrap can be installed with 'apt-get install debootstrap'."
+ exit 1
+fi
+
+# Check architecture
+Check_crossarchitectures
+
+Echo_message "Begin bootstrapping system..."
+
+Check_package chroot bin/debootstrap debootstrap
+
+# Checking stage file
+Check_stagefile .build/bootstrap
+Check_stagefile .build/bootstrap_cache.restore
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Creating chroot directory
+mkdir -p chroot
+
+# Setting debootstrap options
+if [ -n "${LB_ARCHITECTURES}" ]
+then
+ DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --arch=${LB_ARCHITECTURES}"
+fi
+
+if [ "${LB_ARCHIVE_AREAS}" != "main" ]
+then
+ # Modify archive areas to remove leading/trailing whitespaces and replace other whitepspace with commas
+ DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --components=$(echo ${LB_ARCHIVE_AREAS} | sed -e 's| |,|g')"
+fi
+
+if [ "${_VERBOSE}" = "true" ]
+then
+ DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --verbose"
+fi
+
+# If LB_APT_SECURE is false, do not check signatures of the Release file
+# (requires debootstrap >= 1.0.30)
+if [ "${LB_APT_SECURE}" = "false" ] && /usr/sbin/debootstrap --help | grep -qs '\-\-no-check-gpg'
+then
+ DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --no-check-gpg"
+fi
+
+# Include apt-transport-https
+if grep -qs '^deb https' config/archives/*.list ||
+ grep -qs '^deb https' config/archives/*.list.*
+then
+ DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --include=apt-transport-https,ca-certificates"
+fi
+
+if [ -x "/usr/sbin/debootstrap" ]
+then
+ if [ "${LB_CACHE_PACKAGES}" = "true" ]
+ then
+ if ls cache/packages.bootstrap/*.deb > /dev/null 2>&1
+ then
+ mkdir -p chroot/var/cache/apt/archives
+ cp cache/packages.bootstrap/*.deb chroot/var/cache/apt/archives
+ fi
+
+ Echo_breakage "Running debootstrap (download-only)... "
+ debootstrap ${DEBOOTSTRAP_OPTIONS} --download-only "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
+
+ # Removing old cache
+ rm -f cache/packages.bootstrap/*.deb
+
+ # Saving new cache
+ mkdir -p cache/packages.bootstrap
+ cp chroot/var/cache/apt/archives/*.deb cache/packages.bootstrap
+ fi
+
+ Echo_breakage "Running debootstrap... "
+
+ # Run appropriate bootstrap, i.e. foreign or regular bootstrap
+ if [ "${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" = "${LB_ARCHITECTURES}" ]; then
+
+ if [ -n "${LB_BOOTSTRAP_QEMU_EXCLUDE}" ]
+ then
+ DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --exclude=$(echo ${LB_BOOTSTRAP_QEMU_EXCLUDE} | sed 's| *|,|g')"
+ fi
+
+ Echo_message "Bootstrap will be foreign"
+ debootstrap ${DEBOOTSTRAP_OPTIONS} --foreign "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
+
+ Echo_message "Running debootstrap second stage under QEMU"
+ cp ${LB_BOOTSTRAP_QEMU_STATIC} chroot/usr/bin
+ Chroot chroot /bin/sh /debootstrap/debootstrap --second-stage
+ else
+ debootstrap ${DEBOOTSTRAP_OPTIONS} "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
+ fi
+
+ # Deconfiguring debootstrap configurations
+ rm -f chroot/etc/hosts
+
+ # Removing bootstrap cache
+ rm -f chroot/var/cache/apt/archives/*.deb
+
+ # Creating stage file
+ Create_stagefile .build/bootstrap
+else
+ Echo_error "Can't process file /usr/bin/debootstrap (FIXME)"
+ exit 1
+fi
diff --git a/system-build/scripts/build/build b/system-build/scripts/build/build
new file mode 100755
index 0000000..18971ea
--- /dev/null
+++ b/system-build/scripts/build/build
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+
+# Automatically populating config tree
+if [ -x auto/config ] && [ ! -e .build/config ]
+then
+ Echo_message "Automatically populating config tree."
+ lb config
+fi
+
+# Read meta config
+if [ "${1}" != "noauto" ] && [ -x auto/build ]
+then
+ Echo_message "Executing auto/build script."
+ ./auto/build "${@}"
+ exit ${?}
+fi
+
+if [ "${1}" = "noauto" ]
+then
+ shift
+fi
+
+# Setting static variables
+DESCRIPTION="$(Echo 'build a Debian Live system')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+if [ ! -d config ]
+then
+ Echo_warning "No config/ directory; using defaults for all options"
+ lb config
+fi
+
+if [ "$(pwd)" = "/" ]
+then
+ Echo_error "Cannot build live image from the root directory (/)"
+ exit 1
+fi
+
+if echo $(pwd) | grep -qs " "
+then
+ Echo_error "Cannot build live image from a directory containing spaces"
+ exit 1
+fi
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Checking defaults
+Check_defaults
+
+Echo_message "live-build ${LIVE_BUILD_VERSION}"
+Echo_message "Building config tree for a ${LB_MODE}/${LB_DISTRIBUTION}/${LB_ARCHITECTURES} system"
+
+# Bootstrapping system
+lb bootstrap ${@}
+
+# Customizing chroot
+lb chroot ${@}
+
+# Building installer images
+lb installer ${@}
+
+# Building binary images
+lb binary ${@}
+
+# Building source images
+lb source ${@}
diff --git a/system-build/scripts/build/chroot b/system-build/scripts/build/chroot
new file mode 100755
index 0000000..d6277e6
--- /dev/null
+++ b/system-build/scripts/build/chroot
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+
+# Automatically populating config tree
+if [ -x auto/config ] && [ ! -e .build/config ]
+then
+ Echo_message "Automatically populating config tree."
+ lb config
+fi
+
+# Setting static variables
+DESCRIPTION="$(Echo 'customize the Debian system')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Setup cleanup function
+Setup_cleanup
+
+# Configuring chroot
+lb chroot_cache restore ${@}
+lb chroot_devpts install ${@}
+lb chroot_proc install ${@}
+lb chroot_selinuxfs install ${@}
+lb chroot_sysfs install ${@}
+lb chroot_debianchroot install ${@}
+lb chroot_dpkg install ${@}
+lb chroot_tmpfs install ${@}
+lb chroot_sysv-rc install ${@}
+lb chroot_hosts install ${@}
+lb chroot_resolv install ${@}
+lb chroot_hostname install ${@}
+lb chroot_apt install ${@}
+lb chroot_archives chroot install ${@}
+
+# Customizing chroot
+lb chroot_linux-image ${@}
+lb chroot_firmware ${@}
+lb chroot_preseed ${@}
+
+for _PASS in install live
+do
+ lb chroot_package-lists ${_PASS} ${@}
+ lb chroot_install-packages ${_PASS} ${@}
+
+ if [ "${_PASS}" = install ]
+ then
+ Chroot chroot "dpkg-query -W" > chroot.packages.install
+ fi
+done
+
+lb chroot_includes ${@}
+lb chroot_hooks ${@}
+lb chroot_hacks ${@}
+lb chroot_interactive ${@}
+
+Chroot chroot "dpkg-query -W" > chroot.packages.live
+
+# Deconfiguring chroot
+lb chroot_archives chroot remove ${@}
+lb chroot_apt remove ${@}
+lb chroot_hostname remove ${@}
+lb chroot_resolv remove ${@}
+lb chroot_hosts remove ${@}
+lb chroot_sysv-rc remove ${@}
+lb chroot_tmpfs remove ${@}
+lb chroot_dpkg remove ${@}
+lb chroot_debianchroot remove ${@}
+lb chroot_sysfs remove ${@}
+lb chroot_selinuxfs remove ${@}
+lb chroot_proc remove ${@}
+lb chroot_devpts remove ${@}
+lb chroot_cache save ${@}
+
+Chroot chroot "ls -lR" > chroot.files
diff --git a/system-build/scripts/build/chroot_apt b/system-build/scripts/build/chroot_apt
new file mode 100755
index 0000000..5f7c2cc
--- /dev/null
+++ b/system-build/scripts/build/chroot_apt
@@ -0,0 +1,315 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /etc/apt/apt.conf')"
+HELP=""
+USAGE="${PROGRAM} {install|install-binary|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install|install-binary)
+ Echo_message "Configuring file /etc/apt/apt.conf"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_apt
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ mkdir -p chroot/etc/apt/apt.conf.d
+
+ # Configuring apt ftp proxy
+ if [ -n "${LB_APT_FTP_PROXY}" ]
+ then
+ echo "Acquire::ftp::Proxy \"${LB_APT_FTP_PROXY}\";" > chroot/etc/apt/apt.conf.d/00ftp-proxy
+ fi
+
+ # Configuring apt http proxy
+ if [ -n "${LB_APT_HTTP_PROXY}" ]
+ then
+ echo "Acquire::http::Proxy \"${LB_APT_HTTP_PROXY}\";" > chroot/etc/apt/apt.conf.d/00http-proxy
+ fi
+
+ # Configuring apt pipeline
+ if [ -n "${LB_APT_PIPELINE}" ]
+ then
+ echo "Acquire::http::Pipeline-Depth \"${LB_APT_PIPELINE}\";" > chroot/etc/apt/apt.conf.d/00pipeline
+ fi
+
+ # Configuring apt recommends
+ case "${LB_APT_RECOMMENDS}" in
+ true)
+ echo "APT::Install-Recommends \"true\";" > chroot/etc/apt/apt.conf.d/00recommends
+ ;;
+
+ false)
+ echo "APT::Install-Recommends \"false\";" > chroot/etc/apt/apt.conf.d/00recommends
+ ;;
+ esac
+
+ # Configuring apt secure
+ case "${LB_APT_SECURE}" in
+ true)
+ echo "APT::Get::AllowUnauthenticated \"false\";" > chroot/etc/apt/apt.conf.d/00secure
+ ;;
+
+ false)
+ echo "APT::Get::AllowUnauthenticated \"true\";" > chroot/etc/apt/apt.conf.d/00secure
+ ;;
+ esac
+
+ # Configuring apt config
+ if [ -f config/apt/apt.conf ]
+ then
+ if [ -f chroot/etc/apt/apt.conf ]
+ then
+ mv chroot/etc/apt/apt.conf chroot/etc/apt/apt.conf.orig
+ fi
+
+ cp config/apt/apt.conf chroot/etc/apt/apt.conf
+ fi
+
+ # Configuring apt preferences
+ if [ -f config/apt/preferences ]
+ then
+ if [ -f chroot/etc/apt/preferences ]
+ then
+ mv chroot/etc/apt/preferences chroot/etc/apt/preferences.orig
+ fi
+
+ cp config/apt/preferences chroot/etc/apt/preferences
+ fi
+
+ if Find_files config/apt/*.pref
+ then
+ for _FILE in config/apt/*.pref
+ do
+ if [ -f chroot/etc/apt/preferences.d/$(basename ${_FILE}) ]
+ then
+ mv chroot/etc/apt/preferences.d/$(basename ${_FILE}) chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig
+ fi
+
+ cp -aL ${_FILE} chroot/etc/apt/preferences.d
+ done
+ fi
+
+ if Find_files config/packages.chroot/*.deb || Find_files config/packages/*.deb
+ then
+ echo >> chroot/etc/apt/preferences
+ echo "# Added by lb_chroot_apt ${@}" >> chroot/etc/apt/preferences
+ echo "Package: *" >> chroot/etc/apt/preferences
+ echo "Pin: release o=config/packages.chroot" >> chroot/etc/apt/preferences
+
+ case "${1}" in
+ install)
+ # Ensure local packages have priority
+ echo "Pin-Priority: 1001" >> chroot/etc/apt/preferences
+ ;;
+
+ install-binary)
+ # Ensure local packages are not re-installed during lb_binary
+ echo "Pin-Priority: 99" >> chroot/etc/apt/preferences
+
+ echo >> chroot/etc/apt/preferences
+ echo "Package: *" >> chroot/etc/apt/preferences
+ echo "Pin: release o=debian" >> chroot/etc/apt/preferences
+ echo "Pin-Priority: 99" >> chroot/etc/apt/preferences
+ ;;
+ esac
+ fi
+
+ case "${LB_MODE}" in
+ progress-linux)
+ if [ ! -e chroot/etc/apt/preferences.d/progress-linux.pref ]
+ then
+ _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')"
+
+ _ENABLE_DISTRIBUTIONS="${_DISTRIBUTION}"
+ _DISABLE_DISTRIBUTIONS=""
+
+ if [ "${LB_SECURITY}" = "true" ]
+ then
+ _ENABLE_DISTRIBUTIONS="${_ENABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-security"
+ fi
+
+ if [ "${LB_UPDATES}" = "true" ]
+ then
+ _ENABLE_DISTRIBUTIONS="${_ENABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-updates"
+ fi
+
+ case "${LB_DISTRIBUTION}" in
+ *-backports)
+ if [ "${LB_BACKPORTS}" = "true" ]
+ then
+ _ENABLE_DISTRIBUTIONS="${_ENABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-backports"
+ fi
+ ;;
+
+ *)
+ if [ "${LB_BACKPORTS}" = "true" ]
+ then
+ _DISABLE_DISTRIBUTIONS="${_DISABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-backports"
+ fi
+ ;;
+ esac
+
+ for _DISTRIBUTION in ${_ENABLE_DISTRIBUTIONS}
+ do
+
+cat >> chroot/etc/apt/preferences.d/progress-linux.pref << EOF
+
+Package: *
+Pin: release n=${_DISTRIBUTION}
+Pin-Priority: 999
+EOF
+
+ done
+
+ for _DISTRIBUTION in ${_DISABLE_DISTRIBUTIONS}
+ do
+
+cat >> chroot/etc/apt/preferences.d/progress-linux.pref << EOF
+
+#Package: *
+#Pin: release n=${_DISTRIBUTION}
+#Pin-Priority: 999
+EOF
+
+ done
+ fi
+ ;;
+ esac
+
+ # Creating stage file
+ Create_stagefile .build/chroot_apt
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /etc/apt/apt.conf"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Deconfiguring apt ftp proxy
+ rm -f chroot/etc/apt/apt.conf.d/00ftp-proxy
+
+ # Deconfiguring apt http proxy
+ rm -f chroot/etc/apt/apt.conf.d/00http-proxy
+
+ # Deconfiguring apt pipeline
+ rm -f chroot/etc/apt/apt.conf.d/00pipeline
+
+ # Deconfiguring apt recommends
+ if [ "${LB_APT_RECOMMENDS}" = "true" ]
+ then
+ rm -f chroot/etc/apt/apt.conf.d/00recommends
+ fi
+
+ # Deconfiguring apt secure
+ if [ "${LB_APT_SECURE}" = "true" ]
+ then
+ rm -f chroot/etc/apt/apt.conf.d/00secure
+ fi
+
+ # Configuring apt config
+ if [ -f config/apt/apt.conf ]
+ then
+ if [ -f chroot/etc/apt/apt.conf ]
+ then
+ mv chroot/etc/apt/apt.conf chroot/etc/apt/apt.conf.orig
+ fi
+
+ cp config/apt/apt.conf chroot/etc/apt/apt.conf
+
+ if [ -f chroot/etc/apt/apt.conf.orig ]
+ then
+ mv chroot/etc/apt/apt.conf.orig chroot/etc/apt/apt.conf
+ fi
+ fi
+
+ # Deconfiguring apt preferences
+ if [ -f config/apt/preferences ]
+ then
+ if [ -f chroot/etc/apt/preferences ]
+ then
+ mv chroot/etc/apt/preferences chroot/etc/apt/preferences.orig
+ fi
+
+ cp config/apt/preferences chroot/etc/apt/preferences
+
+ if [ -f chroot/etc/apt/preferences.orig ]
+ then
+ mv chroot/etc/apt/preferences.orig chroot/etc/apt/preferences
+ fi
+ fi
+
+ if Find_files config/apt/*.pref
+ then
+ for _FILE in config/apt/*.pref
+ do
+ if [ -f chroot/etc/apt/preferences.d/$(basename ${_FILE}) ]
+ then
+ mv chroot/etc/apt/preferences.d/$(basename ${_FILE}) chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig
+ fi
+
+ cp -aL ${_FILE} chroot/etc/apt/preferences.d
+
+ if [ -f chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig ]
+ then
+ mv chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig chroot/etc/apt/preferences.d/$(basename ${_FILE})
+ fi
+ done
+ fi
+
+ if Find_files config/packages.chroot/*.deb || Find_files config/packages/*.deb
+ then
+ if [ -f chroot/etc/apt/preferences ]
+ then
+ # delete additions from lb_chroot_apt install|install-binary to preferences
+ sed -i '/# Added by lb_chroot_apt/,$d' chroot/etc/apt/preferences
+ # delete the last empty line
+ sed -i '${/^[[:blank:]]*$/d;}' chroot/etc/apt/preferences
+ # if the resulting preferences file is empty there was no user additions, remove it
+ if [ ! -s chroot/etc/apt/preferences ]
+ then
+ rm -rf chroot/etc/apt/preferences
+ fi
+ fi
+
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_apt
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_archives b/system-build/scripts/build/chroot_archives
new file mode 100755
index 0000000..063f3b6
--- /dev/null
+++ b/system-build/scripts/build/chroot_archives
@@ -0,0 +1,675 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /etc/apt/sources.list')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+_PASS="${1}"
+shift
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${LB_DERIVATIVE}" in
+ true)
+ _PARENT_FILE="sources.list.d/debian.list"
+ ;;
+
+ false)
+ _PARENT_FILE="sources.list"
+ ;;
+esac
+
+case "${1}" in
+ install)
+ Echo_message "Configuring file /etc/apt/sources.list"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_archives
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Restoring cache
+ Restore_cache cache/packages.chroot
+
+ # Configure custom sources.list
+
+if echo "${LB_PARENT_MIRROR_CHROOT}" | grep -q '^file:/'
+then
+ Chroot_bind_path chroot "$(echo ${LB_PARENT_MIRROR_CHROOT} | sed -e 's|file:||')"
+fi
+
+cat > chroot/etc/apt/${_PARENT_FILE} << EOF
+deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}
+EOF
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ rm -f chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')"
+
+ echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+
+ if [ "${LB_SECURITY}" = "true" ]
+ then
+ case "${LB_MODE}" in
+ debian|progress-linux)
+ case "${LB_PARENT_DISTRIBUTION}" in
+ sid)
+
+ ;;
+
+ *)
+ echo "deb ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+ ;;
+ esac
+
+ if [ "${LB_MODE}" = progress-linux ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ else
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ if [ "${LB_UPDATES}" = "true" ]
+ then
+ echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+ fi
+
+ if [ "${LB_BACKPORTS}" = "true" ]
+ then
+ case "${LB_MODE}" in
+ debian)
+ if [ "${LB_PARENT_DISTRIBUTION}" != "sid" ]
+ then
+ echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+ fi
+ ;;
+ esac
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+ fi
+
+ # Adding local apt sources (chroot)
+ for FILE in config/archives/*.list config/archives/*.list.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \
+ -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \
+ -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \
+ -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \
+ "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)"
+
+ if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ]
+ then
+ # Strip out source archives
+ sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)"
+ fi
+ fi
+ done
+
+ # Adding local apt configuration (chroot)
+ for FILE in config/archives/*.conf config/archives/*.conf.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/etc/apt/apt.conf.d/$(basename ${FILE} .chroot)
+ fi
+ done
+
+ # Adding local apt preferences (chroot)
+ for FILE in config/archives/*.pref config/archives/*.pref.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot)
+ fi
+ done
+
+ # Configure local package repository
+ if Find_files config/packages.chroot/*.deb || Find_files config/packages/*.deb
+ then
+ rm -rf chroot/root/packages
+ mkdir -p chroot/root/packages
+
+ if [ "$(stat --printf %d config/packages.chroot/)" = "$(stat --printf %d chroot/root/packages/)" ] ||
+ [ "$(stat --printf %d config/packages/)" = "$(stat --printf %d chroot/root/packages/)" ]
+ then
+ CP_OPTIONS="-l"
+ fi
+
+ # Copy packages
+ if Find_files config/packages.chroot/*_"${LB_ARCHITECTURES}".deb || Find_files config/packages/*_"${LB_ARCHITECTURES}".deb
+ then
+ for FILE in config/packages.chroot/*_"${LB_ARCHITECTURES}".deb config/packages/*_"${LB_ARCHITECTURES}".deb
+ do
+ if [ -L "${FILE}" ]
+ then
+ cp -L "${FILE}" chroot/root/packages
+ elif [ -e "${FILE}" ]
+ then
+ cp ${CP_OPTIONS} "${FILE}" chroot/root/packages
+ fi
+ done
+ fi
+
+ if Find_files config/packages.chroot/*_all.deb || Find_files config/packages/*_all.deb
+ then
+ for FILE in config/packages.chroot/*_all.deb config/packages/*_all.deb
+ do
+ if [ -L "${FILE}" ]
+ then
+ cp -L "${FILE}" chroot/root/packages
+ elif [ -e "${FILE}" ]
+ then
+ cp ${CP_OPTIONS} "${FILE}" chroot/root/packages
+ fi
+ done
+ fi
+
+ if Find_files chroot/root/packages/*.deb
+ then
+ # If we bootstrapped a minimal chroot, we need
+ # to install apt-utils before we have
+ # completed all the indices.
+ if [ ! -e chroot/usr/bin/apt-ftparchive ]
+ then
+ Apt chroot update
+ fi
+
+ # Check depends
+ Check_package chroot /usr/bin/apt-ftparchive apt-utils
+
+ # Installing depends
+ Install_package
+
+ # Generate Packages and Packages.gz
+ echo "cd /root/packages && apt-ftparchive packages . > Packages" | Chroot chroot sh
+ gzip -9 -c chroot/root/packages/Packages > chroot/root/packages/Packages.gz
+
+ # Generate Release
+ echo "cd /root/packages && apt-ftparchive \
+ -o APT::FTPArchive::Release::Origin=config/packages.chroot \
+ release . > Release" | Chroot chroot sh
+
+ # Add to sources.list.d
+ echo "deb [ trusted=yes ] file:/root/packages ./" > chroot/etc/apt/sources.list.d/packages.list
+
+ # Move top-level sources away, otherwise apt always preferes it (#644148)
+ if [ -e chroot/etc/apt/sources.list ]
+ then
+ mv chroot/etc/apt/sources.list chroot/etc/apt/sources.list.d/zz-sources.list
+ fi
+
+ # Removing depends
+ Remove_package
+ else
+ Echo_warning "Local packages must be named with suffix '_all.deb' or '_\$architecture.deb'."
+ fi
+ fi
+
+ if Find_files chroot/root/packages/*.deb
+ then
+ gunzip < chroot/root/packages/Packages.gz | awk '/^Package: / { print $2 }' \
+ >> chroot/root/packages.chroot
+ fi
+
+ # Update indices from cache
+ if [ "${LB_CACHE_INDICES}" = "true" ] && [ -d cache/indices.bootstrap ]
+ then
+ if Find_files cache/indices.bootstrap/secring.gpg*
+ then
+ cp -f cache/indices.bootstrap/secring.gpg* chroot/etc/apt
+ fi
+
+ if Find_files cache/indices.bootstrap/trusted.gpg*
+ then
+ cp -rf cache/indices.bootstrap/trusted.gpg* chroot/etc/apt
+ fi
+
+ if [ -f cache/indices.bootstrap/pkgcache.bin ]
+ then
+ cp -f cache/indices.bootstrap/pkgcache.bin chroot/var/cache/apt
+ fi
+
+ if [ -f cache/indices.bootstrap/srcpkgcache.bin ]
+ then
+ cp -f cache/indices.bootstrap/srcpkgcache.bin chroot/var/cache/apt
+ fi
+
+ if Find_files cache/indices.bootstrap/*_Packages
+ then
+ cp -f cache/indices.bootstrap/*_Packages chroot/var/lib/apt/lists
+ fi
+
+ if Find_files cache/indices.bootstrap/*_Sources
+ then
+ cp -f cache/indices.bootstrap/*_Sources chroot/var/lib/apt/lists
+ fi
+
+ if Find_files cache/indices.bootstrap/*Release*
+ then
+ cp -f cache/indices.bootstrap/*Release* chroot/var/lib/apt/lists
+ fi
+ else # Get fresh indices
+ # Check local archive keys
+ if Find_files config/archives/*.key || \
+ Find_files config/archives/*.key.chroot
+ then
+ for FILE in config/archives/*.key \
+ config/archives/*.key.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/root
+ Chroot chroot "apt-key add /root/$(basename ${FILE})"
+ rm -f chroot/root/$(basename ${FILE})
+ fi
+ done
+ fi
+
+ # Check local keyring packages
+ if Find_files config/archives/*.deb
+ then
+ for PACKAGE in config/archives/*.deb
+ do
+ cp ${PACKAGE} chroot/root
+ Chroot chroot "dpkg -i /root/$(basename ${PACKAGE})"
+ rm -f chroot/root/$(basename ${PACKAGE})
+ done
+ fi
+
+ # Rebuild apt indices from scratch.
+ # Due to the fact that apt doesn't understand
+ # pinning on the fly, we need to manually remove
+ # the cached indices and rebuild them again.
+ rm -rf chroot/var/cache/apt/*.bin
+
+ Apt chroot update
+
+ # Installing keyring packages
+ if [ -n "${LB_KEYRING_PACKAGES}" ]
+ then
+ Apt chroot "install ${LB_KEYRING_PACKAGES}"
+ fi
+
+ rm -rf chroot/var/cache/apt/*.bin
+
+ Apt chroot update
+ Apt chroot "upgrade"
+ Apt chroot "dist-upgrade"
+
+ if [ "${LB_CACHE_INDICES}" = "true" ]
+ then
+ mkdir -p cache/indices.bootstrap
+
+ if Find_files chroot/etc/apt/secring.gpg*
+ then
+ cp -f chroot/etc/apt/secring.gpg* cache/indices.bootstrap
+ fi
+
+ cp -rf chroot/etc/apt/trusted.gpg* cache/indices.bootstrap
+
+ cp -f chroot/var/cache/apt/pkgcache.bin cache/indices.bootstrap
+
+ if Find_files chroot/var/cache/apt/srcpkgcache.bin
+ then
+ cp -f chroot/var/cache/apt/srcpkgcache.bin cache/indices.bootstrap
+ fi
+
+ cp -f chroot/var/lib/apt/lists/*_Packages cache/indices.bootstrap
+
+ if Find_files chroot/var/lib/apt/lists/*_Sources
+ then
+ cp -f chroot/var/lib/apt/lists/*_Sources cache/indices.bootstrap
+ fi
+
+ cp -f chroot/var/lib/apt/lists/*Release* cache/indices.bootstrap
+ fi
+ fi
+
+ # Saving cache
+ Save_cache cache/packages.chroot
+
+ # Creating stage file
+ Create_stagefile .build/chroot_archives
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /etc/apt/sources.list"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Restore top-level sources
+ if [ -e chroot/etc/apt/sources.list.d/zz-sources.list ]
+ then
+ mv chroot/etc/apt/sources.list.d/zz-sources.list chroot/etc/apt/sources.list
+ fi
+
+ # Unmount local repository
+if echo "${LB_PARENT_MIRROR_CHROOT}" | grep -q '^file:/'
+then
+ Chroot_unbind_path chroot "$(echo ${LB_PARENT_MIRROR_CHROOT} | sed -e 's|file:||')"
+fi
+
+ # Configure generic indices
+ # Don't do anything if it's not required
+ if [ "${LB_PARENT_MIRROR_CHROOT}" = "${LB_PARENT_MIRROR_BINARY}" ] && \
+ [ "${LB_PARENT_MIRROR_CHROOT_SECURITY}" = "${LB_PARENT_MIRROR_BINARY_SECURITY}" ] && \
+ [ ! -d chroot/root/packages ]
+ then
+ # Removing stage file
+ rm -f .build/chroot_archives
+
+ exit 0
+ fi
+
+ # Cleaning apt list cache
+ rm -rf chroot/var/lib/apt/lists
+ mkdir -p chroot/var/lib/apt/lists/partial
+
+ # Configure custom sources.list
+
+cat > chroot/etc/apt/${_PARENT_FILE} << EOF
+deb ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}
+EOF
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ rm -f chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')"
+
+ echo "deb ${LB_MIRROR_BINARY} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_BINARY} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+
+ if [ "${LB_SECURITY}" = "true" ]
+ then
+ case "${LB_MODE}" in
+ debian|progress-linux)
+ case "${LB_PARENT_DISTRIBUTION}" in
+ sid)
+
+ ;;
+
+ *)
+ echo "deb ${LB_PARENT_MIRROR_BINARY_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_BINARY_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+ ;;
+ esac
+
+ if [ "${LB_MODE}" = progress-linux ]
+ then
+ echo "deb ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ else
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ if [ "${LB_UPDATES}" = "true" ]
+ then
+ echo "deb ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+ fi
+
+ if [ "${LB_BACKPORTS}" = "true" ]
+ then
+ case "${LB_MODE}" in
+ debian)
+ if [ "${LB_PARENT_DISTRIBUTION}" != "sid" ]
+ then
+ echo "deb ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE}
+ fi
+ fi
+ ;;
+ esac
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ echo "deb ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+
+ if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ]
+ then
+ echo "deb-src ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list
+ fi
+ fi
+ fi
+
+ # Removing chroot-only apt sources
+ for FILE in config/archives/*.list.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ rm -f "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)"
+ fi
+ done
+
+ # Removing chroot-only apt configuration
+ for FILE in config/archives/*.conf.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ rm -f "chroot/etc/apt/apt.conf.d/$(basename ${FILE} .chroot)"
+ fi
+ done
+
+ # Removing chroot-only apt preferences
+ for FILE in config/archives/*.pref.chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ rm -f "chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot)"
+ fi
+ done
+
+ # Adding local apt sources (binary)
+ for FILE in config/archives/*.list config/archives/*.list.binary
+ do
+ if [ -e "${FILE}" ]
+ then
+ sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \
+ -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \
+ -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \
+ -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \
+ "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)"
+
+ if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ]
+ then
+ # Strip out source archives
+ sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)"
+ fi
+ fi
+ done
+
+ # Adding local apt configuration (binary)
+ for FILE in config/archives/*.conf config/archives/*.conf.binary
+ do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/etc/apt/apt.conf.d/$(basename ${FILE} .binary)
+ fi
+ done
+
+ # Adding local apt preferences (binary)
+ for FILE in config/archives/*.pref config/archives/*.pref.binary
+ do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .binary)
+ fi
+ done
+
+ # Adding local apt keys (binary)
+ for FILE in config/archives/*.key config/archives/*.key.binary
+ do
+ if [ -e "${FILE}" ]
+ then
+ cp ${FILE} chroot/root
+ Chroot chroot "apt-key add /root/$(basename ${FILE})"
+ rm -f chroot/root/$(basename ${FILE})
+ fi
+ done
+
+ # Updating indices
+ Apt chroot update
+
+ # Cleaning apt package cache
+ rm -rf chroot/var/cache/apt
+ mkdir -p chroot/var/cache/apt/archives/partial
+
+ # Cleaning apt package lists
+ if [ "${LB_APT_INDICES}" = "false" ]
+ then
+ rm -rf chroot/var/lib/apt/lists
+ mkdir -p chroot/var/lib/apt/lists/partial
+ fi
+
+ # Remove local package repository
+ rm -f chroot/etc/apt/sources.list.d/packages.list
+ rm -rf chroot/root/packages
+
+ # Removing stage file
+ rm -f .build/chroot_archives
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_cache b/system-build/scripts/build/chroot_cache
new file mode 100755
index 0000000..96f7af2
--- /dev/null
+++ b/system-build/scripts/build/chroot_cache
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'cache chroot stage')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+for STAGE in ${LB_CACHE_STAGES}
+do
+ if [ "${STAGE}" = "chroot" ]
+ then
+ case "${1}" in
+ restore)
+ Echo_message "Restoring chroot stage from cache..."
+
+ # Checking stage file
+ Check_stagefile .build/chroot_cache.restore
+
+ if [ -d cache/chroot ]
+ then
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Removing old chroot
+ rm -rf chroot
+
+ # Restoring old cache
+ cp -a cache/chroot chroot
+
+ # Creating stage file
+ Create_stagefile .build/chroot_cache.restore
+
+ exit 0
+ fi
+ ;;
+
+ save)
+ Echo_message "Saving chroot stage to cache..."
+
+ # Checking stage file
+ Check_stagefile .build/chroot_cache.save
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ rm -rf cache/chroot
+
+ mkdir -p cache
+
+ cp -a chroot cache/chroot
+
+ # Creating stage file
+ Create_stagefile .build/chroot_cache.save
+ ;;
+ esac
+ fi
+done
diff --git a/system-build/scripts/build/chroot_debianchroot b/system-build/scripts/build/chroot_debianchroot
new file mode 100755
index 0000000..77680f0
--- /dev/null
+++ b/system-build/scripts/build/chroot_debianchroot
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /etc/debian_chroot')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Configuring file /etc/debian_chroot"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_debianchroot
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ if [ -f chroot/etc/debian_chroot ]
+ then
+ # Save chroot file
+ mv chroot/etc/debian_chroot chroot/etc/debian_chroot.orig
+ fi
+
+ # Create chroot file
+ echo "live" > chroot/etc/debian_chroot
+
+ # Creating stage file
+ Create_stagefile .build/chroot_debianchroot
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /etc/debian_chroot"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ if [ -f chroot/etc/debian_chroot.orig ]
+ then
+ # Restore chroot file
+ mv chroot/etc/debian_chroot.orig chroot/etc/debian_chroot
+ else
+ # Remove chroot file
+ rm -f chroot/etc/debian_chroot
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_debianchroot
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_devpts b/system-build/scripts/build/chroot_devpts
new file mode 100755
index 0000000..8fb76a7
--- /dev/null
+++ b/system-build/scripts/build/chroot_devpts
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'mount /dev/pts')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Begin mounting /dev/pts..."
+
+ # Checking stage file
+ Check_stagefile .build/chroot_devpts
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Creating mountpoint
+ mkdir -p chroot/dev/pts
+
+ # Mounting /dev/pts
+ mount devpts-live -t devpts -o gid=5,mode=620 chroot/dev/pts || true
+
+ # Creating stage file
+ Create_stagefile .build/chroot_devpts
+ ;;
+
+ remove)
+ Echo_message "Begin unmounting /dev/pts..."
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Unmounting /dev/pts
+ if grep -qs "$(pwd)/chroot/dev/pts" /proc/mounts || Find_files chroot/dev/pts/*
+ then
+ umount chroot/dev/pts
+ else
+ umount -f chroot/dev/pts > /dev/null 2>&1 || true
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_devpts
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_dpkg b/system-build/scripts/build/chroot_dpkg
new file mode 100755
index 0000000..c6f1574
--- /dev/null
+++ b/system-build/scripts/build/chroot_dpkg
@@ -0,0 +1,105 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /sbin/dpkg')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Configuring file /sbin/start-stop-daemon"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_dpkg
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Create custom start-stop-daemon program
+ Chroot chroot dpkg-divert --rename --quiet --add /sbin/start-stop-daemon
+
+cat > chroot/sbin/start-stop-daemon << EOF
+#!/bin/sh
+
+exit 0
+EOF
+
+ chmod 755 chroot/sbin/start-stop-daemon
+
+ # Disable dpkg syncing
+
+cat > chroot/etc/dpkg/dpkg.cfg.d/live-build << EOF
+force-unsafe-io
+EOF
+
+ # Manual hacks for special packages
+
+ # Generic live-build handle for other live packages to act upon
+ touch chroot/.live-build
+
+ # flash-kernel
+ Chroot chroot dpkg-divert --rename --quiet --add /usr/sbin/flash-kernel
+ ln -fs /bin/true chroot/usr/sbin/flash-kernel
+
+ # Creating stage file
+ Create_stagefile .build/chroot_dpkg
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /sbin/start-stop-daemon"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Manual hacks for special packages
+
+ # Generic live-build handle
+ rm -f chroot/.live-build
+
+ # flash-kernel
+ rm -f chroot/usr/sbin/flash-kernel
+ Chroot chroot dpkg-divert --rename --quiet --remove /usr/sbin/flash-kernel
+
+ # Remove custom start-stop-daemon program
+ rm -f chroot/sbin/start-stop-daemon
+ Chroot chroot dpkg-divert --rename --quiet --remove /sbin/start-stop-daemon
+
+ # Remove dpkg sync configuration
+ rm -f chroot/etc/dpkg/dpkg.cfg.d/live-build
+
+ # Removing stage file
+ rm -f .build/chroot_dpkg
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_firmware b/system-build/scripts/build/chroot_firmware
new file mode 100755
index 0000000..d91f570
--- /dev/null
+++ b/system-build/scripts/build/chroot_firmware
@@ -0,0 +1,124 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'schedule kernel packages for installation')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_FIRMWARE_CHROOT}" != "true" ]
+then
+ exit 0
+fi
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_firmware
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package host /usr/bin/wget wget
+
+# Diverting update-initramfs
+#case "${LB_INITRAMFS}" in
+# system-boot)
+# mv chroot/usr/sbin/update-initramfs chroot/usr/sbin/update-initramfs.live-build
+# ;;
+#esac
+
+# Include firmware packages
+# Assumption: firmware packages install files into /lib/firmware
+
+# Get all firmware packages names
+mkdir -p cache/contents.chroot
+
+FIRMWARE_PACKAGES=""
+
+_CONTENTS="$(for _PARENT_ARCHIVE_AREA in ${LB_PARENT_ARCHIVE_AREAS}; do echo ${LB_PARENT_MIRROR_CHROOT}/dists/${LB_PARENT_DISTRIBUTION}/${_PARENT_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)"
+
+rm -f cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+for _CONTENT in ${_CONTENTS}
+do
+ wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)"
+done
+
+if echo ${LB_PARENT_ARCHIVE_AREAS} | grep -qs "non-free"
+then
+ # Manually add firmware-linux/non-free meta package
+ if [ "${LB_DERIVATIVE}" != "true" ]
+ then
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux"
+ else
+ case "${LB_DERIVATIVE_IS_BASED_ON}" in
+ debian)
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux"
+ ;;
+ *)
+ ;;
+ esac
+ fi
+fi
+
+if [ "${LB_DERIVATIVE}" = "true" ]
+then
+ # FIXME: account for the fact that PARENT_DISTRIBUTION and DISTRIBUTION might be the same (to not have overlapping cache files for contents).
+
+ _CONTENTS="$(for _ARCHIVE_AREA in ${LB_ARCHIVE_AREAS}; do echo ${LB_MIRROR_CHROOT}/dists/${LB_DISTRIBUTION}/${_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)"
+
+ rm -f cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+ for _CONTENT in ${_CONTENTS}
+ do
+ wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)"
+ done
+fi
+
+# Drop section and keep package names only
+for _PACKAGE in ${FIRMWARE_PACKAGES}
+do
+ echo $(echo ${_PACKAGE} | awk -F/ '{ print $NF }') >> chroot/root/packages.chroot
+done
+
+# Some known licenses required to be accepted
+if echo ${LB_PARENT_ARCHIVE_AREAS} | grep -qs "non-free"
+then
+
+cat >> chroot/root/packages.chroot.cfg << EOF
+firmware-ivtv firmware-ivtv/license/accepted boolean true
+firmware-ipw2x00 firmware-ipw2x00/license/accepted boolean true
+EOF
+
+fi
+
+# Creating stage file
+Create_stagefile .build/chroot_firmware
diff --git a/system-build/scripts/build/chroot_hacks b/system-build/scripts/build/chroot_hacks
new file mode 100755
index 0000000..f439ca1
--- /dev/null
+++ b/system-build/scripts/build/chroot_hacks
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'execute hacks in chroot')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin executing hacks..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_hacks
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LIVE_IMAGE_TYPE}" in
+ netboot)
+ if [ ! -f chroot/sbin/mount.cifs ]
+ then
+ Apt chroot install cifs-utils
+ fi
+
+ if [ ! -d chroot/etc/initramfs-tools ]
+ then
+ mkdir chroot/etc/initramfs-tools
+ fi
+
+ # Configuring initramfs for NFS
+ if ! grep -qs "BOOT=nfs" chroot/etc/initramfs-tools/initramfs.conf
+ then
+ echo "BOOT=nfs" >> chroot/etc/initramfs-tools/initramfs.conf
+ fi
+
+ if ! grep -qs "NFSROOT=auto" chroot/etc/initramfs-tools/initramfs.conf
+ then
+ echo "NFSROOT=auto" >> chroot/etc/initramfs-tools/initramfs.conf
+ fi
+ ;;
+esac
+
+# Update initramfs (always, because of udev rules in initrd)
+case "${LB_INITRAMFS}" in
+ system-boot)
+ #UPDATE_INITRAMFS_OPTIONS="LIVE_GENERATE_UUID=1"
+ ;;
+esac
+
+if [ "${LB_INITRAMFS}" != "none" ]
+then
+ Chroot chroot "${UPDATE_INITRAMFS_OPTIONS} update-initramfs -k all -t -u"
+fi
+
+# We probably ought to use COMPRESS= in a temporary file in
+# /etc/initramfs-tools/conf.d/ instead, but it's hard to pass options that
+# way.
+case "${LB_INITRAMFS_COMPRESSION}" in
+ gzip)
+ ;;
+
+ bzip2)
+ for INITRAMFS in $(find chroot/boot -name 'initrd*'); do
+ zcat "${INITRAMFS}" | bzip2 -c ${BZIP2_OPTIONS} > "${INITRAMFS}.new"
+ mv "${INITRAMFS}.new" "${INITRAMFS}"
+ echo "$(sha1sum ${INITRAMFS} | awk '{ print $1 }') /boot/$(basename ${INITRAMFS})" > chroot/var/lib/initramfs-tools/$(basename ${INITRAMFS} | sed -e 's|initrd.img-||')
+ done
+ ;;
+
+ lzma)
+ for INITRAMFS in $(find chroot/boot -name 'initrd*'); do
+ zcat "${INITRAMFS}" | lzma -c ${LZMA_OPTIONS} > "${INITRAMFS}.new"
+ mv "${INITRAMFS}.new" "${INITRAMFS}"
+ echo "$(sha1sum ${INITRAMFS} | awk '{ print $1 }') /boot/$(basename ${INITRAMFS})" > chroot/var/lib/initramfs-tools/$(basename ${INITRAMFS} | sed -e 's|initrd.img-||')
+ done
+ ;;
+esac
+
+case "${LB_INITRAMFS}" in
+ system-boot)
+ ID="1000"
+ ;;
+
+ *)
+ ID=""
+ ;;
+esac
+
+rm -f chroot/etc/hosts
+
+if [ "${LB_DEBIAN_INSTALLER}" = "live" ]
+then
+ # This is a temporary hack to get rid of fstab;
+ # needs cleanup in system-boot first to proper fix.
+ rm -f chroot/etc/fstab
+ touch chroot/etc/fstab
+fi
+
+if [ "${LB_SWAP_FILE_PATH}" ]; then
+ dd if=/dev/zero of="chroot/${LB_SWAP_FILE_PATH}" bs=1024k count="${LB_SWAP_FILE_SIZE}"
+ mkswap "chroot/${LB_SWAP_FILE_PATH}"
+fi
+
+# Creating stage file
+Create_stagefile .build/chroot_hacks
diff --git a/system-build/scripts/build/chroot_hooks b/system-build/scripts/build/chroot_hooks
new file mode 100755
index 0000000..af20b0d
--- /dev/null
+++ b/system-build/scripts/build/chroot_hooks
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'execute hooks in chroot')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin executing hooks..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_hooks
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+## Processing distribution hooks
+
+# Make build config available to chroot hooks. First, make the bind
+# mount and then make it read-only. This can't happen in one mount
+# command, then the resulting mount will be rw (see mount(8)). Making it
+# ro prevents modifications and prevents accidentally removing the
+# contents of the config directory when removing the chroot.
+mkdir -p chroot/live-build/config
+mount -o bind config chroot/live-build/config
+mount -o remount,ro,bind config chroot/live-build/config
+
+# Copying hooks
+for _HOOK in ${LB_CHROOT_HOOKS}
+do
+ for LOCATION in "${LIVE_BUILD}/hooks" /usr/share/live/build/hooks
+ do
+ for FILE in "${LOCATION}"/????-"${_HOOK}".chroot
+ do
+ if [ -e "${FILE}" ]
+ then
+ mkdir -p chroot/root/lb_chroot_hooks
+ cp "${FILE}" chroot/root/lb_chroot_hooks
+ fi
+ done
+ done
+done
+
+# Running hooks
+if ls chroot/root/lb_chroot_hooks/* > /dev/null 2>&1
+then
+ for _HOOK in chroot/root/lb_chroot_hooks/*
+ do
+ Chroot chroot "/root/lb_chroot_hooks/$(basename ${_HOOK})" || { Echo_error "${_HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
+ rm -f chroot/root/lb_chroot_hooks/"$(basename ${_HOOK})"
+ done
+
+ rmdir chroot/root/lb_chroot_hooks
+fi
+
+## Processing local hooks
+if ls config/hooks/normal/*.chroot config/hooks/live/*.chroot > /dev/null 2>&1
+then
+ # Restoring cache
+ Restore_cache cache/packages.chroot
+
+ for HOOK in config/hooks/normal/*.chroot config/hooks/live/*.chroot
+ do
+ if [ ! -e "${HOOK}" ]
+ then
+ continue
+ fi
+
+ # Copying hook
+ cp "${HOOK}" chroot/root
+
+ # Making hook executable
+ if [ ! -x chroot/root/"$(basename ${HOOK})" ]
+ then
+ chmod +x chroot/root/"$(basename ${HOOK})"
+ fi
+
+ # Executing hook
+ Chroot chroot "/root/$(basename ${HOOK})" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
+
+ # Removing hook
+ rm -f chroot/root/"$(basename ${HOOK})"
+ done
+
+ # Saving cache
+ Save_cache cache/packages.chroot
+
+ # Creating stage file
+ Create_stagefile .build/chroot_hooks
+fi
+
+# Remove bind mount of build config inside chroot.
+umount chroot/live-build/config
+rmdir chroot/live-build/config
+rmdir chroot/live-build
diff --git a/system-build/scripts/build/chroot_hostname b/system-build/scripts/build/chroot_hostname
new file mode 100755
index 0000000..ae191a7
--- /dev/null
+++ b/system-build/scripts/build/chroot_hostname
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /bin/hostname')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ # Checking stage file
+ Check_stagefile .build/chroot_hostname
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Create hostname file
+ Echo_message "Configuring file /etc/hostname"
+
+ echo "localhost.localdomain" > chroot/etc/hostname
+
+ # Create custom hostname
+ Echo_message "Configuring file /bin/hostname"
+
+ Chroot chroot dpkg-divert --rename --quiet --add /bin/hostname
+
+cat > chroot/bin/hostname << EOF
+#!/bin/sh
+
+echo "localhost.localdomain"
+EOF
+
+ chmod 755 chroot/bin/hostname
+
+ # Creating stage file
+ Create_stagefile .build/chroot_hostname
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /etc/hostname"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Copying hostname from includes, if existing
+ if [ -e config/includes.chroot/etc/hostname ]
+ then
+ cp -a config/includes.chroot/etc/hostname chroot/etc/hostname
+ fi
+
+ Echo_message "Deconfiguring file /bin/hostname"
+
+ # Remove custom hostname
+ rm -f chroot/bin/hostname
+ Chroot chroot dpkg-divert --rename --quiet --remove /bin/hostname
+
+ # Removing stage file
+ rm -f .build/chroot_hostname
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_hosts b/system-build/scripts/build/chroot_hosts
new file mode 100755
index 0000000..9f0da29
--- /dev/null
+++ b/system-build/scripts/build/chroot_hosts
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /etc/hosts')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Configuring file /etc/hosts"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_hosts
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ if [ -f chroot/etc/hosts ]
+ then
+ # Save hosts file
+ mv chroot/etc/hosts chroot/etc/hosts.orig
+ fi
+
+ # Creating hosts file
+
+cat > chroot/etc/hosts << EOF
+127.0.0.1 localhost localhost.localdomain
+127.0.1.1 debian
+EOF
+
+ if [ -f /etc/hosts ]
+ then
+ # Append hosts file
+ #grep -e "127.0.0.1" -e "127.0.1.1" /etc/hosts >> chroot/etc/hosts
+ cat /etc/hosts >> chroot/etc/hosts
+ fi
+
+ # Creating stage file
+ Create_stagefile .build/chroot_hosts
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /etc/hosts"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ if [ -e config/includes.chroot/etc/hosts ]
+ then
+ # Copying local hosts
+ cp -a config/includes.chroot/etc/hosts chroot/etc/hosts
+ rm -f chroot/etc/hosts.orig
+ elif [ -f chroot/etc/hosts.orig ]
+ then
+ # Restore hosts file
+ mv chroot/etc/hosts.orig chroot/etc/hosts
+ else
+ # Blank out hosts file, don't remove in case its a symlink
+ Truncate chroot/etc/hosts
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_hosts
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_includes b/system-build/scripts/build/chroot_includes
new file mode 100755
index 0000000..6498aa3
--- /dev/null
+++ b/system-build/scripts/build/chroot_includes
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'copy files into chroot')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin copying chroot includes..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/includes.chroot
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+if Find_files config/includes.chroot/
+then
+ # Copying includes
+ cd config/includes.chroot
+ find . | cpio -dmpu --no-preserve-owner "${OLDPWD}"/chroot
+ cd "${OLDPWD}"
+
+ # Creating stage file
+ Create_stagefile .build/includes.chroot
+fi
diff --git a/system-build/scripts/build/chroot_install-packages b/system-build/scripts/build/chroot_install-packages
new file mode 100755
index 0000000..36c0f93
--- /dev/null
+++ b/system-build/scripts/build/chroot_install-packages
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 queued packages into chroot')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+USAGE="${PROGRAM} {install|live} [--force]"
+
+_PASS="${1}"
+shift
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin installing packages (${_PASS} pass)..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_install-packages.${PASS}
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Check for packages specified with foreign architecture
+_FOREIGN_ARCHITECTURES_FILE="chroot/root/packages.foreign-architectures"
+if [ -e "${_FOREIGN_ARCHITECTURES_FILE}" ] && [ -s "${_FOREIGN_ARCHITECTURES_FILE}" ]
+then
+ _APT_ARCHITECTURES_ADDED="0"
+
+ # Check if version of dpkg in chroot supports multiarch
+ if Chroot chroot dpkg --print-foreign-architectures > /dev/null 2>&1
+ then
+ # Add foregin architectures
+ while read _ARCHITECTURES_LINE
+ do
+ Echo_message "Adding foreign architecture ${_ARCHITECTURES_LINE} to dpkg"
+ Chroot chroot dpkg --add-architecture ${_ARCHITECTURES_LINE}
+
+ _APT_ARCHITECTURES_ADDED="1"
+ done < "${_FOREIGN_ARCHITECTURES_FILE}"
+
+ # Tidy up
+ rm -f "${_FOREIGN_ARCHITECTURES_FILE}"
+ else
+ Echo_error "Version of dpkg in chroot does not support foreign architectures."
+ fi
+
+ # Update apt if foreign architectures were added
+ if [ "${_APT_ARCHITECTURES_ADDED}" -ne "0" ]
+ then
+ Echo_message "Added foreign architectures, updating apt..."
+ Apt chroot update
+ fi
+fi
+
+if [ -e chroot/root/packages.chroot ] && [ -s chroot/root/packages.chroot ]
+then
+ # Restoring cache
+ Restore_cache cache/packages.chroot
+
+ # Installing packages
+ Chroot chroot "xargs --arg-file=/root/packages.chroot apt-get ${APT_OPTIONS} install"
+
+ # Tidying up
+ rm -f chroot/root/packages.chroot
+
+ # Saving cache
+ Save_cache cache/packages.chroot
+
+fi
+
+# Creating stage file
+Create_stagefile .build/chroot_install-packages.${_PASS}
diff --git a/system-build/scripts/build/chroot_interactive b/system-build/scripts/build/chroot_interactive
new file mode 100755
index 0000000..f21b6dd
--- /dev/null
+++ b/system-build/scripts/build/chroot_interactive
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'make build interactive')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_INTERACTIVE}" = "false" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin interactive build..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_interactive
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LB_INTERACTIVE}" in
+ true|shell)
+ Echo_message "Pausing build: starting interactive shell..."
+ Chroot chroot "/bin/bash --login"
+ ;;
+ x11)
+ Echo_message "Pausing build: starting interactive X11..."
+ Chroot chroot "startx"
+ ;;
+ xnest)
+ Echo_message "Pausing build: starting interactive Xnest..."
+ #Chroot chroot "" # FIXME
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/chroot_interactive
diff --git a/system-build/scripts/build/chroot_linux-image b/system-build/scripts/build/chroot_linux-image
new file mode 100755
index 0000000..c28cb54
--- /dev/null
+++ b/system-build/scripts/build/chroot_linux-image
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'schedule kernel packages for installation')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_LINUX_PACKAGES}" = "none" ]
+then
+ exit 0
+fi
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_linux-image
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Diverting update-initramfs
+#case "${LB_INITRAMFS}" in
+# system-boot)
+# mv chroot/usr/sbin/update-initramfs chroot/usr/sbin/update-initramfs.live-build
+# ;;
+#esac
+
+for FLAVOUR in ${LB_LINUX_FLAVOURS}
+do
+ for PACKAGE in ${LB_LINUX_PACKAGES}
+ do
+ echo ${PACKAGE}-${FLAVOUR} >> chroot/root/packages.chroot
+ done
+done
+
+# Creating stage file
+Create_stagefile .build/chroot_linux-image
diff --git a/system-build/scripts/build/chroot_live-packages b/system-build/scripts/build/chroot_live-packages
new file mode 100755
index 0000000..0e4f2bf
--- /dev/null
+++ b/system-build/scripts/build/chroot_live-packages
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'schedule live packages for installation')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_live-packages
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Queue installation of system-boot
+if [ -n "${LB_INITRAMFS}" ] && [ "${LB_INITRAMFS}" != "none" ]
+then
+ _PACKAGES="${LB_INITRAMFS}"
+fi
+
+# Queue installation of system-config
+if [ -n "${LB_INITSYSTEM}" ] && [ "${LB_INITSYSTEM}" != "none" ]
+then
+ _PACKAGES="${_PACKAGES} system-config"
+fi
+
+# Do initsystem specific hacks
+case "${LB_INITSYSTEM}" in
+ systemd)
+ _PACKAGES="${_PACKAGES} systemd-sysv"
+
+ if [ -e chroot/var/lib/dpkg/info/sysvinit.list ]
+ then
+ Chroot chroot "dpkg --force-remove-essential --purge sysvinit"
+ fi
+ ;;
+
+ sysvinit)
+ _PACKAGES="${_PACKAGES} sysvinit"
+
+ if [ -e chroot/var/lib/dpkg/info/systemd-sysv.list ]
+ then
+ Chroot chroot "dpkg --force-remove-essential --purge systemd systemd-sysv"
+ fi
+ ;;
+esac
+
+# Install live packages
+if [ -n "${_PACKAGES}" ]
+then
+ Chroot chroot "apt-get ${APT_OPTIONS} install ${_PACKAGES}"
+
+ # Creating stage file
+ Create_stagefile .build/chroot_live-packages
+fi
diff --git a/system-build/scripts/build/chroot_package-lists b/system-build/scripts/build/chroot_package-lists
new file mode 100755
index 0000000..7e93e61
--- /dev/null
+++ b/system-build/scripts/build/chroot_package-lists
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'queue install of package lists into chroot')"
+HELP=""
+USAGE="${PROGRAM} {install|live} [--force]"
+
+_PASS="${1}"
+shift
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin queueing installation of package lists (${_PASS} pass)..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_package-lists.${_PASS}
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Handling local package lists
+if ! ( ls config/package-lists/*.list > /dev/null 2>&1 || \
+ ls config/package-lists/*.list.chroot > /dev/null 2>&1 || \
+ ls config/package-lists/*.list.chroot_${_PASS} > /dev/null 2>&1 )
+then
+ exit 0
+fi
+
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Checking depends
+ Check_package chroot /usr/bin/grep-aptavail dctrl-tools
+
+ # Restoring cache
+ Restore_cache cache/packages.chroot
+
+ # Installing depends
+ Install_package
+ ;;
+
+ false)
+ 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
+
+for LIST in config/package-lists/*.list \
+ config/package-lists/*.list.chroot \
+ config/package-lists/*.list.chroot_${_PASS}
+do
+ if [ -e "${LIST}" ]
+ then
+ # Generating package list
+ Expand_packagelist "$(basename ${LIST})" "config/package-lists" \
+ | grep -v '^#' >> chroot/root/packages.chroot
+ fi
+done
+
+# Discover unique package architectures in fully-expanded package list
+for _PACKAGE_ARCHITECTURE in $(Discover_package_architectures "chroot/root/packages.chroot")
+do
+ # If this is a foreign architecture, append to packages.foreign-architectures
+ if [ "${_PACKAGE_ARCHITECTURE}" != "${LB_ARCHITECTURES}" ]
+ then
+ Echo_message "Accepting foreign architecture: ${_PACKAGE_ARCHITECTURE}, live image architecture is: ${LB_ARCHITECTURES}"
+ echo "${_PACKAGE_ARCHITECTURE}" >> chroot/root/packages.foreign-architectures
+ fi
+done
+
+rm -f chroot/bin/Packages
+
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Removing dctrl-tools again if the user has not installed it
+ if ! grep -qs dctrl-tools chroot/root/packages.chroot
+ then
+ # Removing depends
+ Remove_package
+ fi
+
+ # Saving cache
+ Save_cache cache/packages.chroot
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/chroot_package-lists.${_PASS}
diff --git a/system-build/scripts/build/chroot_preseed b/system-build/scripts/build/chroot_preseed
new file mode 100755
index 0000000..53bd8df
--- /dev/null
+++ b/system-build/scripts/build/chroot_preseed
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'execute local preseed in chroot')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+Echo_message "Begin executing local preseeds..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/chroot_preseed
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+if ls config/preseed/*.cfg > /dev/null 2>&1 || \
+ ls config/preseed/*.cfg.chroot > /dev/null 2>&1 || \
+ ls chroot/root/packages.chroot.cfg > /dev/null 2>&1
+then
+ # Check dependency
+ Check_package chroot /usr/bin/debconf-set-selections debconf
+
+ # Install dependency
+ Install_package
+
+ for PRESEED in config/preseed/*.cfg config/preseed/*.cfg.chroot chroot/root/packages.chroot.cfg
+ do
+ if [ -e "${PRESEED}" ]
+ then
+ # Copying local preseed
+ cp "${PRESEED}" chroot/root/preseed
+
+ Chroot chroot "debconf-set-selections /root/preseed"
+
+ # Removing local preseed file
+ rm -f chroot/root/preseed
+ fi
+ done
+
+ rm -f chroot/root/packages.chroot.cfg
+
+ # Remove dependency
+ Remove_package
+
+ # Creating stage file
+ Create_stagefile .build/chroot_preseed
+fi
diff --git a/system-build/scripts/build/chroot_proc b/system-build/scripts/build/chroot_proc
new file mode 100755
index 0000000..f84c0d4
--- /dev/null
+++ b/system-build/scripts/build/chroot_proc
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'mount /proc')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Begin mounting /proc..."
+
+ # Checking stage file
+ Check_stagefile .build/chroot_proc
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Creating mountpoint
+ mkdir -p chroot/proc
+
+ # Mounting /proc
+ mount proc-live -t proc chroot/proc
+
+ # Creating stage file
+ Create_stagefile .build/chroot_proc
+ ;;
+
+ remove)
+ Echo_message "Begin unmounting /proc..."
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Workaround binfmt-support /proc locking
+ if [ -e chroot/proc/sys/fs/binfmt_misc/status ]
+ then
+ umount chroot/proc/sys/fs/binfmt_misc
+ fi
+
+ # Unmounting /proc
+ if [ -e chroot/proc/version ]
+ then
+ umount chroot/proc
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_proc
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_resolv b/system-build/scripts/build/chroot_resolv
new file mode 100755
index 0000000..7cf55fc
--- /dev/null
+++ b/system-build/scripts/build/chroot_resolv
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /etc/resolv.conf')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Configuring file /etc/resolv.conf"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_resolv
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ if [ -e chroot/etc/resolv.conf ]
+ then
+ # Save resolv file or symlink
+ mv chroot/etc/resolv.conf chroot/etc/resolv.conf.orig
+
+ # Also truncate it, otherwise we'll end up with the one
+ # created by debootstrap in the final image.
+ #
+ # If you want to have a custom resolv.conf, please
+ # overwrite it with normal local_includes mechanism.
+ Truncate chroot/etc/resolv.conf.orig
+ elif [ -L chroot/etc/resolv.conf ]
+ then
+ # Move resolv.conf aside if it's a symlink (likely resolvconf)
+ mv chroot/etc/resolv.conf chroot/etc/resolv.conf.orig
+ fi
+
+ if [ -f /etc/resolv.conf ]
+ then
+ # Copy resolv file
+ cp /etc/resolv.conf chroot/etc/resolv.conf
+ fi
+
+ # Creating stage file
+ Create_stagefile .build/chroot_resolv
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /etc/resolv.conf"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ if [ -e config/includes.chroot/etc/resolv.conf ]
+ then
+ # Copying local resolv.conf
+ cp -a config/includes.chroot/etc/resolv.conf chroot/etc/resolv.conf
+ rm -f chroot/etc/resolv.conf.orig
+ elif [ -e chroot/etc/resolv.conf.orig ] || [ -L chroot/etc/resolv.conf.orig ]
+ then
+ # Restoring resolv file or symlink
+ mv chroot/etc/resolv.conf.orig chroot/etc/resolv.conf
+ else
+ # Truncating resolv file
+ Truncate chroot/etc/resolv.conf
+ fi
+
+ # Clean up resolvconf's pollution
+ if [ -e chroot/etc/resolvconf/resolv.conf.d ]
+ then
+ rm -f chroot/etc/resolvconf/resolv.conf.d/original
+ rm -f chroot/etc/resolvconf/resolv.conf.d/tail
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_resolv
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_selinuxfs b/system-build/scripts/build/chroot_selinuxfs
new file mode 100755
index 0000000..66d4639
--- /dev/null
+++ b/system-build/scripts/build/chroot_selinuxfs
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'mount /sys/fs/selinux')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ if [ -e /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]
+ then
+ Echo_message "Begin mounting /sys/fs/selinux..."
+
+ # Checking stage file
+ Check_stagefile .build/chroot_selinuxfs
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Create mountpoint
+ mkdir -p chroot/sys/fs/selinux
+
+ # Mounting /sys/fs/selinux
+ mount selinuxfs-live -t selinuxfs chroot/sys/fs/selinux
+
+ # Creating stage file
+ Create_stagefile .build/chroot_selinuxfs
+ fi
+ ;;
+
+ remove)
+ Echo_message "Begin unmounting /sys/fs/selinux..."
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Unmounting /sys/fs/selinux
+ if [ -e chroot/sys/fs/selinux/enforce ]
+ then
+ umount chroot/sys/fs/selinux
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_selinux
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_sysfs b/system-build/scripts/build/chroot_sysfs
new file mode 100755
index 0000000..a0637f1
--- /dev/null
+++ b/system-build/scripts/build/chroot_sysfs
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'mount /sys')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Begin mounting /sys..."
+
+ # Checking stage file
+ Check_stagefile .build/chroot_sysfs
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Create mountpoint
+ mkdir -p chroot/sys
+
+ # Mounting /sys
+ mount sysfs-live -t sysfs chroot/sys
+
+ # Creating stage file
+ Create_stagefile .build/chroot_sysfs
+ ;;
+
+ remove)
+ Echo_message "Begin unmounting /sys..."
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Unmounting /sys
+ if [ -e chroot/sys/class ]
+ then
+ umount chroot/sys
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_sysfs
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_sysv-rc b/system-build/scripts/build/chroot_sysv-rc
new file mode 100755
index 0000000..a613fd4
--- /dev/null
+++ b/system-build/scripts/build/chroot_sysv-rc
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'manage /usr/sbin/policy-rc.d')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Configuring file /usr/sbin/policy-rc.d"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_sysv-rc
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ if [ -e chroot/usr/sbin/policy-rc.d ]
+ then
+ # Save policy-rc.d file
+ Chroot chroot dpkg-divert --rename --quiet --add /usr/sbin/policy-rc.d
+ fi
+
+ # Create policy-rc.d file
+cat > chroot/usr/sbin/policy-rc.d << EOF
+#!/bin/sh
+echo "All runlevel operations denied by policy" >&2
+exit 101
+EOF
+
+ chmod 0755 chroot/usr/sbin/policy-rc.d
+
+ # Creating stage file
+ Create_stagefile .build/chroot_sysv-rc
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring file /usr/sbin/policy-rc.d"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ # Remove custom policy-rc.d file
+ rm -f chroot/usr/sbin/policy-rc.d
+
+ if [ -e chroot/usr/sbin/policy-rc.d.distrib ]
+ then
+ # Restore policy-rc.d file
+ Chroot chroot dpkg-divert --rename --quiet --remove /usr/sbin/policy-rc.d
+ fi
+
+ # Removing stage file
+ rm -f .build/chroot_sysv-rc
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/chroot_tmpfs b/system-build/scripts/build/chroot_tmpfs
new file mode 100755
index 0000000..a7a1d72
--- /dev/null
+++ b/system-build/scripts/build/chroot_tmpfs
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'use tmpfs to speedup the build')"
+HELP=""
+USAGE="${PROGRAM} {install|remove} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_BUILD_WITH_TMPFS}" != "true" ]
+then
+ exit 0
+fi
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+case "${1}" in
+ install)
+ Echo_message "Configuring tmpfs for /var/lib/dpkg"
+
+ # Checking stage file
+ Check_stagefile .build/chroot_tmpfs
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ mv chroot/var/lib/dpkg chroot/var/lib/dpkg.tmp
+ mkdir chroot/var/lib/dpkg
+ mount -t tmpfs tmpfs chroot/var/lib/dpkg
+ mv chroot/var/lib/dpkg.tmp/* chroot/var/lib/dpkg
+ rm -rf chroot/var/lib/dpkg.tmp
+
+ # Creating stage file
+ Create_stagefile .build/chroot_tmpfs
+ ;;
+
+ remove)
+ Echo_message "Deconfiguring tmpfs for /var/lib/dpkg"
+
+ # Checking lock file
+ Check_lockfile .lock
+
+ # Creating lock file
+ Create_lockfile .lock
+
+ mkdir -p chroot/var/lib/dpkg.tmp
+ mv chroot/var/lib/dpkg/* chroot/var/lib/dpkg.tmp
+ umount chroot/var/lib/dpkg
+ rm -rf chroot/var/lib/dpkg
+ mv chroot/var/lib/dpkg.tmp chroot/var/lib/dpkg
+
+ # Removing stage file
+ rm -f .build/chroot_tmpfs
+ ;;
+
+ *)
+ Usage
+ ;;
+esac
diff --git a/system-build/scripts/build/clean b/system-build/scripts/build/clean
new file mode 100755
index 0000000..a40b51d
--- /dev/null
+++ b/system-build/scripts/build/clean
@@ -0,0 +1,166 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+
+# Read meta config
+if [ "${1}" != "noauto" ] && [ -x auto/clean ]
+then
+ Echo_message "Executing auto/clean script."
+ ./auto/clean "${@}"
+ exit ${?}
+fi
+
+if [ "${1}" = "noauto" ]
+then
+ shift
+fi
+
+# Setting static variables
+DESCRIPTION="$(Echo 'clean up system build directories')"
+HELP=""
+USAGE="${PROGRAM} [--all] [--cache] [--chroot] [--binary] [--purge] [--remove] [--stage] [--source]"
+
+#Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Avoid cases were users accidentally nuke their config/binary
+if [ ! -d config ] && [ "$(basename ${PWD})" = "config" ]
+then
+ Echo_error "%s is not a good live-build working directory to clean." "${PWD}"
+ exit 1
+fi
+
+rm -f .lock
+
+if [ -z "${1}" ]
+then
+ ARGUMENTS="--all"
+else
+ ARGUMENTS="${@}"
+fi
+
+for ARGUMENT in ${ARGUMENTS}
+do
+ case "${ARGUMENT}" in
+ --all)
+ "${0}" noauto --chroot
+ "${0}" noauto --binary
+ "${0}" noauto --stage
+ "${0}" noauto --source
+
+ rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true
+ rmdir --ignore-fail-on-non-empty local/bin > /dev/null 2>&1 || true
+ rmdir --ignore-fail-on-non-empty local > /dev/null 2>&1 || true
+ ;;
+
+ --cache)
+ rm -rf cache
+ ;;
+
+ --chroot)
+ Echo_message "Cleaning chroot"
+ umount -f chroot/run > /dev/null 2>&1 || true
+ umount -f chroot/sys > /dev/null 2>&1 || true
+ umount -f chroot/proc/sys/fs/binfmt_misc > /dev/null 2>&1 || true
+ umount -f chroot/proc > /dev/null 2>&1 || true
+ umount -f chroot/lib/init/rw > /dev/null 2>&1 || true
+ umount -f chroot/dev/shm > /dev/null 2>&1 || true
+ umount -f chroot/dev/pts > /dev/null 2>&1 || true
+ umount -f chroot/dev > /dev/null 2>&1 || true
+ umount -f chroot/var/lib/dpkg > /dev/null 2>&1 || true
+ umount -f chroot/root/config > /dev/null 2>&1 || true
+
+ umount -f chroot/binary.tmp > /dev/null 2>&1 || true
+ umount -f chroot/dev.tmp/pts > /dev/null 2>&1 || true
+
+ rm -rf chroot chroot.tmp
+
+ rm -f chroot.packages.live chroot.packages.install
+ rm -f chroot.files
+
+ rm -f .build/chroot*
+ ;;
+
+ --binary)
+ umount -f binary.tmp > /dev/null 2>&1 || true
+ rm -rf binary.tmp binary.deb binary.udeb
+ rm -f ${LIVE_IMAGE_NAME}*.iso
+ rm -f ${LIVE_IMAGE_NAME}*.img
+ rm -f ${LIVE_IMAGE_NAME}*.tar.gz
+ rm -f ${LIVE_IMAGE_NAME}*.zsync*
+ rm -f ${LIVE_IMAGE_NAME}.sh
+ rm -f ${LIVE_IMAGE_NAME}*.contents ${LIVE_IMAGE_NAME}*.packages ${LIVE_IMAGE_NAME}*.files
+ rm -f MD5SUMS SHA1SUMS SHA256SUMS SHA512SUMS
+ rm -f md5sum.txt sha1sum.txt sha256sum.txt sha512sum.txt
+
+ rm -rf binary
+ rm -rf tftpboot
+
+ rm -f .build/binary*
+ ;;
+
+ --remove)
+ "${0}" --all
+ rm -rf cache/packages.*
+ ;;
+
+ --purge)
+ "${0}" --all
+ "${0}" --cache
+
+ if [ -e auto/config ]
+ then
+ rm -f .build/config
+ fi
+ ;;
+
+ --stage)
+ rm -rf .build/*
+ ;;
+
+ --source)
+ rm -f ${LIVE_IMAGE_NAME}-source*.iso
+ rm -f ${LIVE_IMAGE_NAME}-source*.img
+ rm -f ${LIVE_IMAGE_NAME}-source*.tar
+ rm -f ${LIVE_IMAGE_NAME}-source*.tar.gz
+ rm -f ${LIVE_IMAGE_NAME}-source*.list
+ rm -f ${LIVE_IMAGE_NAME}-source-selection.txt
+
+ rm -rf source
+
+ rm -f .build/source*
+ ;;
+
+ -h|--help)
+ Help
+ ;;
+
+ -u|--usage)
+ Usage
+ ;;
+
+ -v|--version)
+ echo "${VERSION}"
+ exit 0
+ ;;
+
+ *)
+ Usage
+ exit 1
+ ;;
+ esac
+done
diff --git a/system-build/scripts/build/config b/system-build/scripts/build/config
new file mode 100755
index 0000000..fc710a3
--- /dev/null
+++ b/system-build/scripts/build/config
@@ -0,0 +1,1379 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+PROGRAM="lb config"
+DESCRIPTION="$(Echo 'create configuration for live-build(7)')"
+USAGE="${PROGRAM} [--apt-ftp-proxy URL]\n\
+\t [--apt-http-proxy URL]\n\
+\t [--apt-indices true|false]\n\
+\t [--apt-options OPTION|\"OPTIONS\"]\n\
+\t [--apt-pipeline DEPTH]\n\
+\t [--apt-recommends true|false]\n\
+\t [--apt-secure true|false]\n\
+\t [--apt-source-archives true|false]\n\
+\t [-a|--architectures ARCHITECTURE]\n\
+\t [-b|--binary-images iso|iso-hybrid|netboot|tar|hdd]\n\
+\t [--binary-filesystem fat16|fat32|ext2|ext3|ext4|ntfs]\n\
+\t [--bootappend-install PARAMETER|\"PARAMETERS\"]\n\
+\t [--bootappend-live PARAMETER|\"PARAMETERS\"]\n\
+\t [--bootappend-live-failsafe PARAMETER|\"PARAMETERS\"]\n\
+\t [--bootloaders grub-legacy|grub-pc|syslinux]\n\
+\t [--cache true|false]\n\
+\t [--cache-indices true|false]\n\
+\t [--cache-packages true|false]\n\
+\t [--cache-stages STAGE|\"STAGES\"]\n\
+\t [--checksums md5|sha1|sha256|sha512|none]\n\
+\t [--compression bzip2|gzip|lzip|xz|none]\n\
+\t [--config GIT_URL::GIT_BRANCH]\n\
+\t [--zsync true|false]\n\
+\t [--build-with-chroot true|false]\n\
+\t [--chroot-filesystem ext2|ext3|ext4|squashfs|jffs2|none]\n\
+\t [--clean\n\
+\t [-c|--conffile FILE]\n\
+\t [--debconf-frontend dialog|editor|noninteractive|readline]\n\
+\t [--debconf-priority low|medium|high|critical]\n\
+\t [--debian-installer true|cdrom|netinst|netboot|businesscard|live|false]\n\
+\t [--debian-installer-distribution daily|CODENAME]\n\
+\t [--debian-installer-preseedfile FILE|URL]\n\
+\t [--debian-installer-gui true|false]\n\
+\t [--debug]\n\
+\t [-d|--distribution CODENAME]\n\
+\t [--parent-distribution CODENAME]\n\
+\t [--parent-debian-installer-distribution CODENAME]\n\
+\t [--dump]\n\
+\t [--fdisk fdisk|fdisk.dist]\n\
+\t [--force]\n\
+\t [--grub-splash FILE]\n\
+\t [--gzip-options OPTION|\"OPTIONS\"]\n\
+\t [--ignore-system-defaults]\n\
+\t [--initramfs auto|none|system-boot]\n\
+\t [--initramfs-compression bzip2|gzip|lzma]\n\
+\t [--initsystem sysvinit|systemd|none]\n\
+\t [--image-name [NAME]\n\
+\t [--interactive shell]\n\
+\t [--isohybrid-options OPTION|\"OPTIONS\"]\n\
+\t [--hdd-label LABEL]\n\
+\t [--hdd-size MB]\n\
+\t [--hdd-partition-start [parted unit, e.g. 63s]\n\
+\t [--iso-application NAME]\n\
+\t [--iso-preparer NAME]\n\
+\t [--iso-publisher NAME]\n\
+\t [--iso-volume NAME]\n\
+\t [--jffs2-eraseblock SIZE]\n\
+\t [--keyring-packages PACKAGE|\"PACKAGES\"]\n\
+\t [-k|--linux-flavours FLAVOUR|\"FLAVOURS\"]\n\
+\t [--linux-packages \"PACKAGES\"]\n\
+\t [--losetup losetup|losetup.orig]\n\
+\t [--memtest memtest86+|memtest86|none]\n\
+\t [-m|--parent-mirror-bootstrap URL]\n\
+\t [--parent-mirror-chroot URL]\n\
+\t [--parent-mirror-chroot-security URL]\n\
+\t [--parent-mirror-binary URL]\n\
+\t [--parent-mirror-binary-security URL]\n\
+\t [--parent-mirror-debian-installer URL]\n\
+\t [--mirror-bootstrap URL]\n\
+\t [--mirror-chroot URL]\n\
+\t [--mirror-chroot-security URL]\n\
+\t [--mirror-binary URL]\n\
+\t [--mirror-binary-security URL]\n\
+\t [--mirror-debian-installer URL]\n\
+\t [--mode debian]\n\
+\t [--system live|normal]\n\
+\t [--net-root-filesystem nfs|cfs]\n\
+\t [--net-root-mountoptions OPTIONS]\n\
+\t [--net-root-path PATH]\n\
+\t [--net-root-server IP|HOSTNAME]\n\
+\t [--net-cow-filesystem nfs|cfs]\n\
+\t [--net-cow-mountoptions OPTIONS]\n\
+\t [--net-cow-path PATH]\n\
+\t [--net-cow-server IP|HOSTNAME]\n\
+\t [--net-tarball true|false]\n\
+\t [--quiet]\n\
+\t [--archive-areas ARCHIVE_AREA|\"ARCHIVE_AREAS\"]\n\
+\t [--parent-archive-areas ARCHIVE_AREA|\"ARCHIVE_AREAS\"]\n\
+\t [--security true|false]\n\
+\t [--source true|false]\n\
+\t [-s|--source-images iso|netboot|tar|hdd]\n\
+\t [--firmware-binary true|false]\n\
+\t [--firmware-chroot true|false]\n\
+\t [--swap-file-path PATH]\n\
+\t [--swap-file-size MB]\n\
+\t [--tasksel apt|tasksel]\n\
+\t [--updates true|false]\n\
+\t [--backports true|false]\n\
+\t [--verbose]\n\
+\t [--loadlin true|false]\n\
+\t [--win32-loader true|false]\n\
+\t [--bootstrap-qemu-exclude PACKAGES]\n\
+\t [--bootstrap-qemu-static PATH]\n\
+\t [--bootstrap-qemu-arch ARCH]"
+
+
+Local_arguments ()
+{
+ LONG_OPTIONS="apt:,apt-ftp-proxy:,apt-http-proxy:,apt-options:,debootstrap-options:,
+ apt-pipeline:,apt-recommends:,apt-secure:,apt-source-archives:,bootstrap:,cache:,cache-indices:,cache-packages:,
+ cache-stages:,debconf-frontend:,debconf-priority:,dump,
+ initramfs:,initramfs-compression:,initsystem:,fdisk:,losetup:,mode:,system:,tasksel:,
+ architectures:,clean,
+ distribution:,parent-distribution:,parent-debian-installer-distribution:,parent-mirror-bootstrap:,parent-mirror-chroot:,parent-mirror-chroot-security:,parent-mirror-binary:,
+ parent-mirror-binary-security:,parent-mirror-debian-installer:,
+ mirror-bootstrap:,mirror-chroot:,mirror-chroot-security:,mirror-binary:,
+ mirror-binary-security:,mirror-debian-installer:,
+ archive-areas:,parent-archive-areas:,chroot-filesystem:,
+ gzip-options:,image-name:,interactive:,keyring-packages:,linux-flavours:,linux-packages:,
+ security:,updates:,backports:,binary-filesystem:,binary-images:,
+ apt-indices:,bootappend-install:,bootappend-live:,bootappend-live-failsafe:,bootloaders:,checksums:,compression:,config:,zsync:,build-with-chroot:,
+ debian-installer:,debian-installer-distribution:,debian-installer-preseedfile:,debian-installer-gui:,
+ grub-splash:,isohybrid-options:,hdd-label:,hdd-size:,hdd-partition-start:,iso-application:,iso-preparer:,iso-publisher:,
+ iso-volume:,jffs2-eraseblock:,memtest:,net-root-filesystem:,net-root-mountoptions:,
+ net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:,
+ net-cow-server:,net-tarball:,firmware-binary:,firmware-chroot:,swap-file-path:,swap-file-size:,
+ loadlin:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force,
+ help,ignore-system-defaults,quiet,usage,verbose,version,bootstrap-qemu-static:,bootstrap-qemu-arch:,
+ bootstrap-qemu-exclude:"
+ # Remove spaces added by indentation
+ LONG_OPTIONS="$(echo ${LONG_OPTIONS} | tr -d ' ')"
+ ARGUMENTS="$(getopt --longoptions ${LONG_OPTIONS} --name="${PROGRAM}" --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")"
+
+ if [ "${?}" != "0" ]
+ then
+ Echo_error "terminating" >&2
+ exit 1
+ fi
+
+ eval set -- "${ARGUMENTS}"
+
+ while true
+ do
+ case "${1}" in
+ --dump)
+ # Dump version
+ if [ -x "$(which dpkg-query 2>/dev/null)" ]
+ then
+ VERSION_DPKG="$(dpkg-query -f='${Version}' --show live-build)"
+ fi
+
+ Echo "%s: This is live-build version %s" "${0}" "${VERSION_DPKG:-${VERSION}}"
+
+ # Dump conffile contents
+ Print_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+
+ # Dump contents of directories that contain text files
+ for DIRECTORY in config/package-lists config/apt config/preseed config/rootfs
+ do
+ if Find_files "${DIRECTORY}"
+ then
+ Echo_file "${DIRECTORY}"/*
+ fi
+ done
+
+ # Dump directory listings of all directories under config/
+ for DIRECTORY in $(find config/ -mindepth 1 -maxdepth 1 -type d)
+ do
+ if Find_files "${DIRECTORY}"
+ then
+ ls -lR "${DIRECTORY}" | while read LINE
+ do
+ echo "${DIRECTORY}: ${LINE}"
+ done
+ fi
+ done
+
+ exit 0
+ ;;
+
+ --clean)
+ _CLEAN="true"
+ shift
+ ;;
+
+ # config/common
+ --apt)
+ LB_APT="${2}"
+ shift 2
+ ;;
+
+ --apt-ftp-proxy)
+ LB_APT_FTP_PROXY="${2}"
+ shift 2
+ ;;
+
+ --apt-http-proxy)
+ LB_APT_HTTP_PROXY="${2}"
+ shift 2
+ ;;
+
+ --apt-indices)
+ LB_APT_INDICES="${2}"
+ shift 2
+ ;;
+
+ --apt-options)
+ APT_OPTIONS="${2}"
+ shift 2
+ ;;
+
+ --apt-pipeline)
+ LB_APT_PIPELINE="${2}"
+ shift 2
+ ;;
+
+ --apt-recommends)
+ LB_APT_RECOMMENDS="${2}"
+ shift 2
+ ;;
+
+ --apt-secure)
+ LB_APT_SECURE="${2}"
+ shift 2
+ ;;
+
+ --apt-source-archives)
+ LB_APT_SOURCE_ARCHIVES="${2}"
+ shift 2
+ ;;
+
+ --debootstrap-options)
+ DEBOOTSTRAP_OPTIONS="${2}"
+ shift 2
+ ;;
+
+ --cache)
+ LB_CACHE="${2}"
+ shift 2
+ ;;
+
+ --cache-indices)
+ LB_CACHE_INDICES="${2}"
+ shift 2
+ ;;
+
+ --cache-packages)
+ LB_CACHE_PACKAGES="${2}"
+ shift 2
+ ;;
+
+ --cache-stages)
+ LB_CACHE_STAGES="${2}"
+ shift 2
+ ;;
+
+ --debconf-frontend)
+ LB_DEBCONF_FRONTEND="${2}"
+ shift 2
+ ;;
+
+ --debconf-priority)
+ LB_DEBCONF_PRIORITY="${2}"
+ shift 2
+ ;;
+
+ --initramfs)
+ LB_INITRAMFS="${2}"
+ shift 2
+ ;;
+
+ --initramfs-compression)
+ LB_INITRAMFS_COMPRESSION="${2}"
+ shift 2
+ ;;
+
+ --initsystem)
+ LB_INITSYSTEM="${2}"
+ shift 2
+ ;;
+
+ --fdisk)
+ LB_FDISK="${2}"
+ shift 2
+ ;;
+
+ --losetup)
+ LB_LOSETUP="${2}"
+ shift 2
+ ;;
+
+ --mode)
+ LB_MODE="${2}"
+ shift 2
+ ;;
+
+ --system)
+ LB_SYSTEM="${2}"
+ shift 2
+ ;;
+
+ --tasksel)
+ LB_TASKSEL="${2}"
+ shift 2
+ ;;
+
+ # config/bootstrap
+ -a|--architectures)
+ LB_ARCHITECTURES="${2}"
+ shift 2
+ ;;
+
+ -d|--distribution)
+ LB_DISTRIBUTION="${2}"
+ shift 2
+ ;;
+
+ --parent-distribution)
+ LB_PARENT_DISTRIBUTION="${2}"
+ shift 2
+ ;;
+
+ -m|--parent-mirror-bootstrap)
+ LB_PARENT_MIRROR_BOOTSTRAP="${2}"
+ shift 2
+ ;;
+
+ --parent-mirror-chroot)
+ LB_PARENT_MIRROR_CHROOT="${2}"
+ shift 2
+ ;;
+
+ --parent-mirror-chroot-security)
+ LB_PARENT_MIRROR_CHROOT_SECURITY="${2}"
+ shift 2
+ ;;
+
+ --parent-mirror-binary)
+ LB_PARENT_MIRROR_BINARY="${2}"
+ shift 2
+ ;;
+
+ --parent-mirror-binary-security)
+ LB_PARENT_MIRROR_BINARY_SECURITY="${2}"
+ shift 2
+ ;;
+
+ --parent-mirror-debian-installer)
+ LB_PARENT_MIRROR_DEBIAN_INSTALLER="${2}"
+ shift 2
+ ;;
+
+ --mirror-bootstrap)
+ LB_MIRROR_BOOTSTRAP="${2}"
+ shift 2
+ ;;
+
+ --mirror-chroot)
+ LB_MIRROR_CHROOT="${2}"
+ shift 2
+ ;;
+
+ --mirror-chroot-security)
+ LB_MIRROR_CHROOT_SECURITY="${2}"
+ shift 2
+ ;;
+
+ --mirror-binary)
+ LB_MIRROR_BINARY="${2}"
+ shift 2
+ ;;
+
+ --mirror-binary-security)
+ LB_MIRROR_BINARY_SECURITY="${2}"
+ shift 2
+ ;;
+
+ --mirror-debian-installer)
+ LB_MIRROR_DEBIAN_INSTALLER="${2}"
+ shift 2
+ ;;
+
+ --archive-areas)
+ LB_ARCHIVE_AREAS="${2}"
+ shift 2
+ ;;
+
+ --parent-archive-areas)
+ LB_PARENT_ARCHIVE_AREAS="${2}"
+ shift 2
+ ;;
+
+ # config/system
+ --chroot-filesystem)
+ LB_CHROOT_FILESYSTEM="${2}"
+ shift 2
+ ;;
+
+ --gzip-options)
+ GZIP_OPTIONS="${2}"
+ shift 2
+ ;;
+
+ --image-name)
+ LIVE_IMAGE_NAME="${2}"
+ shift 2
+ ;;
+
+ --interactive)
+ LB_INTERACTIVE="${2}"
+ shift 2
+ ;;
+
+ --keyring-packages)
+ LB_KEYRING_PACKAGES="${2}"
+ shift 2
+ ;;
+
+ -k|--linux-flavours)
+ LB_LINUX_FLAVOURS="${2}"
+ shift 2
+ ;;
+
+ --linux-packages)
+ LB_LINUX_PACKAGES="${2}"
+ shift 2
+ ;;
+
+ --security)
+ LB_SECURITY="${2}"
+ shift 2
+ ;;
+
+ --updates)
+ LB_UPDATES="${2}"
+ shift 2
+ ;;
+
+ --backports)
+ LB_BACKPORTS="${2}"
+ shift 2
+ ;;
+
+ # config/binary
+ --binary-filesystem)
+ LB_BINARY_FILESYSTEM="${2}"
+ shift 2
+ ;;
+
+ -b|--binary-images)
+ LIVE_IMAGE_TYPE="${2}"
+ shift 2
+ ;;
+
+ --bootappend-live)
+ LB_BOOTAPPEND_LIVE="${2}"
+ shift 2
+ ;;
+
+ --bootappend-live-failsafe)
+ LB_BOOTAPPEND_LIVE_FAILSAFE="${2}"
+ shift 2
+ ;;
+
+ --bootappend-install)
+ LB_BOOTAPPEND_INSTALL="${2}"
+ shift 2
+ ;;
+
+ --bootloaders)
+ LB_BOOTLOADERS="${2}"
+ shift 2
+ ;;
+
+ --checksums)
+ LB_CHECKSUMS="${2}"
+ shift 2
+ ;;
+
+ --compression)
+ LB_COMPRESSION="${2}"
+ shift 2
+ ;;
+
+ --config)
+ _CONFIG="${2}"
+ shift 2
+ ;;
+
+ --zsync)
+ LB_ZSYNC="${2}"
+ shift 2
+ ;;
+
+ --build-with-chroot)
+ LB_BUILD_WITH_CHROOT="${2}"
+ shift 2
+ ;;
+
+ --debian-installer)
+ LB_DEBIAN_INSTALLER="${2}"
+ shift 2
+ ;;
+
+ --debian-installer-distribution)
+ LB_DEBIAN_INSTALLER_DISTRIBUTION="${2}"
+ shift 2
+ ;;
+
+ --parent-debian-installer-distribution)
+ LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${2}"
+ shift 2
+ ;;
+
+ --debian-installer-preseedfile)
+ LB_DEBIAN_INSTALLER_PRESEEDFILE="${2}"
+ shift 2
+ ;;
+
+ --debian-installer-gui)
+ LB_DEBIAN_INSTALLER_GUI="${2}"
+ shift 2
+ ;;
+
+ --grub-splash)
+ LB_GRUB_SPLASH="${2}"
+ shift 2
+ ;;
+
+ --isohybrid-options)
+ LB_ISOHYBRID_OPTIONS="${2}"
+ shift 2
+ ;;
+
+ --hdd-label)
+ LB_HDD_LABEL="${2}"
+ shift 2
+ ;;
+
+ --hdd-size)
+ LB_HDD_SIZE="${2}"
+ shift 2
+ ;;
+
+ --hdd-partition-start)
+ LB_HDD_PARTITION_START="${2}"
+ shift 2
+ ;;
+
+ --iso-application)
+ LB_ISO_APPLICATION="${2}"
+ shift 2
+ ;;
+
+ --iso-preparer)
+ LB_ISO_PREPARER="${2}"
+ shift 2
+ ;;
+
+ --iso-publisher)
+ LB_ISO_PUBLISHER="${2}"
+ shift 2
+ ;;
+
+ --iso-volume)
+ LB_ISO_VOLUME="${2}"
+ shift 2
+ ;;
+
+ --jffs2-eraseblock)
+ LB_JFFS2_ERASEBLOCK="${2}"
+ shift 2
+ ;;
+
+ --memtest)
+ LB_MEMTEST="${2}"
+ shift 2
+ ;;
+
+ --net-root-filesystem)
+ LB_NET_ROOT_FILESYSTEM="${2}"
+ shift 2
+ ;;
+
+ --net-root-mountoptions)
+ LB_NET_ROOT_MOUNTOPTIONS="${2}"
+ shift 2
+ ;;
+
+ --net-root-path)
+ LB_NET_ROOT_PATH="${2}"
+ shift 2
+ ;;
+
+ --net-root-server)
+ LB_NET_ROOT_SERVER="${2}"
+ shift 2
+ ;;
+
+ --net-cow-filesystem)
+ LB_NET_COW_FILESYSTEM="${2}"
+ shift 2
+ ;;
+
+ --net-cow-mountoptions)
+ LB_NET_COW_MOUNTOPTIONS="${2}"
+ shift 2
+ ;;
+
+ --net-cow-path)
+ LB_NET_COW_PATH="${2}"
+ shift 2
+ ;;
+
+ --net-cow-server)
+ LB_NET_COW_SERVER="${2}"
+ shift 2
+ ;;
+
+ --net-tarball)
+ LB_NET_TARBALL="${2}"
+ shift 2
+ ;;
+
+ --firmware-binary)
+ LB_FIRMWARE_BINARY="${2}"
+ shift 2
+ ;;
+
+ --firmware-chroot)
+ LB_FIRMWARE_CHROOT="${2}"
+ shift 2
+ ;;
+
+ --swap-file-path)
+ LB_SWAP_FILE_PATH="${2}"
+ shift 2
+ ;;
+
+ --swap-file-size)
+ LB_SWAP_FILE_SIZE="${2}"
+ shift 2
+ ;;
+
+ --loadlin)
+ LB_LOADLIN="${2}"
+ shift 2
+ ;;
+
+ --win32-loader)
+ LB_WIN32_LOADER="${2}"
+ shift 2
+ ;;
+
+ --bootstrap-qemu-arch)
+ LB_BOOTSTRAP_QEMU_ARCHITECTURES="${2}"
+ shift 2
+ ;;
+
+ --bootstrap-qemu-exclude)
+ LB_BOOTSTRAP_QEMU_EXCLUDE="${2}"
+ shift 2
+ ;;
+
+ --bootstrap-qemu-static)
+ LB_BOOTSTRAP_QEMU_STATIC="${2}"
+ shift 2
+ ;;
+
+ # config/source
+ --source)
+ LB_SOURCE="${2}"
+ shift 2
+ ;;
+
+ -s|--source-images)
+ LB_SOURCE_IMAGES="${2}"
+ shift 2
+ ;;
+
+ # other
+ --breakpoints)
+ _BREAKPOINTS="true"
+ shift
+ ;;
+
+ -c|--conffile)
+ _CONFFILE="${2}"
+ shift 2
+ ;;
+
+ --color)
+ _COLOR="true"
+ shift
+ ;;
+
+ --debug)
+ _DEBUG="true"
+ shift
+ ;;
+
+ --force)
+ _FORCE="true"
+ shift
+ ;;
+
+ -h|--help)
+ Help
+ shift
+ ;;
+
+ --ignore-system-defaults)
+ shift
+ ;;
+
+ --quiet)
+ _QUIET="true"
+ shift
+ ;;
+
+ -u|--usage)
+ Usage
+ shift
+ ;;
+
+ --verbose)
+ _VERBOSE="true"
+ shift
+ ;;
+
+ -v|--version)
+ echo "${VERSION}"
+ exit 0
+ ;;
+
+ --)
+ shift
+ break
+ ;;
+
+ *)
+ Echo_error "internal error %s" "${0}"
+ exit 1
+ ;;
+ esac
+ done
+}
+
+Local_arguments "${@}"
+
+if [ -e .git ] && [ -n "${_CONFIG}" ]
+then
+ if [ "${1}" != "noauto" ]
+ then
+ Echo_message "Ignoring --config ${_CONFIG}: ${PWD} is already a git repository"
+ fi
+
+ _CONFIG=""
+fi
+
+if [ -e .build/config ] && [ -n "${_CONFIG}" ]
+then
+ if [ "${1}" != "noauto" ]
+ then
+ Echo_message "Ignoring --config ${_CONFIG}: ${PWD} is already a live-build configuration tree"
+ fi
+
+ _CONFIG=""
+fi
+
+if [ -n "${_CONFIG}" ]
+then
+ if [ -e "${_CONFIG}" ] || [ -e "/usr/share/live/images/${_CONFIG}" ]
+ then
+ if [ ! -e "${_CONFIG}" ] && [ -e "/usr/share/live/images/${_CONFIG}" ]
+ then
+ _CONFIG="/usr/share/live/images/${_CONFIG}"
+ fi
+
+ Echo_message "Copying ${_CONFIG}"
+ tar -C "${_CONFIG}" -c . | tar -C ./ -x
+ else
+ _GIT_REPOSITORY="$(echo ${_CONFIG} | sed -e 's|::.*$||')"
+
+ Echo_message "Cloning ${_GIT_REPOSITORY}"
+ git clone ${_GIT_REPOSITORY} ./
+
+ if [ "${_GIT_REPOSITORY}" != "${_CONFIG}" ]
+ then
+ _GIT_BRANCH="$(echo ${_CONFIG} | awk -F\:\: '{ print $NF }')"
+
+ Echo_message "Checking out ${_GIT_BRANCH}"
+ git checkout ${_GIT_BRANCH}
+ fi
+ fi
+
+ if [ -e auto/config ]
+ then
+ _EXTRA_OPTIONS="$(echo ${@} | sed -e "s|--config ${_GIT_REPOSITORY}::${_GIT_BRANCH}||g" -e "s|--config ${_GIT_REPOSITORY}||g")"
+
+ Echo_message "The following extra options specified to lb config are going to be added to auto/config: ${_EXTRA_OPTIONS}"
+ sed -i -e "s|\"\${@}\"|${_EXTRA_OPTIONS} \"\${@}\"|" auto/config
+ fi
+fi
+
+# Read meta config
+if [ "${1}" != "noauto" ] && [ -x auto/config ]
+then
+ Echo_message "Executing auto/config script."
+ ./auto/config "${@}"
+ exit ${?}
+fi
+
+if [ "${1}" = "noauto" ]
+then
+ shift
+fi
+
+# Reading system configuration
+if ls /etc/live/build.conf > /dev/null 2>&1 || ls /etc/live/build/* > /dev/null 2>&1
+then
+ if In_list "--ignore-system-defaults" "${@}"
+ then
+ Echo_message "Ignoring defaults in %s" "/etc/live/build.conf"
+ else
+ Echo_message "Using defaults in %s" "/etc/live/build.conf"
+
+ Read_conffiles /etc/live/build.conf /etc/live/build/*
+ fi
+fi
+
+# Reading existing configuration
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+
+Local_arguments "${@}"
+
+if [ -n "${_CONFFILE}" ]
+then
+ Read_conffiles "${_CONFFILE}"
+fi
+
+# Setting defaults
+Set_defaults
+
+# Checking defaults
+Check_defaults
+
+if [ ! -e config ]
+then
+ Echo_message "Creating config tree for a ${LB_MODE}/${LB_DISTRIBUTION}/${LB_ARCHITECTURES} system"
+ mkdir config
+else
+ Echo_message "Updating config tree for a ${LB_MODE}/${LB_DISTRIBUTION}/${LB_ARCHITECTURES} system"
+fi
+
+# Creating live-build configuration
+cat > config/common << EOF
+# config/common - common options for live-build(7)
+
+# \$LB_APT_FTP_PROXY: set apt ftp proxy
+# (Default: autodetected or empty)
+LB_APT_FTP_PROXY="${LB_APT_FTP_PROXY}"
+
+# \$LB_APT_HTTP_PROXY: set apt http proxy
+# (Default: autodetected or empty)
+LB_APT_HTTP_PROXY="${LB_APT_HTTP_PROXY}"
+
+# \$LB_APT_PIPELINE: set apt pipeline depth
+# (Default: ${LB_APT_PIPELINE})
+LB_APT_PIPELINE="${LB_APT_PIPELINE}"
+
+# \$LB_APT_RECOMMENDS: set apt recommends
+# (Default: ${LB_APT_RECOMMENDS})
+LB_APT_RECOMMENDS="${LB_APT_RECOMMENDS}"
+
+# \$LB_APT_SECURE: set apt security
+# (Default: ${LB_APT_SECURE})
+LB_APT_SECURE="${LB_APT_SECURE}"
+
+# \$LB_APT_SOURCE_ARCHIVES: set apt source entries in sources.list
+# (Default: ${LB_APT_SOURCE_ARCHIVES})
+LB_APT_SOURCE_ARCHIVES="${LB_APT_SOURCE_ARCHIVES}"
+
+# \$LB_CACHE: control cache
+# (Default: ${LB_CACHE})
+LB_CACHE="${LB_CACHE}"
+
+# \$LB_CACHE_INDICES: control if downloaded package indices should be cached
+# (Default: ${LB_CACHE_INDICES})
+LB_CACHE_INDICES="${LB_CACHE_INDICES}"
+
+# \$LB_CACHE_PACKAGES: control if downloaded packages files should be cached
+# (Default: ${LB_CACHE_PACKAGES})
+LB_CACHE_PACKAGES="${LB_CACHE_PACKAGES}"
+
+# \$LB_CACHE_STAGES: control if completed stages should be cached
+# (Default: ${LB_CACHE_STAGES})
+LB_CACHE_STAGES="${LB_CACHE_STAGES}"
+
+# \$LB_DEBCONF_FRONTEND: set debconf(1) frontend to use
+# (Default: ${LB_DEBCONF_FRONTEND})
+LB_DEBCONF_FRONTEND="${LB_DEBCONF_FRONTEND}"
+
+# \$LB_DEBCONF_PRIORITY: set debconf(1) priority to use
+# (Default: ${LB_DEBCONF_PRIORITY})
+LB_DEBCONF_PRIORITY="${LB_DEBCONF_PRIORITY}"
+
+# \$LB_INITRAMFS: set initramfs hook
+# (Default: ${LB_INITRAMFS})
+LB_INITRAMFS="${LB_INITRAMFS}"
+
+# \$LB_INITRAMFS_COMPRESSION: set initramfs compression
+# (Default: ${LB_INITRAMFS_COMPRESSION})
+LB_INITRAMFS_COMPRESSION="${LB_INITRAMFS_COMPRESSION}"
+
+# \$LB_INITSYSTEM: set init system
+# (Default: ${LB_INITSYSTEM})
+LB_INITSYSTEM="${LB_INITSYSTEM}"
+
+# \$LB_FDISK: set fdisk program
+# (Default: autodetected)
+LB_FDISK="${LB_FDISK}"
+
+# \$LB_LOSETUP: set losetup program
+# (Default: autodetected)
+LB_LOSETUP="${LB_LOSETUP}"
+
+# \$LB_MODE: set distribution mode
+# (Default: ${LB_MODE})
+LB_MODE="${LB_MODE}"
+
+# \$LB_SYSTEM: set system type
+# (Default: ${LB_SYSTEM})
+LB_SYSTEM="${LB_SYSTEM}"
+
+# \$LB_TASKSEL: set tasksel program
+# (Default: ${LB_TASKSEL})
+LB_TASKSEL="${LB_TASKSEL}"
+
+# live-build options
+
+# \$_BREAKPOINTS: enable breakpoints
+# (Default: ${_BREAKPOINTS})
+#_BREAKPOINTS="${_BREAKPOINTS}"
+
+# \$_DEBUG: enable debug
+# (Default: ${_DEBUG})
+#_DEBUG="${_DEBUG}"
+
+# \$_COLOR: enable color
+# (Default: ${_COLOR})
+#_COLOR="${_COLOR}"
+
+# \$_FORCE: enable force
+# (Default: ${_FORCE})
+#_FORCE="${_FORCE}"
+
+# \$_QUIET: enable quiet
+# (Default: ${_QUIET})
+_QUIET="${_QUIET}"
+
+# \$_VERBOSE: enable verbose
+# (Default: ${_VERBOSE})
+#_VERBOSE="${_VERBOSE}"
+
+# Internal stuff (FIXME)
+APT_OPTIONS="${APT_OPTIONS}"
+DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS}"
+GZIP_OPTIONS="${GZIP_OPTIONS}"
+ISOHYBRID_OPTIONS="${ISOHYBRID_OPTIONS}"
+EOF
+
+# Creating lb_bootstrap_* configuration
+cat > config/bootstrap << EOF
+# config/bootstrap - options for live-build(7), bootstrap stage
+
+# \$LB_DISTRIBUTION: select distribution to use
+# (Default: ${LB_DISTRIBUTION})
+LB_DISTRIBUTION="${LB_DISTRIBUTION}"
+
+# \$LB_PARENT_DISTRIBUTION: select parent distribution to use
+# (Default: ${LB_PARENT_DISTRIBUTION})
+LB_PARENT_DISTRIBUTION="${LB_PARENT_DISTRIBUTION}"
+
+# \$LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION: select parent distribution for debian-installer to use
+# (Default: ${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION})
+LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}"
+
+# \$LB_PARENT_MIRROR_BOOTSTRAP: set parent mirror to bootstrap from
+# (Default: ${LB_PARENT_MIRROR_BOOTSTRAP})
+LB_PARENT_MIRROR_BOOTSTRAP="${LB_PARENT_MIRROR_BOOTSTRAP}"
+
+# \$LB_PARENT_MIRROR_CHROOT: set parent mirror to fetch packages from
+# (Default: ${LB_PARENT_MIRROR_CHROOT})
+LB_PARENT_MIRROR_CHROOT="${LB_PARENT_MIRROR_CHROOT}"
+
+# \$LB_PARENT_MIRROR_CHROOT_SECURITY: set security parent mirror to fetch packages from
+# (Default: ${LB_PARENT_MIRROR_CHROOT_SECURITY})
+LB_PARENT_MIRROR_CHROOT_SECURITY="${LB_PARENT_MIRROR_CHROOT_SECURITY}"
+
+# \$LB_PARENT_MIRROR_BINARY: set parent mirror which ends up in the image
+# (Default: ${LB_PARENT_MIRROR_BINARY})
+LB_PARENT_MIRROR_BINARY="${LB_PARENT_MIRROR_BINARY}"
+
+# \$LB_PARENT_MIRROR_BINARY_SECURITY: set security parent mirror which ends up in the image
+# (Default: ${LB_PARENT_MIRROR_BINARY_SECURITY})
+LB_PARENT_MIRROR_BINARY_SECURITY="${LB_PARENT_MIRROR_BINARY_SECURITY}"
+
+# \$LB_PARENT_MIRROR_DEBIAN_INSTALLER: set debian-installer parent mirror
+# (Default: ${LB_PARENT_MIRROR_BOOTSTRAP})
+LB_PARENT_MIRROR_DEBIAN_INSTALLER="${LB_PARENT_MIRROR_DEBIAN_INSTALLER}"
+
+# \$LB_MIRROR_BOOTSTRAP: set mirror to bootstrap from
+# (Default: ${LB_MIRROR_BOOTSTRAP})
+LB_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP}"
+
+# \$LB_MIRROR_CHROOT: set mirror to fetch packages from
+# (Default: ${LB_MIRROR_CHROOT})
+LB_MIRROR_CHROOT="${LB_MIRROR_CHROOT}"
+
+# \$LB_MIRROR_CHROOT_SECURITY: set security mirror to fetch packages from
+# (Default: ${LB_MIRROR_CHROOT_SECURITY})
+LB_MIRROR_CHROOT_SECURITY="${LB_MIRROR_CHROOT_SECURITY}"
+
+# \$LB_MIRROR_BINARY: set mirror which ends up in the image
+# (Default: ${LB_MIRROR_BINARY})
+LB_MIRROR_BINARY="${LB_MIRROR_BINARY}"
+
+# \$LB_MIRROR_BINARY_SECURITY: set security mirror which ends up in the image
+# (Default: ${LB_MIRROR_BINARY_SECURITY})
+LB_MIRROR_BINARY_SECURITY="${LB_MIRROR_BINARY_SECURITY}"
+
+# \$LB_MIRROR_DEBIAN_INSTALLER: set debian-installer mirror
+# (Default: ${LB_MIRROR_BOOTSTRAP})
+LB_MIRROR_DEBIAN_INSTALLER="${LB_MIRROR_DEBIAN_INSTALLER}"
+
+# \$LB_BOOTSTRAP_QEMU_ARCHITECTURES: architectures to use foreign bootstrap
+# (Default: ${LB_BOOTSTRAP_QEMU_ARCHITECTURES})
+LB_BOOTSTRAP_QEMU_ARCHITECTURES="${LB_BOOTSTRAP_QEMU_ARCHITECTURES}"
+
+# \$LB_BOOTSTRAP_QEMU_EXCLUDE: packages to exclude during foreign bootstrap
+# (Default: ${LB_BOOTSTRAP_QEMU_EXCLUDE})
+LB_BOOTSTRAP_QEMU_EXCLUDE="${LB_BOOTSTRAP_QEMU_EXCLUDE}"
+
+# \$LB_BOOTSTRAP_QEMU_STATIC: static qemu binary for foreign bootstrap
+# (Default: ${LB_BOOTSTRAP_QEMU_STATIC})
+LB_BOOTSTRAP_QEMU_STATIC="${LB_BOOTSTRAP_QEMU_STATIC}"
+EOF
+
+# Creating lb_chroot_* configuration
+mkdir -p config/archives
+mkdir -p config/apt
+mkdir -p config/packages
+mkdir -p config/packages.chroot
+mkdir -p config/package-lists
+mkdir -p config/preseed
+
+cat > config/system << EOF
+# config/system - options for live-build(7), chroot stage
+
+# \$LB_CHROOT_FILESYSTEM: set chroot filesystem
+# (Default: ${LB_CHROOT_FILESYSTEM})
+LB_CHROOT_FILESYSTEM="${LB_CHROOT_FILESYSTEM}"
+
+# \$LB_UNION_FILESYSTEM: set union filesystem
+# (Default: ${LB_UNION_FILESYSTEM})
+LB_UNION_FILESYSTEM="${LB_UNION_FILESYSTEM}"
+
+# \$LB_INTERACTIVE: set interactive build
+# (Default: ${LB_INTERACTIVE})
+LB_INTERACTIVE="${LB_INTERACTIVE}"
+
+# \$LB_KEYRING_PACKAGES: set keyring packages
+# (Default: empty)
+LB_KEYRING_PACKAGES="${LB_KEYRING_PACKAGES}"
+
+# \$LB_LINUX_FLAVOURS: set kernel flavour to use
+# (Default: autodetected)
+LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS}"
+
+# \$LB_LINUX_PACKAGES: set kernel packages to use
+# (Default: autodetected)
+LB_LINUX_PACKAGES="${LB_LINUX_PACKAGES}"
+
+# \$LB_SECURITY: enable security updates
+# (Default: ${LB_SECURITY})
+LB_SECURITY="${LB_SECURITY}"
+
+# \$LB_UPDATES: enable updates updates
+# (Default: ${LB_UPDATES})
+LB_UPDATES="${LB_UPDATES}"
+
+# \$LB_BACKPORTS: enable backports updates
+# (Default: ${LB_BACKPORTS})
+LB_BACKPORTS="${LB_BACKPORTS}"
+EOF
+
+# Creating lb_binary_* configuration
+mkdir -p config/debian-installer
+mkdir -p config/includes.installer
+mkdir -p config/packages.binary
+mkdir -p config/package-lists
+mkdir -p config/rootfs
+
+cat > config/binary << EOF
+# config/binary - options for live-build(7), binary stage
+
+# \$LB_BINARY_FILESYSTEM: set image filesystem
+# (Default: ${LB_BINARY_FILESYSTEM})
+LB_BINARY_FILESYSTEM="${LB_BINARY_FILESYSTEM}"
+
+# \$LB_APT_INDICES: set apt generic indices
+# (Default: ${LB_APT_INDICES})
+LB_APT_INDICES="${LB_APT_INDICES}"
+
+# \$LB_BOOTAPPEND_LIVE: set boot parameters
+# (Default: empty)
+LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE}"
+
+# \$LB_BOOTAPPEND_INSTALL: set boot parameters
+# (Default: empty)
+LB_BOOTAPPEND_INSTALL="${LB_BOOTAPPEND_INSTALL}"
+
+# \$LB_BOOTAPPEND_LIVE_FAILSAFE: set boot parameters
+# (Default: empty)
+LB_BOOTAPPEND_LIVE_FAILSAFE="${LB_BOOTAPPEND_LIVE_FAILSAFE}"
+
+# \$LB_BOOTLOADERS: set bootloaders
+# (Default: ${LB_BOOTLOADERS})
+LB_BOOTLOADERS="${LB_BOOTLOADERS}"
+
+# \$LB_CHECKSUMS: set checksums
+# (Default: ${LB_CHECKSUMS})
+LB_CHECKSUMS="${LB_CHECKSUMS}"
+
+# \$LB_COMPRESSION: set compression
+# (Default: ${LB_COMPRESSION})
+LB_COMPRESSION="${LB_COMPRESSION}"
+
+# \$LB_ZSYNC: set zsync
+# (Default: ${LB_ZSYNC})
+LB_ZSYNC="${LB_ZSYNC}"
+
+# \${LB_BUILD_WITH_CHROOT: control if we build binary images chrooted
+# (Default: ${LB_BUILD_WITH_CHROOT})
+# DO NEVER, *NEVER*, *N*E*V*E*R* SET THIS OPTION to false.
+LB_BUILD_WITH_CHROOT="${LB_BUILD_WITH_CHROOT}"
+
+# \$LB_DEBIAN_INSTALLER: set debian-installer
+# (Default: ${LB_DEBIAN_INSTALLER})
+LB_DEBIAN_INSTALLER="${LB_DEBIAN_INSTALLER}"
+
+# \$LB_DEBIAN_INSTALLER_DISTRIBUTION: set debian-installer suite
+# (Default: empty)
+LB_DEBIAN_INSTALLER_DISTRIBUTION="${LB_DEBIAN_INSTALLER_DISTRIBUTION}"
+
+# \$LB_DEBIAN_INSTALLER_PRESEEDFILE: set debian-installer preseed filename/url
+# (Default: ${LB_DEBIAN_INSTALLER_PRESEEDFILE})
+LB_DEBIAN_INSTALLER_PRESEEDFILE="${LB_DEBIAN_INSTALLER_PRESEEDFILE}"
+
+# \$LB_DEBIAN_INSTALLER_GUI: toggle use of GUI debian-installer
+# (Default: ${LB_DEBIAN_INSTALLER_GUI})
+LB_DEBIAN_INSTALLER_GUI="${LB_DEBIAN_INSTALLER_GUI}"
+
+# \$LB_GRUB_SPLASH: set custom grub splash
+# (Default: empty)
+LB_GRUB_SPLASH="${LB_GRUB_SPLASH}"
+
+# \$LB_HDD_LABEL: set hdd label
+# (Default: ${LB_HDD_LABEL})
+LB_HDD_LABEL="${LB_HDD_LABEL}"
+
+# \$LB_HDD_SIZE: set hdd filesystem size
+# (Default: ${LB_HDD_SIZE})
+LB_HDD_SIZE="${LB_HDD_SIZE}"
+
+# \$LB_HDD_PARTITION_START: set start of partition for the hdd target for BIOSes that expect a specific boot partition start (e.g. "63s"). If empty, use optimal layout.
+# (Default: ${LB_HDD_PARTITION_START})
+LB_HDD_PARTITION_START="${LB_HDD_PARTITION_START}"
+
+# \$LB_ISO_APPLICATION: set iso author
+# (Default: ${LB_ISO_APPLICATION})
+LB_ISO_APPLICATION="${LB_ISO_APPLICATION}"
+
+# \$LB_ISO_PREPARER: set iso preparer
+# (Default: ${LB_ISO_PREPARER})
+LB_ISO_PREPARER="${LB_ISO_PREPARER}"
+
+# \$LB_ISO_PUBLISHER: set iso publisher
+# (Default: ${LB_ISO_PUBLISHER})
+LB_ISO_PUBLISHER="${LB_ISO_PUBLISHER}"
+
+# \$LB_ISO_VOLUME: set iso volume (max 32 chars)
+# (Default: ${LB_ISO_VOLUME})
+LB_ISO_VOLUME="${LB_ISO_VOLUME}"
+
+# \$LB_JFFS2_ERASEBLOCK: set jffs2 eraseblock size
+# (Default: unset)
+LB_JFFS2_ERASEBLOCK=""
+
+# \$LB_MEMTEST: set memtest
+# (Default: ${LB_MEMTEST})
+LB_MEMTEST="${LB_MEMTEST}"
+
+# \$LB_LOADLIN: set loadlin
+# (Default: ${LB_LOADLIN})
+LB_LOADLIN="${LB_LOADLIN}"
+
+# \$LB_WIN32_LOADER: set win32-loader
+# (Default: ${LB_WIN32_LOADER})
+LB_WIN32_LOADER="${LB_WIN32_LOADER}"
+
+# \$LB_NET_ROOT_FILESYSTEM: set netboot filesystem
+# (Default: ${LB_NET_ROOT_FILESYSTEM})
+LB_NET_ROOT_FILESYSTEM="${LB_NET_ROOT_FILESYSTEM}"
+
+# \$LB_NET_ROOT_MOUNTOPTIONS: set nfsopts
+# (Default: empty)
+LB_NET_ROOT_MOUNTOPTIONS="${LB_NET_ROOT_MOUNTOPTIONS}"
+
+# \$LB_NET_ROOT_PATH: set netboot server directory
+# (Default: ${LB_NET_ROOT_PATH})
+LB_NET_ROOT_PATH="${LB_NET_ROOT_PATH}"
+
+# \$LB_NET_ROOT_SERVER: set netboot server address
+# (Default: ${LB_NET_ROOT_SERVER})
+LB_NET_ROOT_SERVER="${LB_NET_ROOT_SERVER}"
+
+# \$LB_NET_COW_FILESYSTEM: set net client cow filesystem
+# (Default: ${LB_NET_COW_FILESYSTEM})
+LB_NET_COW_FILESYSTEM="${LB_NET_COW_FILESYSTEM}"
+
+# \$LB_NET_COW_MOUNTOPTIONS: set cow mount options
+# (Default: empty)
+LB_NET_COW_MOUNTOPTIONS="${LB_NET_COW_MOUNTOPTIONS}"
+
+# \$LB_NET_COW_PATH: set cow directory
+# (Default: ${LB_NET_COW_PATH})
+LB_NET_COW_PATH="${LB_NET_COW_PATH}"
+
+# \$LB_NET_COW_SERVER: set cow server
+# (Default: ${LB_NET_COW_SERVER})
+LB_NET_COW_SERVER="${LB_NET_COW_SERVER}"
+
+# \$LB_NET_TARBALL: set net tarball
+# (Default: ${LB_NET_TARBALL})
+LB_NET_TARBALL="${LB_NET_TARBALL}"
+
+# \$LB_FIRMWARE_BINARY: include firmware packages in debian-installer
+# (Default: ${LB_FIRMWARE_BINARY})
+LB_FIRMWARE_BINARY="${LB_FIRMWARE_BINARY}"
+
+# \$LB_FIRMWARE_CHROOT: include firmware packages in debian-installer
+# (Default: ${LB_FIRMWARE_CHROOT})
+LB_FIRMWARE_CHROOT="${LB_FIRMWARE_CHROOT}"
+
+# \$LB_SWAP_FILE_PATH: set swap file path
+# (Default: ${LB_SWAP_FILE_PATH})
+LB_SWAP_FILE_PATH="${LB_SWAP_FILE_PATH}"
+
+# \$LB_SWAP_FILE_SIZE: set swap file size
+# (Default: ${LB_SWAP_FILE_SIZE})
+LB_SWAP_FILE_SIZE="${LB_SWAP_FILE_SIZE}"
+EOF
+
+# Creating lb_source_* configuration
+cat > config/source << EOF
+# config/source - options for live-build(7), source stage
+
+# \$LB_SOURCE: set source option
+# (Default: ${LB_SOURCE})
+LB_SOURCE="${LB_SOURCE}"
+
+# \$LB_SOURCE_IMAGES: set image type
+# (Default: ${LB_SOURCE_IMAGES})
+LB_SOURCE_IMAGES="${LB_SOURCE_IMAGES}"
+EOF
+
+mkdir -p auto
+mkdir -p local/bin
+
+# Checking defaults again
+Check_defaults
+
+if [ "${_CLEAN}" = "true" ]
+then
+ # Remove empty directories in config tree
+ rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true
+ rmdir --ignore-fail-on-non-empty config/*/ > /dev/null 2>&1 || true
+ rmdir --ignore-fail-on-non-empty config > /dev/null 2>&1 || true
+ rmdir --ignore-fail-on-non-empty local/*/ > /dev/null 2>&1 || true
+ rmdir --ignore-fail-on-non-empty local > /dev/null 2>&1 || true
+fi
+
+mkdir -p config/hooks/normal config/hooks/live
+mkdir -p config/includes config/includes.bootstrap config/includes.chroot config/includes.binary config/includes.source
+
+Echo_message "Symlinking hooks..."
+
+for _HOOK in "${LIVE_BUILD}"/share/hooks/normal/*.hook* /usr/share/live/build/hooks/normal/*.hook*
+do
+ if [ -e "${_HOOK}" ] && [ ! -e "config/hooks/normal/$(basename ${_HOOK})" ]
+ then
+ ln -s "${_HOOK}" "config/hooks/normal/$(basename ${_HOOK})"
+ fi
+done
+
+for _HOOK in "${LIVE_BUILD}"/share/hooks/live/*.hook* /usr/share/live/build/hooks/live/*.hook*
+do
+ if [ -e "${_HOOK}" ] && [ ! -e "config/hooks/live/$(basename ${_HOOK})" ]
+ then
+ ln -s "${_HOOK}" "config/hooks/live/$(basename ${_HOOK})"
+ fi
+done
+
+if [ ! -e config/package-lists/live.list.chroot ]
+then
+ mkdir -p config/package-lists
+
+ case "${LB_INITRAMFS}" in
+ system-boot)
+ echo "system-boot" > config/package-lists/live.list.chroot
+ echo "system-config" >> config/package-lists/live.list.chroot
+ ;;
+
+ *)
+ ;;
+esac
+
+fi
+
+cat > config/build << EOF
+[Image]
+Architecture: ${LB_ARCHITECTURES}
+Archive-Areas: ${LB_ARCHIVE_AREAS}
+Distribution: ${LB_DISTRIBUTION}
+Mirror-Bootstrap: ${LB_MIRROR_BOOTSTRAP}
+EOF
+
+if [ "${LB_DERIVATIVE}" = "true" ]
+then
+
+cat >> config/build << EOF
+
+Parent-Archive-Areas: ${LB_ARCHIVE_AREAS}
+Parent-Distribution: ${LB_PARENT_DISTRIBUTION}
+Parent-Mirror-Bootstrap: ${LB_PARENT_MIRROR_BOOTSTRAP}
+EOF
+
+fi
+
+cat >> config/build << EOF
+
+[FIXME]
+Configuration-Version: ${LIVE_CONFIGURATION_VERSION}
+Name: ${LIVE_IMAGE_NAME}
+Type: ${LIVE_IMAGE_TYPE}
+EOF
+
+# Creating stage file
+Create_stagefile .build/config
diff --git a/system-build/scripts/build/installer b/system-build/scripts/build/installer
new file mode 100755
index 0000000..8ef2edd
--- /dev/null
+++ b/system-build/scripts/build/installer
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+
+# Automatically populating config tree
+if [ -x auto/config ] && [ ! -e .build/config ]
+then
+ Echo_message "Automatically populating config tree."
+ lb config
+fi
+
+# Setting static variables
+DESCRIPTION="$(Echo 'preparing installer images')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+# Setup cleanup function
+Setup_cleanup
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
+then
+ # Configuring chroot
+ lb chroot_devpts install ${@}
+ lb chroot_proc install ${@}
+ lb chroot_selinuxfs install ${@}
+ lb chroot_sysfs install ${@}
+ lb chroot_debianchroot install ${@}
+ lb chroot_dpkg install ${@}
+ lb chroot_tmpfs install ${@}
+ lb chroot_sysv-rc install ${@}
+ lb chroot_hosts install ${@}
+ lb chroot_resolv install ${@}
+ lb chroot_hostname install ${@}
+ lb chroot_apt install ${@}
+ lb chroot_archives chroot install ${@}
+fi
+
+# Building installer
+lb installer_debian-installer ${@}
+lb installer_preseed ${@}
+
+if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
+then
+ # Deconfiguring chroot
+ lb chroot_archives chroot remove ${@}
+ lb chroot_apt remove ${@}
+ lb chroot_hostname remove ${@}
+ lb chroot_resolv remove ${@}
+ lb chroot_hosts remove ${@}
+ lb chroot_sysv-rc remove ${@}
+ lb chroot_tmpfs remove ${@}
+ lb chroot_dpkg remove ${@}
+ lb chroot_debianchroot remove ${@}
+ lb chroot_sysfs remove ${@}
+ lb chroot_selinuxfs remove ${@}
+ lb chroot_proc remove ${@}
+ lb chroot_devpts remove ${@}
+fi
diff --git a/system-build/scripts/build/installer_debian-installer b/system-build/scripts/build/installer_debian-installer
new file mode 100755
index 0000000..3f13915
--- /dev/null
+++ b/system-build/scripts/build/installer_debian-installer
@@ -0,0 +1,829 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 debian-installer into binary')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+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 "${LB_DEBIAN_INSTALLER}" in
+ true|cdrom|netinst|netboot|businesscard|live)
+ ;;
+
+ false)
+ exit 0
+ ;;
+
+ *)
+ Echo_error "debian-installer flavour %s not supported." "${LB_DEBIAN_INSTALLER}"
+ exit 1
+ ;;
+esac
+
+Echo_message "Begin installing debian-installer..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/installer_debian-installer
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package host /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 "${LIVE_IMAGE_TYPE}" in
+ netboot)
+ DESTDIR="tftpboot/debian-install/${LB_ARCHITECTURES}"
+ ;;
+
+ hdd*|tar)
+ DESTDIR="binary/install"
+ ;;
+
+ *)
+ DESTDIR="binary/install"
+ ;;
+esac
+
+# Set d-i image type
+case "${LB_DEBIAN_INSTALLER}" in
+ businesscard|netboot|netinst)
+ DI_IMAGE_TYPE="netboot"
+ ;;
+ *)
+ case "${LIVE_IMAGE_TYPE}" in
+ netboot)
+ DI_IMAGE_TYPE="netboot"
+ ;;
+
+ *)
+ DI_IMAGE_TYPE="cdrom"
+ ;;
+ esac
+ ;;
+esac
+
+# Set architecture-specific variables
+case "${LB_ARCHITECTURES}" in
+ armel)
+ DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')"
+ case "${DI_IMAGE_TYPE}" in
+ cdrom)
+ DI_REMOTE_BASE="${DEFAULT_FLAVOUR}/cdrom"
+ ;;
+
+ netboot)
+ DI_REMOTE_BASE="${DEFAULT_FLAVOUR}/netboot"
+ ;;
+ esac
+
+ DI_REMOTE_KERNEL="vmlinuz"
+ DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk"
+ ;;
+
+ powerpc)
+ case "${DI_IMAGE_TYPE}" in
+ cdrom)
+ DI_REMOTE_BASE="${LB_ARCHITECTURES}/cdrom"
+ ;;
+
+ netboot)
+ DI_REMOTE_BASE="${LB_ARCHITECTURES}/netboot"
+ ;;
+ esac
+
+ DI_REMOTE_KERNEL="vmlinux"
+ DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk"
+ ;;
+
+ *)
+ case "${DI_IMAGE_TYPE}" in
+ netboot)
+ DI_REMOTE_BASE="netboot/debian-installer/${LB_ARCHITECTURES}"
+ DI_REMOTE_BASE_GTK="netboot/gtk/debian-installer/${LB_ARCHITECTURES}"
+ DI_REMOTE_KERNEL="linux"
+ ;;
+
+ cdrom)
+ DI_REMOTE_BASE="cdrom"
+ DI_REMOTE_BASE_GTK="cdrom/gtk"
+ DI_REMOTE_KERNEL="vmlinuz"
+ ;;
+ esac
+ ;;
+esac
+
+Check_multiarchitectures
+
+Install_file() {
+ local FILE
+ FILE="${1}"
+
+ local ARCHIVE_AREA
+ ARCHIVE_AREA="$(dpkg -I ${FILE} | awk '/^.*Section: / { print $2 }')"
+
+ if echo "${ARCHIVE_AREA}" | grep -qs '/'
+ then
+ ARCHIVE_AREA="$(echo ${ARCHIVE_AREA} | awk -F/ '{ print $1 }')"
+ else
+ ARCHIVE_AREA="main"
+ fi
+
+ local TARGET
+ TARGET="${2}/${ARCHIVE_AREA}"
+
+ 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.
+_LB_CACHE_DIR="$(pwd)/cache/installer_debian-installer"
+
+Download_file () {
+ local _LB_TARGET
+ _LB_TARGET="${1}"
+
+ local _LB_URL
+ _LB_URL="${2}"
+
+ _LB_CACHE_FILE="${_LB_CACHE_DIR}/$(echo "${_LB_URL}" | sed 's|/|_|g')"
+
+ if [ ! -f "${_LB_CACHE_FILE}" ]
+ then
+ mkdir -p ${_LB_CACHE_DIR}
+ if ! wget ${WGET_OPTIONS} -O "${_LB_CACHE_FILE}" "${_LB_URL}"
+ then
+ rm -f "${_LB_CACHE_FILE}"
+
+ Echo_error "Could not download file: %s" "${_LB_URL}"
+ exit 1
+ fi
+ fi
+
+ if [ "$(stat --printf %d "${_LB_CACHE_DIR}/")" = "$(stat --printf %d ./)" ]
+ then
+ CP_OPTIONS="-l"
+ fi
+
+ cp -f ${CP_OPTIONS} -- "${_LB_CACHE_FILE}" "${_LB_TARGET}"
+}
+
+VMLINUZ_DI="vmlinuz"
+INITRD_DI="initrd.gz"
+DESTDIR_DI="${DESTDIR}"
+
+VMLINUZ_GI="gtk/vmlinuz"
+INITRD_GI="gtk/initrd.gz"
+DESTDIR_GI="${DESTDIR}/gtk"
+
+case "${LB_DERIVATIVE}" in
+ false)
+ if [ "${LB_DEBIAN_INSTALLER_DISTRIBUTION}" = "daily" ]
+ then
+ # FIXME: variable name should be decupled from derivatves
+ LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="sid"
+
+ # Debian Installer daily builds
+ URL="https://d-i.debian.org/daily-images/${LB_ARCHITECTURES}/daily/"
+ else
+ URL="${LB_MIRROR_DEBIAN_INSTALLER}/dists/${LB_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LB_ARCHITECTURES}/current/images/"
+ fi
+ ;;
+
+ true)
+ if [ "${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}" = "daily" ]
+ then
+ LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="sid"
+
+ # Debian Installer daily builds
+ URL="https://d-i.debian.org/daily-images/${LB_ARCHITECTURES}/daily/"
+ else
+ URL="${LB_PARENT_MIRROR_DEBIAN_INSTALLER}/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LB_ARCHITECTURES}/current/images/"
+ fi
+
+ if [ "${LB_MODE}" = "progress-linux" ]
+ then
+ # FIXME: normal derivatives probably don't rebuild d-i,
+ # but progress-linux does.
+ URL="${LB_MIRROR_DEBIAN_INSTALLER}/dists/${LB_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LB_ARCHITECTURES}/current/images/"
+ fi
+ ;;
+esac
+
+mkdir -p "${DESTDIR_DI}"
+
+# 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 [ "${LB_DEBIAN_INSTALLER_GUI}" = "true" ]
+then
+ case "${LB_ARCHITECTURES}" in
+ amd64|i386)
+ DOWNLOAD_GTK_INSTALLER=1
+ ;;
+
+ powerpc)
+ if [ "${LB_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
+
+# Only download additional packages if appropriate
+if [ "${DI_IMAGE_TYPE}" != "netboot" ]
+then
+ # 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
+
+ case "${LB_ARCHITECTURES}" in
+ amd64)
+ DI_REQ_PACKAGES="lilo grub-pc"
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-amd64"
+ ;;
+
+ i386)
+ DI_REQ_PACKAGES="lilo grub-pc"
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-686-pae"
+ ;;
+
+ powerpc)
+ DI_REQ_PACKAGES="yaboot"
+ DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-powerpc linux-image-powerpc64 linux-image-powerpc-smp"
+ ;;
+ esac
+
+ DI_PACKAGES="${DI_PACKAGES} busybox cryptsetup mdadm lvm2 xfsprogs jfsutils"
+
+ case "${LB_MODE}" in
+ debian)
+ DI_REQ_PACKAGES="${DI_REQ_PACKAGES} console-setup keyboard-configuration kbd"
+ DI_PACKAGES="${DI_PACKAGES} console-setup keyboard-configuration kbd"
+ ;;
+ esac
+ # Include firmware packages
+ if [ "${LB_FIRMWARE_BINARY}" = "true" ]
+ then
+ # Assumption: firmware packages install files into /lib/firmware
+
+ # Get all firmware packages names
+ mkdir -p cache/contents.binary
+
+ FIRMWARE_PACKAGES=""
+
+ _CONTENTS="$(for _PARENT_ARCHIVE_AREA in ${LB_PARENT_ARCHIVE_AREAS}; do echo ${LB_PARENT_MIRROR_CHROOT}/dists/${LB_PARENT_DISTRIBUTION}/${_PARENT_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)"
+
+ rm -f cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+ for _CONTENT in ${_CONTENTS}
+ do
+ wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)"
+ done
+
+ if echo ${LB_PARENT_ARCHIVE_AREAS} | grep -qs "non-free"
+ then
+ # Manually add firmware-linux/non-free meta package
+ if [ "${LB_DERIVATIVE}" != "true" ]
+ then
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux"
+ else
+ case "${LB_DERIVATIVE_IS_BASED_ON}" in
+ debian)
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux"
+ ;;
+ *)
+ ;;
+ esac
+ fi
+ fi
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ # FIXME: account for the fact that PARENT_DISTRIBUTION and DISTRIBUTION might be the same (to not have overlapping cache files for contents).
+
+ _CONTENTS="$(for _ARCHIVE_AREA in ${LB_ARCHIVE_AREAS}; do echo ${LB_MIRROR_CHROOT}/dists/${LB_DISTRIBUTION}/${_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)"
+
+ rm -f cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+ for _CONTENT in ${_CONTENTS}
+ do
+ wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES}
+
+ FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)"
+ done
+ fi
+
+ # Drop section and keep package names only
+ for _PACKAGE in ${FIRMWARE_PACKAGES}
+ do
+ DI_FIRMWARE_PACKAGES="${DI_FIRMWARE_PACKAGES} $(echo ${_PACKAGE} | awk -F/ '{ print $NF }')"
+ done
+ fi
+
+ # Set apt command prefix
+ _LB_APT_COMMAND="apt-get ${APT_OPTIONS} -o Dir::Cache=/binary.deb -o APT::Install-Recommends=false --download-only"
+
+ if [ "${LB_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 as
+ # d-i does not support (for example) re-installing grub from target/ - the grub
+ # .debs must actually exist.
+
+ # Download .debs of the required packages
+ Chroot chroot ${_LB_APT_COMMAND} install ${DI_PACKAGES} ${DI_FIRMWARE_PACKAGES} ${DI_REQ_PACKAGES}
+
+ # Drop the packages already installed that d-i doesn't explicitely need
+ _REMAINING_PACKAGES="$(echo ${DI_FIRMWARE_PACKAGES} ${DI_REQ_PACKAGES} | sed -e 's# #|#g')"
+ _REMAINING_PACKAGES="$(sed -n -e 's|Package: ||p' chroot/var/lib/dpkg/status.tmp | grep -E -v "^(${_REMAINING_PACKAGES})\$")"
+
+ for _PACKAGE in ${_REMAINING_PACKAGES}
+ do
+ rm -f chroot/binary.deb/archives/${_PACKAGE}_*.deb
+ done
+ else
+ # Download .debs of the required packages
+ Chroot chroot ${_LB_APT_COMMAND} install ${DI_PACKAGES} ${DI_FIRMWARE_PACKAGES}
+ fi
+
+ # Revert dpkg status file
+ mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status
+
+ mv chroot/binary.deb ./
+
+ for _ARCHIVE_AREA in $(echo ${LB_PARENT_ARCHIVE_AREAS} ${LB_ARCHIVE_AREAS})
+ do
+ mkdir -p binary/pool/${_ARCHIVE_AREA}
+ done
+
+ if Find_files binary.deb/archives/*.deb
+ then
+ for FILE in binary.deb/archives/*.deb
+ do
+ Install_file "${FILE}" "binary/pool"
+ done
+ fi
+
+ if [ "${LB_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"
+ done
+ else
+ Echo_error "Could not find packages in cache/packages.bootstrap."
+ Echo_error "You selected values of LB_CACHE, LB_CACHE_PACKAGES, LB_CACHE_STAGES and LB_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/packages.binary/*_"${LB_ARCHITECTURES}".deb || Find_files config/packages/*_"${LB_ARCHITECTURES}".deb
+ then
+ for FILE in config/packages.binary/*_"${LB_ARCHITECTURES}".deb config/packages/*_"${LB_ARCHITECTURES}".deb
+ do
+ if [ -e "${FILE}" ]
+ then
+ Install_file "${FILE}" "binary/pool"
+ fi
+ done
+ fi
+
+ if Find_files config/packages.binary/*_all.deb || Find_files config/packages/*_all.deb
+ then
+ for FILE in config/packages.binary/*_all.deb config/packages/*_all.deb
+ do
+ if [ -e "${FILE}" ]
+ then
+ Install_file "${FILE}" "binary/pool"
+ fi
+ done
+ fi
+
+ # Generating deb indices
+ for _ARCHIVE_AREA in $(cd binary/pool && ls)
+ do
+ mkdir -p binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}
+
+ mv binary chroot/root
+ echo "cd /root/binary && apt-ftparchive packages pool/${_ARCHIVE_AREA} > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Packages" > chroot/binary.sh
+ Chroot chroot "sh binary.sh"
+ rm -f chroot/binary.sh
+ mv chroot/root/binary ./
+
+ gzip -9 -c binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Packages > binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Packages.gz
+
+ # Fetching release
+ Download_file binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Release "${LB_PARENT_MIRROR_CHROOT}"/dists/"${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}"/${_ARCHIVE_AREA}/binary-"${LB_ARCHITECTURES}"/Release
+ done
+
+ # Symlink firmware packages to /firmware
+ if [ -n "${DI_FIRMWARE_PACKAGES}" ]
+ then
+ mkdir -p binary/firmware
+ cd binary/firmware
+
+ for _PACKAGE in ${DI_FIRMWARE_PACKAGES}
+ do
+ for _FILE in $(find ../pool -name "${_PACKAGE}_*.deb")
+ do
+ ln -sf ${_FILE} ./
+ done
+ done
+
+ cd "${OLDPWD}"
+ fi
+
+ # Udeb handling
+ mkdir binary.udeb
+ cd binary.udeb
+
+ # Downloading udeb indices
+ Download_file Packages.gz "${LB_PARENT_MIRROR_CHROOT}"/dists/"${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LB_ARCHITECTURES}"/Packages.gz
+ gunzip -c Packages.gz > Packages
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ Download_file Packages.derivative.gz "${LB_MIRROR_CHROOT}"/dists/"${LB_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LB_ARCHITECTURES}"/Packages.gz
+ gunzip -c Packages.derivative.gz > Packages.derivative
+ fi
+
+ # Sorting udebs
+ if [ "${LB_DERIVATIVE}" = true ]
+ then
+ UDEBS="$(awk '/Filename: / { print $2 }' Packages.derivative)"
+ fi
+
+ UDEBS="${UDEBS} $(awk '/Filename: / { print $2 }' Packages)"
+
+ # Downloading udebs packages
+ Echo_message "Downloading udebs..."
+
+ if [ "${LB_DERIVATIVE}" = "true" ]
+ then
+ Echo_message "Building in derivative mode in debian+ layout.. a lot of 404 errors are ok here."
+ fi
+
+ for UDEB in ${UDEBS}
+ do
+ if [ -f ../cache/packages.installer_debian-installer.udeb/"$(basename ${UDEB})" ]
+ then
+ # Copying cached udebs
+ cp ../cache/packages.installer_debian-installer.udeb/"$(basename ${UDEB})" ./
+ else
+ # Downloading udebs
+ if ! ls "$(basename ${UDEB} | awk -F_ '{ print $1 }')"_* > /dev/null 2>&1
+ then
+ wget ${WGET_OPTIONS} "${LB_MIRROR_CHROOT}"/${UDEB} || wget ${WGET_OPTIONS} "${LB_PARENT_MIRROR_CHROOT}"/${UDEB}
+ fi
+ fi
+ done
+
+ # Caching udebs
+ rm -rf ../cache/packages.installer_debian-installer.udeb
+ mkdir -p ../cache/packages.installer_debian-installer.udeb
+ cp *.udeb ../cache/packages.installer_debian-installer.udeb
+
+ # Including local udebs
+ if Find_files ../config/packages.binary/*_"${LB_ARCHITECTURES}".udeb || Find_files ../config/packages/*_"${LB_ARCHITECTURES}".udeb
+ then
+ for FILE in ../config/packages.binary/*_"${LB_ARCHITECTURES}".udeb ../config/packages/*_"${LB_ARCHITECTURES}".udeb
+ do
+ if [ -e "${FILE}" ]
+ then
+ Install_file "${FILE}" "pool"
+
+ # Prefer local udebs over downloaded udebs
+ rm -f "$(basename ${FILE} | awk -F_ '{ print $1 }')"_*.udeb
+ fi
+ done
+ fi
+
+ if Find_files ../config/packages.binary/*_all.udeb || Find_files ../config/packages/*_all.udeb
+ then
+ for FILE in ../config/packages.binary/*_all.udeb ../config/packages/*_all.udeb
+ do
+ if [ -e "${FILE}" ]
+ then
+ Install_file "${FILE}" "pool"
+
+ # Prefer local udebs over downloaded udebs
+ rm -f "$(basename ${FILE} | awk -F_ '{ print $1 }')"_*.udeb
+ fi
+ done
+ fi
+
+ # Excluding udebs
+ for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd
+ do
+ if [ -e "${LOCATION}" ]
+ then
+ grep -v "^#" "${LOCATION}/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/udeb_exclude" > exclude || true
+ grep -v "^#" "${LOCATION}/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/exclude-udebs" >> exclude || true
+ grep -v "^#" "${LOCATION}/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/exclude-udebs-${LB_ARCHITECTURES}" >> exclude || true
+
+ continue
+ fi
+ done
+
+ # Local exclude file
+ if [ -e ../config/debian-installer/udeb_exclude ]
+ then
+ cat ../config/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 [ "${LB_DEBIAN_INSTALLER}" = "live" ] && [ "${EXCLUDE}" = "live-installer" ]
+ then
+ continue
+ fi
+
+ rm -f ${EXCLUDE}_*.udeb
+ done < exclude
+
+ # 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/"${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LB_ARCHITECTURES}"
+ cd "${OLDPWD}"
+
+ mv binary.udeb chroot/root
+ echo "cd /root/binary.udeb && apt-ftparchive packages pool/main > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LB_ARCHITECTURES}/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/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LB_ARCHITECTURES}/Packages > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LB_ARCHITECTURES}/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
+
+ if [ -e chroot/etc/os-release ]
+ then
+ _VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})"
+ fi
+
+ if [ -n "${_VERSION}" ]; then
+ _LB_APT_VERSION_OPT='-o APT::FTPArchive::Release::Version="'"${_VERSION}"'"'
+ fi
+
+ case "${LB_PARENT_DISTRIBUTION}" in
+ sid)
+ _SUITE="unstable"
+ ;;
+
+ *)
+ _SUITE="${LB_PARENT_DISTRIBUTION}"
+ ;;
+ esac
+
+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="${_SUITE}" \
+ ${_LB_APT_VERSION_OPT} \
+ -o APT::FTPArchive::Release::Codename="${LB_PARENT_DISTRIBUTION}" \
+ -o APT::FTPArchive::Release::Date="$(date -R)" \
+ -o APT::FTPArchive::Release::Architectures="${LB_ARCHITECTURES}" \
+ -o APT::FTPArchive::Release::Components="${LB_PARENT_ARCHIVE_AREAS}" \
+ -o APT::FTPArchive::Release::Description="Last updated: $(date -R)" \
+ release dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION} > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/Release
+EOF
+
+ Chroot chroot "sh binary.sh"
+ rm -f chroot/binary.sh
+ mv chroot/root/binary ./
+
+ case "${LB_PARENT_DISTRIBUTION}" in
+ jessie)
+ DISTRIBUTIONS="stable"
+ ;;
+
+ *)
+ DISTRIBUTIONS="stable testing unstable"
+ ;;
+ esac
+
+ if [ "${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}" != "${LB_PARENT_DISTRIBUTION}" ]
+ then
+ DISTRIBUTIONS="${DISTRIBUTIONS} ${LB_PARENT_DISTRIBUTION}"
+ fi
+
+ case "${LIVE_IMAGE_TYPE}" in
+ hdd)
+ case "${LB_BINARY_FILESYSTEM}" in
+ fat*|ntfs)
+ # Creating dist directories
+ for DISTRIBUTION in ${DISTRIBUTIONS}
+ do
+ cp -a binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION} binary/dists/${DISTRIBUTION}
+ done
+ ;;
+ esac
+ ;;
+
+ *)
+ # Creating dist symlinks
+ for DISTRIBUTION in ${DISTRIBUTIONS}
+ do
+ ln -s ${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION} binary/dists/${DISTRIBUTION}
+ done
+
+ ln -s . binary/debian
+ ;;
+ esac
+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
+ for _FILE in ../config/preseed/*.cfg ../config/preseed/*.cfg.installer
+ do
+ if [ -e "${_FILE}" ]
+ then
+ cp "${_FILE}" .
+ fi
+ done
+ 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" ] && ( ls config/preseed/*.cfg > /dev/null 2>&1 || ls config/preseed/*.cfg.installer > /dev/null 2>&1 )
+then
+ Repack_initrd "${DESTDIR}"/"${INITRD_DI}"
+
+ if [ -e "${DESTDIR}"/"${INITRD_GI}" ]
+ then
+ Repack_initrd "${DESTDIR}"/"${INITRD_GI}"
+ fi
+fi
+
+# Include content of config/includes.installer if exists and not empty
+if [ -d config/includes.installer ] && [ -n "$(ls -A config/includes.installer)" ]
+then
+ Repack_initrd "${DESTDIR}"/"${INITRD_DI}" config/includes.installer
+
+ if [ -e "${DESTDIR}"/"${INITRD_GI}" ]
+ then
+ Repack_initrd "${DESTDIR}"/"${INITRD_GI}" config/includes.installer
+ fi
+fi
+
+case "${LB_MODE}" in
+ progress-linux)
+ mv binary/install binary/installer
+
+ rm -f binary/debian
+
+ for _DIRECTORY in dists pool project firmware
+ do
+ if [ -e "binary/${_DIRECTORY}" ]
+ then
+ mv binary/"${_DIRECTORY}" binary/installer
+ fi
+ done
+ ;;
+esac
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/installer_debian-installer
diff --git a/system-build/scripts/build/installer_preseed b/system-build/scripts/build/installer_preseed
new file mode 100755
index 0000000..f17102a
--- /dev/null
+++ b/system-build/scripts/build/installer_preseed
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'include local preseed in installer')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+
+# Check d-i configuration
+case "${LB_DEBIAN_INSTALLER}" in
+ false)
+ exit 0
+ ;;
+esac
+
+Echo_message "Begin including local preseeds..."
+
+# Checking stage file
+Check_stagefile .build/installer_preseed
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+if ls config/preseed/*.cfg > /dev/null 2>&1 || \
+ ls config/preseed/*.cfg.installer > /dev/null 2>&1 || \
+ ls chroot/root/packages.installer > /dev/null 2>&1
+then
+ case "${LB_MODE}" in
+ progress-linux)
+ _DIRECTORY="binary/installer"
+ ;;
+
+ *)
+ _DIRECTORY="binary/install"
+ ;;
+ esac
+
+ rm -f "${_DIRECTORY}/preseed.cfg"
+
+ for _FILE in config/preseed/*.cfg config/preseed/*.cfg.installer chroot/root/packages.installer
+ do
+ if [ -e "${_FILE}" ]
+ then
+ cat "${_FILE}" >> "${_DIRECTORY}/preseed.cfg"
+ fi
+ done
+
+ # Creating stage file
+ Create_stagefile .build/installer_preseed
+fi
diff --git a/system-build/scripts/build/source b/system-build/scripts/build/source
new file mode 100755
index 0000000..4d4f9bd
--- /dev/null
+++ b/system-build/scripts/build/source
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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
+
+# Automatically populating config tree
+if [ -x auto/config ] && [ ! -e .build/config ]
+then
+ Echo_message "Automatically populating config tree."
+ lb config
+fi
+
+# Setting static variables
+DESCRIPTION="$(Echo 'build source images')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+#Require_stagefile
+
+# Setup cleanup function
+Setup_cleanup
+
+# Enabling network in chroot
+lb chroot_hosts install ${@}
+lb chroot_resolv install ${@}
+lb chroot_hostname install ${@}
+lb chroot_archives source install ${@}
+
+# Preparing images
+lb source_live ${@}
+lb source_debian ${@}
+lb source_disk ${@}
+lb source_hooks ${@}
+lb source_checksums ${@}
+
+# Building images
+lb source_iso ${@}
+lb source_tar ${@}
+lb source_hdd ${@}
+
+# Deconfiguring chroot
+lb chroot_archives chroot remove ${@}
+lb chroot_hostname remove ${@}
+lb chroot_resolv remove ${@}
+lb chroot_hosts remove ${@}
diff --git a/system-build/scripts/build/source_checksums b/system-build/scripts/build/source_checksums
new file mode 100755
index 0000000..8b3172f
--- /dev/null
+++ b/system-build/scripts/build/source_checksums
@@ -0,0 +1,101 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'create source checksums')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_CHECKSUMS}" = "none" ] || [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+# Requiring stage file
+Require_stagefile .build/config .build/source_debian
+
+# Checking stage file
+Check_stagefile .build/source_checksums
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+for DIRECTORY in source/debian source/live
+do
+ if [ ! -d ${DIRECTORY} ]
+ then
+ continue
+ fi
+
+ for CHECKSUM in ${LB_CHECKSUMS}
+ do
+ case "${LB_MODE}" in
+ progress-linux)
+ CHECKSUMS="$(echo ${CHECKSUM} | tr [a-z] [A-Z])SUMS"
+ ;;
+
+ *)
+ CHECKSUMS="${CHECKSUM}sum.txt"
+ ;;
+ esac
+
+ Echo_message "Begin creating source ${CHECKSUMS}..."
+
+ # Remove old checksums
+ if [ -f ${DIRECTORY}/${CHECKSUMS} ]
+ then
+ rm -f ${DIRECTORY}/${CHECKSUMS}
+ fi
+
+ # Calculating checksums
+ cd ${DIRECTORY}
+ find . -type f \
+ \! -path './*SUMS' \
+ \! -path './*sum.txt' \
+ -print0 | sort -z | xargs -0 ${CHECKSUM}sum > ../${CHECKSUMS}
+
+cat > ${CHECKSUMS} << EOF
+## This file contains the list of ${CHECKSUM} checksums of all files on this
+## medium.
+##
+## You can verify them automatically with the 'verify-checksums' boot parameter,
+## or, manually with: '${CHECKSUM}sum -c ${CHECKSUMS}'.
+##
+##
+EOF
+
+ cat ../${CHECKSUMS} >> ${CHECKSUMS}
+ rm -f ../${CHECKSUMS}
+
+ cd "${OLDPWD}"
+ done
+
+ # File list
+ cd ${DIRECTORY}
+ find . | sed -e 's|^.||g' | grep "^/" | sort > ../../${LIVE_IMAGE_NAME}-source.$(basename ${DIRECTORY}).contents
+ cd "${OLDPWD}"
+done
+
+# Creating stage file
+Create_stagefile .build/source_checksums
diff --git a/system-build/scripts/build/source_debian b/system-build/scripts/build/source_debian
new file mode 100755
index 0000000..49e53db
--- /dev/null
+++ b/system-build/scripts/build/source_debian
@@ -0,0 +1,207 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'debian sources')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin downloading sources..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/source_debian
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Remove old sources
+if [ -d source/debian ]
+then
+ rm -rf source/debian
+fi
+
+# Download sources
+Chroot chroot "dpkg --get-selections" | awk '{ print $1 }' > source-selection.txt
+
+echo "${LB_BOOTLOADERS}" | \
+while IFS="," read -r BOOTLOADER
+do
+ cat >> source-selection.txt << EOF
+ ${BOOTLOADER}
+EOF
+done
+
+cat >> source-selection.txt << EOF
+live-build
+EOF
+
+case "${LB_BINARY_IMAGES}" in
+ iso*)
+ echo "xorriso" >> source-selection.txt
+ ;;
+
+ hdd*)
+ echo "parted" >> source-selection.txt
+ ;;
+esac
+
+case "${LB_CHROOT_FILESYSTEM}" in
+ squashfs)
+ echo "squashfs-tools" >> source-selection.txt
+ ;;
+esac
+
+case "${LB_BINARY_FILESYSTEM}" in
+ fat*)
+ echo "dosfstools" >> source-selection.txt
+ ;;
+
+ ntfs)
+ echo "ntfs-3g" >> source-selection.txt
+ ;;
+esac
+
+case "${LB_ARCHITECTURES}" in
+ amd64|i386)
+
+cat >> source-selection.txt << EOF
+mtools
+syslinux
+grub
+EOF
+
+ if [ "${LB_MEMTEST}" != "false" ] && [ "${LB_MEMTEST}" != "none" ]
+ then
+ echo "${LB_MEMTEST}" >> source-selection.txt
+ fi
+ ;;
+esac
+
+if [ -n "${LB_TASKS}" ]
+then
+ echo "${LB_TASKSEL}" >> source-selection.txt
+fi
+
+# apt-get source does not respect pinning
+# building images with backports included but not enabled
+# will result in apt-get source download stuff from backports
+# where available. workaround: disable backports
+case "${LB_MODE}" in
+ progress-linux)
+ case "${LB_DISTRIBUTION}" in
+ *-backports)
+
+ ;;
+
+ *)
+ if grep -qs "${LB_DISTRIBUTION}-backports" chroot/etc/apt/sources.list.d/progress-linux.list
+ then
+ cp chroot/etc/apt/sources.list.d/progress-linux.list chroot/etc/apt/sources.list.d/progress-linux.list.orig
+
+ while read _LINE
+ do
+ if echo "${_LINE}" | grep -qs ${LB_DISTRIBUTION}-backports
+ then
+ sed -i -e "s|${_LINE}|#${_LINE}|" chroot/etc/apt/sources.list.d/progress-linux.list
+ fi
+ done < chroot/etc/apt/sources.list.d/progress-linux.list.orig
+
+ Apt chroot update
+ fi
+ ;;
+ esac
+ ;;
+esac
+
+MISSING=""
+
+grep . source-selection.txt | \
+while read PACKAGE
+do
+ if ! Chroot chroot "apt-get ${APT_OPTIONS} --download-only source ${PACKAGE}"
+ then
+ MISSING="${MISSING} ${PACKAGE}"
+ fi
+done
+
+if [ -n "${MISSING}" ]
+then
+ cat > source/missing-source.txt << EOF
+This file contains the list of binary packages that are installed on this live
+system that do not have a corresponding source package.
+
+EOF
+
+ for PACKAGE in ${MISSING}
+ do
+ Chroot chroot "dpkg -l ${PACKAGE}" | tail -n1 >> source/missing-source.txt
+ done
+fi
+
+rm -f source-selection.txt
+
+# Sort sources
+for DSC in chroot/*.dsc
+do
+ SOURCE="$(sed -n 's|^Source: ||p' ${DSC} 2>/dev/null || :)"
+ # The sed may fail if multiple dsc files exist for same source, as the
+ # first one to match will have already been moved.
+ [ -n "$SOURCE" ] || continue
+
+ case "${SOURCE}" in
+ lib?*)
+ LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')"
+ ;;
+
+ *)
+ LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')"
+ ;;
+ esac
+
+ # Install directory
+ mkdir -p source/debian/"${LETTER}"/"${SOURCE}"
+
+ # Move files
+ mv chroot/"${SOURCE}"_* source/debian/"${LETTER}"/"${SOURCE}"
+done
+
+# Reverting apt sources again
+if [ -e chroot/etc/apt/sources.list.d/progress-linux.list.orig ]
+then
+ mv chroot/etc/apt/sources.list.d/progress-linux.list.orig chroot/etc/apt/sources.list.d/progress-linux.list
+
+ Apt chroot update
+fi
+
+# Creating stage file
+Create_stagefile .build/source_debian
+Create_stagefile .build/source
diff --git a/system-build/scripts/build/source_debian-live b/system-build/scripts/build/source_debian-live
new file mode 100755
index 0000000..3af41e5
--- /dev/null
+++ b/system-build/scripts/build/source_debian-live
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'copy debian-live config into source')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin copying live-build configuration..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/source_debian-live
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Remove old sources
+if [ -d source/debian-live ]
+then
+ rm -rf source/debian-live
+fi
+
+# Copy system configuration
+mkdir -p source/debian-live
+cp -a config source/debian-live
+
+if Find_files auto/*
+then
+ cp -a auto source/debian-live
+fi
+
+# Creating stage file
+Create_stagefile .build/source_debian-live
diff --git a/system-build/scripts/build/source_disk b/system-build/scripts/build/source_disk
new file mode 100755
index 0000000..9cac2b3
--- /dev/null
+++ b/system-build/scripts/build/source_disk
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 disk information into source')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+case "${LB_SOURCE_IMAGES}" in
+ iso*|hdd*)
+ ;;
+
+ *)
+ exit 0
+ ;;
+esac
+
+Echo_message "Begin installing disk information..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/source_disk
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+mkdir -p source/.disk
+
+DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | cut -b 1 | tr '[a-z]' '[A-Z]')"
+DISTRIBUTION="${DISTRIBUTION}$(echo ${LB_DISTRIBUTION} | cut -b 2-)"
+
+if [ -e chroot/etc/os-release ]
+then
+ VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})"
+fi
+
+VERSION="${VERSION:-none}"
+
+case "${LB_MODE}" in
+ debian)
+ TITLE="Debian GNU/Linux"
+ STRING="Official Snapshot ${ARCHITECTURE}"
+ TRACE="project/trace/ftp-master.debian.org"
+ ;;
+
+ progress-linux)
+ TITLE="Progress Linux"
+ STRING="${VERSION} (${DISTRIBUTION}) - ${ARCHITECTURE}"
+ TRACE="project/trace/archive-master.progress-linux.org"
+ ;;
+
+ *)
+ TITLE="Debian GNU/Linux"
+ STRING="Snapshot ${ARCHITECTURE}"
+ TRACE=""
+ ;;
+esac
+
+if [ -n "${TRACE}" ]
+then
+ case "${LB_DERIVATIVE}" in
+ true)
+ echo "$(echo ${LB_PARENT_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \
+ > source/.disk/archive_trace
+
+ echo "$(echo ${LB_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \
+ >> source/.disk/archive_trace
+ ;;
+
+ false)
+ echo "$(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \
+ > source/.disk/archive_trace
+ ;;
+ esac
+fi
+
+case "${LB_DEBIAN_INSTALLER}" in
+ cdrom)
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/CD Source $(date +%Y%m%d-%H:%M)" > source/.disk/info
+ ;;
+
+ true|netinst)
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/NETINST Source $(date +%Y%m%d-%H:%M)" > source/.disk/info
+ ;;
+
+ live)
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/INSTALL Source $(date +%Y%m%d-%H:%M)" > source/.disk/info
+ ;;
+
+ businesscard)
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/BC Source $(date +%Y%m%d-%H:%M)" > source/.disk/info
+ ;;
+
+ false)
+ echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE Source $(date +%Y%m%d-%H:%M)" > source/.disk/info
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/source_disk
diff --git a/system-build/scripts/build/source_hdd b/system-build/scripts/build/source_hdd
new file mode 100755
index 0000000..e9947ab
--- /dev/null
+++ b/system-build/scripts/build/source_hdd
@@ -0,0 +1,155 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build source image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+if ! In_list hdd "${LB_SOURCE_IMAGES}"
+then
+ exit 0
+fi
+
+Echo_message "Begin building source hdd image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/source_debian
+
+# Checking stage file
+Check_stagefile .build/source_hdd
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package chroot /sbin/mkdosfs dosfstools
+Check_package chroot /sbin/parted parted
+
+# Installing depends
+Install_package
+
+# Remove old source
+if [ -f ${LIVE_IMAGE_NAME}-source.img ]
+then
+ rm -f ${LIVE_IMAGE_NAME}-source.img
+fi
+
+# Everything which comes here needs to be cleaned up,
+DU_DIM="$(du -ms source | cut -f1)"
+REAL_DIM="$(Calculate_partition_size ${DU_DIM} ${LB_BINARY_FILESYSTEM})"
+dd if=/dev/zero of=${LIVE_IMAGE_NAME}-source.img bs=1024k count=0 seek=${REAL_DIM}
+FREELO="$(${LB_LOSETUP} -f)"
+if [ ! -b chroot/${FREELO} ]
+then
+ MAKEDEV="true"
+
+ mv chroot/dev chroot/dev.tmp
+ find /dev | cpio -dmpu chroot
+fi
+
+case "${LB_BINARY_FILESYSTEM}" in
+ ext2|ext3|ext4)
+ PARTITION_TYPE="ext2"
+ ;;
+
+ fat16|fat32)
+ PARTITION_TYPE="${LB_BINARY_FILESYSTEM}"
+ ;;
+
+ ntfs)
+ PARTITION_TYPE="NTFS"
+ ;;
+
+ *)
+ Echo_error "Unsupported binary filesystem %s" "${LB_BINARY_FILESYSTEM}"
+ exit 1
+ ;;
+esac
+
+Echo_warning "!!! The following error/warning messages can be ignored !!!"
+Losetup $FREELO ${LIVE_IMAGE_NAME}-source.img 0
+Chroot chroot "parted -s ${FREELO} mklabel msdos" || true
+Chroot chroot "parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE} 0.0 100%" || true
+Lodetach ${FREELO}
+
+Losetup $FREELO ${LIVE_IMAGE_NAME}-source.img 1
+
+case "${LB_BINARY_FILESYSTEM}" in
+ ext2|ext3|ext4)
+ MKFS="${LB_BINARY_FILESYSTEM}"
+ MKFS_OPTIONS="-L ${LB_HDD_LABEL} -m 0 -O ^64bit"
+ MOUNT_OPTIONS=""
+ ;;
+
+ fat16)
+ MKFS="vfat"
+ MKFS_OPTIONS="-F 16 -n ${LB_HDD_LABEL}"
+ MOUNT_OPTIONS=""
+ ;;
+
+ fat32)
+ MKFS="vfat"
+ MKFS_OPTIONS="-F 32 -n ${LB_HDD_LABEL}"
+ MOUNT_OPTIONS=""
+ ;;
+
+ ntfs)
+ MKFS="ntfs"
+ MKFS_OPTIONS="-L ${LB_HDD_LABEL}"
+ MOUNT_OPTIONS="-t ntfs-3g"
+ ;;
+esac
+
+Chroot chroot "mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}"
+
+mkdir -p source.tmp
+mount ${MOUNT_OPTIONS} ${FREELO} source.tmp
+cp -r source/* source.tmp
+umount source.tmp
+rmdir source.tmp
+Lodetach ${FREELO}
+Echo_warning "!!! The above error/warning messages can be ignored !!!"
+
+FREELO="$(${LB_LOSETUP} -f)"
+Losetup "$FREELO" ${LIVE_IMAGE_NAME}-source.img 0
+Chroot chroot "parted -s ${FREELO} set 1 lba off" || true
+Lodetach ${FREELO}
+
+if [ -n "${MAKEDEV}" ]
+then
+ rm -rf chroot/dev
+ mv chroot/dev.tmp chroot/dev
+fi
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/source_hdd
diff --git a/system-build/scripts/build/source_hooks b/system-build/scripts/build/source_hooks
new file mode 100755
index 0000000..4a7b1a4
--- /dev/null
+++ b/system-build/scripts/build/source_hooks
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'execute hooks in source')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/source config/source
+Set_defaults
+
+Echo_message "Begin executing hooks..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/source_hooks
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+## Processing distribution hooks
+
+# Running hooks
+for _HOOK in ${LB_BINARY_HOOKS}
+do
+ for LOCATION in "${LIVE_BUILD}/hooks" /usr/share/live/build/hooks
+ do
+ for FILE in "${LOCATION}"/????-"${_HOOK}".source
+ do
+ if [ -e "${FILE}" ]
+ then
+ cd source
+ "${FILE}" || { Echo_error "${_HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
+ cd "${OLDPWD}"
+ fi
+ done
+ done
+done
+
+## Processing local hooks
+for HOOK in config/hooks/normal/*.source config/hooks/live/*.source
+do
+ if [ ! -e "${HOOK}" ]
+ then
+ continue
+ fi
+
+ # Making hook executable
+ if [ ! -x "${HOOK}" ]
+ then
+ chmod +x "${HOOK}"
+ fi
+
+ # Executing hook
+ cd source
+ ../"${HOOK}" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;}
+ cd "${OLDPWD}"
+done
+
+# Creating stage file
+Create_stagefile .build/source_hooks
diff --git a/system-build/scripts/build/source_iso b/system-build/scripts/build/source_iso
new file mode 100755
index 0000000..b0b3036
--- /dev/null
+++ b/system-build/scripts/build/source_iso
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build iso source image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+case "${LB_SOURCE_IMAGES}" in
+ iso*)
+ ;;
+
+ *)
+ exit 0
+ ;;
+esac
+
+Echo_message "Begin building source iso image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/source_debian
+
+# Checking stage file
+Check_stagefile .build/source_iso
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package chroot /usr/bin/xorriso xorriso
+
+# Installing depends
+Install_package
+
+# Remove old iso image
+if [ -f ${LIVE_IMAGE_NAME}-source.iso ]
+then
+ rm -f ${LIVE_IMAGE_NAME}-source.iso
+fi
+
+# Handle xorriso generic options
+XORRISO_OPTIONS="-as mkisofs -r -J -joliet-long -l -cache-inodes"
+
+# Handle xorriso live-build specific options
+if [ "${_QUIET}" = "true" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -quiet"
+fi
+
+if [ "${_VERBOSE}" = "true" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -v"
+fi
+
+if [ -n "${LB_ISO_APPLICATION}" ] && [ "${LB_ISO_APPLICATION}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -A \"${LB_ISO_APPLICATION}\""
+fi
+
+if [ -n "${LB_ISO_PREPARER}" ] && [ "${LB_ISO_PREPARER}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -p \"${LB_ISO_PREPARER}\""
+fi
+
+if [ -n "${LB_ISO_PUBLISHER}" ] && [ "${LB_ISO_PUBLISHER}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -publisher \"${LB_ISO_PUBLISHER}\""
+fi
+
+if [ -n "${LB_ISO_VOLUME}" ] && [ "${LB_ISO_VOLUME}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -V \"${LB_ISO_VOLUME}\""
+fi
+
+# Set an explicit modification date
+XORRISO_OPTIONS="${XORRISO_OPTIONS} --modification-date=$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d%H%m%S00)"
+
+# Moving image
+mv source chroot
+
+cat >> chroot/source.sh << EOF
+xorriso ${XORRISO_OPTIONS} -o source.iso source
+EOF
+
+Chroot chroot "sh source.sh"
+
+# Move image
+mv chroot/source ./
+mv chroot/source.iso ${LIVE_IMAGE_NAME}-source.iso
+rm -f chroot/source.sh
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/source_iso
diff --git a/system-build/scripts/build/source_live b/system-build/scripts/build/source_live
new file mode 100755
index 0000000..67e71c9
--- /dev/null
+++ b/system-build/scripts/build/source_live
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'copy live config into source')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+Echo_message "Begin copying live-build configuration..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/source_live
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Remove old sources
+if [ -d source/live ]
+then
+ rm -rf source/live
+fi
+
+# Copy system configuration
+mkdir -p source/live
+cp -a config source/live
+
+if Find_files auto/*
+then
+ cp -a auto source/live
+fi
+
+# Creating stage file
+Create_stagefile .build/source_live
diff --git a/system-build/scripts/build/source_tar b/system-build/scripts/build/source_tar
new file mode 100755
index 0000000..d4b3555
--- /dev/null
+++ b/system-build/scripts/build/source_tar
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## 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 'build source tarball')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+if [ "${LB_SOURCE}" != "true" ]
+then
+ exit 0
+fi
+
+if ! In_list tar "${LB_SOURCE_IMAGES}"
+then
+ exit 0
+fi
+
+Echo_message "Begin building source tarball..."
+Echo_message "This may take a while."
+
+# Requiring stage file
+Require_stagefile .build/config .build/source_debian
+
+# Checking stage file
+Check_stagefile .build/source_tar
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Remove old source
+rm -f ${LIVE_IMAGE_NAME}-source.orig.tar.bz2 ${LIVE_IMAGE_NAME}-source.orig.tar.gz ${LIVE_IMAGE_NAME}-source.orig.tar.lz ${LIVE_IMAGE_NAME}-source.orig.tar
+rm -f ${LIVE_IMAGE_NAME}-source.config.tar.bz2 ${LIVE_IMAGE_NAME}-source.config.tar.gz ${LIVE_IMAGE_NAME}-source.config.tar.lz ${LIVE_IMAGE_NAME}-source.config.tar
+
+tar cf ${LIVE_IMAGE_NAME}-source.orig.tar source/debian
+tar cf ${LIVE_IMAGE_NAME}-source.config.tar source/live
+
+case "${LB_COMPRESSION}" in
+ bzip2)
+ bzip2 ${BZIP2_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar
+ bzip2 ${BZIP2_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar
+ ;;
+
+ gzip)
+ gzip ${GZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar
+ gzip ${GZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar
+ ;;
+
+ lzip)
+ lzip ${LZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar
+ lzip ${LZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar
+ ;;
+
+ xz)
+ xz ${XZ_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar
+ xz ${XZ_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar
+ ;;
+
+ none)
+ ;;
+esac
+
+# Creating stage file
+Create_stagefile .build/source_tar