#!/usr/bin/env 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 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 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