#!/bin/sh prog=makepkgmeta lazysource() { awk -v prog="$prog" ' BEGIN { FS = "\n"; RS = ""; OFS = ORS = "\n\n" } $1 == "pkgver" { ver = $2 } $1 == "source" { len = NF - 1 for (i = 2; i <= NF; i++) sources[i - 1] = $i next } 1 # print everything but sources END { # remember that metas emit no output when they cant match # a package. if (NR == 0 || !ver) exit 2 ORS="\n" # Replace any version strings in the source file with ${pkgver}. gsub(/[.]/, "\\\\&", ver) print "source" for(i = 1; i <= len; i++) { gsub(ver, "${pkgver}", sources[i]) print sources[i] } print "" }' return $? } # end of lazysource() basicmeta() { printf "pkgname\n%s\n\n" "$1" printf "pkgrel\n%d\n\n" "${PKGREL:-1}" printf "packager\n%s\n\n" "${PACKAGER:-Anonymous}" if [ "$MAINTAINER" ] then printf "maintainer\n%s\n\n" "$MAINTAINER" fi } case $# in 0) echo "Usage: $prog [pkgname]" 1>&2 exit 1 esac case "$METABIN" in '') echo "$prog: set METABIN before calling $prog" 1>&2 exit 2 esac for flav in "$METABIN"/* do [ -f "$flav" -a -x "$flav" ] || continue PATH="$PATH:$flav.d" "$flav" $1 >PKGMETA.tmp metaret=$? case $metaret in 0) basicmeta $1 lazysource &2 exit 1 ;; 2) ;; # loop *) echo "makepkgmeta: $flav returned error code $metaret" 1>&2 exit 1 ;; esac done echo "makepkgmeta: no matching meta generator found for '$1'" 1>&2 exit 1