59 lines
2.0 KiB
Bash
59 lines
2.0 KiB
Bash
|
#!/bin/bash
|
||
|
# Usage:
|
||
|
# ./otp-get-patches.sh /path/to/otp OTP_R14B01 fedora-R14B01
|
||
|
#
|
||
|
# Note:
|
||
|
# We do NOT update erlang.spec or the git index at all.
|
||
|
# For now, take a look at the patch-list-*.txt files
|
||
|
# generated in the tmpdir manually copy and adapt them
|
||
|
# to erlang.spec. Then handle the otp-*.patch files:
|
||
|
#
|
||
|
# git rm -f otp-00*.patch
|
||
|
# mv tmp.foobar/otp-00*.patch .
|
||
|
# git add otp-00*.patch
|
||
|
#
|
||
|
# We could only automate this if we added the required patch
|
||
|
# specific spec file conditionals to the commit message somehow,
|
||
|
# and then had this script transfer the conditionals into erlang.spec.
|
||
|
|
||
|
otp_dir="${1:?'Fatal: otp git repo dir required'}"
|
||
|
otp_upstream="${2:?'Fatal: git ref to upstream release required'}"
|
||
|
otp_fedora="${3:?'Fatal: git ref to branch with fedora patches required'}"
|
||
|
|
||
|
set -e
|
||
|
# set -x
|
||
|
|
||
|
tmpdir="$(mktemp -d --tmpdir="$PWD")"
|
||
|
|
||
|
pushd "$otp_dir"
|
||
|
git format-patch -o "$tmpdir" "${otp_upstream}..${otp_fedora}" > "$tmpdir/patch-list.txt"
|
||
|
popd
|
||
|
|
||
|
test -s "$tmpdir/patch-list.txt"
|
||
|
|
||
|
echo "# start of autogenerated patch tag list" > "$tmpdir/patch-list-tags.txt"
|
||
|
echo "# start of autogenerated prep patch list" > "$tmpdir/patch-list-prep.txt"
|
||
|
n=1
|
||
|
while read patch
|
||
|
do
|
||
|
otppatch="$(dirname "$patch")/otp-$(basename "$patch")"
|
||
|
mv -f "$patch" "$otppatch"
|
||
|
echo "Patch$n: $(basename "$otppatch")" >> "$tmpdir/patch-list-tags.txt"
|
||
|
base="$(basename "$patch" ".patch" | sed 's/^00[0-9][0-9]-//')"
|
||
|
backupext=".$(echo -n "$base" | tr -c -s '[:alnum:]' '_')"
|
||
|
echo "%patch$n -p1 -b ${backupext}" >> "$tmpdir/patch-list-prep.txt"
|
||
|
n=$(($n + 1))
|
||
|
done < "$tmpdir/patch-list.txt"
|
||
|
echo "# end of autogenerated patch tag list" >> "$tmpdir/patch-list-tags.txt"
|
||
|
echo "# end of autogenerated prep patch list" >> "$tmpdir/patch-list-prep.txt"
|
||
|
|
||
|
echo "Results in tmp dir \`$tmpdir':"
|
||
|
echo
|
||
|
cat "$tmpdir/patch-list-tags.txt"
|
||
|
echo
|
||
|
cat "$tmpdir/patch-list-prep.txt"
|
||
|
|
||
|
echo
|
||
|
echo "Run \`rm -rf \"$(basename "$tmpdir")\"' when you are finished with the files."
|
||
|
# End of file.
|