| #!/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: |