X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=repackage.sh;h=6d9b38ad564428fc3d42f24ff779536cc19a7098;hb=9bd5b75a937316485809ba090a9ae65195ba6dd9;hp=638c9e55fb9b3f8dbba8a6408250131eff3339fb;hpb=6816b44c4c14cc537c65b6888692e42fa55a37fb;p=packages%2Frpm-build-tools.git diff --git a/repackage.sh b/repackage.sh index 638c9e5..6d9b38a 100644 --- a/repackage.sh +++ b/repackage.sh @@ -20,6 +20,28 @@ set -e rpmbuild() { + # preprocess args, we must have --target as first arg to rpmbuild + # we need to grab also dir where spec resides + local a spec specdir + while [ $# -gt 0 ]; do + case "$1" in + --target) + shift + TARGET=$1 + ;; + *.spec) + spec="$1" + a="$a $1" + ;; + *) + a="$a $1" + ;; + esac + shift + done + + specdir=$(dirname "$(pwd)/${spec:-.}") + # use gz payload as time is what we need here, not compress ratio # we use %__ldconfig variable to test are we on rpm 4.4.9 @@ -28,28 +50,62 @@ rpmbuild() { set -x /usr/bin/rpmbuild \ ${TARGET:+--target $TARGET} \ - $BCONDS \ --short-circuit \ + --define "_specdir $specdir" --define "_sourcedir $specdir" \ --define 'clean %%%{!?__ldconfig:clean}%{?__ldconfig:check} \ exit 0%{nil}' \ --define 'check %%check \ exit 0%{nil}' \ - --define '_source_payload w9.gzdio' \ + --define '_source_payload w5.gzdio' \ + --define '_binary_payload w5.gzdio' \ --define '__spec_install_pre %___build_pre' \ --define '__spec_clean_body %{nil}' \ - "$@" || exit + $a || exit } -specfile="${1%.spec}.spec"; shift -set -- "$specfile" "$@" +specdump() { + local a + while [ $# -gt 0 ]; do + case "$1" in + --target|--with|--without) + a="$a $1 $2" + shift + ;; + --define) + a="$a $1 \"$2\"" + shift + ;; + -*) + ;; + *) + a="$a $1" + ;; + esac + shift + done + set -x + eval rpm-specdump $a || echo >&2 $? +} -tmp=$(awk '/^BuildArch:/ { print $NF}' $specfile) +if [ $# = 0 ]; then + # if no spec name passed, glob *.spec + set -- *.spec + if [ ! -f "$1" -o $# -gt 1 ]; then + echo >&2 "ERROR: Too many or too few .spec files found" + echo >&2 "Usage: ${0##*/} PACKAGE.spec" + exit 1 + fi +else + # $1 must be spec, ensure it has .spec ext + spec=$1; shift + set -- ${spec%.spec}.spec "$@" +fi + +tmp=$(specdump "$@" | awk '$2 == "_target_cpu" {print $3}') if [ "$tmp" ]; then TARGET="$tmp" fi -BCONDS=$(./builder -nn -ncs --show-bcond-args $specfile) - # just create the rpm's if -bb is somewhere in the args if [[ *$@* != *-bb* ]]; then rpmbuild -bi "$@"