priority -50 # # General snippets # snippet maint "Maintainer tag" i `#!/usr/bin/env bash echo "# Maintainer:" $(cat /etc/makepkg.conf $XDG_CONFIG_HOME/pacman/makepkg.conf 2>/dev/null | grep -oP '^PACKAGER="\K[^"]+') ` endsnippet snippet base "Metadata" i pkgname=$1 pkgver=${2:1} pkgrel=${3:1} pkgdesc='$4' arch=(${5:'any'}) url='$6' license=('$7') depends=('$8') makedepends=('$9') checkdepends=('$10') optdepends=('$11') options=('!lto') source=("$pkgname::git+$12") b2sums=('SKIP') endsnippet snippet prep "prepare" i prepare() { cd "$pkgname" $1 } endsnippet snippet patch "patch files" i `#!/usr/bin/env bash source PKGBUILD for s in "${source[@]}"; do if [[ "$s" == *".patch"* ]]; then printf "patch --strip=1 --input=\"\$srcdir/%s\"\n" "${s%::*}" fi done ` endsnippet snippet ver "pkgver" i pkgver() { cd "$pkgname"$1 git describe --tags | sed 's/^v//' git describe --tags | sed -e 's/^v//' -e 's/-/.r/' -e 's/-/./g' printf 'r%s.g%s' "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" } endsnippet snippet build "build" i build() { cd "$pkgname" $1 } endsnippet snippet chk "check" i check() { cd "$pkgname" $1 } endsnippet snippet pkg "package" i package() { cd "$pkgname" $1 } endsnippet snippet pkgbin "Package binary" i # binary install -vDm755 -t "$pkgdir/usr/bin" $1 endsnippet snippet pkgdoc "Package documentation" i # documentation install -vDm644 -t "$pkgdir/usr/share/doc/$pkgname" $1 endsnippet snippet pkglic "Package license" i # license install -vDm644 -t "$pkgdir/usr/share/licenses/$pkgname" $1 endsnippet # # Go specific # snippet prepgo "Prepare (Go)" i # create directory for build output mkdir build # download dependencies go mod download endsnippet snippet buildgo "Build (Go)" i # set Go flags export CGO_CPPFLAGS="${CPPFLAGS}" export CGO_CFLAGS="${CFLAGS}" export CGO_CXXFLAGS="${CXXFLAGS}" go build -v \ -trimpath \ -buildmode=pie \ -mod=readonly \ -modcacherw \ -ldflags "-linkmode external -extldflags ${LDFLAGS}" \ -o build \ . endsnippet snippet chkgo "Check (Go)" i go test -v ./... endsnippet # # Rust specific # snippet preprs "Prepare (Rust)" i # download dependencies cargo fetch --locked --target "$CARCH-unknown-linux-gnu" endsnippet snippet buildrs "Build (Rust)" i cargo build --frozen --release --all-features endsnippet snippet chkrs "Check (Rust)" i cargo test --frozen --all-features endsnippet snippet pkgrs "Package (Rust)" i # binary install -vDm755 -t "$pkgdir/usr/bin" "target/release/$pkgname" endsnippet # # Common Lisp specific # snippet clname "Package Name (Common Lisp)" i _pkgname="${pkgname#cl-}" endsnippet snippet vercl "Version (Common Lisp)" i # first known commit to receive latest version local _pkgver='$1' local _pkgcommit='$2' git tag "$_pkgver" "$_pkgcommit" git describe --tags | sed -e 's/^v//' -e 's/-/.r/' -e 's/-/./g' endsnippet snippet chkcl "Check (Common Lisp)" i sbcl --script ../run-tests.lisp endsnippet snippet pkgcl "Package (Common Lisp)" i # library install -vDm644 -t "$pkgdir/usr/share/common-lisp/source/$_pkgname" ./*.{lisp,asd} find . -mindepth 1 -maxdepth 1 -type d -not -name '.git' -exec cp -vr -t "$pkgdir/usr/share/common-lisp/source/$_pkgname" {} \+ cp -vr \ directories \ files ./*.asd \ "$pkgdir/usr/share/common-lisp/source/$_pkgname" endsnippet # vim: tabstop=2 shiftwidth=2 expandtab