summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Ulrich Niedermann <hun@n-dimensional.de>2010-12-15 16:51:07 +0100
committerHans Ulrich Niedermann <hun@n-dimensional.de>2010-12-15 17:13:14 +0100
commit757e49bf92e2ea10c3c7a3df7d35dd255d4dd5d4 (patch)
tree682fd38fc4126339777a017d6c2fc061775e8d56
parent792c90c13ef5c5d273e8d716a677b5a7b09c1b93 (diff)
downloaderlang-757e49bf92e2ea10c3c7a3df7d35dd255d4dd5d4.tar.gz
erlang-757e49bf92e2ea10c3c7a3df7d35dd255d4dd5d4.tar.xz
erlang-757e49bf92e2ea10c3c7a3df7d35dd255d4dd5d4.zip
Add otp-get-patches.sh
otp-get-patches.sh automatically extracts the patches from an otp git repo and prepares them for inclusion into erlang.spec and the Fedora erlang package git repo. This still requires some manual work, though.
-rw-r--r--erlang.spec11
-rwxr-xr-xotp-get-patches.sh58
2 files changed, 69 insertions, 0 deletions
diff --git a/erlang.spec b/erlang.spec
index 441cb67..fc2281e 100644
--- a/erlang.spec
+++ b/erlang.spec
@@ -30,6 +30,17 @@ Source2: http://erlang.org/download/otp_doc_man_%{upstream_ver}%{upstream_rel}.t
%endif
# For the source of the Fedora specific patches, see the respective
# branch at https://github.com/lemenkov/otp
+#
+# Run something like
+# $ git clone git://github.com/erlang/otp.git
+# $ cd otp
+# $ git remote add lemenkov git://github.com/lemenkov/otp.git
+# $ git fetch -v --all
+# to get yourself a copy of the Erlang/OTP source code with the
+# Fedora specific patches from Peter Lemenkov. Then run
+# $ ./otp-get-patches.sh /path/to/otp OTP_R14B01 lemenkov/fedora-R14B01
+# for some semi-automatic patch update assistance.
+#
# Fedora-specific
Patch1: otp-0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch
# Fedora-specific
diff --git a/otp-get-patches.sh b/otp-get-patches.sh
new file mode 100755
index 0000000..076752b
--- /dev/null
+++ b/otp-get-patches.sh
@@ -0,0 +1,58 @@
+#!/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.