Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package build for openSUSE:Factory checked 
in at 2023-12-02 17:12:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/build (Old)
 and      /work/SRC/openSUSE:Factory/.build.new.25432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "build"

Sat Dec  2 17:12:38 2023 rev:158 rq:1130219 version:20231201

Changes:
--------
--- /work/SRC/openSUSE:Factory/build/build.changes      2023-11-21 
21:31:20.621850482 +0100
+++ /work/SRC/openSUSE:Factory/.build.new.25432/build.changes   2023-12-02 
17:12:54.460764557 +0100
@@ -1,0 +2,31 @@
+Fri Dec  1 12:39:14 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- productcompose: follow incompatible flavor syntax change
+- pbuild: support for zstd
+
+-------------------------------------------------------------------
+Fri Dec  1 10:15:05 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- fixed handling for cmdline parameters via kernel packages
+
+-------------------------------------------------------------------
+Thu Nov 30 09:49:19 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- productcompose:
+  * BREAKING: support new schema
+  * adapt flavor architecture parsing
+
+-------------------------------------------------------------------
+Tue Nov 28 07:10:37 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- productcompose:
+  * support filtered package lists
+  * support default architecture listing
+  * fix copy in binaries in VM builds^
+
+-------------------------------------------------------------------
+Mon Nov 20 14:59:25 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- obsproduct build type got renamed to productcompose
+
+-------------------------------------------------------------------

Old:
----
  obs-build-20231120.tar.gz

New:
----
  obs-build-20231201.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ build.spec ++++++
--- /var/tmp/diff_new_pack.eufEOO/_old  2023-12-02 17:12:55.084787425 +0100
+++ /var/tmp/diff_new_pack.eufEOO/_new  2023-12-02 17:12:55.088787571 +0100
@@ -28,7 +28,7 @@
 Summary:        A Script to Build SUSE Linux RPMs
 License:        GPL-2.0-only OR GPL-3.0-only
 Group:          Development/Tools/Building
-Version:        20231120
+Version:        20231201
 Release:        0
 Source:         obs-build-%{version}.tar.gz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ PKGBUILD ++++++
--- /var/tmp/diff_new_pack.eufEOO/_old  2023-12-02 17:12:55.116788597 +0100
+++ /var/tmp/diff_new_pack.eufEOO/_new  2023-12-02 17:12:55.120788744 +0100
@@ -1,5 +1,5 @@
 pkgname=build
-pkgver=20231120
+pkgver=20231201
 pkgrel=0
 pkgdesc="Build packages in sandbox"
 arch=('i686' 'x86_64')

++++++ _service ++++++
--- /var/tmp/diff_new_pack.eufEOO/_old  2023-12-02 17:12:55.136789330 +0100
+++ /var/tmp/diff_new_pack.eufEOO/_new  2023-12-02 17:12:55.136789330 +0100
@@ -1,7 +1,7 @@
 <services>
   <service name="tar_scm" mode="manual">
-    <param name="revision">20231120</param>
-    <param name="version">20231120</param>
+    <param name="revision">20231201.1</param>
+    <param name="version">20231201</param>
     <param name="url">https://github.com/openSUSE/obs-build.git</param>
     <param name="scm">git</param>
     <param name="extract">dist/build.changes</param>

++++++ build.dsc ++++++
--- /var/tmp/diff_new_pack.eufEOO/_old  2023-12-02 17:12:55.156790063 +0100
+++ /var/tmp/diff_new_pack.eufEOO/_new  2023-12-02 17:12:55.156790063 +0100
@@ -1,6 +1,6 @@
 Format: 1.0
 Source: build
-Version: 20231120
+Version: 20231201
 Binary: build
 Maintainer: Adrian Schroeter <adr...@suse.de>
 Architecture: all

++++++ debian.changelog ++++++
--- /var/tmp/diff_new_pack.eufEOO/_old  2023-12-02 17:12:55.176790796 +0100
+++ /var/tmp/diff_new_pack.eufEOO/_new  2023-12-02 17:12:55.180790943 +0100
@@ -1,4 +1,4 @@
-build (20231120) unstable; urgency=low
+build (20231201) unstable; urgency=low
 
   * Update to current git trunk
     - add sles11sp2 build config and adapt autodetection

++++++ obs-build-20231120.tar.gz -> obs-build-20231201.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/Build/ObsProduct.pm 
new/obs-build-20231201/Build/ObsProduct.pm
--- old/obs-build-20231120/Build/ObsProduct.pm  2023-11-20 08:58:08.000000000 
+0100
+++ new/obs-build-20231201/Build/ObsProduct.pm  1970-01-01 01:00:00.000000000 
+0100
@@ -1,114 +0,0 @@
-################################################################
-#
-# Copyright (c) 2023 SUSE Linux Products GmbH
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 or 3 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program (see the file COPYING); if not, write to the
-# Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-#
-################################################################
-
-package Build::ObsProduct;
-
-use strict;
-use warnings;
-use Build::Rpm;
-
-my $yamlxs = eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; return 1 };
-my $yamlpp = eval { require YAML::PP; return YAML::PP->new };
-
-sub _have_yaml_parser {
-  return $yamlpp || $yamlxs ? 1 : undef;
-}
-
-sub _load_yaml {
-  my ($yaml) = @_;
-  my $data;
-  if ($yamlpp) {
-    $data = eval { $yamlpp->load_string($yaml) };
-    return $data;
-  }
-  if ($yamlxs) {
-    eval { $data = YAML::XS::Load($yaml) };
-    return $data;
-  }
-  die "Neither YAML::PP nor YAML::XS available\n";
-}
-
-sub _load_yaml_file {
-  my ($fn) = @_;
-  my $data;
-  if ($yamlpp) {
-    $data = eval { $yamlpp->load_file($fn) };
-    return $data;
-  }
-  if ($yamlxs) {
-    eval { $data = YAML::XS::LoadFile($fn) };
-    return $data;
-  }
-  die "Neither YAML::PP nor YAML::XS available\n";
-}
-
-sub filter_packages {
-  my (@list) = @_;
-  my @ret;
-  for my $item (@list) {
-  # FIXME filter by rules
-    push @ret, $item;
-  }
-  return @ret;
-}
-
-sub parse {
-  my ($cf, $fn) = @_;
-
-  my $data = _load_yaml_file($fn);
-  return { error => "Failed to parse file '$fn'" } unless defined $data;
-  my $ret = {};
-  $ret->{version} = $data->{'version'};
-  $ret->{name} = $data->{'name'} or die "OBS Product name is missing";
-  my $runtime_version = $data->{'runtime-version'};
-  my $sdk = $data->{sdk};
-
-  my @unpack_packdeps = filter_packages(@{$data->{'unpack_packages'}});
-  my @packdeps = filter_packages(@{$data->{'packages'}});
-  my @merged = (@unpack_packdeps, @packdeps);
-  $ret->{deps} = \@merged;
-
-  # can we live without additional repository config?
-
-  # Do we need source or debug packages?
-  my $bo = $data->{'build_options'};
-  if ($bo) {
-    $ret->{'sourcemedium'} = 1 if $bo->{'source'};
-    $ret->{'debugmedium'} = 1 if $bo->{'debug'};
-  }
-
-  return $ret;
-}
-
-sub show {
-    my ($fn, $field) = @ARGV;
-    my $cf = {};
-    my $d = parse($cf, $fn);
-    die "$d->{error}\n" if $d->{error};
-    my $value = $d->{ $field };
-    if (ref $value eq 'ARRAY') {
-        print "$_\n" for @$value;
-    }
-    else {
-        print "$value\n";
-    }
-}
-
-1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/Build/ProductCompose.pm 
new/obs-build-20231201/Build/ProductCompose.pm
--- old/obs-build-20231120/Build/ProductCompose.pm      1970-01-01 
01:00:00.000000000 +0100
+++ new/obs-build-20231201/Build/ProductCompose.pm      2023-12-01 
13:39:48.000000000 +0100
@@ -0,0 +1,150 @@
+################################################################
+#
+# Copyright (c) 2023 SUSE Linux Products GmbH
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or 3 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program (see the file COPYING); if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+#
+################################################################
+
+package Build::ProductCompose;
+
+use strict;
+use warnings;
+use Build::Rpm;
+
+my $yamlxs = eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; return 1 };
+my $yamlpp = eval { require YAML::PP; return YAML::PP->new };
+
+sub _have_yaml_parser {
+  return $yamlpp || $yamlxs ? 1 : undef;
+}
+
+sub _load_yaml {
+  my ($yaml) = @_;
+  my $data;
+  if ($yamlpp) {
+    $data = eval { $yamlpp->load_string($yaml) };
+    return $data;
+  }
+  if ($yamlxs) {
+    eval { $data = YAML::XS::Load($yaml) };
+    return $data;
+  }
+  die "Neither YAML::PP nor YAML::XS available\n";
+}
+
+sub _load_yaml_file {
+  my ($fn) = @_;
+  my $data;
+  if ($yamlpp) {
+    $data = eval { $yamlpp->load_file($fn) };
+    return $data;
+  }
+  if ($yamlxs) {
+    eval { $data = YAML::XS::LoadFile($fn) };
+    return $data;
+  }
+  die "Neither YAML::PP nor YAML::XS available\n";
+}
+
+sub filter_packages {
+  my (@list) = @_;
+  my @ret;
+  for my $item (@list) {
+  # FIXME filter by rules
+    push @ret, $item;
+  }
+  return @ret;
+}
+
+sub parse {
+  my ($cf, $fn) = @_;
+
+  my $data = _load_yaml_file($fn);
+  return { error => "Failed to parse file '$fn'" } unless defined $data;
+  my $ret = {};
+  $ret->{version} = $data->{'version'};
+  $ret->{name} = $data->{'name'} or die "OBS Product name is missing";
+  my $runtime_version = $data->{'runtime-version'};
+  my $sdk = $data->{sdk};
+  my @architectures;
+
+  # Do we need source or debug packages?
+  my $bo = $data->{'build_options'};
+  if ($bo) {
+  }
+  $ret->{'sourcemedium'} = 1 if $data->{'source'};
+  $ret->{'debugmedium'} = 1 if $data->{'debug'};
+  @architectures = @{$data->{'architectures'} || []};
+  if ($data->{'flavors'}) {
+    if ($data->{'flavors'}) {
+      my $f = $data->{'flavors'}->{$cf->{'buildflavor'}};
+      return { error => "Flavor '$cf->{'buildflavor'}' not found" } unless 
defined $f;
+      @architectures = @{$f->{'architectures'} || []} if $f->{'architectures'};
+    }
+    if (@architectures) {
+      $ret->{'exclarch'} = \@architectures;
+    } else {
+      # We have flavors, but no architecture defined.
+      # This can also exclude the main package in multibuild case
+      $ret->{'error'} = 'excluded';
+    }
+  } else {
+    $ret->{'exclarch'} = \@architectures if @architectures;
+  }
+
+  my @unpack_packdeps = filter_packages(@{$data->{'unpack_packages'}});
+  my @packdeps = filter_packages(@{$data->{'packages'}});
+  my @merged;
+  for my $dep (@unpack_packdeps, @packdeps) {
+    if (ref($dep) eq 'HASH') {
+      next if $dep->{'flavors'} && grep { $_ eq $cf->{'buildflavor'} } 
@{$dep->{'flavors'} || []};
+      if ($dep->{'architectures'}) {
+        my $match;
+        for my $a (@architectures) {
+          $match = 1 if grep { $_ eq $a } @{$dep->{'architectures'} || []};
+        }
+       next unless $match;
+      }
+      for my $d (@{$dep->{'packages'}}) {
+        push @merged, $d;
+      }
+    } else {
+      push @merged, $dep;
+    }
+  }
+  $ret->{deps} = \@merged;
+
+  # We have currently no option to configure own path list for the product on 
purpose
+  $ret->{path} = [ { project => '_obsrepositories', repository => '' } ];
+
+  return $ret;
+}
+
+sub show {
+    my ($fn, $field) = @ARGV;
+    my $cf = {};
+    my $d = parse($cf, $fn);
+    die "$d->{error}\n" if $d->{error};
+    my $value = $d->{ $field };
+    if (ref $value eq 'ARRAY') {
+        print "$_\n" for @$value;
+    }
+    else {
+        print "$value\n";
+    }
+}
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/Build.pm 
new/obs-build-20231201/Build.pm
--- old/obs-build-20231120/Build.pm     2023-11-20 08:58:08.000000000 +0100
+++ new/obs-build-20231201/Build.pm     2023-12-01 13:39:48.000000000 +0100
@@ -44,7 +44,7 @@
 our $do_helm;
 our $do_flatpak;
 our $do_mkosi;
-our $do_obsproduct;
+our $do_productcompose;
 
 sub import {
   for (@_) {
@@ -61,9 +61,9 @@
     $do_helm = 1 if $_ eq ':helm';
     $do_flatpak = 1 if $_ eq ':flatpak';
     $do_mkosi = 1 if $_ eq ':mkosi';
-    $do_obsproduct = 1 if $_ eq ':obsproduct';
+    $do_productcompose = 1 if $_ eq ':productcompose';
   }
-  $do_rpm = $do_deb = $do_kiwi = $do_obsproduct = $do_arch = $do_collax = 
$do_livebuild = $do_snapcraft = $do_appimage = $do_docker = $do_fissile = 
$do_helm = $do_flatpak = $do_mkosi = 1 if !$do_rpm && !$do_deb && !$do_kiwi && 
!$do_arch && !$do_collax && !$do_livebuild && !$do_snapcraft && !$do_appimage 
&& !$do_docker && !$do_fissile && !$do_helm && !$do_flatpak && !$do_mkosi && 
!$do_obsproduct;
+  $do_rpm = $do_deb = $do_kiwi = $do_productcompose = $do_arch = $do_collax = 
$do_livebuild = $do_snapcraft = $do_appimage = $do_docker = $do_fissile = 
$do_helm = $do_flatpak = $do_mkosi = 1 if !$do_rpm && !$do_deb && !$do_kiwi && 
!$do_arch && !$do_collax && !$do_livebuild && !$do_snapcraft && !$do_appimage 
&& !$do_docker && !$do_fissile && !$do_helm && !$do_flatpak && !$do_mkosi && 
!$do_productcompose;
 
   if ($do_deb) {
     require Build::Deb;
@@ -101,8 +101,8 @@
   if ($do_mkosi) {
     require Build::Mkosi;
   }
-  if ($do_obsproduct) {
-    require Build::ObsProduct;
+  if ($do_productcompose) {
+    require Build::ProductCompose;
   }
 }
 
@@ -198,6 +198,9 @@
   'system-packages:kiwi-product' => [
     'kiwi',
   ],
+  'system-packages:productcompose' => [
+    'product-composer',
+  ],
   'system-packages:docker' => [
     'docker', 'system-packages:repo-creation',
   ],
@@ -831,6 +834,9 @@
     @sysdeps = @{$config->{'substitute'}->{'system-packages:kiwi-image'} || 
[]};
     @sysdeps = @{$config->{'substitute'}->{'kiwi-setup:image'} || []} unless 
@sysdeps;
     @sysdeps = @{$subst_defaults{'system-packages:kiwi-image'} || []} unless 
@sysdeps;
+  } elsif ($buildtype eq 'productcompose') {
+    @sysdeps = @{$config->{'substitute'}->{'system-packages:productcompose'} 
|| []};
+    @sysdeps = @{$subst_defaults{'system-packages:productcompose'} || []} 
unless @sysdeps;
   } elsif ($buildtype eq 'kiwi-product') {
     @sysdeps = @{$config->{'substitute'}->{'system-packages:kiwi-product'} || 
[]};
     @sysdeps = @{$config->{'substitute'}->{'kiwi-setup:product'} || []} unless 
@sysdeps;
@@ -1263,7 +1269,7 @@
 sub recipe2buildtype {
   my ($recipe) = @_;
   return undef unless defined $recipe;
-  return $1 if $recipe =~ /\.(spec|dsc|kiwi|obsproduct|livebuild)$/;
+  return $1 if $recipe =~ /\.(spec|dsc|kiwi|productcompose|livebuild)$/;
   $recipe =~ s/.*\///;
   $recipe =~ s/^_service:.*://;
   return 'arch' if $recipe eq 'PKGBUILD';
@@ -1321,7 +1327,7 @@
   return Build::Kiwi::parse($cf, $fn, @args) if $do_kiwi && $fn =~ /\.kiwi$/;
   return Build::LiveBuild::parse($cf, $fn, @args) if $do_livebuild && $fn =~ 
/\.livebuild$/;
   return Build::Mkosi::parse($cf, $fn, @args) if $do_mkosi && $fn =~ 
/^mkosi\./;
-  return Build::ObsProduct::parse($cf, $fn, @args) if $do_obsproduct && $fn =~ 
/\.obsproduct$/;
+  return Build::ProductCompose::parse($cf, $fn, @args) if $do_productcompose 
&& $fn =~ /\.productcompose$/;
   return parse_typed($cf, $fn, recipe2buildtype($fn), @args);
 }
 
@@ -1331,7 +1337,7 @@
   return Build::Rpm::parse($cf, $fn, @args) if $do_rpm && $buildtype eq 'spec';
   return Build::Deb::parse($cf, $fn, @args) if $do_deb && $buildtype eq 'dsc';
   return Build::Kiwi::parse($cf, $fn, @args) if $do_kiwi && $buildtype eq 
'kiwi';
-  return Build::ObsProduct::parse($cf, $fn, @args) if $do_obsproduct && 
$buildtype eq 'obsproduct';
+  return Build::ProductCompose::parse($cf, $fn, @args) if $do_productcompose 
&& $buildtype eq 'productcompose';
   return Build::LiveBuild::parse($cf, $fn, @args) if $do_livebuild && 
$buildtype eq 'livebuild';
   return Build::Snapcraft::parse($cf, $fn, @args) if $do_snapcraft && 
$buildtype eq 'snapcraft';
   return Build::Appimage::parse($cf, $fn, @args) if $do_appimage && $buildtype 
eq 'appimage';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/PBuild/Job.pm 
new/obs-build-20231201/PBuild/Job.pm
--- old/obs-build-20231120/PBuild/Job.pm        2023-11-20 08:58:08.000000000 
+0100
+++ new/obs-build-20231201/PBuild/Job.pm        2023-12-01 13:39:48.000000000 
+0100
@@ -375,10 +375,6 @@
     rmdir("$buildroot/.build.packages");
   }
   rename("$buildroot/.mount/.build.packages", "$buildroot/.build.packages") || 
die("final rename failed: $!\n");
-  # XXX: extracted cpio is flat but code below expects those directories...
-  symlink('.', "$buildroot/.build.packages/SRPMS");
-  symlink('.', "$buildroot/.build.packages/DEBS");
-  symlink('.', "$buildroot/.build.packages/KIWI");
 }
 
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/PBuild/Recipe.pm 
new/obs-build-20231201/PBuild/Recipe.pm
--- old/obs-build-20231120/PBuild/Recipe.pm     2023-11-20 08:58:08.000000000 
+0100
+++ new/obs-build-20231201/PBuild/Recipe.pm     2023-12-01 13:39:48.000000000 
+0100
@@ -72,8 +72,8 @@
       return $files{$files[0]};
     }
   }
-  if ($type ne 'obsproduct') {
-    @files = grep {/\.obsproduct$/} keys %files;
+  if ($type ne 'productcompose') {
+    @files = grep {/\.productcompose$/} keys %files;
     @files = grep {/^\Q$pkg\E/i} @files if @files > 1;
     return $files{$files[0]} if @files == 1;
     if (@files > 1) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/PBuild/RemoteRepo.pm 
new/obs-build-20231201/PBuild/RemoteRepo.pm
--- old/obs-build-20231120/PBuild/RemoteRepo.pm 2023-11-20 08:58:08.000000000 
+0100
+++ new/obs-build-20231201/PBuild/RemoteRepo.pm 2023-12-01 13:39:48.000000000 
+0100
@@ -112,6 +112,10 @@
   open($fh, '<', $filename) or die("Error opening $filename: $!\n");
   if ($filename =~ /\.gz$/) {
     $fh = IO::Uncompress::Gunzip->new($fh) or die("Error opening $filename: 
$IO::Uncompress::Gunzip::GunzipError\n");
+  } elsif ($filename =~ /\.$/) {
+    open($fh, '-|', 'xz', '-d', '-c', '--', $filename) || die("Error opening 
$filename: $!\n");
+  } elsif ($filename =~ /\.zst$/) {
+    open($fh, '-|', 'zstd', '-d', '-c', '--', $filename) || die("Error opening 
$filename: $!\n");
   }
   return $fh;
 }
@@ -132,7 +136,7 @@
   for my $f (@primaryfiles) {
     my $u = "$f->{'location'}";
     utf8::downgrade($u);
-    next unless $u =~ /(primary\.xml(?:\.gz)?)$/s;
+    next unless $u =~ /(primary\.xml(?:\.gz|\.xz|\.zst)?)$/s;
     my $fn = $1;
     if ($opts{'iszypp'}) {
       $fn = $u;
@@ -151,7 +155,7 @@
   for my $f (@moduleinfofiles) {
     my $u = "$f->{'location'}";
     utf8::downgrade($u);
-    next unless $u =~ /(modules\.yaml(?:\.gz)?)$/s;
+    next unless $u =~ /(modules\.yaml(?:\.gz|\.xz|\.zst)?)$/s;
     my $fn = $1;
     die("zypp:// repos do not support module data\n") if $opts{'iszypp'};
     die("modules file $u does not have a checksum\n") unless $f->{'checksum'} 
&& $f->{'checksum'} =~ /:(.*)/;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/build new/obs-build-20231201/build
--- old/obs-build-20231120/build        2023-11-20 08:58:08.000000000 +0100
+++ new/obs-build-20231201/build        2023-12-01 13:39:48.000000000 +0100
@@ -843,7 +843,7 @@
 
 copy_sources() {
     local include_directories
-    if test -n "$RUNNING_IN_VM" -o "$BUILDTYPE" = kiwi -o "$BUILDTYPE" = 
docker -o "$BUILDTYPE" = fissile -o "$BUILDTYPE" = podman ; then
+    if test -n "$RUNNING_IN_VM" -o "$BUILDTYPE" = kiwi -o "$BUILDTYPE" = 
docker -o "$BUILDTYPE" = fissile -o "$BUILDTYPE" = podman  -o "$BUILDTYPE" = 
productcompose ; then
         include_directories=true
     fi
     if test -n "$RUNNING_IN_VM" -o -n "$COPY_SOURCES_ASIS" -o -n 
"$RPM_BUILD_IN_PLACE" ; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/build-recipe 
new/obs-build-20231201/build-recipe
--- old/obs-build-20231120/build-recipe 2023-11-20 08:58:08.000000000 +0100
+++ new/obs-build-20231201/build-recipe 2023-12-01 13:39:48.000000000 +0100
@@ -32,7 +32,7 @@
 BUILD_CHANGELOG_TIMESTAMP=
 VCSURL=
 
-for i in spec dsc kiwi obsproduct arch collax preinstallimage simpleimage mock 
livebuild snapcraft debootstrap debbuild appimage docker podman fissile helm 
flatpak mkosi; do
+for i in spec dsc kiwi productcompose arch collax preinstallimage simpleimage 
mock livebuild snapcraft debootstrap debbuild appimage docker podman fissile 
helm flatpak mkosi; do
     . "$BUILD_DIR/build-recipe-$i"
 done
 
@@ -122,7 +122,7 @@
         *.spec|*.src.rpm) BUILDTYPE=spec ;;
         *.dsc) BUILDTYPE=dsc ;;
         *.kiwi) BUILDTYPE=kiwi ;;
-        *.obsproduct) BUILDTYPE=obsproduct ;;
+        *.productcompose) BUILDTYPE=productcompose ;;
         PKGBUILD) BUILDTYPE=arch ;;
         snapcraft.yaml) BUILDTYPE=snapcraft ;;
         appimage.yml) BUILDTYPE=appimage ;;
@@ -185,7 +185,7 @@
                    case $(queryconfig --dist "$BUILD_DIST" --configdir 
"$CONFIG_DIR" --archpath "$BUILD_ARCH" type) in
                        dsc) types=".dsc" ;;
                        kiwi) types=".kiwi" ;;
-                       obsproduct) types=".obsproduct" ;;
+                       productcompose) types=".productcompose" ;;
                        arch) types="PKGBUILD" ;;
                        collax) types="build.collax" ;;
                        livebuild) types=".livebuild" ;;
@@ -193,7 +193,7 @@
                        mkosi) types="mkosi." ;;
                    esac
                fi
-               types="$types .spec _specsubdir:package _specsubdir:dist .dsc 
PKGBUILD Dockerfile build.collax .kiwi .obsproduct .src.rpm .nosrc.rpm 
simpleimage snapcraft.yaml Chart.yaml flatpak.yaml flatpak.json mkosi."
+               types="$types .spec _specsubdir:package _specsubdir:dist .dsc 
PKGBUILD Dockerfile build.collax .kiwi .productcompose .src.rpm .nosrc.rpm 
simpleimage snapcraft.yaml Chart.yaml flatpak.yaml flatpak.json mkosi."
            fi
            for t in $types ; do
                found=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/build-recipe-obsproduct 
new/obs-build-20231201/build-recipe-obsproduct
--- old/obs-build-20231120/build-recipe-obsproduct      2023-11-20 
08:58:08.000000000 +0100
+++ new/obs-build-20231201/build-recipe-obsproduct      1970-01-01 
01:00:00.000000000 +0100
@@ -1,77 +0,0 @@
-#
-# KIWI specific functions. Handle with care.
-#
-################################################################
-#
-# Copyright (c) 2023 SUSE Linux Products GmbH
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 or 3 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program (see the file COPYING); if not, write to the
-# Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-#
-################################################################
-
-
-recipe_setup_obsproduct() {
-    TOPDIR=/usr/src/packages
-    test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR"
-    mkdir -p "$BUILD_ROOT$TOPDIR"
-    mkdir -p "$BUILD_ROOT$TOPDIR/OTHER"
-    mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES"
-    mkdir -p "$BUILD_ROOT$TOPDIR/OBSPRODUCT"
-    # compat, older build versions did not clean TOPDIR ...
-    mkdir -p "$BUILD_ROOT$TOPDIR/BUILD"
-    mkdir -p "$BUILD_ROOT$TOPDIR/RPMS"
-    mkdir -p "$BUILD_ROOT$TOPDIR/SRPMS"
-
-    if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir; then
-       mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
-    else
-       if test -z "$LINKSOURCES" ; then
-           cp -dLR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ || 
cleanup_and_exit 1 "source copy failed"
-       else
-           cp -lR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ || 
cleanup_and_exit 1 "source copy failed"
-       fi
-    fi
-    chown -hR "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR"
-
-    if test -z "$ABUILD_TARGET"; then
-        ABUILD_TARGET=$(queryconfig target --dist "$BUILD_DIST" --configdir 
"$CONFIG_DIR" --archpath "$BUILD_ARCH" )
-        test -z "$ABUILD_TARGET" || echo "build target is $ABUILD_TARGET"
-    fi
-}
-
-recipe_prepare_obsproduct() {
-    :
-}
-
-recipe_build_obsproduct() {
-    echo "running obs product builder..."
-
-    extra_args=""
-    if test -n "$RELEASE" ; then
-       extra_args=" $extra_args --release $RELEASE"
-    fi
-    if test -n "$BUILD_FLAVOR" ; then
-       extra_args=" $extra_args --flavor $BUILD_FLAVOR"
-    fi
-    chroot "$BUILD_ROOT" su -c "/usr/bin/obs-product-builder build $extra_args 
-v --clean $TOPDIR/SOURCES/$RECIPEFILE $TOPDIR/OBSPRODUCT" - abuild < /dev/null 
&& BUILD_SUCCEEDED=true
-}
-
-recipe_resultdirs_obsproduct() {
-    echo OBSPRODUCT
-}
-
-recipe_cleanup_obsproduct() {
-    :
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/build-recipe-productcompose 
new/obs-build-20231201/build-recipe-productcompose
--- old/obs-build-20231120/build-recipe-productcompose  1970-01-01 
01:00:00.000000000 +0100
+++ new/obs-build-20231201/build-recipe-productcompose  2023-12-01 
13:39:48.000000000 +0100
@@ -0,0 +1,77 @@
+#
+# KIWI specific functions. Handle with care.
+#
+################################################################
+#
+# Copyright (c) 2023 SUSE Linux Products GmbH
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or 3 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program (see the file COPYING); if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+#
+################################################################
+
+
+recipe_setup_productcompose() {
+    TOPDIR=/usr/src/packages
+    test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR"
+    mkdir -p "$BUILD_ROOT$TOPDIR"
+    mkdir -p "$BUILD_ROOT$TOPDIR/OTHER"
+    mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES"
+    mkdir -p "$BUILD_ROOT$TOPDIR/PRODUCT"
+    # compat, older build versions did not clean TOPDIR ...
+    mkdir -p "$BUILD_ROOT$TOPDIR/BUILD"
+    mkdir -p "$BUILD_ROOT$TOPDIR/RPMS"
+    mkdir -p "$BUILD_ROOT$TOPDIR/SRPMS"
+
+    if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir; then
+       mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
+    else
+       if test -z "$LINKSOURCES" ; then
+           cp -dLR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ || 
cleanup_and_exit 1 "source copy failed"
+       else
+           cp -lR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ || 
cleanup_and_exit 1 "source copy failed"
+       fi
+    fi
+    chown -hR "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR"
+
+    if test -z "$ABUILD_TARGET"; then
+        ABUILD_TARGET=$(queryconfig target --dist "$BUILD_DIST" --configdir 
"$CONFIG_DIR" --archpath "$BUILD_ARCH" )
+        test -z "$ABUILD_TARGET" || echo "build target is $ABUILD_TARGET"
+    fi
+}
+
+recipe_prepare_productcompose() {
+    :
+}
+
+recipe_build_productcompose() {
+    echo "running product composer..."
+
+    extra_args=""
+    if test -n "$RELEASE" ; then
+       extra_args=" $extra_args --release $RELEASE"
+    fi
+    if test -n "$BUILD_FLAVOR" ; then
+       extra_args=" $extra_args --flavor $BUILD_FLAVOR"
+    fi
+    chroot "$BUILD_ROOT" su -c "/usr/bin/product-composer build $extra_args -v 
--clean $TOPDIR/SOURCES/$RECIPEFILE $TOPDIR/PRODUCT" - abuild < /dev/null && 
BUILD_SUCCEEDED=true
+}
+
+recipe_resultdirs_productcompose() {
+    echo PRODUCT
+}
+
+recipe_cleanup_productcompose() {
+    :
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/build-vm 
new/obs-build-20231201/build-vm
--- old/obs-build-20231120/build-vm     2023-11-20 08:58:08.000000000 +0100
+++ new/obs-build-20231201/build-vm     2023-12-01 13:39:48.000000000 +0100
@@ -1083,9 +1083,6 @@
            if test -f "$BUILD_ROOT/.build.initrd.$vm_type" -a ! -L 
"$BUILD_ROOT/.build.initrd.$vm_type" ; then
                cp "$BUILD_ROOT/.build.initrd.$vm_type" 
"$KERNEL_TEMP_DIR/initrd"
            fi
-           if test -f "$BUILD_ROOT/.build.cmdline.$vm_type" -a ! -L 
"$BUILD_ROOT/.build.cmdline.$vm_type" ; then
-               vm_cmdline="$(cat $BUILD_ROOT/.build.cmdline.$vm_type)"
-           fi
        fi
        check_exit
        if test -n "$VM_USE_MKFS_COPYIN" ; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/build-vm-kvm 
new/obs-build-20231201/build-vm-kvm
--- old/obs-build-20231120/build-vm-kvm 2023-11-20 08:58:08.000000000 +0100
+++ new/obs-build-20231201/build-vm-kvm 2023-12-01 13:39:48.000000000 +0100
@@ -417,6 +417,10 @@
        fi
     fi
 
+    if test -z "$VM_KERNEL" -a -z "$VM_CMDLINE" -a -f 
"$BUILD_ROOT/.build.cmdline.$vm_type" -a ! -L 
"$BUILD_ROOT/.build.cmdline.$vm_type" ; then
+       vm_cmdline="$(cat $BUILD_ROOT/.build.cmdline.$vm_type)"
+    fi
+
     # move IO into separate I/O thread for some architectures
     if test "${kvm_device%%-*}" = "virtio" ; then
         if $kvm_bin -version | grep -F -q 7.1.0; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/dist/build.changes 
new/obs-build-20231201/dist/build.changes
--- old/obs-build-20231120/dist/build.changes   2023-11-20 08:58:08.000000000 
+0100
+++ new/obs-build-20231201/dist/build.changes   2023-12-01 13:39:48.000000000 
+0100
@@ -1,4 +1,42 @@
 -------------------------------------------------------------------
+Fri Dec  1 12:39:14 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- productcompose: follow incompatible flavor syntax change
+- pbuild: support for zstd
+
+-------------------------------------------------------------------
+Fri Dec  1 10:15:05 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- fixed handling for cmdline parameters via kernel packages
+
+-------------------------------------------------------------------
+Thu Nov 30 09:49:19 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- productcompose:
+  * BREAKING: support new schema
+  * adapt flavor architecture parsing
+
+-------------------------------------------------------------------
+Tue Nov 28 07:10:37 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- productcompose:
+  * support filtered package lists
+  * support default architecture listing
+  * fix copy in binaries in VM builds^
+
+-------------------------------------------------------------------
+Mon Nov 20 14:59:25 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- obsproduct build type got renamed to productcompose
+
+-------------------------------------------------------------------
+Mon Nov 20 08:00:48 UTC 2023 - Adrian Schröter <adr...@suse.de>
+
+- Support zstd compressed rpm-md meta data (bsc#1217269)
+- Added Debian 12 configuration
+- First ObsProduct build format support
+
+-------------------------------------------------------------------
 Fri Nov  3 10:03:35 UTC 2023 - Adrian Schröter <adr...@suse.de>
 
 - fix SLE 15 SP5 build configuration
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/docs/build_config.adoc 
new/obs-build-20231201/docs/build_config.adoc
--- old/obs-build-20231120/docs/build_config.adoc       2023-11-20 
08:58:08.000000000 +0100
+++ new/obs-build-20231201/docs/build_config.adoc       2023-12-01 
13:39:48.000000000 +0100
@@ -395,7 +395,7 @@
 Build recipe type. This is the format of the file which provides the
 build description. This gets usually autodetected, but in some rare
 cases it can be set here to either one of these: spec, dsc, kiwi,
-livebuild, arch, preinstallimage, obsproduct.
+livebuild, arch, preinstallimage, productcompose.
 
 Defines the build recipe format. Valid values are currently: none, spec,
 dsc, arch, kiwi, preinstallimage. If no type is specified, OBS deduces a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/expanddeps 
new/obs-build-20231201/expanddeps
--- old/obs-build-20231120/expanddeps   2023-11-20 08:58:08.000000000 +0100
+++ new/obs-build-20231201/expanddeps   2023-12-01 13:39:48.000000000 +0100
@@ -382,7 +382,7 @@
 
 my @sysdeps = Build::get_sysbuild($cf, $buildtype, $extrasysdeps);
 
-if ($buildtype eq 'kiwi-image' || $buildtype eq 'kiwi-product' || $buildtype 
eq 'obsproduct') {
+if ($buildtype eq 'kiwi-image' || $buildtype eq 'kiwi-product' || $buildtype 
eq 'productcompose') {
   if (!shift @sysdeps) {
     print STDERR "expansion error\n";
     print STDERR "  $_\n" for @sysdeps;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20231120/init_buildsystem 
new/obs-build-20231201/init_buildsystem
--- old/obs-build-20231120/init_buildsystem     2023-11-20 08:58:08.000000000 
+0100
+++ new/obs-build-20231201/init_buildsystem     2023-12-01 13:39:48.000000000 
+0100
@@ -197,6 +197,7 @@
        rm -rf -- "$BUILD_ROOT"/*
        rm -rf -- "$BUILD_ROOT/.build"
        rm -rf -- "$BUILD_ROOT"/.build.console.*
+       rm -rf -- "$BUILD_ROOT"/.build.cmdline.*
        rm -rf -- "$BUILD_ROOT"/.build.hostarch.*
        rm -rf -- "$BUILD_ROOT"/.build.kernel.*
        rm -rf -- "$BUILD_ROOT"/.build.initrd.*
@@ -249,7 +250,7 @@
        # please keep in sync with recipe_build_preinstallimage
        case "$i" in
            .|..|build-preinstall) continue ;;
-           .build.kernel.*|.build.hostarch.*|.build.initrd.*|.build.console.*) 
;;
+           
.build.kernel.*|.build.hostarch.*|.build.initrd.*|.build.console.*|.build.cmdline.*)
 ;;
            
.build*|.init_b_cache|.preinstallimage*|.srcfiles*|.pkgs|.rpm-cache|installed-pkg|proc|sys)
 continue ;;
        esac
         mv_args[${#mv_args[@]}]="$i"
@@ -264,7 +265,7 @@
     for i in * .* ; do
        case "$i" in
            .|..|build-preinstall) continue ;;
-           .build.kernel.*|.build.hostarch.*|.build.initrd.*|.build.console.*) 
;;
+           
.build.kernel.*|.build.hostarch.*|.build.initrd.*|.build.console.*|.build.cmdline.*)
 ;;
            
.build*|.init_b_cache|.preinstallimage*|.srcfiles*|.pkgs|.rpm-cache|installed-pkg|proc|sys)
 continue ;;
        esac
         mv_args[${#mv_args[@]}]="$i"

Reply via email to