archboot/usr/lib/archboot/common.sh
2022-03-21 22:30:37 +01:00

106 lines
3.1 KiB
Bash

#!/bin/bash
# created by Tobias Powalowski <tpowa@archlinux.org>
. /etc/archboot/defaults
LANG="C"
_BASENAME="$(basename "${0}")"
_RUNNING_ARCH="$(uname -m)"
_PACMAN_MIRROR="/etc/pacman.d/mirrorlist"
_PACMAN_CONF="/etc/pacman.conf"
### check for root
_root_check() {
if ! [[ ${UID} -eq 0 ]]; then
echo "ERROR: Please run as root user!"
exit 1
fi
}
### check for x86_64
_x86_64_check() {
if ! [[ "${_RUNNING_ARCH}" == "x86_64" ]]; then
echo "ERROR: Pleae run on x86_64 hardware."
exit 1
fi
}
### check for aarch64
_aarch64_check() {
if ! [[ "${_RUNNING_ARCH}" == "aarch64" ]]; then
echo "ERROR: Please run on aarch64 hardware."
exit 1
fi
}
### check for tpowa's build server
_buildserver_check() {
if [[ ! "$(cat /etc/hostname)" == "T-POWA-LX" ]]; then
echo "This script should only be run on tpowa's build server. Aborting..."
exit 1
fi
}
# generate locales
_generate_locales() {
if [[ -d ${1}/usr/share/i18n ]]; then
echo "Generate locales in container ..."
sed -i -e 's:#C.UTF-8 UTF-8:C.UTF-8 UTF-8:g' "${1}/etc/locale.gen"
systemd-nspawn -q -D "${1}" locale-gen >/dev/null 2>&1 || exit 1
fi
}
_generate_keyring() {
# generate pacman keyring
echo "Generate pacman keyring in container ..."
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() {
# use pacman.conf with disabled [testing] repository
if [[ -z "${_CUSTOM_PACMAN_CONF}" ]]; then
echo "Use system's ${_PACMAN_CONF} ..."
else
echo "Copy ${_CUSTOM_PACMAN_CONF} to ${_PACMAN_CONF} ..."
cp "${_PACMAN_CONF}" "${_PACMAN_CONF}".old
cp "${_CUSTOM_PACMAN_CONF}" "${_PACMAN_CONF}"
fi
# use mirrorlist with enabled rackspace mirror
if [[ -z "${_CUSTOM_MIRRORLIST}" ]]; then
echo "Use system's ${_PACMAN_MIRROR} ..."
else
echo "Copy ${_CUSTOM_MIRRORLIST} to ${_PACMAN_MIRROR} ..."
cp "${_PACMAN_MIRROR}" "${_PACMAN_MIRROR}".old
cp "${_CUSTOM_MIRRORLIST}" "${_PACMAN_MIRROR}"
fi
}
_x86_64_pacman_restore() {
# restore pacman.conf and mirrorlist
if [[ -z "${_CUSTOM_PACMAN_CONF}" ]]; then
echo "System's ${_PACMAN_CONF} used ..."
else
echo "Restore system's ${_PACMAN_CONF} ..."
cp "${_PACMAN_CONF}".old "${_PACMAN_CONF}"
fi
if [[ -z "${_CUSTOM_MIRRORLIST}" ]]; then
echo "System's ${_PACMAN_MIRROR} used ..."
else
echo "Restore system's ${_PACMAN_MIRROR} ..."
cp "${_PACMAN_MIRROR}".old "${_PACMAN_MIRROR}"
fi
}
_fix_aarch64_network() {
echo "Fix network settings in ${1} ..."
# enable parallel downloads
sed -i -e 's:^#ParallelDownloads:ParallelDownloads:g' "${1}"/etc/pacman.conf
# fix network in container
rm "${1}"/etc/resolv.conf
echo "nameserver 8.8.8.8" > "${1}"/etc/resolv.conf
}
_create_archboot_db() {
echo "Creating archboot repository db ..."
#shellcheck disable=SC2046
LANG=C repo-add -q "${1}"/archboot.db.tar.gz $(find "${1}"/ -type f ! -name '*.sig')
}