blob: 1a22e5dbbffbedeefd67f0091d5e06e7cf1ceffb [file] [log] [blame] [edit]
#!/bin/bash
set -o errexit
set -o errtrace
set -o pipefail
set -o nounset
readonly progpath="$(realpath "$0")"
readonly progname="$(basename "$progpath")"
readonly progdir="$(dirname "$progpath")"
perl_corelist() {
PATH="${prefix}/bin:${prefix}/bin/core_perl" corelist -v "$1" \
| dos2unix \
| tail -n+3 \
| awk '{
if ( $1 !~ /^\s*$/ ) {
gsub(/::/, "-", $1)
if ( $2 !~ /^\s*$/ ) {
printf "perl-%s=%s\n", $1, $2
} else {
printf "perl-%s\n", $1
}
}
}'
}
usage() {
echo " Usage: $progname <PKGBUILD> [<perl version>]"
echo
echo " Perl and gawk (mingw-w64) needs to be installed"
echo
[[ "${1:-}" =~ ^[0-9]{1,3}$ ]] && exit $1
}
pkgbuild="${1:-}"
[[ -f "$pkgbuild" ]] || usage 1
if [[ -n "${MINGW_PREFIX:-}" ]]; then
if [[ -x "${MINGW_PREFIX}/bin/perl" ]]; then
prefix="${MINGW_PREFIX}"
fi
elif [[ -x "/mingw64/bin/perl" ]]; then
prefix="/mingw64"
elif [[ -x "/mingw32/bin/perl" ]]; then
prefix="/mingw32"
fi
[[ -n "${prefix:-}" ]] || usage 1
command -v gawk &>/dev/null || usage 1
version="${2:-}"
if [[ -n "$version" ]]; then
[[ "$version" =~ ^[1-9][0-9]*(\.[0-9]+)*$ ]] || usage 1
else
[[ "$("${prefix}/bin/perl" -V:version)" =~ ^version=\'(.*)\'\; ]]
version="${BASH_REMATCH[1]}"
fi
declare -r tmpfile="$(mktemp)"
perl_corelist "$version" \
| while IFS='' read -r line; do
if [[ "$line" =~ ^perl-[[:alnum:]_\-]+=(v?[0-9_\.]+)$ ]]; then
ver="$(perl -Mversion -le 'print version->parse("'"${BASH_REMATCH[1]}"'")->normal;')"
line="${line/%"${BASH_REMATCH[1]}"/"${ver#"v"}"}"
fi
echo "${line,,}"
done \
| sort -f > "$tmpfile"
mv "$pkgbuild" "$pkgbuild~"
gawk '
/^provides=/ { s = 1 }
s && /)/ {
s = 0
print "provides=("
while ( (getline line < "'"$tmpfile"'") > 0 ) {
print " \"${MINGW_PACKAGE_PREFIX}-" line "\""
}
print ")"
next
}
s { next }
! s { print }
' "$pkgbuild~" > "$pkgbuild"
rm "$tmpfile"
# vim: set ts=4 sw=4 et ai: