Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package installation-images for
openSUSE:Factory checked in at 2021-05-07 16:45:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/installation-images (Old)
and /work/SRC/openSUSE:Factory/.installation-images.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "installation-images"
Fri May 7 16:45:14 2021 rev:133 rq:890418 version:17.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/installation-images/installation-images.changes
2021-04-29 01:37:05.222466745 +0200
+++
/work/SRC/openSUSE:Factory/.installation-images.new.2988/installation-images.changes
2021-05-07 16:45:19.988366025 +0200
@@ -1,0 +2,23 @@
+Tue May 4 14:17:56 UTC 2021 - [email protected]
+
+- merge gh#openSUSE/installation-images#506
+- gdb extension: include debuginfod-find (debuginfod-client.rpm)
+ (bsc#1182649)
+- Document API of ResolveDeps and friends
+- Moved resolve_deps_libsolv to its own module
+- Add data files for testing ResolveDepsLibsolv.
+- resolve_deps_libsolv: add basic tests, don't hardcode solv
+ filename
+- BuildRequire debuginfod-client
+- 17.2
+
+--------------------------------------------------------------------
+Tue May 4 12:24:55 UTC 2021 - [email protected]
+
+- merge gh#openSUSE/installation-images#509
+- trigger automatic nvme discovery in udev start script
+ (bsc#1184908)
+- create NVMe config files before udevd is started (bsc#1184908)
+- 17.1
+
+--------------------------------------------------------------------
Old:
----
installation-images-17.0.tar.xz
New:
----
installation-images-17.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ installation-images.spec ++++++
--- /var/tmp/diff_new_pack.w0ugfr/_old 2021-05-07 16:45:20.596364113 +0200
+++ /var/tmp/diff_new_pack.w0ugfr/_new 2021-05-07 16:45:20.600364101 +0200
@@ -339,6 +339,7 @@
BuildRequires: dash
BuildRequires: dbus-1-x11
BuildRequires: dd_rescue
+BuildRequires: debuginfod-client
BuildRequires: dejavu-fonts
BuildRequires: dhcp-server
BuildRequires: dmraid
@@ -672,7 +673,7 @@
Summary: Installation Image Files for %theme
License: GPL-2.0-or-later
Group: Metapackages
-Version: 17.0
+Version: 17.2
Release: 0
Provides: installation-images = %version-%release
Conflicts: otherproviders(installation-images)
++++++ installation-images-17.0.tar.xz -> installation-images-17.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/installation-images-17.0/VERSION
new/installation-images-17.2/VERSION
--- old/installation-images-17.0/VERSION 2021-04-27 13:02:18.000000000
+0200
+++ new/installation-images-17.2/VERSION 2021-05-04 16:17:56.000000000
+0200
@@ -1 +1 @@
-17.0
+17.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/installation-images-17.0/changelog
new/installation-images-17.2/changelog
--- old/installation-images-17.0/changelog 2021-04-27 13:02:18.000000000
+0200
+++ new/installation-images-17.2/changelog 2021-05-04 16:17:56.000000000
+0200
@@ -1,3 +1,20 @@
+2021-05-04: 17.2
+ - merge gh#openSUSE/installation-images#506
+ - gdb extension: include debuginfod-find (debuginfod-client.rpm)
+ (bsc#1182649)
+ - Document API of ResolveDeps and friends
+ - Moved resolve_deps_libsolv to its own module
+ - Add data files for testing ResolveDepsLibsolv.
+ - resolve_deps_libsolv: add basic tests, don't hardcode solv
+ filename
+ - BuildRequire debuginfod-client
+
+2021-05-04: 17.1
+ - merge gh#openSUSE/installation-images#509
+ - trigger automatic nvme discovery in udev start script
+ (bsc#1184908)
+ - create NVMe config files before udevd is started (bsc#1184908)
+
2021-04-27: 17.0
- merge gh#openSUSE/installation-images#498
- rescue: make sure /var/run is a link to /run
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/installation-images-17.0/data/initrd/scripts/early_setup
new/installation-images-17.2/data/initrd/scripts/early_setup
--- old/installation-images-17.0/data/initrd/scripts/early_setup
2021-04-27 13:02:18.000000000 +0200
+++ new/installation-images-17.2/data/initrd/scripts/early_setup
2021-05-04 16:17:56.000000000 +0200
@@ -54,12 +54,6 @@
/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -B -f
/var/log/wpa_supplicant.log
fi
-# create NVMe config files
-if [ -x /usr/sbin/nvme ] ; then
- { /usr/sbin/nvme-gen-hostnqn || /usr/sbin/nvme gen-hostnqn ; } >
/etc/nvme/hostnqn
- cut -d : -f 3 /etc/nvme/hostnqn > /etc/nvme/hostid
-fi
-
if [ -x usr/sbin/wickedd ] ; then
debug_opts="--debug mini --log-target stderr:time,pid,ident"
if [ -n "$linuxrc_debug" ] ; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/installation-images-17.0/data/initrd/scripts/udev_setup
new/installation-images-17.2/data/initrd/scripts/udev_setup
--- old/installation-images-17.0/data/initrd/scripts/udev_setup 2021-04-27
13:02:18.000000000 +0200
+++ new/installation-images-17.2/data/initrd/scripts/udev_setup 2021-05-04
16:17:56.000000000 +0200
@@ -26,6 +26,12 @@
echo 'ENV{ANACONDA}="yes"' > /run/udev/rules.d/00-inhibit.rules
fi
+# create NVMe config files before udevd is started (bsc#1184908)
+if [ ! -f /etc/nvme/hostnqn -a -x /usr/sbin/nvme ] ; then
+ { /usr/sbin/nvme-gen-hostnqn || /usr/sbin/nvme gen-hostnqn ; } >
/etc/nvme/hostnqn
+ cut -d : -f 3 /etc/nvme/hostnqn > /etc/nvme/hostid
+fi
+
# start udevd
echo -n "Starting udevd "
if [ -n "$linuxrc_debug" ] ; then
@@ -38,6 +44,9 @@
/usr/bin/udevadm trigger --type=subsystems --action=add
/usr/bin/udevadm trigger --type=devices --action=add
+# add fc nvme devices (bsc#1184908)
+echo add > /sys/class/fc/fc_udev_device/nvme_discovery
+
# 10 min - just long enough
/usr/bin/udevadm settle --timeout=100
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/installation-images-17.0/data/root/gdb.file_list
new/installation-images-17.2/data/root/gdb.file_list
--- old/installation-images-17.0/data/root/gdb.file_list 2021-04-27
13:02:18.000000000 +0200
+++ new/installation-images-17.2/data/root/gdb.file_list 2021-05-04
16:17:56.000000000 +0200
@@ -3,6 +3,8 @@
gdb:
?valgrind: nodeps
+# helps valgrind download debuginfos
+?debuginfod-client:
yast2-buildtools: ignore
AUTODEPS:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/installation-images-17.0/doc/files.md
new/installation-images-17.2/doc/files.md
--- old/installation-images-17.0/doc/files.md 2021-04-27 13:02:18.000000000
+0200
+++ new/installation-images-17.2/doc/files.md 2021-05-04 16:17:56.000000000
+0200
@@ -423,6 +423,6 @@
AUTODEPS:
```
-If you don't specify any actions in AUTODEPS, templates are appied to
+If you don't specify any actions in AUTODEPS, templates are applied to
each individual package.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/installation-images-17.0/lib/AddFiles.pm
new/installation-images-17.2/lib/AddFiles.pm
--- old/installation-images-17.0/lib/AddFiles.pm 2021-04-27
13:02:18.000000000 +0200
+++ new/installation-images-17.2/lib/AddFiles.pm 2021-05-04
16:17:56.000000000 +0200
@@ -861,6 +861,18 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+=head2 find_missing_packs(\@packs)
+
+A @packs entry is a hash ref $p from which we ask:
+- $p->{name}
+- $p->{tags}{ignore}
+- $p->{tags}{nodeps}
+
+Return: autodeps hash ref:
+ string package_name -> string "package_name < required_by < required_by"
+
+=cut
+
sub find_missing_packs
{
my $packs = shift;
@@ -891,7 +903,7 @@
close $f;
}
else {
- die "$old->{dir}.romlog: $old package list missing";
+ die "$old->{dir}.rpmlog: $old package list missing";
}
if(open my $f, "$old->{dir}.solv") {
while(<$f>) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/installation-images-17.0/lib/ReadConfig.pm
new/installation-images-17.2/lib/ReadConfig.pm
--- old/installation-images-17.0/lib/ReadConfig.pm 2021-04-27
13:02:18.000000000 +0200
+++ new/installation-images-17.2/lib/ReadConfig.pm 2021-05-04
16:17:56.000000000 +0200
@@ -179,6 +179,7 @@
use Cwd;
use File::Path 'make_path';
use File::Spec 'abs2rel';
+use ResolveDepsLibsolv;
eval "use solv";
@@ -186,7 +187,6 @@
sub read_meta;
sub read_packages;
sub resolve_deps_obs;
-sub resolve_deps_libsolv;
sub show_package_deps;
sub get_version_info;
sub version_cmp;
@@ -214,6 +214,21 @@
}
+=head2 ResolveDeps(\@packages, \@ignore, \%old)
+
+@packages strings, package names to include, with their dependencies
+
+@ignore strings, package names to ignore, with their dependencies
+
+%old
+
+Return: autodeps hash ref:
+ string package_name -> string "package_name < required_by < required_by"
+
+Also print out the return value, and the package count
+
+=cut
+
sub ResolveDeps
{
local $_;
@@ -228,7 +243,7 @@
}
else {
die "oops, no libsolv" unless $ConfigData{libsolv_ok};
- $p1 = resolve_deps_libsolv $packages, $ignore;
+ $p1 = resolve_deps_libsolv $packages, $ignore, "/tmp/instsys.solv";
}
my $p2;
@@ -723,123 +738,17 @@
}
-sub resolve_deps_libsolv
-{
- local $_;
- my $packages = shift;
- my $ignore = shift;
-
- my $ignore_file_deps = $ENV{debug} =~ /filedeps/ ? 0 : 1;
-
- my %p;
-
- my $pool = solv::Pool->new();
- my $repo = $pool->add_repo("instsys");
- $repo->add_solv("/tmp/instsys.solv") or die "/tmp/instsys.solv: no solv
file";
- $pool->addfileprovides();
- $pool->createwhatprovides();
- $pool->set_debuglevel(4) if $ENV{debug} =~ /solv/;
-
- my $jobs;
- for (@$packages) {
- push @$jobs, $pool->Job($solv::Job::SOLVER_INSTALL |
$solv::Job::SOLVER_SOLVABLE_NAME, $pool->str2id($_));
- }
-
- my $blackpkg = $repo->add_solvable();
- $blackpkg->{evr} = "1-1";
- $blackpkg->{name} = "blacklist_package";
- $blackpkg->{arch} = "noarch";
-
- my %blacklisted;
- for (@$ignore) {
- my $id = $pool->str2id($_);
- next if $pool->Job($solv::Job::SOLVER_SOLVABLE_NAME, $id)->solvables();
- $blackpkg->add_deparray($solv::SOLVABLE_PROVIDES, $id);
- $blacklisted{$_} = 1;
- }
-
- $pool->createwhatprovides();
-
- if(defined &solv::XSolvable::unset) {
- for (@$ignore) {
- my $job = $pool->Job($solv::Job::SOLVER_SOLVABLE_NAME,
$pool->str2id($_));
- for my $s ($job->solvables()) {
- $s->unset($solv::SOLVABLE_REQUIRES);
- $s->unset($solv::SOLVABLE_RECOMMENDS);
- $s->unset($solv::SOLVABLE_SUPPLEMENTS);
- }
- }
-
- if($ignore_file_deps) {
- for ($pool->Selection_all()->solvables()) {
- my @deps = $_->lookup_idarray($solv::SOLVABLE_REQUIRES, 0);
- @deps = grep { $pool->id2str($_) !~ /^\// } @deps;
- $_->unset($solv::SOLVABLE_REQUIRES);
- for my $id (@deps) {
- $_->add_deparray($solv::SOLVABLE_REQUIRES, $id, 0);
- }
- }
- }
-
- if (%blacklisted) {
- for ($pool->Selection_all()->solvables()) {
- my @deps = $_->lookup_idarray($solv::SOLVABLE_CONFLICTS, 0);
- my @fdeps = grep { !$blacklisted{$pool->id2str($_)} } @deps;
- next if @fdeps == @deps;
- $_->unset($solv::SOLVABLE_CONFLICTS);
- for my $id (@fdeps) {
- $_->add_deparray($solv::SOLVABLE_CONFLICTS, $id, 0);
- }
- }
- }
- }
- else {
- warn "$Script: outdated perl-solv: solver will not work properly";
- }
-
- my $solver = $pool->Solver();
- $solver->set_flag($solv::Solver::SOLVER_FLAG_IGNORE_RECOMMENDED, 1);
-
- my @problems = $solver->solve($jobs);
-
- if(@problems) {
- my @err;
-
- for my $problem (@problems) {
- for my $pr ($problem->findallproblemrules()) {
- push @err, "$Script: " . $pr->info()->problemstr() . "\n";
- }
- }
-
- warn join('', @err);
-
- return \%p;
- }
-
- my $trans = $solver->transaction();
-
- for ($trans->newsolvables()) {
- my $dep;
-
- if(defined &solv::Solver::describe_decision) {
- my ($reason, $rule) = $solver->describe_decision($_);
- if ($rule && $rule->{type} == $solv::Solver::SOLVER_RULE_RPM) {
- $dep = $rule->info()->{solvable}{name};
- }
- else {
- # print "XXX $_->{name}: type = $rule->{type}\n";
- }
- }
+=head2 show_package_deps($package_name, \%deps)
- $p{$_->{name}} = $dep;
- }
+$package_name string
- delete $p{$_} for (@$packages, @$ignore);
- delete $p{$blackpkg->{name}};
+%deps keys: string package name,
+ values: string which (one) package required the key
- return \%p;
-}
+return string dependency chain, starting with $package_name, for example
+"augeas < ruby2.7-rubygem-ruby-augeas < ruby2.7-rubygem-cfa < yast2"
+=cut
sub show_package_deps
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/installation-images-17.0/lib/ResolveDepsLibsolv.pm
new/installation-images-17.2/lib/ResolveDepsLibsolv.pm
--- old/installation-images-17.0/lib/ResolveDepsLibsolv.pm 1970-01-01
01:00:00.000000000 +0100
+++ new/installation-images-17.2/lib/ResolveDepsLibsolv.pm 2021-05-04
16:17:56.000000000 +0200
@@ -0,0 +1,138 @@
+package ResolveDepsLibsolv;
+
+require Exporter;
+@ISA = qw ( Exporter );
+@EXPORT = qw ( resolve_deps_libsolv );
+
+use strict 'vars';
+use vars qw ( $Script );
+
+eval "use solv";
+
+=head2 resolve_deps_libsolv(\@packages, \@ignore, $solv_filename)
+
+Return hash ref:
+- keys: string package name,
+- values: string which (one) package required the key
+
+=cut
+
+sub resolve_deps_libsolv
+{
+ local $_;
+ my $packages = shift;
+ my $ignore = shift;
+ my $solv_filename = shift;
+
+ my $ignore_file_deps = $ENV{debug} =~ /filedeps/ ? 0 : 1;
+
+ my %p;
+
+ my $pool = solv::Pool->new();
+ my $repo = $pool->add_repo("instsys");
+ $repo->add_solv($solv_filename) or die "$solv_filename: no solv file";
+ $pool->addfileprovides();
+ $pool->createwhatprovides();
+ $pool->set_debuglevel(4) if $ENV{debug} =~ /solv/;
+
+ my $jobs = [];
+ for (@$packages) {
+ push @$jobs, $pool->Job($solv::Job::SOLVER_INSTALL |
$solv::Job::SOLVER_SOLVABLE_NAME, $pool->str2id($_));
+ }
+
+ my $blackpkg = $repo->add_solvable();
+ $blackpkg->{evr} = "1-1";
+ $blackpkg->{name} = "blacklist_package";
+ $blackpkg->{arch} = "noarch";
+
+ my %blacklisted;
+ for (@$ignore) {
+ my $id = $pool->str2id($_);
+ next if $pool->Job($solv::Job::SOLVER_SOLVABLE_NAME, $id)->solvables();
+ $blackpkg->add_deparray($solv::SOLVABLE_PROVIDES, $id);
+ $blacklisted{$_} = 1;
+ }
+
+ $pool->createwhatprovides();
+
+ if(defined &solv::XSolvable::unset) {
+ for (@$ignore) {
+ my $job = $pool->Job($solv::Job::SOLVER_SOLVABLE_NAME,
$pool->str2id($_));
+ for my $s ($job->solvables()) {
+ $s->unset($solv::SOLVABLE_REQUIRES);
+ $s->unset($solv::SOLVABLE_RECOMMENDS);
+ $s->unset($solv::SOLVABLE_SUPPLEMENTS);
+ }
+ }
+
+ if($ignore_file_deps) {
+ for ($pool->Selection_all()->solvables()) {
+ my @deps = $_->lookup_idarray($solv::SOLVABLE_REQUIRES, 0);
+ @deps = grep { $pool->id2str($_) !~ /^\// } @deps;
+ $_->unset($solv::SOLVABLE_REQUIRES);
+ for my $id (@deps) {
+ $_->add_deparray($solv::SOLVABLE_REQUIRES, $id, 0);
+ }
+ }
+ }
+
+ if (%blacklisted) {
+ for ($pool->Selection_all()->solvables()) {
+ my @deps = $_->lookup_idarray($solv::SOLVABLE_CONFLICTS, 0);
+ my @fdeps = grep { !$blacklisted{$pool->id2str($_)} } @deps;
+ next if @fdeps == @deps;
+ $_->unset($solv::SOLVABLE_CONFLICTS);
+ for my $id (@fdeps) {
+ $_->add_deparray($solv::SOLVABLE_CONFLICTS, $id, 0);
+ }
+ }
+ }
+ }
+ else {
+ warn "$Script: outdated perl-solv: solver will not work properly";
+ }
+
+ my $solver = $pool->Solver();
+ $solver->set_flag($solv::Solver::SOLVER_FLAG_IGNORE_RECOMMENDED, 1);
+
+ my @problems = $solver->solve($jobs);
+
+ if(@problems) {
+ my @err;
+
+ for my $problem (@problems) {
+ for my $pr ($problem->findallproblemrules()) {
+ push @err, "$Script: " . $pr->info()->problemstr() . "\n";
+ }
+ }
+
+ warn join('', @err);
+
+ return \%p;
+ }
+
+ my $trans = $solver->transaction();
+
+ for ($trans->newsolvables()) {
+ my $dep;
+
+ if(defined &solv::Solver::describe_decision) {
+ my ($reason, $rule) = $solver->describe_decision($_);
+ if ($rule && $rule->{type} == $solv::Solver::SOLVER_RULE_RPM) {
+ $dep = $rule->info()->{solvable}{name};
+ }
+ else {
+ # print "XXX $_->{name}: type = $rule->{type}\n";
+ }
+ }
+
+ $p{$_->{name}} = $dep;
+ }
+
+ delete $p{$_} for (@$packages, @$ignore);
+ delete $p{$blackpkg->{name}};
+
+ return \%p;
+}
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/installation-images-17.0/obs/installation-images.spec
new/installation-images-17.2/obs/installation-images.spec
--- old/installation-images-17.0/obs/installation-images.spec 2021-04-27
13:02:18.000000000 +0200
+++ new/installation-images-17.2/obs/installation-images.spec 2021-05-04
16:17:56.000000000 +0200
@@ -339,6 +339,7 @@
BuildRequires: dash
BuildRequires: dbus-1-x11
BuildRequires: dd_rescue
+BuildRequires: debuginfod-client
BuildRequires: dejavu-fonts
BuildRequires: dhcp-server
BuildRequires: dmraid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/installation-images-17.0/test/20_lib_resolve_deps_libsolv.t
new/installation-images-17.2/test/20_lib_resolve_deps_libsolv.t
--- old/installation-images-17.0/test/20_lib_resolve_deps_libsolv.t
1970-01-01 01:00:00.000000000 +0100
+++ new/installation-images-17.2/test/20_lib_resolve_deps_libsolv.t
2021-05-04 16:17:56.000000000 +0200
@@ -0,0 +1,62 @@
+#! /usr/bin/perl
+
+use strict;
+use File::Temp;
+use File::Basename;
+use Test::More;
+
+use ResolveDepsLibsolv;
+
+$ResolveDepsLibsolv::Script = "test";
+
+sub fixture {
+ my $filename = shift;
+ my $dirname = dirname(__FILE__);
+ return "$dirname/data/$filename";
+}
+
+is_deeply(
+ resolve_deps_libsolv([], [], fixture "empty.solv"),
+ {},
+ "resolve an empty request"
+);
+
+is_deeply(
+ resolve_deps_libsolv(["bash"], [], fixture "bash-nodeps.solv"),
+ {},
+ "a missing dependency is not returned"
+);
+
+# package_name => pulled in by package_name
+my $bash_deps = {
+ "filesystem" => "glibc",
+ "glibc" => "bash",
+ "libgcc_s1" => "libncurses6",
+ "libncurses6" => "libreadline8",
+ "libreadline8" => "bash",
+ "libstdc++6" => "libncurses6",
+ "system-user-root" => "filesystem",
+ "terminfo-base" => "libncurses6",
+ "update-alternatives" => "bash",
+};
+
+is_deeply(
+ resolve_deps_libsolv(["bash"], [], fixture "bash-deps.solv"),
+ $bash_deps,
+ "resolve a bash request in a small solv"
+);
+
+my $partial_bash_deps = {
+ "filesystem" => "glibc",
+ "glibc" => "bash",
+ "system-user-root" => "filesystem",
+ "update-alternatives" => "bash",
+};
+
+is_deeply(
+ resolve_deps_libsolv(["bash"], ["libreadline8"], fixture "bash-deps.solv"),
+ $partial_bash_deps,
+ "resolve a bash request in a small solv, ignoring readline"
+);
+
+done_testing();
Binary files old/installation-images-17.0/test/data/bash-deps.solv and
new/installation-images-17.2/test/data/bash-deps.solv differ
Binary files old/installation-images-17.0/test/data/bash-nodeps.solv and
new/installation-images-17.2/test/data/bash-nodeps.solv differ
Binary files old/installation-images-17.0/test/data/empty.solv and
new/installation-images-17.2/test/data/empty.solv differ