Mercurial > mxe-octave
view tools/patch-tool-mxe @ 3851:c55d9f182272
use MXE_XXXX tools for octave qt compiling (Bug 44563)
* Makefile.in: add cross/native MXE_UIC,MOC,LRELEASE,RCC variables where missing
* src/octave.mk, src/default-octave.mk, src/stable-octave.mk: use MXE_XXX qt tools
author | John Donoghue |
---|---|
date | Tue, 17 Mar 2015 16:03:03 -0400 |
parents | a681265e116f |
children |
line wrap: on
line source
#!/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 setupEnv() { # MXE directory export mxedir=$(cd $(dirname $0) && cd .. && pwd) # directory for unpacked tarballs/git repos export gitsdir=${mxedir}/gits mkdir -p ${gitsdir} # John Doe <John Doe@acme.org> export author=`git var GIT_AUTHOR_IDENT | sed 's/^\(.* [<].*[>]\).*$/\1/'` export pkg_version=$(sed -n "s/^.* id=\"${pkg}-version\">\([^<]*\)<.*$/\1/p" "${mxedir}/index.html") export pkg_short_version=`echo $pkg_version | sed s/'\(.*\)\.[^.]*$'/'\1'/` export 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/;` export 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 { setupEnv cd $gitsdir if [ -d $gitsdir/$pkg_subdir ]; then echo "Error: $gitsdir/$pkg_subdir already exists. Cancelling init." >&2 exit 1 fi echo "Checking for cached $pkg_file" if [ ! -f $mxedir/pkg/$pkg_file ]; then make -C "$mxedir" download-$pkg echo "Building the mxe Makefile target 'download-$pkg' to get missing file" if [ ! $? -eq 0 ]; then echo "Could not build target download-$pkg - cancelling init." >&2 exit 1 fi fi echo "Unpacking archive..." 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 echo "Initializing repo and adding all as first commit" cd $gitsdir/$pkg_subdir && \ (git init; git add -A; git commit -m "init") > /dev/null echo "Creating 'dist' tag for distribution tarball state" git tag dist echo "Repository ready in $gitsdir/$pkg_subdir" } function export_patch { setupEnv if [ ! -d $gitsdir/$pkg_subdir ]; then echo "Error: $gitsdir/$pkg_subdir does not exist, so cannot export patches. Cancelling export." >&2 exit 1 fi 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 && \ echo "Generated $mxedir/src/$pkg-1-fixes.patch" } function import_patch { setupEnv if [ ! -d $gitsdir/$pkg_subdir ]; then echo "Error: $gitsdir/$pkg_subdir does not exist, so cannot import patches. Cancelling import - try 'init' first." >&2 exit 1 fi if [ -f $mxedir/src/$pkg-1-fixes.patch ]; then cd $gitsdir/$pkg_subdir && \ cat $mxedir/src/$pkg-1-fixes.patch | \ sed '/^From/,$ !d' | \ sed s/'^From: .*'/"From: $author"/'g;' | \ git am --keep-cr && \ echo "Imported $mxedir/src/$pkg-1-fixes.patch" else echo "patch-tool managed file $mxedir/src/$pkg-1-fixes.patch not found. Cancelling import." >&2 exit 1 fi } case "$cmd" in init) init_git $pkg ;; import) import_patch $pkg ;; export) export_patch $pkg ;; *) echo "Unrecognized command '${cmd}'" >&2 cat <<EOS Usage: $0 COMMAND PACKAGENAME where COMMAND is one of: init - create a git directory for the package with the raw source import - apply the "pkgname-1-fixes.patch" patch commits export - create/replace the "pkgname-1-fixes.patch" patch with a patch of all commits since init. EOS exit 1 ;; esac