Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package linuxrc-devtools for
openSUSE:Factory checked in at 2023-06-29 17:28:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/linuxrc-devtools (Old)
and /work/SRC/openSUSE:Factory/.linuxrc-devtools.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "linuxrc-devtools"
Thu Jun 29 17:28:51 2023 rev:16 rq:1095867 version:1.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/linuxrc-devtools/linuxrc-devtools.changes
2022-08-09 15:28:12.965601822 +0200
+++
/work/SRC/openSUSE:Factory/.linuxrc-devtools.new.13546/linuxrc-devtools.changes
2023-06-29 17:29:13.030571712 +0200
@@ -1,0 +2,10 @@
+Wed Jun 28 19:43:06 UTC 2023 - [email protected]
+
+- merge gh#openSUSE/linuxrc-devtools#32
+- add --no-tag option
+- add --from option to allow submitting from one project to another
+- create package in target project if missing
+- set version number
+- 1.2
+
+--------------------------------------------------------------------
Old:
----
linuxrc-devtools-1.1.tar.xz
New:
----
linuxrc-devtools-1.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ linuxrc-devtools.spec ++++++
--- /var/tmp/diff_new_pack.ct9Z0N/_old 2023-06-29 17:29:14.158578322 +0200
+++ /var/tmp/diff_new_pack.ct9Z0N/_new 2023-06-29 17:29:14.162578345 +0200
@@ -1,7 +1,7 @@
#
# spec file for package linuxrc-devtools
#
-# Copyright (c) 2022 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,18 +12,18 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: linuxrc-devtools
-Version: 1.1
+Version: 1.2
Release: 0
Source: %{name}-%{version}.tar.xz
BuildRequires: make
-Url: http://github.com/openSUSE/linuxrc-devtools
+URL: http://github.com/openSUSE/linuxrc-devtools
Summary: Tools to submit from Git to OBS via Jenkins
License: MIT
Group: Development/Tools
++++++ linuxrc-devtools-1.1.tar.xz -> linuxrc-devtools-1.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linuxrc-devtools-1.1/Makefile
new/linuxrc-devtools-1.2/Makefile
--- old/linuxrc-devtools-1.1/Makefile 2022-08-08 14:46:25.000000000 +0200
+++ new/linuxrc-devtools-1.2/Makefile 2023-06-28 21:43:06.000000000 +0200
@@ -21,6 +21,10 @@
install:
install -m 755 -d $(DESTDIR)/usr/bin
install -m 755 -t $(DESTDIR)/usr/bin $(SCRIPTS)
+ @cp tobs tobs.tmp
+ @perl -pi -e 's/0\.0/$(VERSION)/ if /VERSION = /' tobs.tmp
+ install -m 755 -D tobs.tmp $(DESTDIR)/usr/bin/tobs
+ @rm -f tobs.tmp
archive: changelog
@if [ ! -d .git ] ; then echo no git repo ; false ; fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linuxrc-devtools-1.1/VERSION
new/linuxrc-devtools-1.2/VERSION
--- old/linuxrc-devtools-1.1/VERSION 2022-08-08 14:46:25.000000000 +0200
+++ new/linuxrc-devtools-1.2/VERSION 2023-06-28 21:43:06.000000000 +0200
@@ -1 +1 @@
-1.1
+1.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linuxrc-devtools-1.1/changelog
new/linuxrc-devtools-1.2/changelog
--- old/linuxrc-devtools-1.1/changelog 2022-08-08 14:46:25.000000000 +0200
+++ new/linuxrc-devtools-1.2/changelog 2023-06-28 21:43:06.000000000 +0200
@@ -1,3 +1,10 @@
+2023-06-28: 1.2
+ - merge gh#openSUSE/linuxrc-devtools#32
+ - add --no-tag option
+ - add --from option to allow submitting from one project to another
+ - create package in target project if missing
+ - set version number
+
2022-08-08: 1.1
- merge gh#openSUSE/linuxrc-devtools#31
- include full URL to submit request in log
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linuxrc-devtools-1.1/tobs
new/linuxrc-devtools-1.2/tobs
--- old/linuxrc-devtools-1.1/tobs 2022-08-08 14:46:25.000000000 +0200
+++ new/linuxrc-devtools-1.2/tobs 2023-06-28 21:43:06.000000000 +0200
@@ -148,8 +148,10 @@
my $opt_try;
my $opt_delay = 30;
my $opt_target;
+my $opt_from;
my $opt_spec;
my $opt_obs;
+my $opt_no_tag;
GetOptions(
'sr=s' => \$opt_sr,
@@ -157,16 +159,21 @@
'delay=i' => \$opt_delay,
'try' => \$opt_try,
'target=s' => \$opt_target,
+ 'from=s' => \$opt_from,
'spec=s' => \$opt_spec,
'obs=s' => \$opt_obs,
+ 'no-tag' => \$opt_no_tag,
'save-temp' => \$opt_save_temp,
'version' => sub { print "$VERSION\n"; exit 0 },
'help' => sub { usage 0 },
) || usage 1;
+$opt_from = $opt_target if $opt_from eq "";
+
my $tmp = Tmp::new($opt_save_temp);
-my $tmpdir = $tmp->dir('package');
+my $tmpdir_to = $tmp->dir('to_package');
+my $tmpdir_from = $tmp->dir('from_package');
$ENV{PATH} = "$ENV{HOME}/bin:/usr/bin:/bin:/usr/sbin:/sbin";
@@ -175,6 +182,14 @@
exit do_sr if $opt_sr;
+if($config->{to_prj} eq $config->{from_prj} && $config->{to_bs} eq
$config->{from_bs}) {
+ $config->{single} = 1;
+ $tmpdir_from = $tmpdir_to;
+}
+else {
+ $config->{single} = 0;
+}
+
get_git_branch_and_tags;
chomp($config->{version} = `git2log --version`);
@@ -193,21 +208,45 @@
@s = grep { $_ ne $config->{archive} } @s;
$config->{sources}{$_} = 1 for @s;
-print " Package: $config->{package}\n";
-print " Version: $config->{version}\n";
-print " GIT Branch: $config->{branch}\n";
-print " Spec File: $opt_spec\n" if $opt_spec;
-print " OBS Sources: $opt_obs\n" if $opt_obs;
-print " Project: $config->{prj}\n";
-print " Maintainer: $config->{email}\n";
-print " BS: $config->{bs}\n";
-print " TMP Dir: $tmpdir\n";
-
-print "Checking out $config->{prj}/$config->{package}...\n";
-system "cd $tmpdir ; osc -A https://$config->{bs} co -c
$config->{prj}/$config->{package} >/dev/null";
-system "ls -og $tmpdir/$config->{package} | tail -n +2";
+print " Package: $config->{package}\n";
+print " Version: $config->{version}\n";
+print " GIT Branch: $config->{branch}\n";
+print " Spec File: $opt_spec\n" if $opt_spec;
+print " OBS Sources: $opt_obs\n" if $opt_obs;
+if($config->{to_prj} eq $config->{from_prj}) {
+ print " Project: $config->{to_prj}\n";
+}
+else {
+ print "Source Project: $config->{from_prj}\n";
+ print "Target Project: $config->{to_prj}\n";
+}
+print " Maintainer: $config->{email}\n";
+if($config->{to_bs} eq $config->{from_bs}) {
+ print " BS: $config->{to_bs}\n";
+}
+else {
+ print " Source BS: $config->{from_bs}\n";
+ print " Target BS: $config->{to_bs}\n";
+}
+print " TMP Dir: $tmp->{base}\n";
+
+print "Checking out $config->{from_prj}/$config->{package}...\n";
+system "cd $tmpdir_from ; osc -A https://$config->{from_bs} co -c
$config->{from_prj}/$config->{package} >/dev/null";
+system "ls -og $tmpdir_from/$config->{package} | tail -n +2";
+
+if(!$config->{single}) {
+ print "Checking out $config->{to_prj}/$config->{package}...\n";
+ system "cd $tmpdir_to ; osc -A https://$config->{to_bs} co -c
$config->{to_prj}/$config->{package} >/dev/null 2>1";
+ if(! -d "$tmpdir_to/$config->{package}") {
+ print "Target package missing - will be automatically created later.\n";
+ $config->{create_target} = 1;
+ }
+ else {
+ system "ls -og $tmpdir_to/$config->{package} | tail -n +2";
+ }
+}
-my @specs = map { s#.*/##; s#\.spec$##; $_ }
glob("$tmpdir/$config->{package}/*.spec");
+my @specs = map { s#.*/##; s#\.spec$##; $_ }
glob("$tmpdir_from/$config->{package}/*.spec");
if(@specs) {
$config->{spec_name} = $specs[0];
print "Package has several spec files; using $config->{spec_name} as base\n"
if @specs > 1;
@@ -229,14 +268,14 @@
}
}
-if(open my $f, "$tmpdir/$config->{package}/$config->{spec_name}.spec") {
+if(open my $f, "$tmpdir_from/$config->{package}/$config->{spec_name}.spec") {
$config->{spec_file} = [ <$f> ];
close $f;
}
die "missing spec file\n" if !defined $config->{spec_file};
-if(open my $f, "$tmpdir/$config->{package}/$config->{spec_name}.changes") {
+if(open my $f, "$tmpdir_from/$config->{package}/$config->{spec_name}.changes")
{
$config->{changes} = [ <$f> ];
close $f;
}
@@ -245,20 +284,20 @@
# copy OBS files
if($opt_obs) {
- system "cp $opt_obs/* $tmpdir/$config->{package}/"
+ system "cp $opt_obs/* $tmpdir_from/$config->{package}/"
}
update_spec;
# write new spec file
-if(open my $f, ">$tmpdir/$config->{package}/$config->{spec_name}.spec") {
+if(open my $f, ">$tmpdir_from/$config->{package}/$config->{spec_name}.spec") {
print $f @{$config->{spec_file}};
close $f;
}
update_changelog;
-my $new_changelog = "$tmpdir/$config->{package}/$config->{spec_name}.changes";
+my $new_changelog =
"$tmpdir_from/$config->{package}/$config->{spec_name}.changes";
# write new changes file
if(open my $f, ">$new_changelog") {
@@ -268,13 +307,13 @@
# delete obsolete files
for ($config->{rm_archive}, keys %{$config->{rm_sources}}, keys
%{$config->{rm_patches}}) {
- # print "unlink $tmpdir/$config->{package}/$_\n";
- unlink "$tmpdir/$config->{package}/$_";
+ # print "unlink $tmpdir_from/$config->{package}/$_\n";
+ unlink "$tmpdir_from/$config->{package}/$_";
}
# copy new files except *.changes (we would overwrite our newly generated one)
rename $new_changelog, "$new_changelog.tmp";
-system "cp package/* $tmpdir/$config->{package}/";
+system "cp package/* $tmpdir_from/$config->{package}/";
rename "$new_changelog.tmp", $new_changelog;
# copy changes and specs
@@ -285,18 +324,36 @@
for my $s (@specs) {
my $stheme = $s;
$stheme =~ s/.*-//;
- system "cp $tmpdir/$config->{package}/$base.changes
$tmpdir/$config->{package}/$s.changes";
- system "perl -ple 's/^%define\\s+(\\S+)\\s+$theme\\s*\$/%define \$1
$stheme/' $tmpdir/$config->{package}/$base.spec >
$tmpdir/$config->{package}/$s.spec";
+ system "cp $tmpdir_from/$config->{package}/$base.changes
$tmpdir_from/$config->{package}/$s.changes";
+ system "perl -ple 's/^%define\\s+(\\S+)\\s+$theme\\s*\$/%define \$1
$stheme/' $tmpdir_from/$config->{package}/$base.spec >
$tmpdir_from/$config->{package}/$s.spec";
}
}
# create new tag if needed
update_tag;
-system "cd $tmpdir/$config->{package} ; osc -A https://$config->{bs}
addremove";
-print "Submitting changes to $config->{prj}/$config->{package}...\n";
-system "cd $tmpdir/$config->{package} ; osc -A https://$config->{bs} ci -m '-
release $config->{version}'" if !$opt_try;
-system "ls -og $tmpdir/$config->{package} | tail -n +2";
+if(!$config->{single}) {
+ if($config->{create_target}) {
+ if(!$opt_try) {
+ my $tmp_d = $tmp->dir('create');
+ system "cd $tmp_d ; osc -A https://$config->{to_bs} init
$config->{to_prj}";
+ system "cd $tmp_d ; osc -A https://$config->{to_bs} mkpac
$config->{package}";
+ system "cd $tmp_d ; osc -A https://$config->{to_bs} ci -n";
+ system "cd $tmpdir_to ; osc -A https://$config->{to_bs} co -c
$config->{to_prj}/$config->{package} >/dev/null";
+ }
+ else {
+ mkdir "$tmpdir_to/$config->{package}";
+ }
+ }
+
+ system "rm -f $tmpdir_to/$config->{package}/*";
+ system "cp -a $tmpdir_from/$config->{package}/*
$tmpdir_to/$config->{package}";
+}
+
+system "cd $tmpdir_to/$config->{package} ; osc -A https://$config->{to_bs}
addremove" unless $config->{create_target} && $opt_try;
+print "Submitting changes to $config->{to_prj}/$config->{package}...\n";
+system "cd $tmpdir_to/$config->{package} ; osc -A https://$config->{to_bs} ci
-m '- release $config->{version}'" if !$opt_try;
+system "ls -og $tmpdir_to/$config->{package} | tail -n +2";
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -319,10 +376,13 @@
PROJECT ist the project name,
PACKAGE is the (optional) package name - in case
it does not
match the git project name.
+ --from SOURCE If specified, submit from SOURCE to TARGET. If
this options
+ is not used, SOURCE = TARGET is assumed.
--spec FILE Use FILE as spec file template instead of the spec
file from
the build service project.
--obs DIR Commit everything in DIR to OBS. Note that
*.changes is still
automatically created.
+ --no-tag Don\'t create new git tag.
--try Don\'t actually do anything.
--version Show tobs version.
--save-temp Keep temporary files.
@@ -453,16 +513,26 @@
$opt_sr = $config->{rc}{aliases}{$opt_sr} if $config->{rc}{aliases}{$opt_sr};
$opt_target = $config->{rc}{aliases}{$opt_target} if
$config->{rc}{aliases}{$opt_target};
+ $opt_from = $config->{rc}{aliases}{$opt_from} if
$config->{rc}{aliases}{$opt_from};
if($opt_target =~ m#^([^:]+)://([^/]+)$#) {
$bs_name = $1;
- $config->{bs} = $config->{rc}{$bs_name}{api};
- $config->{prj} = $2;
+ $config->{to_bs} = $config->{rc}{$bs_name}{api};
+ $config->{to_prj} = $2;
}
else {
die "invalid target spec: $opt_target\n";
}
+ if($opt_from =~ m#^([^:]+)://([^/]+)$#) {
+ $bs_name = $1;
+ $config->{from_bs} = $config->{rc}{$bs_name}{api};
+ $config->{from_prj} = $2;
+ }
+ else {
+ die "invalid target spec: $opt_from\n";
+ }
+
if($opt_sr =~ m#^([^:]+)://([^/]+)$#) {
$config->{sr}{api} = $config->{rc}{$1}{api};
my $pref = $config->{rc}{$1}{prefix}{$bs_name};
@@ -472,14 +542,14 @@
get_git_package if !$config->{package};
- if(!$config->{prj} || !$config->{package} || !$config->{bs}) {
- die "incomplete config\n project = $config->{prj}\n package =
$config->{package}\n api = $config->{bs}\n";
+ if(!$config->{package} || !$config->{to_prj} || !$config->{to_bs} ||
!$config->{from_prj} || !$config->{from_bs}) {
+ die "incomplete config\n package = $config->{package}\n dst project =
$config->{to_prj}\n dst api = $config->{to_bs}\n src project =
$config->{from_prj}\n src api = $config->{from_bs}\n";
}
if($ENV{USER_NAME}) {
$config->{email} = $ENV{USER_NAME};
}
- elsif(open my $p, "osc -A https://$config->{bs} maintainer -e -B
$config->{prj} $config->{package} |") {
+ elsif(open my $p, "osc -A https://$config->{from_bs} maintainer -e -B
$config->{from_prj} $config->{package} |") {
while (<$p>) {
s/^\s+//;
s/,.*$//;
@@ -636,7 +706,7 @@
my $tag = "$config->{branch}-$config->{version}";
$tag =~ s/^master-//;
- if(!$config->{tags}{$tag}) {
+ if(!$config->{tags}{$tag} && !$opt_no_tag) {
print "Creating tag $tag\n";
system "git tag $tag ; git push origin tags/$tag" if !$opt_try;
}
@@ -660,13 +730,13 @@
my $sr = $config->{sr};
print " Package: $config->{package}\n";
- print " Project: $sr->{prefix}$config->{prj}\n";
+ print " Project: $sr->{prefix}$config->{to_prj}\n";
print " Submit To: $sr->{prj}\n";
print " Maintainer: $config->{email}\n";
print " BS: $sr->{api}\n";
- if($sr->{api} ne $config->{bs} && !$sr->{prefix}) {
- die "submitting from $config->{bs} to $sr->{api} not possible\n";
+ if($sr->{api} ne $config->{to_bs} && !$sr->{prefix}) {
+ die "submitting from $config->{to_bs} to $sr->{api} not possible\n";
}
my $err = 0;
@@ -677,12 +747,12 @@
my $building;
my $delay = $opt_delay;
- print "Waiting for build results of
$config->{prj}/$config->{package}...\n";
+ print "Waiting for build results of
$config->{to_prj}/$config->{package}...\n";
$| = 1;
do {
sleep $delay;
- if(open my $p, "osc -A https://$sr->{api} r --csv
$sr->{prefix}$config->{prj} $config->{package} |") {
+ if(open my $p, "osc -A https://$sr->{api} r --csv
$sr->{prefix}$config->{to_prj} $config->{package} |") {
# sample line:
#
# openSUSE_Factory|x86_64|unpublished|False|succeeded|
@@ -748,7 +818,7 @@
my $sr_resp = $tmp->file();
my $user = $config->{email};
$user =~ s/\@.*$//;
- system "echo y | osc -A https://$sr->{api} sr -m 'submitted by $user via
jenkins' --yes --nodevelproject $sr->{prefix}$config->{prj} $config->{package}
$sr->{prj} >$sr_resp 2>&1";
+ system "echo y | osc -A https://$sr->{api} sr -m 'submitted by $user via
jenkins' --yes --nodevelproject $sr->{prefix}$config->{to_prj}
$config->{package} $sr->{prj} >$sr_resp 2>&1";
$err = $? >> 8;
my $resp_msg;