mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-20 12:00:37 +02:00
106 lines
3.1 KiB
Bash
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')
|
|
}
|