summaryrefslogtreecommitdiff
path: root/pcr/gmid/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/gmid/PKGBUILD')
-rw-r--r--pcr/gmid/PKGBUILD196
1 files changed, 196 insertions, 0 deletions
diff --git a/pcr/gmid/PKGBUILD b/pcr/gmid/PKGBUILD
new file mode 100644
index 000000000..2f21b17c9
--- /dev/null
+++ b/pcr/gmid/PKGBUILD
@@ -0,0 +1,196 @@
+# Maintainer (aur): Andrea Feletto <andrea at andreafeletto.com>
+# Maintainer: Wael Karram <wael at waelk.tech>
+# Contributor: bill-auger <bill-auger at programmer.net>
+
+
+# parabola changes and rationale:
+# - delete unlicensed files
+# - add openrc service files
+# - add support for armv7h and i686
+# - pin to strongly-coupled dependency versions
+
+
+pkgname=gmid
+pkgver=2.0.2
+pkgrel=1
+pkgdesc='Fast Gemini server written with security in mind.'
+arch=('x86_64')
+arch+=('i686' 'armv7h')
+url='https://gmid.omarpolo.com'
+license=('custom:ISC')
+install=${pkgname}.install
+backup=(etc/conf.d/${pkgname}
+ etc/${pkgname}.conf)
+depends=('libretls' 'libbsd')
+source=(
+ "https://ftp.omarpolo.com/$pkgname-$pkgver.tar.gz"
+ #"gmid.service" # parabola mksource over-ride
+ #"gmid.conf" # parabola mksource over-ride
+)
+sha256sums=(
+ '61baf50d3d1c86d4ce4fceea9e422a336db4259b76052bbc8eec1d47abb417c9'
+ # parabola mksource over-ride
+ # parabola mksource over-ride
+)
+
+
+# parabola mksource over-rides
+mksource=( ${source[*]} )
+mksha256sums=( ${sha256sums[*]} )
+source=(https://repo.parabola.nu/other/${pkgname}-libre/${pkgname}-${pkgver}.parabola.tar.gz{,.sig}
+ gmid.service
+ gmid.sysusers
+ gmid.confd
+ gmid.initd
+ gmid.conf
+ index.gmi)
+sha256sums=('d911214d0d4a75f0c9140d892afb3d2dac02c24f3e78cfdb60409afa0c155d3b'
+ 'SKIP'
+ '946de0766343225068a0e3f38cb39a4a93ef312525dd775226b938cd08706b94'
+ '4d943727a57dbf5f246963c0f90ccc54919cc2296538457e6b16f29f7580d9d6'
+ 'eddbe93741d01077426bc0239db42815c75a0da5191b4e6528df60ae3e0e5bb3'
+ 'f396c7db961c45ddb8e48acf42708b3faf9df2a3eaa56f30d9e64d4de0971e88'
+ '7acf491fee5f2693b30666b1f2c6eb0a4db33e9ef3154e1cbfb62186c6fa7be6'
+ '361cd4ef2b47437b0f5729d56d0ef88851e56812ab88546c82cda0092fe86139')
+validpgpkeys=('3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40') # bill-auger
+
+
+# NOTE: The files removed in mksource() are not always present.
+# They tend to disappear and re-appear.
+_MKSOURCE_ERR_FMT="ERROR: %s - mksource() was not applied or needs re-working - sources may contain non-free files"
+_NONFREE_FILES=( contrib )
+_PREV_NONFREE_FILES=( site )
+
+
+_version_constraint() # (dep_pkgname [precision])
+{
+ Log() { [[ "${FUNCNAME[2]}" == package ]] && echo "$@" >&2 || : ; }
+
+
+ local dep_pkgname=$1
+ declare -i req_precision=$2
+ local full_version=$(pacman -S --print-format='%v' ${dep_pkgname} 2> /dev/null | tail -n 1)
+ local n_dots=$(tmp=${full_version%-*} ; tmp=${tmp//[^\.]} ; echo "${#tmp}" ;)
+ local def_precision=$(( n_dots + 1 ))
+ local is_prec_valid=$(( req_precision > 0 && req_precision <= def_precision ))
+ local precision=$((( is_prec_valid )) && echo ${req_precision} || echo ${def_precision})
+ local pkgver_rx='[0-9A-Za-z_]+'
+ pkgver_rx=$(sed 's|\]|\+]|' <<<${pkgver_rx}) # according to the wiki, '+' is not allowed,
+ # but some pkgver have it (eg: 5.15.10+kde+r130)
+ local subver_rx='\.'${pkgver_rx}
+ local pkgrel_rx='[0-9]+'
+ local garbage_rx='[^0-9].*'
+ local capture_rx=${pkgver_rx}
+ for (( n_dots=1 ; n_dots < precision ; ++n_dots )) ; do capture_rx+=${subver_rx} ; done ;
+ local version pkgrel has_dot_char version_min version_max constraint_string
+ declare -i subver subver_inc pkgrel_inc
+
+ if [[ "${full_version}" =~ ^(${capture_rx})(${subver_rx})*-(${pkgrel_rx}).*$ ]]
+ then version=${BASH_REMATCH[1]} # pkgver cut to the requested precision
+ #unused=${BASH_REMATCH[2]} # discarded pkgver segments
+ pkgrel=${BASH_REMATCH[3]} # pkgrel with non-numerics right-trimmed
+ has_dot_char=$([[ "${version}" =~ \. ]] ; echo $(( ! $? )) ; )
+ subver=$(sed "s|${garbage_rx}||" <<<${version##*.}) # right-trim from any non-numeric
+ version=$( (( has_dot_char )) && echo ${version%.*}.${subver} || echo ${subver} )
+ subver_inc=$(( subver + 1 ))
+ pkgrel_inc=$(( pkgrel + 1 ))
+ version_min=$( (( ! is_prec_valid )) && echo ${full_version%-*}-${pkgrel} || \
+ echo ${version} )
+ version_max=$( ( (( ! is_prec_valid )) && echo ${full_version%-*}-${pkgrel_inc} ) || \
+ ( [[ "${version}" =~ \. ]] && echo ${version%.*}.${subver_inc} ) || \
+ echo ${subver_inc} )
+ constraint_string="${dep_pkgname}>=${version_min} ${dep_pkgname}<${version_max}"
+
+ Log "Applied version constraint: '${constraint_string}'"
+ else Log "ERROR: in _version_constraint() parsing: dep_pkgname='${dep_pkgname}' full_version='${full_version}'"
+ exit 1
+ fi
+
+ unset -f Log
+
+ echo -n "${constraint_string}"
+}
+
+
+mksource() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # Remove unlicensed files
+ local nonfree_file
+ local err_msgs=()
+ for nonfree_file in "${_NONFREE_FILES[@]}"
+ do
+ if [[ ! -e ${nonfree_file} ]]
+ then
+ err_msgs+=( "nonfree_file: '${nonfree_file}' does not exist" )
+ elif ! rm -r ${nonfree_file}
+ then
+ err_msgs+=( "cannot delete nonfree_file: '${nonfree_file}'" )
+ fi
+ done
+ for nonfree_file in "${_PREV_NONFREE_FILES[@]}"
+ do
+ if [[ -e ${nonfree_file} ]]
+ then
+ err_msgs+=( "previous nonfree_file: '${nonfree_file}' re-appeared" )
+ fi
+ done
+
+ # display error report
+ if (( ${#err_msgs} ))
+ then printf "${_MKSOURCE_ERR_FMT}" "${err_msgs[@]}"
+ return 1
+ fi
+}
+
+prepare() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # verify mksource treatment
+ local nonfree_file
+ local err_msgs=()
+ for nonfree_file in "${_NONFREE_FILES[@]}"
+ do
+ if [[ -d ${nonfree_file} ]]
+ then
+ err_msgs+=( "nonfree_file: '${nonfree_file}' found - deleting" )
+ rm -rf ${nonfree_file}
+ fi
+ done
+
+ # display error report
+ if (( ${#err_msgs} ))
+ then
+ printf "${_MKSOURCE_ERR_FMT/ERROR:\ /WARNING:\ }" "${err_msgs[@]}"
+ fi
+}
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ MANDIR='usr/share/man/' ./configure --prefix='usr/'
+ make
+}
+
+package() {
+ # pin to strongly-coupled dependency versions
+ depends=( ${depends[*]/libretls/} $(_version_constraint libretls 3) )
+
+ cd "$srcdir"
+
+ # Install the config and service files.
+ install -Dm644 gmid.service -t "$pkgdir/usr/lib/systemd/system"
+ install -Dm644 gmid.sysusers -t "$pkgdir/usr/lib/sysusers.d"
+ install -Dm644 gmid.confd "$pkgdir/etc/conf.d/gmid"
+ install -Dm755 gmid.initd "$pkgdir/etc/init.d/gmid"
+ install -Dm644 gmid.conf "$pkgdir/etc/gmid.conf"
+
+ # Install the program files.
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+
+ # Install the documentation files.
+ install -Dm644 LICENSE -t "$pkgdir/usr/share/licenses/$pkgname"
+ install -Dm644 README.md -t "$pkgdir/usr/share/doc/$pkgname"
+ install -Dm644 ../index.gmi "$pkgdir/usr/share/doc/$pkgname/index.gmi"
+}