diff --git a/make_package b/make_package index e74516a..6d1373c 100755 --- a/make_package +++ b/make_package @@ -37,8 +37,15 @@ PACKAGE_PREFIX=$PACKAGE_NAME-$VERSION mkdir -p package rm -f package/*.tar.xz package/*.changes +extra_files=VERSION + git2log --changelog --format obs package/$PACKAGE_NAME.changes +if [ -f changelog ] || grep -q ^changelog: Makefile ; then + git2log --changelog changelog + extra_files="$extra_files changelog" +fi + if [ ! -d .git ] ; then echo no git repo exit 1 @@ -49,5 +56,5 @@ git archive --prefix=$PACKAGE_PREFIX/ HEAD > package/$PACKAGE_PREFIX.tar tar -r -f package/$PACKAGE_PREFIX.tar \ --mode=0664 --owner=root --group=root \ --mtime="`git show -s --format=%ci`" \ - --transform="s:^:$PACKAGE_PREFIX/:" VERSION + --transform="s:^:$PACKAGE_PREFIX/:" $extra_files xz -f package/$PACKAGE_PREFIX.tar diff --git a/tobs b/tobs index d2060dd..19b17ea 100755 --- a/tobs +++ b/tobs @@ -787,11 +787,45 @@ sub do_sr print "Creating submit request to $config->{sr}\n"; + # get list of existing requests, most recent first + my $requests; + + if(open my $p, "osc -A https://$bs request list $s[0]/$s[1] |") { + while(<$p>) { + if(/^(\d+)\s+State:(\S+)/) { + unshift @$requests, { id => $1, state => $2 }; + next; + } + if($requests && /^\s*Review by Project\s.*\:Staging\:/) { + $requests->[0]{staging} = 1; + next; + } + } + close $p; + } + + # if the most recent request is a review in staging, don't replace it + + my $answer = "y"; + my $super_id; + + if($requests) { + $super_id = $requests->[0]{id}; + if($requests->[0]{state} eq "review" && $requests->[0]{staging}) { + $answer = "n"; + print "Not superseding staging request \#$super_id\n"; + } + else { + print "Superseding exsting request \#$super_id\n"; + } + } + if(!$opt_try) { my $sr_resp = $tmp->file(); my $user = $config->{email}; + my $s_opt = $super_id && $answer eq "y" ? "-s $super_id" : ""; $user =~ s/\@.*$//; - system "echo y | osc -A https://$bs sr -m 'submitted by $user via jenkins' --yes --nodevelproject $bs_prefix$config->{prj} $s[1] $s[0] >$sr_resp 2>&1"; + system "echo $answer | osc -A https://$bs sr -m 'submitted by $user via jenkins' $s_opt --nodevelproject $bs_prefix$config->{prj} $s[1] $s[0] >$sr_resp 2>&1"; $err = $? >> 8; my $resp_msg;