@ -13,10 +13,10 @@
function common_variables() {
if [ $DISTRIBUTION_ARCH = "amd64" ]; then
KERNEL_ARCH="amd64"
PACKAGE_VARIANT="standard"
# PACKAGE_VARIANT="standard"
elif [ $DISTRIBUTION_ARCH = "i386" ]; then
KERNEL_ARCH="686-pae"
PACKAGE_VARIANT="minimal"
# PACKAGE_VARIANT="minimal"
elif [ $DISTRIBUTION_ARCH = "arm64" ]; then
KERNEL_ARCH="arm64"
fi
@ -66,58 +66,67 @@ function console_colours() {
# =================================================================
function help() {
# if $1 is set, use $1 as headline message in help()
if grep 'LANG="ru_RU.UTF-8"' /etc/default/locale >>$OUTPUT; then
if [ -z ${1+x} ]; then
echo -e "${LIGHTYELLOW}Этот скрипт собирает загружаемый ISO образ $SYSTEMNAME.${ENDCOLOUR}"
if [ -f /etc/default/locale ]; then
if grep -q 'LANG="ru_RU.UTF-8"' /etc/default/locale >>$OUTPUT; then
if [ -z ${1+x} ]; then
echo -e "${LIGHTYELLOW}Этот скрипт собирает модули для $SYSTEMNAME.${ENDCOLOUR}"
echo -e
else
echo -e $1
echo
fi
echo -e "Поддерживаемые команды : ${CYAN}${CMD[*]}${ENDCOLOUR}"
echo -e
echo -e "Синтаксис: ${MAGENTA}$0${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
if [ -L /usr/bin/$LIVEKITNAME-install ] && [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then
echo -e "\t${CYAN}$LIVEKITNAME-install${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
fi
echo -e "\tзапуск от start_cmd до end_cmd"
echo -e "\tесли start_cmd опущен, выполняются все команды, начиная с первой"
echo -e "\tесли end_cmd опущен, выполняются все команды до последней"
echo -e "\tвведите одну команду, чтобы запустить определенную команду"
echo -e "\tвведите '-' как единственный аргумент для запуска всех команд"
echo -e "\t"
echo -e "\tСкрипты установки должны находиться в папке с именем будущего модуля."
echo -e "\tНапример, чтобы собрать модуль с именем 06-vscode, скрипты сборки"
echo -e "\tдолжны находиться по следующему пути: ${LIGHTYELLOW}$CURRENT_DIR/modules/06-vscode${ENDCOLOUR}"
echo -e "\tПримеры:"
echo -e "\t${LIGHTYELLOW}$0 build_modules${ENDCOLOUR} сборка модулей"
echo -e "\t${LIGHTYELLOW}$0 repack_system${ENDCOLOUR} перепаковка системы с типом сжатия, указанным"
echo -e "\tв /etc/$LIVEKITNAME/config в переменной COMP_TYPE"
echo -e "\t${LIGHTYELLOW}$0 -${ENDCOLOUR} эта команда запустит обе функции поочерёдно"
exit 0
else
echo -e $1
echo
fi
echo -e "Поддерживаемые команды : ${CYAN}${CMD[*]}${ENDCOLOUR}"
echo -e
echo -e "Синтаксис: ${MAGENTA}$0${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
if [ -L /usr/bin/$LIVEKITNAME-install ] && [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then
echo -e "\t${CYAN}$LIVEKITNAME-install${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
fi
echo -e "\tзапуск от start_cmd до end_cmd"
echo -e "\tесли start_cmd опущен, выполняются все команды, начиная с первой"
echo -e "\tесли end_cmd опущен, выполняются все команды до последней"
echo -e "\tвведите одну команду, чтобы запустить определенную команду"
echo -e "\tвведите '-' как единственный аргумент для запуска всех команд"
echo -e "\t"
echo -e "\tПримеры:${LIGHTYELLOW}$0 build_bootstrap - build_chroot${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 - build_chroot${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 build_bootstrap -${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 build_iso${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 -${ENDCOLOUR}"
exit 0
else
if [ -z ${1+x} ]; then
echo -e "${LIGHTYELLOW}This script builds bootable $SYSTEMNAME ISO image.${ENDCOLOUR}"
if [ -z ${1+x} ]; then
echo -e "${LIGHTYELLOW}This script builds modules for $SYSTEMNAME.${ENDCOLOUR}"
echo -e
else
echo -e $1
echo
fi
echo -e "Supported commands : ${CYAN}${CMD[*]}${ENDCOLOUR}"
echo -e
else
echo -e $1
echo
fi
echo -e "Supported commands : ${CYAN}${CMD[*]}${ENDCOLOUR}"
echo -e
echo -e "Syntax: ${MAGENTA}$0${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
if [ -L /usr/bin/$LIVEKITNAME-install ] && [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then
echo -e "\t${CYAN}$LIVEKITNAME-install${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
echo -e "Syntax: ${MAGENTA}$0${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
if [ -L /usr/bin/$LIVEKITNAME-install ] && [ "$0" != "/usr/bin/$LIVEKITNAME-install" ]; then
echo -e "\t${CYAN}$LIVEKITNAME-install${ENDCOLOUR} [start_cmd] [-] [end_cmd]"
fi
echo -e "\trun from start_cmd to end_cmd"
echo -e "\tif start_cmd is omitted, start from first command"
echo -e "\tif end_cmd is omitted, end with last command"
echo -e "\tenter single cmd to run the specific command"
echo -e "\tenter '-' as only argument to run all commands"
echo -e "\t"
echo -e "\tThe installation scripts must be in the folder with the"
echo -e "\tname of the future module. For example, to build a module"
echo -e "\tnamed 06-vscode, build scripts should be in the following"
echo -e "\tpath: ${LIGHTYELLOW}$CURRENT_DIR/modules/06-vscode${ENDCOLOUR}"
echo -e "\tExamples:"
echo -e "\t${LIGHTYELLOW}$0 build_modules ${ENDCOLOUR} build modules"
echo -e "\t${LIGHTYELLOW}$0 repack_system ${ENDCOLOUR} repack the system with the"
echo -e "\tcompression type specified by /etc/$LIVEKITNAME/config in COMP_TYPE variable"
echo -e "\t${LIGHTYELLOW}$0 - ${ENDCOLOUR} this command will run both functions alternately"
exit 0
fi
echo -e "\trun from start_cmd to end_cmd"
echo -e "\tif start_cmd is omitted, start from first command"
echo -e "\tif end_cmd is omitted, end with last command"
echo -e "\tenter single cmd to run the specific command"
echo -e "\tenter '-' as only argument to run all commands"
echo -e "\t"
echo -e "\tExamples:${LIGHTYELLOW}$0 build_bootstrap - build_chroot${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 - build_chroot${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 build_bootstrap -${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 build_iso${ENDCOLOUR}"
echo -e "\t\t${LIGHTYELLOW}$0 -${ENDCOLOUR}"
exit 0
fi
}
@ -227,6 +236,134 @@ function check_is_in_chroot() {
fi
}
# Unzip gzipped files (man pages), so LZMA can compress 2times better.
# First we fix symlinks, then uncompress files
# $1 = search directory
uncompress_files() {
local LINK LINE
find "$1" -type l -name "*.gz" | while read LINE; do
LINK="$(readlink "$LINE" | sed -r 's/.gz$//')"
FILE="$(echo "$LINE" | sed -r 's/.gz$//')"
ln -sfn "$LINK" "$FILE"
rm -f "$LINE"
done
find "$1" -type f -name "*.gz" | xargs -r gunzip
}
# remove broken links
# $1 = search directory
remove_broken_links() {
find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf
}
function add_chroot_configuration_files() {
cat <<EOF >$1/$LIVEKITNAME.conf
OUTPUT=$OUTPUT
LOGPATH=$LOGPATH
BUILD_TEST_ISO=$BUILD_TEST_ISO
CREATE_BACKUP=$CREATE_BACKUP
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE
APT_CMD=$APT_CMD
APT_OPTIONS=$APT_OPTIONS
LIVE_TYPE=$LIVE_TYPE
DISTRIBUTION=$DISTRIBUTION
DISTRIBUTION_TYPE=$DISTRIBUTION_TYPE
PACKAGE_VARIANT=$PACKAGE_VARIANT
COMP_TYPE=$COMP_TYPE
KERNEL_ARCH=$KERNEL_ARCH
USER_NAME=$USER_NAME
EOF
cat <<'EOF' >$1/functions
#!/bin/bash
# =================================================================
# beautiful console
# красивая консоль
# =================================================================
function console_colours() {
RED="\e[31m"
GREEN="\e[32m"
YELLOW="\e[33m"
BLUE="\e[34m"
MAGENTA="\e[35m"
CYAN="\e[36m"
LIGHTGRAY="\e[37m"
DARKGRAY="\e[90m"
LIGHTRED="\e[91m"
LIGHTGREEN="\e[92m"
LIGHTYELLOW="\e[93m"
LIGHTBLUE="\e[94m"
LIGHTMAGENTA="\e[95m"
LIGHTCYAN="\e[96m"
BOLD="\e[1m"
DIM="\e[2m"
UNDERLINED="\e[4m"
BLINK="\e[5m"
REVERSE="\e[7m"
HIDDEN="\e[8m"
ENDCOLOUR="\e[0m"
}
# =================================================================
# reading configuration file
# чтение конфигурационного файла
# =================================================================
function read_config() { # read_config file.cfg var_name1 var_name2
# ref: https://stackoverflow.com/a/20815951
shopt -s extglob # needed the "one of these"-match below
local configfile="${1?No configuration file given}"
local keylist="${@:2}" # positional parameters 2 and following
if [[ ! -f "$configfile" ]]; then
echo >&2 "\"$configfile\" is not a file!"
exit 1
fi
if [[ ! -r "$configfile" ]]; then
echo >&2 "\"$configfile\" is not readable!"
exit 1
fi
keylist="${keylist// /|}" # this will generate a regex 'one of these'
# lhs : "left hand side" : Everything left of the '='
# rhs : "right hand side": Everything right of the '='
#
# "lhs" will hold the name of the key you want to read.
# The value of "rhs" will be assigned to that key.
while IFS='= ' read -r lhs rhs; do
# IF lhs in keylist
# AND rhs not empty
if [[ "$lhs" =~ ^($keylist)$ ]] && [[ -n $rhs ]]; then
rhs="${rhs%\"*}" # Del opening string quotes
rhs="${rhs#\"*}" # Del closing string quotes
rhs="${rhs%\'*}" # Del opening string quotes
rhs="${rhs#\'*}" # Del closing string quotes
eval $lhs=\"$rhs\" # The magic happens here
fi
# tr used as a safeguard against dos line endings
done <<<$(tr -d '\r' <$configfile)
shopt -u extglob # Switching it back off after use
}
EOF
}
function chroot_run() {
echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..."
add_chroot_configuration_files $1
chroot $1 /bin/bash <<EOF
. /functions
read_config /$LIVEKITNAME.conf DEBIAN_FRONTEND_TYPE APT_CMD APT_OPTIONS LIVE_TYPE DISTRIBUTION DISTRIBUTION_TYPE PACKAGE_VARIANT COMP_TYPE
export DEBIAN_FRONTEND_TYPE APT_CMD APT_OPTIONS LIVE_TYPE DISTRIBUTION DISTRIBUTION_TYPE PACKAGE_VARIANT COMP_TYPE
${@:2}
EOF
}
# =================================================================
# =================================================================
# ======================= MODULES FUNCTIONS =======================
@ -438,6 +575,89 @@ EOF
fi
}
function chroot_cleanup() {
echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..."
set +eu
rm -f $1/functions
rm -f $1/$LIVEKITNAME.conf
rm -f $1/preinstall
rm -f $1/install
rm -f $1/install2
rm -f $1/cleanup
rm -f $1/$PACKAGE_VARIANT.list
rm -f $1/postinstall
rm -rf $1/rootcopy-install
rm -rf $1/rootcopy
rm -rf $1/patches
rm -f $1/etc/fstab
rm -f $1/etc/mtab
rm -f $1/etc/apt/sources.list~
rm -Rf $1/etc/systemd/system/timers.target.wants
rm -f $1/etc/systemd/system/multi-user.target.wants/ssh.service
rm -f $1/etc/systemd/system/multi-user.target.wants/dnsmasq.service
rm -f $1/etc/ssh/ssh_host*
rm -f $1/var/backups/*
rm -f $1/var/cache/ldconfig/*
rm -f $1/var/cache/debconf/*
rm -f $1/var/cache/fontconfig/*
rm -f $1/var/lib/apt/extended_states
rm -f $1/var/lib/systemd/random-seed
rm -f $1/var/lib/apt/lists/deb.*
rm -Rf $1/root/.local/share/mc
rm -Rf $1/root/.cache
rm -f $1/root/.wget-hsts
rm -f $1/var/lib/dpkg/*-old
rm -f $1/var/log/*
rm -f $1/var/log/*/*
rm -f $1/var/log/*/*/*
rm -f $1/var/cache/apt/archives/*.deb
rm -f $1/var/cache/apt/*.bin
rm -f $1/var/cache/debconf/*-old
rm -f $1/var/lib/dhcp/dhclient.leases
rm -f $1/root/.bash_history
rm -f $1/root/.wget-hsts
rm -Rf $1/usr/share/doc/*
rm -Rf $1/usr/share/info/*
rm -f $1/usr/share/images/fluxbox/debian-squared.jpg
rm -Rf $1/usr/share/fluxbox/nls/??*
rm -Rf $1/usr/share/gnome/help
rm -Rf $1/usr/share/locale/??
rm -Rf $1/usr/share/locale/??_*
rm -Rf $1/usr/share/locale/??@*
rm -Rf $1/usr/share/locale/???
rm -Rf $1/usr/share/i18n/locales/*_*
rm -Rf $1/usr/share/man/??
rm -Rf $1/usr/share/man/*_*
rm -Rf $1/usr/share/icons/elementaryXubuntu-dark
rm -Rf $1/usr/share/icons/gnome/256x256
rm $1/usr/share/applications/compton.desktop
rm $1/usr/share/applications/debian-uxterm.desktop
rm $1/usr/share/applications/debian-xterm.desktop
rm $1/usr/share/applications/htop.desktop
rm $1/usr/share/applications/mc.desktop
rm $1/usr/share/applications/mcedit.desktop
rm $1/usr/share/applications/pcmanfm-desktop-pref.desktop
rm $1/usr/share/applications/python2.7.desktop
rm $1/usr/share/applications/python3.7.desktop
rm $1/usr/share/applications/vim.desktop
uncompress_files $1/etc/alternatives
uncompress_files $1/usr/share/man
remove_broken_links $1/etc/alternatives
remove_broken_links $1/usr/share/man
set -eu
}
# =================================================================
#
#
@ -445,202 +665,11 @@ EOF
function module_build_cleanup() {
echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..."
set +e
if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then
rm -f $MODULE_UPPER_DIR/preinstall
rm -f $MODULE_UPPER_DIR/install
rm -f $MODULE_UPPER_DIR/install2
rm -f $MODULE_UPPER_DIR/cleanup
rm -f $MODULE_UPPER_DIR/$PACKAGE_VARIANT.list
rm -f $MODULE_UPPER_DIR/postinstall
rm -rf $MODULE_UPPER_DIR/rootcopy-install
rm -rf $MODULE_UPPER_DIR/patches
rm -f $MODULE_UPPER_DIR/etc/fstab
rm -f $MODULE_UPPER_DIR/etc/mtab
rm -f $MODULE_UPPER_DIR/etc/apt/sources.list~
rm -Rf $MODULE_UPPER_DIR/etc/systemd/system/timers.target.wants
rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/ssh.service
rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/dnsmasq.service
rm -f $MODULE_UPPER_DIR/etc/resolv.conf
rm -f $MODULE_UPPER_DIR/etc/ssh/ssh_host*
rm -f $MODULE_UPPER_DIR/var/backups/*
rm -f $MODULE_UPPER_DIR/var/cache/ldconfig/*
rm -f $MODULE_UPPER_DIR/var/cache/debconf/*
rm -f $MODULE_UPPER_DIR/var/cache/fontconfig/*
rm -f $MODULE_UPPER_DIR/var/lib/apt/extended_states
rm -f $MODULE_UPPER_DIR/var/lib/systemd/random-seed
rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/deb.*
rm -Rf $MODULE_UPPER_DIR/root/.local/share/mc
rm -Rf $MODULE_UPPER_DIR/root/.cache
rm -f $MODULE_UPPER_DIR/root/.wget-hsts
rm -f $MODULE_UPPER_DIR/var/lib/dpkg/*-old
rm -f $MODULE_UPPER_DIR/var/log/*
rm -f $MODULE_UPPER_DIR/var/log/*/*
rm -f $MODULE_UPPER_DIR/var/log/*/*/*
rm -f $MODULE_UPPER_DIR/var/cache/apt/archives/*.deb
rm -f $MODULE_UPPER_DIR/var/cache/apt/*.bin
rm -f $MODULE_UPPER_DIR/var/cache/debconf/*-old
rm -f $MODULE_UPPER_DIR/var/lib/dhcp/dhclient.leases
rm -f $MODULE_UPPER_DIR/root/.bash_history
rm -f $MODULE_UPPER_DIR/root/.wget-hsts
rm -Rf $MODULE_UPPER_DIR/usr/share/doc/*
rm -Rf $MODULE_UPPER_DIR/usr/share/info/*
rm -f $MODULE_UPPER_DIR/usr/share/images/fluxbox/debian-squared.jpg
rm -Rf $MODULE_UPPER_DIR/usr/share/fluxbox/nls/??*
rm -Rf $MODULE_UPPER_DIR/usr/share/gnome/help
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??_*
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??@*
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/???
rm -Rf $MODULE_UPPER_DIR/usr/share/i18n/locales/*_*
rm -Rf $MODULE_UPPER_DIR/usr/share/man/??
rm -Rf $MODULE_UPPER_DIR/usr/share/man/*_*
rm -Rf $MODULE_UPPER_DIR/usr/share/icons/elementaryXubuntu-dark
rm -Rf $MODULE_UPPER_DIR/usr/share/icons/gnome/256x256
rm $MODULE_UPPER_DIR/usr/share/applications/compton.desktop
rm $MODULE_UPPER_DIR/usr/share/applications/debian-uxterm.desktop
#rm $MODULE_UPPER_DIR/usr/share/applications/debian-xterm.desktop
#rm $MODULE_UPPER_DIR/usr/share/applications/htop.desktop
#rm $MODULE_UPPER_DIR/usr/share/applications/mc.desktop
rm $MODULE_UPPER_DIR/usr/share/applications/mcedit.desktop
rm $MODULE_UPPER_DIR/usr/share/applications/pcmanfm-desktop-pref.desktop
rm $MODULE_UPPER_DIR/usr/share/applications/python2.7.desktop
rm $MODULE_UPPER_DIR/usr/share/applications/python3.7.desktop
rm $MODULE_UPPER_DIR/usr/share/applications/vim.desktop
# Unzip gzipped files (man pages), so LZMA can compress 2times better.
# First we fix symlinks, then uncompress files
# $1 = search directory
uncompress_files() {
local LINK LINE
find "$1" -type l -name "*.gz" | while read LINE; do
LINK="$(readlink "$LINE" | sed -r 's/.gz$//')"
FILE="$(echo "$LINE" | sed -r 's/.gz$//')"
ln -sfn "$LINK" "$FILE"
rm -f "$LINE"
done
find "$1" -type f -name "*.gz" | xargs -r gunzip
}
uncompress_files $MODULE_UPPER_DIR/etc/alternatives
uncompress_files $MODULE_UPPER_DIR/usr/share/man
# remove broken links
# $1 = search directory
remove_broken_links() {
find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf
}
remove_broken_links $MODULE_UPPER_DIR/etc/alternatives
remove_broken_links $MODULE_UPPER_DIR/usr/share/man
chroot_cleanup $MODULE_UPPER_DIR
else
rm -f $MODULE_UPPER_DIR/preinstall >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/install >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/install2 >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/cleanup >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/$PACKAGE_VARIANT.list >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/postinstall >>$OUTPUT 2>&1
rm -rf $MODULE_UPPER_DIR/rootcopy-install >>$OUTPUT 2>&1
rm -rf $MODULE_UPPER_DIR/patches >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/etc/fstab >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/etc/mtab >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/etc/apt/sources.list~ >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/etc/systemd/system/timers.target.wants >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/ssh.service >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/etc/systemd/system/multi-user.target.wants/dnsmasq.service >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/etc/resolv.conf >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/etc/ssh/ssh_host* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/backups/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/cache/ldconfig/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/cache/debconf/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/cache/fontconfig/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/lib/apt/extended_states >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/lib/systemd/random-seed >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/lib/apt/lists/deb.* >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/root/.local/share/mc >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/root/.cache >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/root/.wget-hsts >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/lib/dpkg/*-old >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/log/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/log/*/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/log/*/*/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/cache/apt/archives/*.deb >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/cache/apt/*.bin >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/cache/debconf/*-old >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/var/lib/dhcp/dhclient.leases >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/root/.bash_history >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/root/.wget-hsts >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/doc/* >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/info/* >>$OUTPUT 2>&1
rm -f $MODULE_UPPER_DIR/usr/share/images/fluxbox/debian-squared.jpg >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/fluxbox/nls/??* >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/gnome/help >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/?? >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??_* >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??@* >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/locale/??? >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/i18n/locales/*_* >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/man/?? >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/man/*_* >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/icons/elementaryXubuntu-dark >>$OUTPUT 2>&1
rm -Rf $MODULE_UPPER_DIR/usr/share/icons/gnome/256x256 >>$OUTPUT 2>&1
rm $MODULE_UPPER_DIR/usr/share/applications/compton.desktop >>$OUTPUT 2>&1
rm $MODULE_UPPER_DIR/usr/share/applications/debian-uxterm.desktop >>$OUTPUT 2>&1
#rm $MODULE_UPPER_DIR/usr/share/applications/debian-xterm.desktop >>$OUTPUT 2>&1
#rm $MODULE_UPPER_DIR/usr/share/applications/htop.desktop >>$OUTPUT 2>&1
#rm $MODULE_UPPER_DIR/usr/share/applications/mc.desktop >>$OUTPUT 2>&1
rm $MODULE_UPPER_DIR/usr/share/applications/mcedit.desktop >>$OUTPUT 2>&1
rm $MODULE_UPPER_DIR/usr/share/applications/pcmanfm-desktop-pref.desktop >>$OUTPUT 2>&1
rm $MODULE_UPPER_DIR/usr/share/applications/python2.7.desktop >>$OUTPUT 2>&1
rm $MODULE_UPPER_DIR/usr/share/applications/python3.7.desktop >>$OUTPUT 2>&1
rm $MODULE_UPPER_DIR/usr/share/applications/vim.desktop >>$OUTPUT 2>&1
# Unzip gzipped files (man pages), so LZMA can compress 2times better.
# First we fix symlinks, then uncompress files
# $1 = search directory
uncompress_files() {
local LINK LINE
find "$1" -type l -name "*.gz" | while read LINE; do
LINK="$(readlink "$LINE" | sed -r 's/.gz$//')"
FILE="$(echo "$LINE" | sed -r 's/.gz$//')"
ln -sfn "$LINK" "$FILE"
rm -f "$LINE"
done
find "$1" -type f -name "*.gz" | xargs -r gunzip >>$OUTPUT 2>&1
}
uncompress_files $MODULE_UPPER_DIR/etc/alternatives >>$OUTPUT 2>&1
uncompress_files $MODULE_UPPER_DIR/usr/share/man >>$OUTPUT 2>&1
# remove broken links
# $1 = search directory
remove_broken_links() {
find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf >>$OUTPUT 2>&1
}
remove_broken_links $MODULE_UPPER_DIR/etc/alternatives >>$OUTPUT 2>&1
remove_broken_links $MODULE_UPPER_DIR/usr/share/man >>$OUTPUT 2>&1
chroot_cleanup $MODULE_UPPER_DIR >>$OUTPUT 2>&1
fi
set -e
}
# =================================================================
@ -652,7 +681,11 @@ function build_modules() {
MODULES_DIR=$CURRENT_DIR/build
cd $CURRENT_DIR/modules
if [ -d $CURRENT_DIR/modules ]; then
cd $CURRENT_DIR/modules
else
help
fi
for MODULE in *; do
MODULE_UPPER_DIR="$MODULES_DIR/$MODULE-upper"
@ -663,21 +696,23 @@ function build_modules() {
module_chroot_mount_fs
if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then
chroot_run $MODULE_MERGED_DIR $APT_CMD update
else
chroot_run $MODULE_MERGED_DIR $APT_CMD update >>$OUTPUT 2>&1
fi
# run pre-install script
if [ -f $CURRENT_DIR/modules/$MODULE/preinstall ]; then
cp $CURRENT_DIR/modules/$MODULE/preinstall $MODULE_MERGED_DIR/preinstall
chmod +x $MODULE_MERGED_DIR/preinstall
chroot $MODULE_MERGED_DIR /usr/bin/env \
OUTPUT=$OUTPUT \
BUILD_TEST_ISO=$BUILD_TEST_ISO \
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \
APT_CMD=$APT_CMD \
APT_OPTIONS=$APT_OPTIONS \
APT_OPTIONS2=$APT_OPTIONS2 \
LIVE_TYPE=$LIVE_TYPE \
DISTRIBUTION=$DISTRIBUTION \
PACKAGE_VARIANT=$PACKAGE_VARIANT \
/preinstall >>$OUTPUT 2>&1
if [ -f $SCRIPT_DIR/linux-live/modules/$MODULE/preinstall ]; then
if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then
cp $SCRIPT_DIR/linux-live/modules/$MODULE/preinstall $MODULE_MERGED_DIR/preinstall
chmod +x $MODULE_MERGED_DIR/preinstall
chroot_run $MODULE_MERGED_DIR /preinstall
else
cp $SCRIPT_DIR/linux-live/modules/$MODULE/preinstall $MODULE_MERGED_DIR/preinstall
chmod +x $MODULE_MERGED_DIR/preinstall
chroot_run $MODULE_MERGED_DIR /preinstall >>$OUTPUT 2>&1
fi
fi
# copy files
@ -702,27 +737,9 @@ function build_modules() {
cp $CURRENT_DIR/modules/$MODULE/$PACKAGE_VARIANT.list $MODULE_MERGED_DIR/$PACKAGE_VARIANT.list
fi
if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then
chroot $MODULE_MERGED_DIR /usr/bin/env \
OUTPUT=$OUTPUT \
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \
APT_CMD=$APT_CMD \
APT_OPTIONS=$APT_OPTIONS \
APT_OPTIONS2=$APT_OPTIONS2 \
LIVE_TYPE=$LIVE_TYPE \
DISTRIBUTION=$DISTRIBUTION \
PACKAGE_VARIANT=$PACKAGE_VARIANT \
/install
chroot_run $MODULE_MERGED_DIR /install
else
chroot $MODULE_MERGED_DIR /usr/bin/env \
OUTPUT=$OUTPUT \
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \
APT_CMD=$APT_CMD \
APT_OPTIONS=$APT_OPTIONS \
APT_OPTIONS2=$APT_OPTIONS2 \
LIVE_TYPE=$LIVE_TYPE \
DISTRIBUTION=$DISTRIBUTION \
PACKAGE_VARIANT=$PACKAGE_VARIANT \
/install >>$OUTPUT 2>&1
chroot_run $MODULE_MERGED_DIR /install >>$OUTPUT 2>&1
fi
fi
@ -735,27 +752,9 @@ function build_modules() {
(cd $CURRENT_DIR/modules/$MODULE/patches && cp --parents -afr * $MODULE_MERGED_DIR/patches/)
fi
if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then
chroot $MODULE_MERGED_DIR /usr/bin/env \
OUTPUT=$OUTPUT \
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \
APT_CMD=$APT_CMD \
APT_OPTIONS=$APT_OPTIONS \
APT_OPTIONS2=$APT_OPTIONS2 \
LIVE_TYPE=$LIVE_TYPE \
DISTRIBUTION=$DISTRIBUTION \
PACKAGE_VARIANT=$PACKAGE_VARIANT \
/install2
chroot_run $MODULE_MERGED_DIR /install2
else
chroot $MODULE_MERGED_DIR /usr/bin/env \
OUTPUT=$OUTPUT \
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \
APT_CMD=$APT_CMD \
APT_OPTIONS=$APT_OPTIONS \
APT_OPTIONS2=$APT_OPTIONS2 \
LIVE_TYPE=$LIVE_TYPE \
DISTRIBUTION=$DISTRIBUTION \
PACKAGE_VARIANT=$PACKAGE_VARIANT \
/install2 >>$OUTPUT 2>&1
chroot_run $MODULE_MERGED_DIR /install2 >>$OUTPUT 2>&1
fi
fi
@ -775,27 +774,9 @@ function build_modules() {
cp $CURRENT_DIR/modules/$MODULE/postinstall $MODULE_MERGED_DIR/postinstall
chmod +x $MODULE_MERGED_DIR/postinstall
if [ $OUTPUT = "/dev/stdout" ] && [ ! -f /dev/stdout ]; then
chroot $MODULE_MERGED_DIR /usr/bin/env \
OUTPUT=$OUTPUT \
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \
APT_CMD=$APT_CMD \
APT_OPTIONS=$APT_OPTIONS \
APT_OPTIONS2=$APT_OPTIONS2 \
LIVE_TYPE=$LIVE_TYPE \
DISTRIBUTION=$DISTRIBUTION \
PACKAGE_VARIANT=$PACKAGE_VARIANT \
/postinstall
chroot_run $MODULE_MERGED_DIR /postinstall
else
chroot $MODULE_MERGED_DIR /usr/bin/env \
OUTPUT=$OUTPUT \
DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \
APT_CMD=$APT_CMD \
APT_OPTIONS=$APT_OPTIONS \
APT_OPTIONS2=$APT_OPTIONS2 \
LIVE_TYPE=$LIVE_TYPE \
DISTRIBUTION=$DISTRIBUTION \
PACKAGE_VARIANT=$PACKAGE_VARIANT \
/postinstall >>$OUTPUT 2>&1
chroot_run $MODULE_MERGED_DIR /postinstall >>$OUTPUT 2>&1
fi
fi