X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=repackage.sh;h=5dfe9c3e72f89e75795eb20bb54051c73b006da3;hb=40531f660bcd72f6578ea53e6f0503f7ccd6742a;hp=b91b7a50b5c22a1413b4da390c9288d7fba2f97c;hpb=135916272ac2770e5d7d95ae4b349c1ccf26a668;p=packages%2Frpm-build-tools.git diff --git a/repackage.sh b/repackage.sh old mode 100644 new mode 100755 index b91b7a5..5dfe9c3 --- a/repackage.sh +++ b/repackage.sh @@ -19,7 +19,50 @@ set -e +skip_dep_generators() { + local dep + for dep in \ + font \ + gstreamer \ + java \ + kernel \ + libtool \ + mimetype \ + mono \ + perl \ + php \ + pkgconfig \ + python \ + ruby \ + ; do + printf "--define __%s_provides%%{nil}\n" $dep + printf "--define __%s_requires%%{nil}\n" $dep + done +} + 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,30 +71,70 @@ 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 + --define '_enable_debug_packages 0' \ + ${bb+$(skip_dep_generators)} \ + ${bb+--define '%py_postclean() %{nil}'} \ + $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 $? +} + +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=$(rpm-specdump $specfile | awk '$2 == "_target_cpu" {print $3}') +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 "$@" +# skip -bi if -bb is somewhere in the args +if [[ *$@* = *-bb* ]]; then + bb= +else + bb= rpmbuild -bi "$@" + unset bb fi rpmbuild -bb "$@"