summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rwxr-xr-xmake-sdist.sh10
2 files changed, 9 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index d23f08a7d..023ea5d5e 100644
--- a/Makefile
+++ b/Makefile
@@ -100,8 +100,6 @@ clean:
rm -rf tmp $(bins) $(mans) test configure *.tix .hpc $(sources) \
doc/.ikiwiki html dist $(clibs)
-# Workaround for `cabal sdist` requiring all included files to be listed
-# in .cabal.
sdist: clean $(mans)
./make-sdist.sh
diff --git a/make-sdist.sh b/make-sdist.sh
index 409871916..3222cad7e 100755
--- a/make-sdist.sh
+++ b/make-sdist.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+#
+# Workaround for `cabal sdist` requiring all included files to be listed
+# in .cabal.
# Create target directory
sdist_dir=git-annex-$(grep '^Version:' git-annex.cabal | sed -re 's/Version: *//')
@@ -6,8 +9,13 @@ mkdir --parents dist/$sdist_dir
find . \( -name .git -or -name dist -or -name cabal-dev \) -prune \
-or -not -name \\*.orig -not -type d -print \
-| perl -ne 'print unless length >= 100' \
+| perl -ne "print unless length >= 100 - length q{$sdist_dir}" \
| xargs cp --parents --target-directory dist/$sdist_dir
cd dist
tar -caf $sdist_dir.tar.gz $sdist_dir
+
+# Check that tarball can be unpacked by cabal.
+# It's picky about tar longlinks etc.
+rm -rf $sdist_dir
+cabal unpack $sdist_dir.tar.gz