-#!/bin/sh
+#!/bin/ksh
# -----------
# $Id$
# Exit codes:
VERSION="\
Build package utility from PLD Linux CVS repository
-v0.16 (C) 1999-2006 Free Penguins".
+v0.17 (C) 1999-2006 Free Penguins".
PATH="/bin:/usr/bin:/usr/sbin:/sbin:/usr/X11R6/bin"
COMMAND="build"
echo "\
Usage: builder [-D|--debug] [-V|--version] [-a|--as_anon] [-b|-ba|--build]
[-bb|--build-binary] [-bs|--build-source] [-u|--try-upgrade]
-[{-cf|--cvs-force}] [{-B|--branch} <branch>] [{-d|--cvsroot} <cvsroot>]
-[-g|--get] [-h|--help] [--http] [{-l,--logtofile} <logfile>] [-m|--mr-proper]
-[-q|--quiet] [--date <yyyy-mm-dd> [-r <cvstag>] [{-T--tag <cvstag>]
+[{-cf|--cvs-force}] [{-B|--branch} <branch>] [{-d|--cvsroot} <cvsroot>]
+[-g|--get] [-h|--help] [--http] [{-l|--logtofile} <logfile>] [-m|--mr-proper]
+[-q|--quiet] [--date <yyyy-mm-dd> [-r <cvstag>] [{-T|--tag <cvstag>]
[-Tvs|--tag-version-stable] [-Ts|--tag-stable] [-Tv|--tag-version]
[{-Tp|--tag-prefix} <prefix>] [{-tt|--test-tag}]
[-nu|--no-urls] [-v|--verbose] [--opts <rpm opts>] [--show-bconds]
- don't apply <patchnumber>
--show-bconds - show available conditional builds, which can be used
- with --with and/or --without switches.
+--show-bcond-args - show active bconds, from ~/.bcondrc. this is used by
+ ./repackage.sh script. in other words, the output is
+ parseable by scripts.
--with/--without <feature>
- conditional build package depending on %_with_<feature>/
%_without_<feature> macro switch. You may now use
%py_ver ERROR
%perl_vendorarch ERROR
%perl_vendorlib ERROR
+# damn. need it here! - copied from /usr/lib/rpm/macros.build
+%tmpdir %(echo "${TMPDIR:-/tmp}")
+%patchset_source(f:b:) %(
+ base=%{-b*}%{!-b*:10000};
+ start=$(expr $base + %1);
+ end=$(expr $base + %{?2}%{!?2:%{1}});
+ # we need to call seq twice as it doesn't allow two formats
+ seq -f 'Patch%g:' $start $end > %{tmpdir}/__ps1;
+ seq -f '%{-f*}' %1 %{?2}%{!?2:%{1}} > %{tmpdir}/__ps2;
+ paste %{tmpdir}/__ps{1,2};
+ rm -f %{tmpdir}/__ps{1,2};
+) \
+%{nil}
EOF
case "$RPMBUILD" in
rpm)
tag="NoSource$srcno-md5"
fi
md5=$(md5sum "$fp" | cut -f1 -d' ')
- echo "Updating $tag ($md5)."
+ echo "Updating $tag ($md5: $fp)."
perl -i -ne '
print unless /^\s*#\s*(No)?Source'$srcno'-md5\s*:/i;
print "# '$tag':\t'$md5'\n" if /^Source'$srcno'\s*:\s+/;
continue
fi
target="$fp"
- url=$(distfiles_url "$i")
+
+ # prefer mirror over distfiles if there's mirror
+ # TODO: build url list and then try each url from the list
+ if [ -z "$NOMIRRORS" ] && im=$(find_mirror "$i") && [ "$im" != "$i" ]; then
+ url="$im"
+ else
+ url=$(distfiles_url "$i")
+ fi
+
url_attic=$(distfiles_attic_url "$i")
FROM_DISTFILES=1
# is $url local file?
mkdir -p $TOP_DIR/{RPMS,BUILD,SRPMS}
cd $TOP_DIR
- cvs -d $CVSROOT co SOURCES/.cvsignore SPECS/{mirrors,adapter{,.awk},fetchsrc_request,builder,repackage.sh}
+ cvs -d $CVSROOT co SOURCES/.cvsignore SPECS/{mirrors,adapter{,.awk},fetchsrc_request,builder,{relup,repackage}.sh}
init_builder
#---------------------------------------------
# main()
-if [ "$#" = 0 ]; then
+if [ $# = 0 ]; then
usage
exit 1
fi
-while test $# -gt 0
-do
+while [ $# -gt 0 ]; do
case "${1}" in
- -5 | --update-md5 )
+ -5 | --update-md5)
COMMAND="update_md5"
NODIST="yes"
NOCVSSPEC="yes"
COMMAND="show_bconds"
shift
;;
+ --show-bcond-args)
+ COMMAND="show_bcond_args"
+ shift
+ ;;
--nodeps)
shift
RPMOPTS="${RPMOPTS} --nodeps"
if [ -z "$CVSTAG" ]; then
CVSTAG=$(awk -vSPECFILE="${SPECFILE%.spec}.spec" -F/ '$2 == SPECFILE && $6 ~ /^T/{print substr($6, 2)}' CVS/Entries)
if [ "$CVSTAG" ]; then
- echo "builder: Stick tag $CVSTAG active. Use -r TAGNAME to override."
+ echo >&2 "builder: Stick tag $CVSTAG active. Use -r TAGNAME to override."
fi
elif [ "$CVSTAG" = "HEAD" ]; then
# assume -r HEAD is same as -A
update_shell_title "$COMMAND"
case "$COMMAND" in
"show_bconds")
+ init_builder
+ if [ -n "$SPECFILE" ]; then
+ get_spec > /dev/null
+ parse_spec
+ set_bconds_values
+ display_bconds
+ fi
+ ;;
+ "show_bcond_args")
init_builder
if [ -n "$SPECFILE" ]; then
get_spec > /dev/null