X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=client%2Fmake-request.sh;h=577ffcddaa9cbd06d6b5a7d2b2667b843938c8d7;hb=a17cb2c203c09f61fb0e8b2f4f71e4e3a2da6571;hp=d73c08ab19df1ae1b7db69cd5fa97d0554141745;hpb=9139295ae516bbed0bfbf2f8d2e17cf9517de8dc;p=tld-builder.git diff --git a/client/make-request.sh b/client/make-request.sh index d73c08a..577ffcd 100755 --- a/client/make-request.sh +++ b/client/make-request.sh @@ -1,4 +1,6 @@ #!/bin/sh +# vim:noet:ts=4:sw=4 +VERSION=1.89 # prevent "*" from being expanded in builders var set -f @@ -15,9 +17,11 @@ dist= url= no_depend=no verbose=no -autotag=no +pkgrevision=no +requester_override= +relup=no -if [ -x /usr/bin/python ]; then +if [ -x /usr/bin/python3 ]; then send_mode="python" else echo "No python present, using mail mode" @@ -34,14 +38,14 @@ if [ ! -f "$USER_CFG" ]; then echo "Creating config file $USER_CFG. You *must* edit it." cat > $USER_CFG <> sys.stderr, "Problem while sending request via HTTP: %s: %s" % (url, e) +except Exception as e: + print("Problem while sending request via HTTP: %s: %s" % (url, e), file=sys.stderr) sys.exit(1) -print >> sys.stdout, "Request queued via HTTP." +print("Request queued via HTTP.", file=sys.stdout) ' "$url" ;; esac } +# htmlspecialchars: escape <, > and & +hsc() { + local input=$1 + printf "%s\n" "$input" | sed -e 's,&,\&,g;s,<,\<,g;s,>,\>,g' +} + # simple df_fetcher, based on packages/fetchsrc_request # TODO: tcp (smtp) mode # TODO: adjust for ~/.requestrc config @@ -115,7 +141,7 @@ df_fetch() { local specs="$@" # Sending by - local MAILER='/usr/sbin/sendmail' + local MAILER='/usr/lib/sendmail' # MAILER='/usr/bin/msmtp' # Sending via local VIA="SENDMAIL" @@ -126,23 +152,24 @@ df_fetch() { # VIA_ARGS='-a gmail' # # DISTFILES EMAIL - local DMAIL="distfiles@pld-linux.org" + local DMAIL="df@tld-linux.org" local HOST=$(hostname -f) local LOGIN=${requester%@*} + local SPEC BRANCH for spec in $specs; do - local SPEC=$(echo "$spec" | sed -e 's|:.*||') - local BRANCH=$(echo "$spec" | sed -e 's|.*:||') + SPEC=$(echo "$spec" | sed -e 's|:.*||') + SPEC=${SPEC%.spec} + BRANCH=$(echo "$spec" | sed -e 's|.*:||') echo >&2 "Distfiles Request: $SPEC:$BRANCH via $MAILER ${VIA_ARGS:+ ($VIA_ARGS)}" cat <<-EOF | "$MAILER" -t -i $VIA_ARGS To: $DMAIL From: $LOGIN <$LOGIN@$HOST> Subject: fetchsrc_request notify - X-CVS-Module: SPECS X-distfiles-request: yes X-Login: $LOGIN - X-Spec: $SPEC + X-Package: $SPEC X-Branch: $BRANCH X-Flags: force-reply @@ -151,45 +178,33 @@ df_fetch() { done } -# autotag from rpm-build-macros -# displays latest used tag for a specfile -autotag() { - local out s - for s in "$@"; do - # strip branches - s=${s%:*} - # ensure package ends with .spec - s=${s%.spec}.spec - out=$(cvs status -v $s | awk "!/Sticky/&&/auto-$dist-/{if (!a++) print \$1}") - echo "$s:$out" - done -} - -# get autotag for specs -# WARNING: This may checkout some files from CVS -get_autotag() { - local pkg spec rpmdir +# get package revision for specs +get_pkgrevision() { + local pkgrev pkg spec rpmdir rpmdir=$(rpm -E %_topdir) - cd $rpmdir for pkg in "$@"; do + cd $rpmdir # strip branches pkg=${pkg%:*} # strip .spec extension pkg=${pkg%.spec} - # checkout only if missing - if [ ! -e $pkg/$pkg.spec ]; then - $rpmdir/builder -g $pkg -ns -r HEAD 1>&2 - fi - if [ ! -e $pkg/$pkg.spec ]; then - # just print it out, to fallback to base pkg name - echo "$pkg" + wget http://pkgrevs.tld-linux.org/list/$pkg -O /tmp/$pkg.tags 1>/dev/null 2>&1 + pkgrev=$(head -n 1 /tmp/$pkg.tags) + rm -f /tmp/$pkg.tags + if [ "x$pkgrev" = "x" ]; then + echo "$pkg.spec" else - autotag $pkg/$pkg.spec + echo "$pkg.spec:$pkgrev" fi done } +relup() { + local script=$(dirname $(rpm -E %_topdir))/rpm-build-tools/relup.sh + $script -u -i "$@" +} + usage() { cat <> sys.stderr, "* Check queue_id-s against %s" % control_url +print("* Check queue_id-s against %s" % control_url, file=sys.stderr) try: headers = { "Cache-Control": "no-cache", "Pragma": "no-cache" } - req = urllib2.Request(url=control_url + "/queue.gz", headers=headers) - f = urllib2.urlopen(req) -except Exception, e: - print >> sys.stderr, "Fetch error %s: %s" % (control_url + "/queue.gz", e) + req = request.Request(url=control_url + "/queue.gz", headers=headers) + f = request.urlopen(req) +except Exception as e: + print("Fetch error %s: %s" % (control_url + "/queue.gz", e), file=sys.stderr) sys.exit(1) -sio = StringIO.StringIO() +sio = BytesIO() sio.write(f.read()) f.close() sio.seek(0) f = gzip.GzipFile(fileobj = sio) -xml = re.compile("(.*?)", re.DOTALL).match(f.read()).group(1) +xml = re.compile("(.*?)", re.DOTALL).match(f.read().decode("utf-8")).group(1) d = minidom.parseString(xml) q = [] @@ -563,13 +581,13 @@ for c in d.documentElement.childNodes: err = 0 for s in skip: if s not in q: - print >> sys.stderr, "- Check %s: ERROR: Not valid queue-id" % s + print("- Check %s: ERROR: Not valid queue-id" % s, file=sys.stderr) err = 1 else: - print >> sys.stderr, "- Check %s: OK" % s + print("- Check %s: OK" % s, file=sys.stderr) if err == 1: sys.exit(1) -print string.join(skip, ",") +print(",".join(skip)) ') || exit $? f_upgrade=no build_mode=test @@ -587,24 +605,24 @@ specs=`for s in $specs; do # skip marker - pass it along echo $s ;; - *.spec:*) # spec with branch - echo $s - ;; - *.spec) # spec without branch - echo $(basename $s):$branch - ;; *:*) # package name with branch - echo $s | sed -e 's/:/.spec:/' + _specfile=$(basename ${s%:*}) + echo ${_specfile%.spec}.spec:${s##*:} ;; *) # just package name - echo $(basename $s).spec:$branch + echo $(basename ${s%.spec}).spec:$branch ;; esac done` -if [ "$autotag" = "yes" ]; then - msg "Auto autotag build enabled" - specs=$(get_autotag $specs) +if [ "$relup" = "yes" ]; then + msg "Auto relup enabled" + relup ${message:+-m "$message"} $specs +fi + +if [ "$pkgrevision" = "yes" ]; then + msg "Package revision build enabled" + specs=$(get_pkgrevision $specs) fi if [ "$df_fetch" = "yes" ]; then @@ -619,8 +637,16 @@ if [ "$upgrade_macros" = "yes" ]; then build_mode=test fi +if [ "$upgrade_scripts" = "yes" ]; then + command="cd ~/rpm/rpm-build-tools && git pull" + command_flags=as-builder + builders="$dist-src" + f_upgrade=no + build_mode=test +fi + if [[ "$requester" != *@* ]] ; then - requester="$requester@pld-linux.org" + requester="$requester@tld-linux.org" fi if [ -z "$builders" ] ; then @@ -676,12 +702,16 @@ gen_req() { msg "Build mode: $(tput setaf 3)$build_mode$c_norm" fi + if [ -n "$requester_override" ] ; then + echo " $requester_override" + fi + msg "Queue-ID: $id" echo # job to depend on local depend= - local b i=1 + local b i=1 val local name branch builders_xml for b in $builders; do @@ -691,10 +721,10 @@ gen_req() { if [ "$command" ]; then bid=$(uuidgen) - echo -E >&2 "* Command: $command" + printf "%s\n" "* Command: $command" >&2 echo " " echo " " - echo -E "$command" | sed -e 's,&,\&,g;s,<,\<,g;s,>,\>,g' + hsc "$command" echo "" echo " " echo "$builders_xml" @@ -725,6 +755,17 @@ gen_req() { echo " $branch" echo " ${kernel:+$kernel}" echo " ${target:+$target}" + + oIFS=$IFS; IFS=$cr + for b in $define; do + [ -z "$b" ] && continue + value=${b#*=} + b=${b%%=*} + echo " $(hsc "$value")" + msg "- define $b=$value" + done + IFS=$oIFS + echo " " echo for b in $with; do @@ -747,10 +788,10 @@ gen_req() { if [ "$no_depend" = yes ]; then depend= fi - echo -E >&2 "* Post-Command: $post_command" + printf "%s\n" "* Post-Command: $post_command" >&2 echo " " echo " " - echo -E "$post_command" | sed -e 's,&,\&,g;s,<,\<,g;s,>,\>,g' + hsc "$post_command" echo "" echo " " echo "$builders_xml" @@ -776,8 +817,8 @@ gen_email () { To: $builder_email Subject: build request Message-Id: <$id@$(hostname)> - X-New-PLD-Builder: request - X-Requester-Version: \$Id$ + X-New-TLD-Builder: request + X-Requester-Version: $VERSION EOF