3 # see the repack.stub for how to use
5 # TODO: provide example watch files and repack.locals
6 # TODO: test suite. problems fixed that need to be tested:
8 # * whitespace and then comments in the MANIFEST
9 # TODO: does / in weird places work? test suite too.
10 # TODO: I actually broke stuff with the MANIFEST change not thinking..
11 # TODO: allow for a sepearate (and multiple) MANIFEST files, then
12 # de-uglify libsyntax-highlight-engine-kate-perl.
13 # TODO: have each mv and rm check that something actually changed, and
20 echo "Usage: repack.sh --upstream-version <ver> <downloaded file>"
24 if [ "$#" != "3" ]; then
27 if [ "$1" != "--upstream-version" ]; then
30 if [ ! -f "$3" ]; then
32 echo "$3 doesn't exist"
38 PKG=`dpkg-parsechangelog|grep ^Source:|sed 's/^Source: //'`
43 echo "Repackaging $FILE"
46 DIR=`mktemp -d ./tmpRepackXXXXXX`
47 DIR=$(readlink -f "$DIR")
48 trap "/bin/rm -rf \"$DIR\"" QUIT INT EXIT
50 # Create an extra directory to cope with rootless tarballs
53 tar xf "$FILE" -C "$UP_BASE" || unzip "$FILE" -d "$UP_BASE"
55 if [ `ls -1 "$UP_BASE" | wc -l` -eq 1 ]; then
56 # Tarball does contain a root directory
57 UP_BASE="$UP_BASE/`ls -1 "$UP_BASE"`"
74 if [ "$MANIFEST" = "1" ]; then
75 PERM=$(stat --format=%a "MANIFEST")
79 if [ "$MANIFEST" = "1" ]; then
82 if ! { echo "$PATTERN" | grep -q "/$" ; }; then
86 PATTERN="${PATTERN}\s?"
88 grep -Ev "$PATTERN" "MANIFEST" > "$DIR/MANIFEST"
89 real_mv "$DIR/MANIFEST" "MANIFEST"
91 real_rm "$RM_OPTS" "$i"
93 if [ "$MANIFEST" = "1" ]; then
94 chmod $PERM "MANIFEST"
106 if [ "$MANIFEST" = "1" ]; then
107 echo "MANIFEST cannot be manipulated with mv yet, patches welcome"
113 # bump with incompatible changes
117 if [ $REPACK_VERSION -lt $1 ]; then
118 echo "repack.sh is not up to date enough for this package. you need at least version $1, while this script is only version $REPACK_VERSION"
128 . "$MYORIGPWD/debian/repack.local"
133 REPACK_DIR="$PKG-${VER}${SUFFIX}.orig" # DevRef ยง 6.7.8.2
134 DFSG_TAR="$(dirname $FILE)/${PKG}_${VER}${SUFFIX}.orig.tar"
136 real_mv "$UP_BASE" "$DIR/$REPACK_DIR"
139 FILETYPE=$(file --brief --mime-type --dereference "$FILE")
141 application/x-gzip|application/zip)
150 echo "E: Unknown filetye $FILETYPE"
155 # Using a pipe hides tar errors!
156 tar cfC "$DIR/repacked.tar" "$DIR" "$REPACK_DIR"
157 $C_PROGRAM -9 < "$DIR/repacked.tar" > "$DIR/repacked.tar.$C_SUFFIX"
159 real_mv "$DIR/repacked.tar.$C_SUFFIX" "$DFSG_TAR.$C_SUFFIX"
161 echo "*** $DFSG_TAR.$C_SUFFIX ready"