diff options
Diffstat (limited to 'components')
-rwxr-xr-x | components/bootstrap_debootstrap | 130 | ||||
-rw-r--r-- | components/defaults.conf | 3 | ||||
-rwxr-xr-x | components/init | 75 |
3 files changed, 208 insertions, 0 deletions
diff --git a/components/bootstrap_debootstrap b/components/bootstrap_debootstrap new file mode 100755 index 000000000..adc0a76ae --- /dev/null +++ b/components/bootstrap_debootstrap @@ -0,0 +1,130 @@ +#!/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 + +# Checking meta-data directory +if [ ! -e .build ] +then + echo "fatal: Not a live-build configuration in ${PWD}/: .build" + exit 1 +fi + +# Checking meta-data file +if [ ! -e .build/bootstrap_debootstrap ] +then + echo "${0} already run, skipping." + exit 0 +fi + +# Checking host dependencies +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 'sudo apt install debootstrap'." + exit 1 +fi + +# Creating lock file +# FIXME + +# Reading archive configuration +for FILE in config/archives/debian.list.bootstrap config/archives/debian.list +do + if [ -e "${FILE}" ] + then + DEB="$(grep -m 1 '^deb ' ${FILE})" + + ARCHIVE_URI="$(echo ${DEB} | awk '{ print $2 }')" + ARCHIVE_SUITE="$(echo ${DEB} | awk '{ print $3 }')" + ARCHIVE_COMPONENTS="$(echo ${DEB} | awk -F${ARCHIVE_SUITE} '{ print $2 }' | sed -e 's|^ ||')" + + break + fi +done + +# Setting archive defaults +ARCHIVE_URI="${ARCHIVE_URI:-${DEFAULT_ARCHIVE_URI}}" +ARCHIVE_SUITE="${ARCHIVE_SUITE:-${DEFAULT_ARCHIVE_SUITE}}" +ARCHIVE_COMPONENTS="${ARCHIVE_COMPONENTS:-${DEFAULT_ARCHIVE_COMPONENTS}}" + +# Creating cache directory +mkdir -p "cache/${DISTRIBUTION}" + +# Creating chroot directory +mkdir -p chroot + +# Setting debootstrap options +DEBOOTSTRAP_OPTIONS="" + +if [ "${ARCHIVE_AREAS}" != "main" ] +then + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --components=$(echo ${ARCHIVE_AREAS} | sed -e 's| |,|g')" +fi + +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 diff --git a/components/defaults.conf b/components/defaults.conf new file mode 100644 index 000000000..d773c5e6e --- /dev/null +++ b/components/defaults.conf @@ -0,0 +1,3 @@ +DEFAULT_ARCHIVE_URI="http://ftp.debian.org/debian" +DEFAULT_ARCHIVE_SUITE="stretch" +DEFAULT_ARCHIVE_COMPONENTS="main" diff --git a/components/init b/components/init new file mode 100755 index 000000000..e2d36f634 --- /dev/null +++ b/components/init @@ -0,0 +1,75 @@ +#!/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 + +# Checking meta-data directory +if [ ! -e .build ] +then + echo "Initialized empty live-build configuration in ${PWD}/" + + if [ "$(ls -a ${PWD})" ] + then + echo "Warning: directory not empty" + fi +else + echo "Reinitialized existing live-build configuration in ${PWD}/" +fi + +# Reading defaults +. ./defaults.conf + +# Creating meta-data directory +mkdir -p .build + +# Creating archive configuration directory +mkdir -p config/archives + +# Creating default archive configuration +cat > config/archives/debian.list << EOF +deb ${DEFAULT_ARCHIVE_URI} ${DEFAULT_ARCHIVE_SUITE} ${DEFAULT_ARCHIVE_COMPONENTS} +EOF + +# Creating default architecture configuration +ARCHITECTURE="$(dpkg --print-architecture)" + +echo "${ARCHITECTURE}" > config/archives/architecture + +# Creating default foreign architecture configuration +case "${ARCHITECTURE}" in + amd64) + FOREIGN_ARCHITECTURES="i386" + ;; + + i386) + FOREIGN_ARCHITECTURES="amd64" + ;; +esac + +if [ -n "${FOREIGN_ARCHITECTURES}" ] +then + rm -f config/archives/foreign-architectures + + for FOREIGN_ARCHITECTURE in ${FOREIGN_ARCHITECTURES} + do + echo "${FOREIGN_ARCHITECTURE}" >> config/archives/foreign-architecture + done +fi |