summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2024-05-02 21:10:32 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2024-05-02 23:16:43 -0400
commit9941568309750655393c5d97031f535995253761 (patch)
tree8a54d9bf5a69644eb530e3d1d53c2b4765f0b5a2
parent19908fe4d282a0bd9055f3d7b721a7e0ec333250 (diff)
scripts/package-all-parabola-base: create chroots if needed - refactorwip-parabola-base
-rwxr-xr-xscripts/package-all-parabola-base110
1 files changed, 65 insertions, 45 deletions
diff --git a/scripts/package-all-parabola-base b/scripts/package-all-parabola-base
index a1532b559..b4925ce96 100755
--- a/scripts/package-all-parabola-base
+++ b/scripts/package-all-parabola-base
@@ -1,11 +1,15 @@
#!/bin/bash
+# package-all-parabola-base - rebuild all parabola standard system meta-packages
# SPDX-License-Identifier: CC0-1.0
readonly ABSLIBRE_DIR=/var/lib/archbuild/abslibre
-readonly SYSTEMD_CHROOT=x64
-readonly NONSYSTEMD_CHROOT=x64-nonsystemd
+declare -rA CHROOTS=(
+ [systemd]=64 # meta-packages in [libre] will be built in this chroot
+ [nonsystemd]=64-nonsystemd # meta-packages in [nonsystemd] will be built in this chroot
+)
+readonly PACMAN_CONF=/usr/share/pacman/defaults/pacman.conf.x86_64
readonly PKG_DIRS=(
nonsystemd/your-init-freedom
@@ -26,46 +30,62 @@ readonly PKG_DIRS=(
)
-echo "cleaning and upgrading chroots"
-for chroot in ${SYSTEMD_CHROOT} ${NONSYSTEMD_CHROOT}
-do sudo librechroot -n ${chroot} clean-pkgs &&
- sudo librechroot -n ${chroot} update ||
- ! echo "upgrading chroot '${chroot}' failed" || exit 1
-done
-
-for pkg_dir in ${PKG_DIRS[*]}
-do cd ${ABSLIBRE_DIR}/${pkg_dir}
-
- # determine pkgname, current pkgver and pkgrel, and next pkgver and pkgrel
- pkgname=$( source PKGBUILD ; echo ${pkgname} ;)
- abs_pkgver=$(source PKGBUILD ; echo ${pkgver}-${pkgrel} ;)
- repo_pkgver=$(pacman -S ${pkg_dir} --print-format='%r/%n %v' 2> /dev/null | grep ${pkg_dir} | cut -d' ' -f2)
- pkgver=$(date +%Y%m%d)
- pkgrel=$([[ ${abs_pkgver%-*} == ${pkgver} ]] && echo $((${abs_pkgver%-*} + 1)) || echo 1)
- abs_pkgver=${pkgver}-${pkgrel}
-
- # sanity checks
- echo -e "\n${pkg_dir} comparing versions: abs_pkgver=${abs_pkgver} repo_pkgver=${repo_pkgver}"
- [[ -z "${repo_pkgver}" ]] && echo "${pkg_dir} package is not in the repos"
- [[ "${abs_pkgver}" =~ [^-]-[^-] ]] && echo "${pkg_dir} invalid PKGBUILD" && continue
- [[ "${abs_pkgver}" == "${repo_pkgver}" ]] && echo "${pkg_dir} package is in the repos" && continue
- [[ -f ${pkgname}-${abs_pkgver}-any.pkg.tar.zst ]] && echo "${pkg_dir} package is built" && continue
-
- echo "\n${pkg_dir} starting build" # ; continue ;
- if [[ "${pkg_dir}" =~ ^nonsystemd/ ]]
- then # Clean nonsystemd chroot before packaging 'init-displaymanager' dependents.
- # Otherwise, `chcleanup` will fail:
- # :: removing *dm-openrc breaks dependency 'init-displaymanager' required by parabola-desktop
- [[ "${pkg_dir}" =~ ^nonsystemd/parabola-desktop-(gnome|kde|lxde|mate)$ ]] &&
- sudo librechroot -n ${NONSYSTEMD_CHROOT} clean-pkgs &&
- sudo libremakepkg -n ${NONSYSTEMD_CHROOT} || ! echo "${pkg_dir} failed" || exit 1
- else sudo libremakepkg -n ${SYSTEMD_CHROOT} || ! echo "${pkg_dir} failed" || exit 1
- fi
-done
-
-echo "all packages built successfully - staging ...."
-for pkg_dir in ${PKG_DIRS[*]}
-do cd ${ABSLIBRE_DIR}/${pkg_dir}
- librestage $(dirname ${ABSLIBRE_DIR}/${pkg_dir})-testing
-done
-librerelease -l
+Init()
+{
+ echo "creating, cleaning, and/or upgrading chroots"
+ sed 'N ; s|#\(\[nonsystemd\]\n\)#\(Include =.*\)|\1\2|' ${PACMAN_CONF} > ${PACMAN_CONF}.nonsystemd
+ sudo librechroot -n ${CHROOTS[systemd]} -C ${PACMAN_CONF} &&
+ sudo librechroot -n ${CHROOTS[nonsystemd]} -C ${PACMAN_CONF}.nonsystemd ||
+ ! echo "creating chroots failed" || exit 1
+ for chroot in ${CHROOTS[*]}
+ do sudo librechroot -n ${chroot} clean-pkgs &&
+ sudo librechroot -n ${chroot} update ||
+ ! echo "upgrading chroot '${chroot}' failed" || exit 1
+ done
+}
+
+Package()
+{
+ for pkg_dir in ${PKG_DIRS[*]}
+ do cd ${ABSLIBRE_DIR}/${pkg_dir}
+
+ # determine pkgname, current pkgver and pkgrel, and next pkgver and pkgrel
+ pkgname=$( source PKGBUILD ; echo ${pkgname} ;)
+ abs_pkgver=$(source PKGBUILD ; echo ${pkgver}-${pkgrel} ;)
+ repo_pkgver=$(pacman -S ${pkg_dir} --print-format='%r/%n %v' 2> /dev/null | grep ${pkg_dir} | cut -d' ' -f2)
+ pkgver=$(date +%Y%m%d)
+ pkgrel=$([[ ${abs_pkgver%-*} == ${pkgver} ]] && echo $((${abs_pkgver%-*} + 1)) || echo 1)
+ abs_pkgver=${pkgver}-${pkgrel}
+
+ # sanity checks
+ echo -e "\n${pkg_dir} comparing versions: abs_pkgver=${abs_pkgver} repo_pkgver=${repo_pkgver}"
+ [[ -z "${repo_pkgver}" ]] && echo "${pkg_dir} package is not in the repos"
+ [[ "${pkgname}" == "${pkg_dir/*\//}" ]] && echo "${pkg_dir} invalid PKGBUILD" && continue
+ [[ "${abs_pkgver}" =~ [^-]-[^-] ]] && echo "${pkg_dir} invalid PKGBUILD" && continue
+ [[ "${abs_pkgver}" == "${repo_pkgver}" ]] && echo "${pkg_dir} package is in the repos" && continue
+ [[ -f ${pkgname}-${abs_pkgver}-any.pkg.tar.zst ]] && echo "${pkg_dir} package is built" && continue
+
+ # inject pkgver and pkgrel
+ sed -i "s|^pkgver=.*|pkgver=${pkgver}| ; s|^pkgrel=.*|pkgrel=${pkgrel}|" PKGBUILD
+
+ echo "\n${pkg_dir} - starting build"
+ chroot=${CHROOTS[${pkg_dir%/*}]}
+ sudo librechroot -n ${chroot} clean-pkgs &&
+ sudo libremakepkg -n ${chroot} || ! echo "${pkg_dir} - build failed" || exit 1
+ done
+}
+
+Publish()
+{
+ echo "all packages built successfully - staging ...."
+ for pkg_dir in ${PKG_DIRS[*]}
+ do cd ${ABSLIBRE_DIR}/${pkg_dir}
+ librestage $(dirname ${ABSLIBRE_DIR}/${pkg_dir})-testing
+ done
+ librerelease -l
+}
+
+
+Init &&
+Package &&
+Publish