diff options
-rwxr-xr-x | configs/releng/build.sh | 129 | ||||
-rw-r--r-- | configs/releng/packages.both | 92 | ||||
-rw-r--r-- | configs/releng/packages.i686 | 0 | ||||
-rw-r--r-- | configs/releng/packages.x86_64 | 92 |
4 files changed, 173 insertions, 140 deletions
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 diff --git a/configs/releng/packages.both b/configs/releng/packages.both new file mode 100644 index 0000000..1cfd724 --- /dev/null +++ b/configs/releng/packages.both @@ -0,0 +1,92 @@ +amd-ucode +arch-install-scripts +b43-fwcutter +base +bind-tools +broadcom-wl +btrfs-progs +clonezilla +crda +darkhttpd +ddrescue +dhclient +dhcpcd +diffutils +dmraid +dnsmasq +dosfstools +efibootmgr +ethtool +exfat-utils +f2fs-tools +fsarchiver +gnu-netcat +gpm +gptfdisk +grml-zsh-config +haveged +hdparm +intel-ucode +ipw2100-fw +ipw2200-fw +irssi +iwd +jfsutils +kitty-terminfo +lftp +linux +linux-atm +linux-firmware +lsscsi +lvm2 +lynx +man-db +man-pages +mc +mdadm +memtest86+ +mkinitcpio +mkinitcpio-nfs-utils +mtools +nano +nbd +ndisc6 +nfs-utils +nilfs-utils +nmap +ntfs-3g +nvme-cli +openconnect +openssh +openvpn +partclone +parted +partimage +ppp +pptpclient +reflector +reiserfsprogs +rp-pppoe +rsync +rxvt-unicode-terminfo +sdparm +sg3_utils +smartmontools +sudo +syslinux +systemd-resolvconf +tcpdump +terminus-font +termite-terminfo +testdisk +usb_modeswitch +usbutils +vim +vpnc +wireless-regdb +wireless_tools +wpa_supplicant +wvdial +xfsprogs +xl2tpd +zsh diff --git a/configs/releng/packages.i686 b/configs/releng/packages.i686 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/configs/releng/packages.i686 diff --git a/configs/releng/packages.x86_64 b/configs/releng/packages.x86_64 index 1cfd724..e69de29 100644 --- a/configs/releng/packages.x86_64 +++ b/configs/releng/packages.x86_64 @@ -1,92 +0,0 @@ -amd-ucode -arch-install-scripts -b43-fwcutter -base -bind-tools -broadcom-wl -btrfs-progs -clonezilla -crda -darkhttpd -ddrescue -dhclient -dhcpcd -diffutils -dmraid -dnsmasq -dosfstools -efibootmgr -ethtool -exfat-utils -f2fs-tools -fsarchiver -gnu-netcat -gpm -gptfdisk -grml-zsh-config -haveged -hdparm -intel-ucode -ipw2100-fw -ipw2200-fw -irssi -iwd -jfsutils -kitty-terminfo -lftp -linux -linux-atm -linux-firmware -lsscsi -lvm2 -lynx -man-db -man-pages -mc -mdadm -memtest86+ -mkinitcpio -mkinitcpio-nfs-utils -mtools -nano -nbd -ndisc6 -nfs-utils -nilfs-utils -nmap -ntfs-3g -nvme-cli -openconnect -openssh -openvpn -partclone -parted -partimage -ppp -pptpclient -reflector -reiserfsprogs -rp-pppoe -rsync -rxvt-unicode-terminfo -sdparm -sg3_utils -smartmontools -sudo -syslinux -systemd-resolvconf -tcpdump -terminus-font -termite-terminfo -testdisk -usb_modeswitch -usbutils -vim -vpnc -wireless-regdb -wireless_tools -wpa_supplicant -wvdial -xfsprogs -xl2tpd -zsh |