fix buildchain

This commit is contained in:
Tobias Powalowski 2022-02-15 21:39:34 +01:00
parent 52dec0288e
commit 2aef84ac5d
5 changed files with 34 additions and 13 deletions

View file

@ -11,6 +11,7 @@ _root_check
_x86_64_check
echo "Starting container creation ..."
[[ -d "${1}" ]] || (echo "Create directory ${1} ..."; mkdir "${1}")
_create_pacman_conf "${1}"
_prepare_pacman "${1}" || exit 1
_install_base_packages "${1}" || exit 1
_clean_mkinitcpio "${1}" || exit 1

View file

@ -14,6 +14,7 @@ _usage () {
echo " Options:"
echo " -cc Cleanup container eg. remove manpages, includes ..."
echo " -cp Cleanup container package cache"
echo " -install-source=Server add package server with archboot repository"
exit 0
}
@ -22,6 +23,7 @@ _parameters() {
case ${1} in
-cc|--cc) _CLEANUP_CONTAINER="1" ;;
-cp|--cp) _CLEANUP_CACHE="1" ;;
-install-source=*|--install-source=*) _INSTALL_SOURCE="$(echo "${1}" | awk -F= '{print $2;}')" ;;
esac
shift
done
@ -94,6 +96,23 @@ _prepare_pacman() {
mount shm "${1}/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev
}
_create_pacman_conf() {
if [[ -z "${_INSTALL_SOURCE}" ]]; then
echo "Use default pacman.conf ..."
_PACMAN_CONF="/etc/pacman.conf"
else
echo "Use custom pacman.conf ..."
_PACMAN_CONF="$(mktemp ${1}/pacman.conf.XXX)"
echo "[options]" >> "${_PACMAN_CONF}"
echo "Architecture = auto" >> "${_PACMAN_CONF}"
echo "SigLevel = Required DatabaseOptional" >> "${_PACMAN_CONF}"
echo "LocalFileSigLevel = Optional" >> "${_PACMAN_CONF}"
echo "ParallelDownloads = 5" >> "${_PACMAN_CONF}"
echo "[archboot]" >> "${_PACMAN_CONF}"
echo "Server = ${_INSTALL_SOURCE}" >> "${_PACMAN_CONF}"
fi
}
_change_pacman_conf() {
# enable parallel downloads
sed -i -e 's:^#ParallelDownloads:ParallelDownloads:g' "${1}"/etc/pacman.conf
@ -111,22 +130,22 @@ _umount_special() {
_install_base_packages() {
echo "Installing packages base linux and ${_LINUX_FIRMWARE} to ${1} ..."
pacman --root "${1}" -Sy base linux "${_LINUX_FIRMWARE}" --ignore systemd-resolvconf --noconfirm --cachedir "${_PWD}"/"${_CACHEDIR}" >/dev/null 2>&1
pacman --root "${1}" -Sy base linux "${_LINUX_FIRMWARE}" --config "${_PACMAN_CONF}" --ignore systemd-resolvconf --noconfirm --cachedir "${_PWD}"/"${_CACHEDIR}" >/dev/null 2>&1
}
_install_archboot() {
echo "Installing ${_ARCHBOOT} to ${1} ..."
pacman --root "${1}" -Sy "${_ARCHBOOT}" --ignore systemd-resolvconf --noconfirm >/dev/null 2>&1
pacman --root "${1}" -Sy "${_ARCHBOOT}" --config "${_PACMAN_CONF}" --ignore systemd-resolvconf --noconfirm >/dev/null 2>&1
}
_aarch64_install_base_packages() {
echo "Installing packages base linux and ${_LINUX_FIRMWARE} to ${1} ..."
systemd-nspawn -q -D "${1}" /bin/bash -c "pacman -Sy base linux ${_LINUX_FIRMWARE} --ignore systemd-resolvconf --noconfirm" >/dev/null 2>&1
systemd-nspawn -q -D "${1}" /bin/bash -c "pacman -Sy base linux ${_LINUX_FIRMWARE} --config "$(if [[ -e "$(basenme ${_PACMAN_CONF})" ]]; then $(basenme ${_PACMAN_CONF}); else ${_PACMAN_CONF};fi)" --ignore systemd-resolvconf --noconfirm" >/dev/null 2>&1
}
_aarch64_install_archboot() {
echo "Installing ${_ARCHBOOT} to ${1} ..."
systemd-nspawn -q -D "${1}" /bin/bash -c "pacman -Sy ${_ARCHBOOT} --ignore systemd-resolvconf --noconfirm" >/dev/null 2>&1
systemd-nspawn -q -D "${1}" /bin/bash -c "pacman -Sy ${_ARCHBOOT} --config "$(if [[ -e "$(basenme ${_PACMAN_CONF})" ]]; then $(basenme ${_PACMAN_CONF}); else ${_PACMAN_CONF};fi)" --ignore systemd-resolvconf --noconfirm" >/dev/null 2>&1
}
_download_packages() {

View file

@ -43,16 +43,16 @@ _buildserver_check() {
# generate locales
_generate_locales() {
echo "Generate locales in container ..."
echo 'en_US ISO-8859-1' >> "${_DIR}/etc/locale.gen"
echo 'en_US.UTF-8 UTF-8' >> "${_DIR}/etc/locale.gen"
systemd-nspawn -q -D "${_DIR}" locale-gen >/dev/null 2>&1
echo 'en_US ISO-8859-1' >> "${1}/etc/locale.gen"
echo 'en_US.UTF-8 UTF-8' >> "${1}/etc/locale.gen"
systemd-nspawn -q -D "${1}" locale-gen >/dev/null 2>&1
}
_generate_keyring() {
# generate pacman keyring
echo "Generate pacman keyring in container ..."
systemd-nspawn -q -D "${_DIR}" pacman-key --init >/dev/null 2>&1
systemd-nspawn -q -D "${_DIR}" pacman-key --populate "${_KEYRING}" >/dev/null 2>&1
systemd-nspawn -q -D "${1}" pacman-key --init >/dev/null 2>&1
systemd-nspawn -q -D "${1}" pacman-key --populate "${_KEYRING}" >/dev/null 2>&1
}
_x86_64_pacman_use_default() {

View file

@ -12,8 +12,9 @@ _W_DIR="$(mktemp -u archboot-release.XXX)"
_usage () {
echo "CREATE ARCHBOOT RELEASE IMAGE"
echo "-----------------------------"
echo "Usage: ${_BASENAME} <directory>"
echo "Usage: ${_BASENAME} <directory> <server>"
echo "This will create an archboot release image in <directory>."
echo "You can specify a certain <server> with an archboot repository."
exit 0
}
@ -21,7 +22,7 @@ _create_iso() {
mkdir -p "${1}"
cd "${1}" || exit 1
# create container
archboot-"${_ARCH}"-create-container.sh "${_W_DIR}" -cc -cp || exit 1
archboot-"${_ARCH}"-create-container.sh "${_W_DIR}" -cc -cp --install-source="${2}" || exit 1
# generate tarball in container, umount tmp it's a tmpfs and weird things could happen then
echo "Generate ISO ..."
# generate iso in container

View file

@ -14,7 +14,7 @@ _PACMAN_AARCH_SERVERDIR="/home/tpowa/public_html/archboot-helper/pacman-chroot-a
_PACMAN_AARCH64="pacman-aarch64-chroot"
_PACMAN_AARCH64_CHROOT_SERVER="https://pkgbuild.com/~tpowa/archboot-helper/pacman-chroot-aarch64"
_PACMAN_AARCH64_CHROOT="pacman-aarch64-chroot-latest.tar.zst"
_ARCHBOOT_SOURCE="https://pkgbuild.com/~tpowa/archboot-sources/${_ARCH}/${_DIRECTORY}"
_update_aarch64_pacman_chroot() {
# update aarch64 pacman chroot
@ -56,7 +56,7 @@ _update_aarch64_pacman_chroot() {
_server_release() {
# create release in "${_ISOHOME}"
cd "${_ISOHOME}" || exit 1
"archboot-${_ARCH}-release.sh" "${_BUILDDIR}" || rm -r "${_BUILDDIR}"
"archboot-${_ARCH}-release.sh" "${_BUILDDIR}" "${_ARCHBOOT_SOURCE}" || rm -r "${_BUILDDIR}"
# set user rights on files
[[ -d "${_BUILDDIR}" ]] || exit 1
chmod 755 "${_BUILDDIR}"