diff options
-rwxr-xr-x | parabolaiso/mkparabolaiso | 41 |
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 |