summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Delvare <jdelvare@suse.de>2012-10-25 17:42:46 +0200
committerJean Delvare <jdelvare@suse.de>2012-10-25 17:42:46 +0200
commit1f6fbf64d20d0d0b5dc04fa3f63f764e8c3a32ea (patch)
treea07718469c50dd08ef178df43c593b4adcdc0431
parent3fb88165288ecdfece7957cc57cdcd3bccebfd48 (diff)
downloadquilt-1f6fbf64d20d0d0b5dc04fa3f63f764e8c3a32ea.tar.gz
setup/inspect: Handle zip archives
Let quilt setup handle zip archives.
-rw-r--r--quilt.changes1
-rw-r--r--quilt/scripts/inspect.in28
-rw-r--r--quilt/setup.in23
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"