From f013f2bc1b1b512c4a44a2046ccb1a2d76a489eb Mon Sep 17 00:00:00 2001 From: David P Date: Sat, 1 Aug 2020 15:15:21 -0400 Subject: sync baseline with archiso v46 Signed-off-by: David P --- configs/baseline/build.sh | 65 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 19 deletions(-) (limited to 'configs/baseline/build.sh') diff --git a/configs/baseline/build.sh b/configs/baseline/build.sh index c87abdf..7c117cb 100755 --- a/configs/baseline/build.sh +++ b/configs/baseline/build.sh @@ -1,16 +1,18 @@ -#!/bin/bash +#!/usr/bin/env bash +# +# SPDX-License-Identifier: GPL-3.0-or-later set -e -u iso_name=parabola iso_label="PARA_$(date +%Y%m)" iso_version=$(date +%Y.%m.%d) -install_dir=parabola +install_dir=para arch=$(uname -m) work_dir=work out_dir=out -script_path=$(readlink -f "${0%/*}") +script_path="$( cd -P "$( dirname "$(readlink -f "$0")" )" && pwd )" umask 0022 @@ -22,33 +24,57 @@ run_once() { fi } -# Base installation (airootfs) -make_basefs() { - mkparabolaiso -v -w "${work_dir}" -D "${install_dir}" init +# Setup custom pacman.conf with current cache directories. +make_pacman_conf() { + local _cache_dirs + _cache_dirs=("$(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')") + sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n "${_cache_dirs[@]}")|g" \ + "${script_path}/pacman.conf" > "${work_dir}/pacman.conf" } -# Copy mkinitcpio parabolaiso hooks and build initramfs (airootfs) -make_setup_mkinitcpio() { - mkdir -p "${work_dir}/airootfs/etc/initcpio/hooks" - mkdir -p "${work_dir}/airootfs/etc/initcpio/install" - cp /usr/lib/initcpio/hooks/parabolaiso "${work_dir}/airootfs/etc/initcpio/hooks" - cp /usr/lib/initcpio/install/parabolaiso "${work_dir}/airootfs/etc/initcpio/install" - cp "${script_path}/mkinitcpio.conf" "${work_dir}/airootfs/etc/mkinitcpio-parabolaiso.conf" - mkparabolaiso -v -w "${work_dir}" -D "${install_dir}" \ - -r 'mkinitcpio -c /etc/mkinitcpio-parabolaiso.conf -k /boot/vmlinuz-linux -g /boot/parabolaiso.img' run +# Prepare working directory and copy custom airootfs files (airootfs) +make_custom_airootfs() { + local _airootfs="${work_dir}/airootfs" + mkdir -p -- "${_airootfs}" + + if [[ -d "${script_path}/airootfs" ]]; then + cp -af --no-preserve=ownership -- "${script_path}/airootfs/." "${_airootfs}" + [[ -e "${_airootfs}/etc/shadow" ]] && chmod -f 0400 -- "${_airootfs}/etc/shadow" + [[ -e "${_airootfs}/etc/gshadow" ]] && chmod -f 0400 -- "${_airootfs}/etc/gshadow" + + # Set up user home directories and permissions + if [[ -e "${_airootfs}/etc/passwd" ]]; then + while IFS=':' read -a passwd -r; do + [[ "${passwd[5]}" == '/' ]] && continue + + if [[ -d "${_airootfs}${passwd[5]}" ]]; then + chown -hR -- "${passwd[2]}:${passwd[3]}" "${_airootfs}${passwd[5]}" + chmod -f 0750 -- "${_airootfs}${passwd[5]}" + else + install -d -m 0750 -o "${passwd[2]}" -g "${passwd[3]}" -- "${_airootfs}${passwd[5]}" + fi + done < "${_airootfs}/etc/passwd" + fi + fi +} + +# Packages (airootfs) +make_packages() { + mkparabolaiso -v -w "${work_dir}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \ + -p "$(grep -h -v '^#' "${script_path}/packages.both"| sed ':a;N;$!ba;s/\n/ /g')" install } # Prepare ${install_dir}/boot/ make_boot() { mkdir -p "${work_dir}/iso/${install_dir}/boot/${arch}" cp "${work_dir}/airootfs/boot/parabolaiso.img" "${work_dir}/iso/${install_dir}/boot/${arch}/parabolaiso.img" - cp "${work_dir}/airootfs/boot/vmlinuz-linux" "${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz" + cp "${work_dir}/airootfs/boot/vmlinuz-linux-libre" "${work_dir}/iso/${install_dir}/boot/${arch}/" } # Prepare /${install_dir}/boot/syslinux make_syslinux() { mkdir -p "${work_dir}/iso/${install_dir}/boot/syslinux" - sed "s|%PARABOLAISO_LABEL%|${iso_label}|g; + sed "s|%parabolaiso_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g" "${script_path}/syslinux/syslinux.cfg" > \ "${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg" @@ -78,8 +104,9 @@ make_iso() { "${iso_name}-${iso_version}-${arch}.iso" } -run_once make_basefs -run_once make_setup_mkinitcpio +run_once make_custom_airootfs +run_once make_pacman_conf +run_once make_packages run_once make_boot run_once make_syslinux run_once make_isolinux -- cgit v1.2.2