2021-04-28 17:21:39 +02:00
|
|
|
#!/bin/bash
|
|
|
|
#
|
|
|
|
# https://wiki.archlinux.org/index.php/Archiso#Prepare_a_custom_profile
|
|
|
|
#
|
2021-06-11 14:20:12 +02:00
|
|
|
# TODO: set custom welcome message in /etc/motd
|
2021-04-28 17:21:39 +02:00
|
|
|
#
|
2021-06-12 11:55:25 +02:00
|
|
|
BUILD_DIR=/out
|
2021-04-28 17:21:39 +02:00
|
|
|
|
2021-06-11 14:20:12 +02:00
|
|
|
PKGS=()
|
|
|
|
PKGS+=('de-p1st-keyboard') # german keyboard
|
|
|
|
PKGS+=('de-p1st-nano') # syntax hilighting in nano
|
|
|
|
PKGS+=('de-p1st-screen') # longer scrollback history in screen
|
|
|
|
PKGS+=('de-p1st-pacman') # [de-p1st] mirror enabled
|
|
|
|
PKGS+=('de-p1st-installer') # de-p1st-installer script
|
2021-04-28 17:21:39 +02:00
|
|
|
|
|
|
|
################################
|
|
|
|
|
2021-06-12 11:55:25 +02:00
|
|
|
# Write-permission for user "build"
|
|
|
|
sudo chown "build:wheel" /out
|
|
|
|
|
2021-06-11 14:20:12 +02:00
|
|
|
function isEmptyDir() {
|
2021-06-12 11:55:25 +02:00
|
|
|
# arg $1: directory to check
|
|
|
|
|
|
|
|
if [ -z "$(find "${1}" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then
|
2021-06-11 14:20:12 +02:00
|
|
|
# echo "Not empty or NOT a directory"
|
|
|
|
return 1
|
2021-06-12 17:52:54 +02:00
|
|
|
else
|
|
|
|
# "Empty directory"
|
|
|
|
return 0
|
2021-06-11 14:20:12 +02:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if [ -d "${BUILD_DIR}" ]; then
|
|
|
|
if ! isEmptyDir "${BUILD_DIR}"; then
|
|
|
|
if [ "$1" = "clean" ]; then
|
2021-06-12 11:55:25 +02:00
|
|
|
sudo rm -r "${BUILD_DIR}"/* || exit $?
|
2021-06-11 14:20:12 +02:00
|
|
|
else
|
2021-06-12 11:55:25 +02:00
|
|
|
echo "BUILD_DIR not empty: ${BUILD_DIR}";
|
|
|
|
echo "Run with argument 'clean' to clean up BUILD_DIR and then continue building the ISO."
|
2021-06-11 14:20:12 +02:00
|
|
|
exit 1;
|
|
|
|
fi
|
|
|
|
fi # else: BUILD_DIR exists and is empty :)
|
|
|
|
elif ! mkdir -p "${BUILD_DIR}"; then
|
2021-06-12 11:55:25 +02:00
|
|
|
echo "Could not create BUILD_DIR: ${BUILD_DIR}";
|
2021-06-11 14:20:12 +02:00
|
|
|
exit 1;
|
2021-04-28 17:21:39 +02:00
|
|
|
fi
|
|
|
|
|
2021-04-29 12:09:36 +02:00
|
|
|
|
2021-04-28 17:21:39 +02:00
|
|
|
# The releng profile is used to create the official monthly installation ISO
|
|
|
|
PROFILE=/usr/share/archiso/configs/releng/
|
2021-06-11 14:20:12 +02:00
|
|
|
if [ ! -d "${PROFILE}" ]; then
|
2021-06-12 11:55:25 +02:00
|
|
|
echo "Dependency 'archiso' is missing. Please install this first!"
|
|
|
|
exit 1
|
2021-04-28 17:21:39 +02:00
|
|
|
fi
|
|
|
|
|
2021-05-24 15:09:45 +02:00
|
|
|
cp -r "$PROFILE" "$BUILD_DIR"/profile || exit $?
|
2021-04-28 17:21:39 +02:00
|
|
|
|
2021-04-29 20:25:30 +02:00
|
|
|
# extend the builder's pacman.conf (add de-p1st mirrors)
|
2021-04-28 17:21:39 +02:00
|
|
|
# https://wiki.archlinux.org/index.php/Archiso#Custom_local_repository
|
2021-06-12 11:55:25 +02:00
|
|
|
# cat ../pkg/de-p1st-pacman/pacman.d/de-p1st >>"$BUILD_DIR"/profile/pacman.conf || exit $?
|
|
|
|
echo '[de-p1st]
|
|
|
|
SigLevel = Optional TrustAll
|
|
|
|
Server = https://arch.p1st.de' | sudo tee -a "$BUILD_DIR"/profile/pacman.conf || exit $?
|
2021-04-28 17:21:39 +02:00
|
|
|
|
|
|
|
for PKG in "${PKGS[@]}"; do
|
2021-06-11 14:20:12 +02:00
|
|
|
echo "${PKG}" >>"${BUILD_DIR}"/profile/packages.x86_64
|
2021-04-28 17:21:39 +02:00
|
|
|
done
|
|
|
|
|
|
|
|
###
|
|
|
|
|
2021-05-24 15:09:45 +02:00
|
|
|
mkdir "${BUILD_DIR}/work_dir" && mkdir "${BUILD_DIR}/out_dir" || exit $?
|
2021-04-28 17:21:39 +02:00
|
|
|
|
|
|
|
echo "running 'sudo mkarchiso' ..."
|
2021-05-24 15:09:45 +02:00
|
|
|
sudo mkarchiso -v -w "${BUILD_DIR}/work_dir" -o "${BUILD_DIR}/out_dir" "${BUILD_DIR}/profile" || exit $?
|