index : archiso32 | |
Archlinux32 iso tools | gitolite user |
summaryrefslogtreecommitdiff |
-rwxr-xr-x | configs/releng/build.sh | 129 |
diff --git a/configs/releng/build.sh b/configs/releng/build.sh index 23cae8d..a2ab27b 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -12,6 +12,7 @@ work_dir=work out_dir=out gpg_key="" +arch=$(uname -m) verbose="" script_path="$( cd -P "$( dirname "$(readlink -f "$0")" )" && pwd )" @@ -45,9 +46,9 @@ _usage () # Helper function to run make_*() only one time per architecture. run_once() { - if [[ ! -e "${work_dir}/build.${1}" ]]; then + if [[ ! -e "${work_dir}/build.${1}_${arch}" ]]; then "$1" - touch "${work_dir}/build.${1}" + touch "${work_dir}/build.${1}_${arch}" fi } @@ -61,7 +62,7 @@ make_pacman_conf() { # Prepare working directory and copy custom airootfs files (airootfs) make_custom_airootfs() { - local _airootfs="${work_dir}/x86_64/airootfs" + local _airootfs="${work_dir}/${arch}/airootfs" mkdir -p -- "${_airootfs}" if [[ -d "${script_path}/airootfs" ]]; then @@ -76,37 +77,46 @@ make_custom_airootfs() { # Packages (airootfs) make_packages() { if [ -n "${verbose}" ]; then - mkarchiso -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ - -p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install + mkarchiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ + -p "$(grep -h -v '^#' "${script_path}/packages."{both,${arch}}| sed ':a;N;$!ba;s/\n/ /g')" install else - mkarchiso -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ - -p "$(grep -h -v '^#' "${script_path}/packages.x86_64"| sed ':a;N;$!ba;s/\n/ /g')" install + mkarchiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ + -p "$(grep -h -v '^#' "${script_path}/packages."{both,${arch}}| sed ':a;N;$!ba;s/\n/ /g')" install + fi +} + +# Needed packages for x86_64 EFI boot +make_packages_efi() { + if [ -n "${verbose}" ]; then + mkarchiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "efitools" install + else + mkarchiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "efitools" install fi } # Copy mkinitcpio archiso hooks and build initramfs (airootfs) make_setup_mkinitcpio() { local _hook - mkdir -p "${work_dir}/x86_64/airootfs/etc/initcpio/hooks" - mkdir -p "${work_dir}/x86_64/airootfs/etc/initcpio/install" + mkdir -p "${work_dir}/${arch}/airootfs/etc/initcpio/hooks" + mkdir -p "${work_dir}/${arch}/airootfs/etc/initcpio/install" for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do - cp "/usr/lib/initcpio/hooks/${_hook}" "${work_dir}/x86_64/airootfs/etc/initcpio/hooks" - cp "/usr/lib/initcpio/install/${_hook}" "${work_dir}/x86_64/airootfs/etc/initcpio/install" + cp "/usr/lib/initcpio/hooks/${_hook}" "${work_dir}/${arch}/airootfs/etc/initcpio/hooks" + cp "/usr/lib/initcpio/install/${_hook}" "${work_dir}/${arch}/airootfs/etc/initcpio/install" done - sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" "${work_dir}/x86_64/airootfs/etc/initcpio/install/archiso_shutdown" - cp /usr/lib/initcpio/install/archiso_kms "${work_dir}/x86_64/airootfs/etc/initcpio/install" - cp /usr/lib/initcpio/archiso_shutdown "${work_dir}/x86_64/airootfs/etc/initcpio" - cp "${script_path}/mkinitcpio.conf" "${work_dir}/x86_64/airootfs/etc/mkinitcpio-archiso.conf" + sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" "${work_dir}/${arch}/airootfs/etc/initcpio/install/archiso_shutdown" + cp /usr/lib/initcpio/install/archiso_kms "${work_dir}/${arch}/airootfs/etc/initcpio/install" + cp /usr/lib/initcpio/archiso_shutdown "${work_dir}/${arch}/airootfs/etc/initcpio" + cp ${script_path}/mkinitcpio.conf "${work_dir}/${arch}/airootfs/etc/mkinitcpio-archiso.conf" if [[ "${gpg_key}" ]]; then gpg --export "${gpg_key}" > "${work_dir}/gpgkey" exec 17<>"${work_dir}/gpgkey" fi if [ -n "${verbose}" ]; then - ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" \ + ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" \ -D "${install_dir}" \ -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run else - ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" \ + ARCHISO_GNUPG_FD="${gpg_key:+17}" mkarchiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" \ -D "${install_dir}" \ -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run fi @@ -118,37 +128,37 @@ make_setup_mkinitcpio() { # Customize installation (airootfs) make_customize_airootfs() { if [ -n "${verbose}" ]; then - mkarchiso -v -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ + mkarchiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ -r '/root/customize_airootfs.sh' run else - mkarchiso -w "${work_dir}/x86_64" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ + mkarchiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ -r '/root/customize_airootfs.sh' run fi - rm "${work_dir}/x86_64/airootfs/root/customize_airootfs.sh" + rm "${work_dir}/${arch}/airootfs/root/customize_airootfs.sh" } # Prepare kernel/initramfs ${install_dir}/boot/ make_boot() { - mkdir -p "${work_dir}/iso/${install_dir}/boot/x86_64" - cp "${work_dir}/x86_64/airootfs/boot/archiso.img" "${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img" - cp "${work_dir}/x86_64/airootfs/boot/vmlinuz-linux" "${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz" + mkdir -p "${work_dir}/iso/${install_dir}/boot/${arch}" + cp "${work_dir}/${arch}/airootfs/boot/archiso.img" "${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img" + cp "${work_dir}/${arch}/airootfs/boot/vmlinuz-linux" "${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz" } # Add other aditional/extra files to ${install_dir}/boot/ make_boot_extra() { - if [[ -e "${work_dir}/x86_64/airootfs/boot/memtest86+/memtest.bin" ]]; then - cp "${work_dir}/x86_64/airootfs/boot/memtest86+/memtest.bin" "${work_dir}/iso/${install_dir}/boot/memtest" - cp "${work_dir}/x86_64/airootfs/usr/share/licenses/common/GPL2/license.txt" \ + if [[ -e "${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin" ]]; then + cp "${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin" "${work_dir}/iso/${install_dir}/boot/memtest" + cp "${work_dir}/${arch}/airootfs/usr/share/licenses/common/GPL2/license.txt" \ "${work_dir}/iso/${install_dir}/boot/memtest.COPYING" fi - if [[ -e "${work_dir}/x86_64/airootfs/boot/intel-ucode.img" ]]; then - cp "${work_dir}/x86_64/airootfs/boot/intel-ucode.img" "${work_dir}/iso/${install_dir}/boot/intel_ucode.img" - cp "${work_dir}/x86_64/airootfs/usr/share/licenses/intel-ucode/LICENSE" \ + if [[ -e "${work_dir}/${arch}/airootfs/boot/intel-ucode.img" ]]; then + cp "${work_dir}/${arch}/airootfs/boot/intel-ucode.img" "${work_dir}/iso/${install_dir}/boot/intel_ucode.img" + cp "${work_dir}/${arch}/airootfs/usr/share/licenses/intel-ucode/LICENSE" \ "${work_dir}/iso/${install_dir}/boot/intel_ucode.LICENSE" fi - if [[ -e "${work_dir}/x86_64/airootfs/boot/amd-ucode.img" ]]; then - cp "${work_dir}/x86_64/airootfs/boot/amd-ucode.img" "${work_dir}/iso/${install_dir}/boot/amd_ucode.img" - cp "${work_dir}/x86_64/airootfs/usr/share/licenses/amd-ucode/LICENSE" \ + if [[ -e "${work_dir}/${arch}/airootfs/boot/amd-ucode.img" ]]; then + cp "${work_dir}/${arch}/airootfs/boot/amd-ucode.img" "${work_dir}/iso/${install_dir}/boot/amd_ucode.img" + cp "${work_dir}/${arch}/airootfs/usr/share/licenses/amd-ucode/LICENSE" \ "${work_dir}/iso/${install_dir}/boot/amd_ucode.LICENSE" fi } @@ -162,13 +172,13 @@ make_syslinux() { s|%INSTALL_DIR%|${install_dir}|g" "${_cfg}" > "${work_dir}/iso/${install_dir}/boot/syslinux/${_cfg##*/}" done cp "${script_path}/syslinux/splash.png" "${work_dir}/iso/${install_dir}/boot/syslinux" - cp "${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/"*.c32 "${work_dir}/iso/${install_dir}/boot/syslinux" - cp "${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/lpxelinux.0" "${work_dir}/iso/${install_dir}/boot/syslinux" - cp "${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/memdisk" "${work_dir}/iso/${install_dir}/boot/syslinux" + cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/"*.c32 "${work_dir}/iso/${install_dir}/boot/syslinux" + cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/lpxelinux.0" "${work_dir}/iso/${install_dir}/boot/syslinux" + cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/memdisk" "${work_dir}/iso/${install_dir}/boot/syslinux" mkdir -p "${work_dir}/iso/${install_dir}/boot/syslinux/hdt" - gzip -c -9 "${work_dir}/x86_64/airootfs/usr/share/hwdata/pci.ids" > \ + gzip -c -9 "${work_dir}/${arch}/airootfs/usr/share/hwdata/pci.ids" > \ "${work_dir}/iso/${install_dir}/boot/syslinux/hdt/pciids.gz" - gzip -c -9 "${work_dir}/x86_64/airootfs/usr/lib/modules/${_uname_r}/modules.alias" > \ + gzip -c -9 "${work_dir}/${arch}/airootfs/usr/lib/modules/${_uname_r}/modules.alias" > \ "${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz" } @@ -177,9 +187,9 @@ make_isolinux() { mkdir -p "${work_dir}/iso/isolinux" sed "s|%INSTALL_DIR%|${install_dir}|g" \ "${script_path}/isolinux/isolinux.cfg" > "${work_dir}/iso/isolinux/isolinux.cfg" - cp "${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/isolinux.bin" "${work_dir}/iso/isolinux/" - cp "${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/isohdpfx.bin" "${work_dir}/iso/isolinux/" - cp "${work_dir}/x86_64/airootfs/usr/lib/syslinux/bios/ldlinux.c32" "${work_dir}/iso/isolinux/" + cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isolinux.bin" "${work_dir}/iso/isolinux/" + cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isohdpfx.bin" "${work_dir}/iso/isolinux/" + cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/ldlinux.c32" "${work_dir}/iso/isolinux/" } # Prepare /EFI @@ -237,7 +247,7 @@ make_efiboot() { # Build airootfs filesystem image make_prepare() { - cp -a -l -f "${work_dir}/x86_64/airootfs" "${work_dir}" + cp -a -l -f "${work_dir}/${arch}/airootfs" "${work_dir}" if [ -n "${verbose}" ]; then mkarchiso -v -w "${work_dir}" -D "${install_dir}" pkglist mkarchiso -v -w "${work_dir}" -D "${install_dir}" ${gpg_key:+-g ${gpg_key}} prepare @@ -246,7 +256,7 @@ make_prepare() { mkarchiso -w "${work_dir}" -D "${install_dir}" ${gpg_key:+-g ${gpg_key}} prepare fi rm -rf "${work_dir}/airootfs" - # rm -rf "${work_dir}/x86_64/airootfs" (if low space, this helps) + # rm -rf "${work_dir}/${arch}/airootfs" (if low space, this helps) } # Build ISO @@ -265,6 +275,11 @@ if [[ ${EUID} -ne 0 ]]; then _usage 1 fi +if [[ ${arch} != x86_64 ]]; then + echo "This script needs to be run on x86_64" + _usage 1 +fi + while getopts 'N:V:L:P:A:D:w:o:g:vh' arg; do case "${arg}" in N) iso_name="${OPTARG}" ;; @@ -288,15 +303,33 @@ done mkdir -p "${work_dir}" run_once make_pacman_conf -run_once make_custom_airootfs -run_once make_packages -run_once make_setup_mkinitcpio -run_once make_customize_airootfs -run_once make_boot + +# Do all stuff for each airootfs +for arch in x86_64; do + run_once make_custom_airootfs + run_once make_packages +done + +run_once make_packages_efi + +for arch in x86_64; do + run_once make_setup_mkinitcpio + run_once make_customize_airootfs +done + +for arch in x86_64; do + run_once make_boot +done + +# Do all stuff for "iso" run_once make_boot_extra run_once make_syslinux run_once make_isolinux run_once make_efi run_once make_efiboot -run_once make_prepare + +for arch in x86_64; do + run_once make_prepare +done + run_once make_iso |