Hello community,

here is the log from the commit of package build for openSUSE:Factory checked 
in at 2020-08-25 09:31:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/build (Old)
 and      /work/SRC/openSUSE:Factory/.build.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "build"

Tue Aug 25 09:31:47 2020 rev:132 rq:828094 version:20200520

Changes:
--------
--- /work/SRC/openSUSE:Factory/build/build.changes      2020-05-29 
21:13:22.374333290 +0200
+++ /work/SRC/openSUSE:Factory/.build.new.3399/build.changes    2020-08-25 
09:32:09.927980001 +0200
@@ -1,0 +2,32 @@
+Thu Aug 20 08:07:30 UTC 2020 - Adrian Schröter <[email protected]>
+
+- fix factory version in config file bsc#1170956
+- add missing ignores for Leap 15.2 bsc#1174854
+- fix sysrq handling for KVM builds
+- avoid double removal of obscpio files
+- docker:
+  * support builds using USER root statements
+  * proper error handling when obs-docker-support gets called as 
+    non-root
+  * helm build target support
+  * support milestone handling
+- support repo files without types set (SLE 15 SP2 zypp)
+- add default substitute for system-packages:repo-creation
+- Support recursive kiwi profile usage
+
+-------------------------------------------------------------------
+Thu Jul 23 05:38:24 UTC 2020 - Frank Schreiner <[email protected]>
+
+- fix dependencies for Fedora 33
+- Set $YAML::XS::LoadBlessed = 0 for Appimage/Snapcraft
+- add a new variable to track build time needed for ccache eviction
+- create folder for ccache archive to be copied before rsync
+- also package pkg-config files by default into baselibs. (bsc#1172563 etc)
+- Use shorter kernel flag for mitigations
+- Ignore, if shutdown behavior changed by build in z/VM
+- Control disk-space consumption while creating ccache archive
+- cleaning ccache
+- create folders before trying to copy ccache.tar
+- Genreadte .packages and .basepackages files for docker builds
+
+-------------------------------------------------------------------

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

Other differences:
------------------
++++++ build.spec ++++++
--- /var/tmp/diff_new_pack.GY2vPZ/_old  2020-08-25 09:32:13.875982306 +0200
+++ /var/tmp/diff_new_pack.GY2vPZ/_new  2020-08-25 09:32:13.879982307 +0200
@@ -88,6 +88,11 @@
 Recommends:     %{__pkg_name}-mkdrpms
 %endif
 
+# With fedora 33 the POSIX module was split out of the perl
+# package
+BuildRequires:  perl(POSIX)
+Requires:       perl(POSIX)
+
 %description
 This package provides a script for building RPMs for SUSE Linux in a
 chroot environment.
@@ -118,7 +123,7 @@
 %endif
 
 %define initvm_arch %{_host_cpu}
-%if %{_host_cpu} == "i686"
+%if "%{_host_cpu}" == "i686"
 %define initvm_arch i586
 %endif
 %package initvm-%{initvm_arch}

++++++ obs-build-20200520.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/Build/Appimage.pm 
new/obs-build-20200520/Build/Appimage.pm
--- old/obs-build-20200520/Build/Appimage.pm    2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/Build/Appimage.pm    2020-08-20 10:13:26.000000000 
+0200
@@ -24,7 +24,7 @@
 use Build::Deb;
 use Build::Rpm;
 
-eval { require YAML::XS; };
+eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; };
 *YAML::XS::LoadFile = sub {die("YAML::XS is not available\n")} unless defined 
&YAML::XS::LoadFile;
 
 sub parse {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/Build/Docker.pm 
new/obs-build-20200520/Build/Docker.pm
--- old/obs-build-20200520/Build/Docker.pm      2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/Build/Docker.pm      2020-08-20 10:13:26.000000000 
+0200
@@ -172,6 +172,9 @@
       if ($line =~ /^#!NoSquash\s*$/) {
         $nosquash = 1;
       }
+      if ($line =~ /^#!Milestone:\s*(\S+)\s*$/) {
+       $ret->{'milestone'} = $1;
+      }
       next;
     }
     # add continuation lines
@@ -289,6 +292,7 @@
   $containerinfo->{'disturl'} = $disturl if defined $disturl;
   $containerinfo->{'version'} = $d->{'version'} if defined $d->{'version'};
   $containerinfo->{'release'} = $release if defined $release;
+  $containerinfo->{'milestone'} = $d->{'milestone'} if defined 
$d->{'milestone'};
   print Build::SimpleJSON::unparse($containerinfo)."\n";
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/Build/Helm.pm 
new/obs-build-20200520/Build/Helm.pm
--- old/obs-build-20200520/Build/Helm.pm        1970-01-01 01:00:00.000000000 
+0100
+++ new/obs-build-20200520/Build/Helm.pm        2020-08-20 10:13:26.000000000 
+0200
@@ -0,0 +1,139 @@
+################################################################
+#
+# Copyright (c) 2020 SUSE LLC
+#
+# 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::Helm;
+
+use strict;
+
+use Build::SimpleJSON;
+use Digest;
+
+eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; };
+*YAML::XS::LoadFile = sub {die("YAML::XS is not available\n")} unless defined 
&YAML::XS::LoadFile;
+
+sub verify_config {
+  my ($d) = @_;
+  die("bad config\n") unless ref($d) eq 'HASH';
+  for my $k ('name', 'version') {
+    die("missing element '$k'\n") unless defined $d->{$k};
+    die("bad element '$k'\n") unless ref($d->{$k}) eq '';
+    die("empty element '$k'\n") if $d->{$k} eq '';
+    die("bad element '$k'\n\n") if $d->{$k} =~ /[\/\000-\037]/;
+  }
+  die("bad name\n") if $d->{'name'} =~ /^[-\.]/;
+}
+
+sub parse {
+  my ($cf, $fn) = @_;
+  my $d;
+  my $fd;
+  return {'error' => "$fn: $!"} unless open($fd, '<', $fn);
+  my @tags;
+  while (<$fd>) {
+    chomp;
+    next if /^\s*$/;
+    last unless /^\s*#/;
+    push @tags, split(' ', $1) if /^#!BuildTag:\s*(.*?)$/;
+  }
+  close($fd);
+  eval {
+    $d = YAML::XS::LoadFile($fn);
+    verify_config($d);
+  };
+  if ($@) {
+    my $err = $@;
+    chomp $@;
+    return {'error' => "Failed to parse yml file: $err"};
+  }
+  
+  my $res = {};
+  $res->{'name'} = $d->{'name'};
+  $res->{'version'} = $d->{'version'};
+  my $release = $cf->{'buildrelease'};
+  for (@tags) {
+    s/<NAME>/$d->{'name'}/g;
+    s/<VERSION>/$d->{'version'}/g;
+    s/<RELEASE>/$release/g;
+  }
+  $res->{'containertags'} = \@tags if @tags;
+  return $res;
+}
+
+sub show {
+  my ($release, $disturl, $chart);
+  while (@ARGV) {
+    if (@ARGV > 2 && $ARGV[0] eq '--release') {
+      (undef, $release) = splice(@ARGV, 0, 2); 
+    } elsif (@ARGV > 2 && $ARGV[0] eq '--disturl') {
+      (undef, $disturl) = splice(@ARGV, 0, 2);
+    } elsif (@ARGV > 2 && $ARGV[0] eq '--chart') {
+      (undef, $chart) = splice(@ARGV, 0, 2); 
+    } else {
+      last;
+    }   
+  }
+  my ($fn, $field) = @ARGV;
+  my $d = {};
+  $d->{'buildrelease'} = $release if defined $release;
+  $d = parse({}, $fn) if $fn;
+  die("$d->{'error'}\n") if $d->{'error'};
+
+  if ($field eq 'helminfo') {
+    my $config_yaml = '';
+    my $fd;
+    die("$fn: $!\n") unless open($fd, '<', $fn);
+    1 while sysread($fd, $config_yaml, 8192, length($config_yaml));
+    close($fd);
+    my $config = YAML::XS::Load($config_yaml);
+    verify_config($config);
+    my $config_json = Build::SimpleJSON::unparse($config)."\n";
+    my $helminfo = {};
+    $helminfo->{'name'} = $d->{'name'};
+    $helminfo->{'version'} = $d->{'version'};
+    $helminfo->{'release'} = $release if $release;
+    $helminfo->{'tags'} = $d->{'containertags'} if $d->{'containertags'};
+    $helminfo->{'disturl'} = $disturl if $disturl;
+    $helminfo->{'buildtime'} = time();
+    if ($chart) {
+      $helminfo->{'chart'} = $chart;
+      $helminfo->{'chart'} =~ s/.*\///;
+      my $ctx = Digest->new("SHA-256");
+      my $cfd;
+      die("$chart: $!\n") unless open($cfd, '<', $chart);
+      my @s = stat($cfd);
+      $ctx->addfile($cfd);
+      close($cfd);
+      $helminfo->{'chart_sha256'} = $ctx->hexdigest;
+      $helminfo->{'chart_size'} = $s[7];
+    }
+    $helminfo->{'config_json'} = $config_json;
+    $helminfo->{'config_yaml'} = $config_yaml;
+    $helminfo->{'_order'} = [ qw{name version release tags disturl buildtime 
chart config_json config_yaml chart_sha256 chart_size} ];
+    $helminfo->{'_type'} = {'buildtime' => 'number', 'chart_size' => 'number' 
};
+    print Build::SimpleJSON::unparse($helminfo)."\n";
+    exit(0);
+  }
+  $d->{'nameversion'} = "$d->{'name'}-$d->{'version'}";                # 
convenience
+  my $x = $d->{$field};
+  $x = [ $x ] unless ref $x;
+  print "@$x\n";
+}
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/Build/Kiwi.pm 
new/obs-build-20200520/Build/Kiwi.pm
--- old/obs-build-20200520/Build/Kiwi.pm        2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/Build/Kiwi.pm        2020-08-20 10:13:26.000000000 
+0200
@@ -247,32 +247,33 @@
   my %usedprofiles;
   # obsprofiles arch filtering
   if ($obsprofiles && $arch && $kiwi->{'profiles'} && 
$kiwi->{'profiles'}->[0]->{'profile'}) {
-    my %obsprofiles = map {$_ => 1} @$obsprofiles;
+    # reduce set of profiles to the ones matching our architecture
+    my @validprofiles;
     for my $prof (@{$kiwi->{'profiles'}[0]->{'profile'}}) {
-      next unless $prof->{'name'} && exists $obsprofiles{$prof->{'name'}};
-      my $valid;
-      if ($prof->{'arch'}) {
-        my $ma = $arch;
-        $ma =~ s/i[456]86/i386/;
-        for my $pa (split(",", $prof->{'arch'})) {
-          $pa =~ s/i[456]86/i386/;
-          $valid = 1 if $ma eq $pa;
-        }
+      next unless $prof->{'name'};
+      if (!$prof->{'arch'}) {
+       push @validprofiles, $prof;
       } else {
-        $valid = 1;
-      }
-      if ($valid) {
-        $obsprofiles{$prof->{'name'}} = 2;
-      } elsif ($obsprofiles{$prof->{'name'}} == 1) {
-        $obsprofiles{$prof->{'name'}} = 0;
+       my $ma = $arch;
+       $ma =~ s/i[456]86/i386/;
+       for my $pa (split(",", $prof->{'arch'})) {
+         $pa =~ s/i[456]86/i386/;
+         next unless $ma eq $pa;
+         push @validprofiles, $prof;
+         last;
+       }
       }
     }
-    $obsprofiles = [ grep {$obsprofiles{$_}} @$obsprofiles ];
-    for my $prof (@{$kiwi->{'profiles'}[0]->{'profile'}}) {
-      next unless $obsprofiles{$prof->{'name'}};
+    my %validprofiles = map {$_->{'name'} => 1} @validprofiles;
+    $obsprofiles = [ grep {$validprofiles{$_}} @$obsprofiles ];
+    my %obsprofiles = map {$_ => 1} @$obsprofiles;
+    my @todo = grep {$obsprofiles{$_->{'name'}}} @validprofiles;
+    while (@todo) {
+      my $prof = shift @todo;
+      next if $usedprofiles{$prof->{'name'}};  # already done
       $usedprofiles{$prof->{'name'}} = 1;
-      for my $req (@{$prof->{'requires'}}) {
-        $usedprofiles{$req->{'profile'}} = 1;
+      for my $req (@{$prof->{'requires'} || []}) {
+       push @todo, grep {$_->{'name'} eq $req->{'profile'}} @validprofiles;
       }
     }
   }
@@ -567,6 +568,7 @@
   $containerinfo->{'repos'} = \@repos if @repos;
   $containerinfo->{'file'} = $image if defined $image;
   $containerinfo->{'disturl'} = $disturl if defined $disturl;
+  $containerinfo->{'milestone'} = $d->{'milestone'} if defined 
$d->{'milestone'};
   print Build::SimpleJSON::unparse($containerinfo)."\n";
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/Build/Snapcraft.pm 
new/obs-build-20200520/Build/Snapcraft.pm
--- old/obs-build-20200520/Build/Snapcraft.pm   2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/Build/Snapcraft.pm   2020-08-20 10:13:26.000000000 
+0200
@@ -23,7 +23,7 @@
 use strict;
 use Build::Deb;
 
-eval { require YAML::XS; };
+eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; };
 *YAML::XS::LoadFile = sub {die("YAML::XS is not available\n")} unless defined 
&YAML::XS::LoadFile;
 
 sub parse {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/Build.pm 
new/obs-build-20200520/Build.pm
--- old/obs-build-20200520/Build.pm     2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/Build.pm     2020-08-20 10:13:26.000000000 +0200
@@ -39,6 +39,7 @@
 our $do_appimage;
 our $do_docker;
 our $do_fissile;
+our $do_helm;
 
 sub import {
   for (@_) {
@@ -52,8 +53,9 @@
     $do_appimage = 1 if $_ eq ':appimage';
     $do_docker = 1 if $_ eq ':docker';
     $do_fissile = 1 if $_ eq ':fissile';
+    $do_helm = 1 if $_ eq ':helm';
   }
-  $do_rpm = $do_deb = $do_kiwi = $do_arch = $do_collax = $do_livebuild = 
$do_snapcraft = $do_appimage = $do_docker = $do_fissile = 1 if !$do_rpm && 
!$do_deb && !$do_kiwi && !$do_arch && !$do_collax && !$do_livebuild && 
!$do_snapcraft && !$do_appimage && !$do_docker && !$do_fissile;
+  $do_rpm = $do_deb = $do_kiwi = $do_arch = $do_collax = $do_livebuild = 
$do_snapcraft = $do_appimage = $do_docker = $do_fissile = $do_helm = 1 if 
!$do_rpm && !$do_deb && !$do_kiwi && !$do_arch && !$do_collax && !$do_livebuild 
&& !$do_snapcraft && !$do_appimage && !$do_docker && !$do_fissile && !$do_helm;
 
   if ($do_deb) {
     require Build::Deb;
@@ -82,6 +84,9 @@
   if ($do_fissile) {
     require Build::Fissile;
   }
+  if ($do_helm) {
+    require Build::Helm;
+  }
 }
 
 package Build::Features;
@@ -107,6 +112,55 @@
 };
 my $extra_macros = '';
 
+my %subst_defaults = (
+  # defaults live-build package dependencies base on 4.0~a26 gathered with:
+  # grep Check_package -r /usr/lib/live/build
+  'build-packages:livebuild' => [
+    'apt-utils', 'dctrl-tools', 'debconf', 'dosfstools', 'e2fsprogs', 'grub',
+    'librsvg2-bin', 'live-boot', 'live-config', 'mtd-tools', 'parted',
+    'squashfs-tools', 'syslinux', 'syslinux-common', 'wget', 'xorriso', 
'zsync',
+  ],
+  'build-packages:helm' => [
+    'helm',
+  ],
+  'system-packages:livebuild' => [
+    'apt-utils', 'cpio', 'dpkg-dev', 'live-build', 'lsb-release', 'tar',
+  ],
+  'system-packages:mock' => [
+    'mock', 'system-packages:repo-creation',
+  ],
+  'system-packages:debootstrap' => [
+    'debootstrap', 'lsb-release',
+  ],
+  'system-packages:kiwi-image' => [
+    'kiwi', 'tar', 'system-packages:repo-creation',
+  ],
+  'system-packages:kiwi-product' => [
+    'kiwi',
+  ],
+  'system-packages:docker' => [
+    'docker', 'system-packages:repo-creation',
+  ],
+  'system-packages:podman' => [
+    'podman', 'buildah', 'system-packages:repo-creation',
+  ],
+  'system-packages:fissile' => [
+    'docker', # TODO: Add fissile here as soon as it is packaged
+  ],
+  'system-packages:deltarpm' => [
+    'deltarpm',
+  ],
+  'system-packages:repo-creation:rpm' => [
+    'createrepo',
+  ],
+  'system-packages:repo-creation:deb' => [
+    'dpkg-dev',
+  ],
+  'system-packages:repo-creation:arch' => [
+    'pacman',
+  ],
+);
+
 sub unify {
   my %h = map {$_ => 1} @_;
   return grep(delete($h{$_}), @_);
@@ -376,12 +430,8 @@
   for my $l (qw{preinstall vminstall required support keep runscripts repotype 
patterntype}) {
     $config->{$l} = [ unify(@{$config->{$l}}) ];
   }
-  for my $l (keys %{$config->{'substitute'}}) {
-    $config->{'substitute_vers'}->{$l} = [ map {/^(.*?)(=)?$/g} 
unify(@{$config->{'substitute'}->{$l}}) ];
-    $config->{'substitute'}->{$l} = [ unify(@{$config->{'substitute'}->{$l}}) 
];
-    s/=$// for @{$config->{'substitute'}->{$l}};
-  }
   init_helper_hashes($config);
+  # calculate type and binarytype
   if (!$config->{'type'}) {
     # Fallback to old guessing method if no type (spec, dsc or kiwi) is defined
     if (grep {$_ eq 'rpm'} @{$config->{'preinstall'} || []}) {
@@ -408,6 +458,16 @@
     }
     $config->{'binarytype'} ||= 'UNDEFINED';
   }
+  # add default substitutes
+  if (!$config->{'substitute'}->{'system-packages:repo-creation'}) {
+    $config->{'substitute'}->{'system-packages:repo-creation'} = 
$subst_defaults{"system-packages:repo-creation:$config->{'binarytype'}"} if 
$subst_defaults{"system-packages:repo-creation:$config->{'binarytype'}"};
+  }
+  # create substitute_vers hash from substitute entries
+  for my $l (keys %{$config->{'substitute'}}) {
+    $config->{'substitute_vers'}->{$l} = [ map {/^(.*?)(=)?$/g} 
unify(@{$config->{'substitute'}->{$l}}) ];
+    $config->{'substitute'}->{$l} = [ unify(@{$config->{'substitute'}->{$l}}) 
];
+    s/=$// for @{$config->{'substitute'}->{$l}};
+  }
   # add rawmacros to our macro list
   if ($config->{'rawmacros'} ne '') {
     for my $rm (split("\n", $config->{'rawmacros'})) {
@@ -424,6 +484,7 @@
       }
     }
   }
+  # extract some helper hashes for the flags
   my %modules;
   for (@{$config->{'expandflags'} || []}) {
     if (/^([^:]+):(.*)$/s) {
@@ -501,43 +562,6 @@
   return @res;
 }
 
-my %subst_defaults = (
-  # defaults live-build package dependencies base on 4.0~a26 gathered with:
-  # grep Check_package -r /usr/lib/live/build
-  'build-packages:livebuild' => [
-    'apt-utils', 'dctrl-tools', 'debconf', 'dosfstools', 'e2fsprogs', 'grub',
-    'librsvg2-bin', 'live-boot', 'live-config', 'mtd-tools', 'parted',
-    'squashfs-tools', 'syslinux', 'syslinux-common', 'wget', 'xorriso', 
'zsync',
-  ],
-  'system-packages:livebuild' => [
-    'apt-utils', 'cpio', 'dpkg-dev', 'live-build', 'lsb-release', 'tar',
-  ],
-  'system-packages:mock' => [
-    'mock', 'createrepo',
-  ],
-  'system-packages:debootstrap' => [
-    'debootstrap', 'lsb-release',
-  ],
-  'system-packages:kiwi-image' => [
-    'kiwi', 'createrepo', 'tar',
-  ],
-  'system-packages:kiwi-product' => [
-    'kiwi',
-  ],
-  'system-packages:docker' => [
-    'docker',
-  ],
-  'system-packages:podman' => [
-    'podman', 'buildah'
-  ],
-  'system-packages:fissile' => [
-    'docker', # TODO: Add fissile here as soon as it is packaged
-  ],
-  'system-packages:deltarpm' => [
-    'deltarpm',
-  ],
-);
-
 # expand the preinstalls/vminstalls
 sub expandpreinstalls {
   my ($config) = @_;
@@ -577,7 +601,7 @@
     return (undef, $err) if $err;
   }
   my $buildtype = $config->{'type'} || '';
-  if (grep {$_ eq $buildtype} qw{livebuild docker kiwi fissile}) {
+  if (grep {$_ eq $buildtype} qw{livebuild docker kiwi fissile helm}) {
     push @deps, @{$config->{'substitute'}->{"build-packages:$buildtype"}
                  || $subst_defaults{"build-packages:$buildtype"} || []};
   }
@@ -1619,6 +1643,7 @@
   return 'fissile' if $recipe eq 'fissile.yml';
   return 'preinstallimage' if $recipe eq '_preinstallimage';
   return 'simpleimage' if $recipe eq 'simpleimage';
+  return 'helm' if $recipe eq 'Chart.yaml';
   return undef;
 }
 
@@ -1672,6 +1697,7 @@
   return Build::Arch::parse($cf, $fn, @args) if $do_arch && $fnx eq 'PKGBUILD';
   return Build::Collax::parse($cf, $fn, @args) if $do_collax && $fnx eq 
'build.collax';
   return parse_preinstallimage($cf, $fn, @args) if $fnx eq '_preinstallimage';
+  return Build::Helm::parse($cf, $fn, @args) if $fnx eq 'Chart.yaml';
   return undef;
 }
 
@@ -1690,6 +1716,7 @@
   return Build::Arch::parse($cf, $fn, @args) if $do_arch && $buildtype eq 
'arch';
   return Build::Collax::parse($cf, $fn, @args) if $do_collax && $buildtype eq 
'collax';
   return parse_preinstallimage($cf, $fn, @args) if $buildtype eq 
'preinstallimage';
+  return Build::Helm::parse($cf, $fn, @args) if $buildtype eq 'helm';
   return undef;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-build-20200520/baselibs_configs/baselibs_global-sle12.conf 
new/obs-build-20200520/baselibs_configs/baselibs_global-sle12.conf
--- old/obs-build-20200520/baselibs_configs/baselibs_global-sle12.conf  
2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/baselibs_configs/baselibs_global-sle12.conf  
2020-08-20 10:13:26.000000000 +0200
@@ -22,7 +22,7 @@
 
 targetname <name>-<targettype>
 
-+.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)$
++.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la|pc)$
 
 targettype 64bit -^(/usr)?/lib(ilp32)?/lib
 targettype 32bit -/lib64/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-build-20200520/baselibs_configs/baselibs_global-sle15.conf 
new/obs-build-20200520/baselibs_configs/baselibs_global-sle15.conf
--- old/obs-build-20200520/baselibs_configs/baselibs_global-sle15.conf  
2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/baselibs_configs/baselibs_global-sle15.conf  
2020-08-20 10:13:26.000000000 +0200
@@ -22,7 +22,7 @@
 
 targetname <name>-<targettype>
 
-+.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)$
++.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la|pc)$
 
 targettype 64bit -^(/usr)?/lib(ilp32)?/lib
 targettype 32bit -/lib64/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-build-20200520/baselibs_configs/baselibs_global.conf 
new/obs-build-20200520/baselibs_configs/baselibs_global.conf
--- old/obs-build-20200520/baselibs_configs/baselibs_global.conf        
2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/baselibs_configs/baselibs_global.conf        
2020-08-20 10:13:26.000000000 +0200
@@ -22,7 +22,7 @@
 
 targetname <name>-<targettype>
 
-+.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)$
++.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la|pc)$
 
 targettype 64bit -^(/usr)?/lib(ilp32)?/lib
 targettype 32bit -/lib64/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/build new/obs-build-20200520/build
--- old/obs-build-20200520/build        2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/build        2020-08-20 10:13:26.000000000 +0200
@@ -113,6 +113,7 @@
 CACHE_DIR=/var/cache/build
 
 RECIPE_BUILD_START_TIME=
+CCACHE_SETUP_START_TIME=
 
 # This is for insserv
 export YAST_IS_RUNNING=instsys
@@ -479,6 +480,7 @@
 
 setupccache() {
     if test -n "$CCACHE" ; then
+        CCACHE_SETUP_START_TIME=`date +%s`
        if mkdir -p $BUILD_ROOT/var/lib/build/ccache/bin; then
            for i in $(ls $BUILD_ROOT/usr/bin | grep -E 
'^(cc|gcc|[cg][+][+]|clang|clang[+][+])([-]?[.0-9])*$'); do
                rm -f $BUILD_ROOT/var/lib/build/ccache/bin/$i
@@ -493,21 +495,20 @@
        fi
        mkdir -p "$BUILD_ROOT/.ccache"
        chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT/.ccache"
-       echo "export CCACHE_DIR=/.ccache" > 
"$BUILD_ROOT"/etc/profile.d/build_ccache.sh
        echo 'export PATH=/var/lib/build/ccache/bin:$PATH' >> 
"$BUILD_ROOT"/etc/profile.d/build_ccache.sh
 
         local cconf="$BUILD_ROOT"/etc/ccache.conf
         if test -e $cconf; then
-            # setting compression value
-            # if grep returns false, change it using sed(create backup), else 
append setting
-            (grep "^compression\s*=\s*true\s*$" $cconf || sed -i`date +%s` 
"s:compression\s*=\s*.*$:compression = true:g" $cconf ) \
-                || echo "compression = true" >> $cconf
+            grep -q "^compression*" $cconf && sed -i 
"s:compression.*:compression = true:g" $cconf || echo "compression = true"   >> 
$cconf
+            grep -q "^cache_dir*"   $cconf && sed -i "s:cache_dir.*:cache_dir 
= /.ccache:g" $cconf || echo "cache_dir = /.ccache" >> $cconf
         else
-            echo "compression = true" >> $cconf
+            echo "compression = true"    >> $cconf
+            echo "cache_dir = /.ccache" >> $cconf
         fi
-    local ccachetar="$BUILD_ROOT/.build.oldpackages/_ccache.tar"
-    test -e $ccachetar && tar -xf $ccachetar -C "$BUILD_ROOT/.ccache/"
+        local ccachetar="$BUILD_ROOT/.build.oldpackages/_ccache.tar"
+        test -e $ccachetar && tar -xf $ccachetar -C "$BUILD_ROOT/.ccache/"
     else
+        CCACHE_SETUP_START_TIME=
        rm -f 
"$BUILD_ROOT"/var/lib/build/ccache/bin/{gcc,g++,cc,c++,clang,clang++}
     fi
 }
@@ -1329,7 +1330,9 @@
        copy_oldpackages
         # chroot based builds
         # rsync as source and dest could be same
-        test -n "$PKG_CCACHE" -a -e "$PKG_CCACHE" && rsync -v "$PKG_CCACHE" 
"$BUILD_ROOT/.build.oldpackages/_ccache.tar"
+        test -n "$PKG_CCACHE" -a -e "$PKG_CCACHE" && \
+            mkdir -p "$BUILD_ROOT/.build.oldpackages/" && \
+            rsync -v "$PKG_CCACHE" "$BUILD_ROOT/.build.oldpackages/_ccache.tar"
     fi
 
     mount_stuff
@@ -1475,8 +1478,6 @@
        chmod 0755 $BUILD_ROOT/.unpack.command
        chroot $BUILD_ROOT su -c /.unpack.command - $BUILD_USER || 
cleanup_and_exit 1
        rm -f $BUILD_ROOT/.unpack.command
-       # free disk space
-       rm "$i"
     done
 
     if  test -e _service; then
@@ -1600,8 +1601,10 @@
 fi
 
 if test -n "$CCACHE" ; then
+    echo "... cleaning ccache"
+    test "$(ccache -h | grep -c evict-older-than)" != 0 && ccache 
--evict-older-than $((`date +%s` - $CCACHE_SETUP_START_TIME))
     echo "... saving ccache"
-    tar -cf "$BUILD_ROOT/$TOPDIR/OTHER/_ccache.tar" -C "$BUILD_ROOT/.ccache/" .
+    tar --remove-files -cf "$BUILD_ROOT/$TOPDIR/OTHER/_ccache.tar" -C 
"$BUILD_ROOT/.ccache/" .
 fi
 
 if test \( -n "$RPMS" -o -n "$DEBS" \) -a -n "$CREATE_BASELIBS"; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/build-recipe 
new/obs-build-20200520/build-recipe
--- old/obs-build-20200520/build-recipe 2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/build-recipe 2020-08-20 10:13:26.000000000 +0200
@@ -25,7 +25,7 @@
 BUILDTYPE=
 KIWI_PARAMETERS=
 
-for i in spec dsc kiwi arch collax preinstallimage simpleimage mock livebuild 
snapcraft debootstrap debbuild appimage docker podman fissile; do
+for i in spec dsc kiwi arch collax preinstallimage simpleimage mock livebuild 
snapcraft debootstrap debbuild appimage docker podman fissile helm; do
     . "$BUILD_DIR/build-recipe-$i"
 done
 
@@ -86,6 +86,7 @@
         _preinstallimage) BUILDTYPE=preinstallimage ;;
         simpleimage) BUILDTYPE=simpleimage ;;
         *.livebuild) BUILDTYPE=livebuild ;;
+        Chart.yaml) BUILDTYPE=helm ;;
     esac
     if test -z "$BUILDTYPE" ; then
        cleanup_and_exit 1 "I don't know how to build $RECIPEFILE"
@@ -138,7 +139,7 @@
                        snapcraft) types="snapcraft.yaml" ;;
                    esac
                fi
-               types="$types .spec .dsc PKGBUILD Dockerfile build.collax .kiwi 
.src.rpm .nosrc.rpm simpleimage snapcraft.yaml"
+               types="$types .spec .dsc PKGBUILD Dockerfile build.collax .kiwi 
.src.rpm .nosrc.rpm simpleimage snapcraft.yaml Chart.yaml"
            fi
            for t in $types ; do
                found=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/build-recipe-docker 
new/obs-build-20200520/build-recipe-docker
--- old/obs-build-20200520/build-recipe-docker  2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/build-recipe-docker  2020-08-20 10:13:26.000000000 
+0200
@@ -67,7 +67,7 @@
         DOCKER_TOOL=podman
     else
         DOCKER_TOOL=docker
-        if ! $BUILD_DIR/startdockerd --root "$BUILD_ROOT" --webserver 
"$TOPDIR/SOURCES/repos" ; then
+        if ! $BUILD_DIR/startdockerd --root "$BUILD_ROOT" --webserver 
"$TOPDIR/SOURCES/repos" --webserver-upload "$TOPDIR/SOURCES/repos/UPLOAD" ; then
              cleanup_and_exit 1
         fi
     fi
@@ -101,12 +101,14 @@
     fi
 
     # Prepare the package repository
+    rm -rf "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD"
     if chroot $BUILD_ROOT test -x /usr/bin/createrepo ; then
        chroot $BUILD_ROOT createrepo "$TOPDIR/SOURCES/repos" >/dev/null
     fi
     if chroot $BUILD_ROOT test -x /usr/bin/dpkg-scanpackages ; then
        chroot $BUILD_ROOT bash -c "cd $TOPDIR/SOURCES/repos && 
dpkg-scanpackages -m . | gzip > Packages.gz"
     fi
+    mkdir -p "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD"
 
     # find tags, first look into recipe file
     FIRSTTAG=
@@ -136,12 +138,14 @@
     done
 
     # patch in obs-docker-support helper
-    sed -i '/^[        ]*[fF][rR][oO][mM]/a COPY .obs-docker-support 
/usr/local/sbin/obs-docker-support\nRUN obs-docker-support --install' 
"$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE"
-    echo >> $BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE
-    if test -n "$(sed -ne '/^[         ]*[uU][sS][eE][rR][     ]/p' 
"$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE")" ; then
-       sed -i '1,/^[   ]*[uU][sS][eE][rR][     ]/{
-/^[    ]*[uU][sS][eE][rR][     ]/i RUN obs-docker-support --uninstall
+    sed -i '1,/^[      ]*[rR][uU][nN][  ]/{
+/^[    ]*[rR][uU][nN][  ]/i COPY .obs-docker-support 
/usr/local/sbin/obs-docker-support\nRUN obs-docker-support --install
 }' "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE"
+    echo >> $BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE
+    if test -n "$(sed -ne '/^[         ]*[uU][sS][eE][rR][     ]/p' 
"$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE")" ; then
+       tac "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" | sed '1,/^[         
]*[uU][sS][eE][rR][     ]/{
+/^[         ]*[uU][sS][eE][rR][     ]/a RUN obs-docker-support --uninstall
+}' | tac > "$BUILD_ROOT/$TOPDIR/SOURCES/.$RECIPEFILE" && mv 
"$BUILD_ROOT/$TOPDIR/SOURCES/.$RECIPEFILE" 
"$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE"
     else
        echo 'RUN obs-docker-support --uninstall' >> 
"$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE"
     fi
@@ -185,6 +189,15 @@
     test -n "$RELEASE" && args=("${args[@]}" --release "$RELEASE")
     perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::showcontainerinfo -- 
"${args[@]}" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" "$FILENAME.tar" 
"$ALLTAGS" containers/annotation > 
"$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.containerinfo"
 
+    # copy over .packages files
+    if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/basepackages" ; then
+       cp "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/basepackages" 
"$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.basepackages"
+    fi
+    if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/packages" ; then
+       cp "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/packages" 
"$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.packages"
+    fi
+    rm -rf "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD"
+
     # We're done. Clean up.
     recipe_cleanup_docker
     BUILD_SUCCEEDED=true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/build-recipe-helm 
new/obs-build-20200520/build-recipe-helm
--- old/obs-build-20200520/build-recipe-helm    1970-01-01 01:00:00.000000000 
+0100
+++ new/obs-build-20200520/build-recipe-helm    2020-08-20 10:13:26.000000000 
+0200
@@ -0,0 +1,89 @@
+################################################################
+#
+# Copyright (c) 2020 SUSE Linux LLC
+#
+# 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_helm() {
+    TOPDIR="/usr/src/packages"
+    test "$DO_INIT_TOPDIR" != false && rm -Rf "$BUILD_ROOT/$TOPDIR"
+    mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES"
+    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/
+       else
+           cp -lR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
+       fi
+       if test "$?" != 0 ; then
+           cleanup_and_exit 1 "source copy failed"
+       fi
+    fi
+    chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR"
+}
+
+recipe_prepare_helm() {
+    rm -rf "$BUILD_ROOT$TOPDIR/BUILD"
+    mkdir -p "$BUILD_ROOT$TOPDIR/BUILD"
+    cp -dLR "$BUILD_ROOT$TOPDIR/SOURCES/"* "$BUILD_ROOT$TOPDIR/BUILD"
+    chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR/BUILD"
+    cd "$BUILD_ROOT$TOPDIR/BUILD"
+    for i in *.tar *.tgz *.tar.gz *.tar.xz ; do
+       test -e "$i" || continue
+       echo "Unpacking $i ..."
+       echo "#!/bin/sh -e" > $BUILD_ROOT/.unpack.command
+       shellquote cd "$TOPDIR/BUILD" >> $BUILD_ROOT/.unpack.command
+       echo >> $BUILD_ROOT/.unpack.command
+       echo -n 'tar -x --owner="'$BUILD_USER'" -f ' >> 
$BUILD_ROOT/.unpack.command
+       shellquote "$i" >> $BUILD_ROOT/.unpack.command
+       echo >> $BUILD_ROOT/.unpack.command
+       shellquote rm -f "$i" >> $BUILD_ROOT/.unpack.command
+       echo >> $BUILD_ROOT/.unpack.command
+       chmod 0755 $BUILD_ROOT/.unpack.command
+       chroot $BUILD_ROOT su -c /.unpack.command - $BUILD_USER || 
cleanup_and_exit 1
+       rm -f $BUILD_ROOT/.unpack.command
+       rm -f "$i"
+       ls -l
+    done
+}
+
+recipe_build_helm() {
+    cd "$BUILD_ROOT$TOPDIR/BUILD"
+    mkdir -p "$BUILD_ROOT$TOPDIR/HELM"
+    chown "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR/HELM"
+    # extract data from chart file
+    args=() 
+    test -n "$DISTURL" && args=("${args[@]}" --disturl "$DISTURL")
+    test -n "$RELEASE" && args=("${args[@]}" --release "$RELEASE")
+    local nameversion=$(perl -I$BUILD_DIR -MBuild::Helm -e 'Build::Helm::show' 
-- "${args[@]}" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" nameversion)
+    # create chart
+    chroot $BUILD_ROOT su -c "cd $TOPDIR/BUILD && helm package -d $TOPDIR/HELM 
."  - $BUILD_USER || cleanup_and_exit 1
+    test -f "$BUILD_ROOT$TOPDIR/HELM/$nameversion.tgz" || cleanup_and_exit 1 
"helm package command did not create $nameversion.tgz"
+    # generate helminfo
+    perl -I$BUILD_DIR -MBuild::Helm -e 'Build::Helm::show' -- "${args[@]}" 
--chart "$BUILD_ROOT$TOPDIR/HELM/$nameversion.tgz" 
"$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" helminfo > 
"$BUILD_ROOT$TOPDIR/HELM/$nameversion.helminfo"
+    BUILD_SUCCEEDED=true
+}
+
+recipe_resultdirs_helm() {
+    echo HELM
+}
+
+recipe_cleanup_helm() {
+    :
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/build-vm 
new/obs-build-20200520/build-vm
--- old/obs-build-20200520/build-vm     2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/build-vm     2020-08-20 10:13:26.000000000 +0200
@@ -36,7 +36,7 @@
 # ignore not backward compatible ext fs options like metadata_csum
 # Only protecting nonroot from root inside guest -> but anyone can be root 
inside guest
 # so disabling spectre/meltdown mitigations doesn't hurt security and gains 
performance
-vm_linux_kernel_parameter="ext4.allow_unsupported=1 kpti=off pti=off 
spectre_v2=off"
+vm_linux_kernel_parameter="ext4.allow_unsupported=1 mitigations=off"
 
 # guest visible devices
 VM_ROOTDEV=/dev/hda1
@@ -914,7 +914,9 @@
     fi
 
     # rsync as source and dest could be same
-    test -n "$PKG_CCACHE" && rsync -av "$PKG_CCACHE" 
"$BUILD_ROOT/.build.oldpackages/_ccache.tar"
+    test -n "$PKG_CCACHE" && \
+            mkdir -p "$BUILD_ROOT/.build.oldpackages/" && \
+            rsync -av "$PKG_CCACHE" 
"$BUILD_ROOT/.build.oldpackages/_ccache.tar"
 
     if test -n "$VM_ROOT" ; then
        # copy out kernel & initrd (if they exist) during unmounting VM image
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/build-vm-kvm 
new/obs-build-20200520/build-vm-kvm
--- old/obs-build-20200520/build-vm-kvm 2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/build-vm-kvm 2020-08-20 10:13:26.000000000 +0200
@@ -120,6 +120,12 @@
            kvm_bin="/usr/bin/qemu-system-ppc64"
            kvm_console=hvc0
            kvm_options="-enable-kvm -M pseries"
+           if grep -q POWER8 /proc/cpuinfo ; then
+               # This option only exists with QEMU 5.0 or newer
+               if $kvm_bin -machine 'pseries,?' 2>&1 | grep -q cap-ccf-assist 
; then
+               kvm_options="-enable-kvm -M pseries,cap-ccf-assist=off"
+               fi
+           fi
            grep -q PPC970MP /proc/cpuinfo && kvm_check_ppc970
            vm_kernel=/boot/vmlinux
            vm_initrd=/boot/initrd
@@ -376,7 +382,7 @@
 vm_sysrq_kvm() {
     perl -e 'use Socket; socket(SOCK, PF_UNIX, SOCK_STREAM, 0) || die("socket: 
$!\n"); 
              connect(SOCK, sockaddr_un("'"$VM_ROOT.qemu/monitor"'")) || 
die("connect: $!\n");
-             syswrite SOCK "sendkey alt-print-'$1'\n";'
+             syswrite SOCK, "sendkey alt-print-'$1'\n";'
 }
 
 vm_wipe_kvm() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/build-vm-zvm 
new/obs-build-20200520/build-vm-zvm
--- old/obs-build-20200520/build-vm-zvm 2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/build-vm-zvm 2020-08-20 10:13:26.000000000 +0200
@@ -304,6 +304,10 @@
     # sleep some time before taking root and swap devices from worker
     # This might be critical regarding timing (IUCV_CONSOLE down, but machine 
still running)
     sleep 5
+    # Build jobs might change the shutdown behavior, so just return if machine 
is powered off.
+    if ! (vmcp q $VM_WORKER >& /dev/null); then
+        return
+    fi
     zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_ROOT
     zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_SWAP
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/configs/sl15.2.conf 
new/obs-build-20200520/configs/sl15.2.conf
--- old/obs-build-20200520/configs/sl15.2.conf  2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/configs/sl15.2.conf  2020-08-20 10:13:26.000000000 
+0200
@@ -171,6 +171,22 @@
 Prefer: udev-mini libcom_err2-mini libext2fs2-mini
 Prefer: -harfbuzz-bootstrap -harfbuzz-bootstrap-devel
 
+# break dependency of the -mini packages: they are valid for OBS, but not for 
end-user-installation
+Ignore: erlang-rebar-obs:this-is-only-for-build-envs
+Ignore: harfbuzz-bootstrap:this-is-only-for-build-envs
+Ignore: jdk-bootstrap:this-is-only-for-build-envs
+Ignore: libsystemd0-mini:this-is-only-for-build-envs
+Ignore: libudev-mini1:this-is-only-for-build-envs
+Ignore: libunbound-devel-mini:this-is-only-for-build-envs
+Ignore: systemd-mini:this-is-only-for-build-envs
+Ignore: udev-mini:this-is-only-for-build-envs
+Ignore: curl-mini:this-is-only-for-build-envs
+Ignore: libcurl-mini-devel:this-is-only-for-build-envs
+Ignore: libcurl4-mini:this-is-only-for-build-envs
+Ignore: ghc-bootstrap:this-is-only-for-build-envs
+Ignore: ghc-bootstrap-helpers:this-is-only-for-build-envs
+Ignore: cmake-mini:this-is-only-for-build-envs
+
 # Let's speed up things: We don't need Mesa-dri and Mesa-gallium in the build 
system
 Ignore: Mesa:Mesa-dri
 Ignore: Mesa:Mesa-gallium
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/configs/sl15.5.conf 
new/obs-build-20200520/configs/sl15.5.conf
--- old/obs-build-20200520/configs/sl15.5.conf  2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/configs/sl15.5.conf  2020-08-20 10:13:26.000000000 
+0200
@@ -760,11 +760,11 @@
 
 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables 
-fasynchronous-unwind-tables
 
-%define suse_version 1321
+%define suse_version 1550
 %define is_opensuse 1
 
 Macros:
-%suse_version 1321
+%suse_version 1550
 %is_opensuse 1
 
 %insserv_prereq insserv sed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/createzyppdeps 
new/obs-build-20200520/createzyppdeps
--- old/obs-build-20200520/createzyppdeps       2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/createzyppdeps       2020-08-20 10:13:26.000000000 
+0200
@@ -55,10 +55,16 @@
 my $type = $repo->{'type'};
 my $zyppcachedir = "/var/cache/zypp/raw/$repo->{'name'}";
 
+if (!$type) {
+  $type = 'yast2' if -e "$zyppcachedir/suse/setup/descr";
+  $type = 'rpm-md' if -e "$zyppcachedir/repodata";
+}
+die("could not determine repo type for '$repo->{'name'}'\n") unless $type;
+
 if($type eq 'rpm-md') {
   exec ("$INC[0]/createrepomddeps", '--cachedir', $cachedir, '--zypp', 
$zyppcachedir, $url);
 } elsif ($type eq 'yast2') {
   exec ("$INC[0]/createyastdeps", '--cachedir', $cachedir, '--zypp', 
$zyppcachedir, $url);
 } else {
-  die "unsupported repo type: $type\n";
+  die "unsupported repo type '$type' for '$repo->{'name'}'\n";
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/dist/build.changes 
new/obs-build-20200520/dist/build.changes
--- old/obs-build-20200520/dist/build.changes   2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/dist/build.changes   2020-08-20 10:13:26.000000000 
+0200
@@ -1,4 +1,36 @@
 -------------------------------------------------------------------
+Thu Aug 20 08:07:30 UTC 2020 - Adrian Schröter <[email protected]>
+
+- fix factory version in config file bsc#1170956
+- add missing ignores for Leap 15.2 bsc#1174854
+- fix sysrq handling for KVM builds
+- avoid double removal of obscpio files
+- docker:
+  * support builds using USER root statements
+  * proper error handling when obs-docker-support gets called as 
+    non-root
+  * helm build target support
+  * support milestone handling
+- support repo files without types set (SLE 15 SP2 zypp)
+- add default substitute for system-packages:repo-creation
+- Support recursive kiwi profile usage
+
+-------------------------------------------------------------------
+Thu Jul 23 05:38:24 UTC 2020 - Frank Schreiner <[email protected]>
+
+- fix dependencies for Fedora 33
+- Set $YAML::XS::LoadBlessed = 0 for Appimage/Snapcraft
+- add a new variable to track build time needed for ccache eviction
+- create folder for ccache archive to be copied before rsync
+- also package pkg-config files by default into baselibs. (bsc#1172563 etc)
+- Use shorter kernel flag for mitigations
+- Ignore, if shutdown behavior changed by build in z/VM
+- Control disk-space consumption while creating ccache archive
+- cleaning ccache
+- create folders before trying to copy ccache.tar
+- Genreadte .packages and .basepackages files for docker builds
+
+-------------------------------------------------------------------
 Sun May 17 14:32:52 UTC 2020 - [email protected]
 
 - enable sysrq operations on boot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/dist/build.spec 
new/obs-build-20200520/dist/build.spec
--- old/obs-build-20200520/dist/build.spec      2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/dist/build.spec      2020-08-20 10:13:26.000000000 
+0200
@@ -88,6 +88,12 @@
 Recommends:     %{__pkg_name}-mkdrpms
 %endif
 
+# With fedora 33 the POSIX module was split out of the perl
+# package
+BuildRequires: perl(POSIX)
+Requires: perl(POSIX)
+
+
 %description
 This package provides a script for building RPMs for SUSE Linux in a
 chroot environment.
@@ -118,7 +124,7 @@
 %endif
 
 %define initvm_arch %{_host_cpu}
-%if %{_host_cpu} == "i686"
+%if "%{_host_cpu}" == "i686"
 %define initvm_arch i586
 %endif
 %package initvm-%{initvm_arch}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/dummyhttpserver 
new/obs-build-20200520/dummyhttpserver
--- old/obs-build-20200520/dummyhttpserver      2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/dummyhttpserver      2020-08-20 10:13:26.000000000 
+0200
@@ -11,7 +11,7 @@
 
 $| = 1;
 
-my ($build_root, $dir) = @ARGV;
+my ($build_root, $dir, $uploaddir) = @ARGV;
 
 if (defined($build_root)) {
   chroot($build_root) || die("chroot $build_root: $!\n");
@@ -31,6 +31,16 @@
 my $sock;
 my $status;
 
+sub replyraw {
+  my ($data) = @_;
+  my $l;
+  while (length($data)) {
+    $l = syswrite($sock, $data, length($data));
+    die("write error: $!\n") unless $l;
+    $data = substr($data, $l);
+  }
+}
+
 sub reply {
   my ($str, @hdrs) = @_;
   if (@hdrs && $hdrs[0] =~ /^status: ((\d+).*)/i) {
@@ -50,12 +60,7 @@
   my $dummy = ''; 
   1 while sysread($sock, $dummy, 1024, 0);
   fcntl($sock, F_SETFL,0);
-  my $l;
-  while (length($data)) {
-    $l = syswrite($sock, $data, length($data));
-    die("write error: $!\n") unless $l;
-    $data = substr($data, $l);
-  }
+  replyraw($data);
 }
 
 sub reply_error {
@@ -73,7 +78,7 @@
 
 sub readrequest {
   my $qu = '';
-  my $request;
+  my ($request, $rawhdrs);
 
   while (1) {
     if ($qu =~ /^(.*?)\r?\n/s) {
@@ -85,15 +90,17 @@
   my ($act, $path, $vers, undef) = split(' ', $request, 4);
   die("400 No method name\n") if !$act;
   if ($vers) {
-    die("501 Unsupported method: $act\n") if $act ne 'GET' && $act ne 'HEAD';
+    die("501 Unsupported method: $act\n") if $act ne 'GET' && $act ne 'HEAD' 
&& $act ne 'PUT';
     # read in all headers
     while ($qu !~ /^(.*?)\r?\n\r?\n(.*)$/s) {
       die("501 received truncated query\n") if !sysread($sock, $qu, 1024, 
length($qu));
     }
     $qu =~ /^(.*?)\r?\n\r?\n(.*)$/s;    # redo regexp to work around perl bug
     $qu = $2;
+    $rawhdrs = "Request: $1";
   } else {
     die("501 Bad method, must be GET\n") if $act ne 'GET';
+    $rawhdrs = 'Request: GET';
     $qu = '';
   }
   my $query_string = '';
@@ -112,7 +119,7 @@
     next if $path =~ s!/\.\.(?:/|$)!/!;
     last;
   }
-  return ($path, $query_string, $qu);
+  return ($act, $path, $query_string, $rawhdrs, $qu);
 }
 
 sub escape {
@@ -134,9 +141,39 @@
 }
 close($acceptsock);
 
+my $action;
+my $rawheaders;
+my $content;
 my $path = '?';
 eval {
-  ($path) = readrequest();
+  ($action, $path, undef, $rawheaders, $content) = readrequest();
+  if ($action eq 'PUT') {
+    die("no upload configured\n") unless defined($uploaddir) && $uploaddir ne 
'';
+    die("bad upload path\n") unless $path =~ 
/^\/[a-zA-Z0-9_][a-zA-Z0-9_\.]*$/s;
+    die("no content length\n") unless $rawheaders =~ 
/^content-length:\s*(\d+)/im;
+    my $cl = $1;
+    die("bad content length $cl\n") if $cl > 100000000;
+    my $lpath = "$uploaddir$path";
+    replyraw("HTTP/1.1 100 continue\r\n\r\n") if $rawheaders =~ 
/^expect:\s*100-continue/im;
+    $content = substr($content, 0, $cl) if length($content) > $cl;
+    my $fd;
+    open($fd, '>', $lpath) || die("$lpath: $!\n");
+    if ($content ne '') {
+      syswrite($fd, $content) == length($content) || die("syswrite: $!\n");
+      $cl -= length($content);
+    }
+    while ($cl > 0) {
+      $content = '';
+      die("501 received truncated body\n") if !sysread($sock, $content, $cl > 
8192 ? 8192 : $cl);
+      syswrite($fd, $content) == length($content) || die("syswrite: $!\n");
+      $cl -= length($content);
+    }
+    close($fd) || die("close: $!\n");
+    reply("Thank you.\n", 'Content-type: text/plain');
+    close $sock;
+    print "[$status PUT:$path]";
+    exit(0);
+  }
   my $lpath = ".$path";
   if (-d $lpath) {
     if ($path !~ /\/$/) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/obs-docker-support 
new/obs-build-20200520/obs-docker-support
--- old/obs-build-20200520/obs-docker-support   2020-05-20 18:38:11.000000000 
+0200
+++ new/obs-build-20200520/obs-docker-support   2020-08-20 10:13:26.000000000 
+0200
@@ -162,6 +162,38 @@
     esac
 }
 
+upload_with_perl='
+use Socket;
+$/ = undef;
+my $data = <STDIN>;
+my ($size, $ans) = length($data);
+socket(S, PF_INET, SOCK_STREAM, getprotobyname("tcp")) || die;
+connect(S, sockaddr_in(80, inet_aton("127.0.0.1"))) || die("connect: $!\n");
+select(S);
+$| = 1;
+print S "PUT $ARGV[0] HTTP/1.1\r\nContent-Length: 
".length($data)."\r\n\r\n$data";
+read(S, $ans, 1024);
+die($ans) unless $ans =~ /^200/;
+'
+
+upload_packages() {
+    local n=$1
+    local ans
+    if test -x /usr/bin/rpm -o -x /bin/rpm ; then
+       rpm -qa --qf 
'%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|%{DISTURL}|%{LICENSE}\n' > 
/tmp/packages
+       if test -n "$DATA_DIR" ; then
+           cp /tmp/packages "$DATA_DIR/UPLOAD/$n"
+       elif test -x /usr/bin/curl ; then
+           curl "http://localhost:80/$n"; -T /tmp/packages
+       elif test -x /usr/bin/perl ; then
+           perl -e "$upload_with_perl" "/$n" < /tmp/packages
+        else
+           (echo -n -e "PUT /$n HTTP/1.1\r\nContent-Length: $(wc -c < 
/tmp/packages)\r\n\r\n" | cat - /tmp/packages && read -t 600 ans ; case "$ans" 
in *\ 200\ *) ;; *) echo "$ans" >&2 ;; esac) <>/dev/tcp/localhost/80 1>&0
+       fi
+       rm -f /tmp/packages
+    fi
+}
+
 obs_docker_support() {
     case "$1" in
     --install|-i)
@@ -191,6 +223,7 @@
            test -e /var/lib/apt && mv /var/lib/apt /var/lib/apt.obssave
            /usr/bin/apt-get -o 
Dir::Etc::SourceList=$LOCAL_APTREPOS_D/obssource -o 
Dir::Etc::SourceParts=$LOCAL_APTREPOS_D update
        fi
+       upload_packages basepackages
     ;;
     --uninstall|-u)
        rm -rf "$LOCAL_REPOS_D"
@@ -204,11 +237,17 @@
            rm -rf /var/lib/apt
            mv /var/lib/apt.obssave /var/lib/apt
        fi
+       upload_packages packages
        rm -f /usr/local/sbin/obs-docker-support
     ;;
     esac
 }
 
+if test `id -u` != "0"; then
+    echo "obs-docker-support: not executed as root user!"
+    exit 1
+fi
+
 case ${0##*/} in
 obs-docker-support)
     obs_docker_support "$@"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-build-20200520/startdockerd 
new/obs-build-20200520/startdockerd
--- old/obs-build-20200520/startdockerd 2020-05-20 18:38:11.000000000 +0200
+++ new/obs-build-20200520/startdockerd 2020-08-20 10:13:26.000000000 +0200
@@ -29,6 +29,7 @@
 KILL=
 WEBSERVER=
 WEBSERVER_ONLY=
+WEBSERVER_UPLOAD=
 DOCKERD_EXPERIMANTAL=--experimental
 
 while test -n "$1" ; do
@@ -46,6 +47,10 @@
            WEBSERVER="$2"
            shift 2
            ;;
+       --webserver-upload)
+           WEBSERVER_UPLOAD="$2"
+           shift 2
+           ;;
        --isunshared)
            IS_UNSHARED=true
            shift
@@ -89,7 +94,7 @@
 
 if test -n "$WEBSERVER_ONLY" ; then
     echo "Starting local repository server"
-    $BUILD_DIR/dummyhttpserver "$BUILD_ROOT" "$WEBSERVER" &
+    $BUILD_DIR/dummyhttpserver "$BUILD_ROOT" "$WEBSERVER" "$WEBSERVER_UPLOAD" &
     WEBSERVER_PID=$!
     echo "$CONTAINERD_PID $DOCKERD_PID $WEBSERVER_PID" > 
$BUILD_ROOT/.startdockerd.pids
     exit 0
@@ -98,7 +103,7 @@
 if test -z "$IS_UNSHARED" ; then
     echo "Unsharing environment"
     # unshare mounts and network
-    exec unshare -m -n $BUILD_DIR/startdockerd --isunshared --root 
"$BUILD_ROOT" --webserver "$WEBSERVER" "$@"
+    exec unshare -m -n $BUILD_DIR/startdockerd --isunshared --root 
"$BUILD_ROOT" --webserver "$WEBSERVER" --webserver-upload "$WEBSERVER_UPLOAD" 
"$@"
     cleanup_and_exit 1 "exec unshare returned"
 fi
 
@@ -147,7 +152,7 @@
 
 if test -n "$WEBSERVER" ; then
     echo "Starting local repository server"
-    $BUILD_DIR/dummyhttpserver "$BUILD_ROOT" "$WEBSERVER" &
+    $BUILD_DIR/dummyhttpserver "$BUILD_ROOT" "$WEBSERVER" "$WEBSERVER_UPLOAD" &
     WEBSERVER_PID=$!
     echo "$CONTAINERD_PID $DOCKERD_PID $WEBSERVER_PID" > 
$BUILD_ROOT/.startdockerd.pids
 fi


Reply via email to