chiark / gitweb /
absurd/git Do not fail to import certain weird .dscs
[dgit.git] / absurd / git
index 039bbf0c6a95033a7f470d5218b3c7667fbeba87..7d3ff941ff4be7079b48fea6ec38f07a8663701a 100755 (executable)
@@ -1,8 +1,19 @@
 #!/bin/sh
 set -e
 
+case "$DGIT_ABSURD_DEBUG" in
+''|0)  exec 3>/dev/null ;;
+1)     exec 3>>../../gbp-pq-output ;;
+*)     exec 3>>../../gbp-pq-output 2>&3 ;;
+esac
+
+log () {
+       echo >&3 "DGIT ABSURD GIT APPLY (DEBUG)  $*"
+       echo >&2 "DGIT ABSURD GIT APPLY (STDERR) $*"
+}
+
 fail () {
-       echo >&2 "DGIT ABSURD GIT APPLY - FAILED: $*"
+       log "FAILED: $*"
        exit 127
 }
 
@@ -23,10 +34,16 @@ done
 
 if $bypass; then
        PATH=$npath
+       echo >&3 "DGIT ABSURD GIT APPLY - BYPASS: $*"
        exec git "$@"
 fi
 
-echo >&2 "DGIT ABSURD GIT APPLY - NO BYPASS: $*"
+log "NO BYPASS: $*"
+
+case "$DGIT_ABSURD_DEBUG" in
+''|0|1) ;;
+*)     set -x ;;
+esac
 
 #exec >/dev/tty 2>&1
 
@@ -39,6 +56,9 @@ for arg in "$@"; do
                index=1
                continue
                ;;
+       1.--whitespace=fix)
+               continue
+               ;;
        ?.-*)
                fail "UNKNOWN OPTION $arg ($*)"
                ;;
@@ -58,13 +78,30 @@ fi
 
 pwd=`pwd`
 patch=${patch#$pwd/debian/patches/}
-printf "%s\n" "$patch" >debian/patches/series
+rm -f debian/patches/series
+
+# Work around #848611.
+# We need a stunt filename which the source package must not
+# contain.  A trick is to use the commit hash of HEAD, whose
+# hash value cannot appear in any file in its own tree.
+omgwtf="dgit-omg-wtf-$(git rev-parse HEAD)"
+cat <<END >debian/patches/$omgwtf
+---
+--- a/$omgwtf  2016-10-31 23:28:47.314155919 +0000
++++ b/$omgwtf  2016-12-18 22:40:01.870058270 +0000
+@@ -0,0 +1 @@
++:
+END
+printf "%s\n" "$omgwtf" >debian/patches/series
+printf "%s\n" "$patch" >>debian/patches/series
 
 dpkg-source --before-build .
 
+rm -f $omgwtf debian/patches/$omgwtf
+
 rm -rf .pc
 git checkout debian/patches/series
 git add -Af .
 
-echo >&2 "DGIT ABSURD GIT APPLY - APPLIED $patch"
+log "APPLIED $patch"
 #printf 'APPLIED '; date --iso-8601=ns