aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rwxr-xr-xgen-branch19
-rwxr-xr-xgen-build-list5
-rwxr-xr-xxbps-mini-builder73
4 files changed, 63 insertions, 37 deletions
diff --git a/README.md b/README.md
index ea86d33..cd58676 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,9 @@ other tasks are handled for you!
repository will have broken permissions.
- To build restricted packages, you must add `XBPS_ALLOW_RESTRICTED=yes` to
`xbps-src.conf`
+- To create a `packages.list` from a list of branches modify and run
+ `gen-branch` to create a new branch, then `gen-build-list` to create
+ the file.
## Troubleshooting
diff --git a/gen-branch b/gen-branch
new file mode 100755
index 0000000..1875263
--- /dev/null
+++ b/gen-branch
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+BRANCH_NAME="feature/extra"
+branches=$(echo user/luca/{distribution,dotnet,gotestsum,gotosocial,heisenbridge-1.14.6,hyprlock,matterbridge,nas,poezio-omemo,prose-app-web,swayr,today,vermin,wlrobs,swirc,youtube-tui})
+
+git branch --delete --force "${BRANCH_NAME}"
+git checkout -b "${BRANCH_NAME}"
+
+for branch in ${branches}
+do
+ # git rebase ${branch} || exit 1
+ tmp_name="tmp/${branch}"
+ git checkout "${branch}"
+ git checkout -b "${tmp_name}"
+ git rebase master
+ git checkout "${BRANCH_NAME}"
+ git rebase "${tmp_name}"
+ git branch --delete --force "${tmp_name}"
+done
diff --git a/gen-build-list b/gen-build-list
new file mode 100755
index 0000000..fe208ce
--- /dev/null
+++ b/gen-build-list
@@ -0,0 +1,5 @@
+#!/usr/bin/env sh
+
+templates=$(git diff --name-only master feature/extra | rg 'srcpkgs/.*/template' | sed 's#srcpkgs/\(.*\)/template#\1#g')
+
+./xbps-src sort-dependencies ${templates} > packages.list
diff --git a/xbps-mini-builder b/xbps-mini-builder
index 72cd850..df1e5b6 100755
--- a/xbps-mini-builder
+++ b/xbps-mini-builder
@@ -1,33 +1,38 @@
#!/bin/sh
+PRIVATE_KEY="$(realpath "./private.pem")"
+BRANCH="$(git rev-parse --abbrev-ref "HEAD")"
+SIGNED_BY="Luca Matei Pintilie <luca@lucamatei.com>"
+HOST_XBPS_ARCH="x86_64"
+
# Jump to the directory that owns this script
cd "${0%/*}" || exit 1
# Do we have keys to sign with?
-if [ ! -f id_rsa ] ; then
- rm -rf id_rsa id_rsa.pub
- ssh-keygen -b 4096 -t rsa -m PEM -N "" -f id_rsa
+if [ ! -f "${PRIVATE_KEY}" ] ; then
+ rm -rf "${PRIVATE_KEY}" "${PRIVATE_KEY}".pub
+ ssh-keygen -b 4096 -t rsa -m PEM -N "" -f "${PRIVATE_KEY}"
fi
# Remove old state
-rm -f changed
+# rm -f changed
# Create the void-packages directory if it doesn't exit
-mkdir -p void-packages
-cd void-packages || exit 2
+# mkdir -p void-packages
+# cd void-packages || exit 2
# Do we actually have the repo yet?
-if [ ! -d srcpkgs ] ; then
- # No, clone a fresh copy
- git clone https://github.com/void-linux/void-packages .
+# if [ ! -d srcpkgs ] ; then
+# # No, clone a fresh copy
+# git clone https://github.com/void-linux/void-packages .
- # On bootstrap we need to build everything
- cp ../packages.list ../changed
-else
- # Yes, pull in the changes for this run
- git reset --hard HEAD
- git pull | tee ../changed
-fi
+# # On bootstrap we need to build everything
+# cp ../packages.list ../changed
+# else
+# # Yes, pull in the changes for this run
+# git reset --hard HEAD
+# git pull | tee ../changed
+# fi
# Does this system use another set of repos
if [ -d /etc/xbps.d ] ; then
@@ -45,41 +50,35 @@ if [ -d /etc/xbps.d ] ; then
fi
# Do we have a live build environment
-if [ ! -d masterdir ] ; then
+if [ ! -d masterdir-"${HOST_XBPS_ARCH}" ] ; then
# No masterdir, go ahead and bootstrap it
- ./xbps-src binary-bootstrap
+ ./xbps-src -A "${HOST_XBPS_ARCH}" binary-bootstrap
else
# Have a masterdir, keep it up to date
- ./xbps-src bootstrap-update
-fi
-
-# Apply provided config file if it exists
-if [ -f ../xbps-src.conf ] ; then
- cat ../xbps-src.conf >> etc/conf
+ ./xbps-src -A "${HOST_XBPS_ARCH}" bootstrap-update
fi
if [ -z "$@" ] ; then
while read -r package ; do
- if grep "${package}" ../changed; then
- ./xbps-src pkg "${package}"
- fi
- done < ../packages.list
+ ./xbps-src -QKsgEA "${HOST_XBPS_ARCH}" pkg "${package}"
+ done < ./packages.list
else
for pkg in "$@"; do
- ./xbps-src pkg "${pkg}"
+ ./xbps-src -QKsgEA "${HOST_XBPS_ARCH}" pkg "${pkg}"
done
fi
# Sign built packages
-xbps-rindex --sign --signedby "XBPS-mini-builder" --privkey ../id_rsa hostdir/binpkgs
-xbps-rindex --sign-pkg --privkey ../id_rsa hostdir/binpkgs/*.xbps
+xbps-rindex --sign --signedby "${SIGNED_BY}" --privkey "${PRIVATE_KEY}" "hostdir/binpkgs/${BRANCH}"
+xbps-rindex --sign-pkg --privkey "private.pem" "hostdir/binpkgs/${BRANCH}/"*.xbps
-for folder in multilib multilib/nonfree nonfree ; do
- printf "Trying to sign packages in %s\\n" ${folder}
+for folder in debug multilib multilib/nonfree nonfree ; do
+ _folder="${BRANCH}/${folder}"
+ printf "Trying to sign packages in %s\\n" ${_folder}
if [ -d "hostdir/binpkgs/${folder}" ] ; then
- printf "Updating repodata in hostdir/binpkgs/%s\\n" ${folder}
- xbps-rindex --sign --signedby "XBPS-mini-builder" --privkey ../id_rsa "hostdir/binpkgs/${folder}/"
- printf "Signing packages in hostdir/binpkgs/%s\\n" ${folder}
- xbps-rindex --sign-pkg --privkey ../id_rsa hostdir/binpkgs/${folder}/*.xbps
+ printf "Updating repodata in hostdir/binpkgs/%s\\n" ${_folder}
+ xbps-rindex --sign --signedby "${SIGNED_BY}" --privkey "${PRIVATE_KEY}" "hostdir/binpkgs/${_folder}/"
+ printf "Signing packages in hostdir/binpkgs/%s\\n" ${_folder}
+ xbps-rindex --sign-pkg --privkey "${PRIVATE_KEY}" "hostdir/binpkgs/${_folder}"/*.xbps
fi
done