summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xparabolaiso/mkparabolaiso41
1 files changed, 38 insertions, 3 deletions
diff --git a/parabolaiso/mkparabolaiso b/parabolaiso/mkparabolaiso
index b4457b8..3259f27 100755
--- a/parabolaiso/mkparabolaiso
+++ b/parabolaiso/mkparabolaiso
@@ -315,9 +315,10 @@ _make_pacman_conf() {
# append CacheDir and HookDir to [options] section
# HookDir is *always* set to the airootfs' override directory
# see `man 8 pacman` for further info
- setarch "${arch}" pacman-conf --config "${pacman_conf}" | \
- sed "/CacheDir/d;/DBPath/d;/HookDir/d;/LogFile/d;/RootDir/d;/\[options\]/a CacheDir = ${_cache_dirs}
- /\[options\]/a HookDir = ${pacstrap_dir}/etc/pacman.d/hooks/" > "${work_dir}/${buildmode}.pacman.conf.${arch}"
+ sed "/Architecture/d;/\[options\]/a Architecture = ${arch}" "${pacman_conf}" | \
+ pacman-conf --config /dev/stdin | \
+ sed "/CacheDir/d;/DBPath/d;/HookDir/d;/LogFile/d;/RootDir/d;/\[options\]/a CacheDir = ${_cache_dirs}
+ /\[options\]/a HookDir = ${pacstrap_dir}/etc/pacman.d/hooks/" > "${work_dir}/${buildmode}.pacman.conf.${arch}"
}
# Prepare working directory and copy custom root file system files.
@@ -360,6 +361,12 @@ _make_packages() {
local buildmode_pkg_list_arch
eval "buildmode_pkg_list_arch=(\${buildmode_pkg_list_${arch}[@]})"
+ # Install the qemu-arm-static binary
+ if [[ "${arch}" == "armv7h" ]] && [[ ! "$(uname -m)" == armv7? ]]; then
+ install -d -m 0755 -- "${pacstrap_dir}/usr/bin"
+ install -m 0755 -- /usr/bin/qemu-arm-static "${pacstrap_dir}/usr/bin"
+ fi
+
if [[ -n "${gpg_key}" ]]; then
exec {PARABOLAISO_GNUPG_FD}<>"${work_dir}/pubkey.gpg"
export PARABOLAISO_GNUPG_FD
@@ -377,6 +384,9 @@ _make_packages() {
unset PARABOLAISO_GNUPG_FD
fi
+ # Delete the qemu-arm-static binary
+ rm -f -- "${pacstrap_dir}/usr/bin/qemu-arm-static"
+
_msg_info "Done! Packages installed successfully."
}
@@ -898,6 +908,27 @@ _validate_requirements_buildmode_bootstrap() {
(( validation_error=validation_error+1 ))
_msg_error "Validating build mode '${_buildmode}': bsdtar is not available on this host. Install 'libarchive'!" 0
fi
+ if [[ "${arch}" == "armv7h" ]] && [[ ! "$(uname -m)" == armv7? ]]; then
+ if ! command -v qemu-arm-static &> /dev/null; then
+ (( validation_error=validation_error+1 ))
+ _msg_error "Validating build mode '${_buildmode}': qemu-arm-static is not available on this host. Install 'qemu-user-static'!" 0
+ fi
+ if [[ ! -e "/usr/lib/binfmt.d/qemu-arm.conf" ]]; then
+ (( validation_error=validation_error+1 ))
+ _msg_error "Validating build mode '${_buildmode}': qemu-user-static-binfmt is not available on this host. Install 'qemu-user-static-binfmt'!" 0
+ fi
+ if command -v rc-service &> /dev/null; then
+ if ! rc-service binfmt status &> /dev/null; then
+ (( validation_error=validation_error+1 ))
+ _msg_error "Validating build mode '${_buildmode}': binfmt is not available on this host. Start the binfmt service!" 0
+ fi
+ elif command -v systemctl &> /dev/null; then
+ if ! systemctl status systemd-binfmt &> /dev/null; then
+ (( validation_error=validation_error+1 ))
+ _msg_error "Validating build mode '${_buildmode}': binfmt is not available on this host. Start the systemd-binfmt service!" 0
+ fi
+ fi
+ fi
}
_validate_requirements_buildmode_iso() {
@@ -1491,6 +1522,10 @@ _build_buildmode_bootstrap() {
[[ -d "${work_dir}" ]] || install -d -- "${work_dir}"
install -d -m 0755 -o 0 -g 0 -- "${pacstrap_dir_i686}" "${pacstrap_dir_x86_64}"
else
+ # shellcheck disable=SC2034
+ local image_name_armv7h=""
+ local image_name_i686=""
+ local image_name_x86_64=""
local image_name="${iso_name}-bootstrap-${iso_version}-${arch}.tar.gz"
local buildmode_packages="${bootstrap_packages}"
# Set the package list to use