X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=builder.sh;h=a379799be718371f338266fa06f3b9466b43e3c7;hb=6277f15fe3544a76a0055c05f8301a5e6dbbd9ba;hp=c56ca4a6014d509a0615fb3782d95e6c7456375c;hpb=4ee82499412a9dca27a5fc2401161dce660f6471;p=packages%2Frpm-build-tools.git diff --git a/builder.sh b/builder.sh index c56ca4a..a379799 100644 --- a/builder.sh +++ b/builder.sh @@ -22,6 +22,7 @@ # - builder -u fetches current version first (well that's okay, how you compare versions if you have no old spec?) # - when Icon: field is present, -5 and -a5 doesn't work # - builder -R skips installing BR if spec is not present before builder invocation (need to run builder twice) +# - does not respect NoSource: X, and tries to cvs up such files [ example: VirtualBox-bin.spec and its Source0 ] # TODO: # - ability to do ./builder -bb foo.spec foo2.spec foo3.spec @@ -374,7 +375,7 @@ Usage: builder [-D|--debug] [-V|--version] [--short-version] [-a|--as_anon] [-b| depspecname() { local package="$1" - package=$(echo "$package" | sed -e '/perl(.*)/{s,perl(\(.*\)),perl-\1,;s,::,-,g}') + package=$(echo "$package" | sed -e '/perl(.*)/{s,perl(\(.*\)),perl-\1,;s,::,-,g};' -e 's/-\(devel\|static\)$//' ) echo "$package" } @@ -411,7 +412,7 @@ update_shell_title() { # set TARGET from BuildArch: from SPECFILE set_spec_target() { if [ -n "$SPECFILE" ] && [ -z "$TARGET" ]; then - tmp=$(awk '/^BuildArch:/ { print $NF}' $ASSUMED_NAME/$SPECFILE) + tmp=$(awk '/^BuildArch:/ { print $NF; exit }' $ASSUMED_NAME/$SPECFILE) if [ "$tmp" ]; then target_platform=$(rpm -E '%{_target_vendor}-%{_target_os}%{?_gnu}') TARGET="$tmp" @@ -663,7 +664,6 @@ init_builder() { TOP_DIR=$(eval $RPM $RPMOPTS --eval '%{_topdir}') REPO_DIR=$TOP_DIR/packages PACKAGE_DIR=$TOP_DIR/packages/$ASSUMED_NAME - [ ! -d "$REPO_DIR" ] && install -d "$REPO_DIR" else REPO_DIR="." PACKAGE_DIR="." @@ -683,7 +683,8 @@ get_spec() { cd "$REPO_DIR" if [ ! -f "$ASSUMED_NAME/$SPECFILE" ]; then - SPECFILE="$(basename $SPECFILE .spec).spec" + # XXX: still needed? + SPECFILE=$(basename $SPECFILE) fi if [ "$NOCVSSPEC" != "yes" ]; then @@ -1015,13 +1016,13 @@ get_files() { if echo $i | grep -vE '(http|ftp|https|cvs|svn)://' | grep -qE '\.(gz|bz2)$']; then echo "Warning: no URL given for $i" fi + target="$fp" if [ -z "$NODIST" ] && [ -n "$srcmd5" ]; then if good_md5 "$i" && good_size "$i"; then echo "$fp having proper md5sum already exists" continue fi - target="$fp" # optionally prefer mirror over distfiles if there's mirror # TODO: build url list and then try each url from the list @@ -1073,6 +1074,7 @@ get_files() { update_shell_title "${GETURI2%% *}: $url_attic" ${GETURI2} ${OUTFILEOPT} "$target" "$url_attic" fi + test -s "$target" || rm -f "$target" fi fi @@ -1099,11 +1101,12 @@ get_files() { im="$i" fi update_shell_title "${GETURI%% *}: $im" - ${GETURI} "$im" || \ + ${GETURI} "$im" ${OUTFILEOPT} "$target" || \ if [ "`echo $im | grep -E 'ftp://'`" ]; then update_shell_title "${GETURI2%% *}: $im" - ${GETURI2} "$im" + ${GETURI2} "$im" ${OUTFILEOPT} "$target" fi + test -s "$target" || rm -f "$target" fi if [ "$cvsup" = 1 ]; then @@ -2210,20 +2213,21 @@ while [ $# -gt 0 ]; do Exit_error err_invalid_cmdline "$1" ;; *) - SPECFILE="${1}" + SPECFILE=$1; shift # check if specname was passed as specname:cvstag if [ "${SPECFILE##*:}" != "${SPECFILE}" ]; then CVSTAG="${SPECFILE##*:}" SPECFILE="${SPECFILE%%:*}" fi + # always have SPECFILE ending with .spec extension + SPECFILE=${SPECFILE%%.spec}.spec ASSUMED_NAME=$(basename ${SPECFILE%%.spec}) - shift esac done [ -d "$ASSUMED_NAME" ] && CVS_ENTRIES="$ASSUMED_NAME/CVS/Entries" || CVS_ENTRIES="CVS/Entries" if [ -f "$CVS_ENTRIES" ] && [ -z "$CVSTAG" ]; then - CVSTAG=$(awk -vSPECFILE=$(basename ${SPECFILE%.spec}.spec) -F/ '$2 == SPECFILE && $6 ~ /^T/{print substr($6, 2)}' ${CVS_ENTRIES}) + CVSTAG=$(awk -vSPECFILE=$(basename $SPECFILE) -F/ '$2 == SPECFILE && $6 ~ /^T/{print substr($6, 2)}' ${CVS_ENTRIES}) if [ "$CVSTAG" ]; then echo >&2 "builder: Sticky tag $CVSTAG active. Use -r TAGNAME to override." fi