diff -Nru obs-build-20180831/baselibs_configs/baselibs_global.conf obs-build-20190710/baselibs_configs/baselibs_global.conf --- obs-build-20180831/baselibs_configs/baselibs_global.conf 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/baselibs_configs/baselibs_global.conf 2019-09-01 00:25:19.000000000 +0000 @@ -42,5 +42,5 @@ package /(.*)-debuginfo$/ targetname --debuginfo -+/usr/lib(64|ilp32)?/debug/.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)\.debug$ -+/usr/lib(64|ilp32)?/debug/.build-id/.* ++/usr/lib/debug/(.*/)?lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)(-.*-.*\..*)?\.debug$ ++/usr/lib/debug/\.build-id/.* diff -Nru obs-build-20180831/baselibs_configs/baselibs_global-sle15.conf obs-build-20190710/baselibs_configs/baselibs_global-sle15.conf --- obs-build-20180831/baselibs_configs/baselibs_global-sle15.conf 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/baselibs_configs/baselibs_global-sle15.conf 2019-09-01 00:25:19.000000000 +0000 @@ -42,5 +42,5 @@ package /(.*)-debuginfo$/ targetname --debuginfo -+/usr/lib(64|ilp32)?/debug/.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)\.debug$ -+/usr/lib(64|ilp32)?/debug/.build-id/.* ++/usr/lib/debug/(.*/)?lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)(-.*-.*\..*)?\.debug$ ++/usr/lib/debug/\.build-id/.* diff -Nru obs-build-20180831/build obs-build-20190710/build --- obs-build-20180831/build 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build 2019-09-01 00:25:19.000000000 +0000 @@ -73,6 +73,7 @@ DO_LINT= DO_CHECKS=true CLEAN_BUILD= +GENBUILDREQS_CLEAN_BUILD= RECIPEFILES=() SRCDIR= BUILD_JOBS= @@ -753,6 +754,29 @@ fi } +mount_stuff() { + if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then + test -d $BUILD_ROOT/dev/shm || rm -f $BUILD_ROOT/dev/shm + mkdir -p $BUILD_ROOT/proc + mkdir -p $BUILD_ROOT/sys + mkdir -p $BUILD_ROOT/dev/pts + mkdir -p $BUILD_ROOT/dev/shm + mount -n -tproc none $BUILD_ROOT/proc + mount -n -tdevpts -omode=0620,gid=5 none $BUILD_ROOT/dev/pts + mount -n -ttmpfs none $BUILD_ROOT/dev/shm + fi +} + +umount_stuff() { + if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then + umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2>/dev/null || true + umount -n $BUILD_ROOT/proc 2>/dev/null || true + umount -n $BUILD_ROOT/dev/pts 2>/dev/null || true + umount -n $BUILD_ROOT/dev/shm 2>/dev/null || true + umount -n $BUILD_ROOT/sys 2>/dev/null || true + fi +} + #### main #### trap fail_exit EXIT @@ -803,6 +827,7 @@ DO_CHECKS=false ;; -clean) + test "$CLEAN_BUILD" = '--clean' && GENBUILDREQS_CLEAN_BUILD='--clean' CLEAN_BUILD='--clean' ;; -wipe) @@ -1256,17 +1281,7 @@ copy_oldpackages fi - # mount stuff (/dev/shm needed for POSIX semaphores) - if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then - test -d $BUILD_ROOT/dev/shm || rm -f $BUILD_ROOT/dev/shm - mkdir -p $BUILD_ROOT/proc - mkdir -p $BUILD_ROOT/sys - mkdir -p $BUILD_ROOT/dev/pts - mkdir -p $BUILD_ROOT/dev/shm - mount -n -tproc none $BUILD_ROOT/proc - mount -n -tdevpts -omode=0620,gid=5 none $BUILD_ROOT/dev/pts - mount -n -ttmpfs none $BUILD_ROOT/dev/shm - fi + mount_stuff # hack to process preinstallimages early if test "$BUILDTYPE" = preinstallimage ; then @@ -1364,6 +1379,13 @@ setupicecream setupccache + if test -n "$RUN_SHELL" ; then + echo "You may want to initialize environment via:" + echo " su - $BUILD_USER" + chroot $BUILD_ROOT + cleanup_and_exit 0 + fi + # fill build directories with sources. Also sets TOPDIR recipe_setup @@ -1434,7 +1456,30 @@ fi RECIPE_BUILD_START_TIME=`date +%s` + GEN_BUILDREQS_PACKS=() recipe_build + + if test "$BUILD_SUCCEEDED" = genbuildreqs -a "$DO_INIT" = true -a -z "$RPMLIST" -a -z "$RUNNING_IN_VM" -a -n "${GEN_BUILDREQS_PACKS[*]}" ; then + # re-expand deps with GEN_BUILDREQS_PACKS extra packages + umount_stuff + set -- init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" "${initbuildsysstuff[@]}" "${definesnstuff[@]}" "${repos[@]}" $DLNOSIGNATURE $USEUSEDFORBUILD $CREATE_BUILD_BINARIES $RPMLIST "$MYSRCDIR/$RECIPEFILE" $ADDITIONAL_PACKS "${GEN_BUILDREQS_PACKS[@]}" + echo "$* ..." + "$@" || cleanup_and_exit 1 + check_exit + mount_stuff + BUILD_SUCCEEDED=false + recipe_build + fi + + if test "$BUILD_SUCCEEDED" = genbuildreqs ; then + recipe_cleanup + if test -n "$RUNNING_IN_VM" ; then + vm_exit_statistics + vm_wrapup_build OTHER + fi + cleanup_and_exit 9 + fi + test "$BUILD_SUCCEEDED" = true || cleanup_and_exit 1 recipe_build_time_statistics @@ -1442,14 +1487,7 @@ test -d "$SRCDIR" && cd "$SRCDIR" - # unmount stuff - if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then - umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2>/dev/null || true - umount -n $BUILD_ROOT/proc 2>/dev/null || true - umount -n $BUILD_ROOT/dev/pts 2>/dev/null || true - umount -n $BUILD_ROOT/dev/shm 2>/dev/null || true - umount -n $BUILD_ROOT/sys 2>/dev/null || true - fi + umount_stuff done if test -n "$RUNNING_IN_VM" ; then @@ -1468,6 +1506,11 @@ recipe_check_file_owners fi +TIME_POSTCHECKS=0 +TIME_RPMLINT=0 +TIME_BUILDCMP=0 +TIME_DELTARPMS=0 + if test -n "$RPMS" -a -d "$BUILD_ROOT/usr/lib/build/checks" ; then export DO_RPM_REMOVE=true # workaround for broken 13.1 check scripts which umount /proc @@ -1479,10 +1522,12 @@ for SRPM in $BUILD_ROOT/$TOPDIR/SRPMS/*src.rpm ; do test -f "$SRPM" && PNAME=`rpm --nodigest --nosignature -qp --qf "%{NAME}" $SRPM` done + TIME_POSTCHECKS=`date +%s` for CHECKSCRIPT in $BUILD_ROOT/usr/lib/build/checks/* ; do echo "... running ${CHECKSCRIPT##*/}" $CHECKSCRIPT || cleanup_and_exit 1 done + TIME_POSTCHECKS=$(( `date +%s` - $TIME_POSTCHECKS )) # workaround for broken 13.1 check scripts which umount /proc test -e "$BUILD_ROOT/proc/self" || mount -n -tproc none $BUILD_ROOT/proc fi @@ -1492,7 +1537,9 @@ DEBS=`find $BUILD_ROOT/$TOPDIR/DEBS -type f -name "*.deb" 2>/dev/null || true` if test -n "$RPMS" -a "$DO_CHECKS" != false ; then + TIME_RPMLINT=`date +%s` recipe_run_rpmlint + TIME_RPMLINT=$(( `date +%s` - $TIME_RPMLINT )) fi if test \( -n "$RPMS" -o -n "$DEBS" \) -a -n "$CREATE_BASELIBS"; then @@ -1504,10 +1551,14 @@ # post build work # TODO: don't hardcode. instead run scripts in a directory as it's done for the checks if test -n "$RPMS" -a -d "$BUILD_ROOT/.build.oldpackages" ; then + TIME_BUILDCMP=`date +%s` recipe_compare_oldpackages + TIME_BUILDCMP=$(( `date +%s` - $TIME_BUILDCMP )) # no need to create deltas if the build is the same if test ! -e $BUILD_ROOT/.build/.same_result_marker ; then + TIME_DELTARPMS=`date +%s` recipe_create_deltarpms + TIME_DELTARPMS=$(( `date +%s` - $TIME_DELTARPMS )) fi fi diff -Nru obs-build-20180831/Build/Docker.pm obs-build-20190710/Build/Docker.pm --- obs-build-20180831/Build/Docker.pm 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/Build/Docker.pm 2019-09-01 00:25:19.000000000 +0000 @@ -20,7 +20,8 @@ package Build::Docker; -use Build::SimpleXML; +use Build::SimpleXML; # to parse the annotation +use Build::SimpleJSON; use strict; @@ -44,9 +45,10 @@ } sub addrepo { - my ($ret, $url) = @_; + my ($ret, $url, $prio) = @_; - unshift @{$ret->{'repo_urls'}}, $url; + unshift @{$ret->{'imagerepos'}}, { 'url' => $url }; + $ret->{'imagerepos'}->[0]->{'priority'} = $prio if defined $prio; if ($Build::Kiwi::urlmapper) { my $prp = $Build::Kiwi::urlmapper->($url); if (!$prp) { @@ -55,15 +57,17 @@ } my ($projid, $repoid) = split('/', $prp, 2); unshift @{$ret->{'path'}}, {'project' => $projid, 'repository' => $repoid}; - return; + $ret->{'path'}->[0]->{'priority'} = $prio if defined $prio; + return 1; } else { # this is just for testing purposes... $url =~ s/^\/+$//; $url =~ s/:\//:/g; my @url = split('/', $url); unshift @{$ret->{'path'}}, {'project' => $url[-2], 'repository' => $url[-1]} if @url >= 2; + $ret->{'path'}->[0]->{'priority'} = $prio if defined $prio; + return 1; } - return 1; } sub cmd_zypper { @@ -134,6 +138,9 @@ my ($cf, $fn) = @_; my $basecontainer; + my $unorderedrepos; + my $useobsrepositories; + my $nosquash; my $dockerfile_data = slurp($fn); return { 'error' => 'could not open Dockerfile' } unless defined $dockerfile_data; @@ -142,7 +149,7 @@ 'name' => 'docker', 'deps' => [], 'path' => [], - 'repo_urls' => [], + 'imagerepos' => [], }; while (@lines) { @@ -153,6 +160,18 @@ my @tags = split(' ', $1); push @{$ret->{'containertags'}}, @tags if @tags; } + if ($line =~ /^#!BuildVersion:\s*(\S+)\s*$/) { + $ret->{'version'} = $1; + } + if ($line =~ /^#!UnorderedRepos\s*$/) { + $unorderedrepos = 1; + } + if ($line =~ /^#!UseOBSRepositories\s*$/) { + $useobsrepositories = 1; + } + if ($line =~ /^#!NoSquash\s*$/) { + $nosquash = 1; + } next; } # add continuation lines @@ -180,7 +199,7 @@ @args = split(/[ \t]+/, $line); s/%([a-fA-F0-9]{2})/chr(hex($1))/ge for @args; if ($cmd eq 'FROM') { - if (@args && !$basecontainer) { + if (@args && !$basecontainer && $args[0] ne 'scratch') { $basecontainer = $args[0]; $basecontainer .= ':latest' unless $basecontainer =~ /:[^:\/]+$/; } @@ -206,24 +225,46 @@ } } push @{$ret->{'deps'}}, "container:$basecontainer" if $basecontainer; + push @{$ret->{'deps'}}, '--unorderedimagerepos' if $unorderedrepos; + my $version = $ret->{'version'}; + my $release = $cf->{'buildrelease'}; + for (@{$ret->{'containertags'} || []}) { + s//$version/g if defined $version; + s//$release/g if defined $release; + } + $ret->{'path'} = [ { 'project' => '_obsrepositories', 'repository' => '' } ] if $useobsrepositories; + $ret->{'basecontainer'} = $basecontainer if $basecontainer; + $ret->{'nosquash'} = 1 if $nosquash; return $ret; } sub showcontainerinfo { - my $disturl; - (undef, $disturl) = splice(@ARGV, 0, 2) if @ARGV > 2 && $ARGV[0] eq '--disturl'; + my ($disturl, $release); + while (@ARGV) { + if (@ARGV > 2 && $ARGV[0] eq '--disturl') { + (undef, $disturl) = splice(@ARGV, 0, 2); + } elsif (@ARGV > 2 && $ARGV[0] eq '--release') { + (undef, $release) = splice(@ARGV, 0, 2); + } else { + last; + } + } my ($fn, $image, $taglist, $annotationfile) = @ARGV; local $Build::Kiwi::urlmapper = sub { return $_[0] }; + my $cf = {}; + $cf->{'buildrelease'} = $release if defined $release; my $d = {}; - $d = parse({}, $fn) if $fn; + $d = parse($cf, $fn) if $fn; die("$d->{'error'}\n") if $d->{'error'}; $image =~ s/.*\/// if defined $image; my @tags = split(' ', $taglist); for (@tags) { $_ .= ':latest' unless /:[^:\/]+$/; + if (/:([0-9][^:]*)$/) { + $d->{'version'} = $1 unless defined $d->{'version'}; + } } - @tags = map {"\"$_\""} @tags; - my @repos = map {"{ \"url\": \"$_\" }"} @{$d->{'repo_urls'} || []}; + my @repos = @{$d->{'imagerepos'} || []}; if ($annotationfile) { my $annotation = slurp($annotationfile); $annotation = Build::SimpleXML::parse($annotation) if $annotation; @@ -233,26 +274,43 @@ $annorepos = undef unless $annorepos && ref($annorepos) eq 'ARRAY'; for my $annorepo (@{$annorepos || []}) { next unless $annorepo && ref($annorepo) eq 'HASH' && $annorepo->{'url'}; - push @repos, "{ \"url\": \"$annorepo->{'url'}\" }"; + push @repos, { 'url' => $annorepo->{'url'}, '_type' => {'priority' => 'number'} }; + $repos[-1]->{'priority'} = $annorepo->{'priority'} if defined $annorepo->{'priority'}; } } my $buildtime = time(); - print "{\n"; - print " \"tags\": [ ".join(', ', @tags)." ]"; - print ",\n \"repos\": [ ".join(', ', @repos)." ]" if @repos; - print ",\n \"file\": \"$image\"" if defined $image; - print ",\n \"disturl\": \"$disturl\"" if defined $disturl; - print ",\n \"buildtime\": $buildtime"; - print "\n}\n"; + my $containerinfo = { + 'buildtime' => $buildtime, + '_type' => {'buildtime' => 'number'}, + }; + $containerinfo->{'tags'} = \@tags if @tags; + $containerinfo->{'repos'} = \@repos if @repos; + $containerinfo->{'file'} = $image if defined $image; + $containerinfo->{'disturl'} = $disturl if defined $disturl; + $containerinfo->{'version'} = $d->{'version'} if defined $d->{'version'}; + $containerinfo->{'release'} = $release if defined $release; + print Build::SimpleJSON::unparse($containerinfo)."\n"; } -sub showtags { - my ($fn) = @ARGV; +sub show { + my ($release); + while (@ARGV) { + if (@ARGV > 2 && $ARGV[0] eq '--release') { + (undef, $release) = splice(@ARGV, 0, 2); + } else { + last; + } + } + my ($fn, $field) = @ARGV; local $Build::Kiwi::urlmapper = sub { return $_[0] }; + my $cf = {}; + $cf->{'buildrelease'} = $release if defined $release; my $d = {}; - $d = parse({}, $fn) if $fn; + $d = parse($cf, $fn) if $fn; die("$d->{'error'}\n") if $d->{'error'}; - print "$_\n" for @{$d->{'containertags'} || []}; + my $x = $d->{$field}; + $x = [ $x ] unless ref $x; + print "@$x\n"; } 1; diff -Nru obs-build-20180831/Build/Kiwi.pm obs-build-20190710/Build/Kiwi.pm --- obs-build-20180831/Build/Kiwi.pm 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/Build/Kiwi.pm 2019-09-01 00:25:19.000000000 +0000 @@ -22,6 +22,7 @@ use strict; use Build::SimpleXML; +use Build::SimpleJSON; our $bootcallback; our $urlmapper; @@ -104,11 +105,8 @@ for my $repository (sort {$a->{priority} <=> $b->{priority}} @{$instsource->{'instrepo'} || []}) { my $kiwisource = ($repository->{'source'} || [])->[0]; if ($kiwisource->{'path'} eq 'obsrepositories:/') { - # special case, OBS will expand it. - push @repos, '_obsrepositories'; - next; - } - if ($kiwisource->{'path'} =~ /^obs:\/\/\/?([^\/]+)\/([^\/]+)\/?$/) { + push @repos, '_obsrepositories/'; # special case, OBS will expand it. + } elsif ($kiwisource->{'path'} =~ /^obs:\/\/\/?([^\/]+)\/([^\/]+)\/?$/) { push @repos, "$1/$2"; } else { my $prp; @@ -129,6 +127,7 @@ for my $po (@{$productoptions->{'productoption'} || []}) { $ret->{'sourcemedium'} = $po->{'_content'} if $po->{'name'} eq 'SOURCEMEDIUM'; $ret->{'debugmedium'} = $po->{'_content'} if $po->{'name'} eq 'DEBUGMEDIUM'; + $ret->{'milestone'} = $po->{'_content'} if $po->{'name'} eq 'BETA_VERSION'; } } if ($instsource->{'architectures'}) { @@ -200,7 +199,7 @@ } sub kiwiparse { - my ($xml, $arch, $buildflavor, $count) = @_; + my ($xml, $arch, $buildflavor, $release, $count) = @_; $count ||= 0; die("kiwi config inclusion depth limit reached\n") if $count++ > 10; @@ -222,12 +221,18 @@ my $obsexclusivearch; my $obsexcludearch; my $obsprofiles; + my $unorderedrepos; $obsexclusivearch = $1 if $xml =~ /^\s*\s*$/im; $obsexcludearch = $1 if $xml =~ /^\s*\s*$/im; $obsprofiles = $1 if $xml =~ /^\s*\s*$/im; if ($obsprofiles) { $obsprofiles = [ grep {defined($_)} map {$_ eq '@BUILD_FLAVOR@' ? $buildflavor : $_} split(' ', $obsprofiles) ]; } + $unorderedrepos = 1 if $xml =~ /^\s*\s*$/im; + for ($xml =~ /^\s*\s*$/img) { + push @imagerepos, { 'url' => $_ }; + } + my $schemaversion = $kiwi->{'schemaversion'} ? versionstring($kiwi->{'schemaversion'}) : 0; $ret->{'name'} = $kiwi->{'name'} if $kiwi->{'name'}; $ret->{'filename'} = $kiwi->{'name'} if $kiwi->{'name'}; @@ -275,6 +280,18 @@ if ($preferences->[0]->{'version'}) { $ret->{'version'} = $preferences->[0]->{'version'}->[0]->{'_content'}; } + + # add extra tags + my @extratags; + if ($xml =~ /^\s*\s*$/im) { + for (split(' ', $1)) { + s//$ret->{'version'}/g if $ret->{'version'}; + s//$release/g if $release; + $_ = "$_:latest" unless /:[^\/]+$/; + push @extratags, $_; + } + } + my $containerconfig; for my $pref (@{$preferences || []}) { if ($obsprofiles && $pref->{'profiles'}) { @@ -290,7 +307,7 @@ # for kiwi 3.8 and before push @types, $type->{'_content'}; } - # save containerconfig so that we can retrievethe tag + # save containerconfig so that we can retrieve the tag $containerconfig = $type->{'containerconfig'}->[0] if $type->{'containerconfig'}; # add derived container dependency @@ -328,7 +345,7 @@ my ($bootxml, $xsrc) = $bootcallback->($1, $2); next unless $bootxml; push @extrasources, $xsrc if $xsrc; - my $bret = kiwiparse($bootxml, $arch, $buildflavor, $count); + my $bret = kiwiparse($bootxml, $arch, $buildflavor, $release, $count); push @bootrepos, map {"$_->{'project'}/$_->{'repository'}"} @{$bret->{'path'} || []}; push @packages, @{$bret->{'deps'} || []}; push @extrasources, @{$bret->{'extrasource'} || []}; @@ -366,12 +383,10 @@ push @imagerepos, $imagerepo; } next if $repository->{'imageonly'}; - if ($kiwisource->{'path'} eq 'obsrepositories:/') { - push @repos, '_obsrepositories/'; - next; - } my $prp; - if ($kiwisource->{'path'} =~ /^obs:\/{1,3}([^\/]+)\/([^\/]+)\/?$/) { + if ($kiwisource->{'path'} eq 'obsrepositories:/') { + $prp = '_obsrepositories/'; + } elsif ($kiwisource->{'path'} =~ /^obs:\/{1,3}([^\/]+)\/([^\/]+)\/?$/) { $prp = "$1/$2"; } else { $prp = $urlmapper->($kiwisource->{'path'}) if $urlmapper; @@ -396,17 +411,17 @@ $patterntype ||= $packages->{'patternType'}; push @pkgs, @{$packages->{'package'}} if $packages->{'package'}; - for my $pattern (@{$kiwi->{'namedCollection'} || []}) { - push @pkgs, { %$pattern, 'name' => "pattern()=$pattern->{'name'}" } if $pattern->{'name'}; + for my $pattern (@{$packages->{'namedCollection'} || []}) { + push @pkgs, { %$pattern, 'name' => "pattern() = $pattern->{'name'}" } if $pattern->{'name'}; } - for my $product (@{$kiwi->{'product'} || []}) { - push @pkgs, { %$product, 'name' => "product()=$product->{'name'}" } if $product->{'name'}; + for my $product (@{$packages->{'product'} || []}) { + push @pkgs, { %$product, 'name' => "product() = $product->{'name'}" } if $product->{'name'}; } - for my $pattern (@{$kiwi->{'opensusePatterns'} || []}) { - push @pkgs, { %$pattern, 'name' => "pattern()=$pattern->{'name'}" } if $pattern->{'name'}; + for my $pattern (@{$packages->{'opensusePatterns'} || []}) { + push @pkgs, { %$pattern, 'name' => "pattern() = $pattern->{'name'}" } if $pattern->{'name'}; } - for my $product (@{$kiwi->{'opensuseProduct'} || []}) { - push @pkgs, { %$product, 'name' => "product()=$product->{'name'}" } if $product->{'name'}; + for my $product (@{$packages->{'opensuseProduct'} || []}) { + push @pkgs, { %$product, 'name' => "product() = $product->{'name'}" } if $product->{'name'}; } } $patterntype ||= 'onlyRequired'; @@ -431,6 +446,7 @@ } push @packages, "kiwi-packagemanager:$packman"; push @packages, "--dorecommends--", "--dosupplements--" if $patterntype && $patterntype eq 'plusRecommended'; + push @packages, '--unorderedimagerepos', if $unorderedrepos; $ret->{'exclarch'} = [ unify(split(' ', $obsexclusivearch)) ] if $obsexclusivearch; $ret->{'badarch'} = [ unify(split(' ', $obsexcludearch)) ] if $obsexcludearch; @@ -451,16 +467,17 @@ $ret->{'imagerepos'} = \@imagerepos if @imagerepos; if ($containerconfig) { my $containername = $containerconfig->{'name'}; - my $containertags = $containerconfig->{'tag'}; - $containertags = [ $containertags ] if defined($containertags) && !ref($containertags); - if ($containertags && defined($containername)) { - for (@$containertags) { - $_ = "$containername:$_" unless /:/; + my @containertags; + if (defined $containername) { + push @containertags, $containerconfig->{'tag'} if defined $containerconfig->{'tag'}; + push @containertags, 'latest' unless @containertags; + if (defined($containerconfig->{'additionaltags'})) { + push @containertags, split(',', $containerconfig->{'additionaltags'}); } + @containertags = map {"$containername:$_"} @containertags; } - $containertags = undef if $containertags && !@$containertags; - $containertags = [ "$containername:latest" ] if defined($containername) && !$containertags; - $ret->{'container_tags'} = $containertags if $containertags; + push @containertags, @extratags if @extratags; + $ret->{'container_tags'} = [ unify(@containertags) ] if @containertags; } if ($obsprofiles) { if (@$obsprofiles) { @@ -482,7 +499,7 @@ close F; $cf ||= {}; my $d; - eval { $d = kiwiparse($xml, ($cf->{'arch'} || ''), $cf->{'buildflavor'}, 0) }; + eval { $d = kiwiparse($xml, ($cf->{'arch'} || ''), $cf->{'buildflavor'}, $cf->{'buildrelease'}, 0) }; if ($@) { my $err = $@; chomp $err; @@ -508,40 +525,47 @@ } sub showcontainerinfo { - my ($disturl, $arch, $buildflavor); - (undef, $disturl) = splice(@ARGV, 0, 2) if @ARGV > 2 && $ARGV[0] eq '--disturl'; - (undef, $arch) = splice(@ARGV, 0, 2) if @ARGV > 2 && $ARGV[0] eq '--arch'; - (undef, $buildflavor) = splice(@ARGV, 0, 2) if @ARGV > 2 && $ARGV[0] eq '--buildflavor'; + my ($disturl, $arch, $buildflavor, $release); + while (@ARGV) { + if (@ARGV > 2 && $ARGV[0] eq '--disturl') { + (undef, $disturl) = splice(@ARGV, 0, 2); + } elsif (@ARGV > 2 && $ARGV[0] eq '--arch') { + (undef, $arch) = splice(@ARGV, 0, 2); + } elsif (@ARGV > 2 && $ARGV[0] eq '--buildflavor') { + (undef, $buildflavor) = splice(@ARGV, 0, 2); + } elsif (@ARGV > 2 && $ARGV[0] eq '--release') { + (undef, $release) = splice(@ARGV, 0, 2); + } else { + last; + } + } my ($fn, $image) = @ARGV; local $urlmapper = sub { return $_[0] }; my $cf = {}; $cf->{'arch'} = $arch if defined $arch; $cf->{'buildflavor'} = $buildflavor if defined $buildflavor; + $cf->{'buildrelease'} = $release if defined $release; my $d = parse($cf, $fn); die("$d->{'error'}\n") if $d->{'error'}; $image =~ s/.*\/// if defined $image; - my $release; - $release = $1 if $image =~ /.*-Build(\d+\.\d+).*/; - my @tags = map {"\"$_\""} @{$d->{'container_tags'} || []}; my @repos; for my $repo (@{$d->{'imagerepos'} || []}) { - if (defined $repo->{'priority'}) { - push @repos, "{ \"url\": \"$repo->{'url'}\", \"priority\": $repo->{'priority'} }"; - } else { - push @repos, "{ \"url\": \"$repo->{'url'}\" }"; - } + push @repos, { 'url' => $repo->{'url'}, '_type' => {'priority' => 'number'} }; + $repos[-1]->{'priority'} = $repo->{'priority'} if defined $repo->{'priority'}; } my $buildtime = time(); - print "{\n"; - print " \"name\": \"$d->{'name'}\""; - print ",\n \"version\": \"$d->{'version'}\"" if defined $d->{'version'}; - print ",\n \"release\": \"$release\"" if defined $release; - print ",\n \"tags\": [ ".join(', ', @tags)." ]" if @tags; - print ",\n \"repos\": [ ".join(', ', @repos)." ]" if @repos; - print ",\n \"file\": \"$image\"" if defined $image; - print ",\n \"disturl\": \"$disturl\"" if defined $disturl; - print ",\n \"buildtime\": $buildtime"; - print "\n}\n"; + my $containerinfo = { + 'name' => $d->{'name'}, + 'buildtime' => $buildtime, + '_type' => {'buildtime' => 'number'}, + }; + $containerinfo->{'version'} = $d->{'version'} if defined $d->{'version'}; + $containerinfo->{'release'} = $release if defined $release; + $containerinfo->{'tags'} = $d->{'container_tags'} if @{$d->{'container_tags'} || []}; + $containerinfo->{'repos'} = \@repos if @repos; + $containerinfo->{'file'} = $image if defined $image; + $containerinfo->{'disturl'} = $disturl if defined $disturl; + print Build::SimpleJSON::unparse($containerinfo)."\n"; } # not implemented yet. diff -Nru obs-build-20180831/Build/Rpm.pm obs-build-20190710/Build/Rpm.pm --- obs-build-20180831/Build/Rpm.pm 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/Build/Rpm.pm 2019-09-01 00:25:19.000000000 +0000 @@ -261,7 +261,7 @@ next; } if ($line =~ /^\s*#/) { - next unless $line =~ /^#!Build(?:Ignore|Conflicts)\s*:/i; + next unless $line =~ /^#!Build(?:Ignore|Conflicts|Requires)\s*:/i; } my $expandedline = ''; if (!$skip && ($line =~ /%/)) { @@ -422,7 +422,7 @@ if ($skip) { $xspec->[-1] = [ $xspec->[-1], undef ] if $xspec; - $ifdeps = 1 if $line =~ /^(BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore|\#\!BuildConflicts)\s*:\s*(\S.*)$/i; + $ifdeps = 1 if $line =~ /^(BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore|\#\!BuildConflicts|\#\!BuildRequires)\s*:\s*(\S.*)$/i; next; } @@ -487,6 +487,7 @@ my @deps = $deps =~ /([^\s\[,]+)(\s+[<=>]+\s+[^\s\[,]+)?(\s+\[[^\]]+\])?[\s,]*/g; while (@deps) { my ($pack, $vers, $qual) = splice(@deps, 0, 3); + next if $pack eq 'MACRO'; # hope for the best... if (!$unfilteredprereqs && $pack =~ /^\//) { $ifdeps = 1; next unless $config->{'fileprovides'}->{$pack}; @@ -495,7 +496,7 @@ } next; } - if ($preamble && ($line =~ /^(BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore|\#\!BuildConflicts)\s*:\s*(\S.*)$/i)) { + if ($preamble && ($line =~ /^(BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore|\#\!BuildConflicts|\#\!BuildRequires)\s*:\s*(\S.*)$/i)) { my $what = $1; my $deps = $2; $ifdeps = 1 if $hasif; @@ -552,7 +553,8 @@ } $replace = 1 if grep {/^-/} @ndeps; - if (lc($what) ne 'buildrequires' && lc($what) ne 'buildprereq') { + my $lcwhat = lc($what); + if ($lcwhat ne 'buildrequires' && $lcwhat ne 'buildprereq' && $lcwhat ne '#!buildrequires') { if ($conflictdeps && $what =~ /conflict/i) { push @packdeps, map {"!$_"} @ndeps; next; @@ -593,7 +595,7 @@ my $num = defined($2) ? $2 : ($1 eq 'source' ? 0 : -1); $macros{uc($1) . "URL$num"} = $val if $num >= 0; } - } elsif (!$preamble && ($line =~ /^(Source\d*|Patch\d*|Url|Icon|BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore)\s*:\s*(\S.*)$/i)) { + } elsif (!$preamble && ($line =~ /^(Source\d*|Patch\d*|Url|Icon|BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore|\#\!BuildConflicts|\#\!BuildRequires)\s*:\s*(\S.*)$/i)) { print STDERR "Warning: spec file parser ".($lineno ? " line $lineno" : '').": Ignoring $1 used beyond the preamble.\n" if $config->{'warnings'}; } @@ -898,13 +900,18 @@ return 1 if !defined $s2; return 0 if $s1 eq $s2; while (1) { - $s1 =~ s/^[^a-zA-Z0-9~]+//; - $s2 =~ s/^[^a-zA-Z0-9~]+//; + $s1 =~ s/^[^a-zA-Z0-9~\^]+//; + $s2 =~ s/^[^a-zA-Z0-9~\^]+//; if ($s1 =~ s/^~//) { next if $s2 =~ s/^~//; return -1; } return 1 if $s2 =~ /^~/; + if ($s1 =~ s/^\^//) { + next if $s2 =~ s/^\^//; + return $s2 eq '' ? 1 : -1; + } + return $s1 eq '' ? -1 : 1 if $s2 =~ /^\^/; if ($s1 eq '') { return $s2 eq '' ? 0 : -1; } diff -Nru obs-build-20180831/Build/SimpleJSON.pm obs-build-20190710/Build/SimpleJSON.pm --- obs-build-20180831/Build/SimpleJSON.pm 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/Build/SimpleJSON.pm 2019-09-01 00:25:19.000000000 +0000 @@ -0,0 +1,102 @@ +################################################################ +# +# Copyright (c) 2018 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::SimpleJSON; + +use strict; + +sub unparse_keys { + my ($d) = @_; + my @k = grep {$_ ne '_start' && $_ ne '_end' && $_ ne '_order' && $_ ne '_type'} sort keys %$d; + return @k unless $d->{'_order'}; + my %k = map {$_ => 1} @k; + my @ko; + for (@{$d->{'_order'}}) { + push @ko, $_ if delete $k{$_}; + } + return (@ko, grep {$k{$_}} @k); +} + +my %specialescapes = ( + '"' => '\\"', + '\\' => '\\\\', + '/' => '\\/', + "\b" => '\\b', + "\f" => '\\f', + "\n" => '\\n', + "\r" => '\\r', + "\t" => '\\t', +); + +sub unparse_string { + my ($d) = @_; + $d =~ s/([\"\\\000-\037])/$specialescapes{$1} || sprintf('\\u%04d', ord($1))/ge; + return "\"$d\""; +} + +sub unparse_bool { + my ($d) = @_; + return $d ? 'true' : 'false'; +} + +sub unparse_number { + my ($d) = @_; + return sprintf("%.f", $d) if $d == int($d); + return sprintf("%g", $d); +} + +sub unparse { + my ($d, %opts) = @_; + + my $r = ''; + if (ref($d) eq 'ARRAY') { + return '[]' unless @$d; + my $indent = $opts{'ugly'} ? '' : $opts{'indent'} || ''; + my $nl = $opts{'ugly'} ? '' : "\n"; + my $sp = $opts{'ugly'} ? '' : " "; + my $first = 0; + for my $dd (@$d) { + $r .= ",$nl" if $first++; + $r .= "$indent$sp$sp$sp".unparse($dd, %opts, 'indent' => " $indent"); + } + return "\[$nl$r$nl$indent\]"; + } + if (ref($d) eq 'HASH') { + my @k = unparse_keys($d); + return '{}' unless @k; + my $indent = $opts{'ugly'} ? '' : $opts{'indent'} || ''; + my $nl = $opts{'ugly'} ? '' : "\n"; + my $sp = $opts{'ugly'} ? '' : " "; + my $first = 0; + for my $k (@k) { + $r .= ",$nl" if $first++; + my $dd = $d->{$k}; + $r .= "$indent$sp$sp$sp".unparse_string($k)."$sp:$sp".unparse($dd, %opts, 'indent' => " $indent", '_type' => ($d->{'_type'} || {})->{$k}); + } + return "\{$nl$r$nl$indent\}"; + } + return 'null' unless defined $d; + my $type = $opts{'_type'} || ''; + return unparse_bool($d) if $type eq 'bool'; + return unparse_number($d) if $type eq 'number'; + return unparse_string($d); +} + +1; diff -Nru obs-build-20180831/build.1 obs-build-20190710/build.1 --- obs-build-20180831/build.1 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build.1 2019-09-01 00:25:19.000000000 +0000 @@ -4,9 +4,9 @@ .ns .TP \\$1 .. -.TH build 1 "(c) 1997-2008 SuSE Linux AG Nuernberg, Germany" +.TH BUILD 1 "(c) 1997-2018 SUSE Linux AG Nuernberg, Germany" .SH NAME -build \- build SuSE Linux RPMs in a chroot environment +build \- build SUSE Linux RPMs in a chroot environment .SH SYNOPSIS .B build .RB [ --clean | --no-init] diff -Nru obs-build-20180831/build-pkg-deb obs-build-20190710/build-pkg-deb --- obs-build-20180831/build-pkg-deb 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-pkg-deb 2019-09-01 00:25:19.000000000 +0000 @@ -21,6 +21,8 @@ # ################################################################ +DEB_UNSAFE_IO= + # # A wrapper around chroot to set the environment correctly for dpkg and # pre/postinst scripts. @@ -48,6 +50,16 @@ :>> $BUILD_ROOT/var/lib/dpkg/available :>> $BUILD_ROOT/var/log/dpkg.log :>> $BUILD_ROOT/etc/ld.so.conf + + # Install a policy so that services are not started. See + # https://manpages.debian.org/unstable/init-system-helpers/invoke-rc.d.8.en.html + # for details. + mkdir -p $BUILD_ROOT/usr/sbin + cat > $BUILD_ROOT/usr/sbin/policy-rc.d </dev/null 2>&1 + DEB_UNSAFE_IO= + chroot $BUILD_ROOT dpkg --force-unsafe-io --version >/dev/null 2>&1 && DEB_UNSAFE_IO="--force-unsafe-io" + deb_chroot $BUILD_ROOT dpkg --install $DEB_UNSAFE_IO --force-depends .init_b_cache/dpkg.deb >/dev/null 2>&1 } pkg_prepare_deb() { - : + # test if dpkg knows --force-unsafe-io + DEB_UNSAFE_IO= + chroot $BUILD_ROOT dpkg --force-unsafe-io --version >/dev/null 2>&1 && DEB_UNSAFE_IO="--force-unsafe-io" } pkg_install_deb() { - ( deb_chroot $BUILD_ROOT dpkg --install --force-unsafe-io --force-depends .init_b_cache/$PKG.deb 2>&1 || touch $BUILD_ROOT/exit ) | \ + ( deb_chroot $BUILD_ROOT dpkg --install $DEB_UNSAFE_IO --force-depends .init_b_cache/$PKG.deb 2>&1 || touch $BUILD_ROOT/exit ) | \ perl -ne '$|=1;/^(Configuration file|Installing new config file|Selecting previously deselected|Selecting previously unselected|\(Reading database|Unpacking |Setting up|Creating config file|Preparing to replace dpkg|Preparing to unpack )/||/^$/||print' # ugly workaround for upstart system. some packages (procps) try # to start a service in their configure phase. As we don't have diff -Nru obs-build-20180831/build-pkg-rpm obs-build-20190710/build-pkg-rpm --- obs-build-20180831/build-pkg-rpm 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-pkg-rpm 2019-09-01 00:25:19.000000000 +0000 @@ -156,6 +156,7 @@ case `rpm -qp --nodigest --nosignature --qf "%{PAYLOADCOMPRESSOR}\n" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm"` in lzma) rpm --showrc | egrep 'PayloadIsLzma|_lzma' > /dev/null || PAYLOADDECOMPRESS="lzma -d" ;; xz) rpm --showrc | egrep 'PayloadIsXz|_xz' > /dev/null || PAYLOADDECOMPRESS="xz -d" ;; + zstd) rpm --showrc | egrep 'PayloadIsZstd' > /dev/null || PAYLOADDECOMPRESS="zstd -d" ;; esac if test "$PAYLOADDECOMPRESS" = "lzma -d" ; then if ! lzma /dev/null 2>&1 ; then @@ -167,10 +168,15 @@ test -f "$BUILD_DIR/xzdec.sh" && PAYLOADDECOMPRESS="bash $BUILD_DIR/xzdec.sh" fi fi + if test "$PAYLOADDECOMPRESS" = "zstd -d" ; then + if ! zstd /dev/null 2>&1 ; then + test -f "$BUILD_DIR/zstddec.sh" && PAYLOADDECOMPRESS="bash $BUILD_DIR/zstddec.sh" + fi + fi if test "$PAYLOADDECOMPRESS" = cat ; then - rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" | $CPIO + rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" | $CPIO || cleanup_and_exit 1 else - rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" | $PAYLOADDECOMPRESS | $CPIO + rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" | $PAYLOADDECOMPRESS | $CPIO || cleanup_and_exit 1 fi if test -e ".init_b_cache/scripts/$PKG.run" ; then rpm -qp --nodigest --nosignature --qf "%{PREIN}" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" > ".init_b_cache/scripts/$PKG.pre" diff -Nru obs-build-20180831/Build.pm obs-build-20190710/Build.pm --- obs-build-20180831/Build.pm 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/Build.pm 2019-09-01 00:25:19.000000000 +0000 @@ -346,6 +346,7 @@ $config->{'patterntype'} = [ @l ]; } elsif ($l0 eq 'release:') { $config->{'release'} = $l[0]; + $config->{'release@'} = [ @l ]; } elsif ($l0 eq 'cicntstart:') { $config->{'cicntstart'} = $l[0]; } elsif ($l0 eq 'releaseprg:') { @@ -1282,6 +1283,7 @@ my $requires = $config->{'requiresh'}; my $xignore = { map {substr($_, 1) => 1} grep {/^-/} @p }; + $ignoreconflicts = 1 if $xignore->{'-ignoreconflicts--'}; $ignore = {} if $xignore->{'-ignoreignore--'}; if ($ignoreignore) { $xignore = {}; diff -Nru obs-build-20180831/build-recipe obs-build-20190710/build-recipe --- obs-build-20180831/build-recipe 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe 2019-09-01 00:25:19.000000000 +0000 @@ -137,7 +137,7 @@ snapcraft) types="snapcraft.yaml" ;; esac fi - types="$types .spec .dsc PKGBUILD 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" fi for t in $types ; do found= @@ -191,7 +191,7 @@ } recipe_build_time_statistics() { - if test "$DO_STATISTICS" = 1 -a -n "$RECIPE_BUILD_START_TIME" -a -n "$TOPDIR" ; then + if test "$DO_STATISTICS" = 1 -a -n "$RECIPE_BUILD_START_TIME" -a -n "$TOPDIR" -a -n "$RUNNING_IN_VM" ; then mkdir -p "$TOPDIR/OTHER" echo "TIME_main_build: $(( `date +%s` - $RECIPE_BUILD_START_TIME))" >> "$TOPDIR/OTHER/_statistics" RECIPE_BUILD_START_TIME= diff -Nru obs-build-20180831/build-recipe-arch obs-build-20190710/build-recipe-arch --- obs-build-20180831/build-recipe-arch 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-arch 2019-09-01 00:25:19.000000000 +0000 @@ -41,7 +41,7 @@ recipe_prepare_arch() { echo "Preparing sources..." - if ! _arch_recipe_makepkg -so "2>&1" ">/dev/null" ; then + if ! _arch_recipe_makepkg -so --skippgpcheck "2>&1" ">/dev/null" ; then cleanup_and_exit 1 "failed to prepare sources" fi } diff -Nru obs-build-20180831/build-recipe-debootstrap obs-build-20190710/build-recipe-debootstrap --- obs-build-20180831/build-recipe-debootstrap 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-debootstrap 2019-09-01 00:25:19.000000000 +0000 @@ -45,8 +45,10 @@ done FULL_PKG_LIST="${FULL_PKG_LIST#,}" rm -rf "$BUILD_ROOT/$myroot" - mkdir -p "$BUILD_ROOT/$myroot/etc/dpkg/dpkg.cfg.d" - echo force-unsafe-io > "$BUILD_ROOT/$myroot/etc/dpkg/dpkg.cfg.d/force-unsafe-io" + if chroot $BUILD_ROOT dpkg --force-unsafe-io --version >/dev/null 2>&1 ; then + mkdir -p "$BUILD_ROOT/$myroot/etc/dpkg/dpkg.cfg.d" + echo force-unsafe-io > "$BUILD_ROOT/$myroot/etc/dpkg/dpkg.cfg.d/force-unsafe-io" + fi set -- chroot $BUILD_ROOT debootstrap --keep-debootstrap-dir --no-check-gpg --variant=buildd --arch="${arch}" --include="$FULL_PKG_LIST" "$dist" "$myroot" file:///.build.binaries echo "running debootstrap..." diff -Nru obs-build-20180831/build-recipe-docker obs-build-20190710/build-recipe-docker --- obs-build-20180831/build-recipe-docker 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-docker 2019-09-01 00:25:19.000000000 +0000 @@ -55,42 +55,49 @@ recipe_build_docker() { touch $BUILD_ROOT/etc/resolv.conf - base_image_path=$(find containers -regextype egrep -regex ".*\.(tgz|tar|tar\.xz|tar\.gz)$" -print -quit) - test -f "$base_image_path" || cleanup_and_exit 1 "base image not found" + base_image_path= + base_image_tag=$(grep "^\s*FROM" "$RECIPEFILE" | head -n 1 | cut -d" " -f2) - if test "$BUILDENGINE" = "podman"; then - DOCKER_TOOL="podman" - if ! $BUILD_DIR/startdockerd --root "$BUILD_ROOT" --webserver-only "$TOPDIR/SOURCES/repos" ; then - cleanup_and_exit 1 - fi + if test "$base_image_tag" != scratch ; then + base_image_path=$(find containers -regextype egrep -regex ".*\.(tgz|tar|tar\.xz|tar\.gz)$" -print -quit) + test -f "$base_image_path" || cleanup_and_exit 1 "base image not found" + fi + + if test "$BUILDENGINE" = podman; then + DOCKER_TOOL=podman else - DOCKER_TOOL="docker" + DOCKER_TOOL=docker if ! $BUILD_DIR/startdockerd --root "$BUILD_ROOT" --webserver "$TOPDIR/SOURCES/repos" ; then cleanup_and_exit 1 fi - DOCKERD_STARTED=true fi + DOCKERD_STARTED=true - cp $BUILD_DIR/obs-docker-support "$BUILD_ROOT/$TOPDIR/SOURCES/.obs-docker-support" - chmod 755 "$BUILD_ROOT/$TOPDIR/SOURCES/.obs-docker-support" - - echo "Loading base image" - if test -L "$base_image_path" ; then - # copy into build root - cp -L "$base_image_path" "$base_image_path.lnk" - mv "$base_image_path.lnk" "$base_image_path" + if test "$DOCKER_TOOL" = podman; then + sed -e "s!^DATA_DIR=!DATA_DIR=$TOPDIR/SOURCES/repos!" <"$BUILD_DIR/obs-docker-support" >"$BUILD_ROOT/$TOPDIR/SOURCES/.obs-docker-support" + else + cp $BUILD_DIR/obs-docker-support "$BUILD_ROOT/$TOPDIR/SOURCES/.obs-docker-support" fi + chmod 755 "$BUILD_ROOT/$TOPDIR/SOURCES/.obs-docker-support" - # Inspect the content of the image to decide if this is a layered image - # or a filesystem one. We need to know if we will "docker load" it or - # "docker import" it. - if tar -tf $base_image_path | grep "^manifest.json" -q; then - echo "Layered image found" - chroot $BUILD_ROOT $DOCKER_TOOL load --input $TOPDIR/SOURCES/$base_image_path - else - echo "Filesystem image found" - desired_tag=$(grep "^\s*FROM" "$RECIPEFILE" | cut -d" " -f2) - chroot $BUILD_ROOT $DOCKER_TOOL import $TOPDIR/SOURCES/$base_image_path "$desired_tag" + if test -n "$base_image_path"; then + echo "Loading base image" + if test -L "$base_image_path" ; then + # copy into build root + cp -L "$base_image_path" "$base_image_path.lnk" + mv "$base_image_path.lnk" "$base_image_path" + fi + + # Inspect the content of the image to decide if this is a layered image + # or a filesystem one. We need to know if we will "docker load" it or + # "docker import" it. + if tar -tf $base_image_path | grep -q "^manifest.json" ; then + echo "Layered image found" + chroot $BUILD_ROOT $DOCKER_TOOL load --input $TOPDIR/SOURCES/$base_image_path + else + echo "Filesystem image found" + chroot $BUILD_ROOT $DOCKER_TOOL import $TOPDIR/SOURCES/$base_image_path "$base_image_tag" + fi fi # Prepare the package repository @@ -101,13 +108,16 @@ chroot $BUILD_ROOT bash -c "cd $TOPDIR/SOURCES/repos && dpkg-scanpackages -m . | gzip > Packages.gz" fi - # Find tags + # find tags, first look into recipe file FIRSTTAG= ALLTAGS= - for t in $(perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::showtags "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE") ; do + args=() + test -n "$RELEASE" && args=("${args[@]}" --release "$RELEASE") + for t in $(perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::show -- "${args[@]}" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" containertags) ; do test -n "$FIRSTTAG" || FIRSTTAG="$t" ALLTAGS="$ALLTAGS $t" done + # if we did not find a tag, look info a file called TAG if test -z "$FIRSTTAG" -a -f TAG ; then for t in $(egrep -v '^#' TAG) ; do test -n "$FIRSTTAG" || FIRSTTAG="$t" @@ -138,24 +148,41 @@ test -n "$DISTURL" && echo "LABEL org.openbuildservice.disturl=$DISTURL" >> "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" # now do the build - echo "Building image $ALLTAGS" - if ! chroot $BUILD_ROOT $DOCKER_TOOL build --network=host "${tagargs[@]}" -f "$TOPDIR/SOURCES/$RECIPEFILE" $TOPDIR/SOURCES/ ; then - cleanup_and_exit 1 "Docker build command failed" + squashopt=--squash + if test "$DOCKER_TOOL" = podman -o -n "$(perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::show -- "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" nosquash)" ; then + squashopt= + echo "Building image $ALLTAGS (nosquash)" + else + echo "Building image $ALLTAGS" + fi + + + if test "$DOCKER_TOOL" = podman ; then + if ! $BUILD_DIR/call-podman --root "$BUILD_ROOT" build $squashopt -v "$TOPDIR/SOURCES/repos:$TOPDIR/SOURCES/repos" --network=host "${tagargs[@]}" -f "$TOPDIR/SOURCES/$RECIPEFILE" $TOPDIR/SOURCES/ ; then + cleanup_and_exit 1 "$DOCKER_TOOL build command failed" + fi + else + if ! chroot $BUILD_ROOT $DOCKER_TOOL build $squashopt --network=host "${tagargs[@]}" -f "$TOPDIR/SOURCES/$RECIPEFILE" $TOPDIR/SOURCES/ ; then + cleanup_and_exit 1 "$DOCKER_TOOL build command failed" + fi fi - # Save the resulting image to a tarball. Use tag for generating the file name. - echo "Saving image $FIRSTTAG" + # Save the resulting image to a tarball. Use first tag for generating the file name. mkdir -p $BUILD_ROOT$TOPDIR/DOCKER FILENAME="$FIRSTTAG" FILENAME="${FILENAME//[\/:]/-}" + FILENAME="$FILENAME.${BUILD_ARCH%%:*}" + test -n "$RELEASE" && FILENAME="$FILENAME-$RELEASE" + echo "Saving image $FIRSTTAG to $FILENAME.tar" if ! chroot $BUILD_ROOT $DOCKER_TOOL save --output "$TOPDIR/DOCKER/$FILENAME.tar" "$FIRSTTAG" ; then - cleanup_and_exit 1 "Docker save command failed" + cleanup_and_exit 1 "$DOCKER_TOOL save command failed" fi # Create containerinfo - disturlarg=() - test -n "$DISTURL" && disturlarg=("--disturl" "$DISTURL") - perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::showcontainerinfo -- "${disturlarg[@]}" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" "$FILENAME.tar" "$ALLTAGS" containers/annotation> "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.containerinfo" + args=() + test -n "$DISTURL" && args=("${args[@]}" --disturl "$DISTURL") + 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" # We're done. Clean up. recipe_cleanup_docker diff -Nru obs-build-20180831/build-recipe-fissile obs-build-20190710/build-recipe-fissile --- obs-build-20180831/build-recipe-fissile 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-fissile 2019-09-01 00:25:19.000000000 +0000 @@ -117,9 +117,10 @@ cleanup_and_exit 1 "Docker save command failed" fi # Create containerinfo - disturlarg=() - test -n "$DISTURL" && disturlarg=("--disturl" "$DISTURL") - perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::showcontainerinfo -- "${disturlarg[@]}" '' "$filename.tar" "$image" containers/annotation> "$BUILD_ROOT$TOPDIR/FISSILE/$filename.containerinfo" + args=() + test -n "$DISTURL" && args=("${args[@]}" --disturl "$DISTURL") + test -n "$RELEASE" && args=("${args[@]}" --release "$RELEASE") + perl -I$BUILD_DIR -MBuild::Docker -e Build::Docker::showcontainerinfo -- "${args[@]}" '' "$filename.tar" "$image" containers/annotation > "$BUILD_ROOT$TOPDIR/FISSILE/$filename.containerinfo" done recipe_cleanup_fissile diff -Nru obs-build-20180831/build-recipe-kiwi obs-build-20190710/build-recipe-kiwi --- obs-build-20180831/build-recipe-kiwi 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-kiwi 2019-09-01 00:25:19.000000000 +0000 @@ -347,6 +347,7 @@ } perform_product_bundle() { + local milestone=$(kiwi_query_recipe milestone) pushd $BUILD_ROOT/$TOPDIR/KIWIROOT/main for i in * ; do test -e "$i" || continue @@ -357,7 +358,10 @@ fi mv "$i" $BUILD_ROOT/$TOPDIR/KIWI/. ;; *.packages) mv $i $BUILD_ROOT/$TOPDIR/OTHER/. ;; - *.report) mv $i $BUILD_ROOT/$TOPDIR/OTHER/. ;; + *.report) + mv $i $BUILD_ROOT/$TOPDIR/OTHER/. + test -n "$milestone" && echo "$milestone" > $BUILD_ROOT/$TOPDIR/OTHER/${i%.report}.milestone + ;; scripts) ;; *0) ;; *) test -d $i -a "$drop_repo" != true && mv $i $BUILD_ROOT/$TOPDIR/KIWI/. ;; @@ -373,9 +377,13 @@ # XXX: again? chroot "$BUILD_ROOT" chown -R abuild.abuild "$TOPDIR" chroot "$BUILD_ROOT" rm -rf "$TOPDIR/KIWIROOT" + local checksums + if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/.createrepo_checksums" ; then + checksums="CREATEREPO_CHECKSUMS=$TOPDIR/SOURCES/repos/.createrepo_checksums" + fi if test -x "$BUILD_ROOT/usr/bin/product-builder"; then # current implementation of product generation - chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/bin/product-builder --root $TOPDIR/KIWIROOT $VERBOSE_OPTION --logfile terminal --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true + chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX BUILD_FLAVOR=$BUILD_FLAVOR $checksums /usr/bin/product-builder --root $TOPDIR/KIWIROOT $VERBOSE_OPTION --logfile terminal --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true else # before openSUSE Leap 43 and SLE 13 ver=`chroot "$BUILD_ROOT" su -c "/usr/sbin/kiwi --version | sed -n 's,.*kiwi version v\(.*\),\1,p'"` @@ -493,6 +501,7 @@ KIWI_MAIN_PARAMETERS= KIWI_BUILD_PARAMETERS= KIWI_BUNDLE_PARAMETERS= + KIWI_DERIVED_CONTAINER= for i in $KIWI_PARAMETERS ; do if test -n "$lasti" ; then i="$lasti=$i" @@ -528,6 +537,13 @@ if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/containers/${i#*containers/}" ; then gzip -f -1 < "$BUILD_ROOT/$TOPDIR/SOURCES/containers/${i#*containers/}" > "$BUILD_ROOT/$TOPDIR/SOURCES/containers/${i#*containers/}.gz" || cleanup_and_exit 1 "container compression" i="$i.gz" + KIWI_DERIVED_CONTAINER="$BUILD_ROOT/$TOPDIR/SOURCES/containers/${i#*containers/}" + fi + KIWI_BUILD_PARAMETERS="$KIWI_BUILD_PARAMETERS $i" + ;; + --set-container-derived-from=dir://./containers/*.tar*) + if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/containers/${i#*containers/}" ; then + KIWI_DERIVED_CONTAINER="$BUILD_ROOT/$TOPDIR/SOURCES/containers/${i#*containers/}" fi KIWI_BUILD_PARAMETERS="$KIWI_BUILD_PARAMETERS $i" ;; @@ -621,12 +637,89 @@ done # create container info - local disturlarg=() - test -n "$DISTURL" && disturlarg=("--disturl" "$DISTURL") + local args=(--arch "${BUILD_ARCH%%:*}" --buildflavor "$BUILD_FLAVOR") + test -n "$DISTURL" && args=("${args[@]}" --disturl "$DISTURL") + test -n "$RELEASE" && args=("${args[@]}" --release "$RELEASE") for r in $BUILD_ROOT/$TOPDIR/KIWI/*.tar ; do - test -e "$r" && perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::showcontainerinfo -- "${disturlarg[@]}" --arch "${BUILD_ARCH%%:*}" --buildflavor "$BUILD_FLAVOR" $BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE "$r" > "${r%.tar}.containerinfo" + test -e "$r" && perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::showcontainerinfo -- "${args[@]}" $BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE "$r" > "${r%.tar}.containerinfo" test -s "${r%.tar}.containerinfo" || rm -f "${r%.tar}.containerinfo" done + if test -n "$KIWI_DERIVED_CONTAINER" ; then + for r in $BUILD_ROOT/$TOPDIR/KIWI/*.packages ; do + test -e "$r" || continue + r="${r%.packages}" + for rr in $r*.containerinfo ; do + test -e "$rr" || continue + echo "creating base package information" + rm -f "$BUILD_ROOT/tmp/create_derived_package_list" + cp "$BUILD_DIR/create_container_package_list" "$BUILD_ROOT/tmp/create_container_package_list" + chroot "$BUILD_ROOT" /bin/bash /tmp/create_container_package_list "${KIWI_DERIVED_CONTAINER#$BUILD_ROOT}" > "$r.basepackages" + rm -f "$BUILD_ROOT/tmp/create_derived_package_list" + break + done + done + fi +} + +createrepo_debian_kiwi() { + local dir=$1 + local prp=$2 + local arch=$(chroot $BUILD_ROOT su -c "dpkg-architecture -qDEB_BUILD_ARCH") + cat >"${BUILD_ROOT}/.createrepo_debian.tmp.sh" <<-EOF + cd "$dir" || exit 1 + dpkg-scanpackages -m . > Packages + gzip -c9 < Packages > Packages.gz + dpkg-scansources . > Sources + gzip -c9 < Sources > Sources.gz + EOF + chroot $BUILD_ROOT su -c "sh /.createrepo_debian.tmp.sh" - root + cat > "${BUILD_ROOT}/$dir/Release" <<-EOF + Origin: obs:/$prp + Label: ${prp%/*} + Codename: ${prp#*/} + Architectures: $arch + Description: obs repository for $prp + EOF + echo "SHA256:" >> "${BUILD_ROOT}/$dir/Release" + for file in "${BUILD_ROOT}/$dir/Packages"* "${BUILD_ROOT}/$dir/Sources"*; do + local SUM=( $(sha256sum ${file}) ) + local SIZE=$(stat -c '%s' ${file}) + echo " ${SUM} ${SIZE} ${file#${BUILD_ROOT}/$dir/}" >> "${BUILD_ROOT}/$dir/Release" + done +} + +createrepo_debian_dist_kiwi() { + local dir=$1 + local prp=$2 + local dist=$3 + local arch=$(chroot $BUILD_ROOT su -c "dpkg-architecture -qDEB_BUILD_ARCH") + mkdir -p "${BUILD_ROOT}/$dir/dists/${dist}/main/binary-$arch" + mkdir -p "${BUILD_ROOT}/$dir/dists/${dist}/main/source" + cat >"${BUILD_ROOT}/.createrepo_debian.tmp.sh" <<-EOF + cd "$dir" || exit 1 + dpkg-scanpackages -m . > dists/${dist}/main/binary-$arch/Packages + gzip -c9 < dists/${dist}/main/binary-$arch/Packages > dists/${dist}/main/binary-$arch/Packages.gz + dpkg-scansources . > dists/${dist}/main/source/Sources + gzip -c9 < dists/${dist}/main/source/Sources > dists/${dist}/main/source/Sources.gz + EOF + chroot $BUILD_ROOT su -c "sh /.createrepo_debian.tmp.sh" - root + ln -s ${dist} ${BUILD_ROOT}/$dir/dists/stable + + cat > "${BUILD_ROOT}/$dir/dists/${dist}/Release" <<-EOF + Origin: obs:/$prp + Label: ${prp%/*} + Suite: stable + Codename: $dist + Architectures: $arch + Description: obs repository for $prp + Components: main + EOF + echo "SHA256:" >> "${BUILD_ROOT}/$dir/dists/${dist}/Release" + for file in "${BUILD_ROOT}/$dir/dists/${dist}/main"/*/Packages* "${BUILD_ROOT}/$dir/$dists/main/source"/Sources*; do + local SUM=( $(sha256sum ${file}) ) + local SIZE=$(stat -c '%s' ${file}) + echo " ${SUM} ${SIZE} ${file#${BUILD_ROOT}/$dir/dists/${dist}/}" >> "${BUILD_ROOT}/$dir/dists/${dist}/Release" + done } recipe_build_kiwi() { @@ -643,6 +736,11 @@ ln -sf $TOPDIR/SOURCES/repos $BUILD_ROOT/repos test -d $BUILD_ROOT/$TOPDIR/SOURCES/containers && ln -sf $TOPDIR/SOURCES/containers $BUILD_ROOT/containers cd $BUILD_ROOT/$TOPDIR/SOURCES/repos + DEBDIST= + if test -x "$BUILD_ROOT/usr/sbin/debootstrap" ; then + DEBDIST=$(sed -ne 's/.*/dev/null 2>&1 ; then - chroot $BUILD_ROOT createrepo --no-database --simple-md-filenames "$repo" + if ! test -x "$BUILD_ROOT/usr/sbin/debootstrap" ; then + + echo "creating repodata for $r" + if chroot $BUILD_ROOT createrepo --no-database --simple-md-filenames --help >/dev/null 2>&1 ; then + chroot $BUILD_ROOT createrepo --no-database --simple-md-filenames "$repo" + else + chroot $BUILD_ROOT createrepo "$repo" + fi else - chroot $BUILD_ROOT createrepo "$repo" + echo "creating debian repodata for $r" + createrepo_debian_kiwi "$repo" "$r" + test -n "$DEBDIST" && createrepo_debian_dist_kiwi "$repo" "$r" "$DEBDIST" fi fi done diff -Nru obs-build-20180831/build-recipe-livebuild obs-build-20190710/build-recipe-livebuild --- obs-build-20180831/build-recipe-livebuild 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-livebuild 2019-09-01 00:25:19.000000000 +0000 @@ -248,7 +248,7 @@ # move created products (and their metadata files) to destination and # create sha256 hashsums local buildnum="${RELEASE:+-Build${RELEASE}}" - for prefix in $(echo -e ${build_results} | sort | uniq) ; do + for prefix in $(echo -e "${build_results}" | sort | uniq) ; do for f in ${prefix}.* ; do mv ${f} \ $BUILD_ROOT/$TOPDIR/OTHER/${prefix##*/}${buildnum}${f#${prefix}} diff -Nru obs-build-20180831/build-recipe-simpleimage obs-build-20190710/build-recipe-simpleimage --- obs-build-20180831/build-recipe-simpleimage 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-simpleimage 2019-09-01 00:25:19.000000000 +0000 @@ -21,7 +21,7 @@ recipe_setup_simpleimage() { TOPDIR=/usr/src/packages rm -rf "$BUILD_ROOT$TOPDIR" - for i in OTHER SOURCES LIVEBUILD_ROOT ; do + for i in SOURCES OTHER ; do mkdir -p "$BUILD_ROOT$TOPDIR/$i" done chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" @@ -99,7 +99,7 @@ rm -f $BUILD_ROOT/.build.packages ln -s ${TOPDIR#/} $BUILD_ROOT/.build.packages test -d "$SRCDIR" && cd "$SRCDIR" - cleanup_and_exit + BUILD_SUCCEEDED=true } recipe_resultdirs_simpleimage() { diff -Nru obs-build-20180831/build-recipe-spec obs-build-20190710/build-recipe-spec --- obs-build-20180831/build-recipe-spec 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-recipe-spec 2019-09-01 00:25:19.000000000 +0000 @@ -82,6 +82,7 @@ if test -n "$BUILD_JOBS" ; then cat >> $BUILD_ROOT/root/$rawcfgmacros <<-EOF + ### from obs-build %jobs $BUILD_JOBS %_smp_mflags -j$BUILD_JOBS EOF @@ -120,6 +121,11 @@ test -x $BUILD_ROOT/usr/bin/rpmbuild || rpmbuild=rpm test "$BUILDTYPE" = debbuild && rpmbuild=debbuild + HAVE_DYNAMIC_BUILDREQUIRES= + if egrep '^%generate_buildrequires' "$BUILD_ROOT$TOPDIR/SOURCES/$RECIPEFILE" >/dev/null ; then + HAVE_DYNAMIC_BUILDREQUIRES=true + fi + # XXX: move _srcdefattr to macro file? rpmbopts=("$BUILD_RPM_BUILD_STAGE" "--define" "_srcdefattr (-,root,root)") if test "$DO_CHECKS" != true ; then @@ -129,6 +135,9 @@ echo "warning: --nocheck is not supported by this $rpmbuild version" fi fi + if test "$rpmbuild" == "debbuild" ; then + rpmbopts[${#rpmbopts[@]}]="-vv" + fi if test "$rpmbuild" == "rpmbuild" ; then # use only --nosignature for rpm v4 rpmbopts[${#rpmbopts[@]}]="--nosignature" @@ -155,6 +164,42 @@ rpmbopts[${#rpmbopts[@]}]="$buildrootoverride" fi + GEN_BUILDREQS_PACKS=() + if test -n "$HAVE_DYNAMIC_BUILDREQUIRES" -a -z "$RUN_SHELL" ; then + # query dynamic build requires + rm -f "$BUILD_ROOT$TOPDIR/SRPMS/"*.buildreqs.nosrc.rpm + rpmdynbropts=("${rpmbopts[@]}") + rpmdynbropts[0]=-br + toshellscript $rpmbuild \ + --nodeps \ + "${definesnstuff[@]}" \ + "${rpmdynbropts[@]}" \ + "$TOPDIR/SOURCES/$RECIPEFILE" \ + > $BUILD_ROOT/.build.command + chmod 755 $BUILD_ROOT/.build.command + chroot $BUILD_ROOT su -c /.build.command - $BUILD_USER < /dev/null + st=$? + if test "$st" != 0 -a "$st" != 11 ; then + return + fi + : > $BUILD_ROOT$TOPDIR/OTHER/_generated_buildreqs + if test "$st" = 11 ; then + reqsfile= + for i in "$BUILD_ROOT$TOPDIR/SRPMS/"*.buildreqs.nosrc.rpm ; do + test -f "$i" && reqsfile=${i##*/} + done + test -n "$reqsfile" || cleanup_and_exit 1 "no buildreqs.nosrc.rpm file?" + chroot $BUILD_ROOT rpm -qp --requires "$TOPDIR/SRPMS/$reqsfile" | grep -v '^rpmlib(' | sort -u > $BUILD_ROOT$TOPDIR/OTHER/_generated_buildreqs_tmp + chroot $BUILD_ROOT rpmspec -q --srpm --requires "$TOPDIR/SOURCES/$RECIPEFILE" >> $BUILD_ROOT$TOPDIR/OTHER/_generated_buildreqs_tmp || cleanup_and_exit 1 "rpm -q --spec failed" + sort < $BUILD_ROOT$TOPDIR/OTHER/_generated_buildreqs_tmp | uniq -u > $BUILD_ROOT$TOPDIR/OTHER/_generated_buildreqs + rm -f $BUILD_ROOT$TOPDIR/OTHER/_generated_buildreqs_tmp + while read db ; do + GEN_BUILDREQS_PACKS[${#GEN_BUILDREQS_PACKS[@]}]="$db" + done < $BUILD_ROOT$TOPDIR/OTHER/_generated_buildreqs + fi + rm -f "$BUILD_ROOT$TOPDIR/SRPMS/"*.buildreqs.nosrc.rpm + fi + # su involves a shell which would require even more # complicated quoting to bypass than this toshellscript $rpmbuild \ @@ -167,7 +212,10 @@ if test -n "$RUN_SHELL"; then chroot $BUILD_ROOT su - else - chroot $BUILD_ROOT su -c /.build.command - $BUILD_USER < /dev/null && BUILD_SUCCEEDED=true + chroot $BUILD_ROOT su -c /.build.command - $BUILD_USER < /dev/null + st=$? + test "$st" = 0 && BUILD_SUCCEEDED=true + test "$st" = 11 -a -n "$HAVE_DYNAMIC_BUILDREQUIRES" && BUILD_SUCCEEDED=genbuildreqs fi } diff -Nru obs-build-20180831/buildvc.1 obs-build-20190710/buildvc.1 --- obs-build-20180831/buildvc.1 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/buildvc.1 2019-09-01 00:25:19.000000000 +0000 @@ -0,0 +1,25 @@ +.TH BUILDVC 1 "(c) 1997-2018 SUSE Linux AG Nuernberg, Germany" +.SH NAME +buildvc \- create a SUSE type changes entry +.SH SYNOPSIS +.B buildvc +.RB [ -m +.IR message ] +.RB [ -e ] +.RI [ changesfile_or_dir +.RI [ commentfile ]] + +.SH DESCRIPTION +The \fBbuildvc\fP tool adds a new changes entry to a SUSE \fB.changes\fP file. +The \fB-m\fP option can be used to directly specify the entry, if it is +not given an editor is started to interactively enter the new changes +entry. If a \fIcommentfile\fP is given, its content is used as template +for the new entry instead of an empty entry, whereas the \fB-e\fP option +suppresses the creation of an empty entry. + +If no \fIchangesfile\fP is specified, \fBbuildvc\fP will search the current +directory for a file ending with \fB.changes\fP. If a directory is +specified instead of a changes will, it will be searched instead. + +.SH SEE ALSO +.BR build (1), diff -Nru obs-build-20180831/build-vm obs-build-20190710/build-vm --- obs-build-20180831/build-vm 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-vm 2019-09-01 00:25:19.000000000 +0000 @@ -443,6 +443,7 @@ ELAPSED=$((NOW-WATCHDOG_START)) if test $ELAPSED -gt $WATCHDOG_TIMEOUT ; then # kill the VM + echo echo "### WATCHDOG TRIGGERED, KILLING VM ###" vm_kill exit 0 @@ -877,6 +878,9 @@ umount -n $BUILD_ROOT/mnt 2> /dev/null || true vm_init_script="/.build/build" + if test -n "$RUN_SHELL"; then + vm_init_script="/bin/bash" + fi if check_use_emulator ; then vm_init_script="/.build/$INITVM_NAME" fi @@ -931,7 +935,7 @@ vm_attach_swap BUILDSTATUS=$(dd if="$VM_SWAP" bs=12 count=1 2>/dev/null | tr '\0' a) case $BUILDSTATUS in - BUILDSTATUS[02]) + BUILDSTATUS[029]) mkdir -p $BUILD_ROOT/.build.packages cd $BUILD_ROOT/.build.packages || cleanup_and_exit 1 echo "build: extracting built packages..." @@ -962,6 +966,10 @@ otherdir="$BUILD_ROOT$TOPDIR/OTHER" test -n "$TIME_PREINSTALL" && echo "TIME_preinstall: $TIME_PREINSTALL" >> $otherdir/_statistics test -n "$TIME_INSTALL" && echo "TIME_install: $TIME_INSTALL" >> $otherdir/_statistics + test -n "$TIME_POSTCHECKS" && echo "TIME_postchecks: $TIME_POSTCHECKS" >> $otherdir/_statistics + test -n "$TIME_RPMLINT" && echo "TIME_rpmlint: $TIME_RPMLINT" >> $otherdir/_statistics + test -n "$TIME_BUILDCMP" && echo "TIME_buildcmp: $TIME_BUILDCMP" >> $otherdir/_statistics + test -n "$TIME_DELTARPMS" && echo "TIME_deltarpms: $TIME_DELTARPMS" >> $otherdir/_statistics if test -e /.build/_statistics.df ; then echo -n "MAX_mb_used_on_disk: " >> $otherdir/_statistics cat /.build/_statistics.df >> $otherdir/_statistics diff -Nru obs-build-20180831/build-vm-kvm obs-build-20190710/build-vm-kvm --- obs-build-20180831/build-vm-kvm 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-vm-kvm 2019-09-01 00:25:19.000000000 +0000 @@ -30,6 +30,7 @@ kvm_serial_device= kvm_rng_device=virtio-rng-pci kvm_options= +kvm_cpu="-cpu host" kvm_check_ppc970() { if ! grep -q -E '(kvm_rma_count.*kvm_hpt_count)|(kvm_hpt_count.*kvm_rma_count)' /proc/cmdline ; then @@ -73,7 +74,7 @@ armv7l) kvm_bin="/usr/bin/qemu-system-arm" kvm_console=ttyAMA0 - kvm_options="-enable-kvm -M virt -cpu host" + kvm_options="-enable-kvm -M virt" vm_kernel=/boot/zImage vm_initrd=/boot/initrd # prefer the guest kernel/initrd @@ -88,12 +89,13 @@ vm_kernel=/boot/Image vm_initrd=/boot/initrd if test "${BUILD_ARCH#aarch}" != "$BUILD_ARCH" -o "${BUILD_ARCH#armv8}" != "$BUILD_ARCH"; then - kvm_options="-enable-kvm -cpu host" + kvm_options="-enable-kvm" test -e /boot/Image.guest && vm_kernel=/boot/Image.guest test -e /boot/initrd.guest && vm_initrd=/boot/initrd.guest else # Running an armv7 kernel on aarch64 - kvm_options="-enable-kvm -cpu host,aarch64=off" + kvm_options="-enable-kvm" + kvm_cpu="-cpu host,aarch64=off" # prefer the guest kernel/initrd test -e /boot/Image.guest32 && vm_kernel=/boot/Image.guest32 test -e /boot/initrd.guest32 && vm_initrd=/boot/initrd.guest32 @@ -129,6 +131,7 @@ fi grep -q "pSeries" /proc/cpuinfo && kvm_device=scsi-hd # no virtio on pSeries grep -q "PowerNV" /proc/cpuinfo || kvm_device=scsi-hd # no virtio on ppc != power7 yet + grep -q "POWER9" /proc/cpuinfo && kvm_cpu="-cpu host,compat=power8" ;; s390|s390x) kvm_bin="/usr/bin/qemu-system-s390x" @@ -221,7 +224,7 @@ vm_startup_kvm() { qemu_bin="$kvm_bin" - qemu_args=(-drive file="$VM_ROOT",format=raw,if=none,id=disk,serial=0,cache=unsafe -device "$kvm_device",drive=disk) + qemu_args=(-drive file="$VM_ROOT",format=raw,if=none,id=disk,cache=unsafe -device "$kvm_device",drive=disk,serial=0) if [ -n "$VM_USER" ] ; then getent passwd "$VM_USER" > /dev/null || cleanup_and_exit 3 "cannot find KVM user '$VM_USER'" else @@ -230,7 +233,7 @@ fi [ -n "$VM_USER" ] && kvm_options="$kvm_options -runas $VM_USER" if test -n "$VM_SWAP" ; then - qemu_args=("${qemu_args[@]}" -drive file="$VM_SWAP",format=raw,if=none,id=swap,serial=1,cache=unsafe -device "$kvm_device",drive=swap) + qemu_args=("${qemu_args[@]}" -drive file="$VM_SWAP",format=raw,if=none,id=swap,cache=unsafe -device "$kvm_device",drive=swap,serial=1) fi # the serial console device needs to be compiled into the target kernel # which is why we can not use virtio-serial on other platforms @@ -257,7 +260,6 @@ qemu_args=("${qemu_args[@]}" "-smp" "$BUILD_JOBS,threads=$BUILD_THREADS") fi if test "$VM_TYPE" = kvm ; then - test "$kvm_console" != ttyAMA0 && kvm_options="$kvm_options -cpu host" test -n "$HUGETLBFSPATH" && kvm_options="$kvm_options -mem-prealloc -mem-path $HUGETLBFSPATH" fi qemu_append="root=$VM_ROOTDEV" @@ -280,7 +282,7 @@ if test -n "$VM_CUSTOMOPT"; then kvm_options="$kvm_options $VM_CUSTOMOPT" fi - set -- $qemu_bin -nodefaults -no-reboot -nographic -vga none $kvm_options \ + set -- $qemu_bin -nodefaults -no-reboot -nographic -vga none $kvm_cpu $kvm_options \ -kernel $vm_kernel \ -initrd $vm_initrd \ -append "$qemu_append" \ diff -Nru obs-build-20180831/build-vm-lxc obs-build-20190710/build-vm-lxc --- obs-build-20180831/build-vm-lxc 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-vm-lxc 2019-09-01 00:25:19.000000000 +0000 @@ -55,11 +55,21 @@ LXCDIR="`lxc-config lxc.lxcpath`/$LXCID" LXCROOTFS="$LXCDIR/rootfs" LXCHOOK="$LXCDIR/pre-mount.hook" + LXCVERSION="$(lxc-create --version)" cat $BUILD_DIR/lxc.conf > "$LXCCONF" cat >> "$LXCCONF" <<-EOF lxc.rootfs = $LXCROOTFS lxc.hook.pre-mount = $LXCHOOK EOF + case "$LXCVERSION" in + 3.*) + sed -i \ + -e 's/lxc\.aa_profile = /lxc.apparmor.profile = /' \ + -e 's/lxc\.console = /lxc.console.path = /' \ + -e 's/lxc\.rootfs = /lxc.rootfs.path = dir:/' \ + "$LXCCONF" + ;; + esac # XXX: do this always instead of leaking the hosts' one? echo "rootfs / rootfs rw 0 0" > $BUILD_ROOT/etc/mtab lxc-destroy -n "$LXCID" >/dev/null 2>&1 || true @@ -69,8 +79,8 @@ mount --bind "$BUILD_ROOT" "$LXCROOTFS" EOF chmod a+x "$LXCHOOK" - case "$(lxc-create --version)" in - 1.0.8|1.1.*|2.*) + case "$LXCVERSION" in + 1.0.8|1.1.*|[23].*) lxc-create -n "$LXCID" -f "$LXCCONF" -t none || cleanup_and_exit 1 lxc-start -n "$LXCID" -F "$vm_init_script" ;; @@ -78,7 +88,17 @@ lxc-create -n "$LXCID" -f "$LXCCONF" || cleanup_and_exit 1 lxc-start -n "$LXCID" "$vm_init_script" ;; + *) + echo "Unsupported lxc version $LXCVERSION!" >&2 + cleanup_and_exit 1 + ;; esac + if ! [ -r "$BUILD_ROOT/.build/_exitcode" ]; then + echo "'$BUILD_ROOT/.build/_exitcode' not found" + return 3 + fi + exitcode=$(cat $BUILD_ROOT/.build/_exitcode) + return "$exitcode" } vm_startup_lxc_libvirt() { diff -Nru obs-build-20180831/build-vm-openstack obs-build-20190710/build-vm-openstack --- obs-build-20180831/build-vm-openstack 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-vm-openstack 2019-09-01 00:25:19.000000000 +0000 @@ -1,4 +1,3 @@ -#!/bin/bash # # Openstack specific functions # @@ -271,7 +270,7 @@ sleep 1 done - if ! $BUILD_DIR/openstack-console "${WS_URL}" ; then + if ! python $BUILD_DIR/openstack-console "${WS_URL}" ; then $NOVACLIENT delete $OPENSTACK_BUILD_ID cleanup_and_exit 3 else diff -Nru obs-build-20180831/build-vm-qemu obs-build-20190710/build-vm-qemu --- obs-build-20180831/build-vm-qemu 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/build-vm-qemu 2019-09-01 00:25:19.000000000 +0000 @@ -36,7 +36,7 @@ } vm_fixup_qemu() { - vm_setup_kvm + vm_fixup_kvm } vm_attach_root_qemu() { diff -Nru obs-build-20180831/call-podman obs-build-20190710/call-podman --- obs-build-20180831/call-podman 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/call-podman 2019-09-01 00:25:19.000000000 +0000 @@ -0,0 +1,83 @@ +#!/bin/bash + +export BUILD_DIR=${BUILD_DIR:-/usr/lib/build} + +BUILD_ROOT= +IS_UNSHARED= + +cleanup_and_exit() { + test -z "$1" && set 0 + if test -n "$2" ; then + if test "$1" -ne 0 ; then + echo "$2" >&2 + else + echo "$2" + fi + fi + exit $1 +} + +while test -n "$1" ; do + case "$1" in + --root) + BUILD_ROOT="$2" + shift 2 + ;; + --isunshared) + IS_UNSHARED=true + shift + ;; + *) + break + ;; + esac +done + +if test -z "$IS_UNSHARED" ; then + echo "Unsharing environment" + # unshare mounts and network + exec unshare -m -n $BUILD_DIR/call-podman --isunshared --root "$BUILD_ROOT" "$@" + cleanup_and_exit 1 "exec unshare returned" +fi + +if test -n "$IS_UNSHARED" ; then + # make mounts private + mount --make-rprivate / + + # create loopback interface + if test -x /sbin/ip ; then + ip addr add 127.0.0.1/8 dev lo + ip addr add ::1/128 dev lo + ip link set lo up + else + ifconfig lo 127.0.0.1 up + ifconfig lo add ::1/128 + fi +fi + +# setup cgroups +if test "$BUILD_ROOT" != '/' ; then + test -d /sys/fs/cgroup || cleanup_and_exit 1 "/sys/fs/cgroup does not exist" + + # make build root a mount point + mount --rbind --make-private "$BUILD_ROOT" "$BUILD_ROOT" + mount --make-rprivate "$BUILD_ROOT" + + # mount /sys + if ! test -e $BUILD_ROOT/sys/block; then + mkdir -p $BUILD_ROOT/sys + mount -n -tsysfs sys $BUILD_ROOT/sys + fi + # bind mount cgroups + mount --rbind /sys/fs/cgroup "$BUILD_ROOT/sys/fs/cgroup" + mount --make-rslave "$BUILD_ROOT/sys/fs/cgroup" + export DOCKER_RAMDISK=true +fi + +# setup mounts +test -e "$BUILD_ROOT/proc/self" || mount -n -tproc none $BUILD_ROOT/proc + +# run the command +exec chroot "$BUILD_ROOT" podman "$@" + + diff -Nru obs-build-20180831/configs/arch.conf obs-build-20190710/configs/arch.conf --- obs-build-20180831/configs/arch.conf 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/configs/arch.conf 2019-09-01 00:25:19.000000000 +0000 @@ -1,10 +1,10 @@ Repotype: arch Preinstall: glibc bash perl sed grep coreutils pacman pacman-mirrorlist -Preinstall: gawk gzip filesystem curl libidn acl gpgme libarchive -Preinstall: openssl libssh2 zlib libassuan libgpg-error attr +Preinstall: gawk gzip filesystem icu libpsl curl libidn2 libunistring acl gpgme libarchive +Preinstall: openssl libssh2 zlib libassuan libgpg-error attr gcc-libs Preinstall: expat xz bzip2 readline lzo krb5 e2fsprogs keyutils -Preinstall: ncurses lz4 libpsl icu gcc-libs libnghttp2 libidn2 libunistring +Preinstall: ncurses lz4 libnghttp2 zstd VMinstall: util-linux libutil-linux binutils pcre libcap @@ -19,7 +19,8 @@ Prefer: zlib ttf-dejavu Prefer: libgl jdk7-openjdk libdrm -Prefer: -nvidia-libgl -nvidia-304xx-utils +Prefer: -nvidia-libgl -nvidia-304xx-utils -nvidia-304xx-utils -nvidia-utils Prefer: mesa-libgl Prefer: curl:ca-certificates +Prefer: glib-networking:ca-certificates diff -Nru obs-build-20180831/configs/sl15.1.conf obs-build-20190710/configs/sl15.1.conf --- obs-build-20180831/configs/sl15.1.conf 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/configs/sl15.1.conf 2019-09-01 00:25:19.000000000 +0000 @@ -0,0 +1,945 @@ + +Release: lp151.. +%define gcc_version 7 + +# Help with the switch to the gcc7 provided libs +Prefer: -libstdc++6-gcc7 -libtsan0-gcc7 -libgomp1-gcc7 -libgcc_s1-gcc7 -libatomic1-gcc7 -libcilkrts5-gcc7 -libitm1-gcc7 +Prefer: -liblsan0-gcc7 -libmpx2-gcc7 -libubsan0-gcc7 + +Prefer: kiwi-filesystem-requires +Prefer: kiwi-image-docker-requires +Prefer: kiwi-image-iso-requires +Prefer: kiwi-image-vmx-requires + +# Migration to product builder +Substitute: kiwi-packagemanager:instsource product-builder-plugin-Tumbleweed +Substitute: system-packages:kiwi-product product-builder + +Prefer: installation-images-openSUSE installation-images-debuginfodeps-openSUSE + +# switch to kiwi v8 +Prefer: python3-kiwi + +# LUA namespace migration - slowly moving to the new names (keep ports in mind!) +# lua, lua51, lua52 and lua53 all provide 'lua'; version 5.3 is the 'target'; lua will be deleted in the future +Prefer: lua53 lua51 lua52 lua +Prefer: liblua5_3-5 liblua5_1-5 liblua5_2-5 +Prefer: lua53-devel lua51-devel lua52-devel +Prefer: libtolua++-5_3-devel libtolua++-5_1-devel libtolua++-5_2-devel +Prefer: -liblua5_3 -liblua5_1 -liblua5_2 + +Preinstall: liblua5_3-5 + +FileProvides: /bin/csh tcsh +FileProvides: /bin/logger util-linux-systemd +FileProvides: /sbin/netconfig sysconfig-netconfig +FileProvides: /sbin/setcap libcap-progs +FileProvides: /usr/bin/csh tcsh +FileProvides: /usr/bin/docbook2man docbook-utils +FileProvides: /usr/bin/eu-nm elfutils +FileProvides: /usr/bin/fipscheck fipscheck +FileProvides: /usr/bin/killall psmisc +FileProvides: /usr/bin/mimencode metamail +FileProvides: /usr/bin/mkisofs mkisofs +FileProvides: /usr/bin/pkg-config pkg-config +FileProvides: /usr/bin/python python-base +FileProvides: /usr/bin/python2 python2-base +FileProvides: /usr/bin/python3 python3-base +FileProvides: /usr/bin/setfacl acl +FileProvides: /usr/bin/sg_inq sg3_utils +FileProvides: /usr/bin/tput ncurses-utils +FileProvides: /usr/bin/xmllint libxml2-tools +FileProvides: /usr/bin/Xvfb xorg-x11-server +FileProvides: /usr/sbin/groupadd shadow +FileProvides: /usr/sbin/lockdev lockdev +FileProvides: /usr/sbin/useradd shadow +FileProvides: /usr/sbin/usermod shadow + +Preinstall: aaa_base attr bash coreutils diffutils +Preinstall: filesystem fillup glibc grep +Preinstall: libbz2-1 libgcc_s1 libncurses6 pam +Preinstall: permissions libreadline7 rpm sed tar libz1 libselinux1 +Preinstall: liblzma5 libcap2 libacl1 libattr1 +Preinstall: libpopt0 libelf1 +Preinstall: libpcre1 + +Runscripts: aaa_base + +Prefer: libdb-4_8-devel +VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 libsmartcols1 +VMinstall: kernel-obs-build +VMInstall: net-tools-deprecated + +# we only have a 64bit kernel +ExportFilter: ^kernel-obs-build.*\.x86_64\.rpm$ . i586 + +ExportFilter: \.x86_64\.rpm$ x86_64 +ExportFilter: \.ia64\.rpm$ ia64 +ExportFilter: \.s390x\.rpm$ s390x +ExportFilter: \.ppc64\.rpm$ ppc64 +ExportFilter: \.ppc64le\.rpm$ ppc64le +ExportFilter: \.ppc\.rpm$ ppc +ExportFilter: -ia32-.*\.rpm$ +ExportFilter: -32bit-.*\.sparc64\.rpm$ +ExportFilter: -64bit-.*\.sparcv9\.rpm$ +ExportFilter: -64bit-.*\.aarch64_ilp32\.rpm$ +ExportFilter: \.armv7l\.rpm$ armv7l +ExportFilter: \.armv7hl\.rpm$ armv7l +ExportFilter: ^glibc(?:-devel)?-32bit-.*\.sparc64\.rpm$ sparc64 +ExportFilter: ^glibc(?:-devel)?-64bit-.*\.sparcv9\.rpm$ sparcv9 +ExportFilter: ^acroread.*\.i586.rpm$ . x86_64 +ExportFilter: ^avmailgate.*\.i586.rpm$ . x86_64 +ExportFilter: ^avmailgate.*\.ppc.rpm$ . ppc64 +ExportFilter: ^avmailgate.*\.s390.rpm$ . s390x +ExportFilter: ^flash-player.*\.i586.rpm$ . x86_64 +ExportFilter: ^novell-messenger-client.*\.i586.rpm$ . x86_64 +ExportFilter: ^openCryptoki-32bit.*\.s390.rpm$ . s390x + +Required: rpm-build +# Build all packages with -pie enabled +Required: gcc-PIE + +# the basic stuff +Support: perl build-mkbaselibs +Prefer: build-mkbaselibs +Support: brp-check-suse +Support: post-build-checks rpmlint-Factory +# Add hostname so that OBS/build will have a chance to identify the hostname (instead of localhost) +Support: hostname + +Support: build-compare + +%ifarch ia64 +Support: libunwind libunwind-devel +Preinstall: libunwind +%endif + +### Branding related preferences +Prefer: awesome:awesome-branding-upstream +Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE +Prefer: cinnamon-gschemas:cinnamon-gschemas-branding-upstream +Prefer: enlightenment-theme-upstream +Prefer: exo-data:exo-branding-upstream +Prefer: fcitx:fcitx-branding-openSUSE +Prefer: gdm:gdm-branding-upstream +Prefer: gfxboot-branding-openSUSE -gfxboot-branding-basedonopensuse +Prefer: glib2:glib2-branding-upstream +Prefer: gnome-panel:gnome-panel-branding-upstream +Prefer: gnome-session:gconf2-branding-openSUSE +Prefer: gnome-session:gnome-session-branding-openSUSE +Prefer: icewm-theme-branding +Prefer: kde4-kdm:kde4-kdm-branding-upstream +Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream +Prefer: kdelibs4-branding:kdelibs4-branding-upstream +Prefer: kdelibs4:kdelibs4-branding-upstream +Prefer: kdm:kdm-branding-upstream +Prefer: libcinnamon-desktop-data:libcinnamon-desktop-data-branding-upstream +Prefer: libexo-1-0:libexo-1-0-branding-upstream +Prefer: libgarcon-1-0:libgarcon-branding-upstream +Prefer: libgarcon-data:libgarcon-branding-upstream +Prefer: libgio-2_0-0:gio-branding-upstream +Prefer: libglib-2_0-0:glib2-branding-upstream +Prefer: libpurple-branding-upstream +Prefer: libreoffice:libreoffice-branding-upstream +Prefer: libsocialweb:libsocialweb-branding-upstream +Prefer: libxfce4ui:libxfce4ui-branding-upstream +Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream +Prefer: mate-desktop-gschemas:mate-desktop-gschemas-branding-upstream +Prefer: NetworkManager:NetworkManager-branding-openSUSE +Prefer: PackageKit:PackageKit-branding-upstream +Prefer: plasma5-desktop:plasma5-desktop-branding-upstream +Prefer: plasma5-workspace:plasma5-workspace-branding-upstream +Prefer: sddm:sddm-branding-upstream +Prefer: systemd-presets-branding-openSUSE +Prefer: wallpaper-branding-openSUSE +Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream +Prefer: xfce4-settings:xfce4-settings-branding-upstream +Prefer: xfdesktop:xfdesktop-branding-upstream +Prefer: yast2-branding-openSUSE +Prefer: yast2-qt:yast2-qt-branding-openSUSE +Prefer: yast2-theme-openSUSE + +# Build cycle handling - prefer -mini packages were possible, break deps as needed +Conflict: krb5-devel:krb5-mini +Conflict: krb5:krb5-mini-devel +Prefer: gettext-tools-mini gettext-runtime-mini +Prefer: ghostscript-mini +Prefer: krb5-mini-devel:krb5-mini +Prefer: krb5-mini krb5-mini-devel +Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo +Prefer: libunbound-devel-mini +Prefer: log4j-mini +Prefer: systemd-mini-devel:systemd-mini +Prefer: systemd-mini systemd-mini-devel libsystemd0-mini +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 + +# 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 + +# man uses cron to update the DB normally, but we don't care for that in the build system +Ignore: man:cron + +# When kiwi comes into play, we do not want the -mini packages; -mini does not target end user systems +Conflict: kiwi:curl-mini +Conflict: kiwi:libudev-mini1 +Conflict: kiwi:systemd-mini +# And also for python3-kiwi +Conflict: python3-kiwi:curl-mini +Conflict: python3-kiwi:libudev-mini1 +Conflict: python3-kiwi:systemd-mini + +# udev: -full and -mini packages don't mingle well +Prefer: libudev1:udev +Conflict: libudev1:udev-mini +Conflict: udev:libudev-mini1 + +# systemd: -full and -mini packages don't mingle well +Conflict: systemd:libsystemd0-mini +Conflict: systemd-mini-devel:systemd + +# curl: there is a -mini package to bootstrap and a full; some programs decide on what they want to build in based on what curl can do, so let's prefer full curl +Prefer: cmake:libcurl4-mini +Prefer: curl libcurl-devel libcurl4 + +Prefer: -suse-build-key +# Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) +Prefer: postfix + +# go exists in mutliple versions by now - we prefer the 'unversioned package' - current default is 1.9 +Prefer: go go1.9 + +# python([23])-pep8 is provided by python\1-pep8 and python\1-pycodestyle - favoring 'the real one' +Prefer: python2-pep8 python3-pep8 + +# When perl provides a module that is also in a different package, but the consumer specifies no version, we go with perl +Prefer: perl + +# Assist migration to python-pycups (python3-cups is going to be removed) +Prefer: python3-pycups python-pycups + +# Apache requires a MPM - we pick prefork +Prefer: apache2:apache2-prefork + +# for symbol syslog (syslogd is best as it has the least dependencies) +Prefer: syslogd + +# rmt is provided by tar-rmt and star-rmt - we prefer star-rmt, which was the one in the past providing rmt +Prefer: star-rmt + +# A couple packares require a dbus daemon to show notifications - unless oterhwise specified, we prefer the 'standalong notification-daemon; +Prefer: notification-daemon + +# Stuff that wants to have /etc/os-release available should require distribution-release, which we then offer dummy-release for (openSUSE-release changes daily for TW) +Prefer: dummy-release + +# Tumbleweed ships nodejs4 for compatibility reasons - but it's not the preferred version +Prefer: -nodejs4 -nodejs6 + +# have choice for libpulse.so.0 needed by wine-32bit: apulse-32bit libpulse0-32bit - prefering the 'original' +Prefer: libpulse0-32bit + +# Have choice for vtk-java/vtk-tcl needed by vtk-devel +Prefer: vtk-java vtk-tcl + +# wine comes in various flavors by now, we pick the unflavored ones +Prefer: wine-32bit wine-devel-32bit wine-devel + +# Ruby stuff - quite a few packages exist in multiple versions in the distro; in each case, the Preference is on the 'unversioned' package +Prefer: ruby2.5-rubygem-tilt +Prefer: ruby2.5-rubygem-mail +Prefer: ruby2.5-rubygem-addressable +Prefer: ruby2.5-rubygem-thor + +# python-msgpack-python was renamed to python-msgpack with 0.5 as a single-spec package (provides/obsoletes in place) +Prefer: python2-msgpack python3-msgpack + +# Below list still needs to be reviewed + +Prefer: xorg-x11-Xvnc:icewm +Prefer: cracklib-dict-small +Prefer: libstdc++6 libgcc_s1 libquadmath0 +Prefer: libstdc++6-32bit libstdc++6-64bit +Prefer: libstdc++6-x86 +Prefer: libmpx2 libmpxwrappers2 libmpx2-32bit libmpxwrappers2-32bit +%ifarch s390x +Prefer: -libstdc++41 +%endif +Prefer: syslog-service +Prefer: poppler-tools +Prefer: libjpeg8-devel libjpeg-turbo +Prefer: microcode_ctl:kernel-default +Prefer: gnu-jaf yast2-control-center-qt +Prefer: vim-normal myspell-american wine +Prefer: amarok:amarok-xine +Prefer: kdenetwork3-vnc:tightvnc +Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat-jsp-2_2-api tomcat-jsp-2_3-api tomcat-servlet-2_5-api +Prefer: -dbus-1-nox11 +Prefer: -servletapi3 -servletapi4 -servletapi5 +Prefer: icewm-lite +Prefer: yast2-ncurses-pkg +Prefer: monodevelop: mono-addins +Prefer: texlive-xmltex texlive-tools texlive-jadetex +Prefer: libesd-devel:esound +Prefer: libesd0:esound-daemon +Prefer: package-lists-openSUSE-KDE-cd: esound-daemon +Prefer: librest-0_7-0 + + +Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api -java-1_5_0-gcj-compat -geronimo-jta-1_1-api classpathx-mail +Prefer: rhino:xmlbeans-mini +Prefer: mx4j:log4j-mini + + +Prefer: rpcbind eclipse-source +Prefer: libcdio_cdda0 libcdio_paranoia0 +Prefer: boo tog-pegasus +Prefer: sysvinit(network) wicked-service +Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd +Prefer: kdebase4-openSUSE:kdebase4-workspace +Prefer: ant:xerces-j2 +Prefer: dhcp-client:dhcp +Prefer: libGLw1 +# provides typelib(St) +Prefer: -cinnamon +Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es +Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt -bundle-lang-kde-el +Prefer: -bundle-lang-kde-zh -bundle-lang-kde-ja -bundle-lang-kde-ru -bundle-lang-kde-pl +Prefer: -bundle-lang-kde-sv -bundle-lang-kde-ko -bundle-lang-kde-fi -bundle-lang-kde-da +Prefer: -bundle-lang-kde-cs -bundle-lang-kde-nl -bundle-lang-kde-hu -bundle-lang-kde-nb +Prefer: -bundle-lang-kde-it -bundle-lang-kde-ca -bundle-lang-kde-ar +Prefer: -bundle-lang-gnome-es -bundle-lang-gnome-de -bundle-lang-gnome-fr +Prefer: -bundle-lang-gnome-pt -bundle-lang-gnome-en -bundle-lang-gnome-el +Prefer: -bundle-lang-gnome-zh -bundle-lang-gnome-ja -bundle-lang-gnome-ru -bundle-lang-gnome-cs +Prefer: -bundle-lang-gnome-ko -bundle-lang-gnome-da -bundle-lang-gnome-nl -bundle-lang-gnome-hu +Prefer: -bundle-lang-gnome-pl -bundle-lang-gnome-fi -bundle-lang-gnome-nb -bundle-lang-gnome-sv +Prefer: -bundle-lang-gnome-it -bundle-lang-gnome-ca -bundle-lang-gnome-ar +Prefer: -bundle-lang-gnome-extras-es -bundle-lang-gnome-extras-de -bundle-lang-gnome-extras-fr +Prefer: -bundle-lang-gnome-extras-pt -bundle-lang-gnome-extras-en -bundle-lang-gnome-extras-el +Prefer: -bundle-lang-gnome-extras-zh -bundle-lang-gnome-extras-ja -bundle-lang-gnome-extras-ru -bundle-lang-gnome-extras-cs +Prefer: -bundle-lang-gnome-extras-ko -bundle-lang-gnome-extras-da -bundle-lang-gnome-extras-nl -bundle-lang-gnome-extras-hu +Prefer: -bundle-lang-gnome-extras-pl -bundle-lang-gnome-extras-fi -bundle-lang-gnome-extras-nb -bundle-lang-gnome-extras-sv +Prefer: -bundle-lang-gnome-extras-it -bundle-lang-gnome-extras-ca -bundle-lang-gnome-extras-ar +Prefer: -bundle-lang-common-es -bundle-lang-common-de -bundle-lang-common-fr +Prefer: -bundle-lang-common-pt -bundle-lang-common-en -bundle-lang-common-el +Prefer: -bundle-lang-common-ja -bundle-lang-common-zh -bundle-lang-common-cs -bundle-lang-common-ru +Prefer: -bundle-lang-common-nl -bundle-lang-common-hu -bundle-lang-common-pl -bundle-lang-common-da +Prefer: -bundle-lang-common-ko -bundle-lang-common-nb -bundle-lang-common-fi -bundle-lang-common-sv +Prefer: -bundle-lang-common-it -bundle-lang-common-ca -bundle-lang-common-ar +Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ +Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g +Prefer: -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links +Prefer: -python-setuptools +Prefer: -kdenetwork3-InstantMessenger +Prefer: -icc-profiles +Prefer: vala +# in doubt, take xerces +Prefer: -crimson +# in doubt, take higher versions +Prefer: -rubygem-rack-1_1 -rubygem-rack-1_2 -rubygem-rack-1_3 -rubygem-tilt-1_1 -rubygem-rack-1_4 +Prefer: -rubygem-method_source-0_7 -rubygem-rails-2_3 -rubygem-activerecord-2_3 +Prefer: -rubygem-json_pure-1_5 +Prefer: -ruby2.4-rubygem-fast_gettext-1_1 -ruby2.4-rubygem-listen-3_0 -ruby2.4-rubygem-nokogiri-1_6 -ruby2.4-rubygem-i18n-0_6 -ruby2.4-rubygem-ruby_dep-1_3 -ruby2.4-rubygem-childprocess-0_6 +Prefer: -ruby2.4-rubygem-mime-types-1 +Prefer: -ruby2.5-rubygem-rspec-2_14 +Prefer: -ruby2.5-rubygem-mime-types-1 +Prefer: geronimo-servlet-2_4-api +Prefer: openmpi-config +Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi -libhdf5_hl9-openmpi -libhdf5-9-openmpi -libhdf5-10-openmpi -libhdf5_hl10-openmpi -libhdf5-11-openmpi -libhdf5_hl11-openmpi -libhdf5-100-openmpi -libhdf5_hl100-openmpi -libhdf5_hl100-mvapich2 -libhdf5-101-mvapich2 -libhdf5-101-openmpi +Prefer: -hdf5-1_8-devel +Prefer: fftw3-devel +# prefer the small systemd for building +Prefer: star +Prefer: xmlgraphics-commons:apache-commons-io +# the -32bit stuff provides things it shouldn't (hopefully temporary) +Prefer: -typelib-1_0-GdkPixbuf-2_0-32bit -typelib-1_0-Pango-1_0-32bit -glib2-devel-32bit +Prefer: postgresql postgresql-server postgresql-devel +Prefer: -unzip-rcc +Prefer: -primus -primus-32bit +Prefer: -staging-build-key +Prefer: -sssd-wbclient +Prefer: -clutter-gst-devel +Prefer: -opencv-qt5-devel +Prefer: -python-configparser2 + +# ffmpeg-3 and ffmpeg-4 handling +Prefer: libvpx-devel +Prefer: ffmpeg-3-libavcodec-devel ffmpeg-3-libavdevice-devel ffmpeg-3-libavfilter-devel ffmpeg-3-libavformat-devel ffmpeg-3-libavresample-devel ffmpeg-3-libavutil-devel ffmpeg-3-libpostproc-devel ffmpeg-3-libswresample-devel ffmpeg-3-libswscale-devel ffmpeg-3-private-devel +Prefer: -ffmpeg2-devel +Substitute: ffmpeg2-devel ffmpeg-2-libavcodec-devel +Prefer: -ffmpeg3-devel +Substitute: ffmpeg3-devel ffmpeg-3-libavcodec-devel +Prefer: -libavcodec-devel -libavdevice-devel -libavfilter-devel -libavformat-devel -libavresample-devel -libavutil-devel -libpostproc-devel -libswresample-devel -libswscale-devel -ffmpeg-private-devel +# ffmpeg and its fork libav both provide libswscale; prefer the 'original' ffmpeg +Prefer: -libswscale-libav-devel -libavformat-libav-devel -libavresample-libav-devel -libavcodec-libav-devel -libavdevice-libav-devel -libavfilter-libav-devel -libpostproc-libav-devel -libavutil-libav-devel + +# as long as kactivities4 exists and is provided +Prefer: kactivities5 +# oxygen5-icon-theme osboletes oxygen-icon-theme +Prefer: oxygen5-icon-theme + +# kernel bug (coolo) +Prefer: kernel-default-devel + +# explicitly prefer openssl version openssl package is used, for openssl(cli) +Prefer: openssl-1_1 + +Prefer: wxWidgets-3_0-devel +Prefer: libopenssl-devel + +Prefer: -NX -xaw3dd -db43 +Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis +Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit +Prefer: libffi-devel +Prefer: libatomic1 libcilkrts5 libitm1 liblsan0 libtsan0 libubsan0 +Prefer: libatomic1-32bit libcilkrts5-32bit libitm1-32bit libubsan0-32bit +Prefer: libgcc_s1-x86 libgcj_bc1 +Prefer: libgomp1 libgomp1-32bit libgomp1-64bit +Prefer: libmudflap4 libmudflap4-32bit libmudflap4-64bit +Prefer: libobjc4 libgfortran3 libquadmath0 +Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini -libiso9660-7-mini -libcdio10-mini -libcdio12-mini +Prefer: -libcdio-mini -faac-mini -libcdio-mini-devel +Prefer: -seamonkey +Prefer: -libdb-4_4-devel -libdb-4_5-devel -libevoldap-2_4-2 +Prefer: libopenal0-soft openal-soft -lsb-buildenv +Prefer: -libevent +Prefer: gnu-crypto libusb-compat-devel +Prefer: libusb-0_1-4 +Prefer: libreoffice:xerces-j2 +Prefer: k3b:libdvdread4 +Prefer: glibc-devel +Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -libnetcdf13-openmpi libnetcdf11 netcdf-devel netcdf-devel-data +Prefer: NetworkManager:dhcp-client +Prefer: kdebase3-SuSE:kdebase3 +Prefer: pcre-tools +Prefer: libpopt0 makeinfo +Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 +Prefer: libgnome-keyring-devel +Prefer: gnome-keyring-32bit +Prefer: linux-glibc-devel +Prefer: squid sysvinit +Prefer: libpng16-compat-devel +Prefer: -python3 -python3-gobject-devel -python3-gobject2-devel -x11-video-fglrxG02 -libpng12-0 +Prefer: python3-docutils +Prefer: perl-Mail-SPF:perl-Error libldb0 -audit-libs +#needed because new xml-commons package +Prefer: xml-commons-resolver12 xml-commons-jaxp-1.3-apis +Prefer: xmlgraphics-fop:xerces-j2 +Prefer: cogl-devel +Prefer: -perl-XML-SAX perl-Test-YAML -perl-Pod-Usage +Prefer: libpsm2-compat +# choice p11-kit-nss-trust +Prefer: mozilla-nss-certs +# amarok dependency resolution +Prefer: phonon-backend-gstreamer +# replacing mkinitrd +Prefer: dracut +# replacing module-init-tools +Prefer: kmod-compat +# Temporary +Prefer: oxygen5-cursors +# Temporary +Prefer: -perl-App-cpanminus +# libmediaart is prepared for a larger update; for now favor mediaart-1.0 +Prefer: -typelib-1_0-MediaArt-2_0 +Prefer: -typelib-1_0-Gtk-2_0 -typelib-1_0-Gtk-4_0 +Prefer: -python-atspi +Prefer: gettext-its-gtk3 gtk3-schema +# for pkgconfig(ijs) and no one actually rely on ghostscript-mini-devel in Factory +Prefer: ghostscript-devel +# for pkgconfig(libotf) libotf-devel and libotf-devel-32bit both provides it +Prefer: libotf-devel + +# have choice for mysql-devel: libmariadb-devel libmysqlclient-devel +Prefer: libmysqlclient-devel + +# have choice for perl(Math::BigInt) >= 1.999808: amanda perl-Math-BigInt +Prefer: perl-Math-BigInt + +Ignore: installation-images-openSUSE:cracklib-dict-full +Ignore: systemd-sysvinit:systemd +Ignore: openSUSE-release:openSUSE-release-ftp,openSUSE-release-dvd5,openSUSE-release-biarch,openSUSE-release-livecdkde,openSUSE-release-livecdgnome +Ignore: cracklib:cracklib-dict +Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,distribution-release,udev +Ignore: sysvinit:mingetty +Ignore: gettext-tools:libgcj,libstdc++-devel,libgcj41,libstdc++41-devel,libgcj42,libstdc++42-devel +Ignore: libgcj43,libstdc++43-devel +Ignore: libgcj44,libstdc++44-devel +Ignore: libgcj45,libstdc++45-devel +Ignore: libgcj46,libstdc++46-devel +Ignore: libgcj47,libstdc++47-devel +Ignore: librtas:util-linux +Ignore: pwdutils:openslp +Ignore: rpm:suse-build-key,build-key +Ignore: cloud-init:cloud-init-config +# python-pyudev requires libudev1 in normal situations +Ignore: python-pyudev:libudev1 +Ignore: python-SPARQLWrapper:python-rdflib +Ignore: python3-SPARQLWrapper:python3-rdflib +Ignore: bind-utils:bind-libs +Ignore: portmap:syslogd +Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng +Ignore: xorg-x11-server:xorg-x11-driver-input,xorg-x11-driver-video +Ignore: apache2:logrotate +Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis +Ignore: kdelibs3:alsa,arts,OpenEXR,aspell,cups-libs,mDNSResponder-lib,krb5,libjasper +Ignore: kdelibs3-devel:libvorbis-devel +Ignore: kdebase3:kdebase3-ksysguardd,OpenEXR,dbus-1,dbus-1-qt,hal,powersave,openslp,libusb +Ignore: kdebase3-SuSE:release-notes +Ignore: jack:alsa,libsndfile +Ignore: libxml2-devel:readline-devel +Ignore: gnome-vfs2:gnome-mime-data,desktop-file-utils,cdparanoia,dbus-1,dbus-1-glib,hal,libsmbclient,fam,file_alteration +Ignore: libgda:file_alteration +Ignore: gnutls:lzo,libopencdk +Ignore: gnutls-devel:lzo-devel,libopencdk-devel +Ignore: pango:cairo,glitz,libpixman,libpng +Ignore: pango-devel:cairo-devel +Ignore: cairo-devel:libpixman-devel +Ignore: libgnomeprint:libgnomecups +Ignore: libgnomeprintui:libgnomecups +Ignore: orbit2-devel:indent +Ignore: qt3:libmng +Ignore: qt-sql:qt_database_plugin +Ignore: libgnomecanvas-devel:glib-devel +Ignore: libgnomeui:gnome-icon-theme,shared-mime-info +Ignore: scrollkeeper:docbook_4 +Ignore: gnome-desktop:libgnomesu,startup-notification +Ignore: python-devel:python-tk +Ignore: libgtk-3-0:adwaita-icon-theme +Ignore: libgtk-3-0:gdk-pixbuf-loader-rsvg +Ignore: samba-libs:krb5 +Ignore: libbonoboui:gnome-desktop +Ignore: libxfce4ui-1-0:exo-tools +Ignore: docbook_4:iso_ent,xmlcharent +Ignore: control-center2:nautilus,evolution-data-server,gnome-menus,gstreamer-plugins,gstreamer,metacity,mozilla-nspr,mozilla,libxklavier,gnome-desktop,startup-notification +Ignore: docbook-xsl-stylesheets:xmlcharent +Ignore: liby2util-devel:libstdc++-devel,openssl-devel +Ignore: yast2:yast2-ncurses,yast2_theme,perl-Config-Crontab,yast2-xml,SuSEfirewall2 +Ignore: yast2-core:netcat,hwinfo,wireless-tools,sysfsutils +Ignore: yast2-core-devel:libxcrypt-devel,hwinfo-devel,blocxx-devel,sysfsutils,libstdc++-devel +Ignore: yast2-packagemanager-devel:rpm-devel,curl-devel,openssl-devel +Ignore: yast2-devtools:libxslt +Ignore: yast2-iscsi-lio-server:lio-utils +Ignore: yast2-installation:yast2-update,yast2-mouse,yast2-country,yast2-bootloader,yast2-packager,yast2-network,yast2-online-update,yast2-users,release-notes,autoyast2-installation +Ignore: yast2-bootloader:bootloader-theme +Ignore: yast2-packager:yast2-x11,libyui_pkg +Ignore: autoyast2:yast2-schema +# not during build +Ignore: yui_backend +Ignore: yast2-x11:sax2-libsax-perl +Ignore: yast2-network:yast2-inetd +Ignore: openslp-devel:openssl-devel +Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,ghostscript-x11,xaw3d,gd,dialog,ed +Ignore: texlive-bin:ghostscript-x11 +Ignore: texlive-bin-omega:ghostscript-x11 +Ignore: yast2-country:yast2-trans-stats +Ignore: tpb:tpctl-kmp +Ignore: tpctl:tpctl-kmp +Ignore: zaptel:zaptel-kmp +Ignore: mkinitrd:pciutils +Ignore: pciutils:pciutils-ids +Ignore: postfix:iproute2 +Ignore: aaa_base:systemd +Ignore: gpm:systemd +Ignore: openssh:systemd +Ignore: cronie:systemd +Ignore: systemd:kbd +Ignore: systemd:kmod +Ignore: systemd:systemd-presets-branding +Ignore: systemd:dbus-1 +Ignore: systemd:pam-config +Ignore: systemd:udev +Ignore: pesign:systemd +Ignore: logrotate:cron +Ignore: texlive-filesystem:cron +Ignore: xinit:xterm +Ignore: xdm:xterm +Ignore: gnome-control-center:gnome-themes-accessibility + + +Ignore: man:groff-full +Ignore: git-core:rsync +Ignore: apache2:systemd +Ignore: icewm-lite:icewm +Ignore: cluster-glue:sudo +Ignore: libgcc:glibc-32bit +Ignore: libgcc41:glibc-32bit +Ignore: libgcc42:glibc-32bit +Ignore: libgcc43:glibc-32bit +Ignore: libgcc44:glibc-32bit +Ignore: libgcc45:glibc-32bit +Ignore: libgcc46:glibc-32bit +Ignore: libgcc47:glibc-32bit +Ignore: libstdc++:glibc-32bit +Ignore: libstdc41++:glibc-32bit +Ignore: libstdc42++:glibc-32bit +Ignore: libstdc43++:glibc-32bit +Ignore: libstdc44++:glibc-32bit +Ignore: libstdc45++:glibc-32bit +Ignore: libstdc46++:glibc-32bit +Ignore: libstdc47++:glibc-32bit +Ignore: ncurses-32bit + +Ignore: susehelp:susehelp_lang,suse_help_viewer +Ignore: mailx:smtp_daemon +Ignore: cron:smtp_daemon +Ignore: hotplug:syslog +Ignore: pcmcia:syslog +Ignore: openct:syslog +Ignore: postfix:sysvinit(syslog) +Ignore: cups:sysvinit(syslog) +Ignore: jython:servlet +Ignore: ispell:ispell_dictionary,ispell_english_dictionary +Ignore: aspell:aspel_dictionary,aspell_dictionary +Ignore: smartlink-softmodem:kernel,kernel-nongpl +Ignore: libreoffice-de:myspell-german-dictionary +Ignore: libreoffice:libreoffice-i18n +Ignore: libreoffice:libreoffice-icon-themes +Ignore: mediawiki:php-session,php-gettext,php-zlib,php-mysql,mod_php_any +Ignore: squirrelmail:mod_php_any,php-session,php-gettext,php-iconv,php-mbstring,php-openssl +Ignore: perl-Log-Log4perl:rrdtool + +Ignore: simias:mono(log4net) +Ignore: horde:mod_php_any,php-gettext,php-mcrypt,php-imap,php-pear-log,php-pear,php-session,php + +Ignore: xerces-j2:xml-commons-apis,xml-commons-resolver +Ignore: xdg-menu:desktop-data +Ignore: nessus-libraries:nessus-core +Ignore: evolution:yelp +Ignore: e17:e17-branding e17:e17-theme + +Ignore: mono-tools:mono(gconf-sharp),mono(glade-sharp),mono(gnome-sharp),mono(gtkhtml-sharp),mono(atk-sharp),mono(gdk-sharp),mono(glib-sharp),mono(gtk-sharp),mono(pango-sharp) +Ignore: gecko-sharp2:mono(glib-sharp),mono(gtk-sharp) + +Ignore: vcdimager:libcdio.so.6,libcdio.so.6(CDIO_6),libiso9660.so.4,libiso9660.so.4(ISO9660_4) +Ignore: libcdio:libcddb.so.2 + +Ignore: coreutils:coreutils-lang +Ignore: cpio:cpio-lang +Ignore: glib2:glib2-lang +Ignore: gtk2:gtk2-lang +Ignore: gtk:gtk-lang +Ignore: atk:atk-lang +Ignore: MozillaThunderbird:pinentry-dialog +Ignore: seamonkey:pinentry-dialog +Ignore: pinentry:pinentry-dialog +Ignore: gpg2:gpg2-lang +Ignore: util-linux:util-linux-lang +Ignore: suseRegister:distribution-release +Ignore: compiz:compiz-decorator +Ignore: icecream:gcc-c++ +Ignore: no +Ignore: package +Ignore: provides +Ignore: j9vm/libjvm.so()(64bit) +Ignore: kdepim3:suse_help_viewer +Ignore: kdebase3-SuSE:kdebase3-SuSE-branding +Ignore: kio_sysinfo:kdebase3-SuSE-branding +Ignore: gnome-menus:gnome-menus-branding +Ignore: epiphany:epiphany-branding +Ignore: gnome-control-center:gnome-control-center-branding +Ignore: phonon:phonon-backend +Ignore: openwbem-devel +Ignore: MozillaFirefox:MozillaFirefox-branding +Ignore: yast2:yast2-branding +Ignore: plymouth:plymouth-branding +Ignore: plymouth:suspend +Ignore: yast2-qt:yast2-branding +Ignore: yast2-theme-SLE:yast2-branding +Ignore: yast2-registration:yast2-registration-branding +Ignore: compiz:compiz-branding +Ignore: texlive:perl-Tk texlive-bin:perl-Tk +Ignore: xfce4-desktop:xfce4-desktop-branding +Ignore: xfce4-panel:xfce4-panel-branding +Ignore: xfce4-session:xfce4-session-branding +Ignore: kdebase4-runtime:kdebase4-runtime-branding +Ignore: kwin:kdebase4-workspace-branding +Ignore: transmission-common:transmission-ui +Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd +Ignore: mkinitrd:sbin_init +Ignore: opensc:pinentry +Ignore: gpg2:pinentry +Ignore: NetworkManager:dhcp +Ignore: NetworkManager:iproute2 +# sysconfig requires it at runtime, not buildtime +Ignore: sysconfig:dbus-1 +Ignore: sysconfig:procps +Ignore: sysconfig:iproute2 +Ignore: sysconfig-network:iproute2 +Ignore: sysconfig:tunctl +Ignore: sysconfig:sysvinit(network) +# no build dependencies +Ignore: libksuseinstall1:yast2-packager +Ignore: libksuseinstall1:zypper +Ignore: syslog-service:logrotate +Ignore: libglue-devel:cluster-glue +Ignore: libqca2:gpg2 +Ignore: NetworkManager:wpa_supplicant +Ignore: NetworkManager:dhcp-client +Ignore: libgio-2_0-0:dbus-1-x11 +Ignore: weather-wallpaper:inkscape +Ignore: libgamin-1-0:gamin-server +Ignore: libfam0-gamin:gamin-server +Ignore: python3:python3-pip +Ignore: avahi:sysvinit(network) +Ignore: cluster-glue:sysvinit(network) +Ignore: dracut:systemd-sysvinit + +%ifarch ppc64le +#Constraint: hostlabel PPC64LE_HOST +Constraint: hardware:cpu:flag power8 +%endif + +Macros: +# RUBY - UNVERSIONED STUFF +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# +# if you change any macros here you have to update the copy in the +# prjconf aswell. +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# +%rubygem() %{expand:%%{rubygems%rb_build_versions STOP %*}} +%rubygemsSTOP() %nil +%rubygemsxSTOP() %{expand:%%rubygemsxxSTOP -a %*} +%rubygemsxxSTOP(a:) %{-a*}) %* + +%rubySTOP() %nil +%rubyxSTOP() %* + +%ruby() %{expand:%%{ruby%rb_build_versions STOP %*}} + +%rubydevel() %{expand:%%{rubydevel%rb_build_versions STOP %*}} + +%rubydevelSTOP() %nil +%rubydevelxSTOP() %* +# + +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# +# if you change any macros here you have to update the copy in +# ruby2.5 aswell. +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# + + +%rubygemsruby25() rubygem(ruby:2.5.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} +%rubygemsxruby25() %{expand:%%{rubygemsx%*}} + +%rubyruby25() ruby2.5 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} +%rubyxruby25() %{expand:%%{rubyx%*}} + +%rubydevelruby25() ruby2.5-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} +%rubydevelxruby25() %{expand:%%{rubydevelx%*}} + +%_with_ruby25 1 + +### Things to define default ruby stuff for the distro + +%rb_default_ruby ruby25 +%rb_default_ruby_suffix ruby2.5 +%rb_default_ruby_abi ruby:2.5.0 + +%rb_build_ruby_abis ruby:2.5.0 +%rb_build_versions ruby25 +:Macros + +%define _with_ruby25 1 + +%define rb_default_ruby ruby25 +%define rb_default_ruby_suffix ruby2.5 +%define rb_default_ruby_abi ruby:2.5.0 + +%define rb_build_ruby_abis ruby:2.5.0 +%define rb_build_versions ruby25 + +Prefer: -ruby-stdlib +Prefer: %{rb_default_ruby_suffix}-rubygem-gem2rpm +Prefer: %{rb_default_ruby_suffix}-rubygem-ruby-dbus +Prefer: %{rb_default_ruby_suffix}-rubygem-yard +Prefer: %{rb_default_ruby_suffix}-rubygem-rspec +Prefer: %{rb_default_ruby_suffix}-rubygem-yast-rake +Prefer: %{rb_default_ruby_suffix}-rubygem-cheetah +Prefer: %{rb_default_ruby_suffix}-rubygem-inifile +Prefer: %{rb_default_ruby_suffix}-rubygem-bundler +Prefer: %{rb_default_ruby_suffix}-rubygem-sass +Prefer: %{rb_default_ruby_suffix}-rubygem-cfa +Prefer: %{rb_default_ruby_suffix}-rubygem-mime-types + +# END RUBY STUFF + +# PYTHON STUFF + +Macros: +%pythons %{?!skip_python2:python2} %{?!skip_python3:python3} + +# This method for generating python_modules gets too deep to expand at about 5 python flavors. +# It is replaced by a Lua macro in macros.lua +# However, OBS has a much higher expansion depth, so this works fine. +%python_module_iter(a:) %{-a*}-%{args} %{expand:%%{?!python_module_iter_%1:%%{python_module_iter -a%*}}} +%python_module_iter_STOP stop +%python_module() %{expand:%%define args %{**}} %{expand:%%{python_module_iter -a %{pythons} STOP}} + +%add_python() %{expand:%%define pythons %pythons %1} +:Macros + +# END PYTHON STUFF + +# BEGIN RUST STUFF + +# Define the architectures in which Rust (and Rust crates) are available +# NOTE: Keep this in sync with rust-srpm-macros! +%define rust_arches x86_64 i586 i686 armv6hl armv7hl aarch64 ppc64 powerpc64 ppc64le powerpc64le s390x + +Macros: +%rust_arches x86_64 i586 i686 armv6hl armv7hl aarch64 ppc64 powerpc64 ppc64le powerpc64le s390x +:Macros + +# END RUST STUFF + +# Default to Java 11 +Prefer: java-11-openjdk java-11-openjdk-devel java-11-openjdk-javadoc java-11-openjdk-headless +# Fall back to Java 10, if there was no java 11 option +Prefer: java-10-openjdk java-10-openjdk-devel java-10-openjdk-javadoc java-10-openjdk-headless +# Fall back to Java 9, if there was no java 10 option +Prefer: java-9-openjdk java-9-openjdk-devel java-9-openjdk-javadoc java-9-openjdk-headless +# Prefer java 8 if java 9 was no option +Prefer: java-1_8_0-openjdk java-1_8_0-openjdk-devel java-1_8_0-openjdk-javadoc java-1_8_0-openjdk-headless +# And then fall back to java 7 if needed +Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel java-1_7_0-openjdk-javadoc java-1_7_0-openjdk-headless +# And then fall back to java 7 bootstrap if needed +Prefer: java-1_7_0-bootstrap java-1_7_0-bootstrap-devel java-1_7_0-bootstrap-javadoc java-1_7_0-bootstrap-headless +Substitute: java2-devel-packages java-devel + +%ifarch x86_64 ppc64 s390x sparc64 +Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit +%else + %ifarch ppc sparc sparcv9 +Substitute: glibc-devel-32bit glibc-devel-64bit + %else +Substitute: glibc-devel-32bit + %endif +%endif + +%ifarch %ix86 +Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-debug kernel-xen +%endif +%ifarch ia64 +Substitute: kernel-binary-packages kernel-default kernel-debug +%endif +%ifarch x86_64 +Substitute: kernel-binary-packages kernel-default kernel-smp kernel-xen +%endif +%ifarch ppc +Substitute: kernel-binary-packages kernel-default kernel-ppc64 kernel-ps3 +%endif +%ifarch ppc64 +Substitute: kernel-binary-packages kernel-default kernel-ppc64 +%endif +%ifarch s390 +Substitute: kernel-binary-packages kernel-s390 +%endif +%ifarch s390x +Substitute: kernel-binary-packages kernel-default +%endif + +Optflags: i586 -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches +Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches +Optflags: x86_64 -fmessage-length=0 -grecord-gcc-switches +Optflags: ppc -fmessage-length=0 -grecord-gcc-switches +Optflags: ppc64 -fmessage-length=0 -grecord-gcc-switches +Optflags: ia64 -fmessage-length=0 -grecord-gcc-switches +Optflags: s390 -fmessage-length=0 -grecord-gcc-switches +Optflags: s390x -fmessage-length=0 -grecord-gcc-switches +Optflags: armv7l -fmessage-length=0 -grecord-gcc-switches +Optflags: armv7hl -fmessage-length=0 -grecord-gcc-switches +Optflags: armv6l -fmessage-length=0 -grecord-gcc-switches +Optflags: armv6hl -fmessage-length=0 -grecord-gcc-switches +Optflags: aarch64 -fmessage-length=0 -grecord-gcc-switches +Optflags: ppc64le -fmessage-length=0 -grecord-gcc-switches +# need mcpu=ultrasparc to complete sparcv8plus to sparcv9 (adds, for example, atomic ops) +Optflags: sparcv9 -fmessage-length=0 -grecord-gcc-switches -mcpu=ultrasparc +Optflags: sparc64 -fmessage-length=0 -grecord-gcc-switches -mcpu=ultrasparc +%ifarch sparcv9 +Target: sparcv9 +%endif +%ifarch armv6l armv6hl +Target: armv6hl-suse-linux +%endif +%ifarch armv7l armv7hl +Target: armv7hl-suse-linux +%endif + + +#Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables +Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection + +# 13.3 does not exist ! +%define suse_version 1500 +%define is_opensuse 1 +%define sle_version 150100 + +Macros: +%suse_version 1500 +%is_opensuse 1 +%sle_version 150100 + +%insserv_prereq insserv sed +%fillup_prereq fillup coreutils grep diffutils +%suseconfig_fonts_prereq perl aaa_base +%install_info_prereq info +%kernel_module_package_buildreq kmod-compat kernel-syms +%kernel_module_package_buildreqs kmod-compat kernel-syms + +%sles_version 0 +%ul_version 0 +%do_profiling 1 +%opensuse_bs 1 +%_vendor suse + +# Reproducible builds +%source_date_epoch_from_changelog Y + +# define which gcc package builds the system libraries +%product_libs_gcc_ver 7 +# The following shlibs have latest versions built from GCC 6 sources +%product_libs_gcc_ver_libasan3 6 +%product_libs_gcc_ver_libgo9 6 +%product_libs_gcc_ver_libgfortran3 6 +# reminded by richi 2017 4/3 +%product_libs_gcc_ver_libgcj_bc1 6 +# The following shlibs have been introduced with GCC 7 +%product_libs_gcc_ver_libmpxwrappers2 7 +%product_libs_gcc_ver_libmpx2 7 +%product_libs_gcc_ver_libasan4 7 +%product_libs_gcc_ver_libgo11 7 +%product_libs_gcc_ver_libgfortran4 7 +%gcc_version 7 + +%ext_info .gz +%ext_man .gz + +%info_add(:-:) test -x /sbin/install-info -a -f %{?2}%{?!2:%{_infodir}}/%{1}%ext_info && /sbin/install-info --info-dir=%{?2}%{?!2:%{_infodir}} %{?2}%{?!2:%{_infodir}}/%{1}%ext_info \ +%{nil} + +%info_del(:-:) test -x /sbin/install-info -a ! -f %{?2}%{?!2:%{_infodir}}/%{1}%ext_info && /sbin/install-info --quiet --delete --info-dir=%{?2}%{?!2:%{_infodir}} %{?2}%{?!2:%{_infodir}}/%{1}%ext_info \ +%{nil} +:Macros + diff -Nru obs-build-20180831/configs/sl15.5.conf obs-build-20190710/configs/sl15.5.conf --- obs-build-20180831/configs/sl15.5.conf 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/configs/sl15.5.conf 2019-09-01 00:25:19.000000000 +0000 @@ -17,7 +17,7 @@ Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 libncurses6 pam -Preinstall: permissions libreadline7 rpm sed tar libz1 libselinux1 +Preinstall: permissions libreadline8 rpm sed tar libz1 libselinux1 libzstd1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_3-5 Preinstall: libpcre1 @@ -59,15 +59,13 @@ Support: brp-check-suse post-build-checks rpmlint-Factory # remove build-compare support to disable "same result" package dropping Support: build-compare -# Extracting appdata.xml from desktop files -Support: brp-extract-appdata Prefer: -suse-build-key Prefer: krb5-mini krb5-mini-devel Conflict: krb5-devel:krb5-mini Conflict: krb5:krb5-mini-devel Prefer: krb5-mini-devel:krb5-mini -Prefer: libreadline7 +Prefer: libreadline8 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss diff -Nru obs-build-20180831/configs/sle15.1.conf obs-build-20190710/configs/sle15.1.conf --- obs-build-20180831/configs/sle15.1.conf 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/configs/sle15.1.conf 2019-09-01 00:25:19.000000000 +0000 @@ -0,0 +1,863 @@ + +%define gcc_version 7 + +Patterntype: rpm-md ymp + +Substitute: kiwi-packagemanager:instsource product-builder-plugin-Tumbleweed +Substitute: system-packages:kiwi-product product-builder +Substitute: kiwi-packagemanager: kiwi-packagemanager:zypper + +%ifarch s390 +Substitute: valgrind +Substitute: valgrind-devel +Substitute: pkgconfig(valgrind) +%endif +%ifarch s390 s390x +Substitute: libunwind-devel +Substitute: pkgconfig(libunwind) +%endif + +%ifarch s390 s390x +Ignore: libsensors4-devel +%endif + +Prefer: lua53 liblua5_3-5 lua53-devel libtolua++-5_3-devel +Prefer: -liblua5_3 -liblua5_1 -liblua5_2 + +FileProvides: /bin/csh tcsh +FileProvides: /bin/logger util-linux-systemd +FileProvides: /sbin/netconfig sysconfig-netconfig +FileProvides: /sbin/setcap libcap-progs +FileProvides: /usr/bin/csh tcsh +FileProvides: /usr/bin/docbook2man docbook-utils +FileProvides: /usr/bin/eu-nm elfutils +FileProvides: /usr/bin/fipscheck fipscheck +FileProvides: /usr/bin/killall psmisc +FileProvides: /usr/bin/mimencode metamail +FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat +FileProvides: /usr/bin/pkg-config pkg-config +FileProvides: /usr/bin/python python-base +FileProvides: /usr/bin/setfacl acl +FileProvides: /usr/bin/sg_inq sg3_utils +FileProvides: /usr/bin/tput ncurses-utils +FileProvides: /usr/bin/xmllint libxml2-tools +FileProvides: /usr/bin/Xvfb xorg-x11-server +FileProvides: /usr/sbin/groupadd shadow +FileProvides: /usr/sbin/lockdev lockdev +FileProvides: /usr/sbin/useradd shadow +FileProvides: /usr/sbin/usermod shadow + +Preinstall: aaa_base attr bash coreutils diffutils +Preinstall: filesystem fillup glibc grep +Preinstall: libbz2-1 libgcc_s1 libncurses6 pam +Preinstall: permissions libreadline7 rpm sed tar libz1 libselinux1 +Preinstall: liblzma5 libcap2 libacl1 libattr1 +Preinstall: libpopt0 libelf1 liblua5_3-5 +Preinstall: libpcre1 + +Runscripts: aaa_base + +Prefer: libdb-4_8-devel +Prefer: cdrkit-cdrtools-compat genisoimage +VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 libsmartcols1 +VMinstall: kernel-obs-build +VMInstall: iproute2 + +Required: rpm-build +Required: gcc-PIE + +Support: perl build-mkbaselibs +Support: brp-check-suse post-build-checks rpmlint-Factory + +### Branding related preferences +Prefer: awesome:awesome-branding-upstream +Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE +Prefer: cinnamon-gschemas:cinnamon-gschemas-branding-upstream +Prefer: enlightenment-theme-upstream +Prefer: exo-data:exo-branding-upstream +Prefer: fcitx:fcitx-branding-openSUSE +Prefer: gdm:gdm-branding-upstream +Prefer: gfxboot-branding-openSUSE -gfxboot-branding-basedonopensuse +Prefer: glib2:glib2-branding-upstream +Prefer: gnome-panel:gnome-panel-branding-upstream +Prefer: gnome-session:gconf2-branding-openSUSE +Prefer: gnome-session:gnome-session-branding-openSUSE +Prefer: icewm-theme-branding +Prefer: kde4-kdm:kde4-kdm-branding-upstream +Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream +Prefer: kdelibs4-branding:kdelibs4-branding-upstream +Prefer: kdelibs4:kdelibs4-branding-upstream +Prefer: kdm:kdm-branding-upstream +Prefer: libcinnamon-desktop-data:libcinnamon-desktop-data-branding-upstream +Prefer: libexo-1-0:libexo-1-0-branding-upstream +Prefer: libgarcon-1-0:libgarcon-branding-upstream +Prefer: libgarcon-data:libgarcon-branding-upstream +Prefer: libgio-2_0-0:gio-branding-upstream +Prefer: libglib-2_0-0:glib2-branding-upstream +Prefer: libpurple-branding-upstream +Prefer: libreoffice:libreoffice-branding-upstream +Prefer: libsocialweb:libsocialweb-branding-upstream +Prefer: libxfce4ui:libxfce4ui-branding-upstream +Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream +Prefer: mate-desktop-gschemas:mate-desktop-gschemas-branding-upstream +Prefer: NetworkManager-branding-upstream +Prefer: PackageKit:PackageKit-branding-upstream +Prefer: plasma5-desktop:plasma5-desktop-branding-upstream +Prefer: plasma5-workspace:plasma5-workspace-branding-upstream +Prefer: sddm:sddm-branding-upstream +Prefer: systemd-presets-branding-SLE +Prefer: wallpaper-branding-openSUSE +Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream +Prefer: xfce4-settings:xfce4-settings-branding-upstream +Prefer: xfdesktop:xfdesktop-branding-upstream +Prefer: yast2-branding-openSUSE +Prefer: yast2-qt:yast2-qt-branding-openSUSE +Prefer: yast2-theme-openSUSE + +# Build cycle handling - prefer -mini packages were possible, break deps as needed + +Conflict: krb5-devel:krb5-mini +Conflict: krb5:krb5-mini-devel +Prefer: gettext-tools-mini gettext-runtime-mini +Prefer: ghostscript-mini +Prefer: krb5-mini-devel:krb5-mini +Prefer: krb5-mini krb5-mini-devel +Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo +Prefer: libunbound-devel-mini +Prefer: log4j-mini +Prefer: systemd-mini-devel:systemd-mini +Prefer: systemd-mini systemd-mini-devel libsystemd0-mini +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 + +# When kiwi comes into play, we do not want the -mini packages; -mini does not target end user systems +Conflict: kiwi:curl-mini +Conflict: kiwi:libudev-mini1 +Conflict: kiwi:systemd-mini + +# udev: -full and -mini packages don't mingle well +Prefer: libudev1:udev +Conflict: libudev1:udev-mini +Conflict: udev:libudev-mini1 + +# systemd: -full and -mini packages don't mingle well +Conflict: systemd:libsystemd0-mini +Conflict: systemd-mini-devel:systemd + +# curl: there is a -mini package to bootstrap and a full; some programs decide on what they want to build in based on what curl can do, so let's prefer full curl +Prefer: -curl-mini -libcurl-mini-devel -libcurl4-mini + +# Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) +Prefer: postfix + +# prefer the PHP5 variants over PHP7 +Prefer: php5-ctype +Prefer: php5-devel +Prefer: php5-dom +Prefer: php5-ftp +Prefer: php5-gd +Prefer: php5-gettext +Prefer: php5-mbstring +Prefer: php5-pear +Prefer: php5-pear-Archive_Tar +Prefer: php5-pear-Horde +Prefer: php5 php5-json +Prefer: php5-tokenizer +Prefer: php5-zip + +# go exists in mutliple versions by now - we prefer the 'unversioned package' +Prefer: go + +# python([23])-pep8 is provided by python\1-pep8 and python\1-pycodestyle - favoring 'the real one' +Prefer: python2-pep8 python3-pep8 + +# When perl provides a module that is also in a different package, but the consumer specifies no version, we go with perl +Prefer: perl + +# Assist migration to python-pycups (python3-cups is going to be removed) +Prefer: python3-pycups python-pycups + +# Apache requires a MPM - we pick prefork +Prefer: apache2:apache2-prefork + +# for symbol syslog (syslogd is best as it has the least dependencies) +Prefer: syslogd + +# rmt is provided by tar-rmt and star-rmt - we prefer star-rmt, which was the one in the past providing rmt +Prefer: star-rmt + +# A couple packares require a dbus daemon to show notifications - unless oterhwise specified, we prefer the 'standalong notification-daemon; +Prefer: notification-daemon + +# Stuff that wants to have /etc/os-release available should require distribution-release, which we then offer dummy-release for (openSUSE-release changes daily for TW) +Prefer: dummy-release + +# Tumbleweed ships nodejs4 for compatibility reasons - but it's not the preferred version +Prefer: -nodejs4 + +# have choice for libpulse.so.0 needed by wine-32bit: apulse-32bit libpulse0-32bit - prefering the 'original' +Prefer: libpulse0-32bit + +# Below list still needs to be reviewed + +Prefer: xorg-x11-Xvnc:icewm +Prefer: cracklib-dict-small +Prefer: libstdc++6 libgcc_s1 libquadmath0 +Prefer: libstdc++6-32bit libstdc++6-64bit +Prefer: libstdc++6-x86 +Prefer: libmpx2 libmpxwrappers2 libmpx2-32bit libmpxwrappers2-32bit +%ifarch s390x +Prefer: -libstdc++41 +%endif +Prefer: syslog-service +Prefer: poppler-tools +Prefer: libjpeg8-devel libjpeg-turbo +Prefer: microcode_ctl:kernel-default +Prefer: gnu-jaf yast2-control-center-qt +Prefer: vim-normal myspell-american wine +Prefer: amarok:amarok-xine +Prefer: kdenetwork3-vnc:tightvnc +Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat-jsp-2_2-api tomcat-jsp-2_3-api tomcat-servlet-2_5-api +Prefer: -dbus-1-nox11 +Prefer: -servletapi3 -servletapi4 -servletapi5 +Prefer: icewm-lite +Prefer: yast2-ncurses-pkg +Prefer: monodevelop: mono-addins +Prefer: texlive-xmltex texlive-tools texlive-jadetex +Prefer: libesd-devel:esound +Prefer: libesd0:esound-daemon +Prefer: package-lists-openSUSE-KDE-cd: esound-daemon +Prefer: librest-0_7-0 + +Prefer: rhino:xmlbeans-mini +Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api -java-1_5_0-gcj-compat -geronimo-jta-1_1-api classpathx-mail +Prefer: mx4j:log4j-mini + +Prefer: rpcbind eclipse-source +Prefer: libcdio_cdda0 libcdio_paranoia0 +Prefer: boo tog-pegasus +Prefer: sysvinit(network) wicked-service +Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd +Prefer: kdebase4-openSUSE:kdebase4-workspace +Prefer: ant:xerces-j2 +Prefer: dhcp-client:dhcp +Prefer: libGLw1 +# provides typelib(St) +Prefer: -cinnamon +Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es +Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt -bundle-lang-kde-el +Prefer: -bundle-lang-kde-zh -bundle-lang-kde-ja -bundle-lang-kde-ru -bundle-lang-kde-pl +Prefer: -bundle-lang-kde-sv -bundle-lang-kde-ko -bundle-lang-kde-fi -bundle-lang-kde-da +Prefer: -bundle-lang-kde-cs -bundle-lang-kde-nl -bundle-lang-kde-hu -bundle-lang-kde-nb +Prefer: -bundle-lang-kde-it -bundle-lang-kde-ca -bundle-lang-kde-ar +Prefer: -bundle-lang-gnome-es -bundle-lang-gnome-de -bundle-lang-gnome-fr +Prefer: -bundle-lang-gnome-pt -bundle-lang-gnome-en -bundle-lang-gnome-el +Prefer: -bundle-lang-gnome-zh -bundle-lang-gnome-ja -bundle-lang-gnome-ru -bundle-lang-gnome-cs +Prefer: -bundle-lang-gnome-ko -bundle-lang-gnome-da -bundle-lang-gnome-nl -bundle-lang-gnome-hu +Prefer: -bundle-lang-gnome-pl -bundle-lang-gnome-fi -bundle-lang-gnome-nb -bundle-lang-gnome-sv +Prefer: -bundle-lang-gnome-it -bundle-lang-gnome-ca -bundle-lang-gnome-ar +Prefer: -bundle-lang-gnome-extras-es -bundle-lang-gnome-extras-de -bundle-lang-gnome-extras-fr +Prefer: -bundle-lang-gnome-extras-pt -bundle-lang-gnome-extras-en -bundle-lang-gnome-extras-el +Prefer: -bundle-lang-gnome-extras-zh -bundle-lang-gnome-extras-ja -bundle-lang-gnome-extras-ru -bundle-lang-gnome-extras-cs +Prefer: -bundle-lang-gnome-extras-ko -bundle-lang-gnome-extras-da -bundle-lang-gnome-extras-nl -bundle-lang-gnome-extras-hu +Prefer: -bundle-lang-gnome-extras-pl -bundle-lang-gnome-extras-fi -bundle-lang-gnome-extras-nb -bundle-lang-gnome-extras-sv +Prefer: -bundle-lang-gnome-extras-it -bundle-lang-gnome-extras-ca -bundle-lang-gnome-extras-ar +Prefer: -bundle-lang-common-es -bundle-lang-common-de -bundle-lang-common-fr +Prefer: -bundle-lang-common-pt -bundle-lang-common-en -bundle-lang-common-el +Prefer: -bundle-lang-common-ja -bundle-lang-common-zh -bundle-lang-common-cs -bundle-lang-common-ru +Prefer: -bundle-lang-common-nl -bundle-lang-common-hu -bundle-lang-common-pl -bundle-lang-common-da +Prefer: -bundle-lang-common-ko -bundle-lang-common-nb -bundle-lang-common-fi -bundle-lang-common-sv +Prefer: -bundle-lang-common-it -bundle-lang-common-ca -bundle-lang-common-ar +Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ +Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g +Prefer: -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links +Prefer: -python-setuptools +Prefer: -kdenetwork3-InstantMessenger +Prefer: -icc-profiles +Prefer: vala +# in doubt, take xerces +Prefer: -crimson +# in doubt, take higher versions +Prefer: -rubygem-rack-1_1 -rubygem-rack-1_2 -rubygem-rack-1_3 -rubygem-tilt-1_1 -rubygem-rack-1_4 +Prefer: -rubygem-method_source-0_7 -rubygem-rails-2_3 -rubygem-activerecord-2_3 +Prefer: -rubygem-json_pure-1_5 +Prefer: -ruby2.4-rubygem-fast_gettext-1_1 -ruby2.4-rubygem-listen-3_0 -ruby2.4-rubygem-nokogiri-1_6 -ruby2.4-rubygem-i18n-0_6 -ruby2.4-rubygem-ruby_dep-1_3 +Prefer: geronimo-servlet-2_4-api +Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi -libhdf5_hl9-openmpi -libhdf5-9-openmpi -libhdf5-10-openmpi -libhdf5_hl10-openmpi -libhdf5-11-openmpi -libhdf5_hl11-openmpi -libhdf5-100-openmpi -libhdf5_hl100-openmpi +# prefer the small systemd for building +Prefer: star +Prefer: xmlgraphics-commons:apache-commons-io +# the -32bit stuff provides things it shouldn't (hopefully temporary) +Prefer: -typelib-1_0-GdkPixbuf-2_0-32bit -typelib-1_0-Pango-1_0-32bit -glib2-devel-32bit +Prefer: -typelib-1_0-GdkPixbuf-2_0-64bit -typelib-1_0-Pango-1_0-64bit -glib2-devel-64bit +Prefer: postgresql postgresql-server postgresql-devel +Prefer: -unzip-rcc +Prefer: -primus -primus-32bit +Prefer: -staging-build-key +Prefer: -sssd-wbclient +Prefer: -clutter-gst-devel +Prefer: -opencv-qt5-devel +# ffmpeg and its fork libav both provide libswscale; prefer the 'original' ffmpeg +Prefer: -libswscale-libav-devel -libavformat-libav-devel -libavresample-libav-devel -libavcodec-libav-devel -libavdevice-libav-devel -libavfilter-libav-devel -libpostproc-libav-devel -libavutil-libav-devel +Prefer: -ffmpeg2-devel -python-configparser2 +# as long as kactivities4 exists and is provided +Prefer: kactivities5 +# oxygen5-icon-theme osboletes oxygen-icon-theme +Prefer: oxygen5-icon-theme +Prefer: npm6 + +# kernel bug (coolo) +Prefer: kernel-default-devel + +Prefer: wxWidgets-3_0-devel +Prefer: libopenssl-devel + +Prefer: -NX -xaw3dd -db43 +Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis +Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit +Prefer: libffi-devel +Prefer: libatomic1 libcilkrts5 libitm1 liblsan0 libtsan0 libubsan0 +Prefer: libatomic1-32bit libcilkrts5-32bit libitm1-32bit libubsan0-32bit +Prefer: libatomic1-64bit libcilkrts5-64bit libitm1-64bit libubsan0-64bit +Prefer: libgcc_s1-x86 libgcj_bc1 +Prefer: libgomp1 libgomp1-32bit libgomp1-64bit +Prefer: libmudflap4 libmudflap4-32bit libmudflap4-64bit +Prefer: libobjc4 libgfortran3 libquadmath0 +Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini -libiso9660-7-mini -libcdio10-mini -libcdio12-mini +Prefer: -libcdio-mini -faac-mini -libcdio-mini-devel +Prefer: -seamonkey +Prefer: -libdb-4_4-devel -libdb-4_5-devel -libevoldap-2_4-2 +Prefer: libopenal0-soft openal-soft -lsb-buildenv +Prefer: -libevent +Prefer: gnu-crypto libusb-compat-devel +Prefer: libusb-0_1-4 +Prefer: libreoffice:xerces-j2 +Prefer: k3b:libdvdread4 +Prefer: glibc-devel +Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 +Prefer: NetworkManager:dhcp-client +Prefer: kdebase3-SuSE:kdebase3 +Prefer: pcre-tools +Prefer: libpopt0 makeinfo +Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 +Prefer: libgnome-keyring-devel +Prefer: gnome-keyring-32bit +Prefer: linux-glibc-devel +Prefer: squid sysvinit +Prefer: libpng16-compat-devel +Prefer: -python3 -python3-gobject-devel -python3-gobject2-devel -x11-video-fglrxG02 -libpng12-0 +Prefer: python3-docutils +Prefer: perl-Mail-SPF:perl-Error libldb0 -audit-libs mysql-community-server mysql-community-server-client +#needed because new xml-commons package +Prefer: xml-commons-resolver12 xml-commons-jaxp-1.3-apis +Prefer: xmlgraphics-fop:xerces-j2 +Prefer: cogl-devel +Prefer: -perl-XML-SAX perl-Test-YAML -perl-Pod-Usage +Prefer: libpsm2-compat +# choice p11-kit-nss-trust +Prefer: mozilla-nss-certs +# amarok dependency resolution +Prefer: phonon-backend-gstreamer +# replacing mkinitrd +Prefer: dracut +# replacing module-init-tools +Prefer: kmod-compat +# Temporary +Prefer: oxygen5-cursors +# Temporary +Prefer: -perl-App-cpanminus +# libmediaart is prepared for a larger update; for now favor mediaart-1.0 +Prefer: -typelib-1_0-MediaArt-2_0 +Prefer: -typelib-1_0-Gtk-2_0 -typelib-1_0-Gtk-4_0 +Prefer: -python-atspi +Prefer: gettext-its-gtk3 gtk3-schema +# for pkgconfig(ijs) and no one actually rely on ghostscript-mini-devel in Factory +Prefer: ghostscript-devel +# for pkgconfig(libotf) libotf-devel and libotf-devel-32bit both provides it +Prefer: libotf-devel + +Ignore: installation-images-openSUSE:cracklib-dict-full +Ignore: systemd-sysvinit:systemd +Ignore: openSUSE-release:openSUSE-release-ftp,openSUSE-release-dvd5,openSUSE-release-biarch,openSUSE-release-livecdkde,openSUSE-release-livecdgnome +Ignore: cracklib:cracklib-dict +Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,distribution-release,udev +Ignore: sysvinit:mingetty +Ignore: gettext-tools:libgcj,libstdc++-devel,libgcj41,libstdc++41-devel,libgcj42,libstdc++42-devel +Ignore: libgcj43,libstdc++43-devel +Ignore: libgcj44,libstdc++44-devel +Ignore: libgcj45,libstdc++45-devel +Ignore: libgcj46,libstdc++46-devel +Ignore: libgcj47,libstdc++47-devel +Ignore: librtas:util-linux +Ignore: pwdutils:openslp +Ignore: rpm:suse-build-key,build-key +Ignore: cloud-init:cloud-init-config +# python-pyudev requires libudev1 in normal situations +Ignore: python-pyudev:libudev1 +Ignore: python-SPARQLWrapper:python-rdflib +Ignore: python3-SPARQLWrapper:python3-rdflib +Ignore: bind-utils:bind-libs +Ignore: portmap:syslogd +Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng +Ignore: xorg-x11-server:xorg-x11-driver-input,xorg-x11-driver-video +Ignore: apache2:logrotate +Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis +Ignore: kdelibs3:alsa,arts,OpenEXR,aspell,cups-libs,mDNSResponder-lib,krb5,libjasper +Ignore: kdelibs3-devel:libvorbis-devel +Ignore: kdebase3:kdebase3-ksysguardd,OpenEXR,dbus-1,dbus-1-qt,hal,powersave,openslp,libusb +Ignore: kdebase3-SuSE:release-notes +Ignore: jack:alsa,libsndfile +Ignore: libxml2-devel:readline-devel +Ignore: gnome-vfs2:gnome-mime-data,desktop-file-utils,cdparanoia,dbus-1,dbus-1-glib,hal,libsmbclient,fam,file_alteration +Ignore: libgda:file_alteration +Ignore: gnutls:lzo,libopencdk +Ignore: gnutls-devel:lzo-devel,libopencdk-devel +Ignore: pango:cairo,glitz,libpixman,libpng +Ignore: pango-devel:cairo-devel +Ignore: cairo-devel:libpixman-devel +Ignore: libgnomeprint:libgnomecups +Ignore: libgnomeprintui:libgnomecups +Ignore: orbit2-devel:indent +Ignore: qt3:libmng +Ignore: qt-sql:qt_database_plugin +Ignore: libgnomecanvas-devel:glib-devel +Ignore: libgnomeui:gnome-icon-theme,shared-mime-info +Ignore: scrollkeeper:docbook_4 +Ignore: gnome-desktop:libgnomesu,startup-notification +Ignore: python-devel:python-tk +Ignore: libgtk-3-0:adwaita-icon-theme +Ignore: libgtk-3-0:gdk-pixbuf-loader-rsvg +Ignore: samba-libs:krb5 +Ignore: libbonoboui:gnome-desktop +Ignore: libxfce4ui-1-0:exo-tools +Ignore: docbook_4:iso_ent,xmlcharent +Ignore: control-center2:nautilus,evolution-data-server,gnome-menus,gstreamer-plugins,gstreamer,metacity,mozilla-nspr,mozilla,libxklavier,gnome-desktop,startup-notification +Ignore: docbook-xsl-stylesheets:xmlcharent +Ignore: liby2util-devel:libstdc++-devel,openssl-devel +Ignore: yast2:yast2-ncurses,yast2_theme,perl-Config-Crontab,yast2-xml,SuSEfirewall2 +Ignore: yast2-core:netcat,hwinfo,wireless-tools,sysfsutils +Ignore: yast2-core-devel:libxcrypt-devel,hwinfo-devel,blocxx-devel,sysfsutils,libstdc++-devel +Ignore: yast2-packagemanager-devel:rpm-devel,curl-devel,openssl-devel +Ignore: yast2-devtools:libxslt +Ignore: yast2-iscsi-lio-server:lio-utils +Ignore: yast2-installation:yast2-update,yast2-mouse,yast2-country,yast2-bootloader,yast2-packager,yast2-network,yast2-online-update,yast2-users,release-notes,autoyast2-installation +Ignore: yast2-bootloader:bootloader-theme +Ignore: yast2-packager:yast2-x11,libyui_pkg +Ignore: autoyast2:yast2-schema +# not during build +Ignore: yui_backend +Ignore: yast2-x11:sax2-libsax-perl +Ignore: yast2-network:yast2-inetd +Ignore: openslp-devel:openssl-devel +Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,ghostscript-x11,xaw3d,gd,dialog,ed +Ignore: texlive-bin:ghostscript-x11 +Ignore: texlive-bin-omega:ghostscript-x11 +Ignore: yast2-country:yast2-trans-stats +Ignore: tpb:tpctl-kmp +Ignore: tpctl:tpctl-kmp +Ignore: zaptel:zaptel-kmp +Ignore: mkinitrd:pciutils +Ignore: pciutils:pciutils-ids +Ignore: postfix:iproute2 +Ignore: aaa_base:systemd +Ignore: gpm:systemd +Ignore: openssh:systemd +Ignore: cronie:systemd +Ignore: systemd:kbd +Ignore: systemd:kmod +Ignore: systemd:systemd-presets-branding +Ignore: systemd:dbus-1 +Ignore: systemd:pam-config +Ignore: systemd:udev +Ignore: pesign:systemd +Ignore: logrotate:cron +Ignore: texlive-filesystem:cron +Ignore: xinit:xterm +Ignore: xdm:xterm +Ignore: gnome-control-center:gnome-themes-accessibility + + +Ignore: man:groff-full +Ignore: git-core:rsync +Ignore: apache2:systemd +Ignore: icewm-lite:icewm +Ignore: cluster-glue:sudo +Ignore: libgcc:glibc-32bit +Ignore: libgcc41:glibc-32bit +Ignore: libgcc42:glibc-32bit +Ignore: libgcc43:glibc-32bit +Ignore: libgcc44:glibc-32bit +Ignore: libgcc45:glibc-32bit +Ignore: libgcc46:glibc-32bit +Ignore: libgcc47:glibc-32bit +Ignore: libstdc++:glibc-32bit +Ignore: libstdc41++:glibc-32bit +Ignore: libstdc42++:glibc-32bit +Ignore: libstdc43++:glibc-32bit +Ignore: libstdc44++:glibc-32bit +Ignore: libstdc45++:glibc-32bit +Ignore: libstdc46++:glibc-32bit +Ignore: libstdc47++:glibc-32bit +Ignore: ncurses-32bit + +Ignore: susehelp:susehelp_lang,suse_help_viewer +Ignore: mailx:smtp_daemon +Ignore: cron:smtp_daemon +Ignore: hotplug:syslog +Ignore: pcmcia:syslog +Ignore: openct:syslog +Ignore: postfix:sysvinit(syslog) +Ignore: cups:sysvinit(syslog) +Ignore: jython:servlet +Ignore: ispell:ispell_dictionary,ispell_english_dictionary +Ignore: aspell:aspel_dictionary,aspell_dictionary +Ignore: smartlink-softmodem:kernel,kernel-nongpl +Ignore: libreoffice-de:myspell-german-dictionary +Ignore: libreoffice:libreoffice-i18n +Ignore: libreoffice:libreoffice-icon-themes +Ignore: mediawiki:php-session,php-gettext,php-zlib,php-mysql,mod_php_any +Ignore: squirrelmail:mod_php_any,php-session,php-gettext,php-iconv,php-mbstring,php-openssl +Ignore: perl-Log-Log4perl:rrdtool + +Ignore: simias:mono(log4net) +Ignore: horde:mod_php_any,php-gettext,php-mcrypt,php-imap,php-pear-log,php-pear,php-session,php + +Ignore: xerces-j2:xml-commons-apis,xml-commons-resolver +Ignore: xdg-menu:desktop-data +Ignore: nessus-libraries:nessus-core +Ignore: evolution:yelp +Ignore: e17:e17-branding e17:e17-theme + +Ignore: mono-tools:mono(gconf-sharp),mono(glade-sharp),mono(gnome-sharp),mono(gtkhtml-sharp),mono(atk-sharp),mono(gdk-sharp),mono(glib-sharp),mono(gtk-sharp),mono(pango-sharp) +Ignore: gecko-sharp2:mono(glib-sharp),mono(gtk-sharp) + +Ignore: vcdimager:libcdio.so.6,libcdio.so.6(CDIO_6),libiso9660.so.4,libiso9660.so.4(ISO9660_4) +Ignore: libcdio:libcddb.so.2 + +Ignore: coreutils:coreutils-lang +Ignore: cpio:cpio-lang +Ignore: glib2:glib2-lang +Ignore: gtk2:gtk2-lang +Ignore: gtk:gtk-lang +Ignore: atk:atk-lang +Ignore: MozillaThunderbird:pinentry-dialog +Ignore: seamonkey:pinentry-dialog +Ignore: pinentry:pinentry-dialog +Ignore: gpg2:gpg2-lang +Ignore: util-linux:util-linux-lang +Ignore: suseRegister:distribution-release +Ignore: compiz:compiz-decorator +Ignore: icecream:gcc-c++ +Ignore: no +Ignore: package +Ignore: provides +Ignore: j9vm/libjvm.so()(64bit) +Ignore: kdepim3:suse_help_viewer +Ignore: kdebase3-SuSE:kdebase3-SuSE-branding +Ignore: kio_sysinfo:kdebase3-SuSE-branding +Ignore: gnome-menus:gnome-menus-branding +Ignore: epiphany:epiphany-branding +Ignore: gnome-control-center:gnome-control-center-branding +Ignore: phonon:phonon-backend +Ignore: openwbem-devel +Ignore: MozillaFirefox:MozillaFirefox-branding +Ignore: yast2:yast2-branding +Ignore: plymouth:plymouth-branding +Ignore: plymouth:suspend +Ignore: yast2-qt:yast2-branding +Ignore: yast2-theme-SLE:yast2-branding +Ignore: yast2-registration:yast2-registration-branding +Ignore: compiz:compiz-branding +Ignore: texlive:perl-Tk texlive-bin:perl-Tk +Ignore: xfce4-desktop:xfce4-desktop-branding +Ignore: xfce4-panel:xfce4-panel-branding +Ignore: xfce4-session:xfce4-session-branding +Ignore: kdebase4-runtime:kdebase4-runtime-branding +Ignore: kwin:kdebase4-workspace-branding +Ignore: transmission-common:transmission-ui +Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd +Ignore: mkinitrd:sbin_init +Ignore: opensc:pinentry +Ignore: gpg2:pinentry +Ignore: NetworkManager:dhcp +Ignore: NetworkManager:iproute2 +# sysconfig requires it at runtime, not buildtime +Ignore: sysconfig:dbus-1 +Ignore: sysconfig:procps +Ignore: sysconfig:iproute2 +Ignore: sysconfig-network:iproute2 +Ignore: sysconfig:tunctl +Ignore: sysconfig:sysvinit(network) +# no build dependencies +Ignore: libksuseinstall1:yast2-packager +Ignore: libksuseinstall1:zypper +Ignore: syslog-service:logrotate +Ignore: libglue-devel:cluster-glue +Ignore: libqca2:gpg2 +Ignore: NetworkManager:wpa_supplicant +Ignore: NetworkManager:dhcp-client +Ignore: openSUSE-release:product_flavor(openSUSE) +Ignore: libgio-2_0-0:dbus-1-x11 +Ignore: weather-wallpaper:inkscape +Ignore: libgamin-1-0:gamin-server +Ignore: libfam0-gamin:gamin-server +Ignore: python3:python3-pip +Ignore: avahi:sysvinit(network) +Ignore: cluster-glue:sysvinit(network) +Ignore: dracut:systemd-sysvinit + +Macros: +# RUBY - UNVERSIONED STUFF +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# +# if you change any macros here you have to update the copy in the +# prjconf aswell. +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# +%rubygem() %{expand:%%{rubygems%rb_build_versions STOP %*}} +%rubygemsSTOP() %nil +%rubygemsxSTOP() %{expand:%%rubygemsxxSTOP -a %*} +%rubygemsxxSTOP(a:) %{-a*}) %* + +%rubySTOP() %nil +%rubyxSTOP() %* + +%ruby() %{expand:%%{ruby%rb_build_versions STOP %*}} + +%rubydevel() %{expand:%%{rubydevel%rb_build_versions STOP %*}} + +%rubydevelSTOP() %nil +%rubydevelxSTOP() %* +# + +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# +# if you change any macros here you have to update the copy in +# ruby2.4 aswell. +# +# IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT +# +%rubygemsruby24() rubygem(ruby:2.4.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} +%rubygemsxruby24() %{expand:%%{rubygemsx%*}} + +%rubyruby24() ruby2.4 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} +%rubyxruby24() %{expand:%%{rubyx%*}} + +%rubydevelruby24() ruby2.4-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} +%rubydevelxruby24() %{expand:%%{rubydevelx%*}} + +%_with_ruby24 1 + +%rb_default_ruby ruby24 +%rb_default_ruby_suffix ruby2.4 +%rb_default_ruby_abi ruby:2.4.0 + +%rb_build_ruby_abis ruby:2.4.0 +%rb_build_versions ruby24 +:Macros + +%define _with_ruby24 1 + +%define rb_default_ruby ruby24 +%define rb_default_ruby_suffix ruby2.4 +%define rb_default_ruby_abi ruby:2.4.0 + +%define rb_build_ruby_abis ruby:2.4.0 +%define rb_build_versions ruby24 + +Prefer: -ruby-stdlib +Prefer: %{rb_default_ruby_suffix}-rubygem-gem2rpm +Prefer: %{rb_default_ruby_suffix}-rubygem-ruby-dbus +Prefer: %{rb_default_ruby_suffix}-rubygem-yard +Prefer: %{rb_default_ruby_suffix}-rubygem-rspec +Prefer: %{rb_default_ruby_suffix}-rubygem-yast-rake +Prefer: %{rb_default_ruby_suffix}-rubygem-cheetah +Prefer: %{rb_default_ruby_suffix}-rubygem-inifile +Prefer: %{rb_default_ruby_suffix}-rubygem-bundler +Prefer: %{rb_default_ruby_suffix}-rubygem-sass +Prefer: %{rb_default_ruby_suffix}-rubygem-cfa + +# END RUBY STUFF + +# PYTHON STUFF + +Macros: +%pythons %{?!skip_python2:python2} %{?!skip_python3:python3} + +# This method for generating python_modules gets too deep to expand at about 5 python flavors. +# It is replaced by a Lua macro in macros.lua +# However, OBS has a much higher expansion depth, so this works fine. +%python_module_iter(a:) %{-a*}-%{args} %{expand:%%{?!python_module_iter_%1:%%{python_module_iter -a%*}}} +%python_module_iter_STOP stop +%python_module() %{expand:%%define args %{**}} %{expand:%%{python_module_iter -a %{pythons} STOP}} + +%add_python() %{expand:%%define pythons %pythons %1} +:Macros + +# END PYTHON STUFF + +Prefer: java-1_8_0-openjdk java-1_8_0-openjdk-devel java-1_8_0-openjdk-javadoc java-1_8_0-openjdk-headless +Substitute: java2-devel-packages java-devel + +%ifarch x86_64 ppc64 s390x sparc64 +Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit +%else + %ifarch ppc sparc sparcv9 +Substitute: glibc-devel-32bit glibc-devel-64bit + %else +Substitute: glibc-devel-32bit + %endif +%endif + +%ifarch %ix86 +Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-debug kernel-xen +%endif +%ifarch ia64 +Substitute: kernel-binary-packages kernel-default kernel-debug +%endif +%ifarch x86_64 +Substitute: kernel-binary-packages kernel-default kernel-smp kernel-xen +%endif +%ifarch ppc +Substitute: kernel-binary-packages kernel-default kernel-ppc64 kernel-ps3 +%endif +%ifarch ppc64 +Substitute: kernel-binary-packages kernel-default kernel-ppc64 +%endif +%ifarch s390 +Substitute: kernel-binary-packages kernel-s390 +%endif +%ifarch s390x +Substitute: kernel-binary-packages kernel-default +%endif + +Optflags: i586 -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches +# no longer needed according to Richard Biener +# Optflags: i686 -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches -fstack-protector +Optflags: x86_64 -fmessage-length=0 -grecord-gcc-switches +Optflags: ppc -fmessage-length=0 -grecord-gcc-switches +Optflags: ppc64 -fmessage-length=0 -grecord-gcc-switches +Optflags: ia64 -fmessage-length=0 -grecord-gcc-switches +Optflags: s390 -fmessage-length=0 -grecord-gcc-switches +Optflags: s390x -fmessage-length=0 -grecord-gcc-switches +Optflags: armv7l -fmessage-length=0 -grecord-gcc-switches +Optflags: armv7hl -fmessage-length=0 -grecord-gcc-switches +Optflags: armv6l -fmessage-length=0 -grecord-gcc-switches +Optflags: armv6hl -fmessage-length=0 -grecord-gcc-switches +Optflags: aarch64 -fmessage-length=0 -grecord-gcc-switches +Optflags: ppc64le -fmessage-length=0 -grecord-gcc-switches +# need mcpu=ultrasparc to complete sparcv8plus to sparcv9 (adds, for example, atomic ops) +Optflags: sparcv9 -fmessage-length=0 -grecord-gcc-switches -mcpu=ultrasparc +Optflags: sparc64 -fmessage-length=0 -grecord-gcc-switches -mcpu=ultrasparc +%ifarch sparcv9 +Target: sparcv9 +%endif +%ifarch armv6l armv6hl +Target: armv6hl-suse-linux +%endif +%ifarch armv7l armv7hl +Target: armv7hl-suse-linux +%endif + + +#Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables +Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables + +%define suse_version 1500 +%define sle_version 150000 + +%define is_opensuse 0 + +%define is_susecaasp 1 +%define is_susesap 1 + +Macros: +%suse_version 1500 +%sle_version 150000 +%is_susecaasp 1 +%is_susesap 1 +%is_opensuse 0 + +%insserv_prereq insserv sed +%fillup_prereq fillup coreutils grep diffutils +%suseconfig_fonts_prereq perl aaa_base +%install_info_prereq info +%kernel_module_package_buildreq kmod-compat kernel-syms +%kernel_module_package_buildreqs kmod-compat kernel-syms + +%sles_version 0 +%do_profiling 1 +%_vendor suse + +# Reproducible builds +%source_date_epoch_from_changelog Y + +# define which gcc package builds the system libraries +%product_libs_gcc_ver 7 +# The following shlibs have latest versions built from GCC 6 sources +%product_libs_gcc_ver_libasan3 6 +%product_libs_gcc_ver_libgo9 6 +%product_libs_gcc_ver_libgfortran3 6 +# reminded by richi 2017 4/3 +%product_libs_gcc_ver_libgcj_bc1 6 +# The following shlibs have been introduced with GCC 7 +%product_libs_gcc_ver_libmpxwrappers2 7 +%product_libs_gcc_ver_libmpx2 7 +%product_libs_gcc_ver_libasan4 7 +%product_libs_gcc_ver_libgo11 7 +%product_libs_gcc_ver_libgfortran4 7 +%gcc_version 7 + +%ext_info .gz +%ext_man .gz + +%info_add(:-:) test -x /sbin/install-info -a -f %{?2}%{?!2:%{_infodir}}/%{1}%ext_info && /sbin/install-info --info-dir=%{?2}%{?!2:%{_infodir}} %{?2}%{?!2:%{_infodir}}/%{1}%ext_info \ +%{nil} + +%info_del(:-:) test -x /sbin/install-info -a ! -f %{?2}%{?!2:%{_infodir}}/%{1}%ext_info && /sbin/install-info --quiet --delete --info-dir=%{?2}%{?!2:%{_infodir}} %{?2}%{?!2:%{_infodir}}/%{1}%ext_info \ +%{nil} +:Macros + +%define sle_version 150100 + +Macros: +%sle_version 150100 +:Macros + +Prefer: libyui-ncurses9 +Prefer: libyui-ncurses-pkg9 libyui-qt9 libyui-qt-graph9 libyui-qt-pkg9 +Prefer: samba-libs-python3 + +######### JAVA +# First we need to de-prefer the java versions prefered in the SLE-15:GA prj Config: +Prefer: -java-10-openjdk -java-10-openjdk-devel -java-10-openjdk-javadoc -java-10-openjdk-headless +Prefer: -java-1_8_0-openjdk -java-1_8_0-openjdk-devel -java-1_8_0-openjdk-javadoc -java-1_8_0-openjdk-headless +Prefer: -java-1_7_0-openjdk -java-1_7_0-openjdk-devel -java-1_7_0-openjdk-javadoc -java-1_7_0-openjdk-headless + +# Now we set the prefered Java version, but need fallbacks for some packages: +Prefer: java-11-openjdk java-11-openjdk-devel java-11-openjdk-javadoc java-11-openjdk-headless + +# 8 before 10 +Prefer: java-1_8_0-openjdk java-1_8_0-openjdk-devel java-1_8_0-openjdk-javadoc java-1_8_0-openjdk-headless +Prefer: java-10-openjdk java-10-openjdk-devel java-10-openjdk-javadoc java-10-openjdk-headless +Prefer: java-9-openjdk java-9-openjdk-devel java-9-openjdk-javadoc java-9-openjdk-headless +# don't use that - fstrba +Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel java-1_7_0-openjdk-javadoc java-1_7_0-openjdk-headless + +######### end of JAVA diff -Nru obs-build-20180831/create_container_package_list obs-build-20190710/create_container_package_list --- obs-build-20180831/create_container_package_list 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/create_container_package_list 2019-09-01 00:25:19.000000000 +0000 @@ -0,0 +1,28 @@ +#!/bin/bash + +container="$1" + +if test -z "$container" ; then + echo "usage: create_container_package_list " + exit 1 +fi +if ! test -s "$container" ; then + echo "no such container: $container" >&2 + exit 1 +fi + +tmpdir=$(mktemp -d) +trap "rm -rf $tmpdir" EXIT + +case "$container" in + *.tar) cat < "$container" > $tmpdir/cont ;; + *.tar.gz) gunzip < "$container" > $tmpdir/cont ;; + *.tar.xz) xzdec < "$container" > $tmpdir/cont ;; + *) echo "unsuppored container name $container" >&2 ; exit 1 ;; +esac + +skopeo copy docker-archive:$tmpdir/cont oci:$tmpdir/image:latest >/dev/null +rm -f $tmpdir/cont +umoci unpack --image $tmpdir/image:latest $tmpdir/unpack >/dev/null +chroot $tmpdir/unpack/rootfs rpm -qa --qf '[%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|%{DISTURL}\n]' + diff -Nru obs-build-20180831/createdebdeps obs-build-20190710/createdebdeps --- obs-build-20180831/createdebdeps 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/createdebdeps 2019-09-01 00:25:19.000000000 +0000 @@ -34,6 +34,13 @@ Getopt::Long::Configure("no_ignore_case"); +sub urldecode { + my ($str, $iscgi) = @_; + $str =~ tr/+/ / if $iscgi; + $str =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/sge; + return $str; +} + # # supported urls # @@ -62,7 +69,26 @@ my @components; my $baseurl = $url; - if ($url =~ /^(.*\/)\.(\/.*)?$/) { + if ($url =~ /\?/) { + my ($base, $query) = split(/\?/, $url, 2); + if ("&$query" =~ /\&dist=/) { + my $dist; + for my $querypart (split('&', $query)) { + my ($k, $v) = split('=', $querypart, 2); + $k = urldecode($k, 1); + $v = urldecode($v, 1); + $dist = $v if $k eq 'dist'; + push @components, split(/[,+]/, $v) if $k eq 'component'; + } + $baseurl = $base; + $baseurl .= '/' unless $baseurl =~ /\/$/; + $url = "${baseurl}dists/${dist}/"; + push @components, 'main' unless @components; + } + } + if (@components) { + ; # all done above + } elsif ($url =~ /^(.*\/)\.(\/.*)?$/) { # flat repo $baseurl = $1; @components = ('.'); diff -Nru obs-build-20180831/debian/changelog obs-build-20190710/debian/changelog --- obs-build-20180831/debian/changelog 2020-01-14 21:16:15.000000000 +0000 +++ obs-build-20190710/debian/changelog 2020-08-06 08:51:49.000000000 +0000 @@ -1,8 +1,23 @@ -obs-build (20180831-3ubuntu1) focal; urgency=medium +obs-build (20190710-1) unstable; urgency=medium - * Use python2 instead of python. + [ Héctor Orón Martínez ] + * New usptream release. - -- Matthias Klose Tue, 14 Jan 2020 22:16:15 +0100 + [ Andrej Shadura ] + * Use Python 3 with the openstack console. + * Add the missing python3-websocket dependency. + + -- Andrej Shadura Thu, 06 Aug 2020 10:51:49 +0200 + +obs-build (20180831-4) unstable; urgency=medium + + [ Matthias Klose ] + * Use python2 instead of python (Closes: #966765). + + [ Andrej Shadura ] + * Update the co-maintainers list. + + -- Andrej Shadura Thu, 06 Aug 2020 10:24:20 +0200 obs-build (20180831-3) unstable; urgency=medium diff -Nru obs-build-20180831/debian/control obs-build-20190710/debian/control --- obs-build-20180831/debian/control 2020-01-14 21:16:15.000000000 +0000 +++ obs-build-20190710/debian/control 2020-08-06 08:51:49.000000000 +0000 @@ -2,10 +2,10 @@ Section: devel Priority: optional Maintainer: Héctor Orón Martínez -Uploaders: Dimitri John Ledkov , +Uploaders: Andrej Shadura , Andrew Lee (李健秋) Build-Depends: debhelper (>= 9), - dh-python, python-all, + dh-python, python3-all, python3-websocket, libtimedate-perl Standards-Version: 4.1.3 Vcs-Git: https://salsa.debian.org/debian/obs-build.git @@ -15,7 +15,7 @@ Architecture: all Depends: ${misc:Depends}, ${perl:Depends}, rpm, debootstrap, sudo, libarchive-tools, - ${python:Depends}, python2 + ${python3:Depends}, python3, python3-websocket Recommends: rpm2cpio, osc, libcrypt-ssleay-perl, e2fsprogs, xzdec Suggests: xfsprogs, btrfs-progs Description: scripts for building RPM/debian packages for multiple distributions diff -Nru obs-build-20180831/debian/gbp.conf obs-build-20190710/debian/gbp.conf --- obs-build-20180831/debian/gbp.conf 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/gbp.conf 2020-08-06 08:51:49.000000000 +0000 @@ -1,5 +1,5 @@ [DEFAULT] -debian-branch = debian/master +debian-branch = debian/unstable debian-tag = debian/%(version)s pristine-tar = True diff -Nru obs-build-20180831/debian/patches/0001-Use-obs-build-in-locations-and-executable-names.patch obs-build-20190710/debian/patches/0001-Use-obs-build-in-locations-and-executable-names.patch --- obs-build-20180831/debian/patches/0001-Use-obs-build-in-locations-and-executable-names.patch 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/0001-Use-obs-build-in-locations-and-executable-names.patch 2020-08-06 08:51:49.000000000 +0000 @@ -16,10 +16,10 @@ build | 6 +++--- 2 files changed, 10 insertions(+), 9 deletions(-) -diff --git a/Makefile b/Makefile -index 3d0c608..41f73f3 100644 ---- a/Makefile -+++ b/Makefile +Index: obs-build/Makefile +=================================================================== +--- obs-build.orig/Makefile ++++ obs-build/Makefile @@ -1,7 +1,7 @@ VERSION=0.1 SCM=$(shell if test -d .svn; then echo svn; elif test -d .git; then echo git; fi) @@ -29,28 +29,27 @@ INITVM_ARCH=$(shell bash -c '. common_functions ; build_host_arch; echo $$BUILD_INITVM_ARCH') -@@ -85,11 +85,12 @@ install: - install -m644 *.pm lxc.conf $(DESTDIR)$(pkglibdir) +@@ -90,11 +90,11 @@ install: + install -m644 *.pm $(DESTDIR)$(pkglibdir) install -m644 configs/* $(DESTDIR)$(pkglibdir)/configs install -m644 baselibs_configs/* $(DESTDIR)$(pkglibdir)/baselibs_configs - install -m644 build.1 $(DESTDIR)$(man1dir) -- install -m644 vc.1 $(DESTDIR)$(man1dir) +- install -m644 buildvc.1 $(DESTDIR)$(man1dir) - install -m644 unrpm.1 $(DESTDIR)$(man1dir) - ln -sf $(pkglibdir)/build $(DESTDIR)$(bindir)/build - ln -sf $(pkglibdir)/vc $(DESTDIR)$(bindir)/buildvc + install -d $(DESTDIR)$(man1dir) + install -T -m644 build.1 $(DESTDIR)$(man1dir)/obs-build.1 -+ install -T -m644 vc.1 $(DESTDIR)$(man1dir)/obs-buildvc.1 + install -T -m644 unrpm.1 $(DESTDIR)$(man1dir)/unrpm.1 + ln -sf $(pkglibdir)/build $(DESTDIR)$(bindir)/obs-build + ln -sf $(pkglibdir)/vc $(DESTDIR)$(bindir)/obs-buildvc ln -sf $(pkglibdir)/unrpm $(DESTDIR)$(bindir)/unrpm ln -s baselibs_configs/baselibs_global.conf $(DESTDIR)$(pkglibdir)/baselibs_global.conf ln -s baselibs_configs/baselibs_global-deb.conf $(DESTDIR)$(pkglibdir)/baselibs_global-deb.conf -diff --git a/build b/build -index a2b5f3b..5455631 100755 ---- a/build -+++ b/build +Index: obs-build/build +=================================================================== +--- obs-build.orig/build ++++ obs-build/build @@ -36,8 +36,8 @@ BUILD_CONF=/etc/build.conf test -e "$BUILD_CONF" && BUILD_DIR=/usr/lib/build @@ -62,7 +61,7 @@ test -z "$CONFIG_DIR" && CONFIG_DIR="$BUILD_DIR/configs" export BUILD_ARCH BUILD_HOST_ARCH BUILD_ROOT BUILD_RPMS BUILD_DIR BUILD_DEBUG -@@ -107,7 +107,7 @@ CCACHE= +@@ -108,7 +108,7 @@ CCACHE= DLNOSIGNATURE= BUILD_FLAVOR= OBS_PACKAGE= diff -Nru obs-build-20180831/debian/patches/0003-HACK-make-glibc-build.patch obs-build-20190710/debian/patches/0003-HACK-make-glibc-build.patch --- obs-build-20180831/debian/patches/0003-HACK-make-glibc-build.patch 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/0003-HACK-make-glibc-build.patch 2020-08-06 08:51:49.000000000 +0000 @@ -17,11 +17,11 @@ build-recipe-debootstrap | 5 +++++ 1 file changed, 5 insertions(+) -diff --git a/build-recipe-debootstrap b/build-recipe-debootstrap -index 9220952..2404fdc 100644 ---- a/build-recipe-debootstrap -+++ b/build-recipe-debootstrap -@@ -68,6 +68,11 @@ recipe_build_debootstrap() { +Index: obs-build/build-recipe-debootstrap +=================================================================== +--- obs-build.orig/build-recipe-debootstrap ++++ obs-build/build-recipe-debootstrap +@@ -71,6 +71,11 @@ recipe_build_debootstrap() { cp $BUILD_ROOT/etc/hosts $BUILD_ROOT/$myroot/etc/hosts fi diff -Nru obs-build-20180831/debian/patches/0005-dsc-keep-everything.patch obs-build-20190710/debian/patches/0005-dsc-keep-everything.patch --- obs-build-20180831/debian/patches/0005-dsc-keep-everything.patch 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/0005-dsc-keep-everything.patch 2020-08-06 08:51:49.000000000 +0000 @@ -20,11 +20,11 @@ Build.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -diff --git a/Build.pm b/Build.pm -index 59c17a5..8ae21b6 100644 ---- a/Build.pm -+++ b/Build.pm -@@ -563,7 +563,9 @@ sub get_build { +Index: obs-build/Build.pm +=================================================================== +--- obs-build.orig/Build.pm ++++ obs-build/Build.pm +@@ -567,7 +567,9 @@ sub get_build { @directdepsend = grep {!/^-/} splice(@directdepsend, @deps + 1); } my @extra = (@{$config->{'required'}}, @{$config->{'support'}}); diff -Nru obs-build-20180831/debian/patches/build-recipe-dsc-don-t-rebuild-the-source-package.patch obs-build-20190710/debian/patches/build-recipe-dsc-don-t-rebuild-the-source-package.patch --- obs-build-20180831/debian/patches/build-recipe-dsc-don-t-rebuild-the-source-package.patch 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/build-recipe-dsc-don-t-rebuild-the-source-package.patch 2020-08-06 08:51:49.000000000 +0000 @@ -1,4 +1,4 @@ -From: Andrew Shadura +From: Andrej Shadura Date: Mon, 6 Nov 2017 10:22:03 +0100 Subject: build-recipe-dsc: don't rebuild the source package @@ -6,7 +6,7 @@ result in the build suffix being included into the source package, which we'd rather avoid. -Signed-off-by: Andrew Shadura +Signed-off-by: Andrej Shadura Forwarded: https://github.com/openSUSE/obs-build/pull/459 Last-Update: 2018-08-30 --- diff -Nru obs-build-20180831/debian/patches/deb-Install-policy-rc.d-to-prevent-services-from-starting.patch obs-build-20190710/debian/patches/deb-Install-policy-rc.d-to-prevent-services-from-starting.patch --- obs-build-20180831/debian/patches/deb-Install-policy-rc.d-to-prevent-services-from-starting.patch 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/deb-Install-policy-rc.d-to-prevent-services-from-starting.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -From: Dan Nicholson -Date: Thu, 3 Jan 2019 11:31:45 -0600 -Subject: deb: Install policy-rc.d to prevent services from starting - -Per invoke-rc.d(8), a local policy script can be created at -/usr/sbin/policy-rc.d to influence how services are started. When this -script exits with code 101, the requested service is not started. This -is independent of init system and is respected by all maintainer -scripts that comply with debian policy. - -This is how debootstrap prevents services from running in the chroot. On -more recent debian and ubuntu releases where systemd is in use, it will -prevent services from starting by detecting that it's in a chroot, but -this method works independently of the init system. In our case this -fixes builds on Ubuntu Trusty where upstart is init. This change likely -makes the hack to replace /sbin/start with a symlink to /sbin/true -unnecessary. That hack is not comprehensive since it only handles the -start action and not stop, restart, reload, etc. - -Forwarded: https://github.com/openSUSE/obs-build/pull/484 -Applied-upstream: commit:fdb38b34afa8c91eaad37582ab5cedbd06a7817d ---- - build-pkg-deb | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/build-pkg-deb b/build-pkg-deb -index c5959c0..4437149 100644 ---- a/build-pkg-deb -+++ b/build-pkg-deb -@@ -48,6 +48,16 @@ deb_setup() { - :>> $BUILD_ROOT/var/lib/dpkg/available - :>> $BUILD_ROOT/var/log/dpkg.log - :>> $BUILD_ROOT/etc/ld.so.conf -+ -+ # Install a policy so that services are not started. See -+ # https://manpages.debian.org/unstable/init-system-helpers/invoke-rc.d.8.en.html -+ # for details. -+ mkdir -p $BUILD_ROOT/usr/sbin -+ cat > $BUILD_ROOT/usr/sbin/policy-rc.d < "$BUILD_ROOT/$myroot/etc/dpkg/dpkg.cfg.d/force-unsafe-io" +Index: obs-build/build-recipe-debootstrap +=================================================================== +--- obs-build.orig/build-recipe-debootstrap ++++ obs-build/build-recipe-debootstrap +@@ -55,7 +55,7 @@ recipe_build_debootstrap() { + fi set -- chroot $BUILD_ROOT debootstrap --keep-debootstrap-dir --no-check-gpg --variant=buildd --arch="${arch}" --include="$FULL_PKG_LIST" "$dist" "$myroot" file:///.build.binaries - echo "running debootstrap..." diff -Nru obs-build-20180831/debian/patches/deb-Show-version-of-each-package-that-we-preinstall.patch obs-build-20190710/debian/patches/deb-Show-version-of-each-package-that-we-preinstall.patch --- obs-build-20180831/debian/patches/deb-Show-version-of-each-package-that-we-preinstall.patch 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/deb-Show-version-of-each-package-that-we-preinstall.patch 2020-08-06 08:51:49.000000000 +0000 @@ -11,11 +11,11 @@ build-pkg-deb | 1 + 1 file changed, 1 insertion(+) -diff --git a/build-pkg-deb b/build-pkg-deb -index 4437149..3741b55 100644 ---- a/build-pkg-deb -+++ b/build-pkg-deb -@@ -137,6 +137,7 @@ pkg_preinstall_deb() { +Index: obs-build/build-pkg-deb +=================================================================== +--- obs-build.orig/build-pkg-deb ++++ obs-build/build-pkg-deb +@@ -143,6 +143,7 @@ pkg_preinstall_deb() { elif test -f "control.tar.xz" ; then $TAR -C .init_b_cache/scripts/control -J -f control.tar.xz fi diff -Nru obs-build-20180831/debian/patches/Log-the-version-number-during-startup.patch obs-build-20190710/debian/patches/Log-the-version-number-during-startup.patch --- obs-build-20180831/debian/patches/Log-the-version-number-during-startup.patch 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/Log-the-version-number-during-startup.patch 2020-08-06 08:51:49.000000000 +0000 @@ -14,10 +14,10 @@ init_buildsystem | 2 ++ 4 files changed, 17 insertions(+), 1 deletion(-) -diff --git a/Makefile b/Makefile -index 41f73f3..7b2a5c9 100644 ---- a/Makefile -+++ b/Makefile +Index: obs-build/Makefile +=================================================================== +--- obs-build.orig/Makefile ++++ obs-build/Makefile @@ -20,13 +20,22 @@ sysconfdir=/etc DESTDIR= @@ -42,19 +42,19 @@ install -m755 -d \ $(DESTDIR)$(pkglibdir)/configs \ $(DESTDIR)$(pkglibdir)/baselibs_configs \ -@@ -83,6 +92,7 @@ install: +@@ -88,6 +97,7 @@ install: install -m644 build-recipe build-recipe-* $(DESTDIR)$(pkglibdir) install -m644 build-pkg build-pkg-* $(DESTDIR)$(pkglibdir) - install -m644 *.pm lxc.conf $(DESTDIR)$(pkglibdir) + install -m644 *.pm $(DESTDIR)$(pkglibdir) + install -m644 version $(DESTDIR)$(pkglibdir) install -m644 configs/* $(DESTDIR)$(pkglibdir)/configs install -m644 baselibs_configs/* $(DESTDIR)$(pkglibdir)/baselibs_configs install -d $(DESTDIR)$(man1dir) -diff --git a/build b/build -index 3ecf7e8..8e7bb18 100755 ---- a/build -+++ b/build -@@ -121,6 +121,7 @@ umask 022 +Index: obs-build/build +=================================================================== +--- obs-build.orig/build ++++ obs-build/build +@@ -122,6 +122,7 @@ umask 022 echo_help () { cat << EOT @@ -62,7 +62,7 @@ Some comments for build ----------------------- -@@ -1185,6 +1186,7 @@ for RECIPEFILE in "${RECIPEFILES[@]}" ; do +@@ -1210,6 +1211,7 @@ for RECIPEFILE in "${RECIPEFILES[@]}" ; if test -z "$RUNNING_IN_VM" ; then echo echo "$HOST started \"build $RECIPEFILE\" at `date --utc`." @@ -70,10 +70,10 @@ echo test -n "$REASON" && echo "$REASON" echo -diff --git a/common_functions b/common_functions -index 45f970b..e225c38 100755 ---- a/common_functions -+++ b/common_functions +Index: obs-build/common_functions +=================================================================== +--- obs-build.orig/common_functions ++++ obs-build/common_functions @@ -20,6 +20,8 @@ # ################################################################ @@ -83,10 +83,10 @@ build_host_arch() { : ${BUILD_HOST_ARCH:=`uname -m`} # the linux kernel only knows armv7l, armv7hl is a userland definition -diff --git a/init_buildsystem b/init_buildsystem -index 23e1c40..d83296d 100755 ---- a/init_buildsystem -+++ b/init_buildsystem +Index: obs-build/init_buildsystem +=================================================================== +--- obs-build.orig/init_buildsystem ++++ obs-build/init_buildsystem @@ -461,6 +461,8 @@ getcachedir() { done } diff -Nru obs-build-20180831/debian/patches/python3-openstack-console.patch obs-build-20190710/debian/patches/python3-openstack-console.patch --- obs-build-20180831/debian/patches/python3-openstack-console.patch 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/debian/patches/python3-openstack-console.patch 2020-08-06 08:51:49.000000000 +0000 @@ -0,0 +1,15 @@ +From: Andrej Shadura +Date: Thu, 6 Aug 2020 10:48:57 +0200 +Subject: Use Python 3 for the openstack console + +--- a/build-vm-openstack ++++ b/build-vm-openstack +@@ -270,7 +270,7 @@ + sleep 1 + done + +- if ! python $BUILD_DIR/openstack-console "${WS_URL}" ; then ++ if ! python3 $BUILD_DIR/openstack-console "${WS_URL}" ; then + $NOVACLIENT delete $OPENSTACK_BUILD_ID + cleanup_and_exit 3 + else diff -Nru obs-build-20180831/debian/patches/series obs-build-20190710/debian/patches/series --- obs-build-20180831/debian/patches/series 2019-08-31 23:58:03.000000000 +0000 +++ obs-build-20190710/debian/patches/series 2020-08-06 08:51:49.000000000 +0000 @@ -3,10 +3,10 @@ 0005-dsc-keep-everything.patch build-recipe-dsc-don-t-rebuild-the-source-package.patch debootstrap-add-fallback-for-Debian-SID-distro.patch -deb-Install-policy-rc.d-to-prevent-services-from-starting.patch build-recipe-dsc-Move-all-build-results-not-just-.deb-and.patch Log-the-version-number-during-startup.patch debootstrap-Print-the-exact-command-we-re-going-to-run.patch deb-Show-version-of-each-package-that-we-preinstall.patch build-recipe-dsc-List-contents-of-build-results.patch build-recipe-dsc-Show-information-about-the-build-chroot.patch +python3-openstack-console.patch diff -Nru obs-build-20180831/debian/rules obs-build-20190710/debian/rules --- obs-build-20180831/debian/rules 2020-01-14 21:16:10.000000000 +0000 +++ obs-build-20190710/debian/rules 2020-08-06 08:51:49.000000000 +0000 @@ -3,7 +3,7 @@ include /usr/share/dpkg/default.mk %: - dh $@ --with python2 + dh $@ --with python3 override_dh_install: echo "$(DEB_VERSION)" > debian/obs-build/usr/lib/obs-build/version @@ -12,3 +12,7 @@ chmod a-x debian/obs-build/usr/lib/obs-build/build-validate-params # fix script execution chmod a+x debian/obs-build/usr/lib/obs-build/build-vm-openstack + +override_dh_clean: + rm -f version + dh_clean diff -Nru obs-build-20180831/debtransform obs-build-20190710/debtransform --- obs-build-20180831/debtransform 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/debtransform 2019-09-01 00:25:19.000000000 +0000 @@ -462,7 +462,7 @@ if (! -s "$out/${name}_$version.diff") { unlink("$out/${name}_$version.diff"); } else { - system('gzip', '-9', "$out/${name}_$version.diff"); + system('gzip', '-n9', "$out/${name}_$version.diff"); if (-f "$out/${name}_$version.diff.gz") { push @files, addfile("$out/${name}_$version.diff.gz", "MD5"); push @checksums_sha1, addfile("$out/${name}_$version.diff.gz", "SHA1"); diff -Nru obs-build-20180831/dist/build.changes obs-build-20190710/dist/build.changes --- obs-build-20180831/dist/build.changes 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/dist/build.changes 2019-09-01 00:25:19.000000000 +0000 @@ -1,4 +1,81 @@ ------------------------------------------------------------------- +Tue Jul 9 13:33:36 UTC 2019 - Adrian Schröter + +- fail build on preinstall failure +- avoid dependency errors on Fedora 30 +- fixes for simpleimage vm build support +- support zstd decompression with old rpms +- license tag fixes + +------------------------------------------------------------------- +Wed Jun 26 10:41:38 UTC 2019 - Dominique Leuenberger + +- configs/15.5.conf: add libzstd1 to preinstall list: RPM is being + extended to support zstd compression, which results in an + additionaly library being linked in. + +------------------------------------------------------------------- +Tue Jun 4 08:24:31 UTC 2019 - Adrian Schröter + +- configs/15.5.conf: remove brp-extract-appdata from support package +- add "-vv" parameter in case of debbuild + +------------------------------------------------------------------- +Thu Mar 21 09:35:43 UTC 2019 - Adrian Schröter + +- Filter out 'MACRO' from Requires(pre) +- Support createrepo_c's CREATEREPO_CHECKSUMS checksum cache +- Skip unsupported GPG check on ArchLinux +- Support #!BuildRequires dependencies +- Collect more statistics +- Install policy-rc.d to prevent services from starting on Debian + +------------------------------------------------------------------- +Wed Jan 23 14:42:17 UTC 2019 - Adrian Schröter + +- add initial SLE 15 SP1 config (bsc#1122895) + +------------------------------------------------------------------- +Mon Jan 21 12:00:48 UTC 2019 - Adrian Schröter + +- update factory config for libreadline8 switch +- cleanup 15.1 config with OBS specific stuff + * should not be used for plain build usage + * workarounds for kiwi should be fixed in packages + +------------------------------------------------------------------- +Thu Dec 6 15:23:11 UTC 2018 - Adrian Schröter + +- support jumping into KVM debug shells using "--vm-type=kvm --shell" +- adapt to new containerd CLI syntax +- Support a new 'UseOBSRepositories' flag +- lxc 3 support +- power9 fixes +- Generate a .milestone artifact for kiwi product builds +- Support rpm's new '^' separator in version comparison +- Allow to specify extra image repos with +- Rework release handling of containers + +------------------------------------------------------------------- +Mon Nov 26 09:24:17 UTC 2018 - Max Lin + +- Add Leap 15.1 config + +------------------------------------------------------------------- +Mon Oct 22 09:43:20 UTC 2018 - Adrian Schröter + +- require psmisc util for fuser +- Start debian support for kiwi images/containers +- Support building with unordered repositories for kiwi/docker builds +- Write the package list of the base container in kiwi container builds +- Support kiwi's "additionaltags" attribute (added in kiwi 9.15.3) +- Add some substitutes for the extra container tags +- Support "OBS-AddTag" directive to set multiple container tags in kiwi builds +- Archlinux updates +- SLE 12 SP4 config +- Appimage: support source file parsing + +------------------------------------------------------------------- Wed Aug 29 13:57:07 UTC 2018 - Adrian Schröter - Fall back to $mailaddr if $VC_MAILADDR is unset/null @@ -88,7 +165,7 @@ Tue Nov 28 13:33:11 UTC 2017 - adrian@suse.de - Fixed Dockerfile repository parsing -- Improve file name check extractbuild +- Improve file name check extractbuild (CVE-2017-14804, bsc#1069904) - track release number of containers - Define SOURCEURL and PATCHURL macros - Keep preinstalled packages diff -Nru obs-build-20180831/dist/build.spec obs-build-20190710/dist/build.spec --- obs-build-20180831/dist/build.spec 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/dist/build.spec 2019-09-01 00:25:19.000000000 +0000 @@ -1,7 +1,7 @@ # # spec file for package build # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # # needsrootforbuild # needsbinariesforbuild @@ -20,9 +20,9 @@ Name: build Summary: A Script to Build SUSE Linux RPMs -License: GPL-2.0+ and GPL-2.0 +License: GPL-2.0-only OR GPL-3.0-only Group: Development/Tools/Building -Version: 20171122 +Version: 20190709 Release: 0 Source: obs-build-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -33,6 +33,14 @@ Requires: binutils Requires: perl Requires: tar +# needed for fuser +Requires: psmisc +# just to verify existence of packages +BuildRequires: bash +BuildRequires: binutils +BuildRequires: perl +BuildRequires: psmisc +BuildRequires: tar %if 0%{?fedora} Requires: perl-MD5 Requires: perl-TimeDate @@ -53,6 +61,7 @@ Recommends: perl(YAML::LibYAML) Recommends: bsdtar Recommends: qemu-linux-user +Recommends: /usr/bin/qemu-kvm Recommends: /sbin/mkfs.ext3 %endif @@ -182,6 +191,7 @@ %endif %check +for i in build build-* ; do bash -n $i || exit 1 ; done if [ `whoami` != "root" ]; then echo "WARNING: Not building as root, tests did not run!" exit 0 @@ -222,7 +232,7 @@ %config(noreplace) /usr/lib/build/emulator/emulator.sh %{_mandir}/man1/build.1* %{_mandir}/man1/unrpm.1* -%{_mandir}/man1/vc.1* +%{_mandir}/man1/buildvc.1* %if 0%{?suse_version} %exclude /usr/lib/build/initvm.* %endif diff -Nru obs-build-20180831/expanddeps obs-build-20190710/expanddeps --- obs-build-20180831/expanddeps 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/expanddeps 2019-09-01 00:25:19.000000000 +0000 @@ -245,103 +245,41 @@ my $dofileprovides = %{$cf->{'fileprovides'}}; $dofileprovides = 1 if ($binarytype || 'rpm') ne 'rpm'; -for my $pack (keys %packs) { - my $r = {}; - my (@s, $s, @pr, @re, @co, @ob, @rc, @su); - @s = split(' ', $prov{$packs{$pack}} || ''); - while (@s) { - $s = shift @s; - next if !$dofileprovides && $s =~ /^\//; - if ($s =~ /^rpmlib\(/) { - splice(@s, 0, 2); - next; - } - push @pr, $s; - while (@s && $s[0] =~ /^[\(<=>|]/) { - $pr[-1] .= " $s[0] $s[1]"; - $pr[-1] =~ s/ \((.*)\)/ $1/; - $pr[-1] =~ s/(<|>){2}/$1/; - splice(@s, 0, 2); - } - } - @s = split(' ', $req{$packs{$pack}} || ''); - while (@s) { - $s = shift @s; - next if !$dofileprovides && $s =~ /^\//; - if ($s =~ /^rpmlib\(/) { - splice(@s, 0, 2); - next; - } - push @re, $s; - while (@s && $s[0] =~ /^[\(<=>|]/) { - $re[-1] .= " $s[0] $s[1]"; - $re[-1] =~ s/ \((.*)\)/ $1/; - $re[-1] =~ s/(<|>){2}/$1/; - splice(@s, 0, 2); - } - } - @s = split(' ', $con{$packs{$pack}} || ''); - while (@s) { - $s = shift @s; - next if !$dofileprovides && $s =~ /^\//; - push @co, $s; - while (@s && $s[0] =~ /^[\(<=>|]/) { - $co[-1] .= " $s[0] $s[1]"; - $co[-1] =~ s/ \((.*)\)/ $1/; - $co[-1] =~ s/(<|>){2}/$1/; - splice(@s, 0, 2); - } - } - @s = split(' ', $obs{$packs{$pack}} || ''); - while (@s) { - $s = shift @s; - next if !$dofileprovides && $s =~ /^\//; - push @ob, $s; - while (@s && $s[0] =~ /^[\(<=>|]/) { - $ob[-1] .= " $s[0] $s[1]"; - $ob[-1] =~ s/ \((.*)\)/ $1/; - $ob[-1] =~ s/(<|>){2}/$1/; - splice(@s, 0, 2); - } - } - @s = split(' ', $rec{$packs{$pack}} || ''); +sub parsedepline { + return [] unless defined $_[0]; + my @s = split(' ', $_[0]); + my @r; while (@s) { - $s = shift @s; + my $s = shift @s; next if !$dofileprovides && $s =~ /^\//; if ($s =~ /^rpmlib\(/) { splice(@s, 0, 2); next; } - push @rc, $s; - while (@s && $s[0] =~ /^[\(<=>|]/) { - $rc[-1] .= " $s[0] $s[1]"; - $rc[-1] =~ s/ \((.*)\)/ $1/; - $rc[-1] =~ s/(<|>){2}/$1/; - splice(@s, 0, 2); - } - } - @s = split(' ', $sup{$packs{$pack}} || ''); - while (@s) { - $s = shift @s; - next if !$dofileprovides && $s =~ /^\//; - if ($s =~ /^rpmlib\(/) { - splice(@s, 0, 2); + if ($s =~ /^\(/) { + unshift @s, $s; + push @r, Build::Rpm::shiftrich(\@s); next; } - push @su, $s; + push @r, $s; while (@s && $s[0] =~ /^[\(<=>|]/) { - $su[-1] .= " $s[0] $s[1]"; - $su[-1] =~ s/ \((.*)\)/ $1/; - $su[-1] =~ s/(<|>){2}/$1/; + $r[-1] .= " $s[0] $s[1]"; + $r[-1] =~ s/ \((.*)\)/ $1/; + $r[-1] =~ s/(<|>){2}/$1/; splice(@s, 0, 2); } } - $r->{'provides'} = \@pr; - $r->{'requires'} = \@re; - $r->{'conflicts'} = \@co; - $r->{'obsoletes'} = \@ob; - $r->{'recommends'} = \@rc; - $r->{'supplements'} = \@su; + return \@r; +} + +for my $pack (keys %packs) { + my $r = {}; + $r->{'provides'} = parsedepline($prov{$packs{$pack}}); + $r->{'requires'} = parsedepline($req{$packs{$pack}}); + $r->{'conflicts'} = parsedepline($con{$packs{$pack}}); + $r->{'obsoletes'} = parsedepline($obs{$packs{$pack}}); + $r->{'recommends'} = parsedepline($rec{$packs{$pack}}); + $r->{'supplements'} = parsedepline($sup{$packs{$pack}}); $repo{$pack} = $r; } diff -Nru obs-build-20180831/.gitignore obs-build-20190710/.gitignore --- obs-build-20180831/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ obs-build-20190710/.gitignore 2019-09-01 00:25:19.000000000 +0000 @@ -0,0 +1,2 @@ +*.sw? +*~ diff -Nru obs-build-20180831/init_buildsystem obs-build-20190710/init_buildsystem --- obs-build-20180831/init_buildsystem 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/init_buildsystem 2019-09-01 00:25:19.000000000 +0000 @@ -517,6 +517,7 @@ mkdir -p $BUILD_ROOT/dev/pts if test "$UID" = 0 -a -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then mount -n -tproc none "$BUILD_ROOT/proc" + test -e "$BUILD_ROOT/proc/self" || cleanup_and_exit 1 "Could not mount /proc, is this a container with missing capabilities?" mount -n -tdevpts -omode=0620,gid=5 none "$BUILD_ROOT/dev/pts" fi diff -Nru obs-build-20180831/Makefile obs-build-20190710/Makefile --- obs-build-20180831/Makefile 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/Makefile 2019-09-01 00:25:19.000000000 +0000 @@ -70,23 +70,28 @@ signdummy \ unrpm \ telnet_login_wrapper \ - build-validate-params \ - openstack-console \ startdockerd \ dummyhttpserver \ obs-docker-support \ + create_container_package_list \ + call-podman \ + $(DESTDIR)$(pkglibdir) + install -m644 \ + qemu-reg \ + lxc.conf \ + build-validate-params \ + openstack-console \ $(DESTDIR)$(pkglibdir) install -m755 emulator/emulator.sh $(DESTDIR)$(pkglibdir)/emulator/ install -m644 Build/*.pm $(DESTDIR)$(pkglibdir)/Build - install -m644 qemu-reg $(DESTDIR)$(pkglibdir) install -m644 build-vm build-vm-* $(DESTDIR)$(pkglibdir) install -m644 build-recipe build-recipe-* $(DESTDIR)$(pkglibdir) install -m644 build-pkg build-pkg-* $(DESTDIR)$(pkglibdir) - install -m644 *.pm lxc.conf $(DESTDIR)$(pkglibdir) + install -m644 *.pm $(DESTDIR)$(pkglibdir) install -m644 configs/* $(DESTDIR)$(pkglibdir)/configs install -m644 baselibs_configs/* $(DESTDIR)$(pkglibdir)/baselibs_configs install -m644 build.1 $(DESTDIR)$(man1dir) - install -m644 vc.1 $(DESTDIR)$(man1dir) + install -m644 buildvc.1 $(DESTDIR)$(man1dir) install -m644 unrpm.1 $(DESTDIR)$(man1dir) ln -sf $(pkglibdir)/build $(DESTDIR)$(bindir)/build ln -sf $(pkglibdir)/vc $(DESTDIR)$(bindir)/buildvc diff -Nru obs-build-20180831/obs-docker-support obs-build-20190710/obs-docker-support --- obs-build-20180831/obs-docker-support 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/obs-docker-support 2019-09-01 00:25:19.000000000 +0000 @@ -27,6 +27,7 @@ LOCAL_REPOS_D="/etc/repos_obs_dockersupport.d/" LOCAL_APTREPOS_D="/etc/aptrepos_obs_dockersupport.d/" +DATA_DIR= zypper() { cmd= @@ -164,6 +165,8 @@ obs_docker_support() { case "$1" in --install|-i) + data_url=http://localhost:80 + test -n "$DATA_DIR" && data_url="file:$DATA_DIR" test -e /usr/bin/zypper && ln -s obs-docker-support /usr/local/sbin/zypper test -e /usr/bin/yum && ln -s obs-docker-support /usr/local/sbin/yum test -e /usr/bin/dnf && ln -s obs-docker-support /usr/local/sbin/dnf @@ -171,12 +174,12 @@ ln -s obs-docker-support /usr/local/sbin/obs_pkg_mgr if test -e /usr/bin/zypper -o -e /usr/bin/yum -o -e /usr/bin/dnf ; then mkdir -p "$LOCAL_REPOS_D" - cat >$LOCAL_REPOS_D/obs_repository.repo <<'EOF' + cat >$LOCAL_REPOS_D/obs_repository.repo < $LOCAL_APTREPOS_D/obssource + echo "deb $data_url ./" > $LOCAL_APTREPOS_D/obssource 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 diff -Nru obs-build-20180831/openstack-console obs-build-20190710/openstack-console --- obs-build-20180831/openstack-console 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/openstack-console 2019-09-01 00:25:19.000000000 +0000 @@ -1,5 +1,3 @@ -#!/usr/bin/env python - ################################################################ # # Copyright (c) 2017 SUSE Linux Products GmbH diff -Nru obs-build-20180831/startdockerd obs-build-20190710/startdockerd --- obs-build-20180831/startdockerd 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/startdockerd 2019-09-01 00:25:19.000000000 +0000 @@ -29,6 +29,7 @@ KILL= WEBSERVER= WEBSERVER_ONLY= +DOCKERD_EXPERIMANTAL=--experimental while test -n "$1" ; do case "$1" in @@ -41,7 +42,7 @@ shift 2 ;; --webserver-only) - WEBSERVER_ONLY="1" + WEBSERVER_ONLY=1 WEBSERVER="$2" shift 2 ;; @@ -86,7 +87,15 @@ rm -f $BUILD_ROOT/.startdockerd.pids -if test -z "$IS_UNSHARED" -a -z "$WEBSERVER_ONLY" ; then +if test -n "$WEBSERVER_ONLY" ; then + echo "Starting local repository server" + $BUILD_DIR/dummyhttpserver "$BUILD_ROOT" "$WEBSERVER" & + WEBSERVER_PID=$! + echo "$CONTAINERD_PID $DOCKERD_PID $WEBSERVER_PID" > $BUILD_ROOT/.startdockerd.pids + exit 0 +fi + +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" "$@" @@ -143,20 +152,22 @@ echo "$CONTAINERD_PID $DOCKERD_PID $WEBSERVER_PID" > $BUILD_ROOT/.startdockerd.pids fi -if test -n "$WEBSERVER_ONLY" ; then - echo "SKIPPING DOCKERD" - exit 0 -fi - echo "Starting container daemon" CONTAINERD_BIN=/usr/sbin/containerd test -x $BUILD_ROOT/usr/bin/containerd && CONTAINERD_BIN=/usr/bin/containerd -chroot $BUILD_ROOT $CONTAINERD_BIN --listen unix:///run/containerd/containerd.sock & -CONTAINERD_PID=$! +chroot $BUILD_ROOT $CONTAINERD_BIN --help --address /run/containerd/containerd.sock >& /dev/null +if test "$?" = "0" ; then + # newer version knows --address option + chroot $BUILD_ROOT $CONTAINERD_BIN --address /run/containerd/containerd.sock & + CONTAINERD_PID=$! +else + chroot $BUILD_ROOT $CONTAINERD_BIN --listen unix:///run/containerd/containerd.sock & + CONTAINERD_PID=$! +fi echo "$CONTAINERD_PID $DOCKERD_PID $WEBSERVER_PID" > $BUILD_ROOT/.startdockerd.pids echo "Starting docker daemon" -chroot $BUILD_ROOT /usr/bin/dockerd --containerd /run/containerd/containerd.sock --bridge=none --add-runtime oci=/usr/bin/docker-runc & +chroot $BUILD_ROOT /usr/bin/dockerd $DOCKERD_EXPERIMANTAL --containerd /run/containerd/containerd.sock --bridge=none --add-runtime oci=/usr/bin/docker-runc & DOCKERD_PID=$! echo "$CONTAINERD_PID $DOCKERD_PID $WEBSERVER_PID" > $BUILD_ROOT/.startdockerd.pids diff -Nru obs-build-20180831/unrpm.1 obs-build-20190710/unrpm.1 --- obs-build-20180831/unrpm.1 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/unrpm.1 2019-09-01 00:25:19.000000000 +0000 @@ -1,4 +1,4 @@ -.TH unrpm 1 "(c) 1997-2014 SuSE Linux AG Nuernberg, Germany" +.TH UNRPM 1 "(c) 1997-2018 SUSE Linux AG Nuernberg, Germany" .SH NAME unrpm \- unpack the contents of one or more rpm files .SH SYNOPSIS diff -Nru obs-build-20180831/vc.1 obs-build-20190710/vc.1 --- obs-build-20180831/vc.1 2018-09-19 07:07:55.000000000 +0000 +++ obs-build-20190710/vc.1 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -.TH vc 1 "(c) 1997-2014 SuSE Linux AG Nuernberg, Germany" -.SH NAME -vs \- create a SUSE stype changes entry -.SH SYNOPSIS -.B vc -.RB [ -m -.IR message ] -.RB [ -e ] -.RI [ changesfile_or_dir -.RI [ commentfile ]] - -.SH DESCRIPTION -The \fBvc\fP tool adds a new changes entry to a SUSE \fB.changes\fP file. -The \fB-m\fP option can be used to directly specify the entry, if it is -not given an editor is started to interactively enter the new changes -entry. If a \fIcommentfile\fP is given, its content is used as template -for the new entry instead of an empty entry, whereas the \fB-e\fP option -suppresses the creation of an empty entry. - -If no \fIchangesfile\fP is specified, \fBvc\fP will search the current -directory for a file ending with \fB.changes\fP. If a directory is -specified instead of a changes will, it will be searched instead. - -.SH SEE ALSO -.BR build (1),