X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=client%2Fmake-request.sh;h=577ffcddaa9cbd06d6b5a7d2b2667b843938c8d7;hb=HEAD;hp=271a77771b8639f2bdcbefd6bd1e695707b9f9ce;hpb=0a6ed611d788af7a0b04f863af7228aa68cfd7ec;p=tld-builder.git diff --git a/client/make-request.sh b/client/make-request.sh index 271a777..06e3445 100755 --- a/client/make-request.sh +++ b/client/make-request.sh @@ -17,15 +17,15 @@ 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" - send_mode="mail" + echo "No python3 present, aborting" + exit 1 fi if [ -n "$HOME_ETC" ]; then @@ -42,10 +42,9 @@ requester=deviloper@tld-linux.org default_key=deviloper@tld-linux.org send_mode="$send_mode" url="$url" -mailer="/usr/lib/sendmail -t" gpg_opts="" dist=ti -url="https://src.tld-linux.org:1241/" +url="https://giant.tld-linux.org:1241/" # defaults: f_upgrade=yes @@ -63,7 +62,6 @@ fi # internal options, not to be overriden specs= -df_fetch=no upgrade_macros=no upgrade_scripts=no cr=$(printf "\r") @@ -85,24 +83,16 @@ die() { } send_request() { - # switch to mail mode, if no url set - [ -z "$url" ] && send_mode="mail" - if [ -n "$wait" ]; then msg "Waiting $wait seconds before sending request" sleep $wait msg "Wait has ended, proceeding!" fi - case "$send_mode" in - "mail") - msg "Sending using mail mode" - cat - | $mailer - ;; - *) - msg "Sending using HTTP mode to $url" - cat - | python -c ' -import sys, socket, urllib2, ssl + msg "Sending using HTTP mode to $url" + cat - | python3 -c ' +import sys, socket, ssl +from urllib import request try: _create_unverified_https_context = ssl._create_unverified_context @@ -112,91 +102,28 @@ else: ssl._create_default_https_context = _create_unverified_https_context try: - data = sys.stdin.read() + data = sys.stdin.read().encode("utf-8") url = sys.argv[1] socket.setdefaulttimeout(30) - req = urllib2.Request(url, data) - f = urllib2.urlopen(req) + req = request.Request(url, data=data) + f = request.urlopen(req) f.close() -except Exception, e: - print >> 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 - echo -E "$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 -df_fetch() { - local specs="$@" - - # Sending by - local MAILER='/usr/lib/sendmail' - # MAILER='/usr/bin/msmtp' - # Sending via - local VIA="SENDMAIL" - #VIA="localhost" - local VIA_ARGS="" - #VIA_ARGS="some additional flags" - # e.g. for msmtp: - # VIA_ARGS='-a gmail' - # - # DISTFILES EMAIL - local DMAIL="df@tld-linux.org" - - local HOST=$(hostname -f) - local LOGIN=${requester%@*} - - local SPEC BRANCH - for spec in $specs; do - 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-distfiles-request: yes - X-Login: $LOGIN - X-Package: $SPEC - X-Branch: $BRANCH - X-Flags: force-reply - - . - EOF - 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 - git fetch --tags - out=$(git for-each-ref --count=1 --sort=-authordate refs/tags/auto/$dist \ - --format='%(refname:short)') - echo "$s:$out" - done + printf "%s\n" "$input" | sed -e 's,&,\&,g;s,<,\<,g;s,>,\>,g' } -# get autotag for specs -# WARNING: This may checkout some files from VCS -get_autotag() { - local atag pkg spec rpmdir +# get package revision for specs +get_pkgrevision() { + local pkgrev pkg spec rpmdir rpmdir=$(rpm -E %_topdir) for pkg in "$@"; do @@ -206,12 +133,12 @@ get_autotag() { # strip .spec extension pkg=${pkg%.spec} wget http://pkgrevs.tld-linux.org/list/$pkg -O /tmp/$pkg.tags 1>/dev/null 2>&1 - atag=$(head -n 1 /tmp/$pkg.tags) + pkgrev=$(head -n 1 /tmp/$pkg.tags) rm -f /tmp/$pkg.tags - if [ "x$atag" = "x" ]; then + if [ "x$pkgrev" = "x" ]; then echo "$pkg.spec" else - echo "$pkg.spec:$atag" + echo "$pkg.spec:$pkgrev" fi done } @@ -345,7 +272,7 @@ while [ $# -gt 0 ]; do ;; -a) - autotag=yes + pkgrevision=yes ;; -m) @@ -507,10 +434,6 @@ while [ $# -gt 0 ]; do upgrade_scripts='yes' ;; - -df | --distfiles-fetch | --distfiles-fetch-request) - df_fetch=yes - ;; - --gpg-opts | -g) gpg_opts="$2" shift @@ -538,15 +461,13 @@ done case "$dist" in ti) - builder_email="builderti@src.tld-linux.org" default_builders="ti-*" - url="https://src.tld-linux.org:1241/" + url="https://giant.tld-linux.org:1241/" control_url="http://src.tld-linux.org/~builderti" ;; ti-dev) - builder_email="buildertidev@src.tld-linux.org" default_builders="ti-dev-*" - url="https://src.tld-linux.org:1242/" + url="https://giant.tld-linux.org:1242/" control_url="http://src.tld-linux.org/~buildertidev" ;; *) @@ -556,36 +477,36 @@ esac # need to do this after dist selection if [ "$skip" ]; then - skip=$(skip="$skip" control_url="$control_url" python -c ' -import urllib2 + skip=$(skip="$skip" control_url="$control_url" python3 -c ' import sys -import StringIO import gzip import re import os import string +from urllib import request +from io import BytesIO from xml.dom import minidom skip = os.environ.get("skip").split(","); control_url = os.environ.get("control_url") -print >> 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 = [] @@ -597,13 +518,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 @@ -636,14 +557,9 @@ if [ "$relup" = "yes" ]; then relup ${message:+-m "$message"} $specs fi -if [ "$autotag" = "yes" ]; then - msg "Auto autotag build enabled" - specs=$(get_autotag $specs) -fi - -if [ "$df_fetch" = "yes" ]; then - df_fetch $specs - exit 0 +if [ "$pkgrevision" = "yes" ]; then + msg "Package revision build enabled" + specs=$(get_pkgrevision $specs) fi if [ "$upgrade_macros" = "yes" ]; then @@ -706,11 +622,7 @@ gen_req() { msg "Using jobs $jobs" echo " $jobs" fi - if [ -z "$url" ]; then - msg "Using email $builder_email" - else - msg "Using URL $url" - fi + msg "Using URL $url" if [ "$build_mode" = "ready" ]; then msg "Build mode: $(tput setaf 2)$build_mode$c_norm" @@ -737,7 +649,7 @@ gen_req() { if [ "$command" ]; then bid=$(uuidgen) - echo -E >&2 "* Command: $command" + printf "%s\n" "* Command: $command" >&2 echo " " echo " " hsc "$command" @@ -804,7 +716,7 @@ 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 " " hsc "$post_command"