summaryrefslogtreecommitdiffstats
path: root/tools/patch-tool-mxe
diff options
context:
space:
mode:
authorVolker Grabsch <vog@notjusthosting.com>2012-03-28 13:46:58 (GMT)
committerVolker Grabsch <vog@notjusthosting.com>2012-03-28 13:46:58 (GMT)
commitdefdff28f077c8e860ca36b99b840b0bf942fe55 (patch)
treeb92443a7944899ab42576a3df5a7c4be137b8222 /tools/patch-tool-mxe
parentfe1012be45901c7344497eabe7440ff0e1c22578 (diff)
downloadmxe-defdff28f077c8e860ca36b99b840b0bf942fe55.zip
mxe-defdff28f077c8e860ca36b99b840b0bf942fe55.tar.gz
mxe-defdff28f077c8e860ca36b99b840b0bf942fe55.tar.bz2
Rebrand to new project name MXE
Diffstat (limited to 'tools/patch-tool-mxe')
-rwxr-xr-xtools/patch-tool-mxe81
1 files changed, 81 insertions, 0 deletions
diff --git a/tools/patch-tool-mxe b/tools/patch-tool-mxe
new file mode 100755
index 0000000..342380f
--- /dev/null
+++ b/tools/patch-tool-mxe
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+# Tool for converting between MXE patch files and git repos
+# Imports and exports patch files in "git format-patch" format.
+
+cmd=$1
+pkg=$2
+
+# MXE directory
+mxedir=~/mxe
+
+# directory for unpacked tarballs/git repos
+gitsdir=~/gits
+
+
+# John Doe <John Doe@acme.org>
+author=`git var GIT_AUTHOR_IDENT | sed 's/^\(.* [<].*[>]\).*$/\1/'`
+
+pkg_version=`grep '^$(PKG)_VERSION' $mxedir/src/$pkg.mk | \
+ sed 's/.*:= \(.*\)/\1/'`
+
+pkg_short_version=`echo $pkg_version | sed s/'\(.*\)\.[^.]*$'/'\1'/`
+
+pkg_subdir=`grep '^$(PKG)_SUBDIR' $mxedir/src/$pkg.mk | \
+ sed 's/.*:= \(.*\)/\1/' | \
+ sed s/'$($(PKG)_VERSION)'/$pkg_version/ | \
+ sed s/'$(call SHORT_PKG_VERSION,$(PKG))'/$pkg_short_version/ | \
+ sed s/'$(PKG)'/$pkg/;`
+
+pkg_file=`grep '^$(PKG)_FILE' $mxedir/src/$pkg.mk | \
+ sed 's/.*:= \(.*\)/\1/' | \
+ sed s/'$($(PKG)_VERSION)'/$pkg_version/ | \
+ sed s/'$(call SHORT_PKG_VERSION,$(PKG))'/$pkg_short_version/ | \
+ sed s/'$($(PKG)_SUBDIR)'/$pkg_subdir/ | \
+ sed s/'$(PKG)'/$pkg/;`
+
+#echo $pkg
+#echo $pkg_version
+#echo $pkg_subdir
+#echo $pkg_file
+
+# init
+function init_git {
+ cd $gitsdir
+ echo $pkg_file | grep "\.tar\.gz" >> /dev/null && tar xf $mxedir/pkg/$pkg_file
+ echo $pkg_file | grep "\.tar\.bz2" >> /dev/null && tar xf $mxedir/pkg/$pkg_file
+ echo $pkg_file | grep "\.tar\.xz" >> /dev/null && xz -dc $mxedir/pkg/$pkg_file | tar xf -
+ echo $pkg_file | grep "\.zip" >> /dev/null && unzip $mxedir/pkg/$pkg_file >> /dev/null
+ cd $gitsdir/$pkg_subdir && \
+ (git init; git add -A; git commit -m "init") > /dev/null
+ git tag dist
+}
+
+function export_patch {
+ cd $gitsdir/$pkg_subdir && \
+ (
+ echo 'This file is part of MXE.'
+ echo 'See doc/index.html for further information.'
+ echo ''
+ echo 'Contains ad hoc patches for cross building.'
+ echo ''
+ git format-patch -p --stdout dist..HEAD | \
+ sed 's/^From: .*/From: MXE/g;'
+ ) > $mxedir/src/$pkg-1-fixes.patch
+}
+
+function import_patch {
+ cd $gitsdir/$pkg_subdir && \
+ cat $mxedir/src/$pkg-1-fixes.patch | \
+ sed '/^From/,$ !d' | \
+ sed s/'^From: .*'/"From: $author"/'g;' | \
+ git am --keep-cr
+}
+
+if [ "$cmd" == "init" ]; then
+ init_git $pkg
+elif [ "$cmd" == "import" ]; then
+ import_patch $pkg
+elif [ "$cmd" == "export" ]; then
+ export_patch $pkg
+fi