You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mxe/tools/patch-tool-mxe

82 lines
2.2 KiB

#!/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 <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 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