diff --git a/abr/APKBUILD b/abr/APKBUILD new file mode 100644 index 0000000..29d0159 --- /dev/null +++ b/abr/APKBUILD @@ -0,0 +1,45 @@ +# Maintainer: psykose +pkgname=abr +pkgver=1 +pkgrel=0 +pkgdesc="abr~!" +url="https://git.ddd.rip/ptrcnull/aports" +arch="noarch" +license="ISC" +# chrt, ionice +depends=" + abuild + util-linux-misc + " +checkdepends=" + shellcheck + shfmt + " +source=" + abr + apkbuild-anitya + " +builddir="$srcdir" +options="!check" # manual + +check() { + shellcheck -s sh . + shfmt \ + --diff \ + --simplify \ + --posix \ + --indent 3 \ + --space-redirects \ + --binary-next-line \ + . +} + +package() { + install -Dm755 abr apkbuild-anitya \ + -t "$pkgdir"/usr/bin/ +} + +sha512sums=" +1a01d9a9cc3fd29622c803193e7b60c4c5855a65db786cb5d826fdd03a2ab071baff70a6bf01d7cd82e2c638a0691700e7810dca070b30071a0ad4066bc73b13 abr +71d8cb1e5e57ff739915fa4de1f5699afa60ab36e2e5219c4c366af5ceab24dc6ee55e738d29ca2b63dd5e387de7661594fc86bf2183d787932e75b4c03c6a9f apkbuild-anitya +" diff --git a/abr/abr b/abr/abr new file mode 100755 index 0000000..6ed42ad --- /dev/null +++ b/abr/abr @@ -0,0 +1,104 @@ +#!/bin/sh -e + +# clean self and do not pass through any environment +# except env, because it doesn't matter too much for this specific purpose +# and a few that are useful to keep some cache paths +if [ -z "$_CLEAN" ]; then + exec env -i \ + _CLEAN=1 \ + CARGO_HOME="$CARGO_HOME" \ + GNUPGHOME="$GNUPGHOME" \ + GOCACHE="$GOCACHE" \ + GOMODCACHE="$GOMODCACHE" \ + GOPATH="$GOPATH" \ + GOTMPDIR="$GOTMPDIR" \ + HOME="$HOME" \ + PATH="$PATH" \ + XDG_CACHE_HOME="$XDG_CACHE_HOME" \ + XDG_CONFIG_HOME="$XDG_CONFIG_HOME" \ + "$0" "$@" +fi + +while getopts "j:fmnx" opt; do + case "$opt" in + 'j') + jobs="$OPTARG" + export JOBS="$jobs" + export MAKEFLAGS="-j$jobs" + export SAMUFLAGS="-j$jobs" + export CARGO_BUILD_JOBS="$jobs" + ;; + 'f') + # also run checksum/checkapk + full=1 + ;; + 'm') + # don't set LD_PRELOAD for another alloc + # since i set this normally, this unexports it. + # XXX: funnily, any extra alloc breaks gjs-based testsuites (why?) + nomemhack=1 + unset LD_PRELOAD + ;; + 'n') + nonice=1 + ;; + 'x') + # skip checks + export ABUILD_BOOTSTRAP=1 + ;; + *) + echo "invalid argument passed" + ;; + esac +done + +shift "$((OPTIND - 1))" + +# loop again to check if rootbld +for arg; do + if eltest "${arg:-x}" =~ "rootbld"; then + # not available in rootbld + nosccache=1 + fi +done + +if [ -z "$nosccache" ]; then + export RUSTC_WRAPPER=sccache +fi + +if [ -z "$nomemhack" ]; then + extra="scudo-malloc" + export LD_PRELOAD="/usr/lib/libscudo.so" +fi + +if [ -z "$nonice" ]; then + # max bg idle + # note that there is no nice here, + # but nice is mostly useless with modern linux process groups. + # (and this is in its' own by virtue of a new terminal) + nicewrap="chrt -i 0 ionice -c 2 -n 7" +fi + +root="$(git rev-parse --show-toplevel)" + +if [ -n "$root" ]; then + # abuild cannot detect the root dir to get .rootbld-repositories + # to work, unless the dir has aports in git remotes or is ~/aports + # ... + export APORTSDIR="$root" +fi + +export EXTRADEPENDS_BUILD="$extra pigz xz" + +if [ -n "$full" ]; then + abuild checksum +fi + +$nicewrap abuild -fr "$@" + +if [ -n "$full" ]; then + checkapk + abuild sanitycheck + apkbuild-shellcheck + apkbuild-anitya +fi diff --git a/abr/apkbuild-anitya b/abr/apkbuild-anitya new file mode 100755 index 0000000..4687f7d --- /dev/null +++ b/abr/apkbuild-anitya @@ -0,0 +1,10 @@ +#!/bin/sh + +. APKBUILD +items="$(curl -s "https://release-monitoring.org/api/v2/packages/?name=$pkgname&distribution=Alpine" | jq .total_items)" + +if [ "$items" = 0 ]; then + echo "Package $pkgname is not tracked by Anitya." + echo "Add it here: https://release-monitoring.org/" + exit 1 +fi