summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Delvare <jdelvare@suse.de>2015-01-24 21:32:09 +0100
committerJean Delvare <jdelvare@suse.de>2015-01-24 21:32:09 +0100
commit1df59abaac2978b31a4d8a189e157c1bacc84860 (patch)
treeffaea8782ed1662b43b87f3f0082d5f705b2bf60
parentc55c1993ffee5d137ff40fcab0f59520ddcb00bf (diff)
downloadquilt-1df59abaac2978b31a4d8a189e157c1bacc84860.tar.gz
setup: Merge inspect into setup
There is no good reason for the setup command to be split into two scripts, setup and inspect. Merge inspect into setup to save the extra interfacing overhead. Performance improvement reaches 5% on simple packages.
-rw-r--r--Makefile.in6
-rw-r--r--quilt/scripts/inspect.in185
-rw-r--r--quilt/setup.in151
3 files changed, 142 insertions, 200 deletions
diff --git a/Makefile.in b/Makefile.in
index 4bd6d30..4feddcd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -78,8 +78,8 @@ QUILT := $(QUILT_IN)
SRC += $(QUILT_SRC:%=quilt/%)
DIRT += $(QUILT_IN:%=quilt/%)
-SCRIPTS_IN := patchfns inspect inspect-wrapper dependency-graph \
- edmail remove-trailing-ws backup-files
+SCRIPTS_IN := patchfns inspect-wrapper dependency-graph edmail \
+ remove-trailing-ws backup-files
SCRIPTS_SRC := $(SCRIPTS_IN:%=%.in)
SCRIPTS := $(SCRIPTS_IN)
@@ -390,7 +390,7 @@ test/.depend : Makefile $(TESTS)
-e 's:quilt/graph:quilt/graph quilt/scripts/dependency-graph:' \
-e 's:quilt/mail:quilt/mail quilt/scripts/edmail:' \
-e 's:quilt/refresh:quilt/refresh quilt/scripts/remove-trailing-ws:' \
- -e 's:quilt/setup:quilt/setup quilt/scripts/inspect quilt/scripts/inspect-wrapper:' \
+ -e 's:quilt/setup:quilt/setup quilt/scripts/inspect-wrapper:' \
> $@
ifneq ($(shell . $(QUILTRC) ; echo $$QUILT_PATCHES_PREFIX),)
diff --git a/quilt/scripts/inspect.in b/quilt/scripts/inspect.in
deleted file mode 100644
index 3f1ce89..0000000
--- a/quilt/scripts/inspect.in
+++ /dev/null
@@ -1,185 +0,0 @@
-#! @BASH@
-
-# This script is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# See the COPYING and AUTHORS files for more details.
-
-: ${QUILT_DIR=@QUILT_DIR@}
-
-# Version check is irrelevant to this script.
-skip_version_check=1
-
-if ! [ -r $QUILT_DIR/scripts/patchfns ]
-then
- echo "Cannot read library $QUILT_DIR/scripts/patchfns" >&2
- exit 1
-fi
-. $QUILT_DIR/scripts/patchfns
-cd ${SUBDIR:-.}
-
-usage()
-{
- echo "Usage: ${0##*/} [-v] [--sourcedir dir] [--targetdir dir] [--fuzz=N] specfile"
- exit 1
-}
-
-options=$(getopt -o v --long sourcedir:,targetdir:,fuzz: -n "${0##*/}" -- "$@") || exit
-
-eval set -- "$options"
-
-sourcedir=
-
-while true
-do
- case "$1" in
- -v)
- verbose=1
- shift ;;
- --sourcedir)
- sourcedir=${2%/}/
- shift 2 ;;
- --targetdir)
- targetdir=$2
- shift 2 ;;
- --fuzz)
- # Only works with rpm 4.6 and later
- DEFINE_FUZZ="%define _default_patch_fuzz $2"
- shift 2 ;;
- --)
- shift
- break ;;
- esac
-done
-
-[ "${sourcedir:0:1}" = / ] || sourcedir=$PWD/$sourcedir
-
-specfile=$1
-if [ $# -ne 1 -o ! -f "$specfile" ]
-then
- usage
-fi
-if [ "${specfile:0:1}" = / ]
-then
- specdir=$(dirname "$specfile")
- specfile=${specfile##*/}
-else
- specdir=$PWD
-fi
-
-tmpdir=$(gen_tempfile -d ${VARTMPDIR:-/var/tmp}/${0##*/})
-mkdir -p $tmpdir || exit 1
-add_exit_handler "rm -rf $tmpdir"
-mkdir -p $tmpdir/bin
-if [ -n "$targetdir" ]
-then
- # Fast mode
- [ -d "$targetdir" ] || mkdir -p "$targetdir" || exit 1
- ln -s "$targetdir" $tmpdir/build
-else
- # Standard mode
- mkdir -p $tmpdir/build
-fi
-
-# Redirect file descriptors
-# 5 is used in verbose mode, 4 in non-verbose mode, and 2 for both (real errors)
-if [ -n "$verbose" ]
-then
- exec 3>&1 5>&2 4>/dev/null
-else
- exec 3>&1 4>&2 5>/dev/null
-fi
-
-# create md5 sums, also for uncompressed files
-echo -n "### md5sum: " >&4
-shopt -s nullglob
-for file in $sourcedir/*
-do
- basename=${file##*/}
- case "$basename" in
- ready|bigpack|_constraints|_service|baselibs.conf|MD5SUMS|MD5SUMS.meta|*.spec|*.changes|*.sig|*.sign|*rpmlintrc)
- continue
- ;;
- # In fast mode, we are only interested in patches, so filter out
- # archives
- *.tar|*.tar.Z|*.tar.gz|*.tgz|*.tar.bz2|*.tar.xz|*.zip)
- [ -n "$targetdir" ] && continue
- ;;
- esac
- [ -f "$file" ] || continue
- echo -n "." >&4
- echo "md5sum < $file" >&5
- set -- $(md5sum < "$file")
- echo "$1 $basename"
-
- case "$file" in
- *.lzma)
- # file doesn't reliably recognize lzma-compressed files
- filetype="lzma"
- ;;
- *.xz)
- # old versions of file don't know about xz-compressed
- # files
- filetype="xz"
- ;;
- *)
- filetype=$(file -b "$file")
- ;;
- esac
-
- case "$filetype" in
- compress*|gzip*)
- echo -n "g" >&4
- echo "gzip -cd $file | md5sum" >&5
- set -- $(gzip -cd "$file" | md5sum)
- echo "$1 $basename"
- ;;
- bzip2*)
- echo -n "b" >&4
- echo "bzip2 -cd $file | md5sum" >&5
- set -- $(bzip2 -cd "$file" | md5sum)
- echo "$1 $basename"
- ;;
- xz*|XZ*)
- echo -n "x" >&4
- echo "xz -cd $file | md5sum" >&5
- set -- $(xz -cd "$file" | md5sum)
- echo "$1 $basename"
- ;;
- lzma*)
- echo -n "l" >&4
- echo "lzma -cd $file | md5sum" >&5
- set -- $(lzma -cd "$file" | md5sum)
- echo "$1 $basename"
- ;;
- esac
-done > $tmpdir/md5sums
-echo >&4
-shopt -u nullglob
-
-ln -s $QUILT_DIR/scripts/inspect-wrapper $tmpdir/bin/patch
-ln -s $QUILT_DIR/scripts/inspect-wrapper $tmpdir/bin/tar
-ln -s $QUILT_DIR/scripts/inspect-wrapper $tmpdir/bin/unzip
-
-# let rpm do all the dirty specfile stuff ...
-echo -n "### rpmbuild: " >&4
-
-export PATH="$tmpdir/bin:$PATH"
-export QUILT_SETUP_FAST=${targetdir:+1}
-rpmbuild --eval "%define _sourcedir $sourcedir" \
- --eval "%define _specdir $specdir" \
- --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
-status=$?
-echo >&4
-exit $status
-### Local Variables:
-### mode: shell-script
-### End:
-# vim:filetype=sh
diff --git a/quilt/setup.in b/quilt/setup.in
index ddb1f00..b87c967 100644
--- a/quilt/setup.in
+++ b/quilt/setup.in
@@ -124,6 +124,141 @@ dir_to_dir()
echo "$to"
}
+# create md5 sums, also for uncompressed files
+create_md5sums()
+{
+ local sourcedir=$1 output=$2
+ local file basename filetype
+
+ echo -n "### md5sum: " >&4
+ shopt -s nullglob
+ for file in "$sourcedir"*
+ do
+ basename=${file##*/}
+ case "$basename" in
+ ready|bigpack|_constraints|_service|baselibs.conf|MD5SUMS|MD5SUMS.meta|*.spec|*.changes|*.sig|*.sign|*rpmlintrc)
+ continue
+ ;;
+ # In fast mode, we are only interested in patches, so filter out
+ # archives
+ *.tar|*.tar.Z|*.tar.gz|*.tgz|*.tar.bz2|*.tar.xz|*.zip)
+ [ -n "$targetdir" ] && continue
+ ;;
+ esac
+ [ -f "$file" ] || continue
+ echo -n "." >&4
+ echo "md5sum < $file" >&5
+ set -- $(md5sum < "$file")
+ echo "$1 $basename"
+
+ case "$file" in
+ *.lzma)
+ # file doesn't reliably recognize lzma-compressed files
+ filetype="lzma"
+ ;;
+ *.xz)
+ # old versions of file don't know about xz-compressed
+ # files
+ filetype="xz"
+ ;;
+ *)
+ filetype=$(file -b "$file")
+ ;;
+ esac
+
+ case "$filetype" in
+ compress*|gzip*)
+ echo -n "g" >&4
+ echo "gzip -cd $file | md5sum" >&5
+ set -- $(gzip -cd "$file" | md5sum)
+ echo "$1 $basename"
+ ;;
+ bzip2*)
+ echo -n "b" >&4
+ echo "bzip2 -cd $file | md5sum" >&5
+ set -- $(bzip2 -cd "$file" | md5sum)
+ echo "$1 $basename"
+ ;;
+ xz*|XZ*)
+ echo -n "x" >&4
+ echo "xz -cd $file | md5sum" >&5
+ set -- $(xz -cd "$file" | md5sum)
+ echo "$1 $basename"
+ ;;
+ lzma*)
+ echo -n "l" >&4
+ echo "lzma -cd $file | md5sum" >&5
+ set -- $(lzma -cd "$file" | md5sum)
+ echo "$1 $basename"
+ ;;
+ esac
+ done > $output
+ echo >&4
+ shopt -u nullglob
+}
+
+# Uses global variables: verbose, sourcedir, targetdir
+inspect()
+{
+ local specfile=$1 specdir
+ local abs_sourcedir=$sourcedir tmpdir
+
+ [ "${abs_sourcedir:0:1}" = / ] || abs_sourcedir=$PWD/$abs_sourcedir
+
+ if [ "${specfile:0:1}" = / ]
+ then
+ specdir=$(dirname "$specfile")
+ specfile=${spec_file##*/}
+ else
+ specdir=$PWD
+ fi
+
+ tmpdir=$(gen_tempfile -d ${VARTMPDIR:-/var/tmp}/${0##*/})
+ mkdir -p $tmpdir || exit 1
+ add_exit_handler "rm -rf $tmpdir"
+ mkdir -p $tmpdir/bin
+ ln -s $QUILT_DIR/scripts/inspect-wrapper $tmpdir/bin/patch
+ ln -s $QUILT_DIR/scripts/inspect-wrapper $tmpdir/bin/tar
+ ln -s $QUILT_DIR/scripts/inspect-wrapper $tmpdir/bin/unzip
+ if [ -n "$targetdir" ]
+ then
+ # Fast mode
+ [ -d "$targetdir" ] || mkdir -p "$targetdir" || exit 1
+ ln -s "$targetdir" $tmpdir/build
+ else
+ # Standard mode
+ mkdir -p $tmpdir/build
+ fi
+
+ # Redirect file descriptors
+ # 5 is used in verbose mode, 4 in non-verbose mode, and 2 for both (real errors)
+ if [ -n "$verbose" ]
+ then
+ exec 3>&1 5>&2 4>/dev/null
+ else
+ exec 3>&1 4>&2 5>/dev/null
+ fi
+
+ create_md5sums "$sourcedir" $tmpdir/md5sums
+
+ # let rpm do all the dirty specfile stuff ...
+ echo -n "### rpmbuild: " >&4
+
+ PATH="$tmpdir/bin:$PATH" QUILT_SETUP_FAST=${targetdir:+1} \
+ rpmbuild --eval "%define _sourcedir $abs_sourcedir" \
+ --eval "%define _specdir $specdir" \
+ --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
+ status=$?
+ echo >&4
+ return $status
+}
+
usage()
{
printf $"Usage: quilt setup [-d path-prefix] [-v] [--sourcedir dir] [--fuzz=N] [--slow|--fast] {specfile|seriesfile}\n"
@@ -180,13 +315,14 @@ do
-h)
usage -h ;;
-v)
- verbose=-v
+ verbose=1
shift ;;
--sourcedir)
sourcedir=${2%/}/
shift 2 ;;
--fuzz)
- opt_fuzz="--fuzz $2"
+ # Only works with rpm 4.6 and later
+ DEFINE_FUZZ="%define _default_patch_fuzz $2"
shift 2 ;;
--slow)
opt_fast=
@@ -205,8 +341,6 @@ then
usage
fi
-[ -n "$sourcedir" ] && opt_sourcedir="--sourcedir $sourcedir"
-
tmpfile=$(gen_tempfile)
add_exit_handler "rm -f $tmpfile"
@@ -230,16 +364,9 @@ case "$1" in
else
targetdir=$PWD/$prefix
fi
-
- $QUILT_DIR/scripts/inspect $verbose $opt_sourcedir $opt_fuzz \
- --targetdir "$targetdir" \
- "$spec_file" 2>&1 > $tmpfile
- else
- $QUILT_DIR/scripts/inspect $verbose $opt_sourcedir $opt_fuzz \
- "$spec_file" 2>&1 > $tmpfile
fi
- if [ $? -ne 0 ]
+ if ! inspect "$spec_file" 2>&1 > $tmpfile
then
printf $"The %%prep section of %s failed; results may be incomplete\n" "$spec_file"
if [ -z "$verbose" ]