In case we have a git clone from Linux that is accessed via cygwin git the files executable status will be derived from the file content (shebang) and won't match the git repo, leading to a initially dirty tree. This can be worked around by setting "core.filemode=false", but let's try to match the cygwin permissions with the in-repo permissions so this isn't needed.
76 lines
1.6 KiB
Bash
Executable File
76 lines
1.6 KiB
Bash
Executable File
#!/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")"
|
|
if [ -d "pkg/${MINGW_PACKAGE_PREFIX}-ruby" ]; then
|
|
readonly _pkgdir="pkg/${MINGW_PACKAGE_PREFIX}-ruby${MINGW_PREFIX}/"
|
|
else
|
|
readonly _pkgdir="pkg/${MINGW_PACKAGE_PREFIX}-ruby${MINGW_PREFIX}/"
|
|
echo "${_pkgdir} does not exist. Build the package before running this script."
|
|
exit
|
|
fi
|
|
|
|
ruby_default() {
|
|
for f in ${_pkgdir}/lib/ruby/gems/*/specifications/default/*; do
|
|
if [ -f "$f" ]; then
|
|
echo $(basename ${f%.*}) | sed -r 's/(.*)-/\1=/'
|
|
fi
|
|
done
|
|
}
|
|
|
|
ruby_bundled() {
|
|
for f in ${_pkgdir}/lib/ruby/gems/*/cache//*; do
|
|
if [ -f "$f" ]; then
|
|
echo $(basename ${f%.*}) | sed -r 's/(.*)-/\1=/'
|
|
fi
|
|
done
|
|
}
|
|
|
|
usage() {
|
|
echo " Usage: $progname"
|
|
echo
|
|
echo " ruby and gawk (mingw-w64) needs to be installed"
|
|
echo
|
|
[[ "${1:-}" =~ ^[0-9]{1,3}$ ]] && exit $1
|
|
}
|
|
|
|
command -v gawk &>/dev/null || usage 1
|
|
|
|
declare -r tmpfile="$(mktemp)"
|
|
ruby_bundled \
|
|
| while IFS='' read -r line; do
|
|
echo "$line"
|
|
done | sort -f > "$tmpfile"
|
|
|
|
ruby_default \
|
|
| while IFS='' read -r line; do
|
|
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}-ruby-" line "\""
|
|
}
|
|
print ")"
|
|
next
|
|
}
|
|
s { next }
|
|
! s { print }
|
|
' "PKGBUILD~" > "PKGBUILD"
|
|
|
|
rm "$tmpfile"
|
|
|
|
# vim: set ts=4 sw=4 et ai:
|