diff options
author | Jean Delvare <jdelvare@suse.de> | 2012-10-25 17:42:46 +0200 |
---|---|---|
committer | Jean Delvare <jdelvare@suse.de> | 2012-10-25 17:42:46 +0200 |
commit | 1f6fbf64d20d0d0b5dc04fa3f63f764e8c3a32ea (patch) | |
tree | a07718469c50dd08ef178df43c593b4adcdc0431 | |
parent | 3fb88165288ecdfece7957cc57cdcd3bccebfd48 (diff) | |
download | quilt-1f6fbf64d20d0d0b5dc04fa3f63f764e8c3a32ea.tar.gz |
setup/inspect: Handle zip archives
Let quilt setup handle zip archives.
-rw-r--r-- | quilt.changes | 1 | ||||
-rw-r--r-- | quilt/scripts/inspect.in | 28 | ||||
-rw-r--r-- | quilt/setup.in | 23 |
3 files changed, 50 insertions, 2 deletions
diff --git a/quilt.changes b/quilt.changes index b79597e..e9401b7 100644 --- a/quilt.changes +++ b/quilt.changes @@ -4,6 +4,7 @@ Thu Oct 25 15:05:42 CEST 2012 - jdelvare@suse.de - setup: Check for existing files after unpacking, not before. - setup: Try alternative patches/series names. - setup: Run create_db(). +- setup/inspect: Handle zip archives. ------------------------------------------------------------------- Thu Oct 25 15:05:10 CEST 2012 - jdelvare@suse.de diff --git a/quilt/scripts/inspect.in b/quilt/scripts/inspect.in index 7bc4ad5..172e418 100644 --- a/quilt/scripts/inspect.in +++ b/quilt/scripts/inspect.in @@ -251,6 +251,21 @@ cat <<-'EOF' > $tmpdir/bin/wrapper esac } + unzip_input_file() { + while [ $# -gt 0 ]; do + case "$1" in + -*) + shift + ;; + *) + echo "$1" + return + ;; + esac + done + return 1 + } + tar_opt_C() { case "$1" in *C*f*) @@ -270,6 +285,9 @@ cat <<-'EOF' > $tmpdir/bin/wrapper # For tar, file - means read from stdin [ "$inputfile" = "-" ] && inputfile= ;; + unzip) + inputfile=$(unzip_input_file "$@") + ;; esac if [ -z "$inputfile" ]; then # put data from stdin into tmpfile @@ -309,6 +327,14 @@ cat <<-'EOF' > $tmpdir/bin/wrapper dir=${dir// /\\ } echo "${0##*/} ${dir:-.} $unpackfile" >&3 ;; + unzip) + echo -n Z >&4 + dir=$PWD + dir=${dir/$RPM_BUILD_DIR} + dir=${dir##/} + dir=${dir// /\\ } + echo "${0##*/} ${dir:-.} $unpackfile" >&3 + ;; esac fi @@ -333,6 +359,7 @@ fi ln -s wrapper $tmpdir/bin/patch ln -s wrapper $tmpdir/bin/tar +ln -s wrapper $tmpdir/bin/unzip # let rpm do all the dirty specfile stuff ... echo -n "### rpmbuild: " >&4 @@ -343,6 +370,7 @@ rpmbuild --eval "%define _sourcedir $sourcedir" \ --eval "%define _builddir $tmpdir/build" \ --eval "%define __patch $tmpdir/bin/patch" \ --eval "%define __tar $tmpdir/bin/tar" \ + --eval "%define __unzip $tmpdir/bin/unzip" \ --eval "$DEFINE_FUZZ" \ --nodeps \ -bp "$specdir/$specfile" < /dev/null >&5 2>&5 diff --git a/quilt/setup.in b/quilt/setup.in index 712de90..6714e60 100644 --- a/quilt/setup.in +++ b/quilt/setup.in @@ -167,7 +167,15 @@ case "$1" in "# Source: "*) shift 2 source="$@" - echo "tar ${tar_dir:-.} ${source// /\\ }" + filetype="$(file -b "$source")" + case "$filetype" in + Zip*) + echo "unzip ${tar_dir:-.} ${source// /\\ }" + ;; + *) + echo "tar ${tar_dir:-.} ${source// /\\ }" + ;; + esac ;; "# Patchdir: "*) shift 2 @@ -198,6 +206,17 @@ do cat_file "$tarball" \ | tar xf - -C "$prefix$dir" ;; + unzip) + tarball=$sourcedir$arg1 + if [ ! -e "$tarball" ] + then + printf $"File %s not found\n" "$tarball" >&2 + exit 1 + fi + printf $"Unpacking archive %s\n" "$tarball" + mkdir -p "${prefix:-.}" "$prefix$dir" + unzip -qqo "$tarball" -d "$prefix$dir" + ;; esac done < $tmpfile @@ -212,7 +231,7 @@ fi while read tag dir arg1 arg2 do case "$tag" in - tar) + tar|unzip) tar_dir="$dir" [ "$tar_dir" = . ] && tar_dir= tar_file="$arg1" |