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"