pax_global_header00006660000000000000000000000064140020226470014507gustar00rootroot0000000000000052 comment=d757a8157b41e76e2266ca8512257b0449027506 obs-build-20210120/000077500000000000000000000000001400202264700136205ustar00rootroot00000000000000obs-build-20210120/.github/000077500000000000000000000000001400202264700151605ustar00rootroot00000000000000obs-build-20210120/.github/workflows/000077500000000000000000000000001400202264700172155ustar00rootroot00000000000000obs-build-20210120/.github/workflows/linux.yaml000066400000000000000000000005241400202264700212410ustar00rootroot00000000000000name: CI on: push: branches: [ '*' ] pull_request: branches: [ master ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install libyaml-libyaml-perl run: | sudo apt-get install libyaml-libyaml-perl - name: Test run: | make test obs-build-20210120/.gitignore000066400000000000000000000000111400202264700156000ustar00rootroot00000000000000*.sw? *~ obs-build-20210120/Build.pm000066400000000000000000001601261400202264700152230ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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; use strict; use Digest::MD5; use Build::Rpm; use Build::Intrepo; use POSIX qw(strftime); #use Data::Dumper; our $expand_dbg; our $do_rpm; our $do_deb; our $do_kiwi; our $do_arch; our $do_collax; our $do_livebuild; our $do_snapcraft; our $do_appimage; our $do_docker; our $do_fissile; our $do_helm; our $do_flatpak; sub import { for (@_) { $do_rpm = 1 if $_ eq ':rpm'; $do_deb = 1 if $_ eq ':deb'; $do_kiwi = 1 if $_ eq ':kiwi'; $do_arch = 1 if $_ eq ':arch'; $do_collax = 1 if $_ eq ':collax'; $do_livebuild = 1 if $_ eq ':livebuild'; $do_snapcraft = 1 if $_ eq ':snapcraft'; $do_appimage = 1 if $_ eq ':appimage'; $do_docker = 1 if $_ eq ':docker'; $do_fissile = 1 if $_ eq ':fissile'; $do_helm = 1 if $_ eq ':helm'; $do_flatpak = 1 if $_ eq ':flatpak'; } $do_rpm = $do_deb = $do_kiwi = $do_arch = $do_collax = $do_livebuild = $do_snapcraft = $do_appimage = $do_docker = $do_fissile = $do_helm = $do_flatpak = 1 if !$do_rpm && !$do_deb && !$do_kiwi && !$do_arch && !$do_collax && !$do_livebuild && !$do_snapcraft && !$do_appimage && !$do_docker && !$do_fissile && !$do_helm && !$do_flatpak; if ($do_deb) { require Build::Deb; } if ($do_kiwi) { require Build::Kiwi; } if ($do_arch) { require Build::Arch; } if ($do_collax) { require Build::Collax; } if ($do_livebuild) { require Build::LiveBuild; } if ($do_snapcraft) { require Build::Snapcraft; } if ($do_appimage) { require Build::Appimage; } if ($do_docker) { require Build::Docker; } if ($do_fissile) { require Build::Fissile; } if ($do_helm) { require Build::Helm; } if ($do_flatpak) { require Build::Flatpak; } } package Build::Features; our $preinstallimage = 1; # on sale now package Build; # this is synced with rpm 4.13.0. The additional architectures of arm behind the spaces are # from MeeGo project. They don't exist elsewhere, but don't conflict either luckily my $std_macros = q{ %define nil %define ix86 i386 i486 i586 i686 pentium3 pentium4 athlon geode %define arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl armv5el armv5eb armv6el armv6eb armv7el armv7eb armv7nhl armv8el %define arml armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl %define armb armv4b armv5b armv5teb %define arm64 aarch64 %define mips32 mips mipsel mipsr6 mipsr6el %define mips64 mips64 mips64el mips64r6 mips64r6el %define mipseb mips mipsr6 mips64 mips64r6 %define mipsel mipsel mipsr6el mips64el mips64r6el %define mips %{mips32} %{mips64} %define sparc sparc sparcv8 sparcv9 sparcv9v sparc64 sparc64v %define alpha alpha alphaev56 alphaev6 alphaev67 %define power64 ppc64 ppc64p7 ppc64le }; my $extra_macros = ''; my %subst_defaults = ( # defaults live-build package dependencies base on 4.0~a26 gathered with: # grep Check_package -r /usr/lib/live/build 'build-packages:livebuild' => [ 'apt-utils', 'dctrl-tools', 'debconf', 'dosfstools', 'e2fsprogs', 'grub', 'librsvg2-bin', 'live-boot', 'live-config', 'mtd-tools', 'parted', 'squashfs-tools', 'syslinux', 'syslinux-common', 'wget', 'xorriso', 'zsync', ], 'build-packages:helm' => [ 'helm', ], 'build-packages:flatpak' => [ 'flatpak', 'flatpak-builder', 'fuse', 'unzip', 'gzip', 'xz', 'elfutils', 'gdk-pixbuf-loader-rsvg', 'perl(YAML::LibYAML)', ], 'system-packages:livebuild' => [ 'apt-utils', 'cpio', 'dpkg-dev', 'live-build', 'lsb-release', 'tar', ], 'system-packages:mock' => [ 'mock', 'system-packages:repo-creation', ], 'system-packages:debootstrap' => [ 'debootstrap', 'lsb-release', ], 'system-packages:kiwi-image' => [ 'kiwi', 'tar', 'system-packages:repo-creation', ], 'system-packages:kiwi-product' => [ 'kiwi', ], 'system-packages:docker' => [ 'docker', 'system-packages:repo-creation', ], 'system-packages:podman' => [ 'podman', 'buildah', 'system-packages:repo-creation', ], 'system-packages:fissile' => [ 'docker', # TODO: Add fissile here as soon as it is packaged ], 'system-packages:deltarpm' => [ 'deltarpm', ], 'system-packages:repo-creation:rpm' => [ 'createrepo', ], 'system-packages:repo-creation:deb' => [ 'dpkg-dev', ], 'system-packages:repo-creation:arch' => [ 'pacman', ], ); sub unify { my %h = map {$_ => 1} @_; return grep(delete($h{$_}), @_); } sub define { my ($def) = @_; $extra_macros .= "%define $def\n"; } sub init_helper_hashes { my ($config) = @_; $config->{'preferh'} = { map {$_ => 1} @{$config->{'prefer'}} }; my %ignore; for (@{$config->{'ignore'}}) { if (!/:/) { $ignore{$_} = 1; next; } my @s = split(/[,:]/, $_); my $s = shift @s; $ignore{"$s:$_"} = 1 for @s; } $config->{'ignoreh'} = \%ignore; my %conflicts; for (@{$config->{'conflict'}}) { my @s = split(/[,:]/, $_); my $s = shift @s; push @{$conflicts{$s}}, @s; push @{$conflicts{$_}}, $s for @s; } for (keys %conflicts) { $conflicts{$_} = [ unify(@{$conflicts{$_}}) ] } $config->{'conflicth'} = \%conflicts; } # 'canonicalize' dist string as found in rpm dist tags sub dist_canon($$) { my ($rpmdist, $arch) = @_; $rpmdist = lc($rpmdist); $rpmdist =~ s/-/_/g; $rpmdist =~ s/opensuse/suse linux/; my $rpmdista; if ($rpmdist =~ /\(/) { $rpmdista = $rpmdist; $rpmdista =~ s/.*\(//; $rpmdista =~ s/\).*//; } else { $rpmdista = $arch; } $rpmdista =~ s/i[456]86/i386/; $rpmdist = '' unless $rpmdista =~ /^(i386|x86_64|ia64|ppc|ppc64|ppc64le|s390|s390x)$/; my $dist = 'default'; if ($rpmdist =~ /unitedlinux 1\.0.*/) { $dist = "ul1-$rpmdista"; } elsif ($rpmdist =~ /suse sles_(\d+)/) { $dist = "sles$1-$rpmdista"; } elsif ($rpmdist =~ /suse linux enterprise (\d+)/) { $dist = "sles$1-$rpmdista"; } elsif ($rpmdist =~ /suse linux (\d+)\.(\d+)\.[4-9]\d/) { # alpha version $dist = "$1.".($2 + 1)."-$rpmdista"; } elsif ($rpmdist =~ /suse linux (?:leap )?(\d+\.\d+)/) { $dist = "$1-$rpmdista"; } return $dist; } sub read_config_dist { my ($dist, $archpath, $configdir) = @_; my $arch = $archpath; $arch = 'noarch' unless defined $arch; $arch =~ s/:.*//; $arch = 'noarch' if $arch eq ''; die("Please specify a distribution!\n") unless defined $dist; if ($dist !~ /\//) { my $saved = $dist; $configdir = '.' unless defined $configdir; $dist =~ s/-.*//; $dist = "sl$dist" if $dist =~ /^\d/; $dist = "$configdir/$dist.conf"; if (! -e $dist) { $dist =~ s/-.*//; $dist = "sl$dist" if $dist =~ /^\d/; $dist = "$configdir/$dist.conf"; } if (! -e $dist) { warn "$saved.conf not found, using default.conf\n" unless $saved eq 'default'; $dist = "$configdir/default.conf"; } } die("$dist: $!\n") unless -e $dist; my $cf = read_config($arch, $dist); die("$dist: parse error\n") unless $cf; return $cf; } sub read_config { my ($arch, $cfile) = @_; my @macros = split("\n", $std_macros.$extra_macros); push @macros, "%define _target_cpu $arch"; push @macros, "%define _target_os linux"; my $config = {'macros' => \@macros, 'arch' => $arch}; my @config; if (ref($cfile)) { @config = @$cfile; } elsif (defined($cfile)) { local *CONF; return undef unless open(CONF, '<', $cfile); @config = ; close CONF; chomp @config; } # create verbatim macro blobs my @newconfig; while (@config) { push @newconfig, shift @config; next unless $newconfig[-1] =~ /^\s*macros:\s*$/si; $newconfig[-1] = "macros:\n"; while (@config) { my $l = shift @config; last if $l =~ /^\s*:macros\s*$/si; $newconfig[-1] .= "$l\n"; } $newconfig[-1] = [ $newconfig[-1] ]; # verbatim quote, see Rpm.pm } my @spec; $config->{'save_expanded'} = 1; Build::Rpm::parse($config, \@newconfig, \@spec); delete $config->{'save_expanded'}; $config->{'preinstall'} = []; $config->{'vminstall'} = []; $config->{'cbpreinstall'} = []; $config->{'cbinstall'} = []; $config->{'runscripts'} = []; $config->{'required'} = []; $config->{'support'} = []; $config->{'keep'} = []; $config->{'prefer'} = []; $config->{'ignore'} = []; $config->{'conflict'} = []; $config->{'substitute'} = {}; $config->{'substitute_vers'} = {}; $config->{'optflags'} = {}; $config->{'order'} = {}; $config->{'exportfilter'} = {}; $config->{'publishfilter'} = []; $config->{'rawmacros'} = ''; $config->{'release'} = '.'; $config->{'repotype'} = []; $config->{'patterntype'} = []; $config->{'fileprovides'} = {}; $config->{'constraint'} = []; $config->{'expandflags'} = []; $config->{'buildflags'} = []; $config->{'publishflags'} = []; $config->{'singleexport'} = ''; for my $l (@spec) { $l = $l->[1] if ref $l; next unless defined $l; my @l = split(' ', $l); next unless @l; my $ll = shift @l; my $l0 = lc($ll); if ($l0 eq 'macros:') { $l =~ s/.*?\n//s; if ($l =~ /^!\n/s) { $config->{'rawmacros'} = substr($l, 2); } else { $config->{'rawmacros'} .= $l; } next; } if ($l0 eq 'preinstall:' || $l0 eq 'vminstall:' || $l0 eq 'required:' || $l0 eq 'support:' || $l0 eq 'keep:' || $l0 eq 'prefer:' || $l0 eq 'ignore:' || $l0 eq 'conflict:' || $l0 eq 'runscripts:' || $l0 eq 'expandflags:' || $l0 eq 'buildflags:' || $l0 eq 'publishflags:') { my $t = substr($l0, 0, -1); for my $l (@l) { if ($l eq '!*') { $config->{$t} = []; } elsif ($l =~ /^!/) { $config->{$t} = [ grep {"!$_" ne $l} @{$config->{$t}} ]; } else { push @{$config->{$t}}, $l; } } } elsif ($l0 eq 'substitute:') { next unless @l; $ll = shift @l; if ($ll eq '!*') { $config->{'substitute'} = {}; } elsif ($ll =~ /^!(.*)$/) { delete $config->{'substitute'}->{$1}; } else { $config->{'substitute'}->{$ll} = [ @l ]; } } elsif ($l0 eq 'fileprovides:') { next unless @l; $ll = shift @l; if ($ll eq '!*') { $config->{'fileprovides'} = {}; } elsif ($ll =~ /^!(.*)$/) { delete $config->{'fileprovides'}->{$1}; } else { $config->{'fileprovides'}->{$ll} = [ @l ]; } } elsif ($l0 eq 'exportfilter:') { next unless @l; $ll = shift @l; $config->{'exportfilter'}->{$ll} = [ @l ]; } elsif ($l0 eq 'publishfilter:') { $config->{'publishfilter'} = [ @l ]; } elsif ($l0 eq 'optflags:') { next unless @l; $ll = shift @l; $config->{'optflags'}->{$ll} = join(' ', @l); } elsif ($l0 eq 'order:') { for my $l (@l) { if ($l eq '!*') { $config->{'order'} = {}; } elsif ($l =~ /^!(.*)$/) { delete $config->{'order'}->{$1}; } else { $config->{'order'}->{$l} = 1; } } } elsif ($l0 eq 'repotype:') { # type of generated repository data $config->{'repotype'} = [ @l ]; } elsif ($l0 eq 'type:') { # kind of recipe system (spec,dsc,arch,kiwi,...) $config->{'type'} = $l[0]; } elsif ($l0 eq 'buildengine:') { # build engine (build,mock) $config->{'buildengine'} = $l[0]; } elsif ($l0 eq 'binarytype:') { # kind of binary packages (rpm,deb,arch,...) $config->{'binarytype'} = $l[0]; } elsif ($l0 eq 'patterntype:') { # kind of generated patterns in repository $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:') { $config->{'releaseprg'} = $l[0]; } elsif ($l0 eq 'releasesuffix:') { $config->{'releasesuffix'} = join(' ', @l); } elsif ($l0 eq 'changetarget:' || $l0 eq 'target:') { $config->{'target'} = join(' ', @l); push @macros, "%define _target_cpu ".(split('-', $config->{'target'}))[0] if $config->{'target'}; } elsif ($l0 eq 'hostarch:') { $config->{'hostarch'} = join(' ', @l); } elsif ($l0 eq 'constraint:') { my $l = join(' ', @l); if ($l eq '!*') { $config->{'constraint'} = []; } else { push @{$config->{'constraint'}}, $l; } } elsif ($l0 eq 'singleexport:') { $config->{'singleexport'} = $l[0]; # avoid to export multiple package container in maintenance_release projects } elsif ($l0 !~ /^[#%]/) { warn("unknown keyword in config: $l0\n"); } } for my $l (qw{preinstall vminstall required support keep runscripts repotype patterntype}) { $config->{$l} = [ unify(@{$config->{$l}}) ]; } init_helper_hashes($config); # calculate type and binarytype if (!$config->{'type'}) { # Fallback to old guessing method if no type (spec, dsc or kiwi) is defined if (grep {$_ eq 'rpm'} @{$config->{'preinstall'} || []}) { $config->{'type'} = 'spec'; } elsif (grep {$_ eq 'debianutils'} @{$config->{'preinstall'} || []}) { $config->{'type'} = 'dsc'; } elsif (grep {$_ eq 'pacman'} @{$config->{'preinstall'} || []}) { $config->{'type'} = 'arch'; } $config->{'type'} ||= 'UNDEFINED'; } if (!$config->{'binarytype'}) { $config->{'binarytype'} = 'rpm' if $config->{'type'} eq 'spec'; $config->{'binarytype'} = 'deb' if $config->{'type'} eq 'dsc' || $config->{'type'} eq 'collax' || $config->{'type'} eq 'livebuild'; $config->{'binarytype'} = 'arch' if $config->{'type'} eq 'arch'; if (grep {$_ eq $config->{'type'}} qw{snapcraft appimage docker fissile kiwi}){ if (grep {$_ eq 'rpm'} @{$config->{'preinstall'} || []}) { $config->{'binarytype'} = 'rpm'; } elsif (grep {$_ eq 'debianutils'} @{$config->{'preinstall'} || []}) { $config->{'binarytype'} = 'deb'; } elsif (grep {$_ eq 'pacman'} @{$config->{'preinstall'} || []}) { $config->{'binarytype'} = 'arch'; } } $config->{'binarytype'} ||= 'UNDEFINED'; } # add default substitutes if (!$config->{'substitute'}->{'system-packages:repo-creation'}) { $config->{'substitute'}->{'system-packages:repo-creation'} = $subst_defaults{"system-packages:repo-creation:$config->{'binarytype'}"} if $subst_defaults{"system-packages:repo-creation:$config->{'binarytype'}"}; } # create substitute_vers hash from substitute entries for my $l (keys %{$config->{'substitute'}}) { $config->{'substitute_vers'}->{$l} = [ map {/^(.*?)(=)?$/g} unify(@{$config->{'substitute'}->{$l}}) ]; $config->{'substitute'}->{$l} = [ unify(@{$config->{'substitute'}->{$l}}) ]; s/=$// for @{$config->{'substitute'}->{$l}}; } # add rawmacros to our macro list if ($config->{'rawmacros'} ne '') { for my $rm (split("\n", $config->{'rawmacros'})) { if (@macros && $macros[-1] =~ /\\$/) { if ($rm =~ /\\$/) { push @macros, '...\\'; } else { push @macros, '...'; } } elsif ($rm !~ /^%/) { push @macros, $rm; } else { push @macros, "%define ".substr($rm, 1); } } } # extract some helper hashes for the flags my %modules; for (@{$config->{'expandflags'} || []}) { if (/^([^:]+):(.*)$/s) { $config->{"expandflags:$1"} = $2; $modules{$2} = 1 if $1 eq 'module'; } else { $config->{"expandflags:$_"} = 1; } } for (@{$config->{'buildflags'} || []}) { if (/^([^:]+):(.*)$/s) { $config->{"buildflags:$1"} = $2; } else { $config->{"buildflags:$_"} = 1; } } for (@{$config->{'publishflags'} || []}) { if (/^([^:]+):(.*)$/s) { $config->{"publishflags:$1"} = $2; } else { $config->{"publishflags:$_"} = 1; } } $config->{'modules'} = [ sort keys %modules ] if %modules; return $config; } sub gettargetarchos { my ($config) = @_; my ($arch, $os); for (@{$config->{'macros'} || []}) { $arch = $1 if /^%define _target_cpu (\S+)/; $os = $1 if /^%define _target_os (\S+)/; } return ($arch, $os); } sub do_subst { my ($config, @deps) = @_; my @res; my %done; my $subst = $config->{'substitute'}; while (@deps) { my $d = shift @deps; next if $done{$d}; my $ds = $d; $ds =~ s/\s*[<=>].*$//s; if ($subst->{$ds}) { unshift @deps, @{$subst->{$ds}}; push @res, $d if grep {$_ eq $ds} @{$subst->{$ds}}; } else { push @res, $d; } $done{$d} = 1; } return @res; } sub do_subst_vers { my ($config, @deps) = @_; my @res; my %done; my $subst = $config->{'substitute_vers'}; while (@deps) { my ($d, $dv) = splice(@deps, 0, 2); next if $done{$d}; if ($subst->{$d}) { unshift @deps, map {defined($_) && $_ eq '=' ? $dv : $_} @{$subst->{$d}}; push @res, $d, $dv if grep {defined($_) && $_ eq $d} @{$subst->{$d}}; } else { push @res, $d, $dv; } $done{$d} = 1; } return @res; } # expand the preinstalls/vminstalls sub expandpreinstalls { my ($config) = @_; return if !$config->{'expandflags:preinstallexpand'} || $config->{'preinstallisexpanded'}; my (@pre, @vm); if (@{$config->{'preinstall'} || []}) { my $c = $config; @pre = expand($c, @{$config->{'preinstall'} || []}); return "preinstalls: $pre[0]" unless shift @pre; @pre = sort(@pre); } if ($config->{'no_vminstall_expand'}) { @vm = ('expandpreinstalls_error'); } elsif (@{$config->{'vminstall'} || []}) { my %pre = map {$_ => 1} @pre; my %vmx = map {+"-$_" => 1} @{$config->{'vminstall'} || []}; my @pren = grep {/^-/ && !$vmx{$_}} @{$config->{'preinstall'} || []}; my $c = $config; @vm = expand($c, @pre, @pren, @{$config->{'vminstall'} || []}); return "vminstalls: $vm[0]" unless shift @vm; @vm = sort(grep {!$pre{$_}} @vm); } $config->{'preinstall'} = \@pre; $config->{'vminstall'} = \@vm; #print STDERR "pre: @pre\n"; #print STDERR "vm: @vm\n"; $config->{'preinstallisexpanded'} = 1; return ''; } # Delivers all packages which get used for building sub get_build { my ($config, $subpacks, @deps) = @_; if ($config->{'expandflags:preinstallexpand'} && !$config->{'preinstallisexpanded'}) { my $err = expandpreinstalls($config); return (undef, $err) if $err; } my $buildtype = $config->{'type'} || ''; my $nobasepackages; if (grep {$_ eq $buildtype} qw{livebuild docker kiwi fissile helm flatpak}) { push @deps, @{$config->{'substitute'}->{"build-packages:$buildtype"} || $subst_defaults{"build-packages:$buildtype"} || []}; if ($buildtype eq 'docker' || $buildtype eq 'kiwi') { $nobasepackages = 1 if $config->{"expandflags:$buildtype-nobasepackages"}; @deps = grep {!/^kiwi-image:/} @deps if $buildtype eq 'kiwi'; # only needed for sysdeps } } my @ndeps = grep {/^-/} @deps; my %ndeps = map {$_ => 1} @ndeps; my @directdepsend; if ($ndeps{'--directdepsend--'}) { @directdepsend = @deps; for (splice @deps) { last if $_ eq '--directdepsend--'; push @deps, $_; } @directdepsend = grep {!/^-/} splice(@directdepsend, @deps + 1); } my @extra = (@{$config->{'required'}}, @{$config->{'support'}}); if (@{$config->{'keep'} || []}) { my %keep = map {$_ => 1} (@deps, @{$config->{'keep'} || []}, @{$config->{'preinstall'}}); for (@{$subpacks || []}) { next if $keep{$_}; push @ndeps, "-$_"; $ndeps{"-$_"} = 1; } } else { # new "empty keep" mode, filter subpacks from required/support my %subpacks = map {$_ => 1} @{$subpacks || []}; @extra = grep {!$subpacks{$_}} @extra; } @deps = grep {!$ndeps{$_}} @deps; if (!$nobasepackages) { push @deps, @{$config->{'preinstall'}}, @extra; @deps = grep {!$ndeps{"-$_"}} @deps; } @deps = do_subst($config, @deps); @deps = grep {!$ndeps{"-$_"}} @deps; if (@directdepsend) { @directdepsend = do_subst($config, @directdepsend); @directdepsend = grep {!$ndeps{"-$_"}} @directdepsend; unshift @directdepsend, '--directdepsend--' if @directdepsend; } @deps = expand($config, @deps, @ndeps, @directdepsend); return @deps; } # return the package needed for setting up the build environment. # an empty result means that the packages from get_build should # be used instead. sub get_sysbuild { my ($config, $buildtype, $extradeps) = @_; my $engine = $config->{'buildengine'} || ''; $buildtype ||= $config->{'type'} || ''; my @sysdeps; if ($engine eq 'mock' && $buildtype eq 'spec') { @sysdeps = @{$config->{'substitute'}->{'system-packages:mock'} || []}; @sysdeps = @{$subst_defaults{'system-packages:mock'} || []} unless @sysdeps; } elsif ($engine eq 'debootstrap' && $buildtype eq 'dsc') { @sysdeps = @{$config->{'substitute'}->{'system-packages:debootstrap'} || []}; @sysdeps = @{$subst_defaults{'system-packages:debootstrap'} || []} unless @sysdeps; } elsif ($buildtype eq 'livebuild') { # packages used for build environment setup (build-recipe-livebuild deps) @sysdeps = @{$config->{'substitute'}->{'system-packages:livebuild'} || []}; @sysdeps = @{$subst_defaults{'system-packages:livebuild'} || []} unless @sysdeps; } elsif ($buildtype eq 'kiwi-image') { @sysdeps = @{$config->{'substitute'}->{'system-packages:kiwi-image'} || []}; @sysdeps = @{$config->{'substitute'}->{'kiwi-setup:image'} || []} unless @sysdeps; @sysdeps = @{$subst_defaults{'system-packages:kiwi-image'} || []} unless @sysdeps; } elsif ($buildtype eq 'kiwi-product') { @sysdeps = @{$config->{'substitute'}->{'system-packages:kiwi-product'} || []}; @sysdeps = @{$config->{'substitute'}->{'kiwi-setup:product'} || []} unless @sysdeps; @sysdeps = @{$subst_defaults{'system-packages:kiwi-product'} || []} unless @sysdeps; } elsif ($engine eq 'podman' && $buildtype eq 'docker') { @sysdeps = @{$config->{'substitute'}->{'system-packages:podman'} || []} unless @sysdeps; @sysdeps = @{$subst_defaults{'system-packages:podman'} || []} unless @sysdeps; } elsif ($buildtype eq 'docker') { @sysdeps = @{$config->{'substitute'}->{'system-packages:docker'} || []} unless @sysdeps; @sysdeps = @{$subst_defaults{'system-packages:docker'} || []} unless @sysdeps; } elsif ($buildtype eq 'fissile') { @sysdeps = @{$config->{'substitute'}->{'system-packages:fissile'} || []} unless @sysdeps; @sysdeps = @{$subst_defaults{'system-packages:fissile'} || []} unless @sysdeps; } elsif ($buildtype eq 'deltarpm') { @sysdeps = @{$config->{'substitute'}->{'system-packages:deltarpm'} || []}; @sysdeps = @{$subst_defaults{'system-packages:deltarpm'} || []} unless @sysdeps; } return () unless @sysdeps; # no extra build environment used push @sysdeps, @$extradeps if $extradeps; if ($config->{'expandflags:preinstallexpand'} && !$config->{'preinstallisexpanded'}) { my $err = expandpreinstalls($config); return (undef, $err) if $err; } my @ndeps = grep {/^-/} @sysdeps; my %ndeps = map {$_ => 1} @ndeps; @sysdeps = grep {!$ndeps{$_}} @sysdeps; push @sysdeps, @{$config->{'preinstall'}}, @{$config->{'required'}}; push @sysdeps, @{$config->{'support'}} if $buildtype eq 'kiwi-image' || $buildtype eq 'kiwi-product'; # compat to old versions @sysdeps = do_subst($config, @sysdeps); @sysdeps = grep {!$ndeps{$_}} @sysdeps; my $configtmp = $config; @sysdeps = expand($configtmp, @sysdeps, @ndeps); return @sysdeps unless $sysdeps[0]; shift @sysdeps; @sysdeps = unify(@sysdeps, get_preinstalls($config)); return (1, @sysdeps); } # Delivers all packages which shall have an influence to other package builds (get_build reduced by support packages) sub get_deps { my ($config, $subpacks, @deps) = @_; if ($config->{'expandflags:preinstallexpand'} && !$config->{'preinstallisexpanded'}) { my $err = expandpreinstalls($config); return (undef, $err) if $err; } my @ndeps = grep {/^-/} @deps; my @extra = @{$config->{'required'}}; if (@{$config->{'keep'} || []}) { my %keep = map {$_ => 1} (@deps, @{$config->{'keep'} || []}, @{$config->{'preinstall'}}); for (@{$subpacks || []}) { push @ndeps, "-$_" unless $keep{$_}; } } else { # new "empty keep" mode, filter subpacks from required my %subpacks = map {$_ => 1} @{$subpacks || []}; @extra = grep {!$subpacks{$_}} @extra; } my %ndeps = map {$_ => 1} @ndeps; @deps = grep {!$ndeps{$_}} @deps; push @deps, @extra; @deps = grep {!$ndeps{"-$_"}} @deps; @deps = do_subst($config, @deps); @deps = grep {!$ndeps{"-$_"}} @deps; my %bdeps = map {$_ => 1} (@{$config->{'preinstall'}}, @{$config->{'support'}}); delete $bdeps{$_} for @deps; @deps = expand($config, @deps, @ndeps); if (@deps && $deps[0]) { my $r = shift @deps; @deps = grep {!$bdeps{$_}} @deps; unshift @deps, $r; } return @deps; } sub get_preinstalls { my ($config) = @_; if ($config->{'expandflags:preinstallexpand'} && !$config->{'preinstallisexpanded'}) { my $err = expandpreinstalls($config); return ('expandpreinstalls_error') if $err; } return @{$config->{'preinstall'}}; } sub get_vminstalls { my ($config) = @_; if ($config->{'expandflags:preinstallexpand'} && !$config->{'preinstallisexpanded'}) { my $err = expandpreinstalls($config); return ('expandpreinstalls_error') if $err; } return @{$config->{'vminstall'}}; } sub get_runscripts { my ($config) = @_; return @{$config->{'runscripts'}}; } ### just for API compability sub get_cbpreinstalls { return (); } sub get_cbinstalls { return (); } ########################################################################### sub parse_depfile { return Build::Intrepo::parse(@_); } sub readdeps { my ($config, $pkginfo, @depfiles) = @_; my $nofiledeps = %{$config->{'fileprovides'} || {}} ? 0 : 1; $pkginfo ||= {}; for my $depfile (@depfiles) { if (ref($depfile) eq 'HASH') { $pkginfo->{$_} = $depfile->{$_} for keys %$depfile; } else { my $pkgs = Build::Intrepo::parse($depfile, [], 'nofiledeps' => $nofiledeps); $pkginfo->{$_->{'name'}} = $_ for @$pkgs; } } # put repository data into the build config my %requires; my %provides; my %pkgconflicts; my %pkgobsoletes; my %recommends; my %supplements; for my $pkgid (sort keys %$pkginfo) { my $pkg = $pkginfo->{$pkgid}; $provides{$pkgid} = $pkg->{'provides'} if $pkg->{'provides'}; $requires{$pkgid} = $pkg->{'requires'} if $pkg->{'requires'}; $pkgconflicts{$pkgid} = $pkg->{'conflicts'} if $pkg->{'conflicts'}; $pkgobsoletes{$pkgid} = $pkg->{'obsoletes'} if $pkg->{'obsoletes'}; $recommends{$pkgid} = $pkg->{'recommends'} if $pkg->{'recommends'}; $supplements{$pkgid} = $pkg->{'supplements'} if $pkg->{'supplements'}; } $config->{'providesh'} = \%provides; $config->{'requiresh'} = \%requires; $config->{'pkgconflictsh'} = \%pkgconflicts; $config->{'pkgobsoletesh'} = \%pkgobsoletes; $config->{'recommendsh'} = \%recommends; $config->{'supplementsh'} = \%supplements; makewhatprovidesh($config); } sub writedeps { Build::Intrepo::writepkg(@_); } sub getbuildid { return Build::Intrepo::getbuildid(@_); } sub makewhatprovidesh { my ($config) = @_; my %whatprovides; my $provides = $config->{'providesh'}; for my $p (keys %$provides) { my @pp = @{$provides->{$p}}; s/[ <=>].*// for @pp; push @{$whatprovides{$_}}, $p for unify(@pp); } for my $p (keys %{$config->{'fileprovides'}}) { my @pp = grep {@{$provides->{$_} || []}} @{$config->{'fileprovides'}->{$p}}; @{$whatprovides{$p}} = unify(@{$whatprovides{$p} || []}, @pp) if @pp; } $config->{'whatprovidesh'} = \%whatprovides; } sub setdeps { my ($config, $provides, $whatprovides, $requires) = @_; $config->{'providesh'} = $provides; $config->{'whatprovidesh'} = $whatprovides; $config->{'requiresh'} = $requires; } sub forgetdeps { my ($config) = @_; delete $config->{'providesh'}; delete $config->{'whatprovidesh'}; delete $config->{'requiresh'}; delete $config->{'pkgconflictsh'}; delete $config->{'pkgobsoletesh'}; delete $config->{'recommendsh'}; delete $config->{'supplementsh'}; } my %addproviders_fm = ( '>' => 1, '=' => 2, '==' => 2, '>=' => 3, '<' => 4, '<=' => 6, ); sub addproviders { my ($config, $r) = @_; my @p; my $whatprovides = $config->{'whatprovidesh'}; $whatprovides->{$r} = \@p; my $binarytype = $config->{'binarytype'}; if ($r =~ /\|/) { for my $or (split(/\s*\|\s*/, $r)) { push @p, @{$whatprovides->{$or} || addproviders($config, $or)}; } @p = unify(@p) if @p > 1; return \@p; } if ($r !~ /^(.*?)\s*([<=>]{1,2})\s*(.*?)$/) { @p = @{$whatprovides->{$r} || addproviders($config, $r)} if $binarytype eq 'deb' && $r =~ s/:any$//; return \@p; } my $rn = $1; my $rv = $3; my $rf = $addproviders_fm{$2}; return \@p unless $rf; $rn =~ s/:any$// if $binarytype eq 'deb'; my $provides = $config->{'providesh'}; my @rp = @{$whatprovides->{$rn} || []}; for my $rp (@rp) { for my $pp (@{$provides->{$rp} || []}) { if ($pp eq $rn) { # debian: unversioned provides do not match next if $binarytype eq 'deb'; push @p, $rp; last; } next unless $pp =~ /^\Q$rn\E\s*([<=>]{1,2})\s*(.*?)$/; my $pv = $2; my $pf = $addproviders_fm{$1}; next unless $pf; if ($pf & $rf & 5) { push @p, $rp; last; } if ($pv eq $rv) { next unless $pf & $rf & 2; push @p, $rp; last; } my $rr = $rf == 2 ? $pf : ($rf ^ 5); $rr &= 5 unless $pf & 2; # verscmp for spec and kiwi types my $vv; if ($binarytype eq 'deb') { $vv = Build::Deb::verscmp($pv, $rv, 1); } else { $vv = Build::Rpm::verscmp($pv, $rv, 1); } if ($rr & (1 << ($vv + 1))) { push @p, $rp; last; } } } @p = unify(@p) if @p > 1; return \@p; } # XXX: should also check the package EVR sub nevrmatch { my ($config, $r, @p) = @_; my $rn = $r; $rn =~ s/\s*([<=>]{1,2}).*$//; return grep {$_ eq $rn} @p; } # check if package $q has a conflict against an installed package. # if yes, add message to @$eq and return true sub checkconflicts { my ($config, $ins, $q, $eq, @r) = @_; my $whatprovides = $config->{'whatprovidesh'}; my $ret = 0; for my $r (@r) { if ($r =~ /^\(.*\)$/) { # note the []: we ignore errors here. they will be reported if the package is chosen. my $n = normalizerich($config, $q, $r, 1, []); $ret = 1 if check_conddeps_notinst($q, $n, $eq, $ins); next; } my @eq = grep {$ins->{$_}} @{$whatprovides->{$r} || addproviders($config, $r)}; next unless @eq; push @$eq, map {"(provider $q conflicts with $_)"} @eq; $ret = 1; } return $ret; } sub checkobsoletes { my ($config, $ins, $q, $eq, @r) = @_; my $whatprovides = $config->{'whatprovidesh'}; my $ret = 0; for my $r (@r) { my @eq = grep {$ins->{$_}} nevrmatch($config, $r, @{$whatprovides->{$r} || addproviders($config, $r)}); next unless @eq; push @$eq, map {"(provider $q obsoletes $_)"} @eq; $ret = 1; } return $ret; } sub todo2recommended { my ($config, $recommended, $todo) = @_; my $whatprovides = $config->{'whatprovidesh'}; my $pkgrecommends = $config->{'recommendsh'} || {}; for my $p (splice @$todo) { for my $r (@{$pkgrecommends->{$p} || []}) { $recommended->{$_} = 1 for @{$whatprovides->{$r} || addproviders($config, $r)} } } } sub cplx_mix { my ($q1, $q2, $todnf) = @_; my @q; for my $qq1 (@$q1) { for my $qq2 (@$q2) { my @qq = unify(sort(@$qq1, @$qq2)); my %qq = map {$_ => 1} @qq; push @q, \@qq unless grep {$qq{"-$_"}} @qq; } } return $todnf ? 0 : 1 unless @q; return (-1, @q); } sub cplx_inv { my ($f, @q) = @_; return 1 - $f if $f == 0 || $f == 1; my @iq; for my $q (@q) { $q = [ map {"-$_"} @$q ]; s/^--// for @$q; } return (-1, @q); } sub normalize_cplx_rec { my ($c, $r, $todnf) = @_; if ($r->[0] == 0) { my $ri = (split(/[ <=>]/, $r->[1], 2))[0]; my ($config, $p, $ignore, $xignore) = @$c; if (!$todnf) { return 1 if $ignore->{$ri} || $xignore->{$ri}; return 1 if defined($p) && ($ignore->{"$p:$ri"} || $xignore->{"$p:$ri"}); } my $whatprovides = $config->{'whatprovidesh'}; my @q = @{$whatprovides->{$r->[1]} || addproviders($config, $r->[1])}; return 0 unless @q; if ($todnf) { return (-1, map { [ $_ ] } @q); } else { return (-1, [ @q ]); } } if ($r->[0] == 3 && @$r == 4) { # complex if/else case: A IF (B ELSE C) -> (A OR ~B) AND (C OR B) my ($n1, @q1) = normalize_cplx_rec($c, [3, $r->[1], $r->[2]], $todnf); my ($n2, @q2) = normalize_cplx_rec($c, [2, $r->[2], $r->[3]], $todnf); return 0 if $n1 == 0 || $n2 == 0; return ($n2, @q2) if $n1 == 1; return ($n1, @q1) if $n2 == 1; if (!$todnf) { return (-1, @q1, @q2); } else { return cplx_mix(\@q1, \@q2, $todnf); } } if ($r->[0] == 4 && @$r == 4) { # complex unless/else case: A UNLESS (B ELSE C) -> (A AND ~B) OR (C AND B) my ($n1, @q1) = normalize_cplx_rec($c, [4, $r->[1], $r->[2]], $todnf); my ($n2, @q2) = normalize_cplx_rec($c, [1, $r->[2], $r->[3]], $todnf); return 1 if $n1 == 1 || $n2 == 1; return ($n2, @q2) if $n1 == 0; return ($n1, @q1) if $n2 == 0; if ($todnf) { return (-1, @q1, @q2); } else { return cplx_mix(\@q1, \@q2, $todnf); } } if ($r->[0] == 1 || $r->[0] == 4) { # and / unless my $todnf2 = $r->[0] == 4 ? !$todnf : $todnf; my ($n1, @q1) = normalize_cplx_rec($c, $r->[1], $todnf); my ($n2, @q2) = normalize_cplx_rec($c, $r->[2], $todnf); ($n2, @q2) = cplx_inv($n2, @q2) if $r->[0] == 4; return 0 if $n1 == 0 || $n2 == 0; return ($n2, @q2) if $n1 == 1; return ($n1, @q1) if $n2 == 1; if (!$todnf) { return (-1, @q1, @q2); } else { return cplx_mix(\@q1, \@q2, $todnf); } } if ($r->[0] == 2 || $r->[0] == 3) { # or / if my $todnf2 = $r->[0] == 3 ? !$todnf : $todnf; my ($n1, @q1) = normalize_cplx_rec($c, $r->[1], $todnf); my ($n2, @q2) = normalize_cplx_rec($c, $r->[2], $todnf2); ($n2, @q2) = cplx_inv($n2, @q2) if $r->[0] == 3; return 1 if $n1 == 1 || $n2 == 1; return ($n2, @q2) if $n1 == 0; return ($n1, @q1) if $n2 == 0; if ($todnf) { return (-1, @q1, @q2); } else { return cplx_mix(\@q1, \@q2, $todnf); } } if ($r->[0] == 6 || $r->[0] == 7) { # with / without my ($n1, @q1) = normalize_cplx_rec($c, $r->[1], 0); my ($n2, @q2) = normalize_cplx_rec($c, $r->[2], 0); if ($n2 == 0 && $r->[0] == 7) { @q2 = ( [] ); $n2 = -1; } return 0 if $n1 != -1 || $n2 != -1; return 0 if @q1 != 1 || @q2 != 1; @q1 = @{$q1[0]}; @q2 = @{$q2[0]}; return 0 if grep {/^-/} @q1; return 0 if grep {/^-/} @q2; my %q2 = map {$_ => 1} @q2; my @q; if ($r->[0] == 6) { @q = grep {$q2{$_}} @q1; } else { @q = grep {!$q2{$_}} @q1; } return 0 unless @q; if ($todnf) { return (-1, map { [ $_ ] } @q); } else { return (-1, [ @q ]); } } return 0; } sub normalizerich { my ($config, $p, $dep, $deptype, $error, $ignore, $xignore) = @_; my $r = Build::Rpm::parse_rich_dep($dep); if (!$r) { if (defined($p)) { push @$error, "cannot parse dependency $dep from $p"; } else { push @$error, "cannot parse dependency $dep"; } return []; } my $c = [$config, $p, $ignore || {}, $xignore || {}]; my ($n, @q); if ($deptype == 0) { ($n, @q) = normalize_cplx_rec($c, $r); return () if $n == 1; if (!$n) { if (defined($p)) { push @$error, "nothing provides $dep needed by $p"; } else { push @$error, "nothing provides $dep"; } return []; } } else { ($n, @q) = normalize_cplx_rec($c, $r, 1); ($n, @q) = cplx_inv($n, @q); if (!$n) { if (defined($p)) { push @$error, "$p conflicts with always true $dep"; } else { push @$error, "conflict with always true $dep"; } } } for my $q (@q) { my @neg = @$q; @neg = grep {s/^-//} @neg; @neg = grep {$_ ne $p} @neg if defined $p; @$q = grep {!/^-/} @$q; $q = [$dep, $deptype, \@neg, @$q]; } return \@q; } # handle a normalized rich dependency from install of package p # todo_cond is undef if we are re-checking the cond queue sub check_conddeps_inst { my ($p, $n, $error, $installed, $aconflicts, $todo, $todo_cond) = @_; for my $c (@$n) { my ($r, $rtype, $cond, @q) = @$c; next unless defined $cond; # already handled? next if grep {$installed->{$_}} @q; # already fulfilled my @cx = grep {!$installed->{$_}} @$cond; # open conditions if (!@cx) { $c->[2] = undef; # mark as handled to avoid dups if (@q) { push @$todo, $c, $p; } elsif (@$cond) { if (defined($p)) { push @$error, map {"$p conflicts with $_"} sort(@$cond); } else { push @$error, map {"conflicts with $_"} sort(@$cond); } } } else { if (!@q && @cx == 1) { if (defined($p)) { $aconflicts->{$cx[0]} = "is in conflict with $p"; } else { $aconflicts->{$cx[0]} = "is in conflict"; } } elsif ($todo_cond) { push @{$todo_cond->{$_}}, [ $c, $p ] for @cx; } } } } # handle a normalized rich dependency from a not-yet installed package # (we just check conflicts) sub check_conddeps_notinst { my ($p, $n, $eq, $installed) = @_; my $ret = 0; for my $c (@$n) { my ($r, $rtype, $cond, @q) = @$c; next if @q || !@$cond || grep {!$installed->{$_}} @$cond; push @$eq, map {"(provider $p conflicts with $_)"} sort(@$cond); $ret = 1; } return $ret; } sub expand { my ($config, @p) = @_; my $conflicts = $config->{'conflicth'}; my $pkgconflicts = $config->{'pkgconflictsh'} || {}; my $pkgobsoletes = $config->{'pkgobsoletesh'} || {}; my $prefer = $config->{'preferh'}; my $ignore = $config->{'ignoreh'}; my $ignoreconflicts = $config->{'expandflags:ignoreconflicts'}; my $ignoreignore; my $userecommendsforchoices = 1; my $whatprovides = $config->{'whatprovidesh'}; my $requires = $config->{'requiresh'}; my $xignore = { map {substr($_, 1) => 1} grep {/^-/} @p }; $ignoreconflicts = 1 if $xignore->{'-ignoreconflicts--'}; $ignore = {} if $xignore->{'-ignoreignore--'}; if ($ignoreignore) { $xignore = {}; $ignore = {}; } my @directdepsend; if ($xignore->{'-directdepsend--'}) { delete $xignore->{'-directdepsend--'}; @directdepsend = @p; for my $p (splice @p) { last if $p eq '--directdepsend--'; push @p, $p; } @directdepsend = grep {!/^-/} splice(@directdepsend, @p + 1); } my %p; # expanded packages my @todo; # dependencies to install my @todo_inst; # packages we decided to install my %todo_cond; my %recommended; # recommended by installed packages my @rec_todo; # installed todo my @error; my %aconflicts; # packages we are conflicting with # handle direct conflicts for (grep {/^!/} @p) { my $r = /^!!/ ? substr($_, 2) : substr($_, 1); if ($r =~ /^\(.*\)$/) { my $n = normalizerich($config, undef, $r, 1, \@error); my %naconflicts; check_conddeps_inst(undef, $n, \@error, \%p, \%naconflicts, \@todo, \%todo_cond); push @{$aconflicts{$_}}, $naconflicts{$_} for keys %naconflicts; next; } my @q = @{$whatprovides->{$r} || addproviders($config, $r)}; @q = nevrmatch($config, $r, @q) if /^!!/; push @{$aconflicts{$_}}, "is in conflict" for @q; } @p = grep {!/^[-!]/} @p; # add direct dependency packages. this is different from below, # because we add packages even if the dep is already provided and # we break ambiguities if the name is an exact match. for my $r (splice @p) { if ($r =~ /^\(.*\)$/) { push @p, $r; # rich deps are never direct next; } my @q = @{$whatprovides->{$r} || addproviders($config, $r)}; my $pn = $r; $pn =~ s/ .*//; @q = grep {$_ eq $pn} @q; if (@q != 1) { push @p, $r; next; } my $p = $q[0]; print "added $p because of $r (direct dep)\n" if $expand_dbg; push @todo_inst, $p; } for my $r (@p, @directdepsend) { if ($r =~ /^\(.*\)$/) { # rich dep. normalize, put on todo. my $n = normalizerich($config, undef, $r, 0, \@error); my %naconflicts; check_conddeps_inst(undef, $n, \@error, \%p, \%naconflicts, \@todo, \%todo_cond); push @{$aconflicts{$_}}, $naconflicts{$_} for keys %naconflicts; } else { push @todo, $r, undef; } } for my $p (@todo_inst) { push @error, map {"$p $_"} @{$aconflicts{$p}} if $aconflicts{$p}; } return (undef, @error) if @error; while (@todo || @todo_inst) { # install a set of chosen packages # ($aconficts must not be set for any of them) if (@todo_inst) { @todo_inst = unify(@todo_inst) if @todo_inst > 1; # check aconflicts (just in case) for my $p (@todo_inst) { push @error, map {"$p $_"} @{$aconflicts{$p}} if $aconflicts{$p}; } return (undef, @error) if @error; # check against old cond dependencies. we do this step by step so we don't get dups. for my $p (@todo_inst) { $p{$p} = 1; if ($todo_cond{$p}) { for my $c (@{delete $todo_cond{$p}}) { my %naconflicts; check_conddeps_inst($c->[1], [ $c->[0] ], \@error, \%p, \%naconflicts, \@todo); push @{$aconflicts{$_}}, $naconflicts{$_} for keys %naconflicts; } } delete $aconflicts{$p}; # no longer needed } return undef, @error if @error; # now check our own dependencies for my $p (@todo_inst) { my %naconflicts; my %naobsoletes; $naconflicts{$_} = "is in conflict with $p" for @{$conflicts->{$p} || []}; for my $r (@{$requires->{$p} || []}) { if ($r =~ /^\(.*\)$/) { my $n = normalizerich($config, $p, $r, 0, \@error, $ignore, $xignore); check_conddeps_inst($p, $n, \@error, \%p, \%naconflicts, \@todo, \%todo_cond); next; } my $ri = (split(/[ <=>]/, $r, 2))[0]; next if $ignore->{"$p:$ri"} || $xignore->{"$p:$ri"}; next if $ignore->{$ri} || $xignore->{$ri}; push @todo, ($r, $p); } if (!$ignoreconflicts) { for my $r (@{$pkgconflicts->{$p}}) { if ($r =~ /^\(.*\)$/) { my $n = normalizerich($config, $p, $r, 1, \@error); check_conddeps_inst($p, $n, \@error, \%p, \%naconflicts, \@todo, \%todo_cond); next; } $naconflicts{$_} = "is in conflict with $p" for @{$whatprovides->{$r} || addproviders($config, $r)}; } for my $r (@{$pkgobsoletes->{$p}}) { $naobsoletes{$_} = "is obsoleted by $p" for nevrmatch($config, $r, @{$whatprovides->{$r} || addproviders($config, $r)}); } } if (%naconflicts) { push @error, map {"$p conflicts with $_"} grep {$_ ne $p && $p{$_}} sort keys %naconflicts; push @{$aconflicts{$_}}, $naconflicts{$_} for keys %naconflicts; } if (%naobsoletes) { push @error, map {"$p obsoletes $_"} grep {$_ ne $p && $p{$_}} sort keys %naobsoletes; push @{$aconflicts{$_}}, $naobsoletes{$_} for keys %naobsoletes; } push @rec_todo, $p if $userecommendsforchoices; } return undef, @error if @error; @todo_inst = (); } for my $pass (0, 1, 2, 3, 4, 5) { my @todo_next; while (@todo) { my ($r, $p) = splice(@todo, 0, 2); my $rtodo = $r; my @q; if (ref($r)) { ($r, undef, undef, @q) = @$r; } else { @q = @{$whatprovides->{$r} || addproviders($config, $r)}; } next if grep {$p{$_}} @q; my $pp = defined($p) ? "$p:" : ''; my $pn = defined($p) ? " needed by $p" : ''; if (defined($p) && !$ignoreignore) { next if grep {$ignore->{$_} || $xignore->{$_}} @q; next if grep {$ignore->{"$pp$_"} || $xignore->{"$pp$_"}} @q; } if (!@q) { next if $r =~ /^\// && defined($p); push @error, "nothing provides $r$pn"; next; } if (@q > 1 && $pass == 0) { push @todo_next, $rtodo, $p; next; } # pass 0: only one provider # pass 1: conflict pruning my $nq = @q; my @eq; for my $q (@q) { push @eq, map {"(provider $q $_)"} @{$aconflicts{$q}} if $aconflicts{$q}; } @q = grep {!$aconflicts{$_}} @q; if (!$ignoreconflicts) { for my $q (splice @q) { push @q, $q unless @{$pkgconflicts->{$q} || []} && checkconflicts($config, \%p, $q, \@eq, @{$pkgconflicts->{$q}}); } for my $q (splice @q) { push @q, $q unless @{$pkgobsoletes->{$q} || []} && checkobsoletes($config, \%p, $q, \@eq, @{$pkgobsoletes->{$q}}); } } if (!@q) { push @error, "conflict for providers of $r$pn", sort(@eq); next; } if (@q == 1) { push @todo_inst, $q[0]; print "added $q[0] because of $pp$r\n" if $expand_dbg; next; } # pass 2: prune neg prefers and simple pos prefers if ($pass < 2) { print "undecided about $pp$r: @q\n" if $expand_dbg; push @todo_next, $rtodo, $p; next; } if (@q > 1) { my @pq = grep {!$prefer->{"-$_"} && !$prefer->{"-$pp$_"}} @q; @q = @pq if @pq; @pq = grep {$prefer->{$_} || $prefer->{"$pp$_"}} @q; @q = @pq if @pq == 1; } if (@q == 1) { push @todo_inst, $q[0]; print "added $q[0] because of $pp$r\n" if $expand_dbg; next; } # pass 3: prune pos prefers and debian choice deps if ($pass < 3) { push @todo_next, $rtodo, $p; next; } if (@q > 1) { my @pq = grep {$prefer->{$_} || $prefer->{"$pp$_"}} @q; if (@pq > 1) { my %pq = map {$_ => 1} @pq; @q = (grep {$pq{$_}} @{$config->{'prefer'}})[0]; } elsif (@pq == 1) { @q = @pq; } } if (@q > 1 && $r =~ /\|/) { # choice op, implicit prefer of first match... my %pq = map {$_ => 1} @q; for my $rr (split(/\s*\|\s*/, $r)) { next unless $whatprovides->{$rr}; my @pq = grep {$pq{$_}} @{$whatprovides->{$rr}}; next unless @pq; @q = @pq; last; } } if (@q == 1) { push @todo_inst, $q[0]; print "added $q[0] because of $pp$r\n" if $expand_dbg; next; } # pass 4: prune recommends if ($pass < 4) { push @todo_next, $rtodo, $p; next; } todo2recommended($config, \%recommended, \@rec_todo) if @rec_todo; my @pq = grep {$recommended{$_}} @q; print "recommended [@pq] among [@q]\n" if $expand_dbg; @q = @pq if @pq; if (@q == 1) { push @todo_inst, $q[0]; print "added $q[0] because of $pp$r\n" if $expand_dbg; next; } # pass 5: record error if ($pass < 5) { push @todo_next, $rtodo, $p; next; } @q = sort(@q); if (defined($p)) { push @error, "have choice for $r needed by $p: @q"; } else { push @error, "have choice for $r: @q"; } } @todo = @todo_next; last if @todo_inst; } return undef, @error if @error; } return 1, (sort keys %p); } sub order { my ($config, @p) = @_; my $requires = $config->{'requiresh'}; my $recommends = $config->{'recommendsh'}; my $whatprovides = $config->{'whatprovidesh'}; my %deps; my %rdeps; my %needed; my %p = map {$_ => 1} @p; for my $p (@p) { my @r; for my $r (@{$requires->{$p} || []}) { my @q = @{$whatprovides->{$r} || addproviders($config, $r)}; push @r, grep {$_ ne $p && $p{$_}} @q; } if (%{$config->{'order'} || {}}) { push @r, grep {$_ ne $p && $config->{'order'}->{"$_:$p"}} @p; } @r = unify(@r); $deps{$p} = \@r; $needed{$p} = @r; push @{$rdeps{$_}}, $p for @r; } @p = sort {$needed{$a} <=> $needed{$b} || $a cmp $b} @p; my @good; my @res; # the big sort loop while (@p) { @good = grep {$needed{$_} == 0} @p; if (@good) { @p = grep {$needed{$_}} @p; push @res, @good; for my $p (@good) { $needed{$_}-- for @{$rdeps{$p}}; } next; } # uh oh, cycle alert. find and remove all cycles. my %notdone = map {$_ => 1} @p; $notdone{$_} = 0 for @res; # already did those my @todo = @p; while (@todo) { my $v = shift @todo; if (ref($v)) { $notdone{$$v} = 0; # finished this one next; } my $s = $notdone{$v}; next unless $s; my @e = grep {$notdone{$_}} @{$deps{$v}}; if (!@e) { $notdone{$v} = 0; # all deps done, mark as finished next; } if ($s == 1) { $notdone{$v} = 2; # now under investigation unshift @todo, @e, \$v; next; } # reached visited package, found a cycle! my @cyc = (); my $cycv = $v; # go back till $v is reached again while(1) { die unless @todo; $v = shift @todo; next unless ref($v); $v = $$v; $notdone{$v} = 1 if $notdone{$v} == 2; unshift @cyc, $v; last if $v eq $cycv; } unshift @todo, $cycv; print STDERR "cycle: ".join(' -> ', @cyc)."\n"; my $breakv; my @breakv = (@cyc, $cyc[0]); while (@breakv > 1) { last if $config->{'order'}->{"$breakv[0]:$breakv[1]"}; shift @breakv; } if (@breakv > 1) { $breakv = $breakv[0]; } else { $breakv = (sort {$needed{$a} <=> $needed{$b} || $a cmp $b} @cyc)[-1]; } push @cyc, $cyc[0]; # make it loop shift @cyc while $cyc[0] ne $breakv; $v = $cyc[1]; print STDERR " breaking dependency $breakv -> $v\n"; $deps{$breakv} = [ grep {$_ ne $v} @{$deps{$breakv}} ]; $rdeps{$v} = [ grep {$_ ne $breakv} @{$rdeps{$v}} ]; $needed{$breakv}--; } } return @res; } sub add_all_providers { my ($config, @p) = @_; my $whatprovides = $config->{'whatprovidesh'}; my $requires = $config->{'requiresh'}; my $recommends = $config->{'recommendsh'}; my %a; for my $p (@p) { for my $r (@{$requires->{$p} || [$p]}) { my $rn = (split(' ', $r, 2))[0]; $a{$_} = 1 for @{$whatprovides->{$rn} || []}; } } push @p, keys %a; return unify(@p); } ########################################################################### sub recipe2buildtype { my ($recipe) = @_; return undef unless defined $recipe; return $1 if $recipe =~ /\.(spec|dsc|kiwi|livebuild)$/; $recipe =~ s/.*\///; $recipe =~ s/^_service:.*://; return 'arch' if $recipe eq 'PKGBUILD'; return 'collax' if $recipe eq 'build.collax'; return 'snapcraft' if $recipe eq 'snapcraft.yaml'; return 'appimage' if $recipe eq 'appimage.yml'; return 'docker' if $recipe eq 'Dockerfile'; return 'fissile' if $recipe eq 'fissile.yml'; return 'preinstallimage' if $recipe eq '_preinstallimage'; return 'simpleimage' if $recipe eq 'simpleimage'; return 'helm' if $recipe eq 'Chart.yaml'; return 'flatpak' if $recipe =~ m/flatpak\.(?:ya?ml|json)$/; return undef; } sub show { my ($conffile, $fn, $field, $arch) = @ARGV; my $cf = read_config($arch, $conffile); die unless $cf; my $d = Build::parse($cf, $fn); die("$d->{'error'}\n") if $d->{'error'}; $d->{'sources'} = [ map {ref($d->{$_}) ? @{$d->{$_}} : $d->{$_}} grep {/^source/} sort keys %$d ]; $d->{'patches'} = [ map {ref($d->{$_}) ? @{$d->{$_}} : $d->{$_}} grep {/^patch/} sort keys %$d ]; my $x = $d->{$field}; $x = [ $x ] unless ref $x; print "$_\n" for @$x; } sub parse_preinstallimage { return undef unless $do_rpm; my $d = Build::Rpm::parse(@_); $d->{'name'} ||= 'preinstallimage'; return $d; } sub parse_simpleimage { return undef unless $do_rpm; my $d = Build::Rpm::parse(@_); $d->{'name'} ||= 'simpleimage'; if (!defined($d->{'version'})) { my @s = stat($_[1]); $d->{'version'} = strftime "%Y.%m.%d-%H.%M.%S", gmtime($s[9] || time); } return $d; } sub parse { my ($cf, $fn, @args) = @_; return Build::Rpm::parse($cf, $fn, @args) if $do_rpm && $fn =~ /\.spec$/; return Build::Deb::parse($cf, $fn, @args) if $do_deb && $fn =~ /\.dsc$/; return Build::Kiwi::parse($cf, $fn, @args) if $do_kiwi && $fn =~ /config\.xml$/; return Build::Kiwi::parse($cf, $fn, @args) if $do_kiwi && $fn =~ /\.kiwi$/; return Build::LiveBuild::parse($cf, $fn, @args) if $do_livebuild && $fn =~ /\.livebuild$/; my $fnx = $fn; $fnx =~ s/.*\///; $fnx =~ s/^[0-9a-f]{32,}-//; # hack for OBS srcrep implementation $fnx =~ s/^_service:.*://; return parse_simpleimage($cf, $fn, @args) if $fnx eq 'simpleimage'; return Build::Snapcraft::parse($cf, $fn, @args) if $do_snapcraft && $fnx eq 'snapcraft.yaml'; return Build::Appimage::parse($cf, $fn, @args) if $do_appimage && $fnx eq 'appimage.yml'; return Build::Docker::parse($cf, $fn, @args) if $do_docker && $fnx eq 'Dockerfile'; return Build::Fissile::parse($cf, $fn, @args) if $do_fissile && $fnx eq 'fissile.yml'; return Build::Arch::parse($cf, $fn, @args) if $do_arch && $fnx eq 'PKGBUILD'; return Build::Collax::parse($cf, $fn, @args) if $do_collax && $fnx eq 'build.collax'; return parse_preinstallimage($cf, $fn, @args) if $fnx eq '_preinstallimage'; return Build::Helm::parse($cf, $fn, @args) if $fnx eq 'Chart.yaml'; return Build::Flatpak::parse($cf, $fn, @args) if $fnx =~ m/flatpak\.(?:ya?ml|json)$/; return undef; } sub parse_typed { my ($cf, $fn, $buildtype, @args) = @_; $buildtype ||= ''; return Build::Rpm::parse($cf, $fn, @args) if $do_rpm && $buildtype eq 'spec'; return Build::Deb::parse($cf, $fn, @args) if $do_deb && $buildtype eq 'dsc'; return Build::Kiwi::parse($cf, $fn, @args) if $do_kiwi && $buildtype eq 'kiwi'; return Build::LiveBuild::parse($cf, $fn, @args) if $do_livebuild && $buildtype eq 'livebuild'; return Build::Snapcraft::parse($cf, $fn, @args) if $do_snapcraft && $buildtype eq 'snapcraft'; return Build::Appimage::parse($cf, $fn, @args) if $do_appimage && $buildtype eq 'appimage'; return Build::Docker::parse($cf, $fn, @args) if $do_docker && $buildtype eq 'docker'; return Build::Fissile::parse($cf, $fn, @args) if $do_fissile && $buildtype eq 'fissile'; return parse_simpleimage($cf, $fn, @args) if $buildtype eq 'simpleimage'; return Build::Arch::parse($cf, $fn, @args) if $do_arch && $buildtype eq 'arch'; return Build::Collax::parse($cf, $fn, @args) if $do_collax && $buildtype eq 'collax'; return parse_preinstallimage($cf, $fn, @args) if $buildtype eq 'preinstallimage'; return Build::Helm::parse($cf, $fn, @args) if $buildtype eq 'helm'; return Build::Flatpak::parse($cf, $fn, @args) if $buildtype eq 'flatpak'; return undef; } sub query { my ($binname, %opts) = @_; my $handle = $binname; if (ref($binname) eq 'ARRAY') { $handle = $binname->[1]; $binname = $binname->[0]; } return Build::Rpm::query($handle, %opts) if $do_rpm && $binname =~ /\.d?rpm$/; return Build::Deb::query($handle, %opts) if $do_deb && $binname =~ /\.deb$/; return Build::Kiwi::queryiso($handle, %opts) if $do_kiwi && $binname =~ /\.iso$/; return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz|\.zst)?$/; return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.arch$/; return undef; } sub showquery { my ($fn, $field) = @ARGV; my %opts; $opts{'evra'} = 1 if grep {$_ eq $field} qw{epoch version release arch buildid}; $opts{'weakdeps'} = 1 if grep {$_ eq $field} qw{suggests enhances recommends supplements}; $opts{'conflicts'} = 1 if grep {$_ eq $field} qw{conflicts obsoletes}; $opts{'description'} = 1 if grep {$_ eq $field} qw{summary description}; $opts{'filelist'} = 1 if $field eq 'filelist'; $opts{'buildtime'} = 1 if grep {$_ eq $field} qw{buildtime buildid}; my $d = Build::query($fn, %opts); die("cannot query $fn\n") unless $d; $d->{'buildid'} = getbuildid($d); my $x = $d->{$field}; $x = [] unless defined $x; $x = [ $x ] unless ref $x; print "$_\n" for @$x; } sub queryhdrmd5 { my ($binname) = @_; return Build::Rpm::queryhdrmd5(@_) if $do_rpm && $binname =~ /\.d?rpm$/; return Build::Deb::queryhdrmd5(@_) if $do_deb && $binname =~ /\.deb$/; return Build::Kiwi::queryhdrmd5(@_) if $do_kiwi && $binname =~ /\.iso$/; return Build::Kiwi::queryhdrmd5(@_) if $do_kiwi && $binname =~ /\.raw$/; return Build::Kiwi::queryhdrmd5(@_) if $do_kiwi && $binname =~ /\.raw.install$/; return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz|\.zst)?$/; return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.arch$/; return undef; } sub queryinstalled { my ($binarytype, @args) = @_; return Build::Rpm::queryinstalled(@args) if $binarytype eq 'rpm'; return Build::Deb::queryinstalled(@args) if $binarytype eq 'deb'; return Build::Arch::queryinstalled(@args) if $binarytype eq 'arch'; return undef; } 1; obs-build-20210120/Build/000077500000000000000000000000001400202264700146575ustar00rootroot00000000000000obs-build-20210120/Build/Appimage.pm000066400000000000000000000035311400202264700167420ustar00rootroot00000000000000################################################################ # # Copyright (c) 2017 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::Appimage; use strict; use Build::Deb; use Build::Rpm; eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; }; *YAML::XS::LoadFile = sub {die("YAML::XS is not available\n")} unless defined &YAML::XS::LoadFile; sub parse { my ($cf, $fn) = @_; my $yml; eval { $yml = YAML::XS::LoadFile($fn); }; return {'error' => "Failed to parse yml file"} unless $yml; my $ret = {}; $ret->{'name'} = $yml->{'app'}; $ret->{'version'} = $yml->{'version'} || "0"; my @packdeps; if ($yml->{'ingredients'}) { for my $pkg (@{$yml->{'ingredients'}->{'packages'} || {}}) { push @packdeps, $pkg; } } if ($yml->{'build'} && $yml->{'build'}->{'packages'}) { for my $pkg (@{$yml->{'build'}->{'packages'}}) { push @packdeps, $pkg; } } $ret->{'deps'} = \@packdeps; my @sources; if ($yml->{'build'} && $yml->{'build'}->{'files'}) { for my $source (@{$yml->{'build'}->{'files'}}) { push @sources, $source; } } $ret->{'sources'} = \@sources; return $ret; } 1; obs-build-20210120/Build/Arch.pm000066400000000000000000000237151400202264700161020ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Arch; use strict; use Digest::MD5; eval { require Archive::Tar; }; *Archive::Tar::new = sub {die("Archive::Tar is not available\n")} unless defined &Archive::Tar::new; # Archlinux support, based on the GSoC work of Nikolay Rysev # parse a PKGBUILD file sub expandvars { my ($str, $vars) = @_; $str =~ s/\$([a-zA-Z0-9_]+|\{([^\}]+)\})/join(' ', @{$vars->{$2 || $1} || []})/ge; return $str; } sub quote { my ($str, $q, $vars) = @_; $str = expandvars($str, $vars) if $q ne "'" && $str =~ /\$/; $str =~ s/([ \t\"\'\$])/sprintf("%%%02X", ord($1))/ge; return $str; } sub unquotesplit { my ($str, $vars) = @_; $str =~ s/%/%25/g; $str =~ s/^[ \t]+//; while ($str =~ /([\"\'])/) { my $q = $1; last unless $str =~ s/$q(.*?)$q/quote($1, $q, $vars)/e; } $str = expandvars($str, $vars) if $str =~ /\$/; my @args = split(/[ \t]+/, $str); for (@args) { s/%([a-fA-F0-9]{2})/chr(hex($1))/ge } return @args; } sub parse { my ($config, $pkgbuild) = @_; my $ret; local *PKG; if (!open(PKG, '<', $pkgbuild)) { $ret->{'error'} = "$pkgbuild: $!"; return $ret; } my %vars; my @ifs; while () { chomp; next if /^\s*$/; next if /^\s*#/; s/^\s+//; if (/^(el)?if\s+(?:(?:test|\[)\s+(-n|-z)\s+)?(.*?)\s*\]?\s*;\s*then\s*$/) { if ($1) { $ifs[-1] += 1; next if $ifs[-1] != 1; pop @ifs; } my $flag = $2 || '-n'; my $t = join('', unquotesplit($3, \%vars)); $t = $t eq '' ? 'true' : '' if $flag eq '-z'; push @ifs, $t ne '' ? 1 : 0; next; } if (@ifs) { if (/^fi\s*$/) { pop @ifs; next; } elsif (/^else\s*$/) { $ifs[-1] += 1; next; } next if grep {$_ != 1} @ifs; } last unless /^([a-zA-Z0-9_]*)(\+?)=(\(?)(.*?)$/; my $var = $1; my $app = $2; my $val = $4; if ($3) { while ($val !~ s/\)\s*(?:#.*)?$//s) { my $nextline = ; last unless defined $nextline; chomp $nextline; $val .= ' ' . $nextline; } } if ($app) { push @{$vars{$var}}, unquotesplit($val, \%vars); } else { $vars{$var} = [ unquotesplit($val, \%vars) ]; } } close PKG; $ret->{'name'} = $vars{'pkgname'}->[0] if $vars{'pkgname'}; $ret->{'version'} = $vars{'pkgver'}->[0] if $vars{'pkgver'}; $ret->{'deps'} = []; push @{$ret->{'deps'}}, @{$vars{$_} || []} for qw{makedepends checkdepends depends}; # get arch from macros my ($arch) = Build::gettargetarchos($config); # map to arch linux name and add arch dependent $arch = 'i686' if $arch =~ /^i[345]86$/; push @{$ret->{'deps'}}, @{$vars{"${_}_$arch"} || []} for qw{makedepends checkdepends depends}; # Maintain architecture-specific sources for officially supported architectures for my $asuf ('', '_i686', '_x86_64') { $ret->{"source$asuf"} = $vars{"source$asuf"} if $vars{"source$asuf"}; } return $ret; } sub islzma { my ($fn) = @_; local *F; return 0 unless open(F, '<', $fn); my $h; return 0 unless read(F, $h, 5) == 5; close F; return $h eq "\3757zXZ"; } sub iszstd { my ($fn) = @_; local *F; return 0 unless open(F, '<', $fn); my $h; return 0 unless read(F, $h, 4) == 4; close F; return $h eq "(\265\057\375"; } sub lzmadec { my ($fn) = @_; my $nh; my $pid = open($nh, '-|'); return undef unless defined $pid; if (!$pid) { $SIG{'PIPE'} = 'DEFAULT'; exec('xzdec', '-dc', $fn); die("xzdec: $!\n"); } return $nh; } sub zstddec { my ($fn) = @_; my $nh; my $pid = open($nh, '-|'); return undef unless defined $pid; if (!$pid) { $SIG{'PIPE'} = 'DEFAULT'; exec('zstdcat', $fn); die("zstdcat $!\n"); } return $nh; } sub queryvars { my ($handle) = @_; if (ref($handle)) { die("arch pkg query not implemented for file handles\n"); } if ($handle =~ /\.zst$/ || iszstd($handle)) { $handle = zstddec($handle); } elsif ($handle =~ /\.xz$/ || islzma($handle)) { $handle = lzmadec($handle); } my $tar = Archive::Tar->new; my @read = $tar->read($handle, 1, {'filter' => '^\.PKGINFO$', 'limit' => 1}); die("$handle: not an arch package file\n") unless @read == 1; my $pkginfo = $read[0]->get_content; die("$handle: not an arch package file\n") unless $pkginfo; my %vars; $vars{'_pkginfo'} = $pkginfo; for my $l (split('\n', $pkginfo)) { next unless $l =~ /^(.*?) = (.*)$/; push @{$vars{$1}}, $2; } return \%vars; } sub queryfiles { my ($handle) = @_; if (ref($handle)) { die("arch pkg query not implemented for file handles\n"); } if ($handle =~ /\.zst$/ || iszstd($handle)) { $handle = zstddec($handle); } elsif ($handle =~ /\.xz$/ || islzma($handle)) { $handle = lzmadec($handle); } my @files; my $tar = Archive::Tar->new; # we use filter_cb here so that Archive::Tar skips the file contents $tar->read($handle, 1, {'filter_cb' => sub { my ($entry) = @_; push @files, $entry->name unless $entry->is_longlink || (@files && $files[-1] eq $entry->name); return 0; }}); shift @files if @files && $files[0] eq '.PKGINFO'; return \@files; } sub query { my ($handle, %opts) = @_; my $vars = queryvars($handle); my $ret = {}; $ret->{'name'} = $vars->{'pkgname'}->[0] if $vars->{'pkgname'}; $ret->{'hdrmd5'} = Digest::MD5::md5_hex($vars->{'_pkginfo'}); $ret->{'provides'} = $vars->{'provides'} || []; $ret->{'requires'} = $vars->{'depend'} || []; if ($vars->{'pkgname'} && $opts{'addselfprovides'}) { my $selfprovides = $vars->{'pkgname'}->[0]; $selfprovides .= "=$vars->{'pkgver'}->[0]" if $vars->{'pkgver'}; push @{$ret->{'provides'}}, $selfprovides unless @{$ret->{'provides'} || []} && $ret->{'provides'}->[-1] eq $selfprovides; } if ($opts{'evra'}) { if ($vars->{'pkgver'}) { my $evr = $vars->{'pkgver'}->[0]; if ($evr =~ /^([0-9]+):(.*)$/) { $ret->{'epoch'} = $1; $evr = $2; } $ret->{'version'} = $evr; if ($evr =~ /^(.*)-(.*?)$/) { $ret->{'version'} = $1; $ret->{'release'} = $2; } } $ret->{'arch'} = $vars->{'arch'}->[0] if $vars->{'arch'}; } if ($opts{'description'}) { $ret->{'description'} = $vars->{'pkgdesc'}->[0] if $vars->{'pkgdesc'}; } if ($opts{'conflicts'}) { $ret->{'conflicts'} = $vars->{'conflict'} if $vars->{'conflict'}; $ret->{'obsoletes'} = $vars->{'replaces'} if $vars->{'replaces'}; } if ($opts{'weakdeps'}) { my @suggests = @{$vars->{'optdepend'} || []}; s/:.*// for @suggests; $ret->{'suggests'} = \@suggests if @suggests; } # arch packages don't seem to have a source :( # fake it so that the package isn't confused with a src package $ret->{'source'} = $ret->{'name'} if defined $ret->{'name'}; $ret->{'buildtime'} = $vars->{'builddate'}->[0] if $opts{'buildtime'} && $vars->{'builddate'}; return $ret; } sub queryhdrmd5 { my ($handle) = @_; if (ref($handle)) { die("arch pkg query not implemented for file handles\n"); } if ($handle =~ /\.zst$/ || iszstd($handle)) { $handle = zstddec($handle); } elsif ($handle =~ /\.xz$/ || islzma($handle)) { $handle = lzmadec($handle); } my $tar = Archive::Tar->new; my @read = $tar->read($handle, 1, {'filter' => '^\.PKGINFO$', 'limit' => 1}); die("$handle: not an arch package file\n") unless @read == 1; my $pkginfo = $read[0]->get_content; die("$handle: not an arch package file\n") unless $pkginfo; return Digest::MD5::md5_hex($pkginfo); } sub parserepodata { my ($d, $data) = @_; $d ||= {}; $data =~ s/^\n+//s; my @parts = split(/\n\n+/s, $data); for my $part (@parts) { my @p = split("\n", $part); my $p = shift @p; if ($p eq '%NAME%') { $d->{'name'} = $p[0]; } elsif ($p eq '%VERSION%') { $d->{'version'} = $p[0]; } elsif ($p eq '%ARCH%') { $d->{'arch'} = $p[0]; } elsif ($p eq '%BUILDDATE%') { $d->{'buildtime'} = $p[0]; } elsif ($p eq '%FILENAME%') { $d->{'filename'} = $p[0]; } elsif ($p eq '%PROVIDES%') { push @{$d->{'provides'}}, @p; } elsif ($p eq '%DEPENDS%') { push @{$d->{'requires'}}, @p; } elsif ($p eq '%OPTDEPENDS%') { push @{$d->{'suggests'}}, @p; } elsif ($p eq '%CONFLICTS%') { push @{$d->{'conflicts'}}, @p; } elsif ($p eq '%REPLACES%') { push @{$d->{'obsoletes'}}, @p; } elsif ($p eq '%MD5SUM%') { $d->{'checksum_md5'} = $p[0]; } elsif ($p eq '%SHA256SUM%') { $d->{'checksum_sha256'} = $p[0]; } } return $d; } sub queryinstalled { my ($root, %opts) = @_; $root = '' if !defined($root) || $root eq '/'; local *D; local *F; opendir(D, "$root/var/lib/pacman/local") || return []; my @pn = sort(grep {!/^\./} readdir(D)); closedir(D); my @pkgs; for my $pn (@pn) { next unless open(F, '<', "$root/var/lib/pacman/local/$pn/desc"); my $data = ''; 1 while sysread(F, $data, 8192, length($data)); close F; my $d = parserepodata(undef, $data); next unless defined $d->{'name'}; my $q = {}; for (qw{name arch buildtime version}) { $q->{$_} = $d->{$_} if defined $d->{$_}; } $q->{'epoch'} = $1 if $q->{'version'} =~ s/^(\d+)://s; $q->{'release'} = $1 if $q->{'version'} =~ s/-([^-]*)$//s; push @pkgs, $q; } return \@pkgs; } 1; obs-build-20210120/Build/Archrepo.pm000066400000000000000000000066071400202264700167710ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Archrepo; use strict; use Build::Arch; eval { require Archive::Tar; }; if (!defined &Archive::Tar::iter) { *Archive::Tar::iter = sub { my ($class, $filename) = @_; die("Archive::Tar is not available\n") unless defined &Archive::Tar::new; Archive::Tar->new(); my $handle = $class->_get_handle($filename, 1, 'rb') or return undef; my @data; return sub { return shift(@data) if !$handle || @data; my $files = $class->_read_tar($handle, { limit => 1 }); @data = @$files if (ref($files) || '') eq 'ARRAY'; undef $handle unless @data; return shift @data; }; }; } sub addpkg { my ($res, $data, $options) = @_; return unless defined $data->{'version'}; if ($options->{'addselfprovides'}) { my $selfprovides = $data->{'name'}; $selfprovides .= "=$data->{'version'}" if defined $data->{'version'}; push @{$data->{'provides'}}, $selfprovides unless @{$data->{'provides'} || []} && $data->{'provides'}->[-1] eq $selfprovides; } if ($options->{'normalizedeps'}) { # our normalized dependencies have spaces around the op for my $dep (qw {provides requires conflicts obsoletes suggests}) { next unless $data->{$dep}; s/ ?([<=>]+) ?/ $1 / for @{$data->{$dep}}; } } if (defined($data->{'version'})) { # split version into evr $data->{'epoch'} = $1 if $data->{'version'} =~ s/^(\d+)://s; $data->{'release'} = $1 if $data->{'version'} =~ s/-([^-]*)$//s; } $data->{'location'} = delete($data->{'filename'}) if exists $data->{'filename'}; if ($options->{'withchecksum'}) { for (qw {md5 sha1 sha256}) { my $c = delete($data->{"checksum_$_"}); $data->{'checksum'} = "$_:$c" if $c; } } else { delete $data->{"checksum_$_"} for qw {md5 sha1 sha256}; } if (ref($res) eq 'CODE') { $res->($data); } else { push @$res, $data; } } sub parse { my ($in, $res, %options) = @_; $res ||= []; die("Build::Archrepo::parse needs a filename\n") if ref($in); die("$in: $!\n") unless -e $in; my $repodb = Archive::Tar->iter($in, 1); die("$in is not a tar archive\n") unless $repodb; my $e; my $lastfn = ''; my $d; while ($e = $repodb->()) { next unless $e->type() == Archive::Tar::Constant::FILE(); my $fn = $e->name(); next unless $fn =~ s/\/(?:depends|desc|files)$//s; if ($lastfn ne $fn) { addpkg($res, $d, \%options) if $d->{'name'}; $d = {}; $lastfn = $fn; } Build::Arch::parserepodata($d, $e->get_content()); } addpkg($res, $d, \%options) if $d->{'name'}; return $res; } 1; obs-build-20210120/Build/Collax.pm000066400000000000000000000031051400202264700164360ustar00rootroot00000000000000# # Copyright 2015 Zarafa B.V. and its licensors # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 or (at your option) any later version. # # 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. # package Build::Collax; use strict; sub parse { my($buildconf, $fn) = @_; my @bscript; if (ref($fn) eq "ARRAY") { @bscript = @$fn; $fn = undef; } elsif (ref($fn) ne "") { die "Unhandled ref type in collax"; } else { local *FH; if (!open(FH, "<", $fn)) { return {"error" => "$fn: $!"}; } @bscript = ; chomp(@bscript); close(FH); } my $ret = {"deps" => []}; for (my $i = 0; $i <= $#bscript; ++$i) { next unless $bscript[$i] =~ m{^\w+=}; my $key = lc(substr($&, 0, -1)); my $value = $'; if ($value =~ m{^([\'\"])}) { $value = substr($value, 1); while ($value !~ m{[\'\"]}) { my @cut = splice(@bscript, $i + 1, 1); $value .= $cut[0]; } $value =~ s{[\'\"]}{}s; $value =~ s{\n}{ }gs; } if ($key eq "package") { $ret->{"name"} = $value; } elsif ($key eq "version") { $ret->{$key} = $value; } elsif ($key eq "builddepends" || $key eq "extradepends") { $value =~ s{^\s+}{}gs; $value =~ s{\s+$}{}gs; $value =~ s{,}{ }gs; push(@{$ret->{"deps"}}, split(/\s+/, $value)); } } return $ret; } 1; obs-build-20210120/Build/Deb.pm000066400000000000000000000326141400202264700157150ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Deb; use strict; use Digest::MD5; my $have_zlib; eval { require Compress::Zlib; $have_zlib = 1; }; my %obs2debian = ( "i486" => "i386", "i586" => "i386", "i686" => "i386", "ppc" => "powerpc", "ppc64le" => "ppc64el", "x86_64" => "amd64", "armv4l" => "armel", "armv5l" => "armel", "armv6l" => "armel", "armv7el" => "armel", "armv7l" => "armhf", "armv7hl" => "armhf", "aarch64" => "arm64", ); sub basearch { my ($arch) = @_; return 'all' if !defined($arch) || $arch eq 'noarch'; return $obs2debian{$arch} || $arch; } sub obsarch { my ($arch) = @_; my @obs = grep {$obs2debian{$_} eq $arch} sort keys %obs2debian; return @obs if @obs; return $arch; } sub parse { my ($bconf, $fn) = @_; my $ret; my @control; # get arch and os from macros my ($arch, $os) = Build::gettargetarchos($bconf); # map to debian names $os = 'linux' unless defined $os; $arch = basearch($arch); if (ref($fn) eq 'ARRAY') { @control = @$fn; } else { local *F; if (!open(F, '<', $fn)) { $ret->{'error'} = "$fn: $!"; return $ret; } @control = ; close F; chomp @control; } splice(@control, 0, 3) if @control > 3 && $control[0] =~ /^-----BEGIN/; my $name; my $version; my @deps; my @exclarch; while (@control) { my $c = shift @control; last if $c eq ''; # new paragraph my ($tag, $data) = split(':', $c, 2); next unless defined $data; $tag = uc($tag); while (@control && $control[0] =~ /^\s/) { $data .= "\n".substr(shift @control, 1); } $data =~ s/^\s+//s; $data =~ s/\s+$//s; if ($tag eq 'VERSION') { $version = $data; $version =~ s/-[^-]+$//; } elsif ($tag eq 'ARCHITECTURE') { my @archs = split('\s+', $data); map { s/\Q$os\E-//; s/any-// } @archs; next if grep { $_ eq "any" || $_ eq "all" } @archs; @exclarch = map { obsarch($_) } @archs; # unify my %exclarch = map {$_ => 1} @exclarch; @exclarch = sort keys %exclarch; } elsif ($tag eq 'SOURCE') { $name = $data; } elsif ($tag eq 'BUILD-DEPENDS' || $tag eq 'BUILD-CONFLICTS' || $tag eq 'BUILD-IGNORE' || $tag eq 'BUILD-DEPENDS-INDEP' || $tag eq 'BUILD-DEPENDS-ARCH' || $tag eq 'BUILD-CONFLICTS-ARCH' ) { my @d = split(/\s*,\s*/, $data); for my $d (@d) { my @alts = split('\s*\|\s*', $d); my @needed; for my $c (@alts) { if ($c =~ /\s+<[^>]+>$/) { my @build_profiles; # Empty for now my $bad = 1; while ($c =~ s/\s+<([^>]+)>$//) { next if (!$bad); my $list_valid = 1; for my $term (split(/\s+/, $1)) { my $isneg = ($term =~ s/^\!//); my $profile_match = grep(/^$term$/, @build_profiles); if (( $profile_match && $isneg) || (!$profile_match && !$isneg)) { $list_valid = 0; last; } } $bad = 0 if ($list_valid); } next if ($bad); } if ($c =~ /^(.*?)\s*\[(.*)\]$/) { $c = $1; my $isneg = 0; my $bad; for my $q (split('[\s,]', $2)) { $isneg = 1 if $q =~ s/^\!//; $bad = 1 if !defined($bad) && !$isneg; if ($isneg) { if ($q eq $arch || $q eq 'any' || $q eq "$os-$arch" || $q eq "$os-any" || $q eq "any-$arch") { $bad = 1; last; } } elsif ($q eq $arch || $q eq 'any' || $q eq "$os-$arch" || $q eq "$os-any" || $q eq "any-$arch") { $bad = 0; } } next if ($bad); } $c =~ s/^([^:\s]*):(any|native)(.*)$/$1$3/; push @needed, $c; } next unless @needed; $d = join(' | ', @needed); $d =~ s/ \(([^\)]*)\)/ $1/g; $d =~ s/>>/>/g; $d =~ s/<{'name'} = $name; $ret->{'version'} = $version; $ret->{'deps'} = \@deps; $ret->{'exclarch'} = \@exclarch if @exclarch; return $ret; } sub uncompress { my ($data, $tool) = @_; return $data if $tool eq 'cat'; return Compress::Zlib::memGunzip($data) if $have_zlib && $tool eq 'gunzip'; local (*TMP, *TMP2); open(TMP, "+>", undef) or die("could not open tmpfile\n"); syswrite TMP, $data; my $pid = open(TMP2, "-|"); die("fork: $!\n") unless defined $pid; if (!$pid) { open(STDIN, "<&TMP"); seek(STDIN, 0, 0); # these two lines are a workaround for a perl bug mixing up FD sysseek(STDIN, 0, 0); exec($tool); die("$tool: $!\n"); } close(TMP); $data = ''; 1 while sysread(TMP2, $data, 1024, length($data)) > 0; if (!close(TMP2)) { warn("$tool error: $?\n"); return undef; } return $data; } sub control2res { my ($control) = @_; my %res; my @control = split("\n", $control); while (@control) { my $c = shift @control; last if $c eq ''; # new paragraph my ($tag, $data) = split(':', $c, 2); next unless defined $data; $tag = uc($tag); while (@control && $control[0] =~ /^\s/) { $data .= "\n".substr(shift @control, 1); } $data =~ s/^\s+//s; $data =~ s/\s+$//s; $res{$tag} = $data; } return %res; } sub debq { my ($fn) = @_; local *DEBF; if (ref($fn) eq 'GLOB') { *DEBF = *$fn; } elsif (!open(DEBF, '<', $fn)) { warn("$fn: $!\n"); return (); } my $data = ''; sysread(DEBF, $data, 4096); if (length($data) < 8+60) { warn("$fn: not a debian package - header too short\n"); close DEBF unless ref $fn; return (); } if (substr($data, 0, 8+16) ne "!\ndebian-binary " && substr($data, 0, 8+16) ne "!\ndebian-binary/ ") { close DEBF unless ref $fn; return (); } my $len = substr($data, 8+48, 10); $len += $len & 1; if (length($data) < 8+60+$len+60) { my $r = 8+60+$len+60 - length($data); $r -= length($data); if ((sysread(DEBF, $data, $r < 4096 ? 4096 : $r, length($data)) || 0) < $r) { warn("$fn: unexpected EOF\n"); close DEBF unless ref $fn; return (); } } $data = substr($data, 8 + 60 + $len); my $controlname = substr($data, 0, 16); my $decompressor; if ($controlname eq 'control.tar.gz ' || $controlname eq 'control.tar.gz/ ') { $decompressor = 'gunzip'; } elsif ($controlname eq 'control.tar.xz ' || $controlname eq 'control.tar.xz/ ') { $decompressor = 'unxz'; } elsif ($controlname eq 'control.tar ' || $controlname eq 'control.tar/ ') { $decompressor = 'cat'; } else { warn("$fn: control.tar is not second ar entry\n"); close DEBF unless ref $fn; return (); } $len = substr($data, 48, 10); if (length($data) < 60+$len) { my $r = 60+$len - length($data); if ((sysread(DEBF, $data, $r, length($data)) || 0) < $r) { warn("$fn: unexpected EOF\n"); close DEBF unless ref $fn; return (); } } close DEBF unless ref($fn); $data = substr($data, 60, $len); my $controlmd5 = Digest::MD5::md5_hex($data); # our header signature $data = uncompress($data, $decompressor); if (!$data) { warn("$fn: corrupt control.tar file\n"); return (); } my $control; while (length($data) >= 512) { my $n = substr($data, 0, 100); $n =~ s/\0.*//s; my $len = oct('00'.substr($data, 124,12)); my $blen = ($len + 1023) & ~511; if (length($data) < $blen) { warn("$fn: corrupt control.tar file\n"); return (); } if ($n eq './control' || $n eq "control") { $control = substr($data, 512, $len); last; } $data = substr($data, $blen); } my %res = control2res($control); $res{'CONTROL_MD5'} = $controlmd5; return %res; } sub query { my ($handle, %opts) = @_; my %res = debq($handle); return undef unless %res; my $name = $res{'PACKAGE'}; my $src = $name; if ($res{'SOURCE'}) { $src = $res{'SOURCE'}; $src =~ s/\s.*$//; } my @provides = split(',\s*', $res{'PROVIDES'} || ''); if ($opts{'addselfprovides'}) { push @provides, "$name (= $res{'VERSION'})"; } my @depends = split(',\s*', $res{'DEPENDS'} || ''); push @depends, split(',\s*', $res{'PRE-DEPENDS'} || ''); my $data = { name => $name, hdrmd5 => $res{'CONTROL_MD5'}, provides => \@provides, requires => \@depends, }; if ($opts{'conflicts'}) { my @conflicts = split(',\s*', $res{'CONFLICTS'} || ''); push @conflicts, split(',\s*', $res{'BREAKS'} || ''); $data->{'conflicts'} = \@conflicts if @conflicts; } if ($opts{'weakdeps'}) { for my $dep ('SUGGESTS', 'RECOMMENDS', 'ENHANCES') { $data->{lc($dep)} = [ split(',\s*', $res{$dep} || '') ] if defined $res{$dep}; } } $data->{'source'} = $src if $src ne ''; if ($opts{'evra'}) { $res{'VERSION'} =~ /^(?:(\d+):)?(.*?)(?:-([^-]*))?$/s; $data->{'epoch'} = $1 if defined $1; $data->{'version'} = $2; $data->{'release'} = $3 if defined $3; $data->{'arch'} = $res{'ARCHITECTURE'}; } if ($opts{'description'}) { $data->{'description'} = $res{'DESCRIPTION'}; } if ($opts{'normalizedeps'}) { for my $dep (qw{provides requires conflicts suggests enhances recommends}) { next unless $data->{$dep}; for (@{$data->{$dep}}) { s/ \(([^\)]*)\)/ $1/g; s/<>/>/g; } } } return $data; } sub queryhdrmd5 { my ($bin) = @_; local *F; open(F, '<', $bin) || die("$bin: $!\n"); my $data = ''; sysread(F, $data, 4096); if (length($data) < 8+60) { warn("$bin: not a debian package - header too short\n"); close F; return undef; } if (substr($data, 0, 8+16) ne "!\ndebian-binary " && substr($data, 0, 8+16) ne "!\ndebian-binary/ ") { warn("$bin: not a debian package - no \"debian-binary\" entry\n"); close F; return undef; } my $len = substr($data, 8+48, 10); $len += $len & 1; if (length($data) < 8+60+$len+60) { my $r = 8+60+$len+60 - length($data); $r -= length($data); if ((sysread(F, $data, $r < 4096 ? 4096 : $r, length($data)) || 0) < $r) { warn("$bin: unexpected EOF\n"); close F; return undef; } } $data = substr($data, 8 + 60 + $len); my $controlname = substr($data, 0, 16); if ($controlname ne 'control.tar.gz ' && $controlname ne 'control.tar.gz/ ' && $controlname ne 'control.tar.xz ' && $controlname ne 'control.tar.xz/ ' && $controlname ne 'control.tar ' && $controlname ne 'control.tar/ ') { warn("$bin: control.tar is not second ar entry\n"); close F; return undef; } $len = substr($data, 48, 10); if (length($data) < 60+$len) { my $r = 60+$len - length($data); if ((sysread(F, $data, $r, length($data)) || 0) < $r) { warn("$bin: unexpected EOF\n"); close F; return undef; } } close F; $data = substr($data, 60, $len); return Digest::MD5::md5_hex($data); } sub verscmp_part { my ($s1, $s2) = @_; return 0 if $s1 eq $s2; $s1 =~ s/([0-9]+)/substr("00000000000000000000000000000000$1", -32, 32)/ge; $s2 =~ s/([0-9]+)/substr("00000000000000000000000000000000$1", -32, 32)/ge; $s1 .= "\0"; $s2 .= "\0"; $s1 =~ tr[\176\000-\037\060-\071\101-\132\141-\172\040-\057\072-\100\133-\140\173-\175][\000-\176]; $s2 =~ tr[\176\000-\037\060-\071\101-\132\141-\172\040-\057\072-\100\133-\140\173-\175][\000-\176]; return $s1 cmp $s2; } sub verscmp { my ($s1, $s2) = @_; my ($e1, $v1, $r1) = $s1 =~ /^(?:(\d+):)?(.*?)(?:-([^-]*))?$/s; $e1 = 0 unless defined $e1; my ($e2, $v2, $r2) = $s2 =~ /^(?:(\d+):)?(.*?)(?:-([^-]*))?$/s; $e2 = 0 unless defined $e2; if ($e1 ne $e2) { my $r = verscmp_part($e1, $e2); return $r if $r; } my $r = verscmp_part($v1, $v2); return $r if $r; $r1 = '' unless defined $r1; $r2 = '' unless defined $r2; return verscmp_part($r1, $r2); } sub queryinstalled { my ($root, %opts) = @_; $root = '' if !defined($root) || $root eq '/'; my @pkgs; local *F; if (open(F, '<', "$root/var/lib/dpkg/status")) { my $ctrl = ''; while() { if ($_ eq "\n") { my %res = control2res($ctrl); if (defined($res{'PACKAGE'})) { my $data = {'name' => $res{'PACKAGE'}}; $res{'VERSION'} =~ /^(?:(\d+):)?(.*?)(?:-([^-]*))?$/s; $data->{'epoch'} = $1 if defined $1; $data->{'version'} = $2; $data->{'release'} = $3 if defined $3; $data->{'arch'} = $res{'ARCHITECTURE'}; push @pkgs, $data; } $ctrl = ''; next; } $ctrl .= $_; } close F; } return \@pkgs; } 1; obs-build-20210120/Build/Debrepo.pm000066400000000000000000000072751400202264700166100ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Debrepo; use strict; sub addpkg { my ($res, $data, $options) = @_; return unless defined $data->{'version'}; my $selfprovides; $selfprovides = "= $data->{'version'}" if $options->{'addselfprovides'}; # split version into evr $data->{'epoch'} = $1 if $data->{'version'} =~ s/^(\d+)://s; $data->{'release'} = $1 if $data->{'version'} =~ s/-([^-]*)$//s; for my $d (qw{provides requires conflicts recommends suggests enhances breaks prerequires}) { next unless $data->{$d}; if ($options->{'normalizedeps'}) { $data->{$d} =~ s/\(([^\)]*)\)/$1/g; $data->{$d} =~ s/<{$d} =~ s/>>/>/g; } $data->{$d} = [ split(/\s*,\s*/, $data->{$d}) ]; } push @{$data->{'requires'}}, @{$data->{'prerequires'}} if $data->{'prerequires'}; delete $data->{'prerequires'}; push @{$data->{'conflicts'}}, @{$data->{'breaks'}} if $data->{'breaks'}; delete $data->{'breaks'}; if (defined($selfprovides)) { $selfprovides = "($selfprovides)" unless $options->{'normalizedeps'}; $selfprovides = "$data->{'name'} $selfprovides"; push @{$data->{'provides'}}, $selfprovides unless @{$data->{'provides'} || []} && $data->{'provides'}->[-1] eq $selfprovides; } if ($options->{'withchecksum'}) { for (qw {md5 sha1 sha256}) { my $c = delete($data->{"checksum_$_"}); $data->{'checksum'} = "$_:$c" if $c; } } if (ref($res) eq 'CODE') { $res->($data); } else { push @$res, $data; } } my %tmap = ( 'package' => 'name', 'version' => 'version', 'architecture' => 'arch', 'provides' => 'provides', 'depends' => 'requires', 'pre-depends' => 'prerequires', 'conflicts' => 'conflicts', 'breaks' => 'breaks', 'recommends' => 'recommends', 'suggests' => 'suggests', 'enhances' => 'enhances', 'filename' => 'location', 'source' => 'source', ); my %tmap_checksums = ( 'md5sum' => 'checksum_md5', 'sha1' => 'checksum_sha1', 'sha256' => 'checksum_sha256', ); sub parse { my ($in, $res, %options) = @_; $res ||= []; my $fd; if (ref($in)) { $fd = $in; } else { if ($in =~ /\.gz$/) { open($fd, '-|', "gzip", "-dc", $in) || die("$in: $!\n"); } else { open($fd, '<', $in) || die("$in: $!\n"); } } my $pkg = {}; my $tag; my %ltmap = %tmap; %ltmap = (%ltmap, %tmap_checksums) if $options{'withchecksum'}; while (<$fd>) { chomp; if ($_ eq '') { addpkg($res, $pkg, \%options) if %$pkg; $pkg = {}; next; } if (/^\s/) { next unless $tag; $pkg->{$tag} .= "\n".substr($_, 1); next; } my $data; ($tag, $data) = split(':', $_, 2); next unless defined $data; $tag = $tmap{lc($tag)}; next unless $tag; $data =~ s/^\s*//; $pkg->{$tag} = $data; } addpkg($res, $pkg, \%options) if %$pkg; if (!ref($in)) { close($fd) || die("close $in: $!\n"); } return $res; } 1; obs-build-20210120/Build/Docker.pm000066400000000000000000000272561400202264700164400ustar00rootroot00000000000000################################################################ # # Copyright (c) 2017 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::Docker; use Build::SimpleXML; # to parse the annotation use Build::SimpleJSON; use strict; sub gettargetarch { my ($config) = @_; my $arch = 'noarch'; for (@{$config->{'macros'} || []}) { $arch = $1 if /^%define _target_cpu (\S+)/; } return $arch; } sub slurp { my ($fn) = @_; local *F; return undef unless open(F, '<', $fn); local $/ = undef; # Perl slurp mode my $content = ; close F; return $content; } sub expandvar_cplx { my ($n, $m, $v, $vars) = @_; $v = expandvars($v, $vars) if $v =~ /\$/; my $o = join(' ', @{$vars->{$n} || []}); return $o ne '' ? $vars->{$n} : [ $v ] if $m eq '-'; return $o ne '' ? [ $v ] : [] if $m eq '+'; return []; } sub expandvars { my ($str, $vars) = @_; $str =~ s/\$([a-zA-Z0-9_]+)|\$\{([^\}:]+)\}|\$\{([^\}:]+):([-+])([^}]*)\}/join(' ', @{$3 ? expandvar_cplx($3, $4, $5, $vars) : $vars->{$2 || $1} || []})/ge; return $str; } sub quote { my ($str, $q, $vars) = @_; $str = expandvars($str, $vars) if $vars && $q ne "'" && $str =~ /\$/; $str =~ s/([ \t\"\'\$\(\)])/sprintf("%%%02X", ord($1))/ge; return $str; } sub addrepo { my ($ret, $url, $prio) = @_; 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) { $ret->{'error'} = "cannot map '$url' to obs"; return undef; } my ($projid, $repoid) = split('/', $prp, 2); unshift @{$ret->{'path'}}, {'project' => $projid, 'repository' => $repoid}; $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; } } sub cmd_zypper { my ($ret, @args) = @_; # skip global options shift @args while @args && $args[0] =~ /^-/; return unless @args; if ($args[0] eq 'in' || $args[0] eq 'install') { shift @args; while (@args && $args[0] =~ /^-/) { shift @args if $args[0] =~ /^--(?:from|repo|type)$/ || $args[0] =~ /^-[tr]$/; shift @args; } my @deps = grep {/^[a-zA-Z_0-9]/} @args; s/^([^<=>]+)([<=>]+)/$1 $2 / for @deps; push @{$ret->{'deps'}}, @deps; } elsif ($args[0] eq 'ar' || $args[0] eq 'addrepo') { my $prio; shift @args; while (@args && $args[0] =~ /^-/) { if ($args[0] eq '-p' || $args[0] eq '--priority') { $prio = 99 - $args[1]; splice(@args, 0, 2); next; } shift @args if $args[0] =~ /^--(?:repo|type)$/ || $args[0] =~ /^-[rt]$/; shift @args; } if (@args) { my $path = $args[0]; $path =~ s/\/[^\/]*\.repo$//; addrepo($ret, $path, $prio); } } } sub cmd_obs_pkg_mgr { my ($ret, @args) = @_; return unless @args; if ($args[0] eq 'add_repo') { shift @args; addrepo($ret, $args[0]) if @args; } elsif ($args[0] eq 'install') { shift @args; push @{$ret->{'deps'}}, @args; } } sub cmd_dnf { my ($ret, @args) = @_; # skip global options shift @args while @args && $args[0] =~ /^-/; return unless @args; if ($args[0] eq 'in' || $args[0] eq 'install') { shift @args; while (@args && $args[0] =~ /^-/) { shift @args; } push @{$ret->{'deps'}}, grep {/^[a-zA-Z_0-9]/} @args; } } sub cmd_apt_get { my ($ret, @args) = @_; shift @args while @args && $args[0] =~ /^-/; return unless @args; if ($args[0] eq 'install') { shift @args; push @{$ret->{'deps'}}, grep {/^[a-zA-Z_0-9]/} @args; } } sub parse { 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; my @lines = split(/\r?\n/, $dockerfile_data); my $ret = { 'deps' => [], 'path' => [], 'imagerepos' => [], }; my %build_vars; if ($cf->{'buildflags:dockerarg'}) { for (@{$cf->{'buildflags'} || []}) { $build_vars{$1} = [ $2 ] if /^dockerarg:(.*?)=(.*)$/s; } } my $excludedline; my $vars = {}; my $vars_env = {}; while (@lines) { my $line = shift @lines; $line =~ s/^\s+//; if ($line =~ /^#/) { if ($line =~ /^#!BuildTag:\s*(.*?)$/) { my @tags = split(' ', $1); push @{$ret->{'containertags'}}, @tags if @tags; } if ($line =~ /^#!BuildName:\s*(\S+)\s*$/) { $ret->{'name'} = $1; } 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; } if ($line =~ /^#!Milestone:\s*(\S+)\s*$/) { $ret->{'milestone'} = $1; } if ($line =~ /^#!ArchExclusiveLine:\s*(.*?)$/) { my $arch = gettargetarch($cf); $excludedline = (grep {$_ eq $arch} split(' ', $1)) ? undef : 1; } if ($line =~ /^#!ArchExcludedLine:\s*(.*?)$/) { my $arch = gettargetarch($cf); $excludedline = (grep {$_ eq $arch} split(' ', $1)) ? 1 : undef; } next; } # add continuation lines while (@lines && $line =~ s/\\[ \t]*$//) { shift @lines while @lines && $lines[0] =~ /^\s*#/; $line .= shift(@lines) if @lines; } $line =~ s/^\s+//; $line =~ s/\s+$//; next unless $line; if ($excludedline) { undef $excludedline; next; } my ($cmd, @args); ($cmd, $line) = split(' ', $line, 2); $cmd = uc($cmd); # escape and unquote $line =~ s/%/%25/g; $line =~ s/\\(.)/sprintf("%%%02X", ord($1))/ge; while ($line =~ /([\"\'])/) { my $q = $1; last unless $line =~ s/$q(.*?)$q/quote($1, $q, $vars)/e; } # split into args then expand @args = split(/[ \t]+/, $line); for my $arg (@args) { $arg = expandvars($arg, $vars) if $arg =~ /\$/; $arg =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge; } # process commands if ($cmd eq 'FROM') { shift @args if @args && $args[0] =~ /^--platform=/; if (@args && !$basecontainer && $args[0] ne 'scratch') { $basecontainer = $args[0]; $basecontainer .= ':latest' unless $basecontainer =~ /:[^:\/]+$/; } $vars_env = {}; # should take env from base container $vars = { %$vars_env }; } elsif ($cmd eq 'RUN') { $line =~ s/#.*//; # get rid of comments for my $l (split(/(?:\||\|\||\&|\&\&|;|\)|\()/, $line)) { $l =~ s/^\s+//; $l =~ s/\s+$//; $l = expandvars($l, $vars) if $l =~ /\$/; @args = split(/[ \t]+/, $l); s/%([a-fA-F0-9]{2})/chr(hex($1))/ge for @args; next unless @args; my $rcmd = shift @args; if ($rcmd eq 'zypper') { cmd_zypper($ret, @args); } elsif ($rcmd eq 'yum' || $rcmd eq 'dnf') { cmd_dnf($ret, @args); } elsif ($rcmd eq 'apt-get') { cmd_apt_get($ret, @args); } elsif ($rcmd eq 'obs_pkg_mgr') { cmd_obs_pkg_mgr($ret, @args); } } } elsif ($cmd eq 'ENV') { for (@args) { next unless /^(.*?)=(.*)#/; $vars->{$1} = [ $2 ]; $vars_env->{$1} = [ $2 ]; } } elsif ($cmd eq 'ARG') { for (@args) { next unless /^([^=]+)(?:=(.*))?$/; next if $vars_env->{$1}; $vars->{$1} = $build_vars{$1} || (defined($2) ? [ $2 ] : []); } } } 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->{'name'} = 'docker' if !defined($ret->{'name'}) && !$cf->{'__dockernoname'}; $ret->{'path'} = [ { 'project' => '_obsrepositories', 'repository' => '' } ] if $useobsrepositories; $ret->{'basecontainer'} = $basecontainer if $basecontainer; $ret->{'nosquash'} = 1 if $nosquash; return $ret; } sub showcontainerinfo { 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 = { '__dockernoname' => 1 }; $cf->{'buildrelease'} = $release if defined $release; my $d = {}; $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'}; } } my @repos = @{$d->{'imagerepos'} || []}; if ($annotationfile) { my $annotation = slurp($annotationfile); $annotation = Build::SimpleXML::parse($annotation) if $annotation; $annotation = $annotation && ref($annotation) eq 'HASH' ? $annotation->{'annotation'} : undef; $annotation = $annotation && ref($annotation) eq 'ARRAY' ? $annotation->[0] : undef; my $annorepos = $annotation && ref($annotation) eq 'HASH' ? $annotation->{'repo'} : undef; $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'}, '_type' => {'priority' => 'number'} }; $repos[-1]->{'priority'} = $annorepo->{'priority'} if defined $annorepo->{'priority'}; } } my $buildtime = time(); 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->{'name'} = $d->{'name'} if defined $d->{'name'}; $containerinfo->{'version'} = $d->{'version'} if defined $d->{'version'}; $containerinfo->{'release'} = $release if defined $release; $containerinfo->{'milestone'} = $d->{'milestone'} if defined $d->{'milestone'}; print Build::SimpleJSON::unparse($containerinfo)."\n"; } 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($cf, $fn) if $fn; die("$d->{'error'}\n") if $d->{'error'}; my $x = $d->{$field}; $x = [ $x ] unless ref $x; print "@$x\n"; } 1; obs-build-20210120/Build/Fissile.pm000066400000000000000000000027531400202264700166220ustar00rootroot00000000000000################################################################ # # Copyright (c) 2017 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::Fissile; use strict; eval { require YAML::XS; }; *YAML::XS::LoadFile = sub {die("YAML::XS is not available\n")} unless defined &YAML::XS::LoadFile; sub parse { my ($cf, $fn) = @_; my $yml; eval { $yml = YAML::XS::LoadFile($fn); }; return {'error' => "Failed to parse yml file"} unless $yml; my $ret = {}; $ret->{'name'} = $yml->{'Name'} || 'fissile'; $ret->{'version'} = $yml->{'Version'} if $yml->{'Version'}; my @deps; for (@{$yml->{'DockerImageDeps'} || []}) { # This generates something like: "container:fissile-dev:201707081450" push @deps, "container:$_"; } $ret->{'deps'} = \@deps; return $ret; } 1; obs-build-20210120/Build/Flatpak.pm000066400000000000000000000103251400202264700166000ustar00rootroot00000000000000################################################################ # # Copyright (c) 2017 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::Flatpak; use strict; use warnings; use Build::Deb; use Build::Rpm; use Data::Dumper; #use URI; # not installed in kvm? #use JSON::PP; # not installed in kvm? my $yamlxs = eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; return 1 }; my $yamlpp = eval { require YAML::PP; return YAML::PP->new }; sub _load_yaml { my ($yaml) = @_; my $data; if ($yamlpp) { $data = eval { $yamlpp->load_string($yaml) }; return $data; } if ($yamlxs) { eval { $data = YAML::XS::Load($yaml) }; return $data; } die "Neither YAML::PP nor YAML::XS available\n"; } sub _load_yaml_file { my ($fn) = @_; my $data; if ($yamlpp) { $data = eval { $yamlpp->load_file($fn) }; return $data; } if ($yamlxs) { eval { $data = YAML::XS::LoadFile($fn) }; return $data; } die "Neither YAML::PP nor YAML::XS available\n"; } sub parse { my ($cf, $fn) = @_; my $version = ''; my $data; my @lines; if (ref($fn) eq 'SCALAR') { @lines = split m/(?<=\n)/, $$fn; } else { open my $fh, '<', $fn or return { error => "Failed to open file '$fn'" }; @lines = <$fh>; close $fh; } for my $line (@lines) { if ($line =~ m/^#!BuildVersion: (\S+)/) { my $string = $1; if ($string =~ m/^[0-9.]+$/) { $version = $string; } else { return { error => "Invalid BuildVersion" }; } } } if ($fn =~ m/\.ya?ml\z/) { $data = _load_yaml_file($fn); return { error => "Failed to parse YAML file '$fn'" } unless defined $data; } elsif ($fn =~ m/\.json\z/) { # We don't have JSON::PP, but YAML is a superset of JSON $data = _load_yaml_file($fn); return { error => "Failed to parse JSON file '$fn'" } unless defined $data; # open my $fh, '<:encoding(UTF-8)', $fn or die $!; # my $json = do { local $/; <$fh> }; # close $fh; # $data = eval { decode_json($json) }; # return { error => "Failed to parse JSON file" } unless defined $data; } elsif (ref($fn) eq 'SCALAR') { $data = _load_yaml($$fn); # used in the unit test return { error => "Failed to parse '$fn'" } unless defined $data; } else { $data = _load_yaml_file($fn); return { error => "Failed to parse file '$fn'" } unless defined $data; } my $ret = {}; $ret->{version} = $version if $version; $ret->{name} = $data->{'app-id'} or die "Flatpak file is missing 'app-id'"; my $runtime = $data->{runtime}; my $runtime_version = $data->{'runtime-version'}; my $sdk = $data->{sdk}; my @packdeps; push @packdeps, "$sdk-v$runtime_version"; push @packdeps, "$runtime-v$runtime_version"; $ret->{deps} = \@packdeps; my @sources; if (my $modules = $data->{modules}) { for my $module (@$modules) { if (my $sources = $module->{sources}) { for my $source (@$sources) { if ($source->{type} eq 'archive') { my $url = $source->{url}; my $path = $url; $path =~ s{.*/}{}; # Get filename push @sources, $path; } } } } } $ret->{sources} = \@sources; # warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$ret], ['ret']); return $ret; } sub show { my ($fn, $field) = @ARGV; my $cf = {}; my $d = parse($cf, $fn); die "$d->{error}\n" if $d->{error}; my $value = $d->{ $field }; if (ref $value eq 'ARRAY') { print "$_\n" for @$value; } else { print "$value\n"; } } 1; obs-build-20210120/Build/Helm.pm000066400000000000000000000112031400202264700160770ustar00rootroot00000000000000################################################################ # # Copyright (c) 2020 SUSE LLC # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ package Build::Helm; use strict; use Build::SimpleJSON; eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; }; *YAML::XS::LoadFile = sub {die("YAML::XS is not available\n")} unless defined &YAML::XS::LoadFile; sub verify_config { my ($d) = @_; die("bad config\n") unless ref($d) eq 'HASH'; for my $k ('name', 'version') { die("missing element '$k'\n") unless defined $d->{$k}; die("bad element '$k'\n") unless ref($d->{$k}) eq ''; die("empty element '$k'\n") if $d->{$k} eq ''; die("bad element '$k'\n\n") if $d->{$k} =~ /[\/\000-\037]/; } die("bad name\n") if $d->{'name'} =~ /^[-\.]/; } sub parse { my ($cf, $fn) = @_; my $d; my $fd; return {'error' => "$fn: $!"} unless open($fd, '<', $fn); my @tags; while (<$fd>) { chomp; next if /^\s*$/; last unless /^\s*#/; push @tags, split(' ', $1) if /^#!BuildTag:\s*(.*?)$/; } close($fd); eval { $d = YAML::XS::LoadFile($fn); verify_config($d); }; if ($@) { my $err = $@; chomp $@; return {'error' => "Failed to parse yml file: $err"}; } my $res = {}; $res->{'name'} = $d->{'name'}; $res->{'version'} = $d->{'version'}; $res->{'deps'} = []; my $release = $cf->{'buildrelease'}; for (@tags) { s//$d->{'name'}/g; s//$d->{'version'}/g; s//$release/g; } $res->{'containertags'} = \@tags if @tags; return $res; } sub show { my ($release, $disturl, $chart, $origrecipe); while (@ARGV) { if (@ARGV > 2 && $ARGV[0] eq '--release') { (undef, $release) = splice(@ARGV, 0, 2); } elsif (@ARGV > 2 && $ARGV[0] eq '--disturl') { (undef, $disturl) = splice(@ARGV, 0, 2); } elsif (@ARGV > 2 && $ARGV[0] eq '--chart') { (undef, $chart) = splice(@ARGV, 0, 2); } elsif (@ARGV > 2 && $ARGV[0] eq '--origrecipe') { (undef, $origrecipe) = splice(@ARGV, 0, 2); } else { last; } } my ($fn, $field) = @ARGV; my $d = {}; $d->{'buildrelease'} = $release if defined $release; $d = parse({}, $fn) if $fn; die("$d->{'error'}\n") if $d->{'error'}; if ($field eq 'helminfo') { my $containertags = $d->{'containertags'}; if ($origrecipe) { # we need to parse the original recipe to get the tags my $origd = parse({}, $origrecipe); $containertags = $origd->{'containertags'}; } my $config_yaml = ''; my $fd; die("$fn: $!\n") unless open($fd, '<', $fn); 1 while sysread($fd, $config_yaml, 8192, length($config_yaml)); close($fd); my $config = YAML::XS::Load($config_yaml); verify_config($config); my $config_json = Build::SimpleJSON::unparse($config)."\n"; my $helminfo = {}; $helminfo->{'name'} = $d->{'name'}; $helminfo->{'version'} = $d->{'version'}; $helminfo->{'release'} = $release if $release; $helminfo->{'tags'} = $containertags if $containertags; $helminfo->{'disturl'} = $disturl if $disturl; $helminfo->{'buildtime'} = time(); if ($chart) { require Digest::SHA; $helminfo->{'chart'} = $chart; $helminfo->{'chart'} =~ s/.*\///; my $ctx = Digest::SHA->new(256); my $cfd; die("$chart: $!\n") unless open($cfd, '<', $chart); my @s = stat($cfd); $ctx->addfile($cfd); close($cfd); $helminfo->{'chart_sha256'} = $ctx->hexdigest; $helminfo->{'chart_size'} = $s[7]; } $helminfo->{'config_json'} = $config_json; $helminfo->{'config_yaml'} = $config_yaml; $helminfo->{'_order'} = [ qw{name version release tags disturl buildtime chart config_json config_yaml chart_sha256 chart_size} ]; $helminfo->{'_type'} = {'buildtime' => 'number', 'chart_size' => 'number' }; print Build::SimpleJSON::unparse($helminfo)."\n"; exit(0); } $d->{'nameversion'} = "$d->{'name'}-$d->{'version'}"; # convenience my $x = $d->{$field}; $x = [ $x ] unless ref $x; print "@$x\n"; } 1; obs-build-20210120/Build/Intrepo.pm000066400000000000000000000127241400202264700166430ustar00rootroot00000000000000################################################################ # # Copyright (c) 2020 SUSE LLC # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ package Build::Intrepo; use strict; use Build::Rpm; # This implements reading and writing of build's internal repo format. # # The format looks like this: # # P:bash.x86_64-1526160002/1526160023/0: bash = 4.4-lp150.7.8 # # i.e.: type:name.arch-mtime/size/inode: dep dep dep # # P:provides C:conflicts R:requires O:Obsoletes # r:recommends s:supplements # # There is also: # F:...: filename # I:...: ident where ident == name-evr buildtime-arch # # The format is so weird because init_buildsystem of the old autobuild # system used to create such repos by doing a single 'rpm --qf' call. # sub addpkg { my ($res, $pkg, $pkgid, $options) = @_; return unless $pkgid =~ /^(.*)\.(.*)-\d+\/\d+\/\d+$/s; $pkg->{'name'} = $1; $pkg->{'arch'} = $2 unless $pkg->{'arch'}; # extract evr from self provides if there was no 'I' line if (!defined($pkg->{'version'})) { my @sp = grep {/^\Q$pkg->{'name'}\E\s*=\s*/} @{$pkg->{'provides'} || []}; if (@sp) { my $evr = $sp[-1]; $evr =~ s/^\Q$pkg->{'name'}\E\s*=\s*//; $pkg->{'epoch'} = $1 if $evr =~ s/^(\d+)://; $pkg->{'release'} = $1 if $evr =~ s/-([^-]*)$//; $pkg->{'version'} = $evr; } } if (ref($res) eq 'CODE') { $res->($pkg); } else { push @$res, $pkg; } } sub parse { my ($in, $res, %options) = @_; my $nofiledeps = $options{'nofiledeps'}; my $testcaseformat = $options{'testcaseformat'}; if (ref($in)) { *F = $in; } else { open(F, '<', $in) || die("$in: $!\n"); } $res ||= []; my $lastpkgid; my $pkg = {}; while () { my @s = split(' ', $_); my $s = shift @s; next unless $s && $s =~ /^([a-zA-Z]):(.+):$/s; my ($tag, $pkgid) = ($1, $2); if ($lastpkgid && $pkgid ne $lastpkgid) { addpkg($res, $pkg, $lastpkgid, \%options) if %$pkg; $pkg = {}; } $lastpkgid = $pkgid; if ($tag eq 'I') { next unless $pkgid =~ /^(.*)\.(.*)-\d+\/\d+\/\d+:$/; my $name = $1; my $evr = $s[0]; $pkg->{'arch'} = $1 if $s[1] && $s[1] =~ s/-(.*)$//; $pkg->{'buildtime'} = $s[1] if $s[1]; if ($evr =~ s/^\Q$name\E-//) { $pkg->{'epoch'} = $1 if $evr =~ s/^(\d+)://; $pkg->{'release'} = $1 if $evr =~ s/-([^-]*)$//; $pkg->{'version'} = $evr; } next; } if ($tag eq 'F') { chomp; my $loc = (split(' ', $_, 2))[1]; $pkg->{'location'} = $loc if defined $loc; next; } my @ss; while (@s) { if ($nofiledeps && $s[0] =~ /^\//) { shift @s; next; } if ($s[0] =~ /^rpmlib\(/) { splice(@s, 0, 3); next; } if ($s[0] =~ /^\(/) { push @ss, Build::Rpm::shiftrich(\@s); $ss[-1] = Build::Rpm::testcaseformat($ss[-1]) if $testcaseformat; next; } push @ss, shift @s; while (@s && $s[0] =~ /^[\(<=>|]/) { $ss[-1] .= " $s[0] $s[1]"; $ss[-1] =~ s/ \((.*)\)/ $1/; $ss[-1] =~ s/(<|>){2}/$1/; splice(@s, 0, 2); } } my %ss; @ss = grep {!$ss{$_}++} @ss; # unify $pkg->{'provides'} = \@ss if $tag eq 'P'; $pkg->{'requires'} = \@ss if $tag eq 'R'; $pkg->{'conflicts'} = \@ss if $tag eq 'C'; $pkg->{'obsoletes'} = \@ss if $tag eq 'O'; $pkg->{'recommends'} = \@ss if $tag eq 'r'; $pkg->{'supplements'} = \@ss if $tag eq 's'; } addpkg($res, $pkg, $lastpkgid, \%options) if $lastpkgid && %$pkg; close F unless ref($in); return $res; } sub getbuildid { my ($q) = @_; my $evr = $q->{'version'}; $evr = "$q->{'epoch'}:$evr" if $q->{'epoch'}; $evr .= "-$q->{'release'}" if defined $q->{'release'}; my $buildtime = $q->{'buildtime'} || 0; $buildtime .= "-$q->{'arch'}" if defined $q->{'arch'}; return "$q->{'name'}-$evr $buildtime"; } my $writepkg_inode = 0; sub writepkg { my ($fh, $pkg, $locprefix, $inode) = @_; return unless defined($pkg->{'name'}) && defined($pkg->{'arch'}); return if $pkg->{'arch'} eq 'src' || $pkg->{'arch'} eq 'nosrc'; $locprefix = '' unless defined $locprefix; my $id = $pkg->{'id'}; if (!$id) { $inode = $writepkg_inode++ unless defined $inode; $id = ($pkg->{'buildtime'} || 0)."/".($pkg->{'filetime'} || 0)."/$inode"; } $id = "$pkg->{'name'}.$pkg->{'arch'}-$id: "; print $fh "F:$id$locprefix$pkg->{'location'}\n"; print $fh "P:$id".join(' ', @{$pkg->{'provides'} || []})."\n"; print $fh "R:$id".join(' ', @{$pkg->{'requires'}})."\n" if $pkg->{'requires'}; print $fh "C:$id".join(' ', @{$pkg->{'conflicts'}})."\n" if $pkg->{'conflicts'}; print $fh "O:$id".join(' ', @{$pkg->{'obsoletes'}})."\n" if $pkg->{'obsoletes'}; print $fh "r:$id".join(' ', @{$pkg->{'recommends'}})."\n" if $pkg->{'recommends'}; print $fh "s:$id".join(' ', @{$pkg->{'supplements'}})."\n" if $pkg->{'supplements'}; print $fh "I:$id".getbuildid($pkg)."\n"; } 1; obs-build-20210120/Build/Kiwi.pm000066400000000000000000000534011400202264700161230ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Kiwi; use strict; use Build::SimpleXML; use Build::SimpleJSON; our $bootcallback; our $urlmapper; our $repoextras = 0; # priority, flags, ... sub unify { my %h = map {$_ => 1} @_; return grep(delete($h{$_}), @_); } sub expandFallBackArchs { my ($fallbackArchXML, @archs) = @_; my %fallbacks; for (@{$fallbackArchXML->{'arch'} || []}) { $fallbacks{$_->{'id'}} = $_->{'fallback'} if $_->{id} && $_->{'fallback'}; } my @out; while (@archs) { push @out, shift @archs; push @archs, delete $fallbacks{$out[-1]} if $fallbacks{$out[-1]}; } return unify(@out); } # sles10 perl does not have the version.pm # implement own hack sub versionstring { my ($str) = @_; my $result = 0; $result = $result * 100 + $_ for split (/\./, $str, 2); return $result; } my $schemaversion56 = versionstring('5.6'); sub kiwiparse_product { my ($kiwi, $xml, $arch, $buildflavor) = @_; my $ret = {}; my @repos; my %repoprio; # XXX: unused my @packages; my @requiredarch; my @badarch; my $obsexclusivearch; my $obsexcludearch; $obsexclusivearch = $1 if $xml =~ /^\s*\s*$/im; $obsexcludearch = $1 if $xml =~ /^\s*\s*$/im; $ret->{'milestone'} = $1 if $xml =~ /^\s*\s*$/im; $ret->{'name'} = $kiwi->{'name'} if $kiwi->{'name'}; $ret->{'filename'} = $kiwi->{'name'} if $kiwi->{'name'}; my $description = (($kiwi->{'description'} || [])->[0]) || {}; if (!$ret->{'name'} && $description->{'specification'}) { $ret->{'name'} = $description->{'specification'}->[0]->{'_content'}; } # parse the preferences section my $preferences = $kiwi->{'preferences'} || []; die("products must have exactly one preferences element\n") unless @$preferences == 1; # take default version setting if ($preferences->[0]->{'version'}) { $ret->{'version'} = $preferences->[0]->{'version'}->[0]->{'_content'}; } die("products must have exactly one type element in the preferences\n") unless @{$preferences->[0]->{'type'} || []} == 1; my $preftype = $preferences->[0]->{'type'}->[0]; if (defined $preftype->{'image'}) { # for kiwi 4.1 and 5.x die("products must use type 'product'\n") unless $preftype->{'image'} eq 'product'; } else { # for kiwi 3.8 and before die("products must use type 'product'\n") unless $preftype->{'_content'} eq 'product'; } push @packages, "kiwi-filesystem:$preftype->{'filesystem'}" if $preftype->{'filesystem'}; die("boot type not supported in products\n") if defined $preftype->{'boot'}; my $instsource = ($kiwi->{'instsource'} || [])->[0]; die("products must have an instsource element\n") unless $instsource; # get repositories for my $repository (sort {$a->{priority} <=> $b->{priority}} @{$instsource->{'instrepo'} || []}) { my $kiwisource = ($repository->{'source'} || [])->[0]; if ($kiwisource->{'path'} eq 'obsrepositories:/') { push @repos, '_obsrepositories/'; # special case, OBS will expand it. } elsif ($kiwisource->{'path'} =~ /^obs:\/\/\/?([^\/]+)\/([^\/]+)\/?$/) { push @repos, "$1/$2"; } else { my $prp; $prp = $urlmapper->($kiwisource->{'path'}) if $urlmapper; die("instsource repo url not using obs:/ scheme: $kiwisource->{'path'}\n") unless $prp; push @repos, $prp; } } $ret->{'sourcemedium'} = -1; $ret->{'debugmedium'} = -1; if ($instsource->{'productoptions'}) { my $productoptions = $instsource->{'productoptions'}->[0] || {}; for my $po (@{$productoptions->{'productvar'} || []}) { $ret->{'drop_repository'} = $po->{'_content'} if $po->{'name'} eq 'DROP_REPOSITORY'; $ret->{'version'} = $po->{'_content'} if $po->{'name'} eq 'VERSION'; } 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'}) { my $architectures = $instsource->{'architectures'}->[0] || {}; for my $ra (@{$architectures->{'requiredarch'} || []}) { push @requiredarch, $ra->{'ref'} if defined $ra->{'ref'}; } } # Find packages and possible additional required architectures my @additionalarchs; my @pkgs; push @pkgs, @{$instsource->{'metadata'}->[0]->{'repopackage'} || []} if $instsource->{'metadata'}; push @pkgs, @{$instsource->{'repopackages'}->[0]->{'repopackage'} || []} if $instsource->{'repopackages'}; @pkgs = unify(@pkgs); for my $package (@pkgs) { # filter packages, which are not targeted for the wanted plattform if ($package->{'arch'}) { my $valid; for my $ma (@requiredarch) { for my $pa (split(',', $package->{'arch'})) { $valid = 1 if $ma eq $pa; } } next unless $valid; } # not nice, but optimizes our build dependencies # FIXME: design a real blacklist option in kiwi if ($package->{'onlyarch'} && $package->{'onlyarch'} eq 'skipit') { push @packages, "-$package->{'name'}"; next; } push @packages, "-$package->{'replaces'}" if $package->{'replaces'}; # we need this package push @packages, $package->{'name'}; # find the maximal superset of possible required architectures push @additionalarchs, split(',', $package->{'addarch'}) if $package->{'addarch'}; push @additionalarchs, split(',', $package->{'onlyarch'}) if $package->{'onlyarch'}; } @requiredarch = unify(@requiredarch, @additionalarchs); #### FIXME: kiwi files have no informations where to get -32bit packages from push @requiredarch, "i586" if grep {/^ia64/} @requiredarch; push @requiredarch, "i586" if grep {/^x86_64/} @requiredarch; push @requiredarch, "ppc" if grep {/^ppc64/} @requiredarch; push @requiredarch, "s390" if grep {/^s390x/} @requiredarch; @requiredarch = expandFallBackArchs($instsource->{'architectures'}->[0], @requiredarch); push @packages, "kiwi-packagemanager:instsource"; push @requiredarch, split(' ', $obsexclusivearch) if $obsexclusivearch; push @badarch , split(' ', $obsexcludearch) if $obsexcludearch; $ret->{'exclarch'} = [ unify(@requiredarch) ] if @requiredarch; $ret->{'badarch'} = [ unify(@badarch) ] if @badarch; $ret->{'deps'} = [ unify(@packages) ]; $ret->{'path'} = [ unify(@repos) ]; $ret->{'imagetype'} = [ 'product' ]; for (@{$ret->{'path'} || []}) { my @s = split('/', $_, 2); $_ = {'project' => $s[0], 'repository' => $s[1]}; $_->{'priority'} = $repoprio{"$s[0]/$s[1]"} if $repoextras && defined $repoprio{"$s[0]/$s[1]"}; } return $ret; } sub kiwiparse { my ($xml, $arch, $buildflavor, $release, $count) = @_; $count ||= 0; die("kiwi config inclusion depth limit reached\n") if $count++ > 10; my $kiwi = Build::SimpleXML::parse($xml); die("not a kiwi config\n") unless $kiwi && $kiwi->{'image'}; $kiwi = $kiwi->{'image'}->[0]; # check if this is a product, we currently test for the 'instsource' element return kiwiparse_product($kiwi, $xml, $arch, $buildflavor) if $kiwi->{'instsource'}; my $ret = {}; my @types; my @repos; my @imagerepos; my @bootrepos; my @containerrepos; my @packages; my @extrasources; my $obsexclusivearch; my $obsexcludearch; my $obsprofiles; my $unorderedrepos; my @ignorepackages; $obsexclusivearch = $1 if $xml =~ /^\s*\s*$/im; $obsexcludearch = $1 if $xml =~ /^\s*\s*$/im; $obsprofiles = $1 if $xml =~ /^\s*\s*$/im; $ret->{'milestone'} = $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' => $_ }; } for ($xml =~ /^\s*\s*$/img) { push @ignorepackages, split(' ', $_); } my $schemaversion = $kiwi->{'schemaversion'} ? versionstring($kiwi->{'schemaversion'}) : 0; $ret->{'name'} = $kiwi->{'name'} if $kiwi->{'name'}; $ret->{'filename'} = $kiwi->{'name'} if $kiwi->{'name'}; my $description = (($kiwi->{'description'} || [])->[0]) || {}; if (!$ret->{'name'} && $description->{'specification'}) { $ret->{'name'} = $description->{'specification'}->[0]->{'_content'}; } # usedprofiles also include direct wanted profile targets and indirect required profiles my %usedprofiles; # obsprofiles arch filtering if ($obsprofiles && $arch && $kiwi->{'profiles'} && $kiwi->{'profiles'}->[0]->{'profile'}) { # reduce set of profiles to the ones matching our architecture my @validprofiles; for my $prof (@{$kiwi->{'profiles'}[0]->{'profile'}}) { next unless $prof->{'name'}; if (!$prof->{'arch'}) { push @validprofiles, $prof; } else { my $ma = $arch; $ma =~ s/i[456]86/i386/; for my $pa (split(",", $prof->{'arch'})) { $pa =~ s/i[456]86/i386/; next unless $ma eq $pa; push @validprofiles, $prof; last; } } } my %validprofiles = map {$_->{'name'} => 1} @validprofiles; $obsprofiles = [ grep {$validprofiles{$_}} @$obsprofiles ]; my %obsprofiles = map {$_ => 1} @$obsprofiles; my @todo = grep {$obsprofiles{$_->{'name'}}} @validprofiles; while (@todo) { my $prof = shift @todo; next if $usedprofiles{$prof->{'name'}}; # already done $usedprofiles{$prof->{'name'}} = 1; for my $req (@{$prof->{'requires'} || []}) { push @todo, grep {$_->{'name'} eq $req->{'profile'}} @validprofiles; } } } # take default version setting my $preferences = ($kiwi->{'preferences'} || []); 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'}) { next unless grep {$usedprofiles{$_}} split(",", $pref->{'profiles'}); } for my $type (@{$pref->{'type'} || []}) { next unless @{$pref->{'type'}} == 1 || !$type->{'optional'}; if (defined $type->{'image'}) { # for kiwi 4.1 and 5.x push @types, $type->{'image'}; push @packages, "kiwi-image:$type->{'image'}" if $schemaversion >= $schemaversion56; } else { # for kiwi 3.8 and before push @types, $type->{'_content'}; } # save containerconfig so that we can retrieve the tag $containerconfig = $type->{'containerconfig'}->[0] if $type->{'containerconfig'}; # add derived container dependency if ($type->{'derived_from'}) { my $derived = $type->{'derived_from'}; my ($name, $prp); if ($derived =~ /^obs:\/{1,3}([^\/]+)\/([^\/]+)\/(.*?)(?:#([^\#\/]+))?$/) { $name = defined($4) ? "$3:$4" : "$3:latest"; $prp = "$1/$2"; } elsif ($derived =~ /^obsrepositories:\/{1,3}([^\/].*?)(?:#([^\#\/]+))?$/) { $name = defined($2) ? "$1:$2" : "$1:latest"; } elsif ($derived =~ /^file:/) { next; # just ignore and hope } elsif ($derived =~ /^(.*)\/([^\/]+?)(?:#([^\#\/]+))?$/) { my $url = $1; $name = defined($3) ? "$2:$3" : "$2:latest"; $prp = $urlmapper->($url) if $urlmapper; # try again with one element moved from url to name if (!$prp && $derived =~ /^(.*)\/([^\/]+\/[^\/]+?)(?:#([^\#\/]+))?$/) { $url = $1; $name = defined($3) ? "$2:$3" : "$2:latest"; $prp = $urlmapper->($url) if $urlmapper; } undef $name unless $prp; } die("derived_from url not using obs:/ scheme: $derived\n") unless defined $name; push @packages, "container:$name"; push @containerrepos, $prp if $prp; } push @packages, "kiwi-filesystem:$type->{'filesystem'}" if $type->{'filesystem'}; if (defined $type->{'boot'}) { if ($type->{'boot'} =~ /^obs:\/\/\/?([^\/]+)\/([^\/]+)\/?$/) { next unless $bootcallback; my ($bootxml, $xsrc) = $bootcallback->($1, $2); next unless $bootxml; push @extrasources, $xsrc if $xsrc; my $bret = kiwiparse($bootxml, $arch, $buildflavor, $release, $count); push @bootrepos, map {"$_->{'project'}/$_->{'repository'}"} @{$bret->{'path'} || []}; push @packages, @{$bret->{'deps'} || []}; push @extrasources, @{$bret->{'extrasource'} || []}; } else { die("bad boot reference: $type->{'boot'}\n") unless $type->{'boot'} =~ /^([^\/]+)\/([^\/]+)$/; push @packages, "kiwi-boot:$1"; } } } } die("image contains 'product' type\n") if grep {$_ eq 'product'} @types; my $packman = $preferences->[0]->{'packagemanager'}->[0]->{'_content'} || ''; # calculate priority for sorting for (@{$kiwi->{'repository'} || []}) { $_->{'sortprio'} = 0; if (defined($_->{'priority'})) { $_->{'sortprio'} = $packman eq 'smart' ? $_->{'priority'} : 99 - $_->{'priority'}; } } my @repositories = sort {$b->{'sortprio'} <=> $a->{'sortprio'}} @{$kiwi->{'repository'} || []}; my %repoprio; for my $repository (@repositories) { my $kiwisource = ($repository->{'source'} || [])->[0]; next unless $kiwisource; # huh? next if $kiwisource->{'path'} eq '/var/lib/empty'; # grr if ($repository->{'imageonly'} || $repository->{'imageinclude'}) { # this repo will be configured in the image. Save so that we can write it into the containerinfo my $imagerepo = { 'url' => $kiwisource->{'path'} }; $imagerepo->{'priority'} = $repository->{'sortprio'} if defined $repository->{'priority'}; push @imagerepos, $imagerepo; } next if $repository->{'imageonly'}; my $prp; if ($kiwisource->{'path'} eq 'obsrepositories:/') { $prp = '_obsrepositories/'; } elsif ($kiwisource->{'path'} =~ /^obs:\/{1,3}([^\/]+)\/([^\/]+)\/?$/) { $prp = "$1/$2"; } else { $prp = $urlmapper->($kiwisource->{'path'}) if $urlmapper; die("repo url not using obs:/ scheme: $kiwisource->{'path'}\n") unless $prp; } push @repos, $prp; $repoprio{$prp} = $repository->{'sortprio'} if defined $repository->{'priority'}; } # Find packages for the image my @pkgs; my $patterntype; for my $packages (@{$kiwi->{'packages'}}) { next if $packages->{'type'} && $packages->{'type'} ne 'image' && $packages->{'type'} ne 'bootstrap'; # we could skip the sections also when no profile is used, # but don't to stay backward compatible if ($obsprofiles && $packages->{'profiles'}) { my @section_profiles = split(",", $packages->{'profiles'}); next unless grep {$usedprofiles{$_}} @section_profiles; } $patterntype ||= $packages->{'patternType'}; push @pkgs, @{$packages->{'package'}} if $packages->{'package'}; for my $pattern (@{$packages->{'namedCollection'} || []}) { push @pkgs, { %$pattern, 'name' => "pattern() = $pattern->{'name'}" } if $pattern->{'name'}; } for my $product (@{$packages->{'product'} || []}) { push @pkgs, { %$product, 'name' => "product() = $product->{'name'}" } if $product->{'name'}; } for my $pattern (@{$packages->{'opensusePatterns'} || []}) { push @pkgs, { %$pattern, 'name' => "pattern() = $pattern->{'name'}" } if $pattern->{'name'}; } for my $product (@{$packages->{'opensuseProduct'} || []}) { push @pkgs, { %$product, 'name' => "product() = $product->{'name'}" } if $product->{'name'}; } } $patterntype ||= 'onlyRequired'; @pkgs = unify(@pkgs); for my $package (@pkgs) { # filter packages which are not targeted for the wanted plattform if ($package->{'arch'}) { my $valid; my $ma = $arch; $ma =~ s/i[456]86/i386/; for my $pa (split(",", $package->{'arch'})) { $pa =~ s/i[456]86/i386/; $valid = 1 if $ma eq $pa; } next unless $valid; } # handle replaces as buildignore push @packages, "-$package->{'replaces'}" if $package->{'replaces'}; # we need this package push @packages, $package->{'name'}; } push @packages, map {"-$_"} @ignorepackages; push @packages, "kiwi-packagemanager:$packman" if $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; $ret->{'deps'} = [ unify(@packages) ]; $ret->{'path'} = [ unify(@repos, @bootrepos) ]; $ret->{'containerpath'} = [ unify(@containerrepos) ] if @containerrepos; $ret->{'imagetype'} = [ unify(@types) ]; $ret->{'extrasource'} = \@extrasources if @extrasources; for (@{$ret->{'path'} || []}) { my @s = split('/', $_, 2); $_ = {'project' => $s[0], 'repository' => $s[1]}; $_->{'priority'} = $repoprio{"$s[0]/$s[1]"} if $repoextras && defined $repoprio{"$s[0]/$s[1]"}; } for (@{$ret->{'containerpath'} || []}) { my @s = split('/', $_, 2); $_ = {'project' => $s[0], 'repository' => $s[1]}; } $ret->{'imagerepos'} = \@imagerepos if @imagerepos; if ($containerconfig) { my $containername = $containerconfig->{'name'}; 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; } push @containertags, @extratags if @extratags; $ret->{'container_tags'} = [ unify(@containertags) ] if @containertags; } if ($obsprofiles) { if (@$obsprofiles) { $ret->{'profiles'} = [ unify(@$obsprofiles) ]; } else { $ret->{'exclarch'} = []; # all profiles excluded } } return $ret; } sub parse { my ($cf, $fn) = @_; local *F; open(F, '<', $fn) || die("$fn: $!\n"); my $xml = ''; 1 while sysread(F, $xml, 4096, length($xml)) > 0; close F; $cf ||= {}; my $d; eval { $d = kiwiparse($xml, ($cf->{'arch'} || ''), $cf->{'buildflavor'}, $cf->{'buildrelease'}, 0) }; if ($@) { my $err = $@; chomp $err; return {'error' => $err}; } return $d; } sub show { my ($fn, $field, $arch, $buildflavor) = @ARGV; local $urlmapper = sub { return $_[0] }; my $cf = {'arch' => $arch}; $cf->{'buildflavor'} = $buildflavor if defined $buildflavor; my $d = parse($cf, $fn); die("$d->{'error'}\n") if $d->{'error'}; if ($field eq 'profiles' && $d->{'exclarch'} && !@{$d->{'exclarch'}}) { print "__excluded\n"; return; } my $x = $d->{$field}; $x = [ $x ] unless ref $x; print "@$x\n"; } sub showcontainerinfo { 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 @repos; for my $repo (@{$d->{'imagerepos'} || []}) { push @repos, { 'url' => $repo->{'url'}, '_type' => {'priority' => 'number'} }; $repos[-1]->{'priority'} = $repo->{'priority'} if defined $repo->{'priority'}; } my $buildtime = time(); 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; $containerinfo->{'milestone'} = $d->{'milestone'} if defined $d->{'milestone'}; print Build::SimpleJSON::unparse($containerinfo)."\n"; } # not implemented yet. sub queryiso { my ($handle, %opts) = @_; return {}; } sub queryhdrmd5 { my ($bin) = @_; die("Build::Kiwi::queryhdrmd5 unimplemented.\n"); } 1; obs-build-20210120/Build/LiveBuild.pm000066400000000000000000000055211400202264700170770ustar00rootroot00000000000000################################################################ # # Copyright (c) 2014 Brocade Communications Systems, Inc. # Author: Jan Blunck # # This file is part of build. # # 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::LiveBuild; use strict; eval { require Archive::Tar; }; *Archive::Tar::new = sub {die("Archive::Tar is not available\n")} unless defined &Archive::Tar::new; sub filter { my ($content) = @_; return '' unless defined $content; $content =~ s/^#.*$//mg; $content =~ s/^!.*$//mg; $content =~ s/^\s*//mg; return $content; } sub parse_package_list { my ($content) = @_; my @packages = split /\n/, filter($content); return @packages; }; sub parse_archive { my ($content) = @_; my @repos; my @lines = split /\n/, filter($content); for (@lines) { next if /^deb-src /; die("bad path using not obs:/ URL: $_\n") unless $_ =~ /^deb\s+obs:\/\/\/?([^\s\/]+)\/([^\s\/]+)\/?\s+.*$/; push @repos, "$1/$2"; } return @repos; } sub unify { my %h = map {$_ => 1} @_; return grep(delete($h{$_}), @_); } sub parse { my ($config, $filename, @args) = @_; my $ret = {}; # check that filename is a tar my $tar = Archive::Tar->new; unless($tar->read($filename)) { warn("$filename: " . $tar->error . "\n"); $ret->{'error'} = "$filename: " . $tar->error; return $ret; } # check that directory layout matches live-build directory structure for my $file ($tar->list_files('')) { next unless $file =~ /^(.*\/)?config\/archives\/.*\.list.*/; warn("$filename: config/archives/*.list* files not allowed!\n"); $ret->{'error'} = "$filename: config/archives/*.list* files not allowed!"; return $ret; } # always require the list of packages required by live-boot for # bootstrapping the target distribution image (e.g. with debootstrap) my @packages = ( 'live-build-desc' ); for my $file ($tar->list_files('')) { next unless $file =~ /^(.*\/)?config\/package-lists\/.*\.list.*/; push @packages, parse_package_list($tar->get_content($file)); } ($ret->{'name'} = $filename) =~ s/\.[^.]+$//; $ret->{'deps'} = [ unify(@packages) ]; return $ret; } 1; obs-build-20210120/Build/Mdkrepo.pm000066400000000000000000000071251400202264700166230ustar00rootroot00000000000000################################################################ # # Copyright (c) 2015 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::Mdkrepo; use strict; #use Data::Dumper; sub addpkg { my ($res, $data, $options) = @_; if ($options->{'addselfprovides'} && defined($data->{'name'}) && defined($data->{'version'})) { if (($data->{'arch'} || '') ne 'src' && ($data->{'arch'} || '') ne 'nosrc') { my $evr = $data->{'version'}; $evr = "$data->{'epoch'}:$evr" if $data->{'epoch'}; $evr = "$evr-$data->{'release'}" if defined $data->{'release'}; my $s = "$data->{'name'} = $evr"; push @{$data->{'provides'}}, $s unless grep {$_ eq $s} @{$data->{'provides'} || []}; } } if (ref($res) eq 'CODE') { $res->($data); } else { push @$res, $data; } } sub parsedeps { my ($d) = @_; my @d = split('@', $d); for (@d) { s/\[\*\]//s; s/\[(.*)\]$/ $1/s; s/ == / = /; } return \@d; } sub parse { my ($in, $res, %options) = @_; $res ||= []; my $fd; if (ref($in)) { $fd = $in; } else { if ($in =~ /\.[gc]z$/) { # we need to probe, as mageia uses xz for compression open($fd, '<', $in) || die("$in: $!\n"); my $probe; sysread($fd, $probe, 5); close($fd); if ($probe && $probe eq "\xFD7zXZ") { open($fd, '-|', "xzdec", "-dc", $in) || die("$in: $!\n"); } else { open($fd, '-|', "gzip", "-dc", $in) || die("$in: $!\n"); } } else { open($fd, '<', $in) || die("$in: $!\n"); } } my $s = {}; while (<$fd>) { chomp; if (/^\@summary\@/) { $s->{'summary'} = substr($_, 9); } elsif (/^\@provides\@/) { $s->{'provides'} = parsedeps(substr($_, 10)); } elsif (/^\@requires\@/) { $s->{'requires'} = parsedeps(substr($_, 10)); } elsif (/^\@suggests\@/) { $s->{'suggests'} = parsedeps(substr($_, 10)); } elsif (/^\@recommends\@/) { $s->{'recommends'} = parsedeps(substr($_, 12)); } elsif (/^\@obsoletes\@/) { $s->{'obsoletes'} = parsedeps(substr($_, 11)); } elsif (/^\@conflicts\@/) { $s->{'conflicts'} = parsedeps(substr($_, 11)); } elsif (/^\@info\@/) { $s ||= {}; my @s = split('@', substr($_, 6)); $s->{'location'} = "$s[0].rpm"; my $arch; if ($s[0] =~ /\.([^\.]+)$/) { $arch = $1; $s[0] =~ s/\.[^\.]+$//; } $s->{'epoch'} = $s[1] if $s[1]; $s[0] =~ s/-\Q$s[4]\E[^-]*$//s if defined($s[4]) && $s[4] ne ''; # strip disttag $s[0] .= ":$s[5]" if defined($s[5]) && $s[5] ne ''; # add distepoch $s->{'arch'} = $arch || 'noarch'; if ($s[0] =~ /^(.*)-([^-]+)-([^-]+)$/s) { ($s->{'name'}, $s->{'version'}, $s->{'release'}) = ($1, $2, $3); # fake source entry for now... $s->{'source'} = $s->{'name'} if $s->{'arch'} ne 'src' && $s->{'arch'} ne 'nosrc'; addpkg($res, $s, \%options); } $s = {}; } } return $res; } 1; obs-build-20210120/Build/Modules.pm000066400000000000000000000036001400202264700166240ustar00rootroot00000000000000################################################################ # # Copyright (c) 2019 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::Modules; use strict; use Data::Dumper; use YAML::XS; $YAML::XS::LoadBlessed = 0; sub parse { my ($in, $res, %options) = @_; $res ||= {}; my $fd; if (ref($in)) { $fd = $in; } else { if ($in =~ /\.gz$/) { open($fd, '-|', "gzip", "-dc", $in) || die("$in: $!\n"); } else { open($fd, '<', $in) || die("$in: $!\n"); } } my @mod = YAML::XS::LoadFile($fd); for my $mod (@mod) { next unless $mod->{'document'} eq 'modulemd'; my $data = $mod->{'data'}; next unless $data && ref($data) eq 'HASH'; my $name = $data->{'name'}; my $stream = $data->{'stream'}; my $module = "$name-$stream"; next unless $data->{'artifacts'}; my $rpms = $data->{'artifacts'}->{'rpms'}; next unless $rpms && ref($rpms) eq 'ARRAY'; for my $rpm (@$rpms) { my $nrpm = $rpm; $nrpm =~ s/-0:([^-]*-[^-]*\.[^\.]*)$/-$1/; push @{$res->{$nrpm}}, $module; } } # unify for (values %$res) { $_ = [ sort keys %{ { map {$_ => 1} @$_ } } ] if @$_ > 1; } return $res; } 1; obs-build-20210120/Build/Repo.pm000066400000000000000000000037321400202264700161270ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Repo; use strict; our $do_rpmmd; our $do_deb; our $do_arch; our $do_susetags; our $do_mdk; sub import { for (@_) { $do_rpmmd = 1 if $_ eq ':rpmmd'; $do_deb = 1 if $_ eq ':deb'; $do_arch = 1 if $_ eq ':arch'; $do_susetags = 1 if $_ eq ':susetags'; $do_mdk = 1 if $_ eq ':mdk'; } $do_rpmmd = $do_deb = $do_arch = $do_susetags = $do_mdk = 1 unless $do_rpmmd || $do_deb || $do_arch || $do_susetags || $do_mdk; if ($do_rpmmd) { require Build::Rpmmd; } if ($do_susetags) { require Build::Susetags; } if ($do_deb) { require Build::Debrepo; } if ($do_arch) { require Build::Archrepo; } if ($do_mdk) { require Build::Mdkrepo; } } sub parse { my ($type, @args) = @_; return Build::Rpmmd::parse(@args) if $do_rpmmd && $type eq 'rpmmd'; return Build::Susetags::parse(@args) if $do_susetags && $type eq 'susetags'; return Build::Debrepo::parse(@args) if $do_deb && $type eq 'deb'; return Build::Archrepo::parse(@args) if $do_arch && $type eq 'arch'; return Build::Mdkrepo::parse(@args) if $do_arch && $type eq 'mdk'; die("parse repo: unknown type '$type'\n"); } 1; obs-build-20210120/Build/Rpm.pm000066400000000000000000001300321400202264700157520ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Rpm; our $unfilteredprereqs = 0; our $conflictdeps = 0; our $includecallback; use strict; use Digest::MD5; sub expr_boolify { my ($v) = @_; return !defined($v) || $v eq '"' || $v =~ /^(?:0*$|v)/s ? 0 : 1; } sub expr_vcmp { my ($v1, $v2, $rr) = @_; my $r = verscmp(substr($v1, 1), substr($v2, 1)); return ($r < 0 ? 1 : $r > 0 ? 4 : 2) & $rr ? 1 : 0; } sub expr_dummyexpander { return ''; } sub expr_expand { my ($v, $expr, $xp, $r) = @_; while (1) { if ($expr =~ /^%%/s) { $v .= substr($expr, 0, 2, ''); } elsif ($expr =~ /^%/s) { my $m = macroend($expr); $v .= substr($expr, 0, length($m), ''); } elsif ($expr =~ /$r/) { $v .= substr($expr, 0, length($1), ''); } else { return ($xp->($v), $expr); } } } sub expr { my ($expr, $lev, $xp) = @_; $lev ||= 0; my ($v, $v2); $expr =~ s/^\s+//; my $t = substr($expr, 0, 1); if ($t eq '(') { ($v, $expr) = expr(substr($expr, 1), 0, $xp); return undef unless defined $v; return undef unless $expr =~ s/^\)//; } elsif ($t eq '!') { ($v, $expr) = expr(substr($expr, 1), 6, $xp); return undef unless defined $v; $v = expr_boolify($v) ? 0 : 1; } elsif ($t eq '-') { ($v, $expr) = expr(substr($expr, 1), 6, $xp); return undef unless defined $v; $v = -$v; } elsif ($expr =~ /^([0-9]+)(.*?)$/s || ($xp && $expr =~ /^(%)(.*)$/)) { $v = $1; $expr = $2; ($v, $expr) = expr_expand('0', "$1$2", $xp, qr/^([0-9]+)/) if $xp; $v = 0 + $v; } elsif ($expr =~ /^v\"(.*?)(\".*)$/s) { $v = "v$1"; # version $expr = $2; ($v, $expr) = expr_expand('v', substr("$1$2", 2), $xp, qr/^([^%\"]+)/) if $xp; $expr =~ s/^\"//s; } elsif ($expr =~ /^(\".*?)(\".*)$/s) { $v = $1; $expr = $2; ($v, $expr) = expr_expand('"', substr("$1$2", 1), $xp, qr/^([^%\"]+)/) if $xp; $expr =~ s/^\"//s; } elsif ($expr =~ /^([a-zA-Z][a-zA-Z_0-9]*)(.*)$/s) { # actually no longer supported with new rpm versions $v = "\"$1"; $expr = $2; } else { return; } return ($v, $expr) if $lev >= 6; while (1) { $expr =~ s/^\s+//; if ($expr =~ /^&&/) { return ($v, $expr) if $lev >= 2; my $b = expr_boolify($v); ($v2, $expr) = expr(substr($expr, 2), 2, $xp && !$b ? \&expr_dummyexpander : $xp); return undef unless defined $v2; $v = $v2 if $b; } elsif ($expr =~ /^\|\|/) { return ($v, $expr) if $lev >= 2; my $b = expr_boolify($v); ($v2, $expr) = expr(substr($expr, 2), 2, $xp && $b ? \&expr_dummyexpander : $xp); return undef unless defined $v2; $v = $v2 unless $b; } elsif ($expr =~ /^>=/) { return ($v, $expr) if $lev >= 3; ($v2, $expr) = expr(substr($expr, 2), 3, $xp); return undef unless defined $v2; $v = (($v =~ /^v/) ? expr_vcmp($v, $v2, 6) : ($v =~ /^\"/) ? $v ge $v2 : $v >= $v2) ? 1 : 0; } elsif ($expr =~ /^>/) { return ($v, $expr) if $lev >= 3; ($v2, $expr) = expr(substr($expr, 1), 3, $xp); return undef unless defined $v2; $v = (($v =~ /^v/) ? expr_vcmp($v, $v2, 4) : ($v =~ /^\"/) ? $v gt $v2 : $v > $v2) ? 1 : 0; } elsif ($expr =~ /^<=/) { return ($v, $expr) if $lev >= 3; ($v2, $expr) = expr(substr($expr, 2), 3, $xp); return undef unless defined $v2; $v = (($v =~ /^v/) ? expr_vcmp($v, $v2, 3) : ($v =~ /^\"/) ? $v le $v2 : $v <= $v2) ? 1 : 0; } elsif ($expr =~ /^= 3; ($v2, $expr) = expr(substr($expr, 1), 3, $xp); return undef unless defined $v2; $v = (($v =~ /^v/) ? expr_vcmp($v, $v2, 1) : ($v =~ /^\"/) ? $v lt $v2 : $v < $v2) ? 1 : 0; } elsif ($expr =~ /^==/) { return ($v, $expr) if $lev >= 3; ($v2, $expr) = expr(substr($expr, 2), 3, $xp); return undef unless defined $v2; $v = (($v =~ /^v/) ? expr_vcmp($v, $v2, 2) : ($v =~ /^\"/) ? $v eq $v2 : $v == $v2) ? 1 : 0; } elsif ($expr =~ /^!=/) { return ($v, $expr) if $lev >= 3; ($v2, $expr) = expr(substr($expr, 2), 3, $xp); return undef unless defined $v2; $v = (($v =~ /^v/) ? expr_vcmp($v, $v2, 5) : ($v =~ /^\"/) ? $v ne $v2 : $v != $v2) ? 1 : 0; } elsif ($expr =~ /^\+/) { return ($v, $expr) if $lev >= 4; ($v2, $expr) = expr(substr($expr, 1), 4, $xp); return undef unless defined $v2; if ($v =~ /^\"/ && $v2 =~ s/^\"//) { $v .= $v2; } else { $v += $v2; } } elsif ($expr =~ /^-/) { return ($v, $expr) if $lev >= 4; ($v2, $expr) = expr(substr($expr, 1), 4, $xp); return undef unless defined $v2; $v -= $v2; } elsif ($expr =~ /^\*/) { ($v2, $expr) = expr(substr($expr, 1), 5, $xp); return undef unless defined $v2; $v *= $v2; } elsif ($expr =~ /^\//) { ($v2, $expr) = expr(substr($expr, 1), 5, $xp); return undef unless defined $v2 && 0 + $v2; $v /= $v2; } elsif ($expr =~ /^\?/) { return ($v, $expr) if $lev > 1; my $b = expr_boolify($v); ($v, $expr) = expr(substr($expr, 1), 1, $xp && !$b ? \&expr_dummyexpander : $xp); warn("syntax error while parsing ternary in $_[0]\n") unless defined($v) && $expr =~ s/^://; ($v2, $expr) = expr($expr, 1, $xp && $b ? \&expr_dummyexpander : $xp); return undef unless defined $v2; $v = $v2 unless $b; } elsif ($expr =~ /^([=&|])/) { warn("syntax error while parsing $1$1\n"); return ($v, $expr); } else { return ($v, $expr); } } } sub adaptmacros { my ($macros, $optold, $optnew) = @_; for (keys %$optold) { delete $macros->{$_}; } for (keys %$optnew) { $macros->{$_} = $optnew->{$_}; } return $optnew; } sub grabargs { my ($macname, $getopt, @args) = @_; my %m; $m{'0'} = $macname; $m{'**'} = join(' ', @args); my %go; %go = ($getopt =~ /(.)(:*)/sg) if defined $getopt; while (@args && $args[0] =~ s/^-//) { my $o = shift @args; last if $o eq '-'; while ($o =~ /^(.)(.*)$/) { if ($go{$1}) { my $arg = $2; $arg = shift(@args) if @args && $arg eq ''; $m{"-$1"} = "-$1 $arg"; $m{"-$1*"} = $arg; last; } $m{"-$1"} = "-$1"; $o = $2; } } $m{'#'} = scalar(@args); my $i = 1; for (@args) { $m{$i} = $_; $i++; } $m{'*'} = join(' ', @args); return \%m; } sub initmacros { my ($config, $macros, $macros_args) = @_; for my $line (@{$config->{'macros'} || []}) { next unless $line =~ /^%define\s*([0-9a-zA-Z_]+)(?:\(([^\)]*)\))?\s*(.*?)$/; my $macname = $1; my $macargs = $2; my $macbody = $3; if (defined $macargs) { $macros_args->{$macname} = $macargs; } else { delete $macros_args->{$macname}; } $macros->{$macname} = $macbody; } } sub macroend { my ($expr) = @_; if ($expr =~ /^%([\(\{\[])/s) { my $o = $1; my $c = $o eq '[' ? ']' : $o eq '(' ? ')' : '}'; my $m = substr($expr, 0, 2, ''); my $cnt = 1; my $r = qr/^(.*?)([$o$c\\])/s; while ($expr =~ /$r/) { $m .= substr($expr, 0, length($1) + 1, ''); if ($2 eq '\\') { $m .= substr($expr, 0, 1, ''); } elsif ($2 eq $o) { $cnt++; } elsif ($2 eq $c) { return $m if --$cnt == 0; } } return "$m$expr"; } return $1 if $expr =~ /^(%[?!]*-?[a-zA-Z0-9_]*(?:\*|\*\*|\#)?)/s; } sub expandmacros { my ($config, $line, $lineno, $macros, $macros_args, $tries) = @_; if (!$macros) { $macros = {}; $macros_args = {}; initmacros($config, $macros, $macros_args); } my $expandedline = ''; $tries ||= 0; my @expandstack; my $optmacros = {}; # newer perls: \{((?:(?>[^{}]+)|(?2))*)\} reexpand: while ($line =~ /^(.*?)%(\{([^\}]+)\}|[\?\!]*[0-9a-zA-Z_]+|%|\*\*?|#|\(|\[)(.*?)$/s) { if ($tries++ > 1000) { print STDERR "Warning: spec file parser ",($lineno?" line $lineno":''),": macro too deeply nested\n" if $config->{'warnings'}; $line = 'MACRO'; last; } $expandedline .= $1; $line = $4; if ($2 eq '%') { $expandedline .= '%'; next; } my $macname = defined($3) ? $3 : $2; my $macorig = $2; my $macdata; my $macalt; if (defined($3)) { if ($macname =~ /[{\\]/) { # tricky, use macroend $macname = macroend("%$macorig$line"); $line = substr("%$macorig$line", length($macname)); $macorig = substr($macname, 1); $macname =~ s/^%\{//s; $macname =~ s/\}$//s; } $macdata = ''; if ($macname =~ /^([^\s:]+)([\s:])(.*)$/) { $macname = $1; if ($2 eq ':') { $macalt = $3; } else { $macdata = $3; } } } my $mactest = 0; if ($macname =~ /^\!\?/ || $macname =~ /^\?\!/) { $mactest = -1; } elsif ($macname =~ /^\?/) { $mactest = 1; } $macname =~ s/^[\!\?]+//; if ($macname eq '(') { print STDERR "Warning: spec file parser",($lineno?" line $lineno":''),": can't expand %(...)\n" if $config->{'warnings'}; $line = 'MACRO'; last; } elsif ($macname eq '[') { $macalt = macroend("%[$line"); $line = substr($line, length($macalt) - 2); $macalt =~ s/^%\[//; $macalt =~ s/\]$//; my $xp = sub {expandmacros($config, $_[0], $lineno, $macros, $macros_args, $tries)}; $macalt = (expr($macalt, 0, $xp))[0]; $macalt =~ s/^[v\"]//; # stringify $expandedline .= $macalt; } elsif ($macname eq 'define' || $macname eq 'global') { my $isglobal = $macname eq 'global' ? 1 : 0; if ($line =~ /^\s*([0-9a-zA-Z_]+)(?:\(([^\)]*)\))?\s*(.*?)$/) { my $macname = $1; my $macargs = $2; my $macbody = $3; $macbody = expandmacros($config, $macbody, $lineno, $macros, $macros_args, $tries) if $isglobal; if (defined $macargs) { $macros_args->{$macname} = $macargs; } else { delete $macros_args->{$macname}; } $macros->{$macname} = $macbody; } $line = ''; last; } elsif ($macname eq 'defined' || $macname eq 'with' || $macname eq 'undefined' || $macname eq 'without' || $macname eq 'bcond_with' || $macname eq 'bcond_without') { my @args; if ($macorig =~ /^\{(.*)\}$/) { @args = split(' ', $1); shift @args; } else { @args = split(' ', $line); $line = ''; } next unless @args; if ($macname eq 'bcond_with') { $macros->{"with_$args[0]"} = 1 if exists $macros->{"_with_$args[0]"}; next; } if ($macname eq 'bcond_without') { $macros->{"with_$args[0]"} = 1 unless exists $macros->{"_without_$args[0]"}; next; } $args[0] = "with_$args[0]" if $macname eq 'with' || $macname eq 'without'; $line = ((exists($macros->{$args[0]}) ? 1 : 0) ^ ($macname eq 'undefined' || $macname eq 'without' ? 1 : 0)).$line; } elsif ($macname eq 'expand') { $macalt = $macros->{$macname} unless defined $macalt; $macalt = '' if $mactest == -1; push @expandstack, ($expandedline, $line, undef); $line = $macalt; $expandedline = ''; } elsif ($macname eq 'expr') { $macalt = $macros->{$macname} unless defined $macalt; $macalt = '' if $mactest == -1; $macalt = expandmacros($config, $macalt, $lineno, $macros, $macros_args, $tries); $macalt = (expr($macalt))[0]; $macalt =~ s/^[v\"]//; # stringify $expandedline .= $macalt; } elsif (exists($macros->{$macname})) { if (!defined($macros->{$macname})) { print STDERR "Warning: spec file parser",($lineno?" line $lineno":''),": can't expand '$macname'\n" if $config->{'warnings'}; $line = 'MACRO'; last; } if (defined($macros_args->{$macname})) { # macro with args! if (!defined($macdata)) { $line =~ /^\s*([^\n]*).*$/; $macdata = $1; $line = ''; } push @expandstack, ($expandedline, $line, $optmacros); $optmacros = adaptmacros($macros, $optmacros, grabargs($macname, $macros_args->{$macname}, split(' ', $macdata))); $line = $macros->{$macname}; $expandedline = ''; next; } $macalt = $macros->{$macname} unless defined $macalt; $macalt = '' if $mactest == -1; if ($macalt =~ /%/) { push @expandstack, ('', $line, 1) if $line ne ''; $line = $macalt; } else { $expandedline .= $macalt; } } elsif ($mactest) { $macalt = '' if !defined($macalt) || $mactest == 1; if ($macalt =~ /%/) { push @expandstack, ('', $line, 1) if $line ne ''; $line = $macalt; } else { $expandedline .= $macalt; } } else { $expandedline .= "%$macorig" unless $macname =~ /^-/; } } $line = $expandedline . $line; if (@expandstack) { my $m = pop(@expandstack); if ($m) { $optmacros = adaptmacros($macros, $optmacros, $m) if ref $m; $expandstack[-2] .= $line; $line = pop(@expandstack); $expandedline = pop(@expandstack); } else { my $todo = pop(@expandstack); $expandedline = pop(@expandstack); push @expandstack, ('', $todo, 1) if $todo ne ''; } goto reexpand; } return $line; } sub splitdeps { my ($d) = @_; my @deps; $d =~ s/^[\s,]+//; while ($d ne '') { if ($d =~ /^\(/) { my @s = split(' ', $d); push @deps, shiftrich(\@s), undef, undef; $d = join(' ', @s); } else { last unless $d =~ s/([^\s\[,]+)(\s+[<=>]+\s+[^\s\[,]+)?(\s+\[[^\]]+\])?[\s,]*//; push @deps, $1, $2, $3; } } return @deps; } # xspec may be passed as array ref to return the parsed spec files # an entry in the returned array can be # - a string: verbatim line from the original file # - a two element array ref: # - [0] original line # - [1] undef: line unused due to %if # - [1] scalar: line after macro expansion. Only set if it's a build deps # line and build deps got modified or 'save_expanded' is set in # config sub parse { my ($config, $specfile, $xspec) = @_; my $packname; my $exclarch; my $badarch; my @subpacks; my @packdeps; my @prereqs; my $hasnfb; my $nfbline; my %macros; my %macros_args; my $ret = {}; my $ifdeps; my %autonum = (patch => 0, source => 0); my $specdata; local *SPEC; if (ref($specfile) eq 'GLOB') { *SPEC = *$specfile; } elsif (ref($specfile) eq 'ARRAY') { $specdata = [ @$specfile ]; } elsif (!open(SPEC, '<', $specfile)) { warn("$specfile: $!\n"); $ret->{'error'} = "open $specfile: $!"; return $ret; } initmacros($config, \%macros, \%macros_args); my $skip = 0; my $main_preamble = 1; my $preamble = 1; my $hasif = 0; my $lineno = 0; my @includelines; my $includenum = 0; my $obspackage = defined($config->{'obspackage'}) ? $config->{'obspackage'} : '@OBS_PACKAGE@'; my $buildflavor = defined($config->{'buildflavor'}) ? $config->{'buildflavor'} : ''; while (1) { my $line; my $doxspec = $xspec ? 1 : 0; if (@includelines) { $line = shift(@includelines); $includenum = 0 unless @includelines; $doxspec = 0; # only record lines from main file } elsif ($specdata) { last unless @$specdata; $line = shift @$specdata; ++$lineno; if (ref $line) { $line = $line->[0]; # verbatim line, used for macro collection push @$xspec, $line if $doxspec; $xspec->[-1] = [ $line, undef ] if $doxspec && $skip; next; } } else { $line = ; last unless defined $line; chomp $line; ++$lineno; } push @$xspec, $line if $doxspec; if ($line =~ /^#\s*neededforbuild\s*(\S.*)$/) { if (defined $hasnfb) { $xspec->[-1] = [ $xspec->[-1], undef ] if $doxspec; next; } $hasnfb = $1; $nfbline = \$xspec->[-1] if $doxspec; next; } if ($line =~ /^\s*#/) { next unless $line =~ /^#!Build(?:Ignore|Conflicts|Requires)\s*:/i; } if (!$skip && ($line =~ /%/)) { $line = expandmacros($config, $line, $lineno, \%macros, \%macros_args); } if ($line =~ /^\s*%(?:elif|elifarch|elifos)\b/) { $skip = 1 if !$skip; $skip = 2 - $skip if $skip <= 2; next if $skip; $line =~ s/^(\s*%)el/$1/; $line = expandmacros($config, $line, $lineno, \%macros, \%macros_args); } if ($line =~ /^\s*%else\b/) { $skip = 2 - $skip if $skip <= 2; next; } if ($line =~ /^\s*%endif\b/) { $skip = $skip > 2 ? $skip - 2 : 0; next; } if ($skip) { $skip += 2 if $line =~ /^\s*%if/; $xspec->[-1] = [ $xspec->[-1], undef ] if $doxspec; $ifdeps = 1 if $line =~ /^(BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore|\#\!BuildConflicts|\#\!BuildRequires)\s*:\s*(\S.*)$/i; next; } if ($line =~ /\@/) { $line =~ s/\@BUILD_FLAVOR\@/$buildflavor/g; $line =~ s/\@OBS_PACKAGE\@/$obspackage/g; } if ($line =~ /^\s*%ifarch(.*)$/) { my $arch = $macros{'_target_cpu'} || 'unknown'; my @archs = grep {$_ eq $arch} split(/\s+/, $1); $skip = 2 if !@archs; $hasif = 1; next; } if ($line =~ /^\s*%ifnarch(.*)$/) { my $arch = $macros{'_target_cpu'} || 'unknown'; my @archs = grep {$_ eq $arch} split(/\s+/, $1); $skip = 2 if @archs; $hasif = 1; next; } if ($line =~ /^\s*%ifos(.*)$/) { my $os = $macros{'_target_os'} || 'unknown'; my @oss = grep {$_ eq $os} split(/\s+/, $1); $skip = 2 if !@oss; $hasif = 1; next; } if ($line =~ /^\s*%ifnos(.*)$/) { my $os = $macros{'_target_os'} || 'unknown'; my @oss = grep {$_ eq $os} split(/\s+/, $1); $skip = 2 if @oss; $hasif = 1; next; } if ($line =~ /^\s*%if(.*)$/) { my ($v, $r) = expr($1); $v = expr_boolify($v); $skip = 2 unless $v; $hasif = 1; next; } if ($includecallback && $line =~ /^\s*%include\s+(.*)\s*$/) { if ($includenum++ < 10) { my $data = $includecallback->($1); unshift @includelines, split("\n", $data) if $data; } else { warn("%include statment level too high, ignored\n") if $config->{'warnings'}; } } if ($main_preamble) { if ($line =~ /^(Name|Version|Disttag|Release)\s*:\s*(\S+)/i) { $ret->{lc $1} = $2; $macros{lc $1} = $2; } elsif ($line =~ /^ExclusiveArch\s*:\s*(.*)/i) { $exclarch ||= []; push @$exclarch, split(' ', $1); } elsif ($line =~ /^ExcludeArch\s*:\s*(.*)/i) { $badarch ||= []; push @$badarch, split(' ', $1); } } if (@subpacks && $preamble && exists($ret->{'version'}) && $line =~ /^Version\s*:\s*(\S+)/i) { $ret->{'multiversion'} = 1 if $ret->{'version'} ne $1; } if ($preamble && $line =~ /^\#\!ForceMultiVersion\s*$/i) { $ret->{'multiversion'} = 1; } if ($line =~ /^(?:Requires\(pre\)|Requires\(post\)|PreReq)\s*:\s*(\S.*)$/i) { my $deps = $1; my @deps; if (" $deps" =~ /[\s,]\(/) { @deps = splitdeps($deps); } else { @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}; } push @prereqs, $pack unless grep {$_ eq $pack} @prereqs; } next; } if ($preamble && ($line =~ /^(BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore|\#\!BuildConflicts|\#\!BuildRequires)\s*:\s*(\S.*)$/i)) { my $what = $1; my $deps = $2; $ifdeps = 1 if $hasif; # XXX: weird syntax addition. can append arch or project to dependency # BuildRequire: foo > 17 [i586,x86_64] # BuildRequire: foo [home:bar] # BuildRequire: foo [!home:bar] my @deps; if (" $deps" =~ /[\s,]\(/) { # we need to be careful, there could be a rich dep @deps = splitdeps($deps); } else { @deps = $deps =~ /([^\s\[,]+)(\s+[<=>]+\s+[^\s\[,]+)?(\s+\[[^\]]+\])?[\s,]*/g; } my $replace = 0; my @ndeps = (); while (@deps) { my ($pack, $vers, $qual) = splice(@deps, 0, 3); if (defined($qual)) { $replace = 1; my $arch = $macros{'_target_cpu'} || ''; my $proj = $macros{'_target_project'} || ''; $qual =~ s/^\s*\[//; $qual =~ s/\]$//; my $isneg = 0; my $bad; for my $q (split('[\s,]', $qual)) { $isneg = 1 if $q =~ s/^\!//; $bad = 1 if !defined($bad) && !$isneg; if ($isneg) { if ($q eq $arch || $q eq $proj) { $bad = 1; last; } } elsif ($q eq $arch || $q eq $proj) { $bad = 0; } } next if $bad; } $vers = '' unless defined $vers; $vers =~ s/=(>|<)/$1=/; push @ndeps, "$pack$vers"; } $replace = 1 if grep {/^-/} @ndeps; my $lcwhat = lc($what); if ($lcwhat ne 'buildrequires' && $lcwhat ne 'buildprereq' && $lcwhat ne '#!buildrequires') { if ($conflictdeps && $what =~ /conflict/i) { push @packdeps, map {"!$_"} @ndeps; next; } push @packdeps, map {"-$_"} @ndeps; next; } if (defined($hasnfb)) { if ((grep {$_ eq 'glibc' || $_ eq 'rpm' || $_ eq 'gcc' || $_ eq 'bash'} @ndeps) > 2) { # ignore old generated BuildRequire lines. $xspec->[-1] = [ $xspec->[-1], undef ] if $doxspec; next; } } push @packdeps, @ndeps; next unless $doxspec; if ($replace) { my @cndeps = grep {!/^-/} @ndeps; if (@cndeps) { $xspec->[-1] = [ $xspec->[-1], "$what: ".join(' ', @cndeps) ]; } else { $xspec->[-1] = [ $xspec->[-1], '']; } } next; } elsif ($preamble && $line =~ /^(Source\d*|Patch\d*|Url|Icon)\s*:\s*(\S+)/i) { my ($tag, $val) = (lc($1), $2); $macros{$tag} = $val if $tag eq 'url'; # associate url and icon tags with the corresponding subpackage $tag .= scalar @subpacks if ($tag eq 'url' || $tag eq 'icon') && @subpacks; if ($tag =~ /icon/) { # there can be a gif and xpm icon push @{$ret->{$tag}}, $val; } else { if ($tag =~ /^(source|patch)(\d+)?$/) { my $num = defined($2) ? 0 + $2 : $autonum{$1}; $tag = "$1$num"; if ($tag eq 'patch0' && exists($ret->{$tag})) { # gross hack. Before autonumbering "Patch" and "Patch0" could # exist. So take out the previous patch and add it back # without number. This does not exactly work as old rpms # but hopefully good enough :-) $ret->{'patch'} = delete $ret->{$tag}; } print STDERR "Warning: spec file parser: $tag already exists\n" if exists($ret->{$tag}) && $config->{'warnings'}; $autonum{$1} = $num + 1 if $num >= $autonum{$1}; $macros{uc($1) . "URL$num"} = $val; } $ret->{$tag} = $val; } } 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'}; } if ($line =~ /^\s*%package\s+(-n\s+)?(\S+)/) { if ($1) { push @subpacks, $2; } else { push @subpacks, $ret->{'name'}.'-'.$2 if defined $ret->{'name'}; } $preamble = 1; $main_preamble = 0; } if ($line =~ /^\s*%(prep|build|install|check|clean|preun|postun|pretrans|posttrans|pre|post|files|changelog|description|triggerpostun|triggerun|triggerin|trigger|verifyscript)/) { $main_preamble = 0; $preamble = 0; } # do this always? if ($doxspec && $config->{'save_expanded'}) { $xspec->[-1] = [ $xspec->[-1], $line ]; } } close SPEC unless ref $specfile; if (defined($hasnfb)) { if (!@packdeps) { @packdeps = split(' ', $hasnfb); } elsif ($nfbline) { $$nfbline = [$$nfbline, undef ]; } } unshift @subpacks, $ret->{'name'} if defined $ret->{'name'}; $ret->{'subpacks'} = \@subpacks; $ret->{'exclarch'} = $exclarch if defined $exclarch; $ret->{'badarch'} = $badarch if defined $badarch; $ret->{'deps'} = \@packdeps; $ret->{'prereqs'} = \@prereqs if @prereqs; $ret->{'configdependent'} = 1 if $ifdeps; return $ret; } ########################################################################### my %rpmstag = ( "SIGTAG_SIZE" => 1000, # Header+Payload size in bytes. */ "SIGTAG_PGP" => 1002, # RSA signature over Header+Payload "SIGTAG_MD5" => 1004, # MD5 hash over Header+Payload "SIGTAG_GPG" => 1005, # DSA signature over Header+Payload "NAME" => 1000, "VERSION" => 1001, "RELEASE" => 1002, "EPOCH" => 1003, "SUMMARY" => 1004, "DESCRIPTION" => 1005, "BUILDTIME" => 1006, "ARCH" => 1022, "OLDFILENAMES" => 1027, "SOURCERPM" => 1044, "PROVIDENAME" => 1047, "REQUIREFLAGS" => 1048, "REQUIRENAME" => 1049, "REQUIREVERSION" => 1050, "NOSOURCE" => 1051, "NOPATCH" => 1052, "SOURCEPACKAGE" => 1106, "PROVIDEFLAGS" => 1112, "PROVIDEVERSION" => 1113, "DIRINDEXES" => 1116, "BASENAMES" => 1117, "DIRNAMES" => 1118, "DISTURL" => 1123, "CONFLICTFLAGS" => 1053, "CONFLICTNAME" => 1054, "CONFLICTVERSION" => 1055, "OBSOLETENAME" => 1090, "OBSOLETEFLAGS" => 1114, "OBSOLETEVERSION" => 1115, "OLDSUGGESTSNAME" => 1156, "OLDSUGGESTSVERSION" => 1157, "OLDSUGGESTSFLAGS" => 1158, "OLDENHANCESNAME" => 1159, "OLDENHANCESVERSION" => 1160, "OLDENHANCESFLAGS" => 1161, "RECOMMENDNAME" => 5046, "RECOMMENDVERSION" => 5047, "RECOMMENDFLAGS" => 5048, "SUGGESTNAME" => 5049, "SUGGESTVERSION" => 5050, "SUGGESTFLAGS" => 5051, "SUPPLEMENTNAME" => 5052, "SUPPLEMENTVERSION" => 5053, "SUPPLEMENTFLAGS" => 5054, "ENHANCENAME" => 5055, "ENHANCEVERSION" => 5056, "ENHANCEFLAGS" => 5057, ); sub rpmq { my ($rpm, @stags) = @_; my @sigtags = grep {/^SIGTAG_/} @stags; @stags = grep {!/^SIGTAG_/} @stags; my $dosigs = @sigtags && !@stags; @stags = @sigtags if $dosigs; my $need_filenames = grep { $_ eq 'FILENAMES' } @stags; push @stags, 'BASENAMES', 'DIRNAMES', 'DIRINDEXES', 'OLDFILENAMES' if $need_filenames; @stags = grep { $_ ne 'FILENAMES' } @stags if $need_filenames; my %stags = map {0 + ($rpmstag{$_} || $_) => $_} @stags; my ($magic, $sigtype, $headmagic, $cnt, $cntdata, $lead, $head, $index, $data, $tag, $type, $offset, $count); local *RPM; my $forcebinary; if (ref($rpm) eq 'ARRAY') { ($headmagic, $cnt, $cntdata) = unpack('N@8NN', $rpm->[0]); if ($headmagic != 0x8eade801) { warn("Bad rpm\n"); return (); } if (length($rpm->[0]) < 16 + $cnt * 16 + $cntdata) { warn("Bad rpm\n"); return (); } $index = substr($rpm->[0], 16, $cnt * 16); $data = substr($rpm->[0], 16 + $cnt * 16, $cntdata); } else { if (ref($rpm) eq 'GLOB') { *RPM = *$rpm; } elsif (!open(RPM, '<', $rpm)) { warn("$rpm: $!\n"); return (); } if (read(RPM, $lead, 96) != 96) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } ($magic, $sigtype) = unpack('N@78n', $lead); if ($magic != 0xedabeedb || $sigtype != 5) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } $forcebinary = 1 if unpack('@6n', $lead) != 1; if (read(RPM, $head, 16) != 16) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } ($headmagic, $cnt, $cntdata) = unpack('N@8NN', $head); if ($headmagic != 0x8eade801) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } if (read(RPM, $index, $cnt * 16) != $cnt * 16) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } $cntdata = ($cntdata + 7) & ~7; if (read(RPM, $data, $cntdata) != $cntdata) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } } my %res = (); if (@sigtags && !$dosigs) { %res = &rpmq(["$head$index$data"], @sigtags); } if (ref($rpm) eq 'ARRAY' && !$dosigs && @$rpm > 1) { my %res2 = &rpmq([ $rpm->[1] ], @stags); %res = (%res, %res2); return %res; } if (ref($rpm) ne 'ARRAY' && !$dosigs) { if (read(RPM, $head, 16) != 16) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } ($headmagic, $cnt, $cntdata) = unpack('N@8NN', $head); if ($headmagic != 0x8eade801) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } if (read(RPM, $index, $cnt * 16) != $cnt * 16) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } if (read(RPM, $data, $cntdata) != $cntdata) { warn("Bad rpm $rpm\n"); close RPM unless ref($rpm); return (); } } close RPM unless ref($rpm); # return %res unless @stags; while($cnt-- > 0) { ($tag, $type, $offset, $count, $index) = unpack('N4a*', $index); $tag = 0+$tag; if ($stags{$tag} || !@stags) { eval { my $otag = $stags{$tag} || $tag; if ($type == 0) { $res{$otag} = [ '' ]; } elsif ($type == 1) { $res{$otag} = [ unpack("\@${offset}c$count", $data) ]; } elsif ($type == 2) { $res{$otag} = [ unpack("\@${offset}c$count", $data) ]; } elsif ($type == 3) { $res{$otag} = [ unpack("\@${offset}n$count", $data) ]; } elsif ($type == 4) { $res{$otag} = [ unpack("\@${offset}N$count", $data) ]; } elsif ($type == 5) { $res{$otag} = [ undef ]; } elsif ($type == 6) { $res{$otag} = [ unpack("\@${offset}Z*", $data) ]; } elsif ($type == 7) { $res{$otag} = [ unpack("\@${offset}a$count", $data) ]; } elsif ($type == 8 || $type == 9) { my $d = unpack("\@${offset}a*", $data); my @res = split("\0", $d, $count + 1); $res{$otag} = [ splice @res, 0, $count ]; } else { $res{$otag} = [ undef ]; } }; if ($@) { warn("Bad rpm $rpm: $@\n"); return (); } } } if ($forcebinary && $stags{1044} && !$res{$stags{1044}} && !($stags{1106} && $res{$stags{1106}})) { $res{$stags{1044}} = [ '(none)' ]; # like rpm does... } if ($need_filenames) { if ($res{'OLDFILENAMES'}) { $res{'FILENAMES'} = [ @{$res{'OLDFILENAMES'}} ]; } else { my $i = 0; $res{'FILENAMES'} = [ map {"$res{'DIRNAMES'}->[$res{'DIRINDEXES'}->[$i++]]$_"} @{$res{'BASENAMES'}} ]; } } return %res; } sub add_flagsvers { my ($res, $name, $flags, $vers) = @_; return unless $res && $res->{$name}; my @flags = @{$res->{$flags} || []}; my @vers = @{$res->{$vers} || []}; for (@{$res->{$name}}) { if (@flags && ($flags[0] & 0xe) && @vers) { $_ .= ' '; $_ .= '<' if $flags[0] & 2; $_ .= '>' if $flags[0] & 4; $_ .= '=' if $flags[0] & 8; $_ .= " $vers[0]"; } shift @flags; shift @vers; } } sub filteroldweak { my ($res, $name, $flags, $data, $strong, $weak) = @_; return unless $res && $res->{$name}; my @flags = @{$res->{$flags} || []}; my @strong; my @weak; for (@{$res->{$name}}) { if (@flags && ($flags[0] & 0x8000000)) { push @strong, $_; } else { push @weak, $_; } shift @flags; } $data->{$strong} = \@strong if @strong; $data->{$weak} = \@weak if @weak; } sub verscmp_part { my ($s1, $s2) = @_; if (!defined($s1)) { return defined($s2) ? -1 : 0; } 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~\^]+//; 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; } return 1 if $s2 eq ''; my ($x1, $x2, $r); if ($s1 =~ /^([0-9]+)(.*?)$/) { $x1 = $1; $s1 = $2; $s2 =~ /^([0-9]*)(.*?)$/; $x2 = $1; $s2 = $2; return 1 if $x2 eq ''; $x1 =~ s/^0+//; $x2 =~ s/^0+//; $r = length($x1) - length($x2) || $x1 cmp $x2; } elsif ($s1 ne '' && $s2 ne '') { $s1 =~ /^([a-zA-Z]*)(.*?)$/; $x1 = $1; $s1 = $2; $s2 =~ /^([a-zA-Z]*)(.*?)$/; $x2 = $1; $s2 = $2; return -1 if $x1 eq '' || $x2 eq ''; $r = $x1 cmp $x2; } return $r > 0 ? 1 : -1 if $r; } } sub verscmp { my ($s1, $s2, $dtest) = @_; return 0 if $s1 eq $s2; my ($e1, $v1, $r1) = $s1 =~ /^(?:(\d+):)?(.*?)(?:-([^-]*))?$/s; $e1 = 0 unless defined $e1; my ($e2, $v2, $r2) = $s2 =~ /^(?:(\d+):)?(.*?)(?:-([^-]*))?$/s; $e2 = 0 unless defined $e2; if ($e1 ne $e2) { my $r = verscmp_part($e1, $e2); return $r if $r; } return 0 if $dtest && ($v1 eq '' || $v2 eq ''); if ($v1 ne $v2) { my $r = verscmp_part($v1, $v2); return $r if $r; } $r1 = '' unless defined $r1; $r2 = '' unless defined $r2; return 0 if $dtest && ($r1 eq '' || $r2 eq ''); if ($r1 ne $r2) { return verscmp_part($r1, $r2); } return 0; } sub query { my ($handle, %opts) = @_; my @tags = qw{NAME SOURCERPM NOSOURCE NOPATCH SIGTAG_MD5 PROVIDENAME PROVIDEFLAGS PROVIDEVERSION REQUIRENAME REQUIREFLAGS REQUIREVERSION SOURCEPACKAGE}; push @tags, qw{EPOCH VERSION RELEASE ARCH}; push @tags, qw{FILENAMES} if $opts{'filelist'}; push @tags, qw{SUMMARY DESCRIPTION} if $opts{'description'}; push @tags, qw{DISTURL} if $opts{'disturl'}; push @tags, qw{BUILDTIME} if $opts{'buildtime'}; push @tags, qw{CONFLICTNAME CONFLICTVERSION CONFLICTFLAGS OBSOLETENAME OBSOLETEVERSION OBSOLETEFLAGS} if $opts{'conflicts'}; push @tags, qw{RECOMMENDNAME RECOMMENDVERSION RECOMMENDFLAGS SUGGESTNAME SUGGESTVERSION SUGGESTFLAGS SUPPLEMENTNAME SUPPLEMENTVERSION SUPPLEMENTFLAGS ENHANCENAME ENHANCEVERSION ENHANCEFLAGS OLDSUGGESTSNAME OLDSUGGESTSVERSION OLDSUGGESTSFLAGS OLDENHANCESNAME OLDENHANCESVERSION OLDENHANCESFLAGS} if $opts{'weakdeps'}; my %res = rpmq($handle, @tags); return undef unless %res; my $src = $res{'SOURCERPM'}->[0]; $src = '' unless defined $src; $src =~ s/-[^-]*-[^-]*\.[^\.]*\.rpm//; add_flagsvers(\%res, 'PROVIDENAME', 'PROVIDEFLAGS', 'PROVIDEVERSION'); add_flagsvers(\%res, 'REQUIRENAME', 'REQUIREFLAGS', 'REQUIREVERSION'); my $data = { name => $res{'NAME'}->[0], hdrmd5 => unpack('H32', $res{'SIGTAG_MD5'}->[0]), }; if ($opts{'alldeps'}) { $data->{'provides'} = [ @{$res{'PROVIDENAME'} || []} ]; $data->{'requires'} = [ @{$res{'REQUIRENAME'} || []} ]; } else { $data->{'provides'} = [ grep {!/^rpmlib\(/ && !/^\//} @{$res{'PROVIDENAME'} || []} ]; $data->{'requires'} = [ grep {!/^rpmlib\(/ && !/^\//} @{$res{'REQUIRENAME'} || []} ]; } if ($opts{'conflicts'}) { add_flagsvers(\%res, 'CONFLICTNAME', 'CONFLICTFLAGS', 'CONFLICTVERSION'); add_flagsvers(\%res, 'OBSOLETENAME', 'OBSOLETEFLAGS', 'OBSOLETEVERSION'); $data->{'conflicts'} = [ @{$res{'CONFLICTNAME'}} ] if $res{'CONFLICTNAME'}; $data->{'obsoletes'} = [ @{$res{'OBSOLETENAME'}} ] if $res{'OBSOLETENAME'}; } if ($opts{'weakdeps'}) { for (qw{RECOMMEND SUGGEST SUPPLEMENT ENHANCE}) { next unless $res{"${_}NAME"}; add_flagsvers(\%res, "${_}NAME", "${_}FLAGS", "${_}VERSION"); $data->{lc($_)."s"} = [ @{$res{"${_}NAME"}} ]; } if ($res{'OLDSUGGESTSNAME'}) { add_flagsvers(\%res, 'OLDSUGGESTSNAME', 'OLDSUGGESTSFLAGS', 'OLDSUGGESTSVERSION'); filteroldweak(\%res, 'OLDSUGGESTSNAME', 'OLDSUGGESTSFLAGS', $data, 'recommends', 'suggests'); } if ($res{'OLDENHANCESNAME'}) { add_flagsvers(\%res, 'OLDENHANCESNAME', 'OLDENHANCESFLAGS', 'OLDENHANCESVERSION'); filteroldweak(\%res, 'OLDENHANCESNAME', 'OLDENHANCESFLAGS', $data, 'supplements', 'enhances'); } } # rpm3 compatibility: retrofit missing self provides if ($src ne '') { my $haveselfprovides; if (@{$data->{'provides'}}) { if ($data->{'provides'}->[-1] =~ /^\Q$res{'NAME'}->[0]\E =/) { $haveselfprovides = 1; } elsif (@{$data->{'provides'}} > 1 && $data->{'provides'}->[-2] =~ /^\Q$res{'NAME'}->[0]\E =/) { $haveselfprovides = 1; } } if (!$haveselfprovides) { my $evr = "$res{'VERSION'}->[0]-$res{'RELEASE'}->[0]"; $evr = "$res{'EPOCH'}->[0]:$evr" if $res{'EPOCH'} && $res{'EPOCH'}->[0]; push @{$data->{'provides'}}, "$res{'NAME'}->[0] = $evr"; } } $data->{'source'} = $src eq '(none)' ? $data->{'name'} : $src if $src ne ''; if ($opts{'evra'}) { my $arch = $res{'ARCH'}->[0]; $arch = $res{'NOSOURCE'} || $res{'NOPATCH'} ? 'nosrc' : 'src' unless $src ne ''; $data->{'version'} = $res{'VERSION'}->[0]; $data->{'release'} = $res{'RELEASE'}->[0]; $data->{'arch'} = $arch; $data->{'epoch'} = $res{'EPOCH'}->[0] if exists $res{'EPOCH'}; } if ($opts{'filelist'}) { $data->{'filelist'} = $res{'FILENAMES'}; } if ($opts{'description'}) { $data->{'summary'} = $res{'SUMMARY'}->[0]; $data->{'description'} = $res{'DESCRIPTION'}->[0]; } $data->{'buildtime'} = $res{'BUILDTIME'}->[0] if $opts{'buildtime'}; $data->{'disturl'} = $res{'DISTURL'}->[0] if $opts{'disturl'} && $res{'DISTURL'}; return $data; } sub queryhdrmd5 { my ($bin, $leadsigp) = @_; local *F; open(F, '<', $bin) || die("$bin: $!\n"); my $buf = ''; my $l; while (length($buf) < 96 + 16) { $l = sysread(F, $buf, 4096, length($buf)); if (!$l) { warn("$bin: read error\n"); close(F); return undef; } } my ($magic, $sigtype) = unpack('N@78n', $buf); if ($magic != 0xedabeedb || $sigtype != 5) { warn("$bin: not a rpm (bad magic of header type)\n"); close(F); return undef; } my ($headmagic, $cnt, $cntdata) = unpack('@96N@104NN', $buf); if ($headmagic != 0x8eade801) { warn("$bin: not a rpm (bad sig header magic)\n"); close(F); return undef; } my $hlen = 96 + 16 + $cnt * 16 + $cntdata; $hlen = ($hlen + 7) & ~7; while (length($buf) < $hlen) { $l = sysread(F, $buf, 4096, length($buf)); if (!$l) { warn("$bin: read error\n"); close(F); return undef; } } close F; $$leadsigp = Digest::MD5::md5_hex(substr($buf, 0, $hlen)) if $leadsigp; my $idxarea = substr($buf, 96 + 16, $cnt * 16); if ($idxarea !~ /\A(?:.{16})*\000\000\003\354\000\000\000\007(....)\000\000\000\020/s) { warn("$bin: no md5 signature header\n"); return undef; } my $md5off = unpack('N', $1); if ($md5off >= $cntdata) { warn("$bin: bad md5 offset\n"); return undef; } $md5off += 96 + 16 + $cnt * 16; return unpack("\@${md5off}H32", $buf); } sub queryinstalled { my ($root, %opts) = @_; $root = '' if !defined($root) || $root eq '/'; local *F; my $dochroot = $root ne '' && !$opts{'nochroot'} && !$< && (-x "$root/usr/bin/rpm" || -x "$root/bin/rpm") ? 1 : 0; my $pid = open(F, '-|'); die("fork: $!\n") unless defined $pid; if (!$pid) { if ($dochroot && chroot($root)) { chdir('/') || die("chdir: $!\n"); $root = ''; } my @args; unshift @args, '--nodigest', '--nosignature' if -e "$root/usr/bin/rpmquery "; unshift @args, '--dbpath', "$root/var/lib/rpm" if $root ne ''; push @args, '--qf', '%{NAME}/%{ARCH}/%|EPOCH?{%{EPOCH}}:{0}|/%{VERSION}/%{RELEASE}/%{BUILDTIME}\n'; if (-x "$root/usr/bin/rpm") { exec("$root/usr/bin/rpm", '-qa', @args); die("$root/usr/bin/rpm: $!\n"); } if (-x "$root/bin/rpm") { exec("$root/bin/rpm", '-qa', @args); die("$root/bin/rpm: $!\n"); } die("rpm: command not found\n"); } my @pkgs; while () { chomp; my @s = split('/', $_); next unless @s >= 5; my $q = {'name' => $s[0], 'arch' => $s[1], 'version' => $s[3], 'release' => $s[4]}; $q->{'epoch'} = $s[2] if $s[2]; $q->{'buildtime'} = $s[5] if $s[5]; push @pkgs, $q; } if (!close(F)) { return queryinstalled($root, %opts, 'nochroot' => 1) if !@pkgs && $dochroot; die("rpm: exit status $?\n"); } return \@pkgs; } # return (lead, sighdr, hdr [, hdrmd5]) of a rpm sub getrpmheaders { my ($path, $withhdrmd5) = @_; my $hdrmd5; local *F; open(F, '<', $path) || die("$path: $!\n"); my $buf = ''; my $l; while (length($buf) < 96 + 16) { $l = sysread(F, $buf, 4096, length($buf)); die("$path: read error\n") unless $l; } die("$path: not a rpm\n") unless unpack('N', $buf) == 0xedabeedb && unpack('@78n', $buf) == 5; my ($headmagic, $cnt, $cntdata) = unpack('@96N@104NN', $buf); die("$path: not a rpm (bad sig header)\n") unless $headmagic == 0x8eade801 && $cnt < 16384 && $cntdata < 1048576; my $hlen = 96 + 16 + $cnt * 16 + $cntdata; $hlen = ($hlen + 7) & ~7; while (length($buf) < $hlen + 16) { $l = sysread(F, $buf, 4096, length($buf)); die("$path: read error\n") unless $l; } if ($withhdrmd5) { my $idxarea = substr($buf, 96 + 16, $cnt * 16); die("$path: no md5 signature header\n") unless $idxarea =~ /\A(?:.{16})*\000\000\003\354\000\000\000\007(....)\000\000\000\020/s; my $md5off = unpack('N', $1); die("$path: bad md5 offset\n") unless $md5off; $md5off += 96 + 16 + $cnt * 16; $hdrmd5 = unpack("\@${md5off}H32", $buf); } ($headmagic, $cnt, $cntdata) = unpack('N@8NN', substr($buf, $hlen)); die("$path: not a rpm (bad header)\n") unless $headmagic == 0x8eade801 && $cnt < 1048576 && $cntdata < 33554432; my $hlen2 = $hlen + 16 + $cnt * 16 + $cntdata; while (length($buf) < $hlen2) { $l = sysread(F, $buf, 4096, length($buf)); die("$path: read error\n") unless $l; } close F; return (substr($buf, 0, 96), substr($buf, 96, $hlen - 96), substr($buf, $hlen, $hlen2 - $hlen), $hdrmd5); } sub getnevr_rich { my ($d) = @_; my $n = ''; my $bl = 0; while ($d =~ /^([^ ,\(\)]*)/) { $n .= $1; $d = substr($d, length($1)); last unless $d =~ /^([\(\)])/; $bl += $1 eq '(' ? 1 : -1; last if $bl < 0; $n .= $1; $d = substr($d, 1); } return $n; } my %richops = ( 'and' => 1, 'or' => 2, 'if' => 3, 'unless' => 4, 'else' => 5, 'with' => 6, 'without' => 7, ); sub parse_rich_rec { my ($dep, $chainop) = @_; my $d = $dep; $chainop ||= 0; return ($d, undef) unless $d =~ s/^\(\s*//; my ($r, $r2); if ($d =~ /^\(/) { ($d, $r) = parse_rich_rec($d); return ($d, undef) unless $r; } else { return ($d, undef) if $d =~ /^\)/; my $n = getnevr_rich($d); $d = substr($d, length($n)); $d =~ s/^ +//; if ($d =~ /^([<=>]+)/) { $n .= " $1 "; $d =~ s/^[<=>]+ +//; my $evr = getnevr_rich($d); $d = substr($d, length($evr)); $n .= $evr; } $r = [0, $n]; } $d =~ s/^\s+//; return ($d, undef) unless $d ne ''; return ($d, $r) if $d =~ s/^\)//; return ($d, undef) unless $d =~ s/([a-z]+)\s+//; my $op = $richops {$1}; return ($d, undef) unless $op; return ($d, undef) if $op == 5 && $chainop != 3 && $chainop != 4; $chainop = 0 if $op == 5; return ($d, undef) if $chainop && (($chainop != 1 && $chainop != 2 && $chainop != 6) || $op != $chainop); ($d, $r2) = parse_rich_rec("($d", $op); return ($d, undef) unless $r2; if (($op == 3 || $op == 4) && $r2->[0] == 5) { $r = [$op, $r, $r2->[1], $r2->[2]]; } else { $r = [$op, $r, $r2]; } return ($d, $r); } sub parse_rich_dep { my ($dep) = @_; my ($d, $r) = parse_rich_rec($dep); return undef if !$r || $d ne ''; return $r; } my @testcaseops = ('', '&', '|', '', '', '', '+', '-'); sub testcaseformat_rec { my ($r, $addparens) = @_; my $op = $r->[0]; return $r->[1] unless $op; my $top = $testcaseops[$op]; my $r1 = testcaseformat_rec($r->[1], 1); if (($op == 3 || $op == 4) && @$r == 4) { $r1 = "$r1 $top " . testcaseformat_rec($r->[2], 1); $top = ''; } my $addparens2 = 1; $addparens2 = 0 if $r->[2]->[0] == $op && ($op == 1 || $op == 2 || $op == 6); my $r2 = testcaseformat_rec($r->[-1], $addparens2); return $addparens ? "($r1 $top $r2)" : "$r1 $top $r2"; } sub testcaseformat { my ($dep) = @_; my $r = parse_rich_dep($dep); return $dep unless $r; return testcaseformat_rec($r); } sub shiftrich { my ($s) = @_; # FIXME: do this right! my $dep = shift @$s; while (@$s && ($dep =~ y/\(/\(/) > ($dep =~ y/\)/\)/)) { $dep .= ' ' . shift(@$s); } return $dep; } 1; obs-build-20210120/Build/Rpmmd.pm000066400000000000000000000166051400202264700163040ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Rpmmd; use strict; use Build::Rpm; use XML::Parser; sub generic_parse { my ($how, $in, $res, %options) = @_; $res ||= []; my @cursor = ([undef, $how, undef, $res, undef, \%options]); my $p = new XML::Parser(Handlers => { Start => sub { my ($p, $el) = @_; my $h = $cursor[-1]->[1]; return unless exists $h->{$el}; $h = $h->{$el}; push @cursor, [$el, $h]; $cursor[-1]->[2] = '' if $h->{'_text'}; $h->{'_start'}->($h, \@cursor, @_) if exists $h->{'_start'}; }, End => sub { my ($p, $el) = @_; if ($cursor[-1]->[0] eq $el) { my $h = $cursor[-1]->[1]; $h->{'_end'}->($h, \@cursor, @_) if exists $h->{'_end'}; pop @cursor; } }, Char => sub { my ($p, $text) = @_; $cursor[-1]->[2] .= $text if defined $cursor[-1]->[2]; }, ExternEnt => sub { undef }, }, ErrorContext => 2); if (ref($in)) { $p->parse($in); } else { $p->parsefile($in); } return $res; } sub generic_store_text { my ($h, $c, $p, $el) = @_; my $data = $c->[0]->[4]; $data->{$h->{'_tag'}} = $c->[-1]->[2] if defined $c->[-1]->[2]; } sub generic_store_attr { my ($h, $c, $p, $el, %attr) = @_; my $data = $c->[0]->[4]; $data->{$h->{'_tag'}} = $attr{$h->{'_attr'}} if defined $attr{$h->{'_attr'}}; } sub generic_new_data { my ($h, $c, $p, $el, %attr) = @_; $c->[0]->[4] = {}; generic_store_attr(@_) if $h->{'_attr'}; } sub generic_add_result { my ($h, $c, $p, $el) = @_; my $data = $c->[0]->[4]; return unless $data; my $res = $c->[0]->[3]; if (ref($res) eq 'CODE') { $res->($data); } else { push @$res, $data; } undef $c->[0]->[4]; } my $repomdparser = { repomd => { data => { _start => \&generic_new_data, _attr => 'type', _tag => 'type', _end => \&generic_add_result, location => { _start => \&generic_store_attr, _attr => 'href', _tag => 'location'}, checksum => { _start => \&generic_store_attr, _attr => 'type', _tag => 'checksum', _text => 1, _end => \&primary_handle_checksum }, size => { _text => 1, _end => \&generic_store_text, _tag => 'size'}, }, }, }; my $primaryparser = { metadata => { 'package' => { _start => \&generic_new_data, _attr => 'type', _tag => 'type', _end => \&primary_add_result, name => { _text => 1, _end => \&generic_store_text, _tag => 'name' }, arch => { _text => 1, _end => \&generic_store_text, _tag => 'arch' }, version => { _start => \&primary_handle_version }, checksum => { _start => \&generic_store_attr, _attr => 'type', _tag => 'checksum', _text => 1, _end => \&primary_handle_checksum }, 'time' => { _start => \&primary_handle_time }, format => { 'rpm:provides' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'provides' }, }, 'rpm:requires' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'requires' }, }, 'rpm:conflicts' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'conflicts' }, }, 'rpm:recommends' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'recommends' }, }, 'rpm:suggests' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'suggests' }, }, 'rpm:supplements' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'supplements' }, }, 'rpm:enhances' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'enhances' }, }, 'rpm:obsoletes' => { 'rpm:entry' => { _start => \&primary_handle_dep , _tag => 'obsoletes' }, }, 'rpm:buildhost' => { _text => 1, _end => \&generic_store_text, _tag => 'buildhost' }, 'rpm:sourcerpm' => { _text => 1, _end => \&primary_handle_sourcerpm , _tag => 'source' }, ### currently commented out, as we ignore file provides in expanddeps # file => { _text => 1, _end => \&primary_handle_file_end, _tag => 'provides' }, }, location => { _start => \&generic_store_attr, _attr => 'href', _tag => 'location'}, }, }, }; sub primary_handle_sourcerpm { my ($h, $c, $p, $el, %attr) = @_; my $data = $c->[0]->[4]; return unless defined $c->[-1]->[2]; $c->[-1]->[2] =~ s/-[^-]*-[^-]*\.[^\.]*\.rpm$//; $data->{$h->{'_tag'}} = $c->[-1]->[2]; } sub primary_handle_version { my ($h, $c, $p, $el, %attr) = @_; my $data = $c->[0]->[4]; $data->{'epoch'} = $attr{'epoch'} if $attr{'epoch'}; $data->{'version'} = $attr{'ver'}; $data->{'release'} = $attr{'rel'}; } sub primary_handle_time { my ($h, $c, $p, $el, %attr) = @_; my $data = $c->[0]->[4]; $data->{'filetime'} = $attr{'file'} if $attr{'file'}; $data->{'buildtime'} = $attr{'build'} if $attr{'build'}; } sub primary_handle_checksum { my ($h, $c, $p, $el) = @_; my $data = $c->[0]->[4]; my $type = lc(delete($data->{$h->{'_tag'}}) || ''); $type = 'sha1' if $type eq 'sha'; if ($type eq 'md5' || $type eq 'sha1' || $type eq 'sha256' || $type eq 'sha512') { $data->{$h->{'_tag'}} = "$type:$c->[-1]->[2]" if defined $c->[-1]->[2]; } } sub primary_handle_file_end { my ($h, $c, $p, $el) = @_; primary_handle_dep($h, $c, $p, $el, 'name', $c->[-1]->[2]); } my %flagmap = ( EQ => '=', LE => '<=', GE => '>=', GT => '>', LT => '<', NE => '!=' ); sub primary_handle_dep { my ($h, $c, $p, $el, %attr) = @_; my $dep = $attr{'name'}; return if $dep =~ /^rpmlib\(/; if(exists $attr{'flags'}) { my $evr = $attr{'ver'}; return unless defined($evr) && exists($flagmap{$attr{'flags'}}); $evr = "$attr{'epoch'}:$evr" if $attr{'epoch'}; $evr .= "-$attr{'rel'}" if defined $attr{'rel'}; $dep .= " $flagmap{$attr{'flags'}} $evr"; } $dep = Build::Rpm::testcaseformat($dep) if ($dep =~ /^\(/) && ($c->[0]->[5] || {})->{'testcaseformat'}; my $data = $c->[0]->[4]; push @{$data->{$h->{'_tag'}}}, $dep; } sub primary_add_result { my ($h, $c, $p, $el) = @_; my $options = $c->[0]->[5] || {}; my $data = $c->[0]->[4]; if ($options->{'addselfprovides'} && defined($data->{'name'}) && defined($data->{'version'})) { if (($data->{'arch'} || '') ne 'src' && ($data->{'arch'} || '') ne 'nosrc') { my $evr = $data->{'version'}; $evr = "$data->{'epoch'}:$evr" if $data->{'epoch'}; $evr = "$evr-$data->{'release'}" if defined $data->{'release'}; my $s = "$data->{'name'} = $evr"; push @{$data->{'provides'}}, $s unless grep {$_ eq $s} @{$data->{'provides'} || []}; } } delete $data->{'checksum'} unless $options->{'withchecksum'}; return generic_add_result(@_); } sub parse_repomd { return generic_parse($repomdparser, @_); } sub parse { return generic_parse($primaryparser, @_); } 1; obs-build-20210120/Build/SimpleJSON.pm000066400000000000000000000054411400202264700171440ustar00rootroot00000000000000################################################################ # # 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; obs-build-20210120/Build/SimpleXML.pm000066400000000000000000000111541400202264700170310ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2016 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::SimpleXML; use strict; # very simple xml parser, just good enough to parse kiwi and _service files... # can't use standard XML parsers, unfortunatelly, as the build script # must not rely on external libraries # sub parse { my ($xml, %opts) = @_; my $record = $opts{'record'}; my $order = $opts{'order'}; my @nodestack; my $node = {}; my $c = ''; my $xmllen = length($xml); $xml =~ s/^\s*\<\?.*?\?\>//s; while ($xml =~ /^(.*?)\//s; next; } my $elstart = length($xml); die("bad xml\n") unless $xml =~ /(.*?\>)/s; my $tag = $1; $xml = substr($xml, length($tag)); my $mode = 0; if ($tag =~ s/^\<\///s) { chop $tag; $mode = 1; # end } elsif ($tag =~ s/\/\>$//s) { $mode = 2; # start & end $tag = substr($tag, 1); } else { $tag = substr($tag, 1); chop $tag; } my @tag = split(/(=(?:\"[^\"]*\"|\'[^\']*\'|[^\"\s]*))?\s+/, "$tag "); $tag = shift @tag; shift @tag; push @tag, undef if @tag & 1; my %atts = @tag; for (values %atts) { next unless defined $_; s/^=\"([^\"]*)\"$/=$1/s or s/^=\'([^\']*)\'$/=$1/s; s/^=//s; s/<//g; s/&/&/g; s/'/\'/g; s/"/\"/g; } if ($mode == 0 || $mode == 2) { my $n = {}; if ($record) { $n->{'_start'} = $xmllen - $elstart; $n->{'_end'} = $xmllen - length($xml) if $mode == 2; } if ($order) { push @{$node->{'_order'}}, $tag; push @{$n->{'_order'}}, (splice(@tag, 0, 2))[0] while @tag; } push @{$node->{$tag}}, $n; $n->{$_} = $atts{$_} for sort keys %atts; if ($mode == 0) { push @nodestack, [ $tag, $node, $c ]; $c = ''; $node = $n; } } else { die("element '$tag' closes without open\n") unless @nodestack; die("element '$tag' closes, but I expected '$nodestack[-1]->[0]'\n") unless $nodestack[-1]->[0] eq $tag; $c =~ s/^\s*//s; $c =~ s/\s*$//s; $node->{'_content'} = $c if $c ne ''; $node->{'_end'} = $xmllen - length($xml) if $record; $node = $nodestack[-1]->[1]; $c = $nodestack[-1]->[2]; pop @nodestack; } } $c .= $xml; $c =~ s/^\s*//s; $c =~ s/\s*$//s; $node->{'_content'} = $c if $c ne ''; return $node; } sub unparse_keys { my ($d) = @_; my @k = grep {$_ ne '_start' && $_ ne '_end' && $_ ne '_order' && $_ ne '_content'} 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); } sub unparse_escape { my ($d) = @_; $d =~ s/&/&/sg; $d =~ s//>/sg; $d =~ s/"/"/sg; return $d; } sub unparse { my ($d, %opts) = @_; my $r = ''; my $indent = $opts{'ugly'} ? '' : $opts{'indent'} || ''; my $nl = $opts{'ugly'} ? '' : "\n"; my @k = unparse_keys($d); my @e = grep {ref($d->{$_}) ne ''} @k; for my $e (@e) { my $en = unparse_escape($e); my $de = $d->{$e}; $de = [ $de ] unless ref($de) eq 'ARRAY'; for my $se (@$de) { my @sk = unparse_keys($se); my @sa = grep {ref($se->{$_}) eq ''} @sk; my @se = grep {ref($se->{$_}) ne ''} @sk; $r .= "$indent<$en"; for my $sa (@sa) { $r .= " ".unparse_escape($sa); $r .= '="'.unparse_escape($se->{$sa}).'"' if defined $se->{$sa}; } $r .= ">"; $r .= unparse_escape($se->{'_content'}) if defined $se->{'_content'}; $r .= $nl . unparse($se, %opts, 'indent' => " $indent") . "$indent" if @se; $r .= "$nl"; } } return $r; } 1; obs-build-20210120/Build/Snapcraft.pm000066400000000000000000000051121400202264700171350ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Snapcraft; use strict; use Build::Deb; eval { require YAML::XS; $YAML::XS::LoadBlessed = 0; }; *YAML::XS::LoadFile = sub {die("YAML::XS is not available\n")} unless defined &YAML::XS::LoadFile; sub parse { my ($cf, $fn) = @_; my $yaml; eval {$yaml = YAML::XS::LoadFile($fn);}; return {'error' => "Failed to parse yaml file"} unless $yaml; my $ret = {}; $ret->{'name'} = $yaml->{'name'}; $ret->{'version'} = $yaml->{'version'}; $ret->{'epoch'} = $yaml->{'epoch'} if $yaml->{'epoch'}; # how should we report the built apps? my @packdeps; for my $p (@{$yaml->{'stage-packages'} || []}) { push @packdeps, $p; } for my $p (@{$yaml->{'build-packages'} || []}) { push @packdeps, $p; } for my $p (@{$yaml->{'after'} || []}) { push @packdeps, "snapcraft-part:$p"; } for my $key (sort keys(%{$yaml->{'parts'} || {}})) { my $part = $yaml->{'parts'}->{$key}; push @packdeps, "snapcraft-plugin:$part->{plugin}" if defined $part->{plugin}; for my $p (@{$part->{'stage-packages'} || []}) { push @packdeps, $p; } for my $p (@{$part->{'build-packages'} || []}) { push @packdeps, $p; } for my $p (@{$part->{'after'} || []}) { next if $yaml->{'parts'}->{$p}; push @packdeps, "build-snapcraft-part-$p"; } } my %exclarchs; for my $arch (@{$yaml->{architectures} || []}) { my @obsarchs = Build::Deb::obsarch($arch); push @obsarchs, $arch unless @obsarchs; $exclarchs{$_} = 1 for @obsarchs; } $ret->{'exclarch'} = [ sort keys %exclarchs ] if %exclarchs; # $ret->{'badarch'} = $badarch if defined $badarch; $ret->{'deps'} = \@packdeps; # $ret->{'prereqs'} = \@prereqs if @prereqs; # $ret->{'configdependent'} = 1 if $ifdeps; return $ret; } 1; obs-build-20210120/Build/Susetags.pm000066400000000000000000000104231400202264700170130ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Susetags; use strict; use Build::Rpm; # compatibility to old OBS code sub parse_obs_compat { my ($file, undef, undef, @arches) = @_; $file = "$file.gz" if ! -e $file && -e "$file.gz"; my $pkgs = {}; parse($file, sub { my ($data) = @_; my $medium = delete($data->{'medium'}); my $loc = delete($data->{'location'}); if (defined($medium) && defined($loc)) { $loc =~ s/^\Q$data->{'arch'}\E\///; $data->{'path'} = "$medium $loc"; } return unless !@arches || grep { /$data->{'arch'}/ } @arches; $pkgs->{"$data->{'name'}-$data->{'version'}-$data->{'release'}-$data->{'arch'}"} = $data; }, 'addselfprovides' => 1); return $pkgs; } my %tmap = ( 'Pkg' => '', 'Loc' => 'location', 'Src' => 'source', 'Prv' => 'provides', 'Req' => 'requires', 'Con' => 'conflicts', 'Obs' => 'obsoletes', 'Rec' => 'recommends', 'Sug' => 'suggests', 'Sup' => 'supplements', 'Enh' => 'enhances', 'Tim' => 'buildtime', 'Cks' => 'checksum', ); sub addpkg { my ($res, $data, $options) = @_; # fixup location and source if (exists($data->{'location'})) { my ($medium, $dir, $loc) = split(' ', $data->{'location'}, 3); $data->{'medium'} = $medium; $data->{'location'} = defined($loc) ? "$dir/$loc" : "$data->{'arch'}/$dir"; } $data->{'source'} =~ s/\s.*// if exists $data->{'source'}; if ($options->{'addselfprovides'} && defined($data->{'name'}) && defined($data->{'version'})) { if (($data->{'arch'} || '') ne 'src' && ($data->{'arch'} || '') ne 'nosrc') { my $evr = $data->{'version'}; $evr = "$data->{'epoch'}:$evr" if $data->{'epoch'}; $evr = "$evr-$data->{'release'}" if defined $data->{'release'}; my $s = "$data->{'name'} = $evr"; push @{$data->{'provides'}}, $s unless grep {$_ eq $s} @{$data->{'provides'} || []}; } } if ($options->{'withchecksum'} && $data->{'checksum'}) { my ($ctype, $csum) = split(' ', delete($data->{'checksum'})); $ctype = lc($ctype || ''); $data->{'checksum'} = "$ctype:$csum" if $csum && ($ctype eq 'md5' || $ctype eq 'sha1' || $ctype eq 'sha256' || $ctype eq 'sha512'); } if (ref($res) eq 'CODE') { $res->($data); } else { push @$res, $data; } } sub parse { return parse_obs_compat(@_) if @_ > 2 && !defined $_[2]; my ($in, $res, %options) = @_; $res ||= []; my $fd; if (ref($in)) { $fd = $in; } else { if ($in =~ /\.gz$/) { open($fd, '-|', "gzip", "-dc", $in) || die("$in: $!\n"); } else { open($fd, '<', $in) || die("$in: $!\n"); } } my $cur; my @tmap = sort keys %tmap; @tmap = grep {$_ ne 'Cks'} @tmap unless $options{'withchecksum'}; my $r = join('|', @tmap); $r = qr/^([\+=])($r):\s*(.*)/; while (<$fd>) { chomp; next unless /$r/; my ($multi, $tag, $data) = ($1, $2, $3); if ($multi eq '+') { while (<$fd>) { chomp; last if /^-\Q$tag\E/; next if $tag eq 'Req' && /^rpmlib\(/; $_ = Build::Rpm::testcaseformat($_) if /^\(/ && $options{'testcaseformat'}; push @{$cur->{$tmap{$tag}}}, $_; } } elsif ($tag eq 'Pkg') { addpkg($res, $cur, \%options) if $cur; $cur = {}; ($cur->{'name'}, $cur->{'version'}, $cur->{'release'}, $cur->{'arch'}) = split(' ', $data); $cur->{'epoch'} = $1 if $cur->{'version'} =~ s/^(\d+)://; } else { $cur->{$tmap{$tag}} = $data; } } addpkg($res, $cur, \%options) if $cur; if (!ref($in)) { close($fd) || die("close $in: $!\n"); } return $res; } 1; obs-build-20210120/Build/Zypp.pm000066400000000000000000000046501400202264700161640ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 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::Zypp; use strict; our $root = ''; sub parsecfg { my ($repocfg, $reponame, $allrepos) = @_; local *REPO; open(REPO, '<', "$root/etc/zypp/repos.d/$repocfg") or return undef; my $name; my $repo = {}; while () { chomp; next if /^\s*#/; s/\s+$//; if (/^\[(.+)\]/) { if ($allrepos && defined($name)) { $repo->{'description'} = $repo->{'name'} if defined $repo->{'name'}; $repo->{'name'} = $name; push @$allrepos, $repo; undef $name; $repo = {}; } last if defined $name; $name = $1 if !defined($reponame) || $reponame eq $1; } elsif (defined($name)) { my ($key, $value) = split(/=/, $_, 2); $repo->{$key} = $value if defined $key; } } close(REPO); return undef unless defined $name; $repo->{'description'} = $repo->{'name'} if defined $repo->{'name'}; $repo->{'name'} = $name; push @$allrepos, $repo if $allrepos; return $repo; } sub repofiles { local *D; return () unless opendir(D, "/etc/zypp/repos.d"); my @r = grep {!/^\./ && /.repo$/} readdir(D); closedir D; return sort(@r); } sub parseallrepos { my @r; for my $r (repofiles()) { parsecfg($r, undef, \@r); } return @r; } sub parserepo($) { my ($reponame) = @_; # first try matching .repo file if (-e "$root/etc/zypp/repos.d/$reponame.repo") { my $repo = parsecfg("$reponame.repo", $reponame); return $repo if $repo; } # then try all repo files for my $r (repofiles()) { my $repo = parsecfg($r, $reponame); return $repo if $repo; } die("could not find repo '$reponame'\n"); } 1; # vim: sw=2 obs-build-20210120/COPYING000066400000000000000000000431131400202264700146550ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Steet, Fifth Floor, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. 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; if not, write to the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. obs-build-20210120/HOWTO.add_another_format000066400000000000000000000067171400202264700202750ustar00rootroot00000000000000 How to add another build format =============================== To support yet another package format to be used with standalone build script and Open Build Service you need to follow these steps: Let's call the new format "XYZ" here. General notes about the implementations. There are two areas: SAFE implementations: Some code runs outside of protected environments like KVM. Therefore this code must be implemented with security in mind. Special crafted build descriptions or binary files must not be able to exploit this code. What makes it even more interessting is that this code can also run on all kind of old or obscure systems. So any external dependency should be avoided as well. This means in short: - code must be as simple as possible. - code must not allow to execute random commands or to access random files. - avoid external dependencies. When you look for a simple XML parser check the kiwi support for this. - code must stay compatible for all versions Build code running inside of environment. - using any tool is fine here. However, the tool must be installed somehow into the build system. In best case via some dependency. - Incompatible changes can be implemented inside of these packages pulled into the build environment. - external network access is not possible here. 1) Implement the parse() function into Build/XYZ.pm parse() extracts the build dependecies from the build specification. For RPM this would be the .spec file for example. Must be a SAFE implementation. 2) Add a query() function to Build/XYZ.pm query() extracts information from built packages. In the rpm world these are the .rpm files. query returns a hash containing: name, epoch, version, release, arch, description, provides, requires, hdrmd5 hdrmd5 is some unique identifier of the package built, it might be just a md5 over the entire file. Must be a SAFE implementation. 3) Add a queryhdrmd5() function this functions is a specialized version of query(), it just returns the hdrmd5 Must be a SAFE implementation. 4) Add a verscmp() function verscmp() compares two package version strings. For rpms, a version has the form [epoch:]version-release Must be a SAFE implementation. 5) Implement build-pkg-xyz functions Those functions are used to setup the build environment. I.e. they need to install/unpack the packages Must be a SAFE implementation for the pre-installation part. Afterwards it is fine to use any tool to install the packages (like rpm itself). 6) Implement build-recipe-xyz functions This functions are called to create the build result 7) For standalone build support (actually not needed for OBS integration, but it makes development easier) we need a "createxyzdeps" helper script. For xyz://<...> repos it needs to download the repository metadata and convert it to build's representation. See createyastdeps and createrepomddeps. Special notes for non-OSS systems ================================= Systems like MS-Windows, MacOSX or SunOS could be support as well. However, these systems can not be installed by packages from scratch. So using preinstallimages would be mandatory here. Support for that exists in general already inside of the code. Special notes for image formats =============================== Image formats can usually skip 2) 3) and 4) from the items above. At least as long as they do not want to build new images based on former created ones. obs-build-20210120/Makefile000066400000000000000000000070451400202264700152660ustar00rootroot00000000000000VERSION=0.1 SCM=$(shell if test -d .svn; then echo svn; elif test -d .git; then echo git; fi) DATE=$(shell date +%Y%m%d%H%M) BUILD=build INITVM_ARCH=$(shell bash -c '. common_functions ; build_host_arch; echo $$BUILD_INITVM_ARCH') ifeq ($(SCM),svn) SVNVER=_SVN$(shell LANG=C svnversion .) endif prefix=/usr bindir=$(prefix)/bin datadir=$(prefix)/share libdir=$(prefix)/lib pkglibdir=$(libdir)/$(BUILD) mandir=$(datadir)/man man1dir=$(mandir)/man1 sysconfdir=/etc DESTDIR= all: .PHONY: test test: PERL5LIB=. prove -v install: install -m755 -d \ $(DESTDIR)$(pkglibdir)/configs \ $(DESTDIR)$(pkglibdir)/baselibs_configs \ $(DESTDIR)$(pkglibdir)/Build \ $(DESTDIR)$(pkglibdir)/emulator \ $(DESTDIR)$(bindir) \ $(DESTDIR)$(man1dir) install -m755 \ build \ vc \ createdirdeps \ order \ expanddeps \ computeblocklists \ extractbuild \ getbinaryid \ getbuildids \ killchroot \ queryconfig \ common_functions \ init_buildsystem \ substitutedeps \ debtransform \ debtransformbz2 \ debtransformxz \ debtransformzip \ mkbaselibs \ mkdrpms \ listinstalled \ call-flatpak-builder \ createzyppdeps \ createarchdeps \ createdebdeps \ createrepomddeps \ createyastdeps \ changelog2spec \ spec2changelog \ download \ runservices \ spec_add_patch \ spectool \ signdummy \ unrpm \ telnet_login_wrapper \ startdockerd \ dummyhttpserver \ patchdockerfile \ 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 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 $(DESTDIR)$(pkglibdir) install -m644 configs/* $(DESTDIR)$(pkglibdir)/configs install -m644 baselibs_configs/* $(DESTDIR)$(pkglibdir)/baselibs_configs install -m644 build.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 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 # Allow initvm to be packaged seperately from the rest of build. This # is useful because it is distributed as a static binary package (e.g. # build-initvm-static) whereas the build scripts package is noarch. initvm: initvm.c $(CC) -o $@.$(INITVM_ARCH) -static $(CFLAGS) initvm.c initvm-all: initvm initvm-build: initvm initvm-install: initvm install -m755 -d $(DESTDIR)$(pkglibdir) install -m755 initvm.$(INITVM_ARCH) $(DESTDIR)$(pkglibdir)/initvm.$(INITVM_ARCH) dist: ifeq ($(SCM),svn) rm -rf $(BUILD)-$(VERSION)$(SVNVER) svn export . $(BUILD)-$(VERSION)$(SVNVER) tar --force-local -cjf $(BUILD)-$(VERSION)$(SVNVER).tar.bz2 $(BUILD)-$(VERSION)$(SVNVER) rm -rf $(BUILD)-$(VERSION)$(SVNVER) else ifeq ($(SCM),git) git archive --prefix=$(BUILD)-$(VERSION)_git$(DATE)/ HEAD| bzip2 > $(BUILD)-$(VERSION)_git$(DATE).tar.bz2 endif endif obs-build-20210120/README.md000066400000000000000000000045531400202264700151060ustar00rootroot00000000000000 This repository provides the `build` tool to build binary packages in a a safe and reproducible way. It can be used standalone or within the Open Build Service (OBS). Latest packages for `obs-build` are available from [openSUSE:Tools downloads](https://software.opensuse.org/download/package?package=obs-build&project=openSUSE%3ATools). Supported build environments ============================ Unsecure: - chroot - LXC Secure but with limited reproducibility: - docker - nspawn Secure and with full reproducibility: - KVM - XEN - ZVM (S390) In addition there is currently experimental support for - UML - PVM (PowerPC) - OpenStack - Amazon EC2 For hardware emulation there are - qemu which runs a QEMU system emulator inside of KVM. This can be considered also secure and reproducible. - The "emulator" VM can be used to run builds using any other emulator via a wrapper script. - A QEMU user land emulation is also possible. This would give higher speed, but requires a preparation inside of the base distribution for this mode. Supported build formats ======================= Major distribution package formats - spec to rpm eg SUSE, Fedora, RedHat, CentOS, Mandriva - dsc to deb eg Debian, Ubuntu - PKGBUILD to pkg eg Arch Linux Image formats - Dockerfile Docker container via docker or podman tooling) - kiwi appliances This include a long list of formats supported by the kiwi tool. From live USB stick images, network deployment images, VM images to docker containers https://documentation.suse.com/kiwi/9/html/kiwi/building-types.html - SUSE Product SUSE product media builds - SimpleImage chroot tar ball based on rpm spec file syntax - Debian Livebuild - Preinstallimages for speeding up builds esp. inside of OBS Desktop Image formats - AppImage - FlatPak - Snapcraft Special modes and formats: - debbuild building debian debs our of rpm spec file - debbootstrap debian builds using debootstrap as engine - mock rpm spec file build using mock as engine - collax debian package variation - fissile docker images based on BOSH dev releases - helm helm charts Use the --help option for more information. obs-build-20210120/baselibs_configs/000077500000000000000000000000001400202264700171145ustar00rootroot00000000000000obs-build-20210120/baselibs_configs/baselibs_global-deb.conf000066400000000000000000000016141400202264700236210ustar00rootroot00000000000000arch i586 targets x86_64:32bit ia64:x86 arch i686 targets x86_64:32bit ia64:x86 arch s390 targets s390x:32bit arch ppc targets ppc64:32bit arch ppc64 targets ppc:64bit configdir /usr/lib/baselibs-/bin targettype x86 prefix /emul/ia32-linux targettype x86 extension -x86 targettype 32bit extension 32 targettype 64bit extension 64 targetname - +.*/lib(64)?/.*\.(so\..*|so|o|a|la)$ targettype 64bit -^(/usr)?/lib/lib targettype 32bit -/lib64/ targettype x86 -/lib64/ config +.*bin.*-config$ config -/kde-config$ targettype x86 requires "ia32el" targettype x86 prereq "glibc-x86" package /.(? = " #requires "- = " package /(.*)-debuginfo$/ +/usr/lib(64)?/debug/.*/lib(64)?/.*\.(so\..*|so|o|a|la)\.debug$ obs-build-20210120/baselibs_configs/baselibs_global-sle11.conf000066400000000000000000000021471400202264700240160ustar00rootroot00000000000000arch i586 targets x86_64:32bit ia64:x86 arch i686 targets x86_64:32bit ia64:x86 arch s390 targets s390x:32bit arch ppc targets ppc64:32bit arch ppc64 targets ppc:64bit arch sparc targets sparc64:32bit arch sparcv8 targets sparc64:32bit arch sparcv9 targets sparc64:32bit arch sparcv9v targets sparc64v:32bit arch sparc64 targets sparcv9:64bit arch sparc64v targets sparcv9v:64bit configdir /usr/lib/baselibs-/bin targettype x86 prefix /emul/ia32-linux targettype x86 extension -x86 targettype 32bit extension 32 targettype 64bit extension 64 targetname - +.*/lib(64)?/.*\.(so.*|o|a|la)$ targettype 64bit -^(/usr)?/lib/lib targettype 32bit -/lib64/ targettype x86 -/lib64/ config +.*bin.*-config$ config -/kde-config$ targettype x86 requires "ia32el" targettype x86 prereq "glibc-x86" package /.(? = " requires "- = " package /(.*)-debuginfo$/ +/usr/lib(64)?/debug/.*/lib(64)?/.*\.(so.*|o|a|la)\.debug$ +/usr/lib(64)?/debug/.build-id/.* obs-build-20210120/baselibs_configs/baselibs_global-sle12.conf000066400000000000000000000022231400202264700240120ustar00rootroot00000000000000arch i586 targets x86_64:32bit arch i686 targets x86_64:32bit arch s390 targets s390x:32bit arch ppc targets ppc64:32bit arch ppc64 targets ppc:64bit arch sparc targets sparc64:32bit arch sparcv8 targets sparc64:32bit arch sparcv9 targets sparc64:32bit arch sparcv9v targets sparc64v:32bit arch sparc64 targets sparcv9:64bit arch sparc64v targets sparcv9v:64bit arch aarch64 targets aarch64_ilp32:64bit arch aarch64_ilp32 targets aarch64:32bit configdir /usr/lib/baselibs-/bin targettype x86 prefix /emul/ia32-linux targettype x86 extension -x86 targettype 32bit extension 32 targettype 64bit extension 64 targetname - +.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la|pc)$ targettype 64bit -^(/usr)?/lib(ilp32)?/lib targettype 32bit -/lib64/ targettype x86 -/lib64/ config +.*bin.*-config$ config -/kde-config$ targettype x86 requires "ia32el" targettype x86 prereq "glibc-x86" package /(.*-devel)$/ requires " = " package /.(?/bin targettype x86 prefix /emul/ia32-linux targettype x86 extension -x86 targettype 32bit extension 32 targettype 64bit extension 64 targetname - +.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la|pc)$ targettype 64bit -^(/usr)?/lib(ilp32)?/lib targettype 32bit -/lib64/ targettype x86 -/lib64/ config +.*bin.*-config$ config -/kde-config$ targettype x86 requires "ia32el" targettype x86 prereq "glibc-x86" package /(.*-devel)$/ requires " = " package /.(?--debuginfo +/usr/lib/debug/(.*/)?lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)(-.*-.*\..*)?\.debug$ +/usr/lib/debug/\.build-id/.* obs-build-20210120/baselibs_configs/baselibs_global.conf000066400000000000000000000022711400202264700230710ustar00rootroot00000000000000arch i586 targets x86_64:32bit arch i686 targets x86_64:32bit arch s390 targets s390x:32bit arch ppc targets ppc64:32bit arch ppc64 targets ppc:64bit arch sparc targets sparc64:32bit arch sparcv8 targets sparc64:32bit arch sparcv9 targets sparc64:32bit arch sparcv9v targets sparc64v:32bit arch sparc64 targets sparcv9:64bit arch sparc64v targets sparcv9v:64bit arch aarch64 targets aarch64_ilp32:64bit arch aarch64_ilp32 targets aarch64:32bit configdir /usr/lib/baselibs-/bin targettype x86 prefix /emul/ia32-linux targettype x86 extension -x86 targettype 32bit extension 32 targettype 64bit extension 64 targetname - +.*/lib(64|ilp32)?/.*\.(so\..*|so|o|a|la|pc)$ targettype 64bit -^(/usr)?/lib(ilp32)?/lib targettype 32bit -/lib64/ targettype x86 -/lib64/ config +.*bin.*-config$ config -/kde-config$ targettype x86 requires "ia32el" targettype x86 prereq "glibc-x86" package /(.*-devel)$/ requires " = " package /.(?--debuginfo +/usr/lib/debug/(.*/)?lib(64|ilp32)?/.*\.(so\..*|so|o|a|la)(-.*-.*\..*)?\.debug$ +/usr/lib/debug/\.build-id/.* obs-build-20210120/build000077500000000000000000001347021400202264700146540ustar00rootroot00000000000000#!/bin/bash # Script to build a package. It uses init_buildsystem to setup a chroot # building tree. This script needs a directory as parameter. This directory # has to include sources and a recipe file. # # BUILD_ROOT here the packages will be built # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ # some VMs do not allow to specify the init process... if test "$0" = /sbin/init ; then exec /.build/build "$@" fi BUILD_CONF=/etc/build.conf # ignore BUILD_DIR if we have a config test -e "$BUILD_CONF" && BUILD_DIR=/usr/lib/build test -z "$BUILD_DIR" -a -e /.build/build.data -a -z "$BUILD_IGNORE_2ND_STAGE" && BUILD_DIR=/.build test -z "$BUILD_DIR" && BUILD_DIR=/usr/lib/build test -z "$BUILD_ROOT" && BUILD_ROOT=/var/tmp/build-root test -z "$CONFIG_DIR" && CONFIG_DIR="$BUILD_DIR/configs" export BUILD_ARCH BUILD_HOST_ARCH BUILD_ROOT BUILD_RPMS BUILD_DIR BUILD_DEBUG export BUILD_DIST ABUILD_UID ABUILD_GID icecream=0 definesnstuff=() repos=() old_packages=() # slurp in vm support . "$BUILD_DIR/build-vm" # slurp in recipe support . "$BUILD_DIR/build-recipe" # slurp in package binary support . "$BUILD_DIR/build-pkg" # slurp in validation support . "$BUILD_DIR/build-validate-params" # need to restore build root owner for non-root builds browner= # Default uid:gid for the build user ABUILD_UID=399 ABUILD_GID=399 BUILD_OPTIONS_PARSED= DO_INIT=true DO_INIT_TOPDIR=true DO_LINT= DO_CHECKS=true CLEAN_BUILD= REMOVE_CCACHE= GENBUILDREQS_CLEAN_BUILD= RECIPEFILES=() SRCDIR= BUILD_JOBS= BUILD_THREADS= ABUILD_TARGET= CREATE_BASELIBS= USEUSEDFORBUILD= LIST_STATE= RUNNING_IN_VM= RPMLIST= RELEASE= REASON= NOROOTFORBUILD= LOGFILE= KILL= DO_WIPE= SEND_SYSRQ= CHANGELOG= BUILD_DEBUG= INCARNATION= DISTURL= LINKSOURCES= OVERLAY= RSYNCSRC= RSYNCDEST= RSYNCDONE= SIGNDUMMY= DO_STATISTICS= RUN_SHELL= RUN_SHELL_CMD= CCACHE= PKG_CCACHE= DLNOSIGNATURE= BUILD_FLAVOR= OBS_PACKAGE= CACHE_DIR=/var/cache/build RECIPE_BUILD_START_TIME= CCACHE_SETUP_START_TIME= # This is for insserv export YAST_IS_RUNNING=instsys # https://github.com/systemd/systemd/blob/master/docs/ENVIRONMENT.md export SYSTEMD_OFFLINE=1 unset LANGUAGE unset LANG export LC_ALL=POSIX umask 022 echo_help () { cat << EOT Some comments for build ----------------------- With build you can create binary packages. They will be built in a chroot system. This chroot system will be setup automatically. Normally you can simply call build with a spec file as parameter - nothing else has to be set. If you want to set the directory where the chroot system will be setup (at the moment it uses $BUILD_ROOT), simply set the the environment variable BUILD_ROOT. Example: export BUILD_ROOT=/var/tmp/mybuildroot Normally build builds the complete package including src.rpm (rpmbuild -ba). If you want to let build only make the binary package, simply set export BUILD_RPM_BUILD_STAGE=-bb (or -bc, -bp, -bi, ... see "Maximum RPM" for more details [*]). When the build command succeeds, the rpm files can be found under $BUILD_ROOT/usr/src/packages/RPMS/ Known Parameters: --help You already got it :) --kill Instead of starting a build kill the one currently running. --shell Instead of starting a build start a root shell in the build root. --shell-cmd CMD Run the command CMD instead of giving a root shell --shell option is implicit set. --sysrq $ Sends a single specifed char as sysrq to the running kernel of the build. --clean Delete old build root before initializing it --wipe Completely removes build environment and exits. --no-init Skip initialization of build root and start with build immediately. --no-checks Do not run checks (postbuild and %check) --logfile logfile Capture build output to logfile. Defaults to .build.log in the build root for non-VM builds. --repo PATH_OR_URL Use package repository at PATH_OR_URL. Supported formats are rpm-md, yast2, debian, and arch linux. Alternatively zypp://NAME specifies the zypp repository NAME. The repo must be refreshed with zypp so package meta data is available locally. With emtpy NAME all enabled repositories are used. --rpms path1:path2:... Specify path where to find the RPMs for the build system --arch arch1:arch2:... Specify what architectures to select from the RPMs --verify Run verify when initializing the build root --extra-packs pack -X pack Also install package 'pack' --root rootdir Use 'rootdir' to setup chroot environment --cachedir cachedir Use 'cachedir' to cache remote repo's packages. The default cache dir is /var/cache/build, every repo given by --repo corresponds to a subdir named as md5sum of its repo url, for example: /var/cache/build/3e8ea9b47808629414a0cebc33ea285e --oldpackages oldpackagesdir Define a directory with a former build --baselibs Create -32bit/-64bit/-x86 rpms for other architectures --list-state List rpms that would be used to create a fresh build root. Does not create the build root or perform a build. --dist dist Distribution to use --with X Enable feature X for build --without X Disable feature X for build --define 'X Y' Define macro X with value Y --release release Override Release in spec file --stage -bSTAGE Set stage for rpmbuild. Defaults to -ba. --target platform Set target platform for rpmbuild --jobs N Use N parallel processes during build. Sets %jobs and %_smp_mflags macros and defines the number of CPUs to use for VMs. --threads N sets number of threads for VM --ccache Use ccache to speed up rebuilds --pkg-ccache /path/to/ccache.tar.gz path to archive of ccache directory content. Its contents will be extracted to /.ccache --icecream N Use N parallel build jobs with icecream --overlay OVERLAY Copy overlay filesystem to buildroot after installing all RPMs. This must be a valid directory. --rsync-src RSYNCSRC Copy overlay folder (RSYNCSRC) to a folder (RSYNCDEST) inside the buildroot using rsync. It will "%define RSYNCDONE 1" for handling %setup in your specfile. E.g.: %prep %if 0%{?RSYNCDONE} %setup -n aaa_base -T -D -b 5 -b 7 %else %setup -n aaa_base -b 5 -b 7 %endif --rsync-dest RSYNCDEST Copy overlay folder (RSYNCSRC) to a folder (RSYNCDEST) inside the buildroot using rsync. --uid uid:gid Specify the uid and gid to use for the abuild user. This is useful if you are hacking in the buildroot. This must be set to the same value if the buildroot is re-used. --statistics monitor used resources during build inside VM --kvm Use KVM to secure build process. Your hardware needs to support virtualization --xen Use XEN to secure build process, you to run in a XEN Dom0 environment. --lxc Use Linux Containers to isolate the process. This may not be 100% safe. --openstack Cloud build --ec2 Cloud build --emulator Use any generic emulator to isolate the build process. You need to write an emulator/emulator.sh script and put it next to the build script sources. --emulator-script SCRIPT specify another emulator instead of emulator.sh --vm-type TYPE Use virtual machine instead of chroot TYPE is one of xen|kvm|uml|qemu|lxc|zvm|openstack|ec2|docker|pvm|nspawn --vm-worker GUEST GUEST is a z/VM build worker controlled by the controlling z/VM build machine. --vm-worker-nr N Each worker in z/VM needs a uniq number. This is needed to calculate uniq device addresses for root and swap device. --vm-region NAME EC2 only: defines amazon control server --vm-server NAME openstack only: defines control server name --vm-disk FILE Use FILE as disk for virtual machine. Defaults to \$BUILD_ROOT.img if unset --vm-swap FILE Use FILE as swap space for virtual machine. The swap space is also used for retrieving packages from the VM so its size must be sufficiently large --vm-disk-size SIZEINMB --vm-swap-size SIZEINMB --vm-disk-filesystem TYPE Defaults for automatic setup of VM root/swap files. May get overruled by build config vmfstype build flag. --vm-disk-filesystem-options OPTIONS nodirindex: disable dir indexing on ext filesystems. Slower, but reproducible builds --vm-memory SIZEINMB Set amount of RAM for VMs --vm-hugetlbfs HUGETLBFSPATH Use hugetlb for memory management, path to mounted hugetlbfs. --vm-kernel FILE --vm-initrd FILE Kernel and initrd to use for VM (kvm and qemu only) --vm-user USERNAME User name to run qemu/kvm process --vm-telnet PORT Is forwarding PORT to a telnet session inside of the VM. Specify also needed extra packages via -x parameter, usually: --vm-telnet 1234 -x telnet-server -x net-tools And connect from the host via telnet 1234 NOTE: The telnet server gets started after all packages got installed. --vm-net OPTION --vm-netdev OPTION --vm-device OPTION KVM only: Attach kvm option Available options are -net, -netdev, -device (This options in kvm can not guarantee reproducible builds) --debug Enable creation of a debuginfo package Remember to have fun! [*] Maximum RPM: http://www.rpm.org/max-rpm/ EOT } usage () { cleanup_and_exit 1 "Usage: `basename $0` [--no-init|--clean|--rpms path|--verify|--help] [dir-to-build|recipe-to-build]" } # # cleanup_and_exit # return values: 0 -> success, new packages built # 1 -> error, build failed # 2 -> successfull build, but no changes to former built packages # 3 -> something wrong with build or the host, leads to a retry # 4 -> something FATAL with build or the host, leads to a retry, but do not build on this host anymore # cleanup_and_exit () { trap 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 if test -z "$BUILD_OPTIONS_PARSED" ; then # if we haven't parsed the options yet we do # not know the correct build root. just exit. exit $1 fi rm -f $BUILD_ROOT/exit # add build time statistics recipe_build_time_statistics # Never inside of VM # but for chroot or the filesystem hosting the root file if test -z "$RUNNING_IN_VM" ; then # check for disk full for an automatic build retry if test "$1" -eq 1 -a -x /bin/df ; then echo echo "$HOST failed \"build $RECIPEFILE\" at `date --utc`." echo # okay, it failed, but maybe because disk space? if df $BUILD_ROOT 2>/dev/null | grep -q "100%"; then df $BUILD_ROOT 2>/dev/null echo echo "$HOST ran out of disk space. Please try again." echo set 3 fi fi fi if test -z "$VM_TYPE" -o -n "$RUNNING_IN_VM" ; then # run recipe cleanup code test -n "$BUILDTYPE" && recipe_cleanup fi # shutdown if test -n "$RUNNING_IN_VM" ; then echo "$1" > /.build/_exitcode test -n "$browner" && chown "$browner" $BUILD_ROOT vm_shutdown "$1" else buildroot_umount /proc/sys/fs/binfmt_misc buildroot_umount /proc buildroot_umount /sys buildroot_umount /dev/pts buildroot_umount /dev/shm test -n "$VM_ROOT" -a "$VM_ROOT" != 1 && umount $BUILD_ROOT 2>/dev/null || true test -n "$VM_TYPE" && vm_cleanup fi exit $1 } fail_exit() { cleanup_and_exit 1 } shellquote() { for arg ; do arg=${arg/\\/\\\\} arg=${arg/\$/\\\$} arg=${arg/\"/\\\"} arg=${arg/\`/\\\`} echo -n " \"$arg\"" done } # create a shell script from command line. Used for preserving arguments # through /bin/su -c toshellscript() { echo "#!/bin/sh -x" echo -n exec shellquote "$@" echo } setupccache() { if test -n "$CCACHE" ; then CCACHE_SETUP_START_TIME=`date +%s` if mkdir -p $BUILD_ROOT/var/lib/build/ccache/bin; then for i in $(ls $BUILD_ROOT/usr/bin | grep -E '^(cc|gcc|[cg][+][+]|clang|clang[+][+])([-]?[.0-9])*$'); do rm -f $BUILD_ROOT/var/lib/build/ccache/bin/$i test -e $BUILD_ROOT/usr/bin/$i || continue echo '#! /bin/sh' > $BUILD_ROOT/var/lib/build/ccache/bin/$i echo "test -e /usr/bin/$i || exit 1" >> $BUILD_ROOT/var/lib/build/ccache/bin/$i echo 'export PATH=/usr/lib/icecc/bin:/opt/icecream/bin:/usr/bin:$PATH' >> $BUILD_ROOT/var/lib/build/ccache/bin/$i echo "ccache $i \"\$@\"" >> $BUILD_ROOT/var/lib/build/ccache/bin/$i chmod 755 $BUILD_ROOT/var/lib/build/ccache/bin/$i echo "Installed ccache wrapper as $BUILD_ROOT/var/lib/build/ccache/bin/$i" done fi mkdir -p "$BUILD_ROOT/.ccache" echo 'export PATH=/var/lib/build/ccache/bin:$PATH' >> "$BUILD_ROOT"/etc/profile.d/build_ccache.sh local cconf="$BUILD_ROOT"/etc/ccache.conf if test -e $cconf; then grep -q "^compression*" $cconf && sed -i "s:compression.*:compression = true:g" $cconf || echo "compression = true" >> $cconf grep -q "^cache_dir*" $cconf && sed -i "s:cache_dir.*:cache_dir = /.ccache:g" $cconf || echo "cache_dir = /.ccache" >> $cconf else echo "compression = true" >> $cconf echo "cache_dir = /.ccache" >> $cconf fi local ccachetar="$BUILD_ROOT/.build.oldpackages/_ccache.tar" test -e $ccachetar && tar -xf $ccachetar -C "$BUILD_ROOT/.ccache/" rm -f $ccachetar chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT/.ccache" else CCACHE_SETUP_START_TIME= rm -f "$BUILD_ROOT"/var/lib/build/ccache/bin/{gcc,g++,cc,c++,clang,clang++} fi } setupicecream() { local icecreamdir=/var/run/icecream if test "$(readlink "$BUILD_ROOT/var/run")" = /run ; then icecreamdir=/run/icecream fi if test "$icecream" -eq 0 ; then rm -rf "$BUILD_ROOT$icecreamdir" rm -f "$BUILD_ROOT/etc/profile.d/build_icecream.sh" return 0 fi if ! chroot "$BUILD_ROOT" rpm -q icecream >/dev/null 2>/dev/null; then echo "*** icecream package not installed ***" return 1 fi echo "using icecream with $icecream jobs" if test -z "$CCACHE" ; then echo 'export PATH=/usr/lib/icecc/bin:/opt/icecream/bin:$PATH' > "$BUILD_ROOT"/etc/profile.d/build_icecream.sh else echo 'export CCACHE_PATH=/usr/lib/icecc/bin:/opt/icecream/bin' > "$BUILD_ROOT"/etc/profile.d/build_icecream.sh fi local icecc_vers=(`shopt -s nullglob; echo $BUILD_ROOT$icecreamdir/*.tar.{bz2,gz}`) icecc_vers=${icecc_vers//$BUILD_ROOT/} # XXX use changelog like autobuild does instead? # only run create-env if compiler or glibc changed if test -z "$icecc_vers" \ -o ! -e "$BUILD_ROOT/$icecc_vers" \ -o "$BUILD_ROOT/usr/bin/gcc" -nt "$BUILD_ROOT/$icecc_vers" \ -o "$BUILD_ROOT/usr/bin/g++" -nt "$BUILD_ROOT/$icecc_vers" \ -o "$BUILD_ROOT/usr/bin/as" -nt "$BUILD_ROOT/$icecc_vers" \ -o "$BUILD_ROOT/lib/libc.so.6" -nt "$BUILD_ROOT/$icecc_vers" then rm -rf "$BUILD_ROOT$icecreamdir" mkdir -p "$BUILD_ROOT$icecreamdir" if test -e "$BUILD_ROOT"/usr/bin/create-env ; then createenv=/usr/bin/create-env elif test -e "$BUILD_ROOT"/usr/lib/icecc/icecc-create-env ; then createenv="/usr/lib/icecc/icecc-create-env /usr/bin/gcc /usr/bin/g++" # XXX elif test -e "$BUILD_ROOT"/usr/lib64/icecc/icecc-create-env ; then createenv="/usr/lib64/icecc/icecc-create-env /usr/bin/gcc /usr/bin/g++" # XXX else echo "create-env not found" return 1 fi echo "creating new env in '$icecreamdir'" chroot $BUILD_ROOT bash -c "cd $icecreamdir; $createenv" || cleanup_and_exit 1 icecc_vers=(`shopt -s nullglob; echo $BUILD_ROOT/$icecreamdir/*.tar.{bz2,gz}`) icecc_vers=${icecc_vers//$BUILD_ROOT/} echo "created icecream environment $icecc_vers" else echo "reusing existing icecream environment $icecc_vers" fi if test -n "$icecc_vers" ; then echo "export ICECC_VERSION=$icecc_vers" >> "$BUILD_ROOT"/etc/profile.d/build_icecream.sh fi } setmemorylimit() { if test -n "$VM_ROOT" -o -n "$RUNNING_IN_VM" ; then return fi local mem local limit while read mem; do case "$mem" in MemTotal:*) set -- $mem eval "limit=\$(($2/3*2))" ;; SwapTotal:*) set -- $mem eval "limit=\$(($2/3*2+$limit))" ;; esac done < <(cat /proc/meminfo) # cat for proc stuff ulimit -v $limit echo "Memory limit set to ${limit}KB" } create_baselibs() { local pkgs=() local line BASELIBS_CFG= if test "$BUILDTYPE" == arch || test "$BUILDTYPE" = collax ; then return fi if test "$BUILDTYPE" == dsc ; then pkgs=($DEBS) else # spec and kiwi if test -e $BUILD_ROOT$TOPDIR/SOURCES/baselibs.conf ; then BASELIBS_CFG="-c $TOPDIR/SOURCES/baselibs.conf" fi if test -e $BUILD_ROOT/usr/lib/build/baselibs_global.conf; then BASELIBS_GLOBAL="-c /usr/lib/build/baselibs_global.conf" fi pkgs=($RPMS) fi # don't use -R as extracted sources, build root etc might be below $TOPDIR chown "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR"/* "$BUILD_ROOT$TOPDIR"/RPMS/* || true local mkbaselibs="/usr/lib/build/mkbaselibs" local whichone='' # $BUILD_DIR is set to /.build when using a vm. So we need to # hardcode /usr/lib/build instead of $BUILD_DIR to prefer # mkbaselibs from the distro. if test -f $BUILD_ROOT$mkbaselibs; then if test -z "$BASELIBS_CFG" -a -e $BUILD_ROOT/usr/lib/build/baselibs.conf ; then BASELIBS_CFG="-c /usr/lib/build/baselibs.conf" fi else if test "$CREATE_BASELIBS" = 'internal'; then echo "Warning: mkbaselibs missing in build root, skipping baselibs" return fi # use external version whichone=" (external)" mkbaselibs="/.mkbaselibs/mkbaselibs" rm -rf "$BUILD_ROOT/.mkbaselibs" mkdir -p "$BUILD_ROOT/.mkbaselibs" cp -f $BUILD_DIR/mkbaselibs $BUILD_ROOT/.mkbaselibs/ if test "$BUILDTYPE" == "dsc" ; then cp -f $BUILD_DIR/baselibs_global-deb.conf $BUILD_ROOT/.mkbaselibs/baselibs_g.conf cp -f $BUILD_ROOT$TOPDIR/SOURCES/baselibs-deb.conf $BUILD_ROOT/.mkbaselibs/baselibs-deb.conf BASELIBS_CFG="-c /.mkbaselibs/baselibs-deb.conf" else cp -f $BUILD_DIR/baselibs_global.conf $BUILD_ROOT/.mkbaselibs/baselibs_g.conf if test -z "$BASELIBS_CFG" -a -e $BUILD_DIR/baselibs.conf; then cp -f $BUILD_DIR/baselibs.conf $BUILD_ROOT/.mkbaselibs/baselibs.conf BASELIBS_CFG="-c /.mkbaselibs/baselibs.conf" fi fi if test -e $BUILD_ROOT/.mkbaselibs/baselibs_g.conf; then BASELIBS_GLOBAL="-c /.mkbaselibs/baselibs_g.conf" fi fi echo "... creating baselibs$whichone" while read line do chroot $BUILD_ROOT su -c "$mkbaselibs $BASELIBS_GLOBAL $BASELIBS_CFG $line" - $BUILD_USER || cleanup_and_exit 1 done < <(IFS=$'\n'; echo "${pkgs[*]#$BUILD_ROOT}" | xargs -n 1024) rm -rf "$BUILD_ROOT/.mkbaselibs" } copy_oldpackages() { local i=0 local d local dest test -z "$RUNNING_IN_VM" || return 0 if test -z "$old_packages" ; then rm -rf "$BUILD_ROOT"/.build.oldpackages* return 0 fi for d in "${old_packages[@]}"; do dest="$BUILD_ROOT/.build.oldpackages" test "$i" = 0 || dest="$dest$i" if test -d "$d" -a "$d" != "$dest" ; then rm -rf "$dest" mkdir -p "$dest" cp -L $d/* "$dest" : $((++i)) fi done } mkdir_build_root() { # strip trailing slash test "$BUILD_ROOT" != / && BUILD_ROOT="${BUILD_ROOT%/}" if test -d "$BUILD_ROOT" ; then # check if it is owned by root if test -z "$RUNNING_IN_VM" -a \! -O "$BUILD_ROOT" -a "`stat -c %u $BUILD_ROOT`" -ne 0 ; then cleanup_and_exit 1 "BUILD_ROOT=$BUILD_ROOT must be owned by root. Exit..." fi else test "$BUILD_ROOT" != "${BUILD_ROOT%/*}" && mkdir -p "${BUILD_ROOT%/*}" if ! mkdir $BUILD_ROOT ; then cleanup_and_exit 1 "can not create BUILD_ROOT=$BUILD_ROOT. Exit..." fi fi if test ! -w "$BUILD_ROOT" ; then cleanup_and_exit 4 "Error: BUILD_ROOT=$BUILD_ROOT not writeable, try --clean." fi rm -rf "$BUILD_ROOT/.build.packages" if test -z "$VM_TYPE" -a -z "$RUNNING_IN_VM" ; then # don't touch this in VM rm -rf "$BUILD_ROOT/.build" mkdir -p "$BUILD_ROOT/.build" fi } copy_overlay() { if test -d "$OVERLAY"; then pushd $OVERLAY echo "Copying overlay to BUILD_ROOT" tar -cpf - . | (cd $BUILD_ROOT ; tar -xvf -) popd else echo "OVERLAY ($OVERLAY) is no directory - skipping" fi } run_rsync() { if test -n "$RSYNCDEST" ; then if test -d "$RSYNCSRC" ; then if ! test -d "$BUILD_ROOT/$RSYNCDEST" ; then echo "ATTENTION! Creating missing target directory ($BUILD_ROOT/$RSYNCDEST)." mkdir -p $BUILD_ROOT/$RSYNCDEST fi echo "Running rsync ..." rsync -av $RSYNCSRC/* $BUILD_ROOT/$RSYNCDEST/ chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT/$RSYNCDEST" RSYNCDONE=true echo "... done" else echo "RSYNCSRC is not a directory - skipping" fi else echo "RSYNCSRC given, but not RSYNCDEST - skipping" fi } wipe_build_environment() { if test -n "$VM_TYPE" ; then vm_img_wipe else echo "Wiping build root: '$BUILD_ROOT'" # unmount all mounts still in the build root path for m in $(cat /proc/mounts | grep "$BUILD_ROOT" | awk '{ print $2 }'); do if ! umount -n "$m" 2>/dev/null ; then echo "Failed to umount "$m", cannot wipe buildroot" exit 1 fi done rm -rf "$BUILD_ROOT" fi } sysrq_running_build() { test -z "$SRCDIR" || usage if test -n "$VM_TYPE" ; then vm_sysrq "$1" else cleanup_and_exit 1 "can not send a sysrq to chroot builds" fi } kill_running_build() { test -z "$SRCDIR" || usage (set -C; > "$BUILD_ROOT/exit" 2>/dev/null || true) if test -n "$VM_TYPE" ; then # mark job as failed so that we don't extract packages vm_set_buildstatus 1 vm_kill else if ! $BUILD_DIR/killchroot -s 9 $BUILD_ROOT ; then cleanup_and_exit 1 "could not kill build in $BUILD_ROOT" fi 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 -tsysfs none $BUILD_ROOT/sys 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 buildroot_umount /proc/sys/fs/binfmt_misc buildroot_umount /proc buildroot_umount /sys buildroot_umount /dev/pts buildroot_umount /dev/shm fi } #### main #### trap fail_exit EXIT shopt -s nullglob export PATH=$BUILD_DIR:/sbin:/usr/sbin:/bin:/usr/bin:$PATH if vm_detect_2nd_stage ; then set "/.build-srcdir/$RECIPEFILE" export PATH=/.build:$PATH fi . $BUILD_DIR/common_functions || exit 1 export HOST needarg() { if test -z "$ARG" ; then cleanup_and_exit 1 "$PARAM needs an agrument" fi } validate_init "$BUILD_CONF" while test -n "$1"; do PARAM="$1" ARG="$2" test "$ARG" = "${ARG#-}" || ARG= shift case $PARAM in *-*=*) ARG=${PARAM#*=} PARAM=${PARAM%%=*} set -- "----noarg=$PARAM" "$@" ;; esac case ${PARAM/#--/-} in -help|-h) echo_help cleanup_and_exit ;; -noinit|-no-init) test "$DO_INIT" = false && DO_INIT_TOPDIR=false DO_INIT=false ;; -nochecks|-no-checks) DO_CHECKS=false ;; -clean) test "$CLEAN_BUILD" = '--clean' && GENBUILDREQS_CLEAN_BUILD='--clean' CLEAN_BUILD='--clean' REMOVE_CCACHE="$CLEAN_BUILD" ;; -wipe) DO_WIPE=true ;; -kill) KILL=true ;; -rpms) needarg BUILD_RPMS="$ARG" shift ;; -arch) needarg BUILD_ARCH="$ARG" shift ;; -hostarch|-host-arch) needarg BUILD_HOST_ARCH="$ARG" shift ;; -verify) export VERIFY_BUILD_SYSTEM=true ;; -target) needarg ABUILD_TARGET="$ARG" shift ;; -jobs) needarg BUILD_JOBS="$ARG" shift ;; -threads) needarg BUILD_THREADS="$ARG" shift ;; -extrapacks|-extra-packs|-X) needarg BUILD_EXTRA_PACKS="$BUILD_EXTRA_PACKS $ARG" shift ;; -lint) # OBSOLETE: just keeping it for compability DO_LINT=true ;; -baselibs) CREATE_BASELIBS=true ;; -baselibs-internal) CREATE_BASELIBS=internal ;; -root) needarg BUILD_ROOT="$ARG" shift ;; -cachedir) needarg CACHE_DIR="$ARG" shift ;; -oldpackages) needarg old_packages=("${old_packages[@]}" "$ARG") shift ;; -dist) needarg BUILD_DIST="$ARG" shift ;; -release) needarg RELEASE="$ARG" shift ;; -logfile) needarg LOGFILE="$ARG" shift ;; -reason) needarg REASON="$ARG" shift ;; -norootforbuild) NOROOTFORBUILD=true ;; -useusedforbuild) USEUSEDFORBUILD="--useusedforbuild" ;; -configdir) needarg CONFIG_DIR="$ARG" shift ;; -list*state) LIST_STATE=true ;; -define|-with|-without) needarg PARAM="-${PARAM/#--/-}" definesnstuff[${#definesnstuff[@]}]="$PARAM" definesnstuff[${#definesnstuff[@]}]="$ARG" shift ;; -repository|-repo) needarg repos[${#repos[@]}]="--repository" repos[${#repos[@]}]="$ARG" shift ;; -icecream) needarg icecream="$ARG" test "$icecream" -gt 0 && BUILD_JOBS="$ARG" shift ;; -ccache) # this is initialized after all the parsing is done CCACHE=true ;; -pkg-ccache) needarg PKG_CCACHE="$ARG" shift CCACHE=true ;; -statistics) DO_STATISTICS=1 ;; -debug) BUILD_DEBUG=1 ;; -incarnation) needarg INCARNATION=$ARG shift ;; -disturl) needarg DISTURL=$ARG shift ;; -linksources) LINKSOURCES=true ;; -changelog) CHANGELOG=true ;; -overlay) needarg OVERLAY=$ARG shift ;; -rsync-src) needarg RSYNCSRC=$ARG shift ;; -rsync-dest) needarg RSYNCDEST=$ARG shift ;; -uid) needarg if test -n "${ARG//[0-9:]/}" ; then cleanup_and_exit 1 "--uid argument must be uid:gid" fi ABUILD_UID=${ARG%:*} ABUILD_GID=${ARG#*:} shift ;; -rpmlist) needarg RPMLIST="--rpmlist $ARG" BUILD_RPMS= shift ;; -sysrq) needarg SEND_SYSRQ="${ARG:0:1}" shift ;; -shell) RUN_SHELL=1 ;; -shell-cmd) needarg RUN_SHELL=1 RUN_SHELL_CMD="$ARG" shift ;; -signdummy) SIGNDUMMY=1 ;; -nosignature) DLNOSIGNATURE="--nosignature" ;; -obsmultibuild|-obs-multibuild|-buildflavor|-build-flavor) needarg BUILD_FLAVOR=$ARG shift ;; -obspackage|-obs-package) needarg OBS_PACKAGE=$ARG shift ;; ---noarg) cleanup_and_exit 1 "$ARG does not take an argument" ;; -*) if vm_parse_options "$@" ; then set -- "${nextargs[@]}" elif recipe_parse_options "$@" ; then set -- "${nextargs[@]}" else cleanup_and_exit 1 "Unknown option '$PARAM'. Exit." fi ;; *) RECIPEFILES[${#RECIPEFILES[@]}]="$PARAM" # skip validation PARAM= ;; esac if test -n "$PARAM" ; then validate_param "$PARAM" "$ARG" fi done # validate params coming from the environment test -n "$BUILD_ARCH" && validate_param "--arch" "$BUILD_ARCH" BUILD_ARCH test -n "$BUILD_HOST_ARCH" && validate_param "--hostarch" "$BUILD_HOST_ARCH" BUILD_HOST_ARCH test -n "$BUILD_RPMS" && validate_param "--rpms" "$BUILD_RPMS" BUILD_RPMS test -n "$BUILD_EXTRA_PACKS" && validate_param "--extrapacks" "$BUILD_EXTRA_PACKS" BUILD_EXTRA_PACKS test -n "$BUILD_DIST" && validate_param "--dist" "$BUILD_DIST" BUILD_DIST test -n "$VERIFY_BUILD_SYSTEM" && validate_param "--verify" "$VERIFY_BUILD_SYSTEM" VERIFY_BUILD_SYSTEM test -n "$BUILD_RPM_BUILD_STAGE" && validate_param "--stage" "$BUILD_RPM_BUILD_STAGE" BUILD_RPM_BUILD_STAGE test "$BUILD_ROOT" != /var/tmp/build-root && validate_param "--root" "$BUILD_ROOT" BUILD_ROOT test "$CONFIG_DIR" != "$BUILD_DIR/configs" && validate_param "--configdir" "$CONFIG_DIR" CONFIG_DIR # validate the buildroot validate_buildroot "$BUILD_ROOT" # done option parsing BUILD_OPTIONS_PARSED=true if test -n "$VM_TYPE" -a -z "$RUNNING_IN_VM" ; then vm_verify_options vm_set_defaults fi initbuildsysstuff=() if test -n "$BUILD_FLAVOR" ; then initbuildsysstuff[${#initbuildsysstuff[@]}]="--buildflavor" initbuildsysstuff[${#initbuildsysstuff[@]}]="$BUILD_FLAVOR" fi if test -n "$OBS_PACKAGE" ; then initbuildsysstuff[${#initbuildsysstuff[@]}]="--obspackage" initbuildsysstuff[${#initbuildsysstuff[@]}]="$OBS_PACKAGE" fi if test -n "$DO_WIPE" ; then wipe_build_environment cleanup_and_exit fi if test -n "$KILL" ; then kill_running_build cleanup_and_exit fi if test -n "$SEND_SYSRQ" ; then sysrq_running_build "$SEND_SYSRQ" cleanup_and_exit fi if test -n "$CLEAN_BUILD" ; then DO_INIT=true DO_INIT_TOPDIR=true fi if test -z "$RPMLIST" -a -z "$RUNNING_IN_VM" ; then if test -z "$repos" -a -z "$BUILD_RPMS" ; then repos=(--repository 'zypp://') fi else repos=() fi set_build_arch if test "$DO_INIT" = false -a -n "$RUN_SHELL"; then mount_stuff BUILD_USER=root test -n "$NOROOTFORBUILD" && BUILD_USER=abuild chroot $BUILD_ROOT su - $BUILD_USER cleanup_and_exit $? fi expand_recipe_directories if test -n "$LIST_STATE" ; then BUILD_ROOT=`mktemp -d /var/tmp/build-list-state-XXXXXX` test -d "$BUILD_ROOT" || cleanup_and_exit 3 RECIPEFILE=$RECIPEFILES # only one specified anyways if test "$RECIPEFILE" != "${RECIPEFILE%.src.rpm}" ; then MYSRCDIR="$BUILD_ROOT/usr/src/packages/SOURCES" recipe_unpack_srcrpm RECIPEFILE="$MYSRCDIR/$RECIPEFILE" fi init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" --list-state "${initbuildsysstuff[@]}" "${definesnstuff[@]}" "${repos[@]}" $DLNOSIGNATURE $USEUSEDFORBUILD $RECIPEFILE $BUILD_EXTRA_PACKS ERR=$? rm -rf "$BUILD_ROOT" cleanup_and_exit $ERR fi # do vm setup if needed if test -z "$RUNNING_IN_VM" -a -n "$VM_TYPE" -a -n "$VM_ROOT" ; then vm_setup fi mkdir_build_root if test "$BUILD_ROOT" = / ; then browner="$(stat -c %u /)" fi rm -f $BUILD_ROOT/exit if test -z "$VM_ROOT" -a -z "$LOGFILE" ; then if test -z "$RUNNING_IN_VM"; then LOGFILE="$BUILD_ROOT/.build.log" else # lxc, docker and nspawn are special cases: vm shares logfile with host case "$VM_TYPE" in lxc|docker|nspawn) ;; *) LOGFILE="$BUILD_ROOT/.build.log" ;; esac fi fi if test -n "$LOGFILE" -a -z "$RUN_SHELL" ; then echo "logging output to $LOGFILE..." rm -f $LOGFILE touch $LOGFILE # set start time, to be substracted for build log timestamps STARTTIME=`perl -e 'print time()'` if test -n "$RUNNING_IN_VM" ; then # no additional timestamps in inner vm build system exec 1> >(exec -a 'build logging' tee -a $LOGFILE) 2>&1 elif test -n "$VM_ROOT" ; then # external run of virtualization build exec 1> >(exec -a 'build logging' perl -e 'open(F,">>",$ARGV[0])||die("$ARGV[0]: $!\n");$|=1;select(F);$|=1;while(){my $p=sprintf("[%5ds] ", time()-'$STARTTIME');print STDOUT $p.$_;s/^\r//s;s/\r\n/\n/gs;print F $p.$_}' $LOGFILE) 2>&1 else # plain chroot exec 1> >(exec -a 'build logging' perl -e 'open(F,">>",$ARGV[0])||die("$ARGV[0]: $!\n");$|=1;select(F);$|=1;while(){my $p=sprintf("[%5ds] ", time()-'$STARTTIME');print STDOUT $p.$_;print F $p.$_}' $LOGFILE) 2>&1 fi fi setmemorylimit # # say hello # test -z "$HOST" && HOST=`hostname` if test -z "$RUNNING_IN_VM" ; then echo Using BUILD_ROOT=$BUILD_ROOT test -n "$BUILD_RPMS" && echo Using BUILD_RPMS=$BUILD_RPMS echo Using BUILD_ARCH=$BUILD_ARCH test -n "$VM_TYPE" && echo "Doing $VM_TYPE build${VM_ROOT:+ in $VM_ROOT}" echo fi test "$BUILD_ARCH" = all && BUILD_ARCH= BUILD_USER_ABUILD_USED= for RECIPEFILE in "${RECIPEFILES[@]}" ; do SRCDIR="${RECIPEFILE%/*}" RECIPEFILE="${RECIPEFILE##*/}" recipe_set_buildtype if test -z "$RUNNING_IN_VM" ; then echo echo "$HOST started \"build $RECIPEFILE\" at `date --utc`." echo test -n "$REASON" && echo "$REASON" echo TIME_START_TIME=`date +%s` # for statistics fi # # first setup building directory... # cd "$SRCDIR" if ! test -s "$RECIPEFILE" ; then cleanup_and_exit 1 "$RECIPEFILE is empty. This should not happen..." fi MYSRCDIR="$SRCDIR" # special hack to build from a .src.rpm (modifies MYSRCDIR) test "$RECIPEFILE" != "${RECIPEFILE%.src.rpm}" && recipe_unpack_srcrpm echo "processing recipe $MYSRCDIR/$RECIPEFILE ..." ADDITIONAL_PACKS= test -z "$BUILD_EXTRA_PACKS" || ADDITIONAL_PACKS="$ADDITIONAL_PACKS $BUILD_EXTRA_PACKS" test -z "$CREATE_BASELIBS" || ADDITIONAL_PACKS="$ADDITIONAL_PACKS build" test -z "$CCACHE" || ADDITIONAL_PACKS="$ADDITIONAL_PACKS ccache" test "$icecream" = 0 || ADDITIONAL_PACKS="$ADDITIONAL_PACKS icecream gcc-c++" test -z "$DO_LINT" || ADDITIONAL_PACKS="$ADDITIONAL_PACKS rpmlint-Factory" test "$VMDISK_FILESYSTEM" = xfs && ADDITIONAL_PACKS="$ADDITIONAL_PACKS libblkid1" test "$VM_TYPE" = zvm && ADDITIONAL_PACKS="$ADDITIONAL_PACKS udev libcap2" # we need to do this before the vm is started if test -n "$CHANGELOG" -a -z "$RUNNING_IN_VM" -a -z "$RUN_SHELL" ; then recipe_create_changelog "$MYSRCDIR/$RECIPEFILE" fi if test -n "$VM_TYPE" -a -z "$RUNNING_IN_VM" ; then vm_first_stage cleanup_and_exit fi if test "$DO_INIT" = true ; then start_time=`date +%s` # # create legacy .buildenv file # test -z "$INCARNATION" && INCARNATION=0 echo "BUILD_INCARNATION=$INCARNATION" > $BUILD_ROOT/.buildenv Q="'\''" test -n "$DISTURL" && echo "BUILD_DISTURL='${DISTURL//"'"/$Q}'" >> $BUILD_ROOT/.buildenv test "$BUILDTYPE" = preinstallimage && mkdir -p $BUILD_ROOT/.preinstall_image CREATE_BUILD_BINARIES= if recipe_needs_build_binaries "$MYSRCDIR/$RECIPEFILE" ; then CREATE_BUILD_BINARIES=--create-build-binaries fi set -- init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" "${initbuildsysstuff[@]}" "${definesnstuff[@]}" "${repos[@]}" $CLEAN_BUILD $DLNOSIGNATURE $USEUSEDFORBUILD $CREATE_BUILD_BINARIES $RPMLIST "$MYSRCDIR/$RECIPEFILE" $ADDITIONAL_PACKS echo "$* ..." start_time=`date +%s` "$@" || cleanup_and_exit 1 check_exit TIME_INSTALL=$(( `date +%s` - $start_time )) unset start_time # arbitrary limit of 10MB if test $((`stat -f -c "%a*%S/1024/1024" $BUILD_ROOT`)) -lt 10; then # ensure that old stat is not failing (RHEL4) if df $BUILD_ROOT 2>/dev/null | grep -q "100%"; then df -h $BUILD_ROOT cleanup_and_exit 1 "build does not work on a completely full filesystem" fi fi copy_oldpackages # chroot based builds # rsync as source and dest could be same test -n "$PKG_CCACHE" -a -e "$PKG_CCACHE" && \ mkdir -p "$BUILD_ROOT/.build.oldpackages/" && \ rsync -v "$PKG_CCACHE" "$BUILD_ROOT/.build.oldpackages/_ccache.tar" fi mount_stuff # hack to process preinstallimages early if test "$BUILDTYPE" = preinstallimage ; then recipe_build continue fi if test -z "$BUILD_DIST" -a -e "$BUILD_ROOT/.guessed_dist" ; then read BUILD_DIST < $BUILD_ROOT/.guessed_dist fi # # install dummy sign program if needed # test -f $BUILD_ROOT/usr/bin/sign_installed && mv $BUILD_ROOT/usr/bin/sign_installed $BUILD_ROOT/usr/bin/sign if test -n "$SIGNDUMMY" ; then test -f $BUILD_ROOT/usr/bin/sign && mv $BUILD_ROOT/usr/bin/sign $BUILD_ROOT/usr/bin/sign_installed cp $BUILD_DIR/signdummy $BUILD_ROOT/usr/bin/sign chmod 755 $BUILD_ROOT/usr/bin/sign fi # # check if we want to build with the abuild user # BUILD_USER=abuild if test -x $BUILD_ROOT/bin/rpm ; then SUSE_VERSION=`chroot $BUILD_ROOT /bin/rpm --eval '%{?suse_version}' 2>/dev/null` test -n "$SUSE_VERSION" -a "${SUSE_VERSION:-0}" -le 1020 && BUILD_USER=root fi if test "$BUILD_USER" = abuild ; then egrep '^#[[:blank:]]*needsrootforbuild[[:blank:]]*$' >/dev/null <$RECIPEFILE && BUILD_USER=root else egrep '^#[[:blank:]]*norootforbuild[[:blank:]]*$' >/dev/null <$RECIPEFILE && BUILD_USER=abuild fi test -n "$NOROOTFORBUILD" && BUILD_USER=abuild # appliance builds must run as root if test "$BUILDTYPE" = kiwi ; then imagetype=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $RECIPEFILE imagetype) test "$imagetype" = product || BUILD_USER=root fi # same with docker and fissile builds if test "$BUILDTYPE" = docker -o "$BUILDTYPE" = fissile -o "$BUILDTYPE" = podman ; then BUILD_USER=root fi # fixup passwd/group if test $BUILD_USER = abuild ; then if ! egrep '^abuild:' >/dev/null <$BUILD_ROOT/etc/passwd ; then echo "abuild:x:${ABUILD_UID}:${ABUILD_GID}:Autobuild:/home/abuild:/bin/bash" >>$BUILD_ROOT/etc/passwd echo 'abuild:*:::::::' >>$BUILD_ROOT/etc/shadow # This is needed on Mandriva 2009 echo 'abuild:*::' >>$BUILD_ROOT/etc/gshadow # This is needed on Ubuntu echo "abuild:x:${ABUILD_GID}:" >>$BUILD_ROOT/etc/group mkdir -p $BUILD_ROOT/home/abuild chown "$ABUILD_UID:$ABUILD_GID" $BUILD_ROOT/home/abuild else if ! egrep "^abuild:x?:${ABUILD_UID}:${ABUILD_GID}" >/dev/null <$BUILD_ROOT/etc/passwd ; then echo "abuild user present in the buildroot ($BUILD_ROOT) but uid:gid does not match" echo "buildroot currently using:" egrep "^abuild:" <$BUILD_ROOT/etc/passwd echo "build script attempting to use:" echo "abuild::${ABUILD_UID}:${ABUILD_GID}:..." echo "build aborting" cleanup_and_exit 1 fi fi if test -f $BUILD_ROOT/etc/shadow ; then sed -i -e "s@^root::@root:*:@" $BUILD_ROOT/etc/shadow fi if test -f $BUILD_ROOT/etc/gshadow ; then sed -i -e "s@^root::@root:*:@" $BUILD_ROOT/etc/gshadow fi BUILD_USER_ABUILD_USED=true else # building as root ABUILD_UID=0 ABUILD_GID=0 if egrep '^abuild:' >/dev/null <$BUILD_ROOT/etc/passwd ; then rm -rf "$BUILD_ROOT/home/abuild" sed -i -e '/^abuild:/d' $BUILD_ROOT/etc/passwd sed -i -e '/^abuild:/d' $BUILD_ROOT/etc/group if test -f $BUILD_ROOT/etc/shadow ; then sed -i -e '/^abuild:/d' $BUILD_ROOT/etc/shadow fi if test -f $BUILD_ROOT/etc/gshadow ; then sed -i -e '/^abuild:/d' $BUILD_ROOT/etc/gshadow fi fi fi if test -n "$RUNNING_IN_VM" ; then vm_setup_network fi setupicecream setupccache if test -n "$RUN_SHELL" ; then if test -n "$RUN_SHELL_CMD"; then chroot $BUILD_ROOT "${RUN_SHELL_CMD:=/bin/bash}" cleanup_and_exit $? else chroot $BUILD_ROOT su - $BUILD_USER cleanup_and_exit $? fi fi # fill build directories with sources. Also sets TOPDIR recipe_setup # strip prefix from autogenerated files of source services. # sorted by line length to let the latest run service win perl -e 'print "$_\n" for sort { length($a) <=> length($b) } @ARGV' $BUILD_ROOT$TOPDIR/SOURCES/_service\:* | while read i ; do mv "$i" "${i%/*}/${i##*:}" done RECIPEFILE="${RECIPEFILE##*:}" # create .build.packages link rm -f $BUILD_ROOT/.build.packages ln -s ${TOPDIR#/} $BUILD_ROOT/.build.packages # nasty hack to prevent rpath on known paths # FIXME: do this only for suse if test -d "$BUILD_ROOT/etc/profile.d" ; then echo "export SUSE_IGNORED_RPATHS=/etc/ld.so.conf" > "$BUILD_ROOT/etc/profile.d/buildsystem.sh" fi cd $BUILD_ROOT$TOPDIR/SOURCES || cleanup_and_exit 1 for i in *.obscpio ; do test -e "$i" || continue echo "Unpacking $i ..." echo "#!/bin/sh -e" > $BUILD_ROOT/.unpack.command shellquote cd "$TOPDIR/SOURCES" >> $BUILD_ROOT/.unpack.command echo >> $BUILD_ROOT/.unpack.command echo -n 'cpio --extract --owner="'$BUILD_USER'" --unconditional --preserve-modification-time --make-directories <' >> $BUILD_ROOT/.unpack.command shellquote "$i" >> $BUILD_ROOT/.unpack.command echo >> $BUILD_ROOT/.unpack.command shellquote rm -f "$i" >> $BUILD_ROOT/.unpack.command echo >> $BUILD_ROOT/.unpack.command chmod 0755 $BUILD_ROOT/.unpack.command chroot $BUILD_ROOT su -c /.unpack.command - $BUILD_USER || cleanup_and_exit 1 rm -f $BUILD_ROOT/.unpack.command done if test -e _service; then echo "Running build time source services..." $BUILD_DIR/runservices --buildroot "$BUILD_ROOT" || cleanup_and_exit 1 fi # get rid of old src dir, it is no longer needed and just wastes space test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir && rm -rf "$MYSRCDIR" # patch recipes recipe_prepare # hmmm chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" echo ----------------------------------------------------------------- if test "$BUILD_USER" = root ; then echo ----- building $RECIPEFILE else echo ----- building $RECIPEFILE "(user $BUILD_USER)" fi echo ----------------------------------------------------------------- echo ----------------------------------------------------------------- BUILD_SUCCEEDED=false if test -n "$OVERLAY" ; then copy_overlay fi if test -n "$RSYNCSRC" ; then run_rsync 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 recipe_gendiff recipe_cleanup test -d "$SRCDIR" && cd "$SRCDIR" umount_stuff done if test -n "$RUNNING_IN_VM" ; then vm_exit_statistics fi # mount /proc again for the post processing steps if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then mount -n -tproc none $BUILD_ROOT/proc fi RPMS=`find $BUILD_ROOT/$TOPDIR/RPMS -type f -name "*.rpm" 2>/dev/null || true` DEBS=`find $BUILD_ROOT/$TOPDIR/DEBS -type f "(" -name "*.deb" -o -name "*.ddeb" -o -name "*.udeb" ")" 2>/dev/null || true` if test -n "$RPMS" -a -n "$BUILD_USER_ABUILD_USED" ; then 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 if test -n "$RUNNING_IN_VM" -a "$BUILD_ROOT" = / ; then umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2>/dev/null fi # find package name export PNAME= 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##*/}" BUILD_ROOT=/ chroot "$BUILD_ROOT" "/usr/lib/build/checks/${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 # checkscripts may have deleted some binaries RPMS=`find $BUILD_ROOT/$TOPDIR/RPMS -type f -name "*.rpm" 2>/dev/null || true` 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 "$CCACHE" ; then if test -n "$REMOVE_CCACHE" ; then echo "... cleaning ccache" test_cmd="ccache -h | grep -c evict-older-than" clean_cmd="ccache --evict-older-than $(($(date +%s) - $CCACHE_SETUP_START_TIME))s" chroot $BUILD_ROOT su -c "$test_cmd && $clean_cmd" - $BUILD_USER fi echo "... saving ccache" tar ${REMOVE_CCACHE:+--remove-files} -cf "$BUILD_ROOT/$TOPDIR/OTHER/_ccache.tar" -C "$BUILD_ROOT/.ccache/" . fi if test \( -n "$RPMS" -o -n "$DEBS" \) -a -n "$CREATE_BASELIBS"; then create_baselibs fi exitcode=0 # 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 if test -n "$RUNNING_IN_VM" ; then vm_wrapup_build $(recipe_resultdirs) OTHER fi echo echo "$HOST finished \"build $RECIPEFILE\" at `date --utc`." echo cleanup_and_exit "$exitcode" obs-build-20210120/build-pkg000066400000000000000000000042401400202264700154210ustar00rootroot00000000000000# # binary package specific functions for the build script # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ for i in rpm deb arch ; do . "$BUILD_DIR/build-pkg-$i" done pkg_initdb() { pkg_initdb_$PSUF "$@" } pkg_prepare() { pkg_prepare_$PSUF "$@" } pkg_install() { pkg_install_$PSUF "$@" } pkg_verify_installed() { pkg_verify_installed_$PSUF "$@" } pkg_erase() { pkg_erase_$PSUF "$@" } pkg_cumulate() { pkg_cumulate_$PSUF "$@" } pkg_finalize() { pkg_finalize_$PSUF "$@" } pkg_preinstall() { pkg_preinstall_$PSUF "$@" } pkg_runscripts() { pkg_runscripts_$PSUF "$@" } pkg_autodetect_type() { if test -n "$PREINSTALL_IMAGE" ; then cleanup_and_exit 1 "cannot autodetect build type when using a preinstall image" fi PSUF= test -e $BUILD_ROOT/.init_b_cache/rpms/rpm.rpm && PSUF=rpm test -e $BUILD_ROOT/.init_b_cache/rpms/dpkg.deb && PSUF=deb test -e $BUILD_ROOT/.init_b_cache/rpms/pacman.arch && PSUF=arch if test -z "$PSUF" ; then cleanup_and_exit 1 "could not autodetect package type" fi } pkg_set_type() { PSUF=`queryconfig binarytype --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"` test "$PSUF" = UNDEFINED && PSUF= case "$PSUF" in rpm|deb|arch) ;; '') pkg_autodetect_type ;; *) cleanup_and_exit 1 "unknown package type '$PSUF'" ;; esac } obs-build-20210120/build-pkg-arch000066400000000000000000000061221400202264700163350ustar00rootroot00000000000000# # Arch specific functions. # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ pkg_initdb_arch() { mkdir -p $BUILD_ROOT/var/lib/pacman/sync touch $BUILD_ROOT/var/lib/pacman/sync/core.db touch $BUILD_ROOT/var/lib/pacman/sync/extra.db touch $BUILD_ROOT/var/lib/pacman/sync/community.db } pkg_prepare_arch() { : } pkg_erase_arch() { ( cd $BUILD_ROOT && chroot $BUILD_ROOT pacman -R -n -d -d --noconfirm $PKG 2>&1 || touch $BUILD_ROOT/exit ) | \ perl -ne '$|=1;/^(Total Removed Size: |Packages \(\d+\):|:: Do you want to remove these packages|deleting |removing | )/||/^$/||print' } pkg_verify_installed_arch() { return 1 } pkg_cumulate_arch() { return 1 } pkg_install_arch() { # Pacman can't handle chroot # https://bbs.archlinux.org/viewtopic.php?id=129661 (cd $BUILD_ROOT/etc && sed -i "s/^CheckSpace/#CheckSpace/g" pacman.conf) # -d -d disables deps checking ( cd $BUILD_ROOT && chroot $BUILD_ROOT pacman -U --overwrite '*' -d -d --noconfirm .init_b_cache/$PKG.$PSUF 2>&1 || touch $BUILD_ROOT/exit ) | \ perl -ne '$|=1;/^(warning: could not get filesystem information for |loading packages|looking for inter-conflicts|looking for conflicting packages|Targets |Total Installed Size: |Net Upgrade Size: |Proceed with installation|checking package integrity|loading package files|checking for file conflicts|checking keyring|Packages \(\d+\)|:: Proceed with installation|:: Processing package changes|checking available disk space|installing |upgrading |warning:.*is up to date -- reinstalling|Optional dependencies for| )/||/^$/||print' } pkg_finalize_arch() { : } pkg_preinstall_arch() { mkdir -p "$BUILD_INIT_CACHE/scripts" $TAR -f "$BUILD_INIT_CACHE/rpms/$PKG.arch" rm -rf "$BUILD_INIT_CACHE/scripts/$PKG.post" if test -e "$BUILD_INIT_CACHE/scripts/$PKG.run" -a -f .INSTALL -a ! -L .INSTALL ; then cat .INSTALL > "$BUILD_INIT_CACHE/scripts/$PKG.post" echo 'type post_install >/dev/null 2>&1 && post_install' >> "$BUILD_INIT_CACHE/scripts/$PKG.post" fi rm -rf .PKGINFO .INSTALL } pkg_runscripts_arch() { if test -e "$BUILD_INIT_CACHE/scripts/$PKG.post" ; then echo "running $PKG postinstall script" ( cd $BUILD_ROOT && chroot $BUILD_ROOT ".init_b_cache/scripts/$PKG.post" < /dev/null ) rm -f "$BUILD_INIT_CACHE/scripts/$PKG.post" fi } obs-build-20210120/build-pkg-deb000066400000000000000000000156631400202264700161640ustar00rootroot00000000000000# # Debian dpkg specific functions. # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ DEB_UNSAFE_IO= # # A wrapper around chroot to set the environment correctly for dpkg and # pre/postinst scripts. # deb_chroot () { # # to workaround some version of fileutils that doesn't do a 'chdir /' # when doing a 'chroot /' call lets subshell and change dir manually # ( cd $1 && DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical \ DEBCONF_NONINTERACTIVE_SEEN=true \ LC_ALL=C LANGUAGE=C LANG=C \ chroot $* ) } deb_setup() { mkdir -p $BUILD_ROOT/var/lib/dpkg mkdir -p $BUILD_ROOT/var/log mkdir -p $BUILD_ROOT/etc/default :>> $BUILD_ROOT/var/lib/dpkg/status :>> $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="--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 $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 # a running upstart, we just link the start binary to /bin/true if test -e "$BUILD_ROOT/sbin/start"; then if test "$BUILD_ROOT/sbin/start" -ef "$BUILD_ROOT/sbin/initctl" ; then echo "linking /sbin/start to /bin/true" mv "$BUILD_ROOT/sbin/start" "$BUILD_ROOT/sbin/start.disabled" ln -s "/bin/true" "$BUILD_ROOT/sbin/start" fi fi # another workaround, see bug bnc#733699 rm -f "$BUILD_ROOT/var/run/init.upgraded" } pkg_erase_deb() { deb_chroot $BUILD_ROOT dpkg --purge --force-depends $PKG 2>&1 | { local retry while read line; do case "$line" in subprocess\ installed\ *script\ returned\ error\ exit\ status*) chroot $BUILD_ROOT rm -f /var/lib/dpkg/info/$PKG.{pre,post}rm retry=1 ;; *) echo "$line" ;; esac done if test -n "$retry"; then echo "re-try deleting $PKG without post/pre remove scripts" deb_chroot $BUILD_ROOT dpkg --purge --force-depends $PKG 2>&1 || touch $BUILD_ROOT/exit fi } | perl -ne '$|=1;/^(\(Reading database|Removing |Purging configuration files for )/||/^$/||print' } pkg_cumulate_deb() { return 1 } pkg_verify_installed_deb() { return 1 } pkg_finalize_deb() { echo "configuring all installed packages..." # configure all packages after complete installation, not for each package like rpm does # We need to run this twice, because of cyclic dependencies as it does not succeed on most # debian based distros in the first attempt. if ! deb_chroot $BUILD_ROOT dpkg --configure --pending 2>&1; then echo "first configure attempt failed, trying again..." deb_chroot $BUILD_ROOT dpkg --configure --pending 2>&1 || cleanup_and_exit 1 fi } pkg_preinstall_deb() { rm -rf control.tar.gz control.tar.xz data.tar.gz data.tar.xz ar x "$BUILD_INIT_CACHE/rpms/$PKG.deb" control.tar.gz control.tar.xz data.tar.gz data.tar.xz 2>/dev/null rm -rf "$BUILD_INIT_CACHE/scripts/control" mkdir "$BUILD_INIT_CACHE/scripts/control" || cleanup_and_exit 1 :> "$BUILD_INIT_CACHE/scripts/control/.dummy" # pin control dir if test -f "control.tar.gz" -a ! -L "control.tar.gz" ; then $TAR -C "$BUILD_INIT_CACHE/scripts/control" -z -f control.tar.gz elif test -f "control.tar.xz" -a ! -L "control.tar.xz" ; then $TAR -C "$BUILD_INIT_CACHE/scripts/control" -J -f control.tar.xz fi if test -f "data.tar.gz" -a ! -L "data.tar.gz" ; then $TAR -z -f data.tar.gz elif test -f "data.tar.xz" -a ! -L "data.tar.xz" ; then $TAR -J -f data.tar.xz fi rm -rf "$BUILD_INIT_CACHE/scripts/$PKG.pre" "$BUILD_INIT_CACHE/scripts/$PKG.post" if test -e "$BUILD_INIT_CACHE/scripts/$PKG.run" ; then test -f "$BUILD_INIT_CACHE/scripts/control/preinst" && mv "$BUILD_INIT_CACHE/scripts/control/preinst" "$BUILD_INIT_CACHE/scripts/$PKG.pre" test -f "$BUILD_INIT_CACHE/scripts/control/postinst" && mv "$BUILD_INIT_CACHE/scripts/control/postinst" "$BUILD_INIT_CACHE/scripts/$PKG.post" fi rm -rf "$BUILD_INIT_CACHE/scripts/control" control.tar.{g,x}z data.tar.{g,x}z } pkg_runscripts_deb() { if ! test -e $BUILD_ROOT/var/lib/dpkg/status ; then deb_setup fi if test -e "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre" ; then echo "running $PKG preinstall script" deb_chroot $BUILD_ROOT ".init_b_cache/scripts/$PKG.pre" install \ < /dev/null rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre" fi if test -e "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post" ; then echo "running $PKG postinstall script" deb_chroot $BUILD_ROOT ".init_b_cache/scripts/$PKG.post" configure '' \ < /dev/null rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post" fi } # Local Variables: # mode: Shell-script # End: obs-build-20210120/build-pkg-rpm000066400000000000000000000213571400202264700162250ustar00rootroot00000000000000# # RPM specific functions. # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ pkg_initdb_rpm() { echo "initializing rpm db..." mkdir -p $BUILD_ROOT/var/lib/rpm # rpm v5 does not have initdb if ! test -e $BUILD_ROOT/usr/lib/rpm/cpuinfo.yaml ; then if test -x $BUILD_ROOT/usr/bin/rpmdb ; then chroot $BUILD_ROOT /usr/bin/rpmdb --initdb || cleanup_and_exit 1 else chroot $BUILD_ROOT rpm --initdb || cleanup_and_exit 1 fi fi # hack: add nofsync to db config to speed up install mkdir -p $BUILD_ROOT/root DBI_OTHER=`chroot $BUILD_ROOT rpm --eval '%{?__dbi_other}'` echo "%__dbi_other $DBI_OTHER nofsync" > $BUILD_ROOT/.rpmmacros echo "%__dbi_other $DBI_OTHER nofsync" > $BUILD_ROOT/root/.rpmmacros } pkg_prepare_rpm() { rpm_set_checkopts rpm_init_cumulate } pkg_erase_rpm() { chroot $BUILD_ROOT rpm --nodeps -e $PKG 2>&1 | { local retry while read line; do case "$line" in r*failed:\ No\ such\ file\ or\ directory) ;; error:\ failed\ to\ stat\ *:\ No\ such\ file\ or\ directory) ;; error:\ *scriptlet\ failed*) echo "$line" retry=1 ;; *) echo "$line" ;; esac done if test -n "$retry" ; then echo "re-try deleting $PKG using --noscripts" chroot $BUILD_ROOT rpm --nodeps --noscripts -e $PKG || true fi } } rpm_set_checkopts() { RPMCHECKOPTS= # on Fedora 10 rpmbuild is in a separate package so we need something else to # detect rpm4 test -x $BUILD_ROOT/usr/bin/rpmquery && RPMCHECKOPTS="--nodigest --nosignature" } rpm_init_cumulate() { cumulate=-1 CUMULATED_LIST=() CUMULATED_PIDS=() CUMULATED_HMD5=() DO_CUMULATE= typeset -ri suse_version=$(chroot $BUILD_ROOT rpm --eval '%{?suse_version}' 2>/dev/null) if ((suse_version > 1220)) ; then DO_CUMULATE=true fi } pkg_verify_installed_rpm() { chroot $BUILD_ROOT rpm --verify $PKG 2>&1 | tee $TMPFILE if grep ^missing $TMPFILE > /dev/null ; then return 1 fi return 0 } pkg_cumulate_rpm() { test "$DO_CUMULATE" = true || return 1 # work around for cross-build installs, we must not overwrite the running rpm if test "$PKG" = rpm ; then for i in $BUILD_ROOT/.init_b_cache/preinstalls/rpm-x86-* ; do test -e "$i" && return 1 done fi let cumulate++ CUMULATED_LIST[$cumulate]=".init_b_cache/$PKG.rpm" CUMULATED_PIDS[$cumulate]="$PKGID" CUMULATED_HMD5[$cumulate]="$PKG_HDRMD5" return 0 } pkg_install_rpm() { export ADDITIONAL_PARAMS= if test "$USE_FORCE" = true ; then export ADDITIONAL_PARAMS="$ADDITIONAL_PARAMS --force" fi # work around for cross-build installs, we must not overwrite the running rpm if test "$PKG" = rpm ; then for i in $BUILD_ROOT/.init_b_cache/preinstalls/rpm-x86-* ; do test -e "$i" && ADDITIONAL_PARAMS="$ADDITIONAL_PARAMS --justdb" done fi ( cd $BUILD_ROOT && chroot $BUILD_ROOT rpm --ignorearch --nodeps -U --oldpackage --ignoresize $RPMCHECKOPTS \ $ADDITIONAL_PARAMS .init_b_cache/$PKG.rpm 2>&1 || \ touch $BUILD_ROOT/exit ) | \ grep -v "^warning:.*saved as.*rpmorig$" } pkg_finalize_rpm() { if test -n "${CUMULATED_LIST[*]}" ; then echo "now installing cumulated packages" for ((num=0; num<=cumulate; num++)) ; do echo ${CUMULATED_LIST[$num]} PKG=${CUMULATED_LIST[$num]##*/} test "$BUILD_ROOT/.init_b_cache/rpms/$PKG" -ef "$BUILD_ROOT/${CUMULATED_LIST[$num]}" && continue rm -f $BUILD_ROOT/${CUMULATED_LIST[$num]} cp $BUILD_ROOT/.init_b_cache/rpms/$PKG $BUILD_ROOT/${CUMULATED_LIST[$num]} || cleanup_and_exit 1 done > $BUILD_ROOT/.init_b_cache/manifest ( cd $BUILD_ROOT && chroot $BUILD_ROOT rpm --ignorearch --nodeps -Uh --oldpackage --ignoresize --verbose $RPMCHECKOPTS \ $ADDITIONAL_PARAMS .init_b_cache/manifest 2>&1 || touch $BUILD_ROOT/exit ) for ((num=0; num<=cumulate; num++)) ; do rm -f $BUILD_ROOT/${CUMULATED_LIST[$num]} done rm -f $BUILD_ROOT/.init_b_cache/manifest check_exit for ((num=0; num<=cumulate; num++)) ; do PKG=${CUMULATED_LIST[$num]##*/} echo "${CUMULATED_PIDS[$num]}" > $BUILD_ROOT/installed-pkg/${PKG%.rpm} test -n "${CUMULATED_HMD5[$num]}" || continue echo "${CUMULATED_HMD5[$num]} ${CUMULATED_PIDS[$num]}" > $BUILD_ROOT/.preinstall_image/${PKG%.rpm} done fi } pkg_preinstall_rpm() { PAYLOADDECOMPRESS=cat case `rpm -qp --nodigest --nosignature --qf "%{PAYLOADCOMPRESSOR}\n" "$BUILD_INIT_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 test -f "$BUILD_DIR/lzmadec.sh" || cleanup_and_exit 3 "no lzma decoder available in host system" PAYLOADDECOMPRESS="bash $BUILD_DIR/lzmadec.sh" fi fi if test "$PAYLOADDECOMPRESS" = "xz -d" ; then if ! xz /dev/null 2>&1 ; then test -f "$BUILD_DIR/xzdec.sh" || cleanup_and_exit 3 "no xz decoder available in host system" 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" || cleanup_and_exit 3 "no zstd decoder available in host system" PAYLOADDECOMPRESS="bash $BUILD_DIR/zstddec.sh" fi fi mkdir -p "$BUILD_INIT_CACHE/scripts" if test "$PAYLOADDECOMPRESS" = cat ; then rpm2cpio "$BUILD_INIT_CACHE/rpms/$PKG.rpm" | $CPIO || cleanup_and_exit 1 else rpm2cpio "$BUILD_INIT_CACHE/rpms/$PKG.rpm" | $PAYLOADDECOMPRESS | $CPIO || cleanup_and_exit 1 fi test -L "$BUILD_INIT_CACHE/scripts" && cleanup_and_exit 1 rm -rf "$BUILD_INIT_CACHE/scripts/$PKG.pre" "$BUILD_INIT_CACHE/scripts/$PKG.preprog" "$BUILD_INIT_CACHE/scripts/$PKG.post" "$BUILD_INIT_CACHE/scripts/$PKG.postprog" if test -e "$BUILD_INIT_CACHE/scripts/$PKG.run" ; then rpm -qp --nodigest --nosignature --qf "%{PREIN}" "$BUILD_INIT_CACHE/rpms/$PKG.rpm" > "$BUILD_INIT_CACHE/scripts/$PKG.pre" rpm -qp --nodigest --nosignature --qf "%{PREINPROG}" "$BUILD_INIT_CACHE/rpms/$PKG.rpm" > "$BUILD_INIT_CACHE/scripts/$PKG.preprog" rpm -qp --nodigest --nosignature --qf "%{POSTIN}" "$BUILD_INIT_CACHE/rpms/$PKG.rpm" > "$BUILD_INIT_CACHE/scripts/$PKG.post" rpm -qp --nodigest --nosignature --qf "%{POSTINPROG}" "$BUILD_INIT_CACHE/rpms/$PKG.rpm" > "$BUILD_INIT_CACHE/scripts/$PKG.postprog" rm -f "$BUILD_INIT_CACHE/scripts/.none" echo -n '(none)' > "$BUILD_INIT_CACHE/scripts/.none" cmp -s "$BUILD_INIT_CACHE/scripts/$PKG.pre" "$BUILD_INIT_CACHE/scripts/.none" && rm -f "$BUILD_INIT_CACHE/scripts/$PKG.pre" cmp -s "$BUILD_INIT_CACHE/scripts/$PKG.post" "$BUILD_INIT_CACHE/scripts/.none" && rm -f "$BUILD_INIT_CACHE/scripts/$PKG.post" rm -f "$BUILD_INIT_CACHE/scripts/.none" fi # hack for rpm erasures if test -d "$BUILD_ROOT/installed-pkg" -a -z "$PREPARE_VM" ; then # call for rpm-4.x and not rpm-devel test -z "${PKG##rpm-[0-9]*}" && chroot . rpm --rebuilddb # also exec for exchanged rpm ! naming is rpm-x86-- test -z "${PKG##rpm-x86-*[0-9]*}" && chroot . rpm --rebuilddb fi } pkg_runscripts_rpm() { if test -e "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre" ; then echo "running $PKG preinstall script" local prog read prog < "$BUILD_ROOT/.init_b_cache/scripts/$PKG.preprog" (cd $BUILD_ROOT && chroot $BUILD_ROOT "${prog:-sh}" ".init_b_cache/scripts/$PKG.pre" 0) rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre" "$BUILD_ROOT/.init_b_cache/scripts/$PKG.preprog" fi if test -e "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post" ; then echo "running $PKG postinstall script" local prog read prog < "$BUILD_ROOT/.init_b_cache/scripts/$PKG.postprog" (cd $BUILD_ROOT && chroot $BUILD_ROOT "${prog:-sh}" ".init_b_cache/scripts/$PKG.post" 1) rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post" "$BUILD_ROOT/.init_b_cache/scripts/$PKG.postprog" fi } obs-build-20210120/build-recipe000066400000000000000000000152741400202264700161200ustar00rootroot00000000000000# # recipe specific functions for the build script # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BUILDTYPE= KIWI_PARAMETERS= for i in spec dsc kiwi arch collax preinstallimage simpleimage mock livebuild snapcraft debootstrap debbuild appimage docker podman fissile helm flatpak; do . "$BUILD_DIR/build-recipe-$i" done recipe_setup() { recipe_setup_$BUILDTYPE "$@" } recipe_prepare() { recipe_prepare_$BUILDTYPE "$@" } recipe_build() { recipe_build_$BUILDTYPE "$@" } recipe_resultdirs () { recipe_resultdirs_$BUILDTYPE "$@" } recipe_cleanup () { recipe_cleanup_$BUILDTYPE "$@" } recipe_parse_options() { case ${PARAM/#--/-} in -stage) needarg BUILD_RPM_BUILD_STAGE="$ARG" shift ;; -kiwi-parameter) test -z "$ARG" && ARG="$1" needarg KIWI_PARAMETERS="$KIWI_PARAMETERS $ARG" shift ;; -*) return 1 ;; esac nextargs=("$@") return 0 } recipe_set_buildtype() { BUILDTYPE= case ${RECIPEFILE##_service:*:} in *.spec|*.src.rpm) BUILDTYPE=spec ;; *.dsc) BUILDTYPE=dsc ;; *.kiwi) BUILDTYPE=kiwi ;; PKGBUILD) BUILDTYPE=arch ;; snapcraft.yaml) BUILDTYPE=snapcraft ;; appimage.yml) BUILDTYPE=appimage ;; Dockerfile) BUILDTYPE=docker ;; fissile.yml) BUILDTYPE=fissile ;; build.collax) BUILDTYPE=collax ;; _preinstallimage) BUILDTYPE=preinstallimage ;; simpleimage) BUILDTYPE=simpleimage ;; *.livebuild) BUILDTYPE=livebuild ;; Chart.yaml) BUILDTYPE=helm ;; flatpak.yaml) BUILDTYPE=flatpak ;; flatpak.yml) BUILDTYPE=flatpak ;; flatpak.json) BUILDTYPE=flatpak ;; esac if test -z "$BUILDTYPE" ; then cleanup_and_exit 1 "I don't know how to build $RECIPEFILE" fi # we can't query right after vm startup, so we put the BUILDENGINE in the build.data if test -z "$RUNNING_IN_VM" ; then BUILDENGINE= if test -n "$BUILD_DIST" ; then BUILDENGINE=`queryconfig buildengine --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"` test "$BUILDENGINE" = UNDEFINED && BUILDENGINE= fi fi # tweak buildtype according to engine if test "$BUILDENGINE" = mock -a "$BUILDTYPE" = spec ; then BUILDTYPE=mock fi if test "$BUILDENGINE" = debootstrap -a "$BUILDTYPE" = dsc ; then BUILDTYPE=debootstrap fi if test "$BUILDENGINE" = debbuild -a "$BUILDTYPE" = spec ; then BUILDTYPE=debbuild fi if test "$BUILDENGINE" = podman -a "$BUILDTYPE" = docker ; then BUILDTYPE=podman fi } # expands all directories into files expand_recipe_directories() { local f t ff found types if test -z "$RECIPEFILES" ; then set -- "`pwd`" else set -- "${RECIPEFILES[@]}" fi RECIPEFILES=() for f in "$@" ; do if test "$f" = "${f#/}" ; then f="`pwd`/$f" fi if test -d "$f" ; then if test -z "$types" ; then if test -n "$BUILD_DIST" ; then case $(queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" type) in dsc) types=".dsc" ;; kiwi) types=".kiwi" ;; arch) types="PKGBUILD" ;; collax) types="build.collax" ;; livebuild) types=".livebuild" ;; snapcraft) types="snapcraft.yaml" ;; esac fi types="$types .spec .dsc PKGBUILD Dockerfile build.collax .kiwi .src.rpm .nosrc.rpm simpleimage snapcraft.yaml Chart.yaml flatpak.yaml flatpak.json" fi for t in $types ; do found= for ff in "$f"/*$t ; do test -f "$ff" || continue RECIPEFILES=("${RECIPEFILES[@]}" "$ff") found=true done test -n "$found" && break done else RECIPEFILES[${#RECIPEFILES[@]}]="$f" fi done if test -z "$RECIPEFILES" ; then cleanup_and_exit 1 "no recipe files found in $@. exit..." fi } # generate a .build-changelog file from a .changes file recipe_create_changelog() { rm -f $BUILD_ROOT/.build-changelog case $1 in *.dsc) CFFORMAT=debian ;; *) CFFORMAT=rpm ;; esac # add --emailonly option for sles builds if test "$CFFORMAT" = rpm ; then case `queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" eval '%{?is_opensuse}/%{?!fullname_in_changelog:%{?suse_version}}'` in *[1-9]*/*) ;; */*[1-9]*) CFFORMAT="$CFFORMAT --emailonly" ;; esac fi echo "running changelog2spec --target $CFFORMAT --file $1" if ! $BUILD_DIR/changelog2spec --target $CFFORMAT --file "$1" > $BUILD_ROOT/.build-changelog ; then rm -f $BUILD_ROOT/.build-changelog fi } recipe_needs_build_binaries() { test "$BUILDTYPE" = mock && return 0 test "$BUILDTYPE" = debootstrap && return 0 test "$BUILDTYPE" = livebuild && return 0 test "$BUILDTYPE" = snapcraft && return 0 test "$BUILDTYPE" = appimage && return 0 test "$BUILDTYPE" = docker && return 0 test "$BUILDTYPE" = fissile && return 0 test "$BUILDTYPE" = podman && return 0 grep -E '^#[[:blank:]]*needsbinariesforbuild[[:blank:]]*$' >/dev/null <"$1" && return 0 return 1 } recipe_build_time_statistics() { 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= fi } recipe_gendiff() { local obsgendiff=$(queryconfig \ --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" \ --archpath "$BUILD_ARCH" buildflags obsgendiff ) if test -n "$obsgendiff"; then if test -d "$BUILD_ROOT/usr/lib/build/obsgendiff.d"; then for script in "$BUILD_ROOT"/usr/lib/build/obsgendiff.d/*; do if test -x "$script" && ! chroot "$BUILD_ROOT" "/usr/lib/build/obsgendiff.d/${script##*/}" ; then cleanup_and_exit 1 "/usr/lib/build/obsgendiff.d/${script##*/} script failed!" fi done else cleanup_and_exit 1 "obsgendiff enabled but no script installed" fi fi } obs-build-20210120/build-recipe-appimage000066400000000000000000000101241400202264700176660ustar00rootroot00000000000000################################################################# # # AppImage specific functions. # # Author: Adrian Schroeter # ################################################################ # # Copyright (c) 2017 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_appimage() { TOPDIR=/usr/src/packages test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" for i in OTHER SOURCES APPIMAGE_ROOT ; do mkdir -p "$BUILD_ROOT$TOPDIR/$i" done chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi rawcfgmacros=.rpmmacros test "$BUILDTYPE" = debbuild && rawcfgmacros=.debmacros queryconfig rawmacros --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" > $BUILD_ROOT/root/$rawcfgmacros } recipe_prepare_appimage() { : } # Variables: # $BUILD_ROOT is the chroot # $TOPDIR/SOURCES includes the appimages sources # $TOPDIR/$APPIMAGE_ROOT where appimage will be called # $RECIPEFILE the name of the appimage.yml config file recipe_build_appimage() { local ARCH DEB if [ -x "$BUILD_ROOT/bin/rpm" ]; then ARCH=$(chroot $BUILD_ROOT su -c "rpm --eval '%{_target_cpu}'") else ARCH=$(chroot $BUILD_ROOT su -c "dpkg-architecture -qDEB_BUILD_ARCH") DEB=1 fi local DIST="OBS" test -z "${ARCH}" -o -z "${DIST}" && cleanup_and_exit 1 test -d $BUILD_ROOT/.build.binaries || cleanup_and_exit 1 "missing $BUILD_ROOT/.build.binaries" if test "$DO_INIT" = true; then if test -n "$DEB" -a ! -d "$BUILD_ROOT/.build.binaries/dists" ; then echo "creating debian repository metadata..." createrepo_debian $BUILD_ROOT/.build.binaries ${ARCH} ${DIST} # setup /etc/apt/sources.list mkdir -p "$BUILD_ROOT/etc/apt" echo "deb [trusted=yes] file:/.build.binaries OBS main" >> "$BUILD_ROOT/etc/apt/sources.list" fi if test -z "$DEB" -a ! -d "$BUILD_ROOT/.build.binaries/repodata" ; then echo "creating repository metadata..." if chroot "$BUILD_ROOT" test -x /usr/bin/createrepo_c; then chroot "$BUILD_ROOT" /usr/bin/createrepo_c /.build.binaries elif chroot "$BUILD_ROOT" test -x /usr/bin/createrepo; then chroot "$BUILD_ROOT" /usr/bin/createrepo /.build.binaries else cleanup_and_exit 1 "No createrepo found in build root" fi fi fi release_option="" if test -n "$RELEASE" ; then release_option="--release $RELEASE" fi chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && ARCH=$ARCH /usr/lib/appimagetool/pkg2appimage $release_option" - root \ || cleanup_and_exit 1 # extract build result basenames local build_results="" for i in $BUILD_ROOT/$TOPDIR/OTHER/* ; do test -f "$i" || continue case "${i##*/}" in *.AppImage|*.AppImage.digest|*.AppImage.zsync) build_results="${build_results}\n${i%%.snap}" ;; *) ;; esac done # Fail the build if no build results are found if [ -z "${build_results}" ] ; then cleanup_and_exit 1 "No live-build result found" fi BUILD_SUCCEEDED=true } recipe_resultdirs_appimage() { : } recipe_cleanup_appimage() { : } # Local Variables: # mode: Shell-script # End: obs-build-20210120/build-recipe-arch000066400000000000000000000040621400202264700170240ustar00rootroot00000000000000# # Arch specific functions. # ################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_arch() { TOPDIR=/usr/src/packages test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR/OTHER" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES" mkdir -p "$BUILD_ROOT/$TOPDIR/ARCHPKGS" mkdir -p "$BUILD_ROOT/$TOPDIR/BUILD" chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ { echo 'source /etc/makepkg.conf' printf '%s=%s\n' \ BUILDDIR $TOPDIR/BUILD \ PKGDEST $TOPDIR/ARCHPKGS } > $BUILD_ROOT$TOPDIR/makepkg.conf } recipe_prepare_arch() { echo "Preparing sources..." if ! _arch_recipe_makepkg -so --skippgpcheck "2>&1" ">/dev/null" ; then cleanup_and_exit 1 "failed to prepare sources" fi } recipe_build_arch() { # Build binary and source package _arch_recipe_makepkg -ef < /dev/null && \ _arch_recipe_makepkg -ef --allsource < /dev/null && \ BUILD_SUCCEEDED=true } recipe_resultdirs_arch() { echo ARCHPKGS } recipe_cleanup_arch() { : } _arch_recipe_makepkg() { chroot $BUILD_ROOT su -lc "source /etc/profile; cd $TOPDIR/SOURCES && makepkg --config ../makepkg.conf $*" $BUILD_USER } obs-build-20210120/build-recipe-collax000066400000000000000000000027521400202264700173750ustar00rootroot00000000000000# # Copyright 2015 Zarafa B.V. and its licensors # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 or (at your option) any later version. # # 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. # recipe_setup_collax() { TOPDIR="/usr/src/packages" test "$DO_INIT_TOPDIR" != false && rm -Rf "$BUILD_ROOT/$TOPDIR" mkdir -p "$BUILD_ROOT/$TOPDIR"/{SOURCES,SOURCES.DEB,DEBS,OTHER} cp -p "$MYSRCDIR"/* "$BUILD_ROOT/$TOPDIR/SOURCES/" chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT/$TOPDIR" } recipe_prepare_collax() { DEB_SOURCEDIR="$TOPDIR/SOURCES" DEB_DSCFILE="$RECIPEFILE" chmod -v +x "$BUILD_ROOT/$DEB_SOURCEDIR/build.collax" ln -fsv build.collax "$BUILD_ROOT/$DEB_SOURCEDIR/build" } collax_build() { local buildroot="$1" chroot "$buildroot" su - $BUILD_USER -c \ "cd $TOPDIR/SOURCES && ./build" ret=$? if test "$ret" = 0; then BUILD_SUCCEEDED=true fi } collax_move_build_result() { for f in "$BUILD_ROOT/$DEB_SOURCEDIR"/*.{deb,changes}; do test -f "$f" && mv -v "$f" "$BUILD_ROOT/$TOPDIR/DEBS/" done } recipe_build_collax() { collax_build "$BUILD_ROOT" collax_move_build_result } recipe_resultdirs_collax() { echo DEBS } recipe_cleanup_collax() { : } obs-build-20210120/build-recipe-debbuild000066400000000000000000000033541400202264700176640ustar00rootroot00000000000000# # debbuild specific functions. # ################################################################ # # Copyright (c) 2015 SUSE Linux GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_debbuild() { TOPDIR=`chroot $BUILD_ROOT su -c "debbuild --eval '%_topdir'" - $BUILD_USER` if test -z "$TOPDIR"; then cleanup_and_exit 1 "Error: TOPDIR empty" fi test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR/OTHER" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES" mkdir -p "$BUILD_ROOT$TOPDIR/DEBS" mkdir -p "$BUILD_ROOT$TOPDIR/SDEBS" mkdir -p "$BUILD_ROOT$TOPDIR/BUILD" test -e "$BUILD_ROOT$TOPDIR/SPECS" || ln -s SOURCES "$BUILD_ROOT$TOPDIR/SPECS" chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ } recipe_prepare_debbuild() { recipe_prepare_spec "$@" } recipe_build_debbuild() { recipe_build_spec "$@" } recipe_resultdirs_debbuild() { echo DEBS SDEBS } recipe_cleanup_debbuild() { : } obs-build-20210120/build-recipe-debootstrap000066400000000000000000000101451400202264700204340ustar00rootroot00000000000000# # debootstrap specific functions. # ################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_debootstrap() { recipe_setup_dsc "$@" } recipe_prepare_debootstrap() { recipe_prepare_dsc "$@" } recipe_build_debootstrap() { local arch=$(chroot $BUILD_ROOT su -c "dpkg-architecture -qDEB_BUILD_ARCH") if chroot $BUILD_ROOT grep -q '/sid' /etc/debian_version ; then local dist=unstable else local dist=$(chroot $BUILD_ROOT su -c "lsb_release --codename --short") fi local myroot=debootstraproot test -d $BUILD_ROOT/.build.binaries || cleanup_and_exit 1 if test "$DO_INIT" = true -o ! -d "$BUILD_ROOT/.build.binaries/dists" ; then echo "creating repository for debootstrap..." createrepo_debian $BUILD_ROOT/.build.binaries ${arch} ${dist} fi FULL_PKG_LIST= for PKG in $BUILD_ROOT/.build.binaries/*.deb ; do PKG="${PKG##*/}" FULL_PKG_LIST="$FULL_PKG_LIST,${PKG%.deb}" done FULL_PKG_LIST="${FULL_PKG_LIST#,}" rm -rf "$BUILD_ROOT/$myroot" 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..." if ! "$@" || ! chroot $BUILD_ROOT dpkg --configure -a; then cat $BUILD_ROOT/$myroot/debootstrap/debootstrap.log cleanup_and_exit 1 "Failed to setup debootstrap chroot" fi # adapt passwd if test $BUILD_USER = abuild ; then echo "abuild:x:${ABUILD_UID}:${ABUILD_GID}:Autobuild:/home/abuild:/bin/bash" >>$BUILD_ROOT/$myroot/etc/passwd echo 'abuild:*:::::::' >>$BUILD_ROOT/$myroot/etc/shadow echo 'abuild:*::' >>$BUILD_ROOT/$myroot/etc/gshadow echo "abuild:x:${ABUILD_GID}:" >>$BUILD_ROOT/$myroot/etc/group mkdir -p $BUILD_ROOT/$myroot/home/abuild chown "$ABUILD_UID:$ABUILD_GID" $BUILD_ROOT/$myroot/home/abuild fi if ! test -e $BUILD_ROOT/$myroot/etc/hosts ; then cp $BUILD_ROOT/etc/hosts $BUILD_ROOT/$myroot/etc/hosts fi # Mount special filesystem in the debootstrap build root mount -n -tproc none $BUILD_ROOT/$myroot/proc mount -n -tsysfs -o ro none $BUILD_ROOT/$myroot/sys mount -n -tdevpts -omode=0620,ptmxmode=0666,gid=5,newinstance, none $BUILD_ROOT/$myroot/dev/pts mkdir -p $BUILD_ROOT/$myroot/dev/shm mount -n -ttmpfs none $BUILD_ROOT/$myroot/dev/shm chroot $BUILD_ROOT/$myroot apt-cache gencaches if ! test -e $BUILD_ROOT/$myroot/etc/hosts ; then cp $BUILD_ROOT/etc/hosts $BUILD_ROOT/$myroot/etc/hosts fi # move topdir over mv "$BUILD_ROOT/$TOPDIR" "$BUILD_ROOT/$myroot/${TOPDIR%/*}" # do the build dsc_build "$BUILD_ROOT/$myroot" umount -n $BUILD_ROOT/$myroot/proc/sys/fs/binfmt_misc 2>/dev/null || true umount -n $BUILD_ROOT/$myroot/proc umount -n $BUILD_ROOT/$myroot/sys umount -n $BUILD_ROOT/$myroot/dev/pts umount -n $BUILD_ROOT/$myroot/dev/shm # move topdir back mv "$BUILD_ROOT/$myroot/$TOPDIR" "$BUILD_ROOT/${TOPDIR%/*}" # move result dsc_move_build_result } recipe_resultdirs_debootstrap() { echo DEBS } recipe_cleanup_debootstrap() { : } obs-build-20210120/build-recipe-docker000066400000000000000000000201131400202264700173510ustar00rootroot00000000000000################################################################# # # Docker specific functions. # ################################################################ # # Copyright (c) 2017 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 # ################################################################ DOCKERD_STARTED= recipe_setup_docker() { TOPDIR="/usr/src/packages" test "$DO_INIT_TOPDIR" != false && rm -Rf "$BUILD_ROOT/$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else if test -z "$LINKSOURCES" ; then cp -dLR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -lR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi if test "$?" != 0 ; then cleanup_and_exit 1 "source copy failed" fi fi } recipe_prepare_docker() { : } # Variables: # $BUILD_ROOT is the chroot # $TOPDIR/SOURCES includes the docker sources # $TOPDIR/$DOCKERIMAGE_ROOT where docker will be called # $RECIPEFILE the name of the Dockerfile recipe_build_docker() { touch $BUILD_ROOT/etc/resolv.conf base_image_path= base_image_tag=$(grep "^\s*FROM" "$RECIPEFILE" | head -n 1 | cut -d" " -f2) 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 if ! $BUILD_DIR/startdockerd --root "$BUILD_ROOT" --webserver "$TOPDIR/SOURCES/repos" --webserver-upload "$TOPDIR/SOURCES/repos/UPLOAD" ; then cleanup_and_exit 1 fi fi DOCKERD_STARTED=true 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" 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 rm -rf "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD" if chroot $BUILD_ROOT test -x /usr/bin/createrepo ; then chroot $BUILD_ROOT createrepo "$TOPDIR/SOURCES/repos" >/dev/null fi if chroot $BUILD_ROOT test -x /usr/bin/dpkg-scanpackages ; then chroot $BUILD_ROOT bash -c "cd $TOPDIR/SOURCES/repos && dpkg-scanpackages -m . | gzip > Packages.gz" fi mkdir -p "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD" # find tags, first look into recipe file FIRSTTAG= ALLTAGS= 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" ALLTAGS="$ALLTAGS $t" done fi if test -z "$FIRSTTAG" ; then cleanup_and_exit 1 "please specify a tag for the container" fi ALLTAGS="${ALLTAGS# }" tagargs=() for t in $ALLTAGS; do tagargs[${#tagargs[@]}]='-t' tagargs[${#tagargs[@]}]="$t" done buildargs=() while read kv ; do case "$kv" in [a-zA-Z0-9_]*=*) buildargs[${#buildargs[@]}]='--build-arg' buildargs[${#buildargs[@]}]="$kv" ;; esac done < <( queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" buildflags+ dockerarg ) # patch in obs-docker-support helper patchdockerfile < "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" > "$BUILD_ROOT/$TOPDIR/SOURCES/.$RECIPEFILE" && \ mv "$BUILD_ROOT/$TOPDIR/SOURCES/.$RECIPEFILE" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" test -n "$DISTURL" && echo "LABEL org.openbuildservice.disturl=$DISTURL" >> "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" # now do the build squashopt=--squash if test -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 test -n "$squashopt" && squashopt="--layers=false" if ! $BUILD_DIR/call-podman --root "$BUILD_ROOT" build $squashopt -v "$TOPDIR/SOURCES/repos:$TOPDIR/SOURCES/repos" --network=host "${tagargs[@]}" "${buildargs[@]}" -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[@]}" "${buildargs[@]}" -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 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_TOOL save command failed" fi # Create 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" # copy over .packages files if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/basepackages" ; then cp "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/basepackages" "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.basepackages" fi if test -f "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/packages" ; then cp "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD/packages" "$BUILD_ROOT$TOPDIR/DOCKER/$FILENAME.packages" fi rm -rf "$BUILD_ROOT/$TOPDIR/SOURCES/repos/UPLOAD" # We're done. Clean up. recipe_cleanup_docker BUILD_SUCCEEDED=true } recipe_resultdirs_docker() { echo DOCKER } recipe_cleanup_docker() { if test -n "$DOCKERD_STARTED" ; then test -n "$TOPDIR" && rm -f "$BUILD_ROOT/$TOPDIR/SOURCES/.obs-docker-support" DOCKERD_STARTED= $BUILD_DIR/startdockerd --root "$BUILD_ROOT" --kill fi } # Local Variables: # mode: Shell-script # End: obs-build-20210120/build-recipe-dsc000066400000000000000000000132131400202264700166560ustar00rootroot00000000000000# # dsc specific functions. # ################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_dsc() { TOPDIR=/usr/src/packages test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR/OTHER" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES" mkdir -p "$BUILD_ROOT/$TOPDIR/DEBS" chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ # FIX to work with baselibs_$PROJ etc if test -e "$MYSRCDIR/baselibs-deb.conf" ; then echo "dsc build and baselibs-deb.conf present: forcing --baselibs to true" CREATE_BASELIBS=true fi } recipe_prepare_dsc() { rm -rf "$BUILD_ROOT$TOPDIR/BUILD" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES.DEB" chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" DEB_TRANSFORM= DEB_SOURCEDIR="$TOPDIR/SOURCES" DEB_DSCFILE="$RECIPEFILE" for f in $BUILD_ROOT$TOPDIR/SOURCES/debian.* ; do test -f $f && DEB_TRANSFORM=true done # remove rpm macros (everything after "%") # they are not evaluated by the Debian build process DEB_RELEASE=`sed 's/%.*$//' <<< $RELEASE` OBS_DCH_RELEASE="" if test -n "$DEB_TRANSFORM" ; then CHANGELOGARGS= test -n "$CHANGELOG" -a -f "$BUILD_ROOT/.build-changelog" && CHANGELOGARGS="--changelog $BUILD_ROOT/.build-changelog" echo "Found files matching debian.*, running debian transformer..." if [ "$RELEASE" ]; then echo "release: ($RELEASE), release (DEB) ($DEB_RELEASE)" RELEASEARGS="--release $DEB_RELEASE" fi if ! debtransform $CHANGELOGARGS $RELEASEARGS $BUILD_ROOT$TOPDIR/SOURCES $BUILD_ROOT$TOPDIR/SOURCES/$RECIPEFILE $BUILD_ROOT$TOPDIR/SOURCES.DEB ; then cleanup_and_exit 1 "debian transforming failed." fi DEB_SOURCEDIR=$TOPDIR/SOURCES.DEB for DEB_DSCFILE in $BUILD_ROOT/$DEB_SOURCEDIR/*.dsc ; do : ; done DEB_DSCFILE="${DEB_DSCFILE##*/}" fi chroot $BUILD_ROOT su -c "dpkg-source -x $DEB_SOURCEDIR/$DEB_DSCFILE $TOPDIR/BUILD" - $BUILD_USER # Alternative to debtransform: apply OBS release number if tag OBS-DCH-RELEASE is set. if test -z "$DEB_TRANSFORM" && grep -Eq '^OBS-DCH-RELEASE: 1' $BUILD_ROOT$TOPDIR/SOURCES/$RECIPEFILE; then OBS_DCH_RELEASE="+$DEB_RELEASE" chroot $BUILD_ROOT su -c /bin/sh < /dev/null | grep -E '^Source:' | awk '{ print \$NF }') VERSION=\$(dpkg-parsechangelog 2> /dev/null | grep -E '^Version:' | awk '{ print \$NF }') sed -i "s/\${PACKAGE} (\${VERSION})/\${PACKAGE} (\${VERSION}$OBS_DCH_RELEASE)/" debian/changelog EOF fi } dsc_build() { local buildroot=$1 DSC_BUILD_OPTIONS= if test -n "$BUILD_JOBS" ; then DSC_BUILD_OPTIONS="parallel=${BUILD_JOBS}" fi # Checks to see if a build script should be used # this allows the build environment to be manipulated # and alternate build commands can be used DSC_BUILD_CMD="$(queryconfig --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" substitute dsc:build_cmd)" test -z "$DSC_BUILD_CMD" && DSC_BUILD_CMD="dpkg-buildpackage -us -uc" if test -e $buildroot/$TOPDIR/SOURCES/build.script ; then echo "Sourcing build.script to build - it should normally run 'dpkg-buildpackage -us -uc'" DSC_BUILD_CMD="source $TOPDIR/SOURCES/build.script" chmod +x $buildroot/$TOPDIR/SOURCES/build.script fi chroot $buildroot su -c "export DEB_BUILD_OPTIONS=${DSC_BUILD_OPTIONS} ; cd $TOPDIR/BUILD && $DSC_BUILD_CMD" - $BUILD_USER < /dev/null && BUILD_SUCCEEDED=true if test "$BUILD_SUCCEEDED" = true -a "$DO_CHECKS" != "false" && ( chroot $buildroot su -c "which lintian > /dev/null" - $BUILD_USER < /dev/null ); then DEB_CHANGESFILE=${DEB_DSCFILE%.dsc}$OBS_DCH_RELEASE"_"$(chroot $buildroot su -c 'dpkg-architecture -qDEB_BUILD_ARCH')".changes" chroot $buildroot su -c "cd $TOPDIR && echo Running lintian && (set -x && lintian -i $TOPDIR/$DEB_CHANGESFILE)" - $BUILD_USER < /dev/null || BUILD_SUCCEEDED=false fi } dsc_move_build_result() { local changes for changes in $BUILD_ROOT/$TOPDIR/*.changes ; do while read f ; do mv "$BUILD_ROOT/$TOPDIR/$f" "$BUILD_ROOT/$TOPDIR/DEBS/" done < <(sed -ne '/Files:/,$s/^ ................................ [0-9][0-9]* [^ ]* [^ ]* //p' "$changes") mv "$changes" "$BUILD_ROOT/$TOPDIR/DEBS" done # link used sources over to DEB directory ln $BUILD_ROOT/$DEB_SOURCEDIR/$DEB_DSCFILE $BUILD_ROOT/$TOPDIR/DEBS/ while read f ; do ln $BUILD_ROOT/$DEB_SOURCEDIR/$f $BUILD_ROOT/$TOPDIR/DEBS/ done < <(sed -ne '/^Files:/,$s/^ ................................ [0-9][0-9]* //p' < $BUILD_ROOT/$DEB_SOURCEDIR/$DEB_DSCFILE) } recipe_build_dsc() { dsc_build "$BUILD_ROOT" dsc_move_build_result } recipe_resultdirs_dsc() { echo DEBS } recipe_cleanup_dsc() { : } obs-build-20210120/build-recipe-fissile000066400000000000000000000122231400202264700175430ustar00rootroot00000000000000################################################################# # # Fissile specific functions. # # Author: Tim Hardeck (thardeck@suse.de), Dimitris Karakasilis (dkarakasilis@suse.com) # ################################################################ # # Copyright (c) 2017 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 # ################################################################ DOCKERD_STARTED= recipe_setup_fissile() { TOPDIR="/usr/src/packages" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES" cp -R * $BUILD_ROOT$TOPDIR/SOURCES/ } recipe_prepare_fissile() { : } # Variables: # $BUILD_ROOT is the chroot # $TOPDIR/SOURCES includes the fissile sources # $TOPDIR/$DOCKERIMAGE_ROOT where docker will be called # $RECIPEFILE equals fissile.yml recipe_build_fissile() { touch $BUILD_ROOT/etc/resolv.conf docker_image_path=$(find containers -regextype egrep -regex ".*\.(tgz|tar|tar\.xz|tar\.gz)$" -print -quit) test -f "$docker_image_path" || cleanup_and_exit 1 "docker image not found" if ! $BUILD_DIR/startdockerd --root "$BUILD_ROOT"; then cleanup_and_exit 1 fi DOCKERD_STARTED=true echo "Loading docker image" if test -L "$docker_image_path" ; then # copy into build root cp -L "$docker_image_path" "$docker_image_path.lnk" mv "$docker_image_path.lnk" "$docker_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 $docker_image_path | grep "^manifest.json" -q; then echo "Layered image found" chroot $BUILD_ROOT docker load --input $TOPDIR/SOURCES/$docker_image_path else # We allow more than one docker image dependencies so we can't map # the tarballs to image names (in fissile.yml). Let it break if the # images are not layered but consider some solution based on the tarball # names (TODO) cleanup_and_exit 1 "Docker images are not layered. No way to map to image name/tags." fi cd $BUILD_ROOT/$TOPDIR/SOURCES # Extract the release directory. if [ -f release.tar.xz ]; then tar -xf release.tar.xz else cleanup_and_exit 1 "Couldn't find the release source tarball. Check your _service file if you use one." fi # Move cached bosh tarballs to the directory where fissile will look export FISSILE_CACHE_DIR=/root/.bosh/cache/ mkdir -p $BUILD_ROOT$FISSILE_CACHE_DIR find . -maxdepth 1 -regextype posix-egrep -regex '.{40,}' -exec cp -t $BUILD_ROOT$FISSILE_CACHE_DIR {} + cd release # Extract cached release ymls to their locations. if [ -f ../yml-cache.tar.gz ]; then tar -xf ../yml-cache.tar.gz fi # TODO: Remove this hackery when we use a later runc package (that already provides this symlink) ln -fs /usr/sbin/runc $BUILD_ROOT/usr/bin/docker-runc echo "Building packages with fissile" if ! chroot $BUILD_ROOT /bin/bash -c "cd $TOPDIR/SOURCES/release && . .envrc && fissile build packages --docker-network-mode host"; then cleanup_and_exit 1 "fissile build packages failed" fi echo "Building images with fissile" if ! chroot $BUILD_ROOT /bin/bash -c "cd $TOPDIR/SOURCES/release && . .envrc && fissile build images"; then cleanup_and_exit 1 "fissile build images failed" fi # Save the resulting images to tarballs. mkdir -p $BUILD_ROOT$TOPDIR/FISSILE non_built_images=$(perl -MYAML::XS -e "print join('|', @{YAML::XS::LoadFile('$BUILD_ROOT$TOPDIR/SOURCES/fissile.yml')->{'DockerImageDeps'}})") for image in $(chroot $BUILD_ROOT docker images --format "{{.Repository}}:{{.Tag}}" | grep -v $non_built_images); do echo "Saving image $image" filename=$(echo $image | sed 's/\//_/g') if ! chroot $BUILD_ROOT docker save --output "$TOPDIR/FISSILE/$filename.tar" "$image" ; then cleanup_and_exit 1 "Docker save command failed" fi # Create 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 BUILD_SUCCEEDED=true } recipe_resultdirs_fissile() { echo FISSILE } recipe_cleanup_fissile() { if test -n "$DOCKERD_STARTED" ; then DOCKERD_STARTED= $BUILD_DIR/startdockerd --root "$BUILD_ROOT" --kill fi } # Local Variables: # mode: Shell-script # End: obs-build-20210120/build-recipe-flatpak000066400000000000000000000062541400202264700175360ustar00rootroot00000000000000################################################################# # # Flatpak specific functions. # # Author: Tina Müller # ################################################################ # # Copyright © 2020 SUSE LLC # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # 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; if not, see . # ################################################################ recipe_setup_flatpak() { echo $BUILD_ROOT pwd TOPDIR=/usr/src/packages set -x "$DO_INIT_TOPDIR" && rm -rf "$BUILD_ROOT$TOPDIR" for i in OTHER SOURCES FLATPAK_ROOT ; do mkdir -p "$BUILD_ROOT$TOPDIR/$i" done chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi set +x } recipe_prepare_flatpak() { : } # Variables: # $BUILD_ROOT is the chroot # $TOPDIR/SOURCES includes the sources # $RECIPEFILE the name of the flatpak.(yaml|json) config file recipe_build_flatpak() { echo "===================== recipe_build_flatpak ($@)" set -e mkdir -p "$BUILD_ROOT/var/lib/flatpak/runtime" cd "$BUILD_ROOT/var/lib/flatpak/runtime" # Unpack the tarfiles installed by the rpms local pkg set -x for i in ../tars/*.tar.gz; do echo "Unpacking $i" pkg="$(basename $i)" pkg="${pkg/-*}" [[ -d $pkg ]] || tar xf $i done # env | sort set -x # perl -v # perl -wE'use JSON::PP 99' || true # perl -wE'use YAML::XS 99' || true # perl -wE'use YAML::PP 99' || true # perl -wE'use URI 99' || true ls -l $BUILD_ROOT$TOPDIR/SOURCES cd "$BUILD_ROOT$TOPDIR/FLATPAK_ROOT" cp $BUILD_ROOT$TOPDIR/SOURCES/* . local FLATPAK_FILE="$TOPDIR/SOURCES/$RECIPEFILE" local FLATPAK_APP=$(perl -I$BUILD_DIR -MBuild::Flatpak -e 'Build::Flatpak::show' -- "$BUILD_ROOT$FLATPAK_FILE" name) local FLATPAK_APP_VERSION=$(perl -I$BUILD_DIR -MBuild::Flatpak -e 'Build::Flatpak::show' -- "$BUILD_ROOT$FLATPAK_FILE" version) FLATPAK_APP_VERSION="${FLATPAK_APP_VERSION:-0}" local FLATPAK_REPO=/tmp/flatpakrepo local FLATPAK_REMOTE=https://dl.flathub.org/repo/flathub.flatpakrepo export FLATPAK_REPO export FLATPAK_REMOTE export FLATPAK_APP export FLATPAK_APP_VERSION export FLATPAK_FILE export TOPDIR modprobe fuse chroot "$BUILD_ROOT" su -c "flatpak list" $BUILD_DIR/call-flatpak-builder --root "$BUILD_ROOT" set +x set +e BUILD_SUCCEEDED=true } recipe_resultdirs_flatpak() { : } recipe_cleanup_flatpak() { : } # Local Variables: # mode: Shell-script # End: obs-build-20210120/build-recipe-helm000066400000000000000000000103601400202264700170320ustar00rootroot00000000000000################################################################ # # Copyright (c) 2020 SUSE Linux LLC # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_helm() { TOPDIR="/usr/src/packages" test "$DO_INIT_TOPDIR" != false && rm -Rf "$BUILD_ROOT/$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else if test -z "$LINKSOURCES" ; then cp -dLR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -lR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi if test "$?" != 0 ; then cleanup_and_exit 1 "source copy failed" fi fi chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" } recipe_prepare_helm() { rm -rf "$BUILD_ROOT$TOPDIR/BUILD" mkdir -p "$BUILD_ROOT$TOPDIR/BUILD" cp -dLR "$BUILD_ROOT$TOPDIR/SOURCES/"* "$BUILD_ROOT$TOPDIR/BUILD" chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR/BUILD" cd "$BUILD_ROOT$TOPDIR/BUILD" for i in *.tar *.tgz *.tar.gz *.tar.xz ; do test -e "$i" || continue echo "Unpacking $i ..." echo "#!/bin/sh -e" > $BUILD_ROOT/.unpack.command shellquote cd "$TOPDIR/BUILD" >> $BUILD_ROOT/.unpack.command echo >> $BUILD_ROOT/.unpack.command echo -n 'tar -x --owner="'$BUILD_USER'" -f ' >> $BUILD_ROOT/.unpack.command shellquote "$i" >> $BUILD_ROOT/.unpack.command echo >> $BUILD_ROOT/.unpack.command shellquote rm -f "$i" >> $BUILD_ROOT/.unpack.command echo >> $BUILD_ROOT/.unpack.command chmod 0755 $BUILD_ROOT/.unpack.command chroot $BUILD_ROOT su -c /.unpack.command - $BUILD_USER || cleanup_and_exit 1 rm -f $BUILD_ROOT/.unpack.command rm -f "$i" ls -l done } recipe_build_helm() { cd "$BUILD_ROOT$TOPDIR/BUILD" mkdir -p "$BUILD_ROOT$TOPDIR/HELM" chown "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR/HELM" # extract data from chart file args=() test -n "$DISTURL" && args=("${args[@]}" --disturl "$DISTURL") test -n "$RELEASE" && args=("${args[@]}" --release "$RELEASE") local name=$(perl -I$BUILD_DIR -MBuild::Helm -e 'Build::Helm::show' -- "${args[@]}" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" name) local version=$(perl -I$BUILD_DIR -MBuild::Helm -e 'Build::Helm::show' -- "${args[@]}" "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" version) local nameversion="$name-$version" # avoid packaging sources services and changes files (also include content from _helmignore) chroot $BUILD_ROOT su -c "(cd $TOPDIR/BUILD; [ -f _helmignore ] && mv -f _helmignore .helmignore; echo -e '/*.changes\n/_*\n' >> .helmignore; )" - $BUILD_USER || cleanup_and_exit 1 # create chart chroot $BUILD_ROOT su -c "cd $TOPDIR/BUILD && helm package -d $TOPDIR/HELM ." - $BUILD_USER || cleanup_and_exit 1 test -f "$BUILD_ROOT$TOPDIR/HELM/$nameversion.tgz" || cleanup_and_exit 1 "helm package command did not create $nameversion.tgz" # extract generated Chart.yaml file tar -xOf "$BUILD_ROOT$TOPDIR/HELM/$nameversion.tgz" -- "$name/Chart.yaml" > "$BUILD_ROOT$TOPDIR/HELM/Chart.yaml" test -s "$BUILD_ROOT$TOPDIR/HELM/Chart.yaml" || cleanup_and_exit 1 "helm chart does not contain $name/Chart.yaml" # generate helminfo perl -I$BUILD_DIR -MBuild::Helm -e 'Build::Helm::show' -- "${args[@]}" --origrecipe "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" --chart "$BUILD_ROOT$TOPDIR/HELM/$nameversion.tgz" "$BUILD_ROOT$TOPDIR/HELM/Chart.yaml" helminfo > "$BUILD_ROOT$TOPDIR/HELM/$nameversion.helminfo" || cleanup_and_exit 1 rm -f "$BUILD_ROOT$TOPDIR/HELM/Chart.yaml" BUILD_SUCCEEDED=true } recipe_resultdirs_helm() { echo HELM } recipe_cleanup_helm() { : } obs-build-20210120/build-recipe-kiwi000066400000000000000000000771731400202264700170670ustar00rootroot00000000000000# # KIWI specific functions. Handle with care. # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ ############################################################ # post scriptlet generation functions for legacy bundling # # used for kiwi versions below 5.06.106 that do not support # a bundling method # kiwi_post_oem() { cat <<-EOF echo "compressing oem images... " cd /$TOPDIR/KIWI-oem # do not store compressed file _and_ uncompressed one [ -e "$imageout.gz" ] && rm -f "$imageout" if [ -e "$imageout.iso" ]; then echo "take iso file and create sha256..." mv "$imageout.iso" "/$TOPDIR/KIWI/$imageout$buildnum.iso" pushd /$TOPDIR/KIWI if [ -x /usr/bin/sha256sum ]; then /usr/bin/sha256sum "$imageout$buildnum.iso" > "$imageout$buildnum.iso.sha256" fi popd fi if [ -e "$imageout.install.iso" ]; then echo "take install.iso file and create sha256..." mv "$imageout.install.iso" "/$TOPDIR/KIWI/$imageout$buildnum.install.iso" pushd /$TOPDIR/KIWI if [ -x /usr/bin/sha256sum ]; then /usr/bin/sha256sum "$imageout$buildnum.install.iso" > "$imageout$buildnum.install.iso.sha256" fi popd fi if [ -e "$imageout.qcow2" ]; then mv "$imageout.qcow2" "/$TOPDIR/KIWI/$imageout$buildnum.qcow2" pushd /$TOPDIR/KIWI if [ -x /usr/bin/sha256sum ]; then echo "Create sha256 file..." /usr/bin/sha256sum "$imageout$buildnum.qcow2" > "$imageout$buildnum.qcow2.sha256" fi popd fi if [ -e "$imageout.raw.install.raw" ]; then compress_tool="bzip2" compress_suffix="bz2" if [ -x /usr/bin/xz ]; then # take xz to get support for sparse files compress_tool="xz -2" compress_suffix="xz" fi mv "$imageout.raw.install.raw" "/$TOPDIR/KIWI/$imageout$buildnum.raw.install.raw" pushd /$TOPDIR/KIWI echo "\$compress_tool raw.install.raw file..." \$compress_tool "$imageout$buildnum.raw.install.raw" if [ -x /usr/bin/sha256sum ]; then echo "Create sha256 file..." /usr/bin/sha256sum "$imageout$buildnum.raw.install.raw.\${compress_suffix}" > "$imageout$buildnum.raw.install.raw.\${compress_suffix}.sha256" fi popd fi if [ -e "$imageout.raw" ]; then compress_tool="bzip2" compress_suffix="bz2" if [ -x /usr/bin/xz ]; then # take xz to get support for sparse files compress_tool="xz -2" compress_suffix="xz" fi mv "$imageout.raw" "/$TOPDIR/KIWI/$imageout$buildnum.raw" pushd /$TOPDIR/KIWI echo "\$compress_tool raw file..." \$compress_tool "$imageout$buildnum.raw" if [ -x /usr/bin/sha256sum ]; then echo "Create sha256 file..." /usr/bin/sha256sum "$imageout$buildnum.raw.\${compress_suffix}" > "$imageout$buildnum.raw.\${compress_suffix}.sha256" fi popd fi EOF } kiwi_post_vmx() { cat <<-EOF echo "compressing vmx images... " cd /$TOPDIR/KIWI-vmx compress_tool="bzip2" compress_suffix="bz2" if [ -x /usr/bin/xz ]; then # take xz to get support for sparse files compress_tool="xz -2" compress_suffix="xz" fi VMXFILES="" SHAFILES="" for suffix in "ovf" "qcow2" "ova" "tar" "vhdfixed" "vhd"; do if [ -e "$imageout.\$suffix" ]; then if [ "\$suffix" == "vhd" -o "\$suffix" == "vhdfixed" ]; then mv "$imageout.\$suffix" "/$TOPDIR/KIWI/$imageout$buildnum.\$suffix" pushd /$TOPDIR/KIWI echo "\$compress_tool \$suffix file..." \$compress_tool "$imageout$buildnum.\$suffix" SHAFILES="\$SHAFILES $imageout$buildnum.\$suffix.\${compress_suffix}" popd elif [ "\$suffix" == "ovf" ]; then mv "$imageout.\${suffix}/$imageout.\$suffix" "/$TOPDIR/KIWI/$imageout$buildnum.\$suffix" SHAFILES="\$SHAFILES $imageout$buildnum.\$suffix" else mv "$imageout.\$suffix" "/$TOPDIR/KIWI/$imageout$buildnum.\$suffix" SHAFILES="\$SHAFILES $imageout$buildnum.\$suffix" fi fi done # This option has a number of format parameters for i in "$imageout.vmx" "$imageout.vmdk" "$imageout-disk*.vmdk"; do test -e \$i && VMXFILES="\$VMXFILES \$i" done # take raw files as fallback if [ -n "\$VMXFILES" ]; then tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx.tar.bz2" \$VMXFILES SHAFILES="\$SHAFILES $imageout$buildnum-vmx.tar.bz2" elif [ -z "\$SHAFILES" -a -e "$imageout.raw" ]; then mv "$imageout.raw" "/$TOPDIR/KIWI/$imageout$buildnum-vmx.raw" pushd /$TOPDIR/KIWI echo "\$compress_tool raw file..." \$compress_tool "$imageout$buildnum-vmx.raw" SHAFILES="\$SHAFILES $imageout$buildnum-vmx.raw.\${compress_suffix}" popd fi if [ -e "$imageout.box" ]; then tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx-box.tar.bz2" $imageout.box $imageout.json SHAFILES="\$SHAFILES $imageout$buildnum-vmx-box.tar.bz2" fi if [ -e "$imageout.xenconfig" ]; then tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx.tar.bz2" $imageout.xenconfig $imageout.raw initrd-* SHAFILES="\$SHAFILES $imageout$buildnum-vmx.tar.bz2" fi # FIXME: do we need a single .raw file in any case ? cd /$TOPDIR/KIWI if [ -n "\$SHAFILES" -a -x /usr/bin/sha256sum ]; then for i in \$SHAFILES; do echo "Create sha256 file..." /usr/bin/sha256sum "\$i" > "\$i.sha256" done fi tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-raw.tar.bz2" \ --exclude="$imageout.iso" --exclude="$imageout.raw" --exclude="$imageout.qcow2" * cd /$TOPDIR/KIWI if [ -x /usr/bin/sha256sum ]; then /usr/bin/sha256sum "$imageout$buildnum-raw.tar.bz2" > "$imageout$buildnum-raw.tar.bz2.sha256" fi EOF } kiwi_post_xen() { cat <<-EOF echo "compressing xen images... " cd /$TOPDIR/KIWI-xen # do not store compressed file _and_ uncompressed one [ -e "$imageout.gz" ] && rm -f "$imageout" tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-xen.tar.bz2" \ `grep ^kernel $imageout.xenconfig | cut -d'"' -f2` \ `grep ^ramdisk $imageout.xenconfig | cut -d'"' -f2` \ initrd-* \ "$imageout.xenconfig" \ "$imageout" if [ -x /usr/bin/sha256sum ]; then echo "Create sha256 file..." cd $TOPDIR/KIWI /usr/bin/sha256sum "$imageout$buildnum-xen.tar.bz2" > "$imageout$buildnum-xen.tar.bz2.sha256" fi EOF } kiwi_post_pxe() { cat <<-EOF echo "compressing pxe images... " cd /$TOPDIR/KIWI-pxe # do not store compressed file _and_ uncompressed one [ -e "$imageout.gz" ] && rm -f "$imageout" tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-pxe.tar.bz2" ${imageout}* initrd-* if [ -x /usr/bin/sha256sum ]; then echo "Create sha256 file..." cd $TOPDIR/KIWI /usr/bin/sha256sum "$imageout$buildnum-pxe.tar.bz2" > "$imageout$buildnum-pxe.tar.bz2.sha256" fi EOF } kiwi_post_iso() { cat <<-EOF cd /$TOPDIR/KIWI-iso for i in *.iso; do mv "\$i" "/$TOPDIR/KIWI/\${i%.iso}$buildnum.iso" done if [ -x /usr/bin/sha256sum ]; then echo "creating sha256 sum for iso images... " cd $TOPDIR/KIWI for i in *.iso; do /usr/bin/sha256sum "\$i" > "\$i.sha256" done fi EOF } kiwi_post_tbz() { cat <<-EOF cd /$TOPDIR/KIWI-tbz for i in *.tbz; do file=\$(readlink -f "\$i") [ -z "\$file" ] && echo readlink failed for $i mv "\$file" "/$TOPDIR/KIWI/\${i%.tbz}$buildnum.tbz" done if [ -x /usr/bin/sha256sum ]; then echo "creating sha256 sum for tar balls... " cd $TOPDIR/KIWI for i in *.tbz; do /usr/bin/sha256sum "\$i" > "\$i.sha256" done fi EOF } kiwi_post_unknown() { cat <<-EOF echo "compressing unkown images... " cd /$TOPDIR/KIWI-$imgtype # do not store compressed file _and_ uncompressed one [ -e "$imageout.gz" ] && rm -f "$imageout" tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-$imgtype.tar.bz2" * if [ -x /usr/bin/sha256sum ]; then echo "Create sha256 file..." cd /$TOPDIR/KIWI /usr/bin/sha256sum "$imageout$buildnum-$imgtype.tar.bz2" > "$imageout$buildnum-$imgtype.tar.bz2.sha256" fi EOF } legacy_image_bundle() { # create tar.gz of images, in case it makes sense buildnum= if test -n "$RELEASE"; then buildnum="-Build$RELEASE" fi imagearch=`uname -m` imageout="$imagename.$imagearch-$imageversion" for imgtype in $imagetype ; do case "$imgtype" in oem) kiwi_post_oem > $BUILD_ROOT/kiwi_post.sh ;; vmx) kiwi_post_vmx > $BUILD_ROOT/kiwi_post.sh ;; xen) kiwi_post_xen > $BUILD_ROOT/kiwi_post.sh ;; pxe) kiwi_post_pxe > $BUILD_ROOT/kiwi_post.sh ;; iso) kiwi_post_iso > $BUILD_ROOT/kiwi_post.sh ;; tbz) kiwi_post_tbz > $BUILD_ROOT/kiwi_post.sh ;; *) kiwi_post_unknown > $BUILD_ROOT/kiwi_post.sh ;; esac cat >> $BUILD_ROOT/kiwi_post.sh <<-EOF cd /$TOPDIR/KIWI-$imgtype if [ -e "$imageout.channel" ]; then echo "Found kiwi channel list file, exporting as well..." cp "$imageout.channel" "/$TOPDIR/OTHER/$imageout$buildnum-$imgtype.channel" fi if [ -e "$imageout.packages" ]; then echo "Found kiwi package list file, exporting as well..." cp "$imageout.packages" "/$TOPDIR/OTHER/$imageout$buildnum-$imgtype.packages" fi if [ -e "$imageout.verified" ]; then echo "Found rpm verification report, exporting as well..." cp "$imageout.verified" "/$TOPDIR/OTHER/$imageout$buildnum-$imgtype.verified" fi EOF chroot $BUILD_ROOT su -c "sh -e /kiwi_post.sh" || cleanup_and_exit 1 rm -f $BUILD_ROOT/kiwi_post.sh done } ############################################################ recipe_setup_kiwi() { TOPDIR=/usr/src/packages test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR" mkdir -p "$BUILD_ROOT$TOPDIR/OTHER" mkdir -p "$BUILD_ROOT$TOPDIR/SOURCES" mkdir -p "$BUILD_ROOT$TOPDIR/KIWI" # compat, older build versions did not clean TOPDIR ... mkdir -p "$BUILD_ROOT$TOPDIR/BUILD" mkdir -p "$BUILD_ROOT$TOPDIR/RPMS" mkdir -p "$BUILD_ROOT$TOPDIR/SRPMS" chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else if test -z "$LINKSOURCES" ; then cp -dLR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -lR "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi if test "$?" != 0 ; then cleanup_and_exit 1 "source copy failed" fi fi # extract macros from configuration # some post scripts might call rpm-build and rely on the macros queryconfig rawmacros --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" > $BUILD_ROOT/root/.rpmmacros } recipe_prepare_kiwi() { : } ## obsolete with current kiwi versions, only needed for kiwi 3.01 version run_suse_isolinux() { for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do test -d "$i" || continue i="${i##*/}" test "$i" = scripts && continue test "$i" != "${i%0}" && continue chroot $BUILD_ROOT su -c "suse-isolinux $TOPDIR/KIWIROOT/main/$i $TOPDIR/KIWI/$i.iso" - $BUILD_USER done } perform_product_bundle() { local milestone=$(kiwi_query_recipe milestone) pushd $BUILD_ROOT/$TOPDIR/KIWIROOT/main for i in * ; do test -e "$i" || continue case $i in *.iso) if [ -x /usr/bin/sha256sum ]; then /usr/bin/sha256sum "$i" > "$i.sha256" mv "$i.sha256" $BUILD_ROOT/$TOPDIR/KIWI/. fi mv "$i" $BUILD_ROOT/$TOPDIR/KIWI/. test -n "$milestone" && echo "$milestone" > $BUILD_ROOT/$TOPDIR/OTHER/${i%.iso}.milestone ;; *.packages) 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) ;; *) if test -d $i -a "$drop_repo" != true; then mv $i $BUILD_ROOT/$TOPDIR/KIWI/. test -n "$milestone" && echo "$milestone" > $BUILD_ROOT/$TOPDIR/OTHER/${i}.milestone fi ;; esac done popd } build_kiwi_product() { echo "running product builder..." # runs always as abuild user mkdir -p "$BUILD_ROOT/$TOPDIR/KIWIROOT" # 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 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'"` test -n "$ver" || ver=`chroot "$BUILD_ROOT" su -c "/usr/sbin/kiwi --version | sed -n 's,.* vnr: \(.*\),\1,p'"` if test "${ver:0:1}" == "3" ; then # old style kiwi 3 builds chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v --logfile terminal -p $TOPDIR/SOURCES --instsource-local --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true test ${ver:2:2} == "01" && run_suse_isolinux else VERBOSE_OPTION="-v 2" # broken kiwi version, not accepting verbose level test "${ver:0:1}" == "4" -a "${ver:2:2}" -lt 90 && VERBOSE_OPTION="-v -v" chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT $VERBOSE_OPTION --logfile terminal -p $TOPDIR/SOURCES --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true fi fi # move created product to destination # NOTE: older kiwi versions exit also in error case with 0 if test "$BUILD_SUCCEEDED" = true ; then perform_product_bundle fi } perform_image_build() { local imgtype=$1 local profile=$2 # When people test mixed build with legacy and new kiwi version # the zypper cache was used in different ways. Therefore this # needs a cleanup before the build starts if test -d "$BUILD_ROOT/var/cache/kiwi/zypper" ; then echo "cleaning up zypper image build cache" rm -rf $BUILD_ROOT/var/cache/kiwi/zypper fi # Do not use $BUILD_USER here, since we always need root permissions if test "$kiwi_legacy" = true ; then # old kiwi, do a prepare and a create call local prepare_call echo "running kiwi prepare for $imgtype${profile:+, profile $profile}..." prepare_call="cd $TOPDIR/SOURCES && rm -rf $TOPDIR/KIWIROOT-$imgtype" prepare_call="$prepare_call && $kiwi_path --logfile terminal" prepare_call="$prepare_call --prepare $TOPDIR/SOURCES" prepare_call="$prepare_call --root $TOPDIR/KIWIROOT-$imgtype" test -n "$profile" && prepare_call="$prepare_call --add-profile $profile" prepare_call="$prepare_call $KIWI_PARAMETERS" echo "$prepare_call" chroot $BUILD_ROOT su -c "$prepare_call" - root "$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" ;; # everything else just gues through to kiwi build *) KIWI_BUILD_PARAMETERS="$KIWI_BUILD_PARAMETERS $i" ;; esac done # now add the repo options lasti=0 for i in "${add_repo_url[@]}" ; do local repo_prio="${add_repo_priority[$lasti]}" test -z "$repo_prio" && repo_prio=99 KIWI_BUILD_PARAMETERS="$KIWI_BUILD_PARAMETERS --add-repo $i,${add_repo_type[$lasti]},${add_repo_alias[$lasti]},$repo_prio" let lasti++ done if test -n "$set_repo_url" ; then test -z "$set_repo_priority" && set_repo_priority=99 KIWI_BUILD_PARAMETERS="$KIWI_BUILD_PARAMETERS --set-repo $set_repo_url,$set_repo_type,$set_repo_alias,$set_repo_priority" fi } kiwi_query_recipe() { perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" "$1" "${BUILD_ARCH%%:*}" "$BUILD_FLAVOR" } build_kiwi_appliance() { if test -z "$RUNNING_IN_VM" ; then # NOTE: this must be done with the outer system, because it loads # the dm-mod kernel modules, which needs to fit to the kernel. echo "starting device mapper for kiwi..." test -x /etc/init.d/boot.device-mapper && \ /etc/init.d/boot.device-mapper start fi local kiwi_profile kiwi_profile=$(kiwi_query_recipe profiles) if test -z "$kiwi_profile"; then kiwi_profile=$(queryconfig \ --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" \ --archpath "$BUILD_ARCH" buildflags kiwiprofile ) fi if test -z "$kiwi_profile"; then kiwi_profile=__not__set fi if test "$kiwi_profile" = __excluded ; then cleanup_and_exit 1 "none of the selected profiles can be built on this architecture" fi local kiwi_path=/usr/bin/kiwi kiwi_legacy=false if ! test -L "$BUILD_ROOT/usr/bin/kiwi" ; then kiwi_path=/usr/sbin/kiwi kiwi_legacy=true fi if test "$kiwi_legacy" != true ; then kiwi_translate_parameters fi local dep rpm_db_backend for dep in $(kiwi_query_recipe deps) ; do test rpm-ndb = "$dep" && rpm_db_backend=ndb done if test -n "$rpm_db_backend" ; then cp $BUILD_ROOT/root/.rpmmacros $BUILD_ROOT/root/.rpmmacros.save echo "configuring $rpm_db_backend database for image builds" echo "%_db_backend $rpm_db_backend" >> $BUILD_ROOT/root/.rpmmacros fi local run_bundle=true for imgtype in $imagetype ; do for prof in ${kiwi_profile//,/ } ; do test "$prof" = __not__set && prof= perform_image_build $imgtype $prof if perform_image_bundle $imgtype $prof ; then # bundling successful, skip legacy bundler run_bundle= fi done done BUILD_SUCCEEDED=true if test -n "$rpm_db_backend" ; then mv $BUILD_ROOT/root/.rpmmacros.save $BUILD_ROOT/root/.rpmmacros fi if test -n "$run_bundle"; then # results are not bundled yet legacy_image_bundle fi local milestone=$(kiwi_query_recipe milestone) if test -n "$milestone"; then for i in $BUILD_ROOT/$TOPDIR/KIWI/*.packages; do test -e "$i" || continue echo "$milestone" > "${i%.packages}.milestone" done fi } postprocess_kiwi_containers() { local r # uncompress containers, the compression is useless and just slows down further processing for r in $BUILD_ROOT/$TOPDIR/KIWI/*.tar.xz ; do test -e "$r" || continue r="${r%.xz}" xzdec <"$r.xz" >"$r" || cleanup_and_exit 1 "xzdec failed" if test -e "$r.xz.sha256" ; then # also generate sha256sum (cd "$BUILD_ROOT/$TOPDIR/KIWI" && sha256sum "${r##*/}") > "$r.sha256" fi rm -f "$r.xz" "$r.xz.sha256" done # create container info 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 -- "${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() { imagetype=$(kiwi_query_recipe imagetype) imagename=$(kiwi_query_recipe filename) imageversion=$(kiwi_query_recipe version) drop_repo=$(kiwi_query_recipe drop_repository) if test -z "$imagetype" ; then cleanup_and_exit 1 "no imagetype set for this architecture/profile" fi # prepare rpms as source and createrepo on the repositories 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" else chroot $BUILD_ROOT createrepo "$repo" fi fi fi done # unpack root tar for t in $BUILD_ROOT/$TOPDIR/SOURCES/root.tar* ; do test -f $t || continue mkdir -p $BUILD_ROOT/$TOPDIR/SOURCES/root chroot $BUILD_ROOT tar -C $TOPDIR/SOURCES/root -xf "$TOPDIR/SOURCES/${t##*/}" done # fix script permissions chmod a+x $BUILD_ROOT/$TOPDIR/SOURCES/*.sh 2>/dev/null # unpack tar files in image directories if test -d $BUILD_ROOT/$TOPDIR/SOURCES/images ; then ( cd $BUILD_ROOT/$TOPDIR/SOURCES/images for r in */* ; do test -L $r && continue test -d $r || continue for t in $r/root.tar* ; do test -f $t || continue mkdir -p $r/root chroot $BUILD_ROOT tar -C $TOPDIR/SOURCES/images/$r/root -xf "$TOPDIR/SOURCES/images/$r/${t##*/}" done # fix script permissions chmod a+x $BUILD_ROOT/$TOPDIR/SOURCES/images/$r/*.sh 2>/dev/null # create compatibility link for old kiwi versions rc="${r//:/:/}" if test "$rc" != "$r" ; then rl="${rc//[^\/]}" rl="${rl//?/../}" mkdir -p "${rc%/*}" ln -s $rl$r "${rc%/*}/${rc##*/}" fi done ) fi rm -f $BUILD_ROOT/$TOPDIR/SOURCES/config.xml ln -s $RECIPEFILE $BUILD_ROOT/$TOPDIR/SOURCES/config.xml if test "$imagetype" = product ; then build_kiwi_product else build_kiwi_appliance fi # Hook for running post kiwi build scripts like QA scripts if installed if test -x $BUILD_ROOT/usr/lib/build/kiwi_post_run ; then if ! chroot $BUILD_ROOT su -c /usr/lib/build/kiwi_post_run ; then cleanup_and_exit 1 "/usr/lib/build/kiwi_post_run script failed!" fi fi # postprocess docker images (but not for legacy kiwi) if test -L "$BUILD_ROOT/usr/bin/kiwi" ; then for imgtype in $imagetype ; do if test "$imgtype" = docker ; then postprocess_kiwi_containers break fi done fi } recipe_resultdirs_kiwi() { echo KIWI } recipe_cleanup_kiwi() { : } obs-build-20210120/build-recipe-livebuild000066400000000000000000000226221400202264700200700ustar00rootroot00000000000000################################################################# # # Debian live-build specific functions. # # Copyright (c) 2014,2015 Brocade Communications Systems, Inc. # Author: Jan Blunck # # This file is part of build. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################# recipe_setup_livebuild() { TOPDIR=/usr/src/packages test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" for i in OTHER SOURCES LIVEBUILD_ROOT ; do mkdir -p "$BUILD_ROOT$TOPDIR/$i" done chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi } recipe_prepare_livebuild() { : } createrepo_debian() { local DIR=${1} local ARCH=${2} local DIST=${3} if [ -z "${DIR}" -o ! -d ${DIR} -o ${DIR} = ${DIR##${BUILD_ROOT}} ] ; then return fi pushd ${DIR} >/dev/null # cleanup existing repository files rm -f Packages Packages.gz Release rm -fr dists mkdir -p dists/${DIST} # create Packages and Sources files mkdir -p dists/${DIST}/main/binary-${ARCH} mkdir -p dists/${DIST}/main/source cat > ${BUILD_ROOT}/.createrepo_debian.tmp.sh <<-EOF cd /.build.binaries || 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 local RESULT=$? rm -f $BUILD_ROOT/.createrepo_debian.tmp.sh [ "${RESULT}" != 0 ] && return # Only add symlinks after running dpkg-scanpackages to avoid # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809219, which is at # least present in the Ubuntu xenial version of dpkg # Suite is symlinked to Codename ln -s ${DIST} dists/stable # create Release file pushd dists/${DIST} >/dev/null cat > Release <<-EOF Origin: Debian Label: Debian Suite: stable Version: 7.1 Codename: ${DIST} Date: Sat, 15 Jun 2013 10:55:26 UTC Description: Debian repository created by build-recipe-livebuild Components: main EOF echo "SHA256:" >> Release for file in main/binary-${ARCH}/Packages* ; do local SUM=( $(sha256sum ${file}) ) local SIZE=$(stat -c '%s' ${file}) echo " ${SUM} ${SIZE} ${file}" >> Release done for file in main/source/Sources* ; do local SUM=( $(sha256sum ${file}) ) local SIZE=$(stat -c '%s' ${file}) echo " ${SUM} ${SIZE} ${file}" >> Release done popd >/dev/null # TODO: this is missing the signature with the private key popd >/dev/null } # This script expects that the $BUILD_ROOT is a Debian installation with # live-build already installed! # # Variables: # $BUILD_ROOT the Debian chroot # $TOPDIR/SOURCES includes the live-build config tarball # $TOPDIR/$LIVEBUILD_ROOT where live-build will be called # $RECIPEFILE the name of the live-build config tarball recipe_build_livebuild() { local ARCH=$(chroot $BUILD_ROOT su -c "dpkg-architecture -qDEB_BUILD_ARCH") local DIST=$(chroot $BUILD_ROOT su -c "lsb_release --codename" | awk '{ print $2 }') local LIVEBUILD_ROOT="LIVEBUILD_ROOT" [ -z "${ARCH}" -o -z "${DIST}" ] && cleanup_and_exit 1 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=845651 # For our use case it makes sense to always return the testing codename, # as creating a dependency on live-build-desc-sid would not make sense. In # the example cited in the above bug, the metadata for sid would be incorrect # anyway, and we would want the ones for potato. if test "${DIST}" = "n/a" ; then DIST=$(chroot $BUILD_ROOT su -c "sed 's/\(.*\)\/.*/\1/' /etc/debian_version") fi test -d $BUILD_ROOT/.build.binaries || cleanup_and_exit 1 if test "$DO_INIT" = true -o ! -d "$BUILD_ROOT/.build.binaries/dists" ; then echo "creating repository metadata..." createrepo_debian $BUILD_ROOT/.build.binaries ${ARCH} ${DIST} fi # Write our default configuration variables mkdir -p $BUILD_ROOT/etc/live cat > $BUILD_ROOT/etc/live/build.conf <<-EOF LB_DEBIAN_INSTALLER_DISTRIBUTION="${DIST}" LB_DISTRIBUTION="${DIST}" LB_PARENT_DISTRIBUTION="${DIST}" LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${DIST}" LB_PARENT_MIRROR_BOOTSTRAP="file:/.build.binaries/" LB_PARENT_MIRROR_CHROOT="file:/.build.binaries/" LB_PARENT_MIRROR_CHROOT_SECURITY="file:/.build.binaries/" LB_PARENT_MIRROR_BINARY="file:/.build.binaries/" LB_PARENT_MIRROR_BINARY_SECURITY="file:/.build.binaries/" LB_PARENT_MIRROR_DEBIAN_INSTALLER="file:/.build.binaries/" LB_MIRROR_BOOTSTRAP="file:/.build.binaries/" LB_MIRROR_CHROOT="file:/.build.binaries/" LB_MIRROR_CHROOT_SECURITY="file:/.build.binaries/" LB_MIRROR_BINARY="file:/.build.binaries/" LB_MIRROR_BINARY_SECURITY="file:/.build.binaries/" LB_MIRROR_DEBIAN_INSTALLER="file:/.build.binaries/" LB_APT_SECURE="false" LIVE_IMAGE_NAME="${RECIPEFILE%.livebuild}" EOF # Expand live-build configuration to $TOPDIR/$LIVEBUILD_ROOT echo "Expanding live-build configuration" tar -xvf $BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE \ -C $BUILD_ROOT/$TOPDIR/$LIVEBUILD_ROOT || cleanup_and_exit 1 # Skip top-level directory if it matches recipe name, ... local files=($BUILD_ROOT/$TOPDIR/$LIVEBUILD_ROOT/*) # ... but ignore some well known names files=(${files[@]%%*/auto}) files=(${files[@]%%*/config}) files=(${files[@]%%*/local}) if [ ${#files[@]} -eq 1 ] && \ [ -d $BUILD_ROOT/$TOPDIR/$LIVEBUILD_ROOT/${RECIPEFILE%.livebuild} ] then LIVEBUILD_ROOT="LIVEBUILD_ROOT/${RECIPEFILE%.livebuild}" fi # Sanity check to not configure archives inside configuration files=($BUILD_ROOT/$TOPDIR/$LIVEBUILD_ROOT/config/archives/*.chroot) if [ ${#files[@]} -gt 0 ]; then cleanup_and_exit 1 "E: No configuration in config/archives/*.chroot allowed" fi # TODO: Add the repository public key # cp ... $BUILD_ROOT/$TOPDIR/$LIVEBUILD_ROOT/config/archives/debian.key if [ -x $BUILD_ROOT/usr/lib/build/livebuild_pre_run ] ; then echo "Running OBS build livebuild_pre_run hook" chroot $BUILD_ROOT su -c \ "export RECIPEFILE=${RECIPEFILE}; /usr/lib/build/livebuild_pre_run" \ - root < /dev/null || cleanup_and_exit 1 fi # TODO: this might move to lb auto/config file if [ -f $BUILD_ROOT/$TOPDIR/SOURCES/livebuild_pre_run ] ; then cp $BUILD_ROOT/$TOPDIR/SOURCES/livebuild_pre_run \ $BUILD_ROOT/.build.livebuild_pre_run chmod +x $BUILD_ROOT/.build.livebuild_pre_run echo "Running package livebuild_pre_run hook" chroot $BUILD_ROOT su -c \ "export RECIPEFILE=${RECIPEFILE}; /.build.livebuild_pre_run" \ - root < /dev/null || cleanup_and_exit 1 fi chroot $BUILD_ROOT su -c "cd $TOPDIR/$LIVEBUILD_ROOT && lb build" - root \ < /dev/null || cleanup_and_exit 1 # extract build result basenames local build_results="" for i in $BUILD_ROOT/$TOPDIR/$LIVEBUILD_ROOT/* ; do test -f "$i" || continue case "${i##*/}" in *.hybrid.iso) build_results="${build_results}\n${i%%.hybrid.iso}" ;; *.iso) build_results="${build_results}\n${i%%.iso}" ;; *ONIE.bin) build_results="${build_results}\n${i%%ONIE.bin}" ;; *.img) build_results="${build_results}\n${i%%.img}" ;; *.netboot.tar*) build_results="${build_results}\n${i%%.netboot.tar*}" ;; *.tar*) build_results="${build_results}\n${i%%.tar*}" ;; *) ;; esac done # Fail the build if no build results are found if [ -z "${build_results}" ] ; then cleanup_and_exit 1 "No live-build result found" fi # 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 f in ${prefix}.* ; do mv ${f} \ $BUILD_ROOT/$TOPDIR/OTHER/${prefix##*/}${buildnum}${f#${prefix}} # change directory to avoid having full path in hashsum file pushd $BUILD_ROOT/$TOPDIR/OTHER >/dev/null /usr/bin/sha256sum "${prefix##*/}${buildnum}${f#${prefix}}" > \ "${prefix##*/}${buildnum}${f#${prefix}}".sha256 popd >/dev/null BUILD_SUCCEEDED=true done done # copy recipe source tarball so that it can be published cp "$BUILD_ROOT/$TOPDIR/SOURCES/$RECIPEFILE" \ "$BUILD_ROOT/$TOPDIR/OTHER/${RECIPEFILE%.livebuild}${buildnum}".livebuild.tar } recipe_resultdirs_livebuild() { # our results are already in OTHER : } recipe_cleanup_livebuild() { : } # Local Variables: # mode: Shell-script # End: obs-build-20210120/build-recipe-mock000066400000000000000000000067641400202264700170530ustar00rootroot00000000000000# # mock specific functions. # ################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_mock() { recipe_setup_spec "$@" } recipe_prepare_mock() { recipe_prepare_spec "$@" } recipe_build_mock() { test -d $BUILD_ROOT/.build.binaries || cleanup_and_exit 1 if test "$DO_INIT" = true -o ! -d "$BUILD_ROOT/.build.binaries/repodata" ; then echo "creating repository for mock..." chroot $BUILD_ROOT createrepo --no-database --basedir /.build.binaries -o /.build.binaries /.build.binaries fi MOCK_CHROOT_SETUP_CMD="$(queryconfig --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" substitute mock:chroot_setup_cmd)" test -z "$MOCK_CHROOT_SETUP_CMD" && MOCK_CHROOT_SETUP_CMD="groupinstall buildsys-build" echo "config_opts['root'] = 'build'" > $BUILD_ROOT/etc/mock/build.cfg echo "config_opts['target_arch'] = '${BUILD_ARCH%%:*}'" >> $BUILD_ROOT/etc/mock/build.cfg echo "config_opts['plugin_conf']['ccache_enable'] = False" >> $BUILD_ROOT/etc/mock/build.cfg echo "config_opts['chroot_setup_cmd'] = '$MOCK_CHROOT_SETUP_CMD'" >> $BUILD_ROOT/etc/mock/build.cfg cat >> $BUILD_ROOT/etc/mock/build.cfg <<-'EOF' config_opts['yum.conf'] = """ [main] cachedir=/var/cache/yum debuglevel=1 reposdir=/dev/null logfile=/var/log/yum.log obsoletes=1 gpgcheck=0 assumeyes=1 syslog_ident=mock syslog_device= [build] name=build baseurl=file:///.build.binaries """ EOF touch $BUILD_ROOT/etc/resolv.conf BUILD_SUCCEEDED=false echo "building src rpm..." MOCK_INIT_ARG= test "$DO_INIT" = true || MOCK_INIT_ARG=--no-clean if chroot $BUILD_ROOT /usr/bin/mock -r build $MOCK_INIT_ARG --buildsrpm --spec "$TOPDIR/SOURCES/$RECIPEFILE" --sources "$TOPDIR/SOURCES" ; then BUILT_SRPM= for i in "$BUILD_ROOT/var/lib/mock/build/result/"*src.rpm ; do test -s "$i" && BUILT_SRPM="${i##*/}" done if test -n "$BUILT_SRPM" ; then mkdir -p "$BUILD_ROOT/$TOPDIR/SRPMS" mv "$BUILD_ROOT/var/lib/mock/build/result/$BUILT_SRPM" "$BUILD_ROOT/$TOPDIR/SRPMS/$BUILT_SRPM" echo "building binary rpms..." if chroot $BUILD_ROOT /usr/bin/mock -v -r build --rebuild --no-clean "$TOPDIR/SRPMS/$BUILT_SRPM" ; then BUILD_SUCCEEDED=true # move result over to TOPDIR rm -f "$TOPDIR/SRPMS/$BUILT_SRPM" for i in "$BUILD_ROOT/var/lib/mock/build/result/"*.rpm ; do a="${i%.rpm}" a="${a##*/}" a="${a##*.}" if test "$a" = src -o "$a" = nosrc ; then mkdir -p "$BUILD_ROOT/$TOPDIR/SRPMS" mv $i "$BUILD_ROOT/$TOPDIR/SRPMS/." else mkdir -p "$BUILD_ROOT/$TOPDIR/RPMS/$a" mv $i "$BUILD_ROOT/$TOPDIR/RPMS/$a/." fi done fi fi fi } recipe_resultdirs_mock() { echo RPMS SRPMS } recipe_cleanup_mock() { echo RPMS SRPMS } obs-build-20210120/build-recipe-podman000066400000000000000000000026661400202264700173750ustar00rootroot00000000000000# # podman specific functions, wrapper around build_recipe_docker # ################################################################ # # Copyright (c) 2015 SUSE Linux GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_podman() { recipe_setup_docker "$@" } recipe_prepare_podman() { recipe_prepare_docker "$@" } recipe_build_podman() { # podman refuses : in directories find containers -type d -a -name '*:*' | while read i; do mv "$i" "${i//:/_}" done # and filenames find containers -type f -a -name '*:*' | while read i; do mv "$i" "${i//:/_}" done recipe_build_docker "$@" } recipe_resultdirs_podman() { recipe_resultdirs_docker "$@" } recipe_cleanup_podman() { recipe_cleanup_docker "$@" } obs-build-20210120/build-recipe-preinstallimage000066400000000000000000000051031400202264700212640ustar00rootroot00000000000000# # preinstall specific functions. # ################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_preinstallimage() { # should never be called cleanup_and_exit 1 } recipe_prepare_preinstallimage() { : } recipe_build_preinstallimage() { echo "creating preinstall image..." test -d "$BUILD_ROOT/.preinstall_image" || cleanup_and_exit 1 cd $BUILD_ROOT || cleanup_and_exit 1 TAR="tar" if test -x /usr/bin/bsdtar; then TAR="/usr/bin/bsdtar --format gnutar --chroot" fi TOPDIRS= for DIR in .* * ; do case "$DIR" in .|..) continue ;; .build.kernel.*) ;; # to be packaged .build.hostarch.*) ;; # to be packaged .build.initrd.*) ;; # to be packaged .build.console.*) ;; # to be packaged .build*) continue ;; .init_b_cache) continue ;; .preinstallimage*) continue ;; .srcfiles*) continue ;; .pkgs) continue ;; .rpm-cache) continue ;; installed-pkg) continue ;; proc|sys) continue ;; esac TOPDIRS="$TOPDIRS $DIR" done if ! $TAR -czf .preinstallimage.$$.tar.gz --one-file-system $TOPDIRS ; then cleanup_and_exit 1 fi echo "image created." TOPDIR=/usr/src/packages mkdir -p $BUILD_ROOT$TOPDIR/OTHER rm -f $BUILD_ROOT$TOPDIR/OTHER/preinstallimage.info for PKG in $BUILD_ROOT/.preinstall_image/* ; do PKG=${PKG##*/} read PKG_HDRMD5 PKGID < $BUILD_ROOT/.preinstall_image/$PKG test -n "$PKG_HDRMD5" || cleanup_and_exit 1 echo "$PKG_HDRMD5 $PKG" >> $BUILD_ROOT$TOPDIR/OTHER/preinstallimage.info done mv $BUILD_ROOT/.preinstallimage.$$.tar.gz $BUILD_ROOT$TOPDIR/OTHER/preinstallimage.tar.gz rm -f $BUILD_ROOT/.build.packages ln -s ${TOPDIR#/} $BUILD_ROOT/.build.packages test -d "$SRCDIR" && cd "$SRCDIR" } recipe_resultdirs_preinstallimage() { : } recipe_cleanup_preinstallimage() { : } obs-build-20210120/build-recipe-simpleimage000066400000000000000000000071211400202264700204020ustar00rootroot00000000000000################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_simpleimage() { TOPDIR=/usr/src/packages rm -rf "$BUILD_ROOT$TOPDIR" for i in SOURCES OTHER ; do mkdir -p "$BUILD_ROOT$TOPDIR/$i" done chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi } recipe_prepare_simpleimage() { BUILD_USER="root" } recipe_build_simpleimage() { TOPDIR=/usr/src/packages echo "creating simple image..." cd $BUILD_ROOT || cleanup_and_exit 1 export SRCDIR="$TOPDIR/SOURCES" NAME="`sed -n 's|Name:[[:blank:]]*||p' $BUILD_ROOT$TOPDIR/SOURCES/simpleimage`" [ -n "$NAME" ] || NAME="simpleimage" VERSION="`sed -n 's|Version:[[:blank:]]*||p' $BUILD_ROOT$TOPDIR/SOURCES/simpleimage`" [ -n "$VERSION" ] || VERSION="`date -u +%y.%m.%d-%H.%M.%S`" SHELL="/bin/sh" [ -x $BUILD_ROOT/bin/bash ] && SHELL="/bin/bash" if [ "`grep '^%build$' $BUILD_ROOT$TOPDIR/SOURCES/simpleimage`" ]; then echo "Running integration script..." sed -n '/%build/,$ p' $BUILD_ROOT$TOPDIR/SOURCES/simpleimage | tail -n +2 | chroot $BUILD_ROOT $SHELL -x || cleanup_and_exit 1 echo "Integration script finished." fi echo "Compresing the final image, this can take a while..." echo TAR="tar" if test -x /usr/bin/bsdtar; then TAR="/usr/bin/bsdtar --format gnutar --chroot" fi TOPDIRS= for DIR in .* * ; do case "$DIR" in .|..) continue ;; .build*) continue ;; .simpleimage*) continue ;; .srcfiles*) continue ;; .pkgs) continue ;; .rpm-cache) continue ;; .tmp) continue ;; installed-pkg) continue ;; proc|sys) continue ;; esac TOPDIRS="$TOPDIRS $DIR" done rm -rf "$BUILD_ROOT$TOPDIR" mkdir -p .tmp/{proc,sys} if ! $TAR -cvzf .simpleimage.tar.gz --one-file-system $TOPDIRS -C .tmp proc sys; then cleanup_and_exit 1 fi if [ -x "`which mksquashfs 2> /dev/null`" ]; then echo echo "Tarball done, creating squashfs image as well" echo mksquashfs $TOPDIRS .tmp/proc .tmp/sys .simpleimage.squashfs -info -keep-as-directory -no-progress || cleanup_and_exit 1 fi echo "simple image created." DEST="$BUILD_ROOT$TOPDIR/OTHER" mkdir -p "$DEST" mv $BUILD_ROOT/.simpleimage.tar.gz $DEST/$NAME-${VERSION}_${BUILD_ARCH%%:*}.tar.gz if [ -r .simpleimage.squashfs ]; then mv $BUILD_ROOT/.simpleimage.squashfs $DEST/$NAME-${VERSION}_${BUILD_ARCH%%:*}.squashfs fi rm -f $BUILD_ROOT/.build.packages ln -s ${TOPDIR#/} $BUILD_ROOT/.build.packages test -d "$SRCDIR" && cd "$SRCDIR" BUILD_SUCCEEDED=true } recipe_resultdirs_simpleimage() { : } recipe_cleanup_simpleimage() { : } obs-build-20210120/build-recipe-snapcraft000066400000000000000000000076311400202264700200750ustar00rootroot00000000000000################################################################# # # snapcraft specific functions. # # Author: Adrian Schroeter # ################################################################ # # Copyright (c) 2016 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_snapcraft() { TOPDIR=/usr/src/packages test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" for i in OTHER SOURCES SNAPCRAFT_ROOT ; do mkdir -p "$BUILD_ROOT$TOPDIR/$i" done chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ else cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ fi } recipe_prepare_snapcraft() { : } collect_prebuild_parts() { mkdir -p $BUILD_ROOT/root/.local/share/snapcraft/ rm -f $BUILD_ROOT/root/.local/share/snapcraft/parts.yaml for part in $BUILD_ROOT/.build.snap_parts/*; do if [ -e "$part" ]; then cat "$part/part.yaml" >> \ $BUILD_ROOT/root/.local/share/snapcraft/parts.yaml fi done } # This script expects that the $BUILD_ROOT is a Debian installation with # snapcraft already installed! # # Variables: # $BUILD_ROOT the Debian chroot # $TOPDIR/SOURCES includes the snapcraft sources # $TOPDIR/$SNAPCRAFT_ROOT where snapcraft will be called # $RECIPEFILE the name of the snapcraft.yaml config file recipe_build_snapcraft() { local ARCH=$(chroot $BUILD_ROOT su -c "dpkg-architecture -qDEB_BUILD_ARCH") local DIST="OBS" local SNAPCRAFT_ROOT="SNAPCRAFT_ROOT" [ -z "${ARCH}" -o -z "${DIST}" ] && cleanup_and_exit 1 test -d $BUILD_ROOT/.build.binaries || cleanup_and_exit 1 if test "$DO_INIT" = true -o ! -d "$BUILD_ROOT/.build.binaries/dists" ; then echo "creating repository metadata..." createrepo_debian $BUILD_ROOT/.build.binaries ${ARCH} ${DIST} # setup /etc/apt/sources.list mkdir -p "$BUILD_ROOT/etc/apt" echo "deb [trusted=yes] file:/.build.binaries OBS main" >> "$BUILD_ROOT/etc/apt/sources.list" fi collect_prebuild_parts chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && snapcraft pull" - root \ || cleanup_and_exit 1 chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && snapcraft build" - root \ || cleanup_and_exit 1 chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && snapcraft snap" - root \ || cleanup_and_exit 1 # extract build result basenames local build_results="" for i in $BUILD_ROOT/$TOPDIR/SOURCES/* ; do test -f "$i" || continue case "${i##*/}" in *.snap) build_results="${build_results}\n${i%%.snap}" ;; *) ;; esac done # Fail the build if no build results are found if [ -z "${build_results}" ] ; then cleanup_and_exit 1 "No live-build result found" fi # move created products (and their metadata files) to destination local buildnum="${RELEASE:+-Build${RELEASE}}" 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}} BUILD_SUCCEEDED=true done done } recipe_resultdirs_snapcraft() { : } recipe_cleanup_snapcraft() { : } # Local Variables: # mode: Shell-script # End: obs-build-20210120/build-recipe-spec000066400000000000000000000267071400202264700170530ustar00rootroot00000000000000# # spec specific functions. # ################################################################ # # Copyright (c) 1995-2014 SUSE Linux Products GmbH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ recipe_setup_spec() { TOPDIR=`chroot $BUILD_ROOT su -c "rpm --eval '%_topdir'" - $BUILD_USER` if test -z "$TOPDIR"; then cleanup_and_exit 1 "Error: TOPDIR empty" fi test "$DO_INIT_TOPDIR" = false || rm -rf "$BUILD_ROOT$TOPDIR" for i in BUILD RPMS/`uname -m` RPMS/i386 RPMS/noarch SOURCES SPECS SRPMS BUILDROOT OTHER ; do mkdir -p $BUILD_ROOT$TOPDIR/$i done chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR" mkdir -p $BUILD_ROOT$TOPDIR/SOURCES cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/ } recipe_prepare_spec() { # fixup specfile args=() if test -n "$RELEASE" ; then args[${#args[@]}]="--release" args[${#args[@]}]="$RELEASE" fi if test -n "$BUILD_FLAVOR" ; then args[${#args[@]}]="--buildflavor" args[${#args[@]}]="$BUILD_FLAVOR" fi if test -n "$OBS_PACKAGE" ; then args[${#args[@]}]="--obspackage" args[${#args[@]}]="$OBS_PACKAGE" fi if test -n "$CHANGELOG" -a -f "$BUILD_ROOT/.build-changelog" ; then args[${#args[@]}]="--changelog" args[${#args[@]}]="$BUILD_ROOT/.build-changelog" fi substitutedeps "${args[@]}" --root "$BUILD_ROOT" --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" "$BUILD_ROOT$TOPDIR/SOURCES/$RECIPEFILE" "$BUILD_ROOT/.spec.new" || cleanup_and_exit 1 # fix rpmrc if we are compiling for i686 test -f $BUILD_ROOT/usr/lib/rpm/rpmrc_i586 && mv $BUILD_ROOT/usr/lib/rpm/rpmrc_i586 $BUILD_ROOT/usr/lib/rpm/rpmrc if test -e $BUILD_ROOT/usr/lib/rpm/rpmrc -a "$BUILD_ARCH" != "${BUILD_ARCH#i686}" ; then mv $BUILD_ROOT/usr/lib/rpm/rpmrc $BUILD_ROOT/usr/lib/rpm/rpmrc_i586 sed -e 's/^buildarchtranslate: athlon.*/buildarchtranslate: athlon: i686/' -e 's/^buildarchtranslate: i686.*/buildarchtranslate: i686: i686/' < $BUILD_ROOT/usr/lib/rpm/rpmrc_i586 > $BUILD_ROOT/usr/lib/rpm/rpmrc fi # extract macros from configuration rawcfgmacros=.rpmmacros test "$BUILDTYPE" = debbuild && rawcfgmacros=.debmacros queryconfig rawmacros --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" > $BUILD_ROOT/root/$rawcfgmacros if test -n "$BUILD_DEBUG" && test "$BUILDTYPE" != debbuild ; then echo ' %prep %{?!__debug_package:%{?_build_create_debug:%?_build_insert_debug_package}}%%prep %package %{?!__debug_package:%{?_build_create_debug:%?_build_insert_debug_package}}%%package %_build_insert_debug_package \ %global __debug_package 1 \ %undefine _enable_debug_packages \ %debug_package ' >> $BUILD_ROOT/root/$rawcfgmacros fi if test -n "$BUILD_JOBS" ; then cat >> $BUILD_ROOT/root/$rawcfgmacros <<-EOF ### from obs-build %jobs $BUILD_JOBS %_smp_mflags -j$BUILD_JOBS EOF fi test $BUILD_USER = abuild && cp -p $BUILD_ROOT/root/$rawcfgmacros $BUILD_ROOT/home/abuild/$rawcfgmacros # extract optflags from configuration queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" optflags ${BUILD_DEBUG:+debug} > $BUILD_ROOT/root/.rpmrc test $BUILD_USER = abuild && cp -p $BUILD_ROOT/root/.rpmrc $BUILD_ROOT/home/abuild/.rpmrc if test -z "$ABUILD_TARGET"; then ABUILD_TARGET=$(queryconfig target --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" ) test -z "$ABUILD_TARGET" || echo "build target is $ABUILD_TARGET" fi # report specfile changes if test -f $BUILD_ROOT/.spec.new ; then if ! cmp -s $BUILD_ROOT$TOPDIR/SOURCES/$RECIPEFILE $BUILD_ROOT/.spec.new ; then echo ----------------------------------------------------------------- echo "I have the following modifications for $RECIPEFILE:" sed -e "/^%changelog/q" $BUILD_ROOT$TOPDIR/SOURCES/$RECIPEFILE > $BUILD_ROOT/.spec.t1 sed -e "/^%changelog/q" $BUILD_ROOT/.spec.new > $BUILD_ROOT/.spec.t2 diff $BUILD_ROOT/.spec.t1 $BUILD_ROOT/.spec.t2 rm -f $BUILD_ROOT/.spec.t1 $BUILD_ROOT/.spec.t2 mv $BUILD_ROOT/.spec.new $BUILD_ROOT$TOPDIR/SOURCES/$RECIPEFILE else rm -f $BUILD_ROOT/.spec.new fi fi } recipe_build_spec() { test -z "$BUILD_RPM_BUILD_STAGE" && BUILD_RPM_BUILD_STAGE=-ba rpmbuild=rpmbuild 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 if chroot "$BUILD_ROOT" "$rpmbuild" --nocheck --help >/dev/null 2>&1; then rpmbopts[${#rpmbopts[@]}]="--nocheck" else 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" fi if test -n "$ABUILD_TARGET" ; then rpmbopts[${#rpmbopts[@]}]="--target=$ABUILD_TARGET" fi if test -n "$BUILD_DEBUG" ; then rpmbopts[${#rpmbopts[@]}]='--define' rpmbopts[${#rpmbopts[@]}]="_build_create_debug 1" fi if test -n "$DISTURL" ; then rpmbopts[${#rpmbopts[@]}]='--define' rpmbopts[${#rpmbopts[@]}]="disturl $DISTURL" fi if test -n "$RSYNCDONE" ; then rpmbopts[${#rpmbopts[@]}]='--define' rpmbopts[${#rpmbopts[@]}]="RSYNCDONE 1" fi buildrootoverride=$(queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" buildflags rpm-buildroot-override) if test -n "$buildrootoverride" ; then rpmbopts[${#rpmbopts[@]}]='--buildroot' rpmbopts[${#rpmbopts[@]}]="$buildrootoverride" fi GEN_BUILDREQS_PACKS=() if test -n "$HAVE_DYNAMIC_BUILDREQUIRES" ; 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 \ "${definesnstuff[@]}" \ "${rpmbopts[@]}" \ "$TOPDIR/SOURCES/$RECIPEFILE" \ > $BUILD_ROOT/.build.command chmod 755 $BUILD_ROOT/.build.command check_exit 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 } recipe_resultdirs_spec() { echo RPMS SRPMS } recipe_cleanup_spec() { : } recipe_unpack_srcrpm() { test -n "$LIST_STATE" || echo "processing src rpm $SRCDIR/$RECIPEFILE ..." MYSRCDIR="$BUILD_ROOT/.build-srcdir" rm -rf "$MYSRCDIR" mkdir -p "$MYSRCDIR" cd $MYSRCDIR || cleanup_and_exit 1 $BUILD_DIR/unrpm -q $SRCDIR/$RECIPEFILE || { cleanup_and_exit 1 "could not unpack $RECIPEFILE." } for RECIPEFILE in *.spec ; do : ; done } # post build functions... move somewhere else? recipe_check_file_owners() { echo "... checking for files with abuild user/group" BADFILE= while read un gn fn ; do if test "$un" = abuild -o "$gn" = abuild -o "$un" = ${ABUILD_UID} -o "$gn" = ${ABUILD_GID} ; then echo " $un $gn $fn" BADFILE=true fi done < <(rpm -qp --qf '[%{FILEUSERNAME} %{FILEGROUPNAME} %{FILENAMES}\n]' $RPMS) if test -n "$BADFILE" ; then cleanup_and_exit 1 "please fix your filelist (e.g. add defattr)" fi } recipe_run_rpmlint() { # SUSE builds are using a special rpmlint binary which is not # pulling in additional dependencies local rpmlint="/opt/testing/bin/rpmlint" if ! test -x "$BUILD_ROOT$rpmlint" ; then # default rpmlint place as fallback rpmlint="/usr/bin/rpmlint" fi if ! test -x "$BUILD_ROOT$rpmlint" ; then return fi LINT_RPM_FILE_LIST=($(find $BUILD_ROOT/$TOPDIR/RPMS \ \( -name "*-debuginfo-*" -o -name "*-debugsource-*" \ -o -name "*-32bit-*" -o -name "*-64bit-*" \ -o -name "*-x86-*" -o -name "*-ia32-*" \) -prune \ -o -type f -name '*.rpm' -print)) SRPM_FILE_LIST=($(find $BUILD_ROOT/$TOPDIR/SRPMS -type f -name "*.rpm")) echo echo "RPMLINT report:" echo "===============" rpmlint_logfile=$TOPDIR/OTHER/rpmlint.log rm -f "$BUILD_ROOT$rpmlint_logfile" ret=0 chroot $BUILD_ROOT su -s $rpmlint "$BUILD_USER" -- \ --info ${LINT_RPM_FILE_LIST[*]#$BUILD_ROOT} \ ${SRPM_FILE_LIST[*]#$BUILD_ROOT} > >(tee "$BUILD_ROOT$rpmlint_logfile") 2>&1 || ret=1 echo if test "$ret" = 1 ; then cleanup_and_exit 1 fi } recipe_compare_oldpackages() { if test -x "$BUILD_ROOT/usr/lib/build/same-build-result.sh" ; then echo "... comparing built packages with the former built" if chroot $BUILD_ROOT /usr/lib/build/same-build-result.sh /.build.oldpackages "$TOPDIR/RPMS" "$TOPDIR/SRPMS"; then chroot $BUILD_ROOT touch /.build/.same_result_marker # XXX: dirty build service hack. fix bs_worker. Search for # 'same_result_marker' for traces of a first try to get rid of this if test -n "$REASON" -a -n "$DISTURL" ; then exitcode=2 fi fi fi } recipe_create_deltarpms() { if test -x "$BUILD_ROOT/usr/bin/makedeltarpm" -a -x $BUILD_ROOT/usr/lib/build/mkdrpms ; then echo "... creating delta rpms" ds=("$BUILD_ROOT/$TOPDIR"/RPMS/* "$BUILD_ROOT$TOPDIR/SRPMS") chroot $BUILD_ROOT /usr/lib/build/mkdrpms /.build.oldpackages "${ds[@]#$BUILD_ROOT}" fi } obs-build-20210120/build-validate-params000066400000000000000000000047551400202264700177250ustar00rootroot00000000000000# # parameter validation functions # ################################################################ # # Copyright (c) 2016 SUSE LLC # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or 3 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program (see the file COPYING); if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # ################################################################ validate_param=() validate_buildroot=() validate_init() { local cf="$1" if ! test -f "$cf" ; then return fi local _key _flag _arg while read _key _flag _arg; do case $_key in \#* | '') continue ;; ALLOW_PARAM:) validate_param[${#validate_param[@]}]="${_flag#--} $_arg" ;; ALLOW_BUILD_ROOT:) validate_buildroot[${#validate_buildroot[@]}]="$_flag" ;; *) cleanup_and_exit 1 "unknown directive in $cf: $_key" ;; esac done < "$cf" } validate_param() { local param="$1" local arg="$2" local envvar="$3" if test ${#validate_param[@]} -eq 0 ; then return fi param=${param#-} param=${param#-} local t ok= for t in "${validate_param[@]}" ; do local targ="${t#$param }" if test "$t" != "$targ" ; then if test -z "$targ" -o "$targ" == "$arg" ; then ok=true break fi fi done if test -z "$ok" ; then if test -n "$envvar" ; then cleanup_and_exit 1 "build: environment variable $envvar=$arg not allowed" else cleanup_and_exit 1 "build: parameter --$param $arg not allowed" fi fi } validate_buildroot() { local br="$1" if test ${#validate_buildroot[@]} -eq 0 ; then return fi local user=${SUDO_USER:-$USER} local t ok= error="Build root $br not allowed for user $user" for t in "${validate_buildroot[@]}" ; do t=${t//\%user/$user} t=$(readlink -m "$t") if [[ "$br" == $t ]] ; then local tp=$(readlink -m "${t%/*}") if test -d "$tp" ; then ok=true break fi error="Directory $tp does not exist" fi done if test -z "$ok" ; then cleanup_and_exit 1 "$error" fi } obs-build-20210120/build-vm000066400000000000000000001070441400202264700152700ustar00rootroot00000000000000# # VM specific functions for the build script # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ # ignore not backward compatible ext fs options like metadata_csum # Only protecting nonroot from root inside guest -> but anyone can be root inside guest # so disabling spectre/meltdown mitigations doesn't hurt security and gains performance vm_linux_kernel_parameter="ext4.allow_unsupported=1 mitigations=off" # guest visible devices VM_ROOTDEV=/dev/hda1 VM_SWAPDEV=/dev/hda2 VM_TYPE= VM_ROOT= VM_SWAP= VM_ROOT_TYPE= VM_SWAP_TYPE= VM_KERNEL= VM_INITRD= VM_WORKER= VM_SERVER= # the qemu default size is not able to run our default kernel anymore VM_MEMSIZE=512 VM_NETOPT=() VM_NETDEVOPT=() VM_DEVICEOPT=() VM_TELNET= VM_CONSOLE_INPUT= VM_USER= VMDISK_ROOTSIZE=4096 VMDISK_SWAPSIZE=1024 VMDISK_FILESYSTEM= VMDISK_MOUNT_OPTIONS=__default VMDISK_CLEAN= VM_HOSTNAME= VM_USE_VIRT_FS= # zvm specific? VM_WORKER_NO= # kvm specific? HUGETLBFSPATH= VM_CUSTOMOPT= # emulator specific? EMULATOR_SCRIPT= # openstack specific VM_OPENSTACK_FLAVOR= for i in ec2 emulator kvm lxc openstack qemu uml xen zvm docker pvm nspawn; do . "$BUILD_DIR/build-vm-$i" done VM_WATCHDOG= VM_WATCHDOG_PID= # the following functions just call the corresponding vm versions vm_verify_options() { vm_verify_options_$VM_TYPE "$@" } vm_attach_root() { vm_attach_root_$VM_TYPE "$@" } vm_attach_swap() { vm_attach_swap_$VM_TYPE "$@" } vm_detach_root() { vm_detach_root_$VM_TYPE "$@" } vm_detach_swap() { vm_detach_swap_$VM_TYPE "$@" } vm_fixup() { vm_fixup_$VM_TYPE "$@" } vm_startup() { vm_startup_$VM_TYPE "$@" } vm_sysrq() { vm_sysrq_$VM_TYPE "$@" } vm_kill() { vm_kill_$VM_TYPE "$@" } vm_cleanup() { kill_watchdog vm_cleanup_$VM_TYPE "$@" } vm_parse_options() { case ${PARAM/#--/-} in -vm-emulator-script|-emulator-script) needarg EMULATOR_SCRIPT="$ARG" shift ;; -xen|-kvm|-uml|-qemu|-emulator) VM_TYPE=${PARAM##*-} test -z "$VM_ROOT" && VM_ROOT=1 if test -n "$ARG" ; then VM_ROOT="$ARG" shift fi ;; -zvm|-lxc) VM_TYPE=${PARAM##*-} shift ;; -vm-type) needarg VM_TYPE="$ARG" case "$VM_TYPE" in lxc|docker|nspawn) ;; ec2|xen|kvm|uml|qemu|emulator|openstack|zvm|pvm) test -z "$VM_ROOT" && VM_ROOT=1 ;; none|chroot) VM_TYPE= ;; *) cleanup_and_exit 1 "VM '$VM_TYPE' is not supported" ;; esac shift ;; -vm-worker) needarg VM_WORKER="$ARG" shift ;; -vm-worker-nr|-vm-worker-no) needarg VM_WORKER_NO="$ARG" shift ;; -vm-server|-vm-region) needarg VM_SERVER="$ARG" shift ;; -vm-disk) needarg VM_ROOT="$ARG" shift ;; -vm-swap|-xenswap|-swap) needarg VM_SWAP="$ARG" shift ;; -vm-memory|-xenmemory|-memory) needarg VM_MEMSIZE="$ARG" shift ;; -vm-kernel) needarg VM_KERNEL="$ARG" shift ;; -vm-initrd) needarg VM_INITRD="$ARG" shift ;; -vm-disk-size|-vmdisk-rootsize) needarg VMDISK_ROOTSIZE="$ARG" shift ;; -vm-swap-size|-vmdisk-swapsize) needarg VMDISK_SWAPSIZE="$ARG" shift ;; -vm-disk-filesystem|-vmdisk-filesystem) needarg VMDISK_FILESYSTEM="$ARG" shift ;; -vm-disk-filesystem-options|-vmdisk-filesystem-options) needarg VMDISK_FILESYSTEM_OPTIONS="$ARG" shift ;; -vm-disk-mount-options|-vmdisk-mount-options) needarg VMDISK_MOUNT_OPTIONS="$ARG" # silly code for compat with old bs_worker versions... if test "$1" != "----noarg=$PARAM" -a "$ARG" != "${ARG#\"}" -a "$ARG" != "${ARG%\"}" ; then VMDISK_MOUNT_OPTIONS="${VMDISK_MOUNT_OPTIONS#\"}" VMDISK_MOUNT_OPTIONS="${VMDISK_MOUNT_OPTIONS%\"}" fi shift ;; -vm-disk-clean|-vmdisk-clean) # delete old root/swap to get rid of the old blocks VMDISK_CLEAN=true ;; -vm-hugetlbfs|-hugetlbfs) needarg HUGETLBFSPATH="$ARG" shift ;; -vm-watchdog) VM_WATCHDOG=true ;; -vm-user) needarg VM_USER="$ARG" shift ;; -vm-enable-console) VM_CONSOLE_INPUT=true ;; -vm-telnet) needarg VM_TELNET="$ARG" shift ;; -vm-net) needarg VM_NETOPT=("${VM_NETOPT[@]}" "$ARG") shift ;; -vm-netdev) needarg VM_NETDEVOPT=("${VM_NETDEVOPT[@]}" "$ARG") shift ;; -vm-device) needarg VM_DEVICEOPT=("${VM_DEVICEOPT[@]}" "$ARG") shift ;; -vm-custom-opt) needarg VM_CUSTOMOPT="$ARG" shift ;; -openstack-flavor) needarg VM_OPENSTACK_FLAVOR="$ARG" shift ;; -*) return 1 ;; esac nextargs=("$@") return 0 } vm_set_buildstatus() { if test -n "$VM_ROOT" -a -n "$VM_SWAP" -a "$VM_SWAP_TYPE" != unattached -a -e "$VM_SWAP" ; then echo -n "BUILDSTATUS$1" >"$VM_SWAP" fi } # # shutdown the system from inside the VM # vm_shutdown() { test -n "$VM_WATCHDOG" && echo "### VM INTERACTION START ###" cd / test -n "$1" || set 1 if test -n "$VM_SWAP" -a -e "$VM_SWAP" ; then swapoff "$VM_SWAP" 2>/dev/null echo -n "BUILDSTATUS$1" >"$VM_SWAP" fi exec >&0 2>&0 # so that the logging tee finishes sleep 1 # wait till tee terminates test "$VM_TYPE" = lxc -o "$VM_TYPE" = docker -o "$VM_TYPE" = nspawn && exit $1 kill -9 -1 # goodbye cruel world if ! test -x /sbin/halt ; then test -e /proc/sysrq-trigger || mount -n -tproc none /proc sync sleep 2 # like halt does if test -e /proc/sysrq-trigger; then echo o > /proc/sysrq-trigger sleep 5 # wait for sysrq to take effect else echo "Warning: VM doesn't support sysrq and /sbin/halt not installed" fi else sync # halt from systemd is not syncing anymore. halt -f -p fi echo "Warning: clean shut down of the VM didn't work" exit $1 # init died... } vm_img_create() { local img="$1" local size="$2" if test -e "${img}" ; then local origsize=$(cat "${img}.size" 2> /dev/null) if test -z "$origsize" -o "$origsize" != "$size" ; then echo "Resizing $img (${size}M)" fi else echo "Creating $img (${size}M)" rm -f "${img}.size" fi mkdir -p "${img%/*}" || cleanup_and_exit 4 # truncate file to the desired size dd if=/dev/zero of="$img" bs=1M count=0 seek="$size" || cleanup_and_exit 4 echo "$size" > "${img}.size" # allocate blocks if type -p fallocate > /dev/null ; then fallocate -p -l "${size}M" "$img" 2> /dev/null errout=$( fallocate -l "${size}M" "$img" 2>&1 ) if test $? != 0; then echo $errout if test "${errout/Operation not supported/}" = "$errout"; then # Do not fail on not support file systems, eg ext2 or ext3 cleanup_and_exit 4 fi fi fi } vm_img_wipe() { vm_wipe_$VM_TYPE "$@" if test -n "$VM_ROOT" -a "$VM_ROOT_TYPE" = file ; then rm -f "$VM_ROOT" fi if test -n "$VM_SWAP" -a "$VM_SWAP_TYPE" = file ; then rm -f "$VM_SWAP" fi } vm_img_mkfs() { local fs="$1" local img="$2" local options="$3" local mkfs tunefs case "$fs" in ext[234]|xfs|btrfs|reiserfs) ;; *) cleanup_and_exit 1 "filesystem \"$fs\" is not supported" ;; esac # defaults for creating the filesystem vm_img_mkfs_ext4_options='-O ^has_journal,^huge_file,^resize_inode,sparse_super' vm_img_mkfs_ext4_extra='-E lazy_itable_init,discard' vm_img_mkfs_ext4="mkfs.ext4 -m 0 -q -F $vm_img_mkfs_ext4_options" vm_img_mkfs_ext3='mkfs.ext3 -m 0 -q -F' vm_img_mkfs_ext2='mkfs.ext2 -m 0 -q -F' vm_img_mkfs_reiserfs='mkreiserfs -q -f' vm_img_mkfs_btrfs='mkfs.btrfs' vm_img_mkfs_xfs='mkfs.xfs -f' # defaults for tuning the filesystem vm_img_tunefs_ext4='tune2fs -c 0' vm_img_tunefs_ext3='tune2fs -c 0 -o journal_data_writeback' vm_img_tunefs_ext2='tune2fs -c 0' var="vm_img_mkfs_${fs}"; mkfs="${!var}" var="vm_img_mkfs_extra_options_${fs}"; mkfs_extra_options="${!var}" var="vm_img_tunefs_${fs}"; vm_img_tunefs="${!var}" local labelopt= test "$VM_ROOTDEV" != "${VM_ROOTDEV#LABEL=}" && labelopt="-L ${VM_ROOTDEV#LABEL=}" # extend options if wanted, multiple -O are fine if test "$options" = "nodirindex" && test "$fs" = "ext2" -o "$fs" = "ext3" -o "$fs" = "ext4"; then mkfs_extra_options="$mkfs_extra_options -O ^dir_index" fi if test -z "$mkfs"; then cleanup_and_exit 1 "filesystem \"$fs\" is not supported" fi echo "Creating $fs filesystem on $img" export MKE2FS_SYNC=0 if ! $mkfs $labelopt $mkfs_extra_options "$img" ; then if test -z "$mkfs_extra_options" ; then cleanup_and_exit 3 else echo "Filesystem creation failed, trying again without extra options..." $mkfs $labelopt "$img" || cleanup_and_exit 4 fi fi if test -n "$tunefs" ; then $tunefs "$img" || cleanup_and_exit 4 fi } background_monitor_process() { max_disk=0 max_mem=0 while sleep 5; do test -e /.build/_statistics.exit && exit 0 # memory usage if test -e /proc/meminfo ; then memtotal=0 while read key value unit; do case $key in MemTotal:|SwapTotal:) memtotal=$(( $memtotal + $value )) ;; MemFree:|SwapFree:|SwapCached:|Cached:|Buffers:) memtotal=$(( $memtotal - $value )) ;; esac done < /proc/meminfo if test ${memtotal} -gt $max_mem ; then max_mem="${memtotal}" echo -n $(( $max_mem / 1024 )) > /.build/_statistics.memory.new && mv /.build/_statistics.memory.new /.build/_statistics.memory fi fi # disk storage usage if type -p df >& /dev/null; then c=(`df -m / 2>/dev/null | tail -n 1`) if test ${c[2]} -gt $max_disk ; then max_disk="${c[2]}" echo -n $max_disk > /.build/_statistics.df.new && mv /.build/_statistics.df.new /.build/_statistics.df fi fi done } background_watchdog() { WATCHDOG_START= WATCHDOG_TIMEOUT=300 BUILD_OPTIONS_PARSED= while sleep 5 ; do WATCH=$(grep -a "### VM INTERACTION" "$LOGFILE" | tr '\0' a | tail -n 1) case $WATCH in *VM\ INTERACTION\ START*) test -n "$WATCHDOG_START" || WATCHDOG_START=`date +%s` ;; *VM\ INTERACTION\ END*) WATCHDOG_START= ;; esac if test -n "$WATCHDOG_START" ; then NOW=`date +%s` ELAPSED=$((NOW-WATCHDOG_START)) if test $ELAPSED -gt $WATCHDOG_TIMEOUT ; then # kill the VM echo echo "### WATCHDOG TRIGGERED, KILLING VM ###" vm_kill exit 0 fi fi done } start_watchdog() { local wf=$(mktemp) ( background_watchdog & echo $! > "$wf" ) read VM_WATCHDOG_PID < "$wf" rm -f "$wf" } kill_watchdog() { test -n "$VM_WATCHDOG_PID" && kill "$VM_WATCHDOG_PID" VM_WATCHDOG_PID= } vm_set_personality_syscall() { local archname archname=`perl -V:archname 2>/dev/null` archname="${archname#archname=?}" case "$archname" in x86_64*) PERSONALITY_SYSCALL=135 ;; alpha*) PERSONALITY_SYSCALL=324 ;; sparc*) PERSONALITY_SYSCALL=191 ;; ia64*) PERSONALITY_SYSCALL=1140 ;; i?86*|ppc*|aarch64*|arm*|sh4|cris|m68k*|s390*|unicore32|microblaze|riscv*) PERSONALITY_SYSCALL=136 ;; *) cleanup_and_exit 1 "Unknown architecture personality: '$archname'" ;; esac } # used before calling kvm or xen linux64() { perl -e 'syscall('$PERSONALITY_SYSCALL', 0); exec(@ARGV) || die("$ARGV[0]: $!\n")' "$@" } vm_start_statistics() { if test "$DO_STATISTICS" = 1 ; then rm -f /.build/_statistics.exit ( background_monitor_process & ) fi } vm_exit_statistics() { if test "$DO_STATISTICS" = 1 ; then rm -f /.build/_statistics.exit fi } vm_detect_2nd_stage() { if test ! -e /.build/build.data -o -n "$BUILD_IGNORE_2ND_STAGE" ; then return 1 fi . /.build/build.data if test -z "$VM_TYPE" ; then return 1 fi BUILD_OPTIONS_PARSED=true if test $$ -eq 1 || test $$ -eq 2 ; then # ignore special init signals if we're init # we're using ' ' instead of '' so that the signal handlers # are reset in the child processes trap ' ' HUP TERM $0 "$@" cleanup_and_exit $? fi test -n "$VM_WATCHDOG" -a -z "$PERSONALITY_SET" && echo "### VM INTERACTION END ###" echo "2nd stage started in virtual machine" # fedora packages sometimes do not have the needed links ldconfig BUILD_ROOT=/ BUILD_DIR=/.build echo "machine type: `uname -m`" echo "Linux version: `uname -rv`" echo "Increasing log level from now on..." echo 4 > /proc/sysrq-trigger echo "Enable sysrq operations" echo 1 > /proc/sys/kernel/sysrq if test "$PERSONALITY" != 0 -a -z "$PERSONALITY_SET" ; then export PERSONALITY_SET=true echo "switching personality to $PERSONALITY..." # this is 32bit perl/glibc, thus the 32bit syscall number exec perl -e 'syscall(136, '$PERSONALITY') == -1 && warn("personality: $!\n");exec "/.build/build" || die("/.build/build: $!\n")' fi RUNNING_IN_VM=true test -e /proc/version || mount -orw -n -tproc none /proc if test "$VM_TYPE" != lxc -a "$VM_TYPE" != docker -a "$VM_TYPE" != nspawn ; then mount -n ${VMDISK_MOUNT_OPTIONS},remount,rw / fi umount /run >/dev/null 2>&1 # mount /sys if ! test -e /sys/block; then mkdir -p /sys mount -orw -n -tsysfs sysfs /sys # Docker already has sysfs mounted ro elsewhere, # need to remount rw explicitly. mount -o remount,rw sysfs /sys fi # qemu inside of xen does not work, check again with kvm later before enabling this # if test -e /dev/kqemu ; then # # allow abuild user to run qemu # chmod 0666 /dev/kqemu # fi test -d /dev/shm || rm -f /dev/shm mkdir -p /dev/pts mkdir -p /dev/shm mount -n -tdevpts -omode=0620,gid=5 none /dev/pts mount -n -ttmpfs none /dev/shm if test -n "$VM_SWAP" ; then if test "$VM_SWAP" != "${VM_SWAP#LABEL=}" ; then i=$(blkid -l -o device -t "$VM_SWAP") if test "$i" = "${i#/}" ; then cleanup_and_exit 1 "could not find swap device with $VM_SWAP" fi echo "resolved swap device $VM_SWAP to $i" VM_SWAP=$i fi for i in 1 2 3 4 5 6 7 8 9 10 ; do test -e "$VM_SWAP" && break test $i = 1 && echo "waiting for $VM_SWAP to appear" echo -n . sleep 1 done test $i = 1 || echo # recreate the swap device manually if it didn't exist for some # reason, hardcoded to hda2 atm if ! test -b "$VM_SWAP" ; then rm -f "$VM_SWAP" umask 027 mknod "$VM_SWAP" b 3 2 umask 022 fi # Do not rely on external system writing the signature, it might differ... mkswap "$VM_SWAP" swapon -v "$VM_SWAP" || exit 1 fi HOST="$VM_HOSTNAME" # repair dracut damage, see bsc#922676 test -L /var/run -a ! -e /var/run && rm -f /var/run test -L /var/lock -a ! -e /var/lock && rm -f /var/lock # start a process monitoring max filesystem usage during build vm_start_statistics if test ! -e /dev/.udev ; then echo "WARNING: udev not running, creating extra device nodes" test -e /dev/fd || ln -sf /proc/self/fd /dev/fd test -e /etc/mtab || ln -sf /proc/mounts /etc/mtab fi # set date to build start on broken systems (now < build start) if test $(date '+%s') -lt $(date -r /.build/.date '+%s') ; then echo -n "WARNING: system has a broken clock, setting it to a newer time: " date -s `cat /.build/.date` fi # Enable Core dump generation mkdir -p "$BUILD_ROOT/.build/cores" echo "/.build/cores/%p" > /proc/sys/kernel/core_pattern return 0 } vm_set_filesystem_type() { vmfstype="" vmfsoptions="" if test -n "$BUILD_DIST" ; then # testing for build specific filesystem, which are more important then worker defaults vmfstype=`queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" buildflags vmfstype` vmfsoptions=`queryconfig --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" buildflags vmfsoptions` fi test -n "$vmfstype" && VMDISK_FILESYSTEM="$vmfstype" test -n "$vmfsoptions" && VMDISK_FILESYSTEM_OPTIONS="$vmfsoptions" # use either commandline specified fs or ext3 as fallback test -n "$VMDISK_FILESYSTEM" || VMDISK_FILESYSTEM=ext3 } vm_set_mount_options() { if test "$VMDISK_MOUNT_OPTIONS" = __default; then if test "$VMDISK_FILESYSTEM" = reiserfs ; then VMDISK_MOUNT_OPTIONS='-o data=writeback,commit=150,noatime' elif test "$VMDISK_FILESYSTEM" = btrfs ; then VMDISK_MOUNT_OPTIONS='-o nobarrier,noatime' elif test "$VMDISK_FILESYSTEM" = "ext4" ; then VMDISK_MOUNT_OPTIONS='-o noatime' elif test "$VMDISK_FILESYSTEM" = "ext3" ; then VMDISK_MOUNT_OPTIONS='-o data=writeback,nobarrier,commit=150,noatime' elif test "$VMDISK_FILESYSTEM" = "ext2" ; then VMDISK_MOUNT_OPTIONS='-o noacl,noatime' elif test "$VMDISK_FILESYSTEM" = "xfs" ; then VMDISK_MOUNT_OPTIONS='-o noatime' else VMDISK_MOUNT_OPTIONS='-o noatime' fi fi } vm_set_defaults() { # setup root/swap defaults and type, called after option verification if test "$VM_ROOT" = 1 ; then VM_ROOT="$BUILD_ROOT.img" if test -z "$VM_SWAP" -a "$VM_TYPE" != emulator ; then VM_SWAP="$BUILD_ROOT.swap" fi fi if test -n "$VM_ROOT" -a -z "$VM_ROOT_TYPE" ; then VM_ROOT_TYPE=file test -b "$VM_ROOT" && VM_ROOT_TYPE=device fi if test -n "$VM_SWAP" -a -z "$VM_SWAP_TYPE" ; then VM_SWAP_TYPE=file test -b "$VM_SWAP" && VM_SWAP_TYPE=device fi } # # create swap space # vm_setup_swap() { if test -n "$VMDISK_CLEAN" ; then # delete old swap to get rid of the old blocks if test -n "$VM_SWAP" -a "$VM_SWAP_TYPE" = file -a -f "$VM_SWAP" ; then echo "Deleting old $VM_SWAP" rm -f "$VM_SWAP" fi fi if test -n "$VM_SWAP" -a "$VM_SWAP_TYPE" = file ; then vm_img_create "$VM_SWAP" "$VMDISK_SWAPSIZE" fi if test -n "$VM_SWAP" ; then vm_attach_swap dd if=/dev/zero of="$VM_SWAP" bs=1024 count=1 conv=notrunc 2>/dev/null if test "$VM_SWAPDEV" != "${VM_SWAPDEV#LABEL=}"; then # call mkswap to set a label mkswap -L "${VM_SWAPDEV#LABEL=}" "$VM_SWAP" fi vm_detach_swap # mkswap happens inside of the vm fi } # # create file system, mount file system to $BUILD_ROOT # vm_setup() { vm_set_filesystem_type vm_set_mount_options echo "VM_ROOT: $VM_ROOT, VM_SWAP: $VM_SWAP" VM_USE_VIRT_FS= if test -z "$RUNNING_IN_VM" -a -n "$VM_TYPE" -a -n "$VM_ROOT"; then if test -x /usr/bin/virt-make-fs -a "$VMDISK_FILESYSTEM" = ext3 -a -z "$VMDISK_FILESYSTEM_OPTIONS" ; then VM_USE_VIRT_FS=true fi fi vm_attach_root vm_setup_swap # this should not be needed, but sometimes a xen instance got lost test "$VM_TYPE" = xen && vm_purge_xen if test -n "$VMDISK_CLEAN" ; then # delete old root to get rid of the old blocks if test -n "$VM_ROOT" -a "$VM_ROOT_TYPE" = file -a -f "$VM_ROOT" ; then echo "Deleting old $VM_ROOT" rm -f "$VM_ROOT" fi fi # using virt-make-fs for ext3 file VMDISK_FILESYSTEM # so nothing is needed to do part from creating appropriate folders # and calling virt-make-fs accordingly if test -n "$VM_USE_VIRT_FS" ; then echo "Using virt-make-fs to create root image" if test -z "$CLEAN_BUILD" ; then echo "Recovering former build root" rm -rf "$BUILD_ROOT" debugfs -f <(echo rdump / $BUILD_ROOT) "$VM_ROOT" fi return 0 fi if test "$VM_ROOT_TYPE" = file ; then if test -n "$CLEAN_BUILD" ; then vm_img_create "$VM_ROOT" "$VMDISK_ROOTSIZE" else local origrootsize test -e "$VM_ROOT" -a -e "${VM_ROOT}.size" && origrootsize=$(cat "${VM_ROOT}.size" 2>/dev/null) if test -z "$origrootsize" -o "$origrootsize" != "$VMDISK_ROOTSIZE" ; then # the size has changed, re-create file system vm_img_create "$VM_ROOT" "$VMDISK_ROOTSIZE" vm_img_mkfs "$VMDISK_FILESYSTEM" "$VM_ROOT" "$VMDISK_FILESYSTEM_OPTIONS" || cleanup_and_exit 4 fi fi fi if test ! -e "$VM_ROOT" ; then cleanup_and_exit 4 "you need to create $VM_ROOT first" fi if test -n "$CLEAN_BUILD" ; then vm_img_mkfs "$VMDISK_FILESYSTEM" "$VM_ROOT" "$VMDISK_FILESYSTEM_OPTIONS" || cleanup_and_exit 4 fi # now mount root/swap mkdir_build_root if test -w /root ; then if test -b $VM_ROOT ; then # mount device directly mount $VMDISK_MOUNT_OPTIONS $VM_ROOT $BUILD_ROOT || cleanup_and_exit 4 else mount ${VMDISK_MOUNT_OPTIONS},loop $VM_ROOT $BUILD_ROOT || cleanup_and_exit 4 fi else if ! mount $BUILD_ROOT; then echo "mounting the build root failed. An fstab entry is probably missing or incorrect." echo "/etc/fstab should contain an entry like this:" echo "$VM_ROOT $BUILD_ROOT auto noauto,user,loop 0 0" cleanup_and_exit 4 fi fi } vm_update_hostarch() { local kernel="$vm_kernel" local hostarchfile local newhostarch local vm_type="$VM_TYPE" test "$vm_type" = "qemu" && vm_type=kvm if test -z "$VM_KERNEL" -a -f "$BUILD_ROOT/.build.kernel.$vm_type" -a ! -L "$BUILD_ROOT/.build.kernel.$vm_type" ; then kernel="$BUILD_ROOT/.build.kernel.$vm_type" if test -f "$BUILD_ROOT/.build.hostarch.$vm_type" -a ! -L "$BUILD_ROOT/.build.hostarch.$vm_type" ; then hostarchfile="$BUILD_ROOT/.build.hostarch.$vm_type" fi elif test -n "$kernel" -a -f "$kernel" -a -f "$kernel.hostarch" ; then hostarchfile="$kernel.hostarch" fi if test -n "$hostarchfile" -a -f "$hostarchfile" ; then local dummy read newhostarch dummy < "$hostarchfile" elif test -n "$kernel" -a -f "$kernel" ; then case `objdump -f "$kernel" | sed -ne 's/.*file format //p'` in elf64-powerpcle) newhostarch=ppc64le ;; elf64-powerpc) newhostarch=ppc64 ;; esac fi if test -n "$newhostarch" -a "$newhostarch" != "$BUILD_HOST_ARCH" ; then echo "setting hostarch to $newhostarch" BUILD_HOST_ARCH="$newhostarch" # update BUILD_INITVM_ARCH build_host_arch fi } # # prepare for vm startup # vm_first_stage() { vm_set_personality_syscall rm -rf "$BUILD_ROOT/.build" mkdir -p "$BUILD_ROOT/.build" TIME_PREINSTALL= if test "$DO_INIT" = true ; then # do first stage of init_buildsystem rm -f $BUILD_ROOT/.build.success set -- init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" --prepare "${initbuildsysstuff[@]}" "${definesnstuff[@]}" "${repos[@]}" $CLEAN_BUILD $USEUSEDFORBUILD $RPMLIST "$MYSRCDIR/$RECIPEFILE" $ADDITIONAL_PACKS echo "$* ..." start_time=`date +%s` "$@" || cleanup_and_exit 1 check_exit TIME_PREINSTALL=$(( `date +%s` - $start_time )) unset start_time if test ! -w /root ; then # remove setuid bit if files belong to user to make e.g. mount work find $BUILD_ROOT/{bin,sbin,usr/bin,usr/sbin} -type f -uid $UID -perm /4000 -print0 | xargs -0 --no-run-if-empty chmod -s fi copy_oldpackages fi # start up VM, rerun ourself cp -a $BUILD_DIR/. $BUILD_ROOT/.build if ! test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then rm -rf "$BUILD_ROOT/.build-srcdir" mkdir "$BUILD_ROOT/.build-srcdir" || cleanup_and_exit 1 if test "$BUILDTYPE" = kiwi -o "$BUILDTYPE" = docker -o "$BUILDTYPE" = fissile -o "$BUILDTYPE" = podman ; then cp -pRL "$MYSRCDIR"/* $BUILD_ROOT/.build-srcdir else cp -p "$MYSRCDIR"/* $BUILD_ROOT/.build-srcdir fi MYSRCDIR=$BUILD_ROOT/.build-srcdir else # cwd is at $BUILD_ROOT/.build-srcdir which we want to # umount later so step aside cd "$SRCDIR" fi # do vm specific fixups vm_fixup # update the hostarch if test -n "$VM_ROOT" ; then vm_update_hostarch fi # the watchdog needs a log file test -n "$LOGFILE" || VM_WATCHDOG= # put our config into .build/build.data rm -rf $BUILD_ROOT/.build/build.data Q="'\''" echo "RECIPEFILE='${RECIPEFILE//"'"/$Q}'" > $BUILD_ROOT/.build/build.data echo "BUILD_JOBS='${BUILD_JOBS//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "BUILD_ARCH='${BUILD_ARCH//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "BUILD_RPMS='${BUILD_RPMS//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data case $BUILD_DIST in */*) cp $BUILD_DIST $BUILD_ROOT/.build/build.dist BUILD_DIST=/.build/build.dist ;; esac echo "BUILD_DIST='${BUILD_DIST//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "RELEASE='${RELEASE//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "BUILD_DEBUG='${BUILD_DEBUG//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "SIGNDUMMY='${SIGNDUMMY//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "DO_LINT='${DO_LINT//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "DO_CHECKS='${DO_CHECKS//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "NOROOTFORBUILD='${NOROOTFORBUILD//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "CREATE_BASELIBS='$CREATE_BASELIBS'" >> $BUILD_ROOT/.build/build.data echo "REASON='${REASON//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "CHANGELOG='${CHANGELOG//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "INCARNATION='${INCARNATION//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "DISTURL='${DISTURL//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "DO_INIT='${DO_INIT//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "DO_INIT_TOPDIR='${DO_INIT_TOPDIR//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "KIWI_PARAMETERS='${KIWI_PARAMETERS//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "VM_TELNET='${VM_TELNET//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data echo "VM_CONSOLE_INPUT='${VM_CONSOLE_INPUT//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data test -n "$VM_SWAP" && echo "VM_SWAP='${VM_SWAPDEV//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data test -n "$VMDISK_MOUNT_OPTIONS" && echo "VMDISK_MOUNT_OPTIONS='${VMDISK_MOUNT_OPTIONS//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data PERSONALITY=0 test -n "$PERSONALITY_SYSCALL" && PERSONALITY=`perl -e 'print syscall('$PERSONALITY_SYSCALL', 0)."\n"'` test "$PERSONALITY" = -1 && PERSONALITY=0 # syscall failed? case $(uname -m) in ppc|ppcle|s390) PERSONALITY=8 ;; # ppc/s390 kernel never tells us if a 32bit personality is active, assume we run on 64bit aarch64) test "$BUILD_ARCH" != "${BUILD_ARCH#armv[567]}" && PERSONALITY=8 ;; # workaround, to be removed esac test "$VM_TYPE" = lxc -o "$VM_TYPE" = docker -o "$VM_TYPE" = nspawn && PERSONALITY=0 echo "PERSONALITY='$PERSONALITY'" >> $BUILD_ROOT/.build/build.data echo "VM_HOSTNAME='$HOST'" >> $BUILD_ROOT/.build/build.data echo -n "definesnstuff=(" >> $BUILD_ROOT/.build/build.data shellquote "${definesnstuff[@]}" >> $BUILD_ROOT/.build/build.data echo ")" >> $BUILD_ROOT/.build/build.data echo -n "repos=(" >> $BUILD_ROOT/.build/build.data shellquote "${repos[@]}" >> $BUILD_ROOT/.build/build.data echo ")" >> $BUILD_ROOT/.build/build.data echo "VM_TYPE='$VM_TYPE'" >> $BUILD_ROOT/.build/build.data echo "RUN_SHELL='$RUN_SHELL'" >> $BUILD_ROOT/.build/build.data echo "RUN_SHELL_CMD='$RUN_SHELL_CMD'" >> $BUILD_ROOT/.build/build.data echo "DO_STATISTICS='$DO_STATISTICS'" >> $BUILD_ROOT/.build/build.data echo "TIME_PREINSTALL='$TIME_PREINSTALL'" >> $BUILD_ROOT/.build/build.data echo "VM_WATCHDOG='$VM_WATCHDOG'" >> $BUILD_ROOT/.build/build.data echo "BUILDENGINE='$BUILDENGINE'" >> $BUILD_ROOT/.build/build.data echo "CCACHE='$CCACHE'" >> $BUILD_ROOT/.build/build.data echo "ABUILD_TARGET='$ABUILD_TARGET'" >> $BUILD_ROOT/.build/build.data echo "BUILD_FLAVOR='$BUILD_FLAVOR'" >> $BUILD_ROOT/.build/build.data echo "OBS_PACKAGE='$OBS_PACKAGE'" >> $BUILD_ROOT/.build/build.data echo "REMOVE_CCACHE='$REMOVE_CCACHE'" >> $BUILD_ROOT/.build/build.data # fallback time for broken hosts rm -rf $BUILD_ROOT/.build/.date date '+@%s' > $BUILD_ROOT/.build/.date # we're done with the root file system, unmount buildroot_umount /proc/sys/fs/binfmt_misc buildroot_umount /proc buildroot_umount /sys buildroot_umount /dev/pts buildroot_umount /dev/shm buildroot_umount /mnt vm_init_script="/.build/build" if check_use_emulator ; then vm_init_script="/.build/$INITVM_NAME" fi # rsync as source and dest could be same test -L "$BUILD_ROOT/.build.oldpackages/_ccache.tar" && buildroot_rm .build.oldpackages/_ccache.tar test -n "$PKG_CCACHE" && \ mkdir -p "$BUILD_ROOT/.build.oldpackages/" && \ rsync -av "$PKG_CCACHE" "$BUILD_ROOT/.build.oldpackages/_ccache.tar" if test -n "$VM_ROOT" ; then # copy out kernel & initrd (if they exist) during unmounting VM image KERNEL_TEMP_DIR= local vm_type="$VM_TYPE" test "$vm_type" = "qemu" && vm_type=kvm if test -z "$VM_KERNEL" -a -f "$BUILD_ROOT/.build.kernel.$vm_type" -a ! -L "$BUILD_ROOT/.build.kernel.$vm_type" ; then KERNEL_TEMP_DIR=`mktemp -d` cp "$BUILD_ROOT/.build.kernel.$vm_type" "$KERNEL_TEMP_DIR/kernel" if test -f "$BUILD_ROOT/.build.initrd.$vm_type" -a ! -L "$BUILD_ROOT/.build.initrd.$vm_type" ; then cp "$BUILD_ROOT/.build.initrd.$vm_type" "$KERNEL_TEMP_DIR/initrd" fi fi check_exit # needs to work otherwise we have a corrupted file system if test -z "$VM_USE_VIRT_FS" ; then if ! umount $BUILD_ROOT; then test -n "$KERNEL_TEMP_DIR" && rm -rf "$KERNEL_TEMP_DIR" cleanup_and_exit 4 fi else /usr/bin/virt-make-fs --format=raw -t ext3 --size="$VMDISK_ROOTSIZE"M $BUILD_ROOT $VM_ROOT || cleanup_and_exit 4 #rm -rf -- "$BUILD_ROOT"/* fi # copy back the kernel and set it for VM if test -n "$KERNEL_TEMP_DIR" ; then rm -rf "$BUILD_ROOT/boot" mkdir -p "$BUILD_ROOT/boot" mv "$KERNEL_TEMP_DIR/kernel" "$BUILD_ROOT/boot/kernel" vm_kernel="$BUILD_ROOT/boot/kernel" if test -e "$KERNEL_TEMP_DIR/initrd" ; then mv "$KERNEL_TEMP_DIR/initrd" "$BUILD_ROOT/boot/initrd" test -z "$VM_INITRD" && vm_initrd="$BUILD_ROOT/boot/initrd" fi rmdir "$KERNEL_TEMP_DIR" fi fi vm_detach_root echo "booting $VM_TYPE..." # start watchdog if requested if test -n "$VM_WATCHDOG" ; then start_watchdog echo "### VM INTERACTION START ###" fi vm_startup # kill watchdog again if test -n "$VM_WATCHDOG" ; then echo "### VM INTERACTION END ###" kill_watchdog fi vm_attach_root if test -n "$VM_SWAP" -a -z "$RUN_SHELL" ; then vm_attach_swap BUILDSTATUS=$(dd if="$VM_SWAP" bs=12 count=1 2>/dev/null | tr '\0' a) case $BUILDSTATUS in BUILDSTATUS[029]) mkdir -p $BUILD_ROOT/.build.packages cd $BUILD_ROOT/.build.packages || cleanup_and_exit 1 echo "build: extracting built packages..." extractbuild --disk "$VM_ROOT" --input "$VM_SWAP" --skip 512 -v || cleanup_and_exit 3 if test "$DO_STATISTICS" = 1 ; then mkdir -p OTHER TIME_TOTAL=$(( `date +%s` - $TIME_START_TIME )) echo "TIME_total: $TIME_TOTAL" >> OTHER/_statistics fi cleanup_and_exit ${BUILDSTATUS#BUILDSTATUS} ;; BUILDSTATUS*) cleanup_and_exit ${BUILDSTATUS#BUILDSTATUS} ;; *) echo "No buildstatus set, either the base system is broken (kernel/initrd/udev/glibc/bash/perl)" echo "or the build host has a kernel or hardware problem..." cleanup_and_exit 3 ;; esac cleanup_and_exit 1 fi } vm_save_statistics() { echo "... saving statistics" local sys_mounted otherdir 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 echo "" >> $otherdir/_statistics rm /.build/_statistics.df fi if test -e /.build/_statistics.memory ; then echo -n "MAX_mb_used_memory: " >> $otherdir/_statistics cat /.build/_statistics.memory >> $otherdir/_statistics echo "" >> $otherdir/_statistics rm /.build/_statistics.memory fi if ! test -e /sys/block; then mkdir -p /sys mount -n sys /sys -t sysfs sys_mounted=1 fi device="hda1" test -e /dev/sda && device="sda" test -e /dev/vda && device="vda" test -e /dev/xvda && device="xvda" # in newer XEN setups test -e /dev/dasda && device="dasda" # in z/VM test -e /dev/nfhd0 && device="nfhd0" # in aranym if test -e /sys/block/${device}/stat ; then disk=(`cat /sys/block/${device}/stat`) test "0${disk[0]}" -gt 0 && echo "IO_requests_read: ${disk[0]}" >> $otherdir/_statistics test "0${disk[2]}" -gt 0 && echo "IO_sectors_read: ${disk[2]}" >> $otherdir/_statistics test "0${disk[4]}" -gt 0 && echo "IO_requests_write: ${disk[4]}" >> $otherdir/_statistics test "0${disk[6]}" -gt 0 && echo "IO_sectors_write: ${disk[6]}" >> $otherdir/_statistics else echo "ERROR: no root disk device found, yet another new device name?" ls -l /sys/block/ fi test -n "$sys_mounted" && umount /sys } # args: resultdirs vm_wrapup_build() { test "$DO_STATISTICS" = 1 && vm_save_statistics if test -n "$VM_SWAP"; then echo "... saving built packages" swapoff "$VM_SWAP" pushd "$BUILD_ROOT$TOPDIR" >/dev/null find "$@" -print0 | computeblocklists --padstart 512 --padend 512 -v --manifest - -0 > "$VM_SWAP" || cleanup_and_exit 1 popd >/dev/null fi } vm_setup_network() { 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 if test -n "$VM_TELNET"; then VM_TELNET_DEVICE=$( cd /sys/class/net/; echo * ) VM_TELNET_DEVICE=${VM_TELNET_DEVICE#lo } VM_TELNET_DEVICE=${VM_TELNET_DEVICE%% *} if test -z "$VM_TELNET_DEVICE" ; then cleanup_and_exit 1 "ERROR: no network device found for telnet server" fi if test -x /sbin/ip ; then ip addr add 10.0.2.15/8 dev ${VM_TELNET_DEVICE} ip addr add ::1/24 dev ${VM_TELNET_DEVICE} ip link set ${VM_TELNET_DEVICE} up elif test -x /sbin/ifconfig ; then ifconfig ${VM_TELNET_DEVICE} 10.0.2.15 up ifconfig ${VM_TELNET_DEVICE} add ::1/24 else cleanup_and_exit 1 "ERROR: neither /sbin/ifconfig nor /sbin/ip is installed, please specify correct package via -x option" fi fi if test -n "$VM_HOSTNAME" ; then if test -e /bin/hostname -o -e /usr/bin/hostname -o -e /sbin/hostname -o -e /usr/sbin/hostname ; then hostname "$VM_HOSTNAME" elif test -e /proc/sys/kernel/hostname ; then echo "$VM_HOSTNAME" > /proc/sys/kernel/hostname fi fi if test -n "$VM_TELNET"; then echo WARNING: telnet option used, setting up telnet server ${VM_TELNET_DEVICE} if test -x /usr/sbin/in.telnetd; then ( /usr/sbin/in.telnetd -L /.build/telnet_login_wrapper -debug 23 & ) else cleanup_and_exit 1 "ERROR: /usr/sbin/in.telnetd is not installed, please specify correct package via -x option" fi fi } obs-build-20210120/build-vm-docker000066400000000000000000000041071400202264700165310ustar00rootroot00000000000000# # Docker specific functions # ################################################################ # # Copyright (c) 2015 Oleg Girko # Copyright (c) 2015 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 # ################################################################ vm_verify_options_docker() { VM_ROOT= VM_SWAP= } vm_startup_docker() { local name="obsbuild.${BUILD_ROOT##*/}" docker rm "$name" >/dev/null 2>&1 || true docker run \ --rm --name "$name" --cap-add=sys_admin --cap-add=MKNOD --net=none \ --mount "type=bind,source=$BUILD_ROOT,destination=/mnt" busybox /bin/chroot /mnt "$vm_init_script" BUILDSTATUS="$?" test "$BUILDSTATUS" != 255 || BUILDSTATUS=3 cleanup_and_exit "$BUILDSTATUS" } vm_kill_docker() { local name="obsbuild.${BUILD_ROOT##*/}" docker stop -t 2 "$name" || true } vm_fixup_docker() { # loop devices are needed for kiwi builds at least max_loop=`cat /sys/module/loop/parameters/max_loop` if [ "$max_loop" = "0" ]; then max_loop=16 fi for num in `seq 0 $max_loop`; do test -b /dev/loop$num || mknod -m660 /dev/loop$num b 7 $num done } vm_attach_root_docker() { : } vm_attach_swap_docker() { : } vm_detach_root_docker() { : } vm_detach_swap_docker() { : } vm_cleanup_docker() { : } vm_sysrq_docker() { : } vm_wipe_docker() { local name="obsbuild.${BUILD_ROOT##*/}" docker rm "$name" >/dev/null 2>&1 || true } obs-build-20210120/build-vm-ec2000066400000000000000000000236611400202264700157410ustar00rootroot00000000000000# # EC2 specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ EC2_BUILD_TYPE="t1.micro" EC2_INSTANCE_ID= EC2_VOLUME_ROOT= EC2_VOLUME_SWAP= cloud_volume_attach_ec2() { local VM_SERVER="$1" local VM_VOL_NAME="$2" temp_file=`mktemp` if ! ec2-attach-volume "$VM_VOL_NAME" -d /dev/sdz -i `ec2-instance-id` --region "$BUILD_EC2_REGION" > "$temp_file"; then rm -f "$temp_file" cleanup_and_exit 1 fi # wait that it becomes available while true; do state=`ec2_volume_state "$VM_VOL_NAME"` test "$state" = attached && break sleep 1 done # print device node grep ^ATTACHMENT "$temp_file" | awk '{ print $4 }' rm -f "$temp_file" } cloud_volume_detach_ec2() { local VM_SERVER="$1" local VM_VOL_NAME="$2" state=`ec2_volume_state "$VM_VOL_NAME"` if test "$state" != available ; then ec2-detach-volume "$VM_VOL_NAME" --region "$BUILD_EC2_REGION" || return 3 fi return 0 } vm_wipe_ec2() { # not yet implemented : } vm_verify_options_ec2() { EC2_VOLUME_ROOT="$VM_ROOT" EC2_VOLUME_SWAP="$VM_SWAP" VM_ROOT_TYPE=unattached VM_SWAP_TYPE=unattached if test -n "$KILL" -o -n "$DO_WIPE" ; then return fi # verify settings if test -z "$AWS_ACCESS_KEY" -o -z "$AWS_ACCESS_KEY" ; then cleanup_and_exit 3 "ERROR: No amazon EC2 environment set. Set AWS_ACCESS_KEY and AWS_SECRET_KEY." fi . /etc/profile.d/ec2.sh EC2_INSTANCE_ID=`ec2-instance-id` BUILD_EC2_AKI= BUILD_EC2_ZONE=`ec2-meta-data placement/availability-zone` BUILD_EC2_REGION=${BUILD_EC2_ZONE%?} case "$BUILD_EC2_ZONE" in us-east-1) BUILD_EC2_AKI=aki-88aa75e1 ;; us-west-1) BUILD_EC2_AKI=aki-f77e26b2 ;; us-west-2) BUILD_EC2_AKI=aki-fc37bacc ;; eu-west-1) BUILD_EC2_AKI=aki-71665e05 ;; ap-southeast-1) BUILD_EC2_AKI=aki-fe1354ac ;; ap-southeast-2) BUILD_EC2_AKI=aki-3f990e05 ;; ap-northeast-1) BUILD_EC2_AKI=aki-44992845 ;; sa-east-1) BUILD_EC2_AKI=aki-c48f51d9 ;; us-gov-west-1) BUILD_EC2_AKI=aki-79a4c05a ;; esac if test -z "$BUILD_EC2_AKI" ; then cleanup_and_exit 1 "Unknown Amazon EC2 Zone: $BUILD_EC2_ZONE" fi if test -z "$BUILD_EC2_AKI" ; then cleanup_and_exit 3 "ERROR: No image refering to kernel and ramdisk is defined in BUILD_EC2_AKI env." fi if test -z "$VM_ROOT" ; then cleanup_and_exit 3 "ERROR: No worker root VM volume name specified." fi if test -z "$VM_SWAP" ; then cleanup_and_exit 3 "ERROR: No worker swap VM volume name specified." fi VM_SWAPDEV=/dev/sdb1 # in the vm } vm_attach_root_ec2() { VM_ROOT=`cloud_volume_attach_ec2 "$VM_SERVER" "$EC2_VOLUME_ROOT" test "${VM_ROOT:0:5}" = /dev/ || cleanup_and_exit 3 VM_ROOT_TYPE=device } vm_attach_swap_ec2() { VM_SWAP=`cloud_volume_attach_ec2 "$VM_SERVER" "$EC2_VOLUME_SWAP" test "${VM_SWAP:0:5}" = /dev/ || cleanup_and_exit 3 VM_SWAP_TYPE=device } vm_detach_root_ec2() { test "$VM_ROOT_TYPE" = device && cloud_volume_detach_ec2 "$VM_SERVER" "$EC2_VOLUME_ROOT" VM_ROOT_TYPE=unattached } vm_detach_swap_ec2() { test "$VM_SWAP_TYPE" = device && cloud_volume_detach_ec2 "$VM_SERVER" "$EC2_VOLUME_SWAP" VM_SWAP_TYPE=unattached } vm_fixup_ec2() { # No way to handle this via init= parameter here.... buildroot_rm /sbin/init echo "#!/bin/sh" > "$BUILD_ROOT/sbin/init" echo 'exec /.build/build "$@"' >> "$BUILD_ROOT/sbin/init" chmod 0755 "$BUILD_ROOT/sbin/init" # use the instance kernel if no kernel got installed via preinstall assert_dirs boot if ! test -e "$BUILD_ROOT/boot/vmlinuz"; then rm -f "$BUILD_ROOT/boot/vmlinuz" "$BUILD_ROOT/boot/initrd" cp /boot/vmlinuz-ec2 "$BUILD_ROOT/boot/vmlinuz" cp /boot/initrd-ec2 "$BUILD_ROOT/boot/initrd" fi # install menu.lst for pv grub if ! test -e "$BUILD_ROOT/boot/grub/menu.lst"; then assert_dirs boot/grub mkdir -p "$BUILD_ROOT/boot/grub" buildroot_rm /boot/grub/menu.lst echo "serial --unit=0 --speed=9600" > "$BUILD_ROOT/boot/grub/menu.lst" echo "terminal --dumb serial" >> "$BUILD_ROOT/boot/grub/menu.lst" echo "default 0" >> "$BUILD_ROOT/boot/grub/menu.lst" echo "timeout 0" >> "$BUILD_ROOT/boot/grub/menu.lst" echo "hiddenmenu" >> "$BUILD_ROOT/boot/grub/menu.lst" echo "" >> "$BUILD_ROOT/boot/grub/menu.lst" echo "title default" >> "$BUILD_ROOT/boot/grub/menu.lst" echo " root (hd0)" >> "$BUILD_ROOT/boot/grub/menu.lst" echo " kernel /boot/vmlinuz root=/dev/sda1 xencons=xvc0 console=xvc0 splash=silent $vm_linux_kernel_parameter" >> "$BUILD_ROOT/boot/grub/menu.lst" echo " initrd /boot/initrd" >> "$BUILD_ROOT/boot/grub/menu.lst" fi } vm_cleanup_ec2() { cloud_volume_detach_ec2 "$VM_SERVER" "$EC2_VOLUME_ROOT" cloud_volume_detach_ec2 "$VM_SERVER" "$EC2_VOLUME_SWAP" test -n "$EC2_SNAP_root" && ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_root" test -n "$EC2_SNAP_swap" && ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_swap" test -n "$EC2_EXTRACT_VOLUME_root" && ec2-delete-volume --region "$BUILD_EC2_REGION" "$EC2_EXTRACT_VOLUME_root" test -n "$EC2_EXTRACT_VOLUME_swap" && ec2-delete-volume --region "$BUILD_EC2_REGION" "$EC2_EXTRACT_VOLUME_swap" } vm_sysrq_ec2() { : } vm_kill_ec2() { if ec2-describe-instance-status "$VM_BUILD_INSTANCE" --region "$BUILD_EC2_REGION" >/dev/null 2>&1 ; then if ec2-terminate-instances "$VM_BUILD_INSTANCE" >/dev/null 2>&1 ; then cleanup_and_exit 1 "could not kill EC2 instance $VM_BUILD_INSTANCE" fi fi } vm_startup_ec2() { EC2_SNAP_root=`ec2-create-snapshot --region "$BUILD_EC2_REGION" "$EC2_VOLUME_ROOT" | awk '{ print $2 }'` if test "$EC2_SNAP_root" = "${EC2_SNAP_root#snap-}" ; then cleanup_and_exit 3 "ERROR: Failed to create snapshot for root disk $EC2_VOLUME_ROOT" fi EC2_SNAP_swap=`ec2-create-snapshot --region "$BUILD_EC2_REGION" "$EC2_VOLUME_SWAP" | awk '{ print $2 }'` if test "$EC2_SNAP_swap" = "${EC2_SNAP_swap#snap-}" ; then echo "ERROR: Failed to create snapshot for swap disk $EC2_VOLUME_SWAP" ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_root" cleanup_and_exit 3 fi # wait for snapshots being processed while true; do c=`ec2-describe-snapshots --region "$BUILD_EC2_REGION" "$EC2_SNAP_root" "$EC2_SNAP_swap" | grep completed | wc -l` test "$c" = 2 && break done EC2_AMI=`ec2-register --region "$BUILD_EC2_REGION" -n build-$EC2_VOLUME_ROOT -a x86_64 -b "/dev/sda1=$EC2_SNAP_root::false" -b "/dev/sdb1=$EC2_SNAP_swap::false" --kernel "$BUILD_EC2_AKI" | awk '{ print $2 }'` if test "$EC2_AMI" == "${EC2_AMI#ami-}" ; then echo "ERROR: Failed to register the AMI" ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_root" ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_swap" cleanup_and_exit 3 fi INSTANCE=`ec2-run-instances --region "$BUILD_EC2_REGION" -z "$BUILD_EC2_ZONE" -t $EC2_BUILD_TYPE --kernel "$BUILD_EC2_AKI" --instance-initiated-shutdown-behavior terminate "$EC2_AMI" | grep ^INSTANCE | awk '{ print $2 }'` if test "$INSTANCE" == "${INSTANCE#i-}" ; then echo "ERROR: Failed to run the instance for AMI $EC2_AMI" ec2-deregister --region "$BUILD_EC2_REGION" "$EC2_AMI" ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_root" ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_swap" cleanup_and_exit 3 fi echo "Waiting for finishing the build. No log file until then on EC2 ...." I=0 L=0 EC2_EXTRACT_VOLUME_root= EC2_EXTRACT_VOLUME_swap= temp_file=`mktemp` while true; do ec2-describe-instances --region "$BUILD_EC2_REGION" "$INSTANCE" > $temp_file state=`grep ^INSTANCE "$temp_file"` if test -z "$EC2_EXTRACT_VOLUME_root" ; then EC2_EXTRACT_VOLUME_root=`grep ^BLOCKDEVICE $temp_file | grep /dev/sda1 | awk '{ print $3 }'` EC2_EXTRACT_VOLUME_swap=`grep ^BLOCKDEVICE $temp_file | grep /dev/sdb1 | awk '{ print $3 }'` fi # the column of the state is at a differen position depending on the state :/ # test "$state" = "${state/stopped/}" || break test "$state" = "${state/terminated/}" || break I=$(( $I + 1 )) if test $I -gt 10 ; then echo -n . I=0 L=$(( $L + 1 )) fi if test $L -gt 10 ; then # dump entire console log as raw here ec2-get-console-output --region "$BUILD_EC2_REGION" -r "$INSTANCE" L=0 fi sleep 1 done rm -f "$temp_file" echo ec2-deregister --region "$BUILD_EC2_REGION" "$EC2_AMI" # switch to extract volumnes EC2_VOLUME_ROOT=$EC2_EXTRACT_VOLUME_root EC2_VOLUME_SWAP=$EC2_EXTRACT_VOLUME_swap # snapshots get deleted after extract } obs-build-20210120/build-vm-emulator000066400000000000000000000047441400202264700171210ustar00rootroot00000000000000# # generic emulator specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ vm_verify_options_emulator() { if test -f "$BUILD_DIR/emulator/verify-options.sh"; then . "$BUILD_DIR/emulator/verify-options.sh" else VM_SWAP= fi } vm_startup_emulator() { pushd "$BUILD_DIR/emulator" if test -z "$EMULATOR_SCRIPT" ; then EMULATOR_SCRIPT=./emulator.sh elif test "${EMULATOR_SCRIPT:0:1}" != / ; then EMULATOR_SCRIPT="./$EMULATOR_SCRIPT" fi set -- "$EMULATOR_SCRIPT" "$VM_ROOT" "$VM_SWAP" echo "$@" if ! "$@"; then popd cleanup_and_exit 3 "ERROR: The emulator returned with a failure" fi popd test -n "$VM_SWAP" && return # Emulators may not offer to use a second swap space. # So we just mount the filesystem. # WARNING: This is not safe against attacks. mkdir -p $BUILD_ROOT/.build.packages cd $BUILD_ROOT/.build.packages || cleanup_and_exit 1 mkdir -p .mount mount $VM_ROOT -o loop .mount if test -e .mount/.build.packages ; then cp -a .mount/.build.packages/* . fi exitcode=`cat .mount/.build/_exitcode` umount .mount rmdir .mount cleanup_and_exit "$exitcode" } vm_kill_emulator() { if ! fuser -k -TERM "$VM_ROOT" ; then cleanup_and_exit 1 "could not kill build in $VM_ROOT" fi } vm_fixup_emulator() { # emulator may not be able to hand over kernel parameters ln -sf /.build/build $BUILD_ROOT/sbin/init } vm_attach_root_emulator() { : } vm_attach_swap_emulator() { : } vm_detach_root_emulator() { : } vm_detach_swap_emulator() { : } vm_cleanup_emulator() { : } vm_sysrq_emulator() { : } vm_wipe_emulator() { : } obs-build-20210120/build-vm-kvm000066400000000000000000000325471400202264700160700ustar00rootroot00000000000000# # kvm/qemu specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ kvm_bin=/usr/bin/qemu-kvm test ! -x $kvm_bin -a -x /usr/bin/kvm && kvm_bin=/usr/bin/kvm kvm_console=ttyS0 # assume virtio support by default kvm_device=virtio-blk-pci 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 cleanup_and_exit 3 "put kvm_rma_count= or kvm_hpt_count=<> to your boot options" fi } kvm_check_hugetlb() { if ! grep -q "$HUGETLBFSPATH" /proc/mounts ; then cleanup_and_exit 3 "hugetlbfs is not mounted to $HUGETLBFSPATH" fi local HUGETLBBLKSIZE=$(stat -f -c "%S" "$HUGETLBFSPATH") HUGETLBBLKSIZE=$(( ${HUGETLBBLKSIZE:-0} / 1024 )) if test "$HUGETLBBLKSIZE" -lt 1 -o ! -e "/sys/kernel/mm/hugepages/hugepages-${HUGETLBBLKSIZE}kB" ; then cleanup_and_exit 3 "could not determine hugetlbfs block size" fi local PAGES_FREE=$(cat /sys/kernel/mm/hugepages/hugepages-${HUGETLBBLKSIZE}kB/free_hugepages) local PAGES_REQ=$(( ${VM_MEMSIZE:-64} * 1024 / $HUGETLBBLKSIZE )) if test "$PAGES_FREE" -lt "$PAGES_REQ" ; then echo "expected $PAGES_REQ to be available (have $PAGES_FREE)" echo "please adjust nr_hugepages" cleanup_and_exit 3 fi } vm_verify_options_kvm() { if test -n "$KILL" -o -n "$DO_WIPE" ; then return fi vm_kernel= vm_initrd= # newer Ubuntu versions have only kvm executable if test -x "/usr/bin/kvm" -a ! -x "$kvm_bin"; then kvm_bin="/usr/bin/kvm" fi # overwrite some options for specific host architectures case `uname -m` in armv7l) kvm_bin="/usr/bin/qemu-system-arm" kvm_console=ttyAMA0 kvm_options="-enable-kvm -M virt" vm_kernel=/boot/zImage vm_initrd=/boot/initrd test -e /boot/kernel.obs.guest && vm_kernel=/boot/kernel.obs.guest test -e /boot/initrd.obs.guest && vm_initrd=/boot/initrd.obs.guest # prefer the guest kernel/initrd test -e /boot/zImage.guest && vm_kernel=/boot/zImage.guest test -e /boot/initrd.guest && vm_initrd=/boot/initrd.guest kvm_device=virtio-blk-device kvm_rng_device=virtio-rng-device ;; armv8l|aarch64) kvm_bin="/usr/bin/qemu-system-aarch64" kvm_console=ttyAMA0 vm_kernel=/boot/Image vm_initrd=/boot/initrd test -e /boot/kernel.obs.guest && vm_kernel=/boot/kernel.obs.guest test -e /boot/initrd.obs.guest && vm_initrd=/boot/initrd.obs.guest if test "${BUILD_ARCH#aarch}" != "$BUILD_ARCH" -o "${BUILD_ARCH#armv8}" != "$BUILD_ARCH"; then 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" 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 fi # This option only exists with QEMU 2.5 or newer if $kvm_bin -machine 'virt,?' 2>&1 | grep -q gic-version ; then # We want to use the host gic version in order to make use # of all available features (e.g. more than 8 CPUs) and avoid # the emulation overhead of vGICv2 on a GICv3 host. kvm_options="$kvm_options -M virt,gic-version=host" else kvm_options="$kvm_options -M virt" fi kvm_device=virtio-blk-device kvm_rng_device=virtio-rng-device ;; ppc|ppcle|ppc64|ppc64le) kvm_bin="/usr/bin/qemu-system-ppc64" kvm_console=hvc0 kvm_options="-enable-kvm -M pseries" if grep -q POWER8 /proc/cpuinfo ; then # This option only exists with QEMU 5.0 or newer if $kvm_bin -machine 'pseries,?' 2>&1 | grep -q cap-ccf-assist ; then kvm_options="-enable-kvm -M pseries,cap-ccf-assist=off" fi fi grep -q PPC970MP /proc/cpuinfo && kvm_check_ppc970 vm_kernel=/boot/vmlinux vm_initrd=/boot/initrd test -e /boot/kernel.obs.guest && vm_kernel=/boot/kernel.obs.guest test -e /boot/initrd.obs.guest && vm_initrd=/boot/initrd.obs.guest if test "$BUILD_ARCH" = ppc64le -a -e /boot/vmlinuxle ; then vm_kernel=/boot/vmlinuxle vm_initrd=/boot/initrdle fi if test -e /boot/vmlinuxbe -a -e /boot/initrdbe ; then if test "$BUILD_ARCH" = ppc -o "$BUILD_ARCH" = ppc64 ; then vm_kernel=/boot/vmlinuxbe vm_initrd=/boot/initrdbe fi 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" kvm_options="-enable-kvm" kvm_console=hvc0 vm_kernel=/boot/image vm_initrd=/boot/initrd test -e /boot/kernel.obs.guest && vm_kernel=/boot/kernel.obs.guest test -e /boot/initrd.obs.guest && vm_initrd=/boot/initrd.obs.guest kvm_device=virtio-blk-ccw kvm_serial_device=virtio-serial-ccw kvm_rng_device=virtio-rng-ccw ;; esac # check if we can run kvm if ! test -r /dev/kvm -a -x "$kvm_bin" ; then echo "host does not support kvm" echo "either the kvm kernel-module is not loaded or kvm is not installed or hardware virtualization is deactivated in the BIOS." cleanup_and_exit 3 fi # check hugepages test -n "$HUGETLBFSPATH" -a "$VM_TYPE" = kvm && kvm_check_hugetlb # set kernel test -n "$VM_KERNEL" && vm_kernel="$VM_KERNEL" if test -z "$vm_kernel" ; then vm_kernel=/boot/vmlinuz test -e /boot/kernel.obs.guest && vm_kernel=/boot/kernel.obs.guest fi # set initrd test -n "$VM_INITRD" && vm_initrd="$VM_INITRD" if test -z "$vm_initrd" ; then # find a nice default if test -e /boot/initrd.obs.guest ; then vm_initrd=/boot/initrd.obs.guest elif test -e "/boot/initrd-build" ; then vm_initrd="/boot/initrd-build" elif test -e "/boot/initrd-virtio" ; then vm_initrd="/boot/initrd-virtio" else vm_initrd="/boot/initrd" kvm_device=ide-hd # use /etc/sysconfig/kernel as indication if we have virtio if test -e /etc/sysconfig/kernel ; then local im=$(INITRD_MODULES=; . /etc/sysconfig/kernel; echo "$INITRD_MODULES") if test "$im" != "${im/virtio/}" ; then kvm_device=virtio-blk-pci fi fi fi fi case $kvm_device in virtio*) VM_ROOTDEV=/dev/disk/by-id/virtio-0 VM_SWAPDEV=/dev/disk/by-id/virtio-1 ;; *) VM_ROOTDEV=/dev/sda VM_SWAPDEV=/dev/sdb ;; esac if test -n "$VM_NETOPT" -o -n "$VM_NETDEVOPT" ; then if test -n "$VM_NETOPT" ; then for item in "${VM_NETOPT[@]}" ; do kvm_options="$kvm_options -net $item" done fi if test -n "$VM_NETDEVOPT" ; then for item in "${VM_NETDEVOPT[@]}" ; do kvm_options="$kvm_options -netdev $item" done fi fi if test -n "$VM_DEVICEOPT" ; then for item in "${VM_DEVICEOPT[@]}" ; do kvm_options="$kvm_options -device $item" done fi if test -n "$kvm_rng_device" ; then if test -c /dev/hwrng && test -f /sys/class/misc/hw_random/rng_current && test "$(cat /sys/class/misc/hw_random/rng_current)" != none; then rng_dev="/dev/hwrng" else rng_dev="/dev/random" fi kvm_options="$kvm_options -object rng-random,filename=$rng_dev,id=rng0 -device $kvm_rng_device,rng=rng0" fi } kvm_add_console_args() { local serial_device="$1" # the serial console device needs to be compiled into the target kernel # which is why we can not use virtio-serial on other platforms if test -n "$serial_device" ; then if test -n "$VM_CONSOLE_INPUT" ; then echo "Using virtio-serial support and enabling console input" qemu_args=("${qemu_args[@]}" -device "$serial_device" -device virtconsole,chardev=virtiocon0 -chardev stdio,mux=on,id=virtiocon0 -mon chardev=virtiocon0) else echo "Using virtio-serial support" qemu_args=("${qemu_args[@]}" -device "$serial_device" -device virtconsole,chardev=virtiocon0 -chardev stdio,id=virtiocon0) fi elif test -n "$VM_CONSOLE_INPUT" ; then echo "Enabling console input" qemu_args=("${qemu_args[@]}" -serial mon:stdio) else echo "Using UART console" qemu_args=("${qemu_args[@]}" -serial stdio) fi # setup the monitor if ! test -e "${VM_ROOT}.qemu/monitor"; then mkdir -p "${VM_ROOT}.qemu" mkfifo "${VM_ROOT}.qemu/monitor" chown "$VM_USER" "${VM_ROOT}.qemu" fi qemu_args=("${qemu_args[@]}" -chardev socket,id=monitor,server,nowait,path="${VM_ROOT}.qemu/monitor" -mon chardev=monitor,mode=readline) } vm_startup_kvm() { qemu_bin="$kvm_bin" 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 # use qemu user by default if available getent passwd qemu >/dev/null && VM_USER=qemu 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,cache=unsafe -device "$kvm_device",drive=swap,serial=1) fi kvm_add_console_args "$kvm_serial_device" if test -n "$BUILD_JOBS" -a "$icecream" = 0 -a -z "$BUILD_THREADS" ; then qemu_args=("${qemu_args[@]}" "-smp" "$BUILD_JOBS") elif test -n "$BUILD_JOBS" -a -n "$BUILD_THREADS" ; then qemu_args=("${qemu_args[@]}" "-smp" "$BUILD_JOBS,threads=$BUILD_THREADS") fi if test "$VM_TYPE" = kvm ; then test -n "$HUGETLBFSPATH" && kvm_options="$kvm_options -mem-prealloc -mem-path $HUGETLBFSPATH" fi qemu_append="root=$VM_ROOTDEV" if test -n "$VMDISK_FILESYSTEM" ; then qemu_append="$qemu_append rootfstype=$VMDISK_FILESYSTEM" fi if test -n "$VMDISK_MOUNT_OPTIONS" ; then qemu_append="$qemu_append rootflags=${VMDISK_MOUNT_OPTIONS#-o }" fi qemu_append="$qemu_append $vm_linux_kernel_parameter" qemu_append="$qemu_append panic=1 quiet no-kvmclock elevator=noop" qemu_append="$qemu_append nmi_watchdog=0 rw rd.driver.pre=binfmt_misc" qemu_append="$qemu_append console=$kvm_console init=$vm_init_script" if test -z "$VM_NETOPT" -a -z "$VM_NETDEVOPT"; then kvm_options="$kvm_options -net none" fi if test -n "$VM_TELNET"; then kvm_options="$kvm_options -netdev user,id=telnet,hostfwd=tcp:127.0.0.1:$VM_TELNET-:23 -device e1000,netdev=telnet" fi if test -n "$VM_CUSTOMOPT"; then kvm_options="$kvm_options $VM_CUSTOMOPT" fi set -- $qemu_bin -nodefaults -no-reboot -nographic -vga none $kvm_cpu $kvm_options \ -kernel $vm_kernel \ -initrd $vm_initrd \ -append "$qemu_append" \ ${VM_MEMSIZE:+-m $VM_MEMSIZE} \ "${qemu_args[@]}" if test "$PERSONALITY" != 0 ; then # have to switch back to PER_LINUX to make qemu work set -- linux64 "$@" fi export QEMU_AUDIO_DRV=none # we do not want to have sound inside the VMs echo "$@" "$@" qemu_ret=$? test "$qemu_ret" = "137" && cleanup_and_exit 3 "qemu got SIGKILL" } vm_kill_kvm() { if ! fuser -k -TERM "$VM_ROOT" ; then echo "could not kill build in $VM_ROOT, kvm instance is dead already" fi } vm_fixup_kvm() { # check if we will use a kernel from the build root, in this case # we assume the kernel does virtio if test -z "$VM_KERNEL" -a -e "$BUILD_ROOT/.build.kernel.$VM_TYPE" ; then # ide-hd is the non-virtio default if test "$kvm_device" = ide-hd ; then kvm_device=virtio-blk-pci VM_ROOTDEV=/dev/disk/by-id/virtio-0 VM_SWAPDEV=/dev/disk/by-id/virtio-1 fi fi if test "$VM_TYPE" = kvm -a -z "$kvm_serial_device" ; then if test -f "$BUILD_ROOT/.build.console.kvm" -a ! -L "$BUILD_ROOT/.build.console.kvm" && grep -q '^virtio$' "$BUILD_ROOT/.build.console.kvm" ; then echo "Detected virtio-serial support" kvm_serial_device=virtio-serial,max_ports=2 kvm_console=hvc0 fi fi } vm_attach_root_kvm() { : } vm_attach_swap_kvm() { : } vm_detach_root_kvm() { : } vm_detach_swap_kvm() { : } vm_cleanup_kvm() { : } vm_sysrq_kvm() { perl -e 'use Socket; socket(SOCK, PF_UNIX, SOCK_STREAM, 0) || die("socket: $!\n"); connect(SOCK, sockaddr_un($ARGV[0])) || die("connect: $!\n"); syswrite(SOCK, "$ARGV[1]\n"); shutdown(SOCK, 1); my $output; read(SOCK, $output, 8192);' "$VM_ROOT.qemu/monitor" "sendkey alt-print-$1" } vm_wipe_kvm() { : } obs-build-20210120/build-vm-lxc000066400000000000000000000131611400202264700160500ustar00rootroot00000000000000# # LXC specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ lxc_get_id() { LXCID="obsbuild:${BUILD_ROOT##*/}" if which lxc-config >/dev/null 2>&1; then LXC_TYPE=standalone elif which virsh >/dev/null 2>&1; then LXC_TYPE=libvirt else LXC_TYPE=unknown fi } vm_verify_options_lxc() { VM_ROOT= VM_SWAP= } lxcsh() { virsh -c lxc:/// "$@" } vm_startup_lxc() { lxc_get_id LXCCONF="$BUILD_ROOT/.build.lxc.conf" buildroot_rm .build.lxc.conf vm_startup_lxc_$LXC_TYPE BUILDSTATUS="$?" test "$BUILDSTATUS" != 255 || BUILDSTATUS=3 cleanup_and_exit "$BUILDSTATUS" } vm_startup_lxc_standalone() { 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? buildroot_rm /etc/mtab echo "rootfs / rootfs rw 0 0" > "$BUILD_ROOT/etc/mtab" lxc-destroy -n "$LXCID" >/dev/null 2>&1 || true mkdir -p "$LXCROOTFS" cat > "$LXCHOOK" <<-EOF #!/bin/sh mount --bind "$BUILD_ROOT" "$LXCROOTFS" EOF chmod a+x "$LXCHOOK" 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" ;; 1.0.*) 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" -a ! -L "$BUILD_ROOT/.build/_exitcode" ]; then echo "'$BUILD_ROOT/.build/_exitcode' not found or symlink" return 3 fi exitcode=$(cat $BUILD_ROOT/.build/_exitcode) return "$exitcode" } vm_startup_lxc_libvirt() { local lxc_arch # x86 i686 x86_64 amd64 case $BUILD_ARCH in i586:*) lxc_arch=i686 ;; x86_64:*) lxc_arch=x86_64 ;; *) lxc_arch=${BUILD_ARCH/:*} ;; esac lxcsh destroy "$LXCID" >/dev/null 2>&1 || true cat <<-EOF > "$LXCCONF" $LXCID ${VM_MEMSIZE:-512} exe $vm_init_script 1 destroy restart destroy /usr/lib64/libvirt/libvirt_lxc EOF # XXX: do this always instead of leaking the hosts' one? buildroot_rm /etc/mtab echo "rootfs / rootfs rw 0 0" > $BUILD_ROOT/etc/mtab # could LOGFILE be used instead? lxcsh create --console $LXCCONF | sed -ure 's/\x0d//g;:redo /.\x08/{s/.\x08//; b redo}' exitcode="${PIPESTATUS[0]}" if [ "$exitcode" -gt 0 ]; then return $exitcode # libvirt errors fi if ! [ -r "$BUILD_ROOT/.build/_exitcode" -a ! -L "$BUILD_ROOT/.build/_exitcode" ]; then echo "'$BUILD_ROOT/.build/_exitcode' not found or symlink" return 3 fi exitcode=$(cat $BUILD_ROOT/.build/_exitcode) return "$exitcode" } vm_kill_lxc() { lxc_get_id vm_kill_lxc_$LXC_TYPE } vm_kill_lxc_standalone() { lxc-stop -n "$LXCID" || true } vm_kill_lxc_libvirt() { lxcsh destroy "$LXCID" || true } vm_fixup_lxc() { : } vm_attach_root_lxc() { : } vm_attach_swap_lxc() { : } vm_detach_root_lxc() { : } vm_detach_swap_lxc() { : } vm_sysrq_lxc() { : } vm_wipe_lxc() { : } vm_cleanup_lxc() { if test $$ -ne 1 && test $$ -ne 2 ; then lxc_get_id vm_cleanup_lxc_$LXC_TYPE fi } vm_cleanup_lxc_standalone() { lxc-destroy -n "$LXCID" } vm_cleanup_lxc_libvirt() { lxcsh destroy "$LXCID" >/dev/null 2>&1 || true } obs-build-20210120/build-vm-nspawn000066400000000000000000000032331400202264700165670ustar00rootroot00000000000000# # systemd-nspawn specific functions # ################################################################ # # Copyright (c) 2019 Oleg Girko # # 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 # ################################################################ vm_verify_options_nspawn() { VM_ROOT= VM_SWAP= } vm_startup_nspawn() { local name="${BUILD_ROOT##*/}" name="obsbuild.${name//_/-}" local pipe_opt= if test -z "$RUN_SHELL" && systemd-nspawn --help | fgrep -q -e --pipe; then pipe_opt=--pipe fi systemd-nspawn -D "$BUILD_ROOT" -M "$name" --private-network $pipe_opt "$vm_init_script" BUILDSTATUS="$?" cleanup_and_exit "$BUILDSTATUS" } vm_kill_nspawn() { local name="${BUILD_ROOT##*/}" name="obsbuild.${name//_/-}" machinectl terminate "$name" } vm_fixup_nspawn() { : } vm_attach_root_nspawn() { : } vm_attach_swap_nspawn() { : } vm_detach_root_nspawn() { : } vm_detach_swap_nspawn() { : } vm_sysrq_nspawn() { : } vm_wipe_nspawn() { : } vm_cleanup_nspawn() { : } obs-build-20210120/build-vm-openstack000066400000000000000000000225131400202264700172520ustar00rootroot00000000000000# # Openstack specific functions # ################################################################ # # Copyright (c) 2017 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 # ################################################################ OPENSTACK_BUILD_ID= OPENSTACK_VOLUME_GRUB= OPENSTACK_VOLUME_ROOT= OPENSTACK_VOLUME_SWAP= OPENSTACK_ROOT_ATTACH_INFO= OPENSTACK_SWAP_ATTACH_INFO= openstack_get_field() { echo -n "$1"|perl -n -e "\$_ =~ /^\|\s+$2\s+\|\s+(\S*)\s+\|\$/ && print \$1" } openstack_get_disk_state() { local OUT=$($CINDERCLIENT show "$1") openstack_get_field "$OUT" status } openstack_cinder_volume2id() { local OUT=$($CINDERCLIENT show "$1") openstack_get_field "$OUT" id } # sets OPENSTACK_ATTACH_INFO cloud_volume_attach_openstack() { local VM_SERVER="$1" local VM_VOL_NAME="$2" local VM_VOL_ID=$(openstack_cinder_volume2id $VM_VOL_NAME) # Example output of "nova volume-attach # +----------+--------------------------------------+ # | Property | Value | # +----------+--------------------------------------+ # | device | /dev/vdb | # | id | 793e9a04-7068-4cf1-86e7-26509f709b54 | # | serverId | 175e470c-5869-4425-988a-6b334a2fa655 | # | volumeId | 793e9a04-7068-4cf1-86e7-26509f709b54 | # +----------+--------------------------------------+ local OUT=$($NOVACLIENT volume-attach "$VM_SERVER" "$VM_VOL_ID") test $? -gt 0 && cleanup_and_exit 3 "ERROR: nova volume-attach failed. $?" local device_path=`openstack_get_field "$OUT" device` local serverId=`openstack_get_field "$OUT" serverId` while true ; do local state=`openstack_get_disk_state "$VM_VOL_NAME"` test "$state" = "in-use" && break test -z "$state" && cleanup_and_exit 3 "ERROR: unable to find state of volume $VM_VOL_NAME" if test "$state" = available ; then echo "WARNING: volume $VM_VOL_NAME got not attached, retrying" >&2 OUT=`$NOVACLIENT volume-attach "$VM_SERVER" "$VM_VOL_ID"` test $? -gt 0 && cleanup_and_exit 3 "ERROR: nova attach failed. $?" device_path=`openstack_get_field "$OUT" device` fi sleep 3 done test "${device_path:0:5}" = "/dev/" || cleanup_and_exit 3 "device path not starting with /dev/: $device_path" if ! test -e "$device_path" ; then echo "waiting for $device_path to appear" for i in 1 2 3 4 5 6 7 8 9 10 ; do sleep 1 test -e "$device_path" && break done test -b "$device_path" || cleanup_and_exit 3 "$device_path did not appear" fi # return attach info. Example: # 793e9a04-7068-4cf1-86e7-26509f709b54:175e470c-5869-4425-988a-6b334a2fa655:/dev/vdb OPENSTACK_ATTACH_INFO="$VM_VOL_ID:$serverId:$device_path" } cloud_volume_detach_openstack() { local VM_SERVER=${1:37:36} local VM_VOL_ID=${1:0:36} test -z "$VM_SERVER" -o -z "$VM_VOL_ID" && cleanup_and_exit 1 "cloud_volume_detach_openstack: bad attach info" # needed at all? $NOVACLIENT volume-detach "$VM_SERVER" "$VM_VOL_ID" state=`openstack_get_disk_state $VM_VOL_ID` while test "$state" = detaching ; do sleep 1 state=`openstack_get_disk_state $VM_VOL_ID` done if test "$state" = "available" ; then return 0 fi if ! $NOVACLIENT volume-detach "$VM_SERVER" "$VM_VOL_ID" ; then cleanup_and_exit 3 "ERROR: nova detach of $VM_VOL_ID failed." fi while test "$state" != "available" ; do state=`openstack_get_disk_state $VM_VOL_ID` sleep 3 done } vm_verify_options_openstack() { OPENSTACK_VOLUME_ROOT="$VM_ROOT" OPENSTACK_VOLUME_SWAP="$VM_SWAP" VM_ROOT_TYPE=unattached VM_SWAP_TYPE=unattached # Checking for required tools (nova and cinder) NOVACLIENT=`type -p nova` if test -z "$NOVACLIENT" ; then cleanup_and_exit 3 "ERROR: nova not installed. Please install nova and try again" fi CINDERCLIENT=`type -p cinder` if test -z "$CINDERCLIENT" ; then cleanup_and_exit 3 "ERROR: nova not installed. Please install cinder and try again" fi if test -n "$KILL" -o -n "$DO_WIPE" ; then return fi # verify options if test -z "$OS_AUTH_URL" ; then cleanup_and_exit 3 "ERROR: No openstack environment set. This vm-type works only inside of an openstack VM." fi if test -z "$VM_KERNEL" ; then cleanup_and_exit 3 "ERROR: No worker boot VM volume name specified." fi if test -z "$VM_ROOT" ; then cleanup_and_exit 3 "ERROR: No worker root VM volume name specified." fi if test -z "$VM_SWAP" ; then cleanup_and_exit 3 "ERROR: No worker swap VM volume name specified." fi if test -z "$VM_SERVER" ; then cleanup_and_exit 3 "ERROR: No VM server node name specified (usually this instance)." fi if test -z "$VM_WORKER" ; then cleanup_and_exit 3 "ERROR: No VM worker node name specified (the instance to be created)." fi if test -z "$VM_OPENSTACK_FLAVOR" ; then cleanup_and_exit 3 "ERROR: No VM openstack flavor set (--openstack-flavor )." fi # set default values VM_ROOTDEV="LABEL=obsrootfs" VM_SWAPDEV="LABEL=obsswapfs" # hack: mis-use kernel parameter OPENSTACK_VOLUME_GRUB="$VM_KERNEL" VM_KERNEL= } vm_attach_root_openstack() { test -n "$OPENSTACK_ROOT_ATTACH_INFO" && cleanup_and_exit 1 "root is already attached" local OPENSTACK_ATTACH_INFO cloud_volume_attach_openstack "$VM_SERVER" "$OPENSTACK_VOLUME_ROOT" OPENSTACK_ROOT_ATTACH_INFO=$OPENSTACK_ATTACH_INFO VM_ROOT=${OPENSTACK_ATTACH_INFO:74} VM_ROOT_TYPE=device } vm_attach_swap_openstack() { test -n "$OPENSTACK_SWAP_ATTACH_INFO" && cleanup_and_exit 1 "root is already attached" local OPENSTACK_ATTACH_INFO cloud_volume_attach_openstack "$VM_SERVER" "$OPENSTACK_VOLUME_SWAP" OPENSTACK_SWAP_ATTACH_INFO=$OPENSTACK_ATTACH_INFO VM_SWAP=${OPENSTACK_ATTACH_INFO:74} VM_SWAP_TYPE=device } vm_detach_root_openstack() { test -z "$OPENSTACK_ROOT_ATTACH_INFO" && cleanup_and_exit 1 "root is not attached" local OPENSTACK_ATTACH_INFO=$OPENSTACK_ROOT_ATTACH_INFO OPENSTACK_ROOT_ATTACH_INFO= cloud_volume_detach_openstack "$OPENSTACK_ATTACH_INFO" || cleanup_and_exit 3 VM_ROOT=$OPENSTACK_VOLUME_ROOT VM_ROOT_TYPE=unattached } vm_detach_swap_openstack() { test -z "$OPENSTACK_SWAP_ATTACH_INFO" && cleanup_and_exit 1 "swap is not attached" local OPENSTACK_ATTACH_INFO=$OPENSTACK_SWAP_ATTACH_INFO OPENSTACK_SWAP_ATTACH_INFO= cloud_volume_detach_openstack "$OPENSTACK_ATTACH_INFO" || cleanup_and_exit 3 VM_SWAP=$OPENSTACK_VOLUME_SWAP VM_SWAP_TYPE=unattached } vm_cleanup_openstack() { test -n "$OPENSTACK_ROOT_ATTACH_INFO" && vm_detach_root_openstack test -n "$OPENSTACK_SWAP_ATTACH_INFO" && vm_detach_swap_openstack } vm_fixup_openstack() { # No way to handle this via init= parameter here.... rm -rf "$BUILD_ROOT/sbin/init" echo "#!/bin/sh" > "$BUILD_ROOT/sbin/init" echo 'echo "exec /.build/build \"$@\""' >> "$BUILD_ROOT/sbin/init" echo 'exec /.build/build "$@"' >> "$BUILD_ROOT/sbin/init" echo 'echo "Waiting for input"' >> "$BUILD_ROOT/sbin/init" echo 'read' >> "$BUILD_ROOT/sbin/init" chmod 0755 "$BUILD_ROOT/sbin/init" } vm_sysrq_openstack() { : } vm_wipe_openstack() { if test -n "$VM_WORKER" ; then $NOVACLIENT delete $VM_WORKER fi } vm_kill_openstack() { if $NOVACLIENT show "$VM_WORKER" >/dev/null 2>&1 ; then if ! $NOVACLIENT delete "$VM_WORKER" ; then cleanup_and_exit 1 "could not kill openstack vm build $VM_WORKER" fi fi } openstack_wait_for_delete_instance() { while test -n "$($NOVACLIENT list|grep $VM_WORKER)" ; do sleep 1 done } vm_startup_openstack() { local VM_VOL_ROOT_ID=`openstack_cinder_volume2id ${VM_ROOT}` local VM_VOL_SWAP_ID=`openstack_cinder_volume2id ${VM_SWAP}` local VM_VOL_BOOT_ID=`openstack_cinder_volume2id ${OPENSTACK_VOLUME_GRUB}` local OUTPUT=`\ $NOVACLIENT boot \ --flavor $VM_OPENSTACK_FLAVOR \ --block-device source=volume,dest=volume,bootindex=0,id=${VM_VOL_BOOT_ID}\ --block-device source=volume,dest=volume,bootindex=1,id=${VM_VOL_ROOT_ID}\ --block-device source=volume,dest=volume,bootindex=2,id=${VM_VOL_SWAP_ID}\ --poll "$VM_WORKER" || cleanup_and_exit 3\ ` OPENSTACK_BUILD_ID=`openstack_get_field "$OUTPUT" id` for try in 1 2 3 4 5 ; do WS_URL=`$NOVACLIENT get-serial-console $VM_WORKER|grep serial |perl -p -e 's#.*(ws://.*) \|#$1#'` test -n "$WS_URL" && break sleep 1 done if ! python $BUILD_DIR/openstack-console "${WS_URL}" ; then $NOVACLIENT delete $OPENSTACK_BUILD_ID cleanup_and_exit 3 else $NOVACLIENT delete $OPENSTACK_BUILD_ID openstack_wait_for_delete_instance fi } obs-build-20210120/build-vm-pvm000066400000000000000000000112541400202264700160650ustar00rootroot00000000000000#PowerVM build functions pvm_setup_bootloader(){ disk=$1 parted -s $disk mklabel msdos parted -s $disk mkpart primary ext2 0 $bootloader_size parted -s $disk set 1 boot on parted -s $disk set 1 prep on parted -s $disk mkpart primary ext3 8M 100% bl_target=${disk}1 } pvm_getdiskname(){ lv=$1 if [ -z "$SKIP" ];then args=$(pvmctl scsi list -f ' ' -d VirtualDisk.udid ClientAdapter.loc_code --where VirtualDisk.name=$lv) eval $args host=$(ls-vscsi | grep $loc_code| awk -F " " '{print $1}') udid=$(echo $udid | cut -c 3-) devid="/dev/disk/by-id/scsi-SAIX_VDASD_$udid" until test -L $devid;do sleep 1; echo "- - -" > /sys/class/scsi_host/$host/scan done dev=$(readlink -f $devid) fi case $lv in *root) test -z "$SKIP" && pvm_setup_bootloader "$dev" VM_ROOT="${dev}2";; *swap) VM_SWAP="${dev}";; esac } pvm_execute(){ cmd=$@ pvmctl $cmd } pvm_is_created() { dev=$1 $(pvmctl lv list -d LogicalVolume.name | grep -q $dev) && SKIP=1 } pvm_createdev() { name=$1 size=$2 target=$3 size_gb=`expr $size / 1024` test -z $3 && target=$master_lpar pvm_is_created $name if [ -z "$SKIP" ];then pvm_execute lv create --name $name --size $size_gb target=$master_lpar fi pvm_execute scsi create --vg name=rootvg --type lv --lpar name=$target --stor-id $name test -z "$SKIP" && pvm_getdiskname $name } pvm_lpar_is_running(){ state=$(pvmctl lpar list -d LogicalPartition.state --where LogicalPartition.name=$lpname |awk -F "=" '{print $2}') CONSOLEPID=`pgrep -f "cat $hvcdev"` if [ "$state" = "running" ];then return 0 else test -n $CONSOLEPID && kill -TERM $CONSOLEPID return 1 fi } pvm_watch_build(){ while pvm_lpar_is_running $lpname;do sleep 10 done } pvm_detachdev(){ lv=$1 lpar=$2 pvm_execute scsi delete --lpar name=$lpar --type lv --stor-id $lv } pvm_deletelv(){ viosvrcmd --id 1 -c "rmbdsp -bd $1" } pvm_nametoid(){ local id name=$1 lparid=$(pvmctl lpar list -d LogicalPartition.id -i name=$name | awk -F "=" '{print $2}') } pvm_openconsole(){ id=$1 pvmutil -o create_vterm_dev --id $id hvcsadmin -console $id hvcdev=$(hvcsadmin -console $id|awk '{print $4}') } pvm_closeconsole(){ hvcdev=$(hvcsadmin -console $id|awk '{print $4}') hvcsadmin -close $hvcdev pvmutil -o delete_vterm_dev --id $1 } vm_kill_pvm() { pvm_execute lpar power-off --hard -i name="$VM_NAME" } vm_startup_pvm(){ cpus=$BUILD_JOBS cores=`echo 0.05 \* $cpus| bc -l` pvm_execute lpar create --name $lpname --mem $VM_MEMSIZE --proc-unit $cores --proc $cpus --proc-type shared --sharing-mode uncapped --type $lpartype pvm_nametoid $lpname vm_attach_root_pvm $lpname vm_attach_swap_pvm $lpname pvm_openconsole $lparid pvm_execute lpar power-on -i name=$lpname pvm_watch_build & PID=$! cat $hvcdev vm_detach_root_pvm $lpname vm_detach_swap_pvm $lpname } vm_verify_options_pvm(){ test -z "$VM_WORKER_NO" && VM_WORKER_NO=1 lpname="worker-$VM_WORKER_NO" lpartype="AIX/Linux" bootloader_size="8M" rootlv="$lpname"-root swaplv="$lpname"-swap master_lpar=$(cat /proc/device-tree/ibm,partition-name) } vm_attach_root_pvm(){ target=$1 pvm_createdev $rootlv $VMDISK_ROOTSIZE $target } vm_attach_swap_pvm(){ pvm_createdev $swaplv $VMDISK_SWAPSIZE $target } vm_detach_swap_pvm(){ lpar=$1 test -z $lpar && lpar=$master_lpar pvm_detachdev $swaplv $lpar } vm_detach_root_pvm(){ lpar=$1 test -z $lpar && lpar=$master_lpar pvm_detachdev $rootlv $lpar } vm_cleanup_pvm(){ pvm_nametoid $lpname pvm_closeconsole $lparid vm_detach_root_pvm $lpname vm_detach_root_pvm vm_detach_swap_pvm $lpname vm_detach_swap_pvm pvm_execute lpar delete -i name=$lpname pvm_deletelv $rootlv pvm_deletelv $swaplv } vm_sysrq_pvm(){ : } vm_wipe_pvm(){ : } vm_fixup_pvm(){ VM_SWAPDEV=/dev/sdb GRUBDIR=`mktemp -d /tmp/grubinstall.XXXX` modules="ext2 part_msdos linux disk elf" grubcfg="$GRUBDIR/grub.cfg" grubimg="$GRUBDIR/grub.img" cat <<'EOF' >> $GRUBDIR/grub.cfg insmod ext2 insmod part_msdos insmod linux insmod disk insmod elf set root='ieee1275//vdevice/v-scsi@30000002/disk@8100000000000000,msdos2' linux /.build.kernel.kvm init=/.build/build console=hvc0 root=/dev/sda2 rw elevator=noop $vm_linux_kernel_parameter initrd /.build.initrd.kvm boot EOF grub2-mkimage -O powerpc-ieee1275 -o $grubimg -c $grubcfg $modules dd if=$grubimg of=$bl_target rm -rf $GRUBDIR } obs-build-20210120/build-vm-qemu000066400000000000000000000203041400202264700162260ustar00rootroot00000000000000# # qemu specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ # This used to be just an alias for kvm. # Now it is used to emulate foreign architectures via qemu system emulator. # Note: this is not for the faster qemu user land emulator, this is is still # handled in chroot or kvm mode vm_verify_options_qemu() { if test -n "$KILL" -o -n "$DO_WIPE" ; then return fi vm_kernel=/.build.kernel.kvm vm_initrd=/.build.initrd.kvm # overwrite some options for specific build architectures case $BUILD_ARCH in armv6l|armv7l) qemu_bin="/usr/bin/qemu-system-arm" qemu_console=ttyAMA0 qemu_options="-M virt" qemu_device=virtio-blk-device qemu_rng_device=virtio-rng-device qemu_cpu="-cpu cortex-a15" ;; armv8l|aarch32|aarch64|aarch64_ilp32) qemu_bin="/usr/bin/qemu-system-aarch64" qemu_console=ttyAMA0 qemu_cpu="-cpu cortex-a72" qemu_options="$qemu_options -M virt" qemu_device=virtio-blk-device qemu_rng_device=virtio-rng-device ;; ppc|ppcle|ppc64|ppc64le) qemu_bin="/usr/bin/qemu-system-ppc64" qemu_console=hvc0 qemu_options="-M pseries" qemu_cpu="" grep -q PPC970MP /proc/cpuinfo && qemu_check_ppc970 qemu_device=virtio-blk qemu_rng_device=virtio-rng ;; riscv64) qemu_bin="/usr/bin/qemu-system-riscv64" qemu_console=ttyS0 qemu_cpu="-cpu rv64" qemu_options="$qemu_options -M virt -bios /usr/share/qemu/opensbi-riscv64-virt-fw_jump.bin" qemu_device=virtio-blk-device qemu_rng_device=virtio-rng-device ;; s390|s390x) qemu_bin="/usr/bin/qemu-system-s390x" qemu_cpu="-cpu qemu" qemu_console=hvc0 qemu_device=virtio-blk-ccw qemu_serial_device=virtio-serial-ccw qemu_rng_device=virtio-rng-ccw ;; x86_64) qemu_bin="/usr/bin/qemu-system-x86_64" qemu_cpu="-cpu qemu64" # Use defaults and fallbacks for other values ;; # # untested architectures # hppa) qemu_bin="/usr/bin/qemu-system-hppa" qemu_console=ttyAMA0 qemu_cpu="" qemu_options="$qemu_options -bios /usr/share/qemu/hppa-firmware.img" ;; m68k) qemu_bin="/usr/bin/qemu-system-m68k" qemu_console=ttyAMA0 qemu_cpu="-cpu m68000" qemu_options="$qemu_options -M none" ;; riscv32) qemu_bin="/usr/bin/qemu-system-riscv32" qemu_console=ttyS0 qemu_cpu="-cpu rv32" qemu_options="$qemu_options -M virt -bios /usr/share/qemu/opensbi-riscv32-virt-fw_jump.bin" qemu_device=virtio-blk-device qemu_rng_device=virtio-rng-device ;; esac case $qemu_device in virtio*) VM_ROOTDEV=/dev/disk/by-id/virtio-0 VM_SWAPDEV=/dev/disk/by-id/virtio-1 ;; *) VM_ROOTDEV=/dev/sda VM_SWAPDEV=/dev/sdb ;; esac if test -n "$VM_NETOPT" -o -n "$VM_NETDEVOPT" ; then if test -n "$VM_NETOPT" ; then for item in "${VM_NETOPT[@]}" ; do qemu_options="$qemu_options -net $item" done fi if test -n "$VM_NETDEVOPT" ; then for item in "${VM_NETDEVOPT[@]}" ; do qemu_options="$qemu_options -netdev $item" done fi fi if test -n "$VM_DEVICEOPT" ; then for item in "${VM_DEVICEOPT[@]}" ; do qemu_options="$qemu_options -device $item" done fi if test -n "$qemu_rng_device" ; then if test -c /dev/hwrng && test -f /sys/class/misc/hw_random/rng_current && test "$(cat /sys/class/misc/hw_random/rng_current)" != none; then rng_dev="/dev/hwrng" else rng_dev="/dev/random" fi qemu_options="$qemu_options -object rng-random,filename=$rng_dev,id=rng0 -device $qemu_rng_device,rng=rng0" fi } vm_startup_qemu() { qemu_args=(-drive file="$VM_ROOT",format=raw,if=none,id=disk,cache=unsafe -device "$qemu_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 # use qemu user by default if available getent passwd qemu >/dev/null && VM_USER=qemu fi [ -n "$VM_USER" ] && qemu_options="$qemu_options -runas $VM_USER" if test -n "$VM_SWAP" ; then qemu_args=("${qemu_args[@]}" -drive file="$VM_SWAP",format=raw,if=none,id=swap,cache=unsafe -device "$qemu_device",drive=swap,serial=1) fi kvm_add_console_args "$qemu_serial_device" if test -n "$BUILD_JOBS" -a "$icecream" = 0 -a -z "$BUILD_THREADS" ; then qemu_args=("${qemu_args[@]}" "-smp" "$BUILD_JOBS") elif test -n "$BUILD_JOBS" -a -n "$BUILD_THREADS" ; then qemu_args=("${qemu_args[@]}" "-smp" "$BUILD_JOBS,threads=$BUILD_THREADS") fi qemu_append="root=$VM_ROOTDEV" if test -n "$VMDISK_FILESYSTEM" ; then qemu_append="$qemu_append rootfstype=$VMDISK_FILESYSTEM" fi if test -n "$VMDISK_MOUNT_OPTIONS" ; then qemu_append="$qemu_append rootflags=${VMDISK_MOUNT_OPTIONS#-o }" fi qemu_append="$qemu_append $vm_linux_kernel_parameter" qemu_append="$qemu_append panic=1 quiet no-kvmclock elevator=noop" qemu_append="$qemu_append nmi_watchdog=0 rw rd.driver.pre=binfmt_misc" qemu_append="$qemu_append console=$qemu_console init=$vm_init_script" if test -z "$VM_NETOPT" -a -z "$VM_NETDEVOPT"; then qemu_options="$qemu_options -net none" fi if test -n "$VM_TELNET"; then qemu_options="$qemu_options -netdev user,id=telnet,hostfwd=tcp:127.0.0.1:$VM_TELNET-:23 -device e1000,netdev=telnet" fi if test -n "$VM_CUSTOMOPT"; then qemu_options="$qemu_options $VM_CUSTOMOPT" fi set -- $qemu_bin -nodefaults -no-reboot -nographic -vga none $qemu_cpu $qemu_options \ -kernel $vm_kernel \ -initrd $vm_initrd \ -append "$qemu_append" \ ${VM_MEMSIZE:+-m $VM_MEMSIZE} \ "${qemu_args[@]}" if test "$PERSONALITY" != 0 ; then # have to switch back to PER_LINUX to make qemu work set -- linux64 "$@" fi export QEMU_AUDIO_DRV=none # we do not want to have sound inside the VMs echo "$@" "$@" qemu_ret=$? test "$qemu_ret" = "137" && cleanup_and_exit 3 "qemu got SIGKILL" } vm_kill_qemu() { vm_kill_kvm } vm_fixup_qemu() { vm_fixup_kvm if test -z "$qemu_serial_device" ; then if test -e "$BUILD_ROOT/.build.console.kvm" -a ! -L "$BUILD_ROOT/.build.console.kvm" && grep -q '^virtio$' "$BUILD_ROOT/.build.console.kvm" ; then echo "Detected virtio-serial support" qemu_serial_device=virtio-serial,max_ports=2 qemu_console=hvc0 fi fi } vm_attach_root_qemu() { vm_attach_root_kvm } vm_attach_swap_qemu() { vm_attach_swap_kvm } vm_detach_root_qemu() { vm_detach_root_kvm } vm_detach_swap_qemu() { vm_detach_swap_kvm } vm_cleanup_qemu() { vm_cleanup_kvm } vm_sysrq_qemu() { vm_sysrq_kvm } vm_wipe_qemu() { vm_wipe_kvm } obs-build-20210120/build-vm-uml000066400000000000000000000030351400202264700160560ustar00rootroot00000000000000# # UML specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ uml_kernel=/boot/vmlinux-um uml_initrd=/boot/initrd-um vm_verify_options_uml() { VM_SWAPDEV=/dev/sdb } vm_startup_uml() { set -- $uml_kernel initrd=$uml_initrd root=ubda init="$vm_init_script" panic=1 elevator=noop quiet ubda=$VM_ROOT ubdb=$VM_SWAP ${VM_MEMSIZE:+mem=$VM_MEMSIZE} echo "$@" "$@" } vm_kill_uml() { if ! fuser -k -TERM "$VM_ROOT"; then cleanup_and_exit 1 "could not kill build in $VM_ROOT" fi } vm_fixup_uml() { : } vm_attach_root_uml() { : } vm_attach_swap_uml() { : } vm_detach_root_uml() { : } vm_detach_swap_uml() { : } vm_cleanup_uml() { : } vm_sysrq_uml() { : } vm_wipe_uml() { : } obs-build-20210120/build-vm-xen000066400000000000000000000106521400202264700160560ustar00rootroot00000000000000# # XEN specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ xen_set_xenid_xmcmd() { XENID="${VM_ROOT%/root}" XENID="${XENID%/tmpfs}" XENID="${XENID##*/}" XENID="${XENID#root_}" XMCMD=xm test ! -x /usr/sbin/xm -a -x /usr/sbin/xl && XMCMD=xl } vm_verify_options_xen() { vm_kernel=/boot/vmlinuz vm_initrd=/boot/initrd test -e /boot/vmlinuz-xen && vm_kernel=/boot/vmlinuz-xen test -e /boot/initrd-xen && vm_initrd=/boot/initrd-xen test -n "$VM_KERNEL" && vm_kernel="$VM_KERNEL" test -n "$VM_INITRD" && vm_initrd="$VM_INITRD" if test ! -x /usr/sbin/xm -a -x /usr/sbin/xl ; then VM_ROOTDEV=/dev/xvda VM_SWAPDEV=/dev/xvdb VM_CONSOLE=hvc0 else VM_ROOTDEV=/dev/hda1 VM_SWAPDEV=/dev/hda2 VM_CONSOLE=ttyS0 fi } vm_startup_xen() { xen_set_xenid_xmcmd XMROOT="file:$(readlink -f $VM_ROOT)" XMROOT=${XMROOT/#file:\/dev/phy:/dev} XMROOT="disk=$XMROOT,${VM_ROOTDEV#/dev/},w" XMSWAP= if test -n "$VM_SWAP" ; then XMSWAP="file:$(readlink -f $VM_SWAP)" XMSWAP=${XMSWAP/#file:\/dev/phy:/dev} XMSWAP="disk=$XMSWAP,${VM_SWAPDEV#/dev/},w" fi if $XMCMD list "build_$XENID" >/dev/null 2>&1 ; then echo "Instance already exists, something really went wrong..." echo "Please report to your server admin, there might be multiple services running for same domain" cleanup_and_exit 3 fi XEN_CONF_FILE=`mktemp /var/tmp/build.xen.conf-XXXXXXXXX` || cleanup_and_exit 3 echo "kernel = \"$vm_kernel\"" > $XEN_CONF_FILE echo "ramdisk = \"$vm_initrd\"" >> $XEN_CONF_FILE echo "memory = ${VM_MEMSIZE:-64}" >> $XEN_CONF_FILE test -n "$BUILD_JOBS" && echo "vcpus = $BUILD_JOBS" >> $XEN_CONF_FILE echo "root = \"$VM_ROOTDEV ro\"" >> $XEN_CONF_FILE echo "extra = \"init=/bin/bash console=$VM_CONSOLE panic=1 udev_timeout=360\"" >> $XEN_CONF_FILE echo "on_poweroff = \"destroy\"" >> $XEN_CONF_FILE echo "on_reboot = \"destroy\"" >> $XEN_CONF_FILE echo "on_crash = \"destroy\"" >> $XEN_CONF_FILE if test "$XMCMD" = xm ; then set -- xm create -c $XEN_CONF_FILE name="build_$XENID" $XMROOT $XMSWAP extra="panic=1 quiet init="$vm_init_script" rd.driver.pre=binfmt_misc elevator=noop console=$VM_CONSOLE" else XLDISK= XLDISK="\"${XMROOT#disk=}\"" test -n "$XMSWAP" && XLDISK="$XLDISK, \"${XMSWAP#disk=}\"" set -- xl create -c $XEN_CONF_FILE name="\"build_$XENID\"" "disk=[ $XLDISK ]" extra=\""panic=1 quiet init="$vm_init_script" rd.driver.pre=binfmt_misc $vm_linux_kernel_parameter elevator=noop console=$VM_CONSOLE"\" fi if test "$PERSONALITY" != 0 ; then # have to switch back to PER_LINUX to make xm work set -- linux64 "$@" fi echo "$@" "$@" || cleanup_and_exit 3 rm -f "$XEN_CONF_FILE" } vm_kill_xen() { xen_set_xenid_xmcmd if $XMCMD list "build_$XENID" >/dev/null 2>&1 ; then if ! $XMCMD destroy "build_$XENID" ; then cleanup_and_exit 1 "could not kill xen build $XENID" fi fi } # XEN only vm_purge_xen() { # this should not be needed, but sometimes a xen instance gets lost xen_set_xenid_xmcmd $XMCMD destroy "build_$XENID" >/dev/null 2>&1 } vm_fixup_xen() { : } vm_attach_root_xen() { : } vm_attach_swap_xen() { : } vm_detach_root_xen() { : } vm_detach_swap_xen() { : } vm_cleanup_xen() { : } vm_sysrq_xen() { : } vm_wipe_xen() { : } obs-build-20210120/build-vm-zvm000066400000000000000000000353451400202264700161060ustar00rootroot00000000000000# # z/VM specific functions # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ ZVM_CLEANUP= ZVM_VOLUME_ROOT=${ZVM_VOLUME_ROOT:-0100} ZVM_VOLUME_SWAP=${ZVM_VOLUME_SWAP:-0200} # z/VM: use default kernel image from local machine # lets go with the default parameters. However zvm_initrd will be a required parameter # zvm_kernel=/boot/image #zvm_initrd=/boot/initrd_worker zvm_param="root=/dev/disk/by-path/ccw-0.0.${ZVM_VOLUME_ROOT}-part1 hvc_iucv=8 console=hvc0 hardened_usercopy=off $vm_linux_kernel_parameter" zvm_mult_pass="THR4ME" zvm_init_script="/.build/build" ####################################################################################### # this once was in zvm_functions zvm_fatal() { echo "$1" test -n "$ZVM_CLEANUP" && exit 1 cleanup_and_exit 1 } zvm_prevent_detach() { if test "$1" = "150" -o "$1" = "0150"; then zvm_fatal "don't detach local root" fi } zvm_memset() { # defining the worker also resets the operating system. Be careful # $1: user name # $2: amount in MB # Note, that this is also limited by the worker definition in the user directory if test -n "$2"; then if ! vmcp send $1 cp define storage ${2}M ; then zvm_fatal "Could not redefine storage of $1 to ${2}M" fi fi } zvm_logon() { # kill machine if it already runs # autolog machine # Needs machine name as $1 if test -n "$1" ; then if $(vmcp q "$1" >& /dev/null) ; then vmcp force $1 sleep 1 fi if ! $(vmcp q "$1" >& /dev/null) ; then if ! $(vmcp xautolog $1 >& /dev/null) ; then zvm_fatal "Could not start machine $1. Is $1 defined in the user directory?" else # give the worker a moment to initialize sleep 2 zvm_memset $1 $VM_MEMSIZE sleep 2 fi fi fi } zvm_ipl() { # IPL worker. Needs user as $1 and ipl device as $2. if test -n "$1" -a -n "$2" ; then if ! $(vmcp q "$1" >& /dev/null); then zvm_fatal "User $1 not logged on." else if ! $(vmcp send $1 cp ipl $2); then zvm_fatal "Could not send command to $1" fi fi else zvm_fatal "Not enough arguments for ipl. Need user and device number." fi } zvm_destroy() { # Destroy build. Done by killing the worker machine. # needs user as $1 if test -n "$1"; then if ! $(vmcp force $1 ) ; then zvm_fatal "Could not force $1" fi fi } zvm_get_local_devnr() { # $1 is base address as defined in ZVM_VOLUME_ROOT and ZVM_VOLUME_SWAP (top of file) # $2 is worker number # there is room for up to 100 workers for this controlling guest, however in our setup I expect only up to 10 workers. if test "$2" -ge 100 ; then zvm_fatal "Not more than 100 workers supported by one controlling guest." fi if test "$1" = "${ZVM_VOLUME_ROOT}" ; then DEVNR=$((300+$2)) else if test "$1" = "${ZVM_VOLUME_SWAP}" ; then DEVNR=$((400+$2)) else zvm_fatal "The disk devices for root and swap must be ${ZVM_VOLUME_ROOT} and ${ZVM_VOLUME_SWAP} respectively." fi fi echo $DEVNR } zvm_volume_link_local() { # attach worker disk to local system as preparation for # a) prepare worker for build # b) get rpms of the swap disk after build finished # disk must be detached from worker first # The following arguments are needed: # 1. Worker user name # 2. Worker disk device number # 3. Mult password for the disk # 4. Worker number to generate a uniq local device number if test -n "$4"; then DEVNR=$(zvm_get_local_devnr $2 $4) if ! vmcp link $1 $2 $DEVNR MW >& /dev/null ; then zvm_fatal "Could not link disk $2 from user $1 to local device $DEVNR." fi dasd_configure 0.0.0$DEVNR 1 0 >& /dev/null udevadm settle DEVICE=$(ls /sys/bus/ccw/devices/0.0.0$DEVNR/block/) if ! test -b /dev/${DEVICE}1 ; then zvm_fatal "The device /sys/bus/ccw/devices/0.0.0$DEVNR has not been setup correctly." fi echo "${DEVICE}1" else zvm_fatal "Not enough arguments given to volume_link_local." fi } zvm_volume_detach_local() { # we need # 1. worker device number # 2. worker number DEVNR=$(zvm_get_local_devnr $1 $2) zvm_prevent_detach $DEVNR sync dasd_configure 0.0.0$DEVNR 0 0 udevadm settle if ! vmcp detach $DEVNR >& /dev/null ; then zvm_fatal "Could not locally detach disk number $1 from worker $2" fi } zvm_volume_attach() { # link the local disk of the worker # $1: user name # $2: disk device number # send link * nr nr # guest might not yet be ready to receive commands sleep 1 if ! vmcp send $1 cp link \* $2 $2 ; then zvm_fatal "Could not link worker disk number $2 for user $1" fi } zvm_volume_detach() { # send machine detach nr # $1: user name # $2: disk if ! vmcp send $1 cp detach $2 ; then zvm_fatal "Could not detach disk $2 on worker $1" fi } zvm_worker_init() { # 1. Worker user name # 2. Worker root device number # 3. Worker swap device number # 4. Worker number to generate a uniq local device number # Check for: # - still mounted dasd # - configured dasd # - linked dasd # - reset worker with force and autolog DEVNR_ROOT=$(zvm_get_local_devnr $2 $4) DEVNR_SWAP=$(zvm_get_local_devnr $3 $4) # First, check for mounts: for DEVNR in $DEVNR_ROOT $DEVNR_SWAP ; do if test -d /sys/bus/ccw/devices/0.0.0$DEVNR/block ; then DEV=$(ls /sys/bus/ccw/devices/0.0.0$DEVNR/block/) echo "Found device of worker $1 available at $DEVNR, device is /dev/$DEV." grep "/dev/$DEV" /proc/mounts >& /dev/null && umount /dev/${DEV}1 fi done # Second, check if devices are online for DEVNR in $DEVNR_ROOT $DEVNR_SWAP ; do lsdasd $DEVNR | grep $DEVNR && dasd_configure 0.0.0$DEVNR 0 0 done # Third, remove stale links for DEVNR in $DEVNR_ROOT $DEVNR_SWAP ; do zvm_prevent_detach $DEVNR if vmcp q v $DEVNR 2> /dev/null ; then vmcp detach $DEVNR fi done # Fourth, reset worker zvm_logon $1 } zvm_cp() { if test -n "$1" ; then case "$1" in start) shift ; zvm_logon "$@" ;; ipl) shift ; zvm_ipl "$@" ;; destroy) shift ; zvm_destroy "$@" ;; volume_attach) shift ; zvm_volume_attach "$@" ;; volume_detach) shift ; zvm_volume_detach "$@" ;; volume_link_local) shift ; zvm_volume_link_local "$@" ;; volume_detach_local) shift ; zvm_volume_detach_local "$@" ;; memset) shift ; zvm_memset "$@" ;; worker_init) shift ; zvm_worker_init "$@" ;; esac fi } ####################################################################################### vm_verify_options_zvm() { # find the real device in the VM, includeing partition number VM_SWAPDEV="$(ls /sys/bus/ccw/devices/0.0.${ZVM_VOLUME_SWAP}/block/)1" VM_ROOT=${ZVM_VOLUME_ROOT} VM_SWAP=${ZVM_VOLUME_SWAP} if test -z "$VM_ROOT" ; then if test -n "$BUILD_ROOT" -a ${#BUILD_ROOT} -le 4 ; then VM_ROOT="$BUILD_ROOT" else VM_ROOT="0150" fi fi VM_ROOT_TYPE=unattached VM_SWAP_TYPE=unattached if test -n "$KILL" -o -n "$DO_WIPE" ; then return fi # z/VM guest name that is already defined in z/VM if test -z "$VM_WORKER" ; then cleanup_and_exit 3 "ERROR: No z/VM worker id specified" fi if test -z "$VM_WORKER_NO" ; then cleanup_and_exit 3 "ERROR: No z/VM worker number specified" fi # need the name for a kernel in zvm if test -n "$VM_KERNEL" ; then vm_kernel="$VM_KERNEL" elif test -e "/boot/vmlinux.gz" ; then vm_kernel="/boot/vmlinux.gz" else cleanup_and_exit 3 "ERROR: No z/VM kernel specified" fi # need the name for an initrd in zvm # this normally will not be the local initrd if test -n "$VM_INITRD" ; then vm_initrd="$VM_INITRD" else cleanup_and_exit 3 "ERROR: No z/VM initrd specified" fi zvm_cp worker_init $VM_WORKER $ZVM_VOLUME_ROOT $ZVM_VOLUME_SWAP $VM_WORKER_NO zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_ROOT zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_SWAP } vm_startup_zvm() { # link root/swap to the worker zvm_cp volume_attach $VM_WORKER $ZVM_VOLUME_ROOT zvm_cp volume_attach $VM_WORKER $ZVM_VOLUME_SWAP zvm_cp ipl $VM_WORKER $ZVM_VOLUME_ROOT # start IUCV Console # IPL needs some time until IPL really starts... sleep 5 # start iucv console. This blocks until build process is finished. iucvconn $VM_WORKER lnxhvc0 # sleep some time before taking root and swap devices from worker # This might be critical regarding timing (IUCV_CONSOLE down, but machine still running) sleep 5 # Build jobs might change the shutdown behavior, so just return if machine is powered off. if ! (vmcp q $VM_WORKER >& /dev/null); then return fi zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_ROOT zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_SWAP } vm_kill_zvm() { if vmcp q "$VM_WORKER" > /dev/null 2>&1 ; then if ! zvm_cp destroy $VM_WORKER ; then cleanup_and_exit 1 "could not kill zvm worker $VM_WORKER" fi fi } vm_initrd_obs_modules_zvm() { # This function is needed to add the required kernel modules that are # installed to the build system to the initrd that starts the worker. # Note, that calling mkinitrd directly for the initrd within the worker # currently causes segfaults, which might be a result from not having # all needed binaries within the build system. # In order to keep the initrd small, only those kernel modules are # copied that already exist in the initrd created by obsworker. # 1. build root mounted to local system # 2. initrd created on administrative worker # 3. kernel_version to add modules # initrd is to be created at $2-$3 # first, test if initrd has already been created test -f "${2}-${3}" && return TEMPDIR=$(mktemp -d /tmp/initrd.XXX) pushd $TEMPDIR # unpack initrd to add the kernel modules xzcat "$2" | cpio -i # detect currently installed kernel version current_kernel_version=$(ls lib/modules) # copy modules from kernel that is installed to the buildsystem: mkdir -p "$TEMPDIR/lib/modules/$3" assert_dir_path "lib/modules/$3" while read module; do (cd ${BUILD_ROOT}/lib/modules/${3}; \ assert_dir_path "lib/modules/$3/${module%/*.xz}" rsync -a --relative "$module" "${TEMPDIR}/lib/modules/$3") done < <(cd $TEMPDIR/lib/modules/${current_kernel_version}; \ find . -name "*.xz") # remove old kernel modules if [ "${current_kernel_version}" != "$3" ]; then rm -rf "$TEMPDIR/lib/modules/${current_kernel_version}" fi # create module dependencies: depmod -b "$TEMPDIR" "$3" # create new initrd: find . | cpio -H newc -o | xz -9 --format=lzma > "${2}-${3}" sync popd rm -rf $TEMPDIR } vm_fixup_zvm() { # initrd is created in obsstoragesetup. # If it is desired to use a project dependent kernel, use make_guestinitrd from zvm_functions. # have to copy kernel/initrd and run zipl to be able to IPL # have to set init_script before unmounting, thus doing it statically for now. zvm_init_script="/.build/build" assert_dir_path boot/zipl mkdir -p $BUILD_ROOT/boot/zipl vm_kernel="/.build.kernel.kvm" test -e "${BUILD_ROOT}${vm_kernel}" -a ! -L "${BUILD_ROOT}${vm_kernel}" || cleanup_and_exit 1 "${vm_kernel} does not exist" kernel_version=$(get_kernel_version "${BUILD_ROOT}${vm_kernel}") # add kernel modules to existing initrd vm_initrd_obs_modules_zvm "${BUILD_ROOT}" "${vm_initrd}" "${kernel_version}" vm_initrd="${vm_initrd}-${kernel_version}" # copy initrd to build worker: echo "copy $vm_initrd to $BUILD_ROOT" rm -rf "${BUILD_ROOT}/boot/${vm_initrd}" cp -a "${vm_initrd}" "${BUILD_ROOT}/boot" # finally, install bootloader to the worker disk # XXX/TODO: does zipl read or write ${BUILD_ROOT}${vm_initrd}? Either # rm -rf the file or check for a symlink zipl -t "$BUILD_ROOT/boot/zipl" -i "${BUILD_ROOT}${vm_kernel}" \ -r "${BUILD_ROOT}${vm_initrd}" \ --parameters "${zvm_param} init=$zvm_init_script rootfsopts=noatime" sync udevadm settle } vm_attach_root_zvm() { VM_ROOT=$(ZVM_CLEANUP=1 zvm_cp volume_link_local $VM_WORKER $ZVM_VOLUME_ROOT $zvm_mult_pass $VM_WORKER_NO ) if test "${VM_ROOT}" = "${VM_ROOT#dasd}" ; then cleanup_and_exit 3 "did not get a real device for VM_ROOT: $VM_ROOT" fi VM_ROOT="/dev/$VM_ROOT" VM_ROOT_TYPE=device } vm_attach_swap_zvm() { VM_SWAPDEV=$(ZVM_CLEANUP=1 zvm_cp volume_link_local $VM_WORKER $ZVM_VOLUME_SWAP $zvm_mult_pass $VM_WORKER_NO ) if test "${VM_SWAPDEV}" = "${VM_SWAP#dasd}" ; then cleanup_and_exit 3 "did not get a real device for VM_SWAPDEV: $VM_SWAPDEV" fi VM_SWAP="/dev/$VM_SWAPDEV" VM_SWAPDEV="/dev/$VM_SWAPDEV" VM_SWAP_TYPE=device } vm_detach_root_zvm () { sync zvm_cp volume_detach_local $ZVM_VOLUME_ROOT $VM_WORKER_NO VM_ROOT_TYPE=unattached } vm_detach_swap_zvm() { zvm_cp volume_detach_local $ZVM_VOLUME_SWAP $VM_WORKER_NO VM_SWAP_TYPE=unattached } vm_cleanup_zvm() { if test -n "$VM_WORKER" -a -n "$VM_WORKER_NO" -a -n "$ZVM_VOLUME_ROOT" -a -n "$ZVM_VOLUME_SWAP" ; then ZVM_CLEANUP=1 (zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_ROOT >/dev/null 2>&1) (zvm_cp volume_detach $VM_WORKER $ZVM_VOLUME_SWAP >/dev/null 2>&1) (zvm_cp volume_detach_local $ZVM_VOLUME_ROOT $VM_WORKER_NO >/dev/null 2>&1) (zvm_cp volume_detach_local $ZVM_VOLUME_SWAP $VM_WORKER_NO >/dev/null 2>&1) fi } vm_sysrq_zvm() { : } vm_wipe_zvm() { : } obs-build-20210120/build.1000066400000000000000000000155401400202264700150060ustar00rootroot00000000000000.de TQ \"follow a TP item with several TQ items to define several . \"entities with one shared description. .br .ns .TP \\$1 .. .TH BUILD 1 "(c) 1997-2018 SUSE Linux AG Nuernberg, Germany" .SH NAME build \- build SUSE Linux RPMs in a chroot environment .SH SYNOPSIS .B build .RB [ --clean | --no-init] .RB [ --repo .IR dir_or_url ] .RB [ --repo ...] .RB [ --root .IR buildroot ] .RB [ recipefile ] .br .B build .B --help .br .B build .B --verify .SH DESCRIPTION \fBbuild\fR is a tool to build binary packages in a safe and reproducible way. The default is to build in a chroot sandbox, but \fBbuild\fP also supports building in a virtual machine for better security. .P If a recipe file is specified on the command line, .B build will use this file and all other files in the directory for building the package. If no recipe argument is provided, build will search the current directory for a file. .P The .B build tool understands the following recipe file types: .TP .B spec A specfile used to generate rpms. .TP .B src.rpm A source rpm, which will be unpacked for the build. .TP .B kiwi A kiwi config file used to generate a kiwi image. .TP .B dsc A dsc file used to generate Debian binary packages. .TP .B PKGBUILD A file used to generate Arch Linux binary packages. .TP .B build.collax A shell script used to generate a Collax binary package. .P .SH OPTIONS .TP .B --clean Remove the build system and reinitialize it from scratch. .TP .B --no-init Skip the build system initialization and start with build immediately. .TP .BI "\-\-repo " dir_or_url Either a directory containing binary packages (optionally with repository metadata), or a url pointing to some remote repository. Multiple \fB--repo\fP options can be used so create a specific repository layering. Note that packages are searched in the specified repository order, i.e. the first repository containing a package with a specific name wins regardless of the version. As a special form, 'zypp://reponame' can be used to specify a system repository. 'zypp://' selects all enabled system repositories. This is also the default if BUILD_RPMS is not set and no \fB--rpms\fP or \fB--repo\fP option is used. .TP .BI "\-\-dist " distribution Set the distribution. If this option is not given, build tries to guess the distribution by looking at the available packages. The specified distribution can either be a string like "11.2" or "sles9", "debian7", or the pathname of the build configuration to use. .TP .BI "\-\-root " buildroot Specifies where the build system is set up. Overrides the BUILD_ROOT enviroment variable. .TP .B --help Print a short help text. .TP .B --norootforbuild Force building with user \fRabuild\fP. Otherwise, \fBbuild\fP searches the recipe file for a "needsrootforbuild" hint to decide what user to use. .TP .B --list-state list packages that would be used to create a fresh build root. Does not create the build root or perform a build. .TP .BI "\-\-rpms " path1 : path2 : path3\fR...\fP Where build can find the packages needed to create the build system. This option overrides the BUILD_RPMS environment variable. This option is deprecated, use \fB--repo\fP instead. .TP .BI "\-\-arch " arch1 : arch2 : arch3\fR...\fP What architectures to select from the RPMs. .B build automatically sets this to a sensible value for your host if you do not specify this option so you should almost never need it. .SH RPM BUILD SPECIFIC OPTIONS .TP .B --useusedforbuild Tell build not to do dependency expansion, but to extract the list of packages to install from "# usedforbuild" lines or, if none are found, from all "BuildRequires" lines. This option is useful if you want to re-build a package from a srcrpm with exactly the same packages used for the srcrpm build. .TP .B --stage Pass a stage option to rpmbuild. The default is \fB-ba\fP. .TP .B --target Call rpmbuild with a target option. This can be used for cross building. .TP .B --verify Verify the files in an existing build system. .SH VIRTUAL MACHINE SPECIFIC OPTIONS .TP .B "--xen --kvm --uml --qemu --emulator --zvm --lxc" Sets a specific vm type. .TP .BI "--vm-type " type As above. .TP .BI "--vm-disk " file Specifies the location of the disk image to use. If this option is not given, \fIbuildroot\fP\fB.img\fP is used (e.g. /var/tmp/build-root.img). .TP .BI "--vm-disk-size " size_in_mb Specify the size of the disk image to create. .TP .BI "--vm-disk-filesystem " type Sets the filesystem type to use when creating the disk image. The default is to use the ext3 filesystem. .TP .BI "--vm-swap " file Specifies the location of the swap file to use. If this option is not given, \fIbuildroot\fP\fB.swap\fP is used (e.g. /var/tmp/build-root.swap). .TP .BI "--vm-swap-size " size_in_mb Specify the size of the swap file to create. .TP .BI "--vm-memory " size_in_mb Sets the desired memory size of the virtual machine. .TP .BI "--vm-kernel " kernel_file Set a specific kernel to boot in the virtual machine. .TP .BI "--vm-initrd " initrd_file Set a specific kernel to boot in the virtual machine. .TP .B --vm-disk-clean Force the recreation of the disk image. .TP .B "--vm-telnet" PORT Is forwarding PORT to a telnet session inside of the VM. Specify also needed extra packages via -x parameter, usually: .I --vm-telnet 1234 -x telnet-server -x net-tools And connect from the host via: .I telnet localhost 1234 NOTE: The telnet server gets started after all packages got installed. .SH RECIPE FILE OPTIONS The .B build command interprets some special control comments in the recipe file: .TP .B # norootforbuild .TQ .B # needsrootforbuild .B build uses either user .I root or user .I abuild in the build system to do the build. For non-SUSE distros as well as since SUSE 10.2, the default build user is .I abuild. For 10.2 and before, the default build user is .I root. These two flags in the spec file allow to deviate from the defaults and force-set the build user to .I abuild and .I root .RI "(for " "#\ norootforbuild" " and " "#\ needsrootforbuild" " respectively." .TP .B # needsbinariesforbuild provide the binary rpms that have been used to set up the build root in .I /.build.binaries within the build root. .SH ENVIRONMENT .TP .B BUILD_ROOT The directory where build should install the chrooted build system. "/var/tmp/build-root" is used by default. See the \fB--root\fP option. .TP .B BUILD_RPMS This can be used instead of the \fB--rpms\fP option. Deprecated. .TP .B BUILD_RPM_BUILD_STAGE The rpm build stage (-ba, -bb, ...). This is just passed through to rpm, check the rpm manpage for a complete list and descriptions. "-ba" is the default. You should probably use the \fB--stage\fP option instead. .SH SEE ALSO .BR rpm (8), dpkg (8), pacman (8), kiwi (8) .TP .BR "Maximum RPM": .I http://www.rpm.org/max-rpm/ .TP .BR "cross distribution packaging": .I http://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto .TP .BR "openSUSE packaging standards and guidelines": .I http://en.opensuse.org/Portal:Packaging obs-build-20210120/build.conf.example000066400000000000000000000015401400202264700172200ustar00rootroot00000000000000# Example configuration for buildroot and parameter whitelisting. # Can be used to make multi-user environments more secure. Everything is # allowed by default if no whitelist is defined. # # List of whitelisted build roots. # %user will be replaced with $SUDO_USER (or $USER when running without sudo) # # ALLOW_BUILD_ROOT: /var/tmp/%user/build-root # ALLOW_BUILD_ROOT: /var/tmp/build-root # List of whitelisted parameters. Allowed parameters # must be listed in double dash format. # # ALLOW_PARAM: --arch # ALLOW_PARAM: --changelog # ALLOW_PARAM: --clean # ALLOW_PARAM: --dist # ALLOW_PARAM: --jobs # ALLOW_PARAM: --noinit # ALLOW_PARAM: --norootforbuild # ALLOW_PARAM: --root # ALLOW_PARAM: --rpmlist # # Specific parameter arguments can be whitelisted (other arguments # are not allowed in that case): # # ALLOW_PARAM: --jobs 1 obs-build-20210120/buildvc.1000066400000000000000000000015651400202264700153410ustar00rootroot00000000000000.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), obs-build-20210120/call-flatpak-builder000077500000000000000000000025101400202264700175230ustar00rootroot00000000000000#!/bin/bash export BUILD_DIR=${BUILD_DIR:-/usr/lib/build} IS_UNSHARED= 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 "$BUILD_ROOT" ; then echo "Usage: call-flatpak-builder --root " exit 1 fi if test -z "$IS_UNSHARED" ; then echo "Unsharing environment" # unshare mounts and network exec unshare -m -n $BUILD_DIR/call-flatpak-builder --isunshared --root "$BUILD_ROOT" "$@" exit 1 fi if test -n "$IS_UNSHARED" ; then # make mounts private mount --make-rprivate / fi if test "$BUILD_ROOT" != '/' ; then # make build root a mount point mount --rbind --make-private "$BUILD_ROOT" "$BUILD_ROOT" mount --make-rprivate "$BUILD_ROOT" fi # setup mounts test -e "$BUILD_ROOT/proc/self" || mount -n -tproc none $BUILD_ROOT/proc set -x # Build into repo chroot "$BUILD_ROOT" bash -c "cd /usr/src/packages/FLATPAK_ROOT && flatpak-builder --default-branch=$FLATPAK_APP_VERSION --force-clean --repo=$FLATPAK_REPO build-dir $FLATPAK_FILE" # Create bundle from repo chroot "$BUILD_ROOT" bash -c "flatpak build-bundle --runtime-repo=$FLATPAK_REMOTE $FLATPAK_REPO $TOPDIR/OTHER/$FLATPAK_APP-$FLATPAK_APP_VERSION.flatpak $FLATPAK_APP $FLATPAK_APP_VERSION" obs-build-20210120/call-podman000077500000000000000000000033101400202264700157320ustar00rootroot00000000000000#!/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 --cgroup-manager=cgroupfs "$@" obs-build-20210120/changelog2spec000077500000000000000000000160241400202264700164350ustar00rootroot00000000000000#!/usr/bin/perl -w # # Convert a SUSE or Debian changelog file to rpm format # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Date::Parse; use Time::Zone; use strict; my @wday = qw{Sun Mon Tue Wed Thu Fri Sat}; my @mon = qw{Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec}; my $ok; my $zone; my $test; my $fulltimestamps; my $emailonly; my $printtype; my $input = ''; my $target = 'rpm'; while (@ARGV) { if ($ARGV[0] eq '--selftest') { shift; print map_changes(@ARGV); exit 0; } if ($ARGV[0] eq '--test') { $test = 1; shift @ARGV; next; } if ($ARGV[0] eq '--type') { $printtype = 1; shift @ARGV; next; } if ($ARGV[0] eq '--fulltimestamps') { $fulltimestamps = 1; shift @ARGV; next; } if (@ARGV > 1 && $ARGV[0] eq '--target') { shift @ARGV; $target = shift @ARGV; next; } if ($ARGV[0] eq '--emailonly') { $emailonly = 1; shift @ARGV; next; } last; } if (@ARGV == 2 && $ARGV[0] eq '--file') { die("bad --file arg\n") unless $ARGV[1] =~ /^(.*)\/([^\/]+)$/; my ($dir, $file) = ($1, $2); $file =~ s/\.(?:spec|dsc)$//; opendir(D, $dir) || die("$dir: $!\n"); my @changes = grep {/\.changes$/} readdir(D); closedir(D); my $changesfile=map_changes($file, @changes); exit(1) unless $changesfile; @ARGV = ("$dir/$changesfile"); } sub map_changes { my ($file, @changes) = @_; @changes = sort {length($a) <=> length($b) || $a cmp $b} @changes; # support _service: prefixes, they need to be stripped $file =~ s/^_service:.*://; my %changes = map {/^((?:_service:.*:)?(.*?))$/ ? ($2, $1) : ($_, $_)} @changes; @changes = keys %changes; return undef unless @changes; # nothing to do @changes = sort {length($a) <=> length($b) || $a cmp $b} @changes; if (@changes > 1) { while ($file ne '') { my @c = grep {/\Q${file}.changes\E/} @changes; if (@c) { @changes = @c; last; } last unless $file =~ s/[-.][^-.]*$//; } } return $changes{$changes[0]}; } sub parse_suse { $_ = $_[0]; my $dline; die("bad changelog heading\n") unless /^(?:\* )?([A-Za-z]+\s+[A-Za-z]+\s+[0-9][^-]*?[0-9][0-9][0-9][0-9])(.*\@.*$)/; my $dt = $1; my $who = $2; $dt = lc($dt); $who =~ s/^\s+//; $who =~ s/^-\s*//; $who = $1 if $emailonly && $who =~ /\<(.*)\>/; $dt =~ /([0-9][0-9][0-9][0-9])/; $dline = $_; my $year = $1; if (!defined($zone) && $dt =~ /\s([a-z]{3,4})(dst)?\s[0-9]{4}/) { my $dst = $2; $zone = tz_offset($1); $zone += 3600 if defined($zone) && $dst; } my $tdt = str2time($dt); $dt =~ /([0-9]+)/; my $day = $1; if (!$tdt) { if ($dt =~ /([a-z]{3})\s+([a-z]{3})/) { $tdt = str2time("$1 $2 $day $year"); } } if (!$tdt) { if ($dt =~ /([a-z]{3})/) { $tdt = str2time("$1 $day $year"); } } if (!$tdt) { $tdt = str2time("$year-1-1"); } $tdt += 12 * 3600 unless $dt =~ /\d:\d/; # 12:00 if not specified $tdt += ($zone || 0); my $ok = 1; my $change = ''; while(<>) { chomp; last if /^(?:\* )?([A-Za-z]+\s+[A-Za-z]+\s+[0-9][^-]*?[0-9][0-9][0-9][0-9])(.*\@.*$)/; next if (/^--------------/); next if (/^========================/); s/\s+$//; next if $_ eq ''; s/^\s*-/-/ if $ok == 1; # obsolete? s/^\s*\*\s*/ * /; if (!/^-/) { s/^\s+-\s*/ - /; s/^\s*/ / unless s/^ \s*/ /; } $change .= "$_\n"; $ok = 2; } return ($_, $tdt, $dline, $who, $change); } sub parse_debian { $_ = $_[0]; die("bad line: $_\n") unless /^(\w[-+0-9a-z.]*) \(([^\(\) \t]+)\)((\s+[-+0-9a-z.]+)+)\;.*$/; my $package = $1; my $version = $2; my $distribution = $3; my $who; my $date; my $changes = "- version $version\n"; while(<>) { chomp; s/\s+$//; next if $_ eq ''; if (/^ --/) { die("bad maintainer line\n") unless /^ \-\- (.* <.*>) (.*)$/; $who = $1; $date = $2; last; } die("bad change details line: $_\n") unless s/^ //; s/^\*/-/; s/\s*\(closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*\)//i; s/\s+$//; next if $_ eq ''; $changes .= "$_\n"; } die("no maintainer line in last entry\n") unless defined $date; if (!defined($zone) && ($date =~ /([-+])(\d\d)(\d\d)$/)) { $zone = 60 * ($3 + 60 * $2); $zone = -$zone if $1 eq '-'; } my $tdt = str2time($date); return ('', $tdt, $_, $who, $changes); } my $format; while (<>) { chomp; next if /^\s*$/; next if (/^--------------/); next if (/^========================/); if (/^(?:\* )?([A-Za-z]+\s+[A-Za-z]+\s+[0-9][^-]*?[0-9][0-9][0-9][0-9])(.*\@.*$)/) { # suse : * Fri Jun 07 2013 First Last # tizen: * Fri Jun 07 2013 First Last tagname@commitid $format = 'suse'; } elsif (/^(\w[-+0-9a-z.]*) \(([^\(\) \t]+)\)((\s+[-+0-9a-z.]+)+)\;.*$/) { $format = 'debian'; } else { die("unknown changelog format\n"); } last; } exit(0) unless $format; if ($printtype) { print "$format\n"; exit(0); } if ($target eq $format) { print "$_\n"; while (<>) { print $_; } exit(0); } die("don't know how to convert changelog to format '$target'\n") if $target ne 'rpm'; my ($lastt, $t, $dline, $who, $changes); while(defined($_)) { if (/^\s*$/) { $_ = <>; last unless $_; chomp; next; } if ($format eq 'suse') { ($_, $t, $dline, $who, $changes) = parse_suse($_); } elsif ($format eq 'debian') { ($_, $t, $dline, $who, $changes) = parse_debian($_); } if (defined($lastt) && $lastt < $t) { die("changes file not incremental: $dline\n") if $test; warn("changes file not incremental: $dline\n"); } $lastt = $t; my @gm = gmtime($t); # silly rpm can't hande dates < 1997, so we fold everything to # Thu Jan 02 1997 @gm = (0, 0, 0, 2, 0, 97, 4) if $gm[5] < 97 || ($gm[5] == 97 && $gm[4] == 0 && $gm[3] <= 1); $gm[6] = $wday[$gm[6]]; $gm[5] += 1900; $gm[4] = $mon[$gm[4]]; if($fulltimestamps) { printf("* %s %s %2d %02d:%02d:%02d UTC %4d %s\n", @gm[6,4,3,2,1,0,5], $who); } else { printf("* %s %s %2d %4d %s\n", @gm[6,4,3,5], $who); } $changes =~ s/%/%%/g; $changes =~ s/^(\s*)%%(\S*)/$1\[%%$2\]/; $changes =~ s/^(\s*)(\#\d*)/$1\[$2\]/mg; $changes =~ s/^\*/ */mg; print $changes; } exit(0); obs-build-20210120/common_functions000077500000000000000000000142361400202264700171340ustar00rootroot00000000000000#!/bin/bash ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ build_host_arch() { : ${BUILD_HOST_ARCH:=`uname -m`} # the linux kernel only knows armv7l, armv7hl is a userland definition test armv7l == "$BUILD_HOST_ARCH" && BUILD_HOST_ARCH=armv7hl test armv6l == "$BUILD_HOST_ARCH" && BUILD_HOST_ARCH=armv6hl BUILD_INITVM_ARCH="$BUILD_HOST_ARCH" # avoid multiple initvm.* helpers for i586 and i686 test i686 != "$BUILD_INITVM_ARCH" || BUILD_INITVM_ARCH=i586 } extend_build_arch() { case $BUILD_ARCH in aarch64) BUILD_ARCH="aarch64:aarch64_ilp32:armv8l" ;; aarch64_ilp32) BUILD_ARCH="aarch64_ilp32:aarch64:armv8l" ;; armv8l) BUILD_ARCH="armv8l" ;; # armv8l is aarch64 in 32bit mode. not a superset of armv7 armv7hl) BUILD_ARCH="armv7hl:armv7l:armv6hl:armv6l:armv5tel" ;; armv7l) BUILD_ARCH="armv7l:armv6l:armv5tel" ;; armv6hl) BUILD_ARCH="armv6hl:armv6l:armv5tel" ;; armv6l) BUILD_ARCH="armv6l:armv5tel" ;; armv5tel) BUILD_ARCH="armv5tel" ;; m68k) BUILD_ARCH="m68k" ;; mips64) BUILD_ARCH="mips64:mips" ;; mips) BUILD_ARCH="mips" ;; i686) BUILD_ARCH="i686:i586:i486:i386" ;; i586) BUILD_ARCH="i586:i486:i386" ;; i486) BUILD_ARCH="i486:i386" ;; i386) BUILD_ARCH="i386" ;; ia64) BUILD_ARCH="ia64" ;; parisc64) BUILD_ARCH="hppa64:hppa" ;; parisc) BUILD_ARCH="hppa" ;; ppc) BUILD_ARCH="ppc" ;; ppc64) BUILD_ARCH="ppc64:ppc" ;; ppc64le) BUILD_ARCH="ppc64le" ;; riscv64) BUILD_ARCH="riscv64" ;; s390x) BUILD_ARCH="s390x:s390" ;; s390) BUILD_ARCH="s390" ;; sparc64v) BUILD_ARCH="sparc64v:sparc64:sparcv9v:sparcv9:sparcv8:sparc" ;; sparc64) BUILD_ARCH="sparc64:sparcv9:sparcv8:sparc" ;; sparcv9v) BUILD_ARCH="sparcv9v:sparcv9:sparcv8:sparc" ;; sparcv9) BUILD_ARCH="sparcv9:sparcv8:sparc" ;; sparcv8) BUILD_ARCH="sparcv8:sparc" ;; sparc) BUILD_ARCH="sparc" ;; x86_64) BUILD_ARCH="x86_64:i686:i586:i486:i386" ;; esac } set_build_arch() { build_host_arch if test -z "$BUILD_ARCH" ; then BUILD_ARCH="$BUILD_HOST_ARCH" fi extend_build_arch if test "$BUILD_ARCH" != "${BUILD_ARCH#i686}" ; then cpuflags=`grep ^flags /proc/cpuinfo` cpuflags="$cpuflags " if test "$cpuflags" = "${cpuflags/ cx8 /}" -o "$cpuflags" = "${cpuflags/ cmov /}"; then echo "Your cpu doesn't support i686 rpms. Exit." cleanup_and_exit 1 fi fi } check_exit() { if test -e $BUILD_ROOT/exit; then echo "exit ..." cleanup_and_exit 1 fi } check_use_emulator() { INITVM_NAME= # check if the extended host arch contains the build arch local old_build_arch="$BUILD_ARCH" local arch="${BUILD_ARCH%%:*}" BUILD_ARCH="$BUILD_HOST_ARCH" extend_build_arch BUILD_ARCH=":$BUILD_ARCH:" if test "$BUILD_ARCH" != "${BUILD_ARCH/:$arch:/}" ; then # native supported arch, no emulator BUILD_ARCH="$old_build_arch" return 1 fi BUILD_ARCH="$old_build_arch" # to run the qemu initialization in the vm, we need to # register it with a static program or shell script INITVM_NAME="initvm.$BUILD_INITVM_ARCH" if test -e "$BUILD_DIR/$INITVM_NAME" -a -e "$BUILD_DIR/qemu-reg" ; then chmod 0755 "$BUILD_DIR/$INITVM_NAME" return 0 # chroot build, we need to run fi # XXX: error? echo "Warning: cross compile not possible due to missing static binaries. please install build-initvm package for that purpose." echo " check that the right architecture is available for your build host, you need $INITVM_NAME for this one." INITVM_NAME= return 1 } # usage: # progress_setup LIST # for I in $LIST; do # progress_step LIST # action $I # done # $1 name of a textual list progress_setup() { eval "$1__ARRAY__=(\$$1)" eval "$1__INDEX__=1" eval "$1__LENGTH__=\${#$1__ARRAY__[@]}" } # $1 name of a textual list # $2 optional, printf format for 2 numeric arguments (current, total) progress_step() { local IDX=$1__INDEX__ local LEN=$1__LENGTH__ printf "${2-[%d/%d] }" $(($IDX++)) ${!LEN} } # umount that does not follow symlinks buildroot_umount() { local d="$1" local d2="/$d" while test -n "$d2" ; do test -L "$BUILD_ROOT$d2" && return test -d "$BUILD_ROOT$d2" || return d2="${d2%/*}" done # XXX: use stat -f /dev/pts/ -c %T to check whether it's mounted and not suppress errors? umount -n "$BUILD_ROOT/$d" 2>/dev/null || true } # rm that makes sure the file is gone buildroot_rm() { rm -rf "$BUILD_ROOT/$1" test -e "$BUILD_ROOT/$1" && cleanup_and_exit 1 "could not remove $BUILD_ROOT/$1" } assert_dirs() { local d rl if test -z "$1" ; then set usr sbin usr/bin usr/sbin etc .build .build.oldpackages .init_b_cache .init_b_cache/scripts .init_b_cache/rpms .preinstall_image proc proc/sys proc/sys/fs proc/sys/fs/binfmt_misc sys dev dev/pts dev/shm mnt fi for d in "$@" ; do if test -L "$BUILD_ROOT/$d" ; then rl="$(readlink "$BUILD_ROOT/$d")" test "$d" = sbin -a "x$rl" = "xusr/sbin" && continue test "$d" = sbin -a "x$rl" = "xusr/bin" && continue test "$d" = usr/sbin -a "x$rl" = "xbin" && continue cleanup_and_exit 1 "$d: illegal symlink to $rl" else test -e "$BUILD_ROOT/$d" -a ! -d "$BUILD_ROOT/$d" && cleanup_and_exit 1 "$d: not a directory" fi done } assert_dir_path() { test "$1" != "${1%/*}" && assert_dir_path "${1%/*}" assert_dir "$1" } obs-build-20210120/computeblocklists000077500000000000000000000231161400202264700173170ustar00rootroot00000000000000#!/usr/bin/perl -w # compute the blocks used by a file # usage: # computeblocklists [options] # options: # --padstart NUM, --padend NUM, --verbose # # output: # # # a block is either a number or a range (start-end) # ################################################################ # # Copyright (c) 1995-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 # ################################################################ use strict; # the ioctls we use my $FIBMAP = 1; my $FIGETBSZ = 2; my $FIEMAP = 0xc020660b; # _IOWR('f', 11, struct fiemap) # powerpc, mips, sparc, and alpha have 3 direction bits # and represent _IOC_NONE as 1 instead of 0. sub alt_ioctl($) { my ($ioctl_nr) = @_; my $size = ($ioctl_nr >> 16) & 0x3fff; my $dir = ($ioctl_nr >> 30); my $base = $ioctl_nr & 0x1fffffff; die "invalid size $size" if ($size > (1 << 13)); return $base | ($dir + 1) << 29; } # # Use FIBMAP to gather block lists, block-by-block # This is the older, slower way to iterate over file extents but # will generally work on older kernels. The block number also # must fit into an integer limiting the size of the file system. # sub fibmap_blocklist($$$) { my ($fd, $filesize, $bsize) = @_; my $exts = ''; my $blocks = int(($filesize + $bsize - 1) / $bsize); die("file is too big for fibmap\n") if $blocks * $bsize < $filesize; my ($firstblock, $lastblock); for (my $cnt = 0; $cnt < $blocks; ++$cnt) { my $block = pack('I', $cnt); if (not defined ioctl($fd, $FIBMAP, $block)) { if (not defined ioctl($fd, alt_ioctl($FIBMAP), $block)) { die("fibmap ioctl: $!\n"); } } $block = unpack('I', $block); if (defined($firstblock) && $block == ($firstblock ? $lastblock + 1 : 0)) { $lastblock++; # continue run next; } # finish old run $exts .= "-$lastblock" if defined($firstblock) && $firstblock != $lastblock; # start new run $exts .= " $block"; $firstblock = $lastblock = $block; } # finish last run $exts .= "-$lastblock" if defined($firstblock) && $firstblock != $lastblock; return $exts; } # # Use the FIEMAP ioctl to gather block lists, defined extent at a time # This is the newer way to gather extent information. We iterate the file # up to 50 extents at a time, each describing a contiguous, non-hole, range. # # see /usr/include/linux/fiemap.h for definitions of the flags used below # my $q_emu = 0; # 0=no emu, 1=little endian, 2=big endian sub pack_Q { my ($v) = @_; return pack('Q', $v) unless $q_emu; my $v1 = int($v / 4294967296); my $v2 = int($v - 4294967296 * $v1); ($v1, $v2) = ($v2, $v1) if $q_emu == 1; return pack('LL', $v1, $v2); } sub unpack_Q { return unpack('Q', $_[0]) unless $q_emu; my ($v1, $v2) = unpack('LL', $_[0]); ($v1, $v2) = ($v2, $v1) if $q_emu == 1; my $v = $v1 * 4294967296 + $v2; die("unpack_Q: number too big\n") if int($v - 4294967296 * $v1) != $v2; return $v; } # Convert a size into a block number and an offset. sub bytes_in_blocks($$) { my ($bytes, $bsize) = @_; my $blk = int($bytes / ($bsize * 65536)) * 65536; # work with 32bit int $blk += int(($bytes - $blk * $bsize) / $bsize); return ($blk, $bytes - $blk * $bsize); } # Create an extent descriptor sub createext($$$;$) { my ($start, $end, $bsize, $islast) = @_; die if $start > $end; my ($startblk, $startoff) = bytes_in_blocks($start, $bsize); my ($endblk, $endoff) = bytes_in_blocks($end, $bsize); $endoff = $bsize - 1 if $islast; my $ext = " $startblk"; $ext .= ":$startoff" if $startoff != 0; if ($startblk != $endblk || $endoff != $bsize - 1) { $ext .= "-$endblk"; $ext .= ":$endoff" if $endoff != $bsize - 1; } return $ext; } sub fiemap_blocklist($$$) { my ($file, $filesize, $bsize) = @_; # check if pack/unpack supports the Q template $q_emu = 0; eval { die if unpack('Q', pack('Q', 1)) != 1 }; if ($@) { # nope, fallback to encode/decode helpers $q_emu = unpack('C', pack('L', 1)) ? 1 : 2; } my $exts = ''; my $offset = 0; while ($offset < $filesize) { my $flags_in = 0x00000001; # FIEMAP_FLAG_SYNC my $x = pack("a8a8IIIx4.", pack_Q($offset), pack_Q($filesize), $flags_in, 0, 50, 4096); if (not defined ioctl($file, $FIEMAP, $x)) { if (not defined ioctl($file, alt_ioctl($FIEMAP), $x)) { die("fiemap ioctl: $!\n"); } } my ($flags, $count, @extents) = unpack('x16IIx8(a8a8a8a8a8IIII)[50]', $x); last if $count == 0; # rest is a hole for (my $i = 0; $i < $count; $i++) { $extents[$_] = unpack_Q($extents[$_]) for 0, 1, 2; my ($logical, $physical, $length, $resv1, $resv2, $flags) = splice(@extents, 0, 9); die("logical offset outside of file?\n") if $logical < 0 || $logical >= $filesize; die("going back in file?\n") if $offset > $logical; die("extent with bad size?\n") if $length <= 0; # add a hole entry if needed $exts .= createext(0, $logical - $offset - 1, $bsize) if $offset < $logical; my $islast = $logical + $length >= $filesize ? 1 : 0; # Not a hole but for these purposes we should treat it as one if ($flags & 0x00000800) { # UNWRITTEN $exts .= createext(0, $length - 1, $bsize, $islast); } elsif ($flags & 0x00000008) { # ENCODED die("extent mapped but is encoded\n"); # UNKNOWN|DELALLOC|DATA_ENCRYPTED|NOT_ALIGNED|DATA_INLINE|DATA_TAIL } elsif ($flags & 0x00000786) { die("extent cannot be block-mapped\n"); } else { $exts .= createext($physical, $physical + $length - 1, $bsize, $islast); } $offset = $logical + $length; } } $exts .= createext(0, $filesize - $offset - 1, $bsize, 1) if $offset < $filesize; return $exts; } my ($opt_padstart, $opt_padend, $opt_verbose, $opt_manifest, $opt_mani0, $opt_fibmap); $opt_verbose = 0; while (@ARGV) { if ($ARGV[0] eq '--padstart') { shift @ARGV; $opt_padstart = shift @ARGV; next; } if ($ARGV[0] eq '--padend') { shift @ARGV; $opt_padend = shift @ARGV; next; } if ($ARGV[0] eq '--verbose' || $ARGV[0] eq '-v') { shift @ARGV; $opt_verbose++; next; } if ($ARGV[0] eq '-0') { shift @ARGV; $opt_mani0 = 1; next; } if ($ARGV[0] eq '--manifest') { shift @ARGV; $opt_manifest = shift @ARGV; next; } if ($ARGV[0] eq '--fibmap') { shift @ARGV; $opt_fibmap = 1; next; } last; } print "\n"x$opt_padstart if $opt_padstart; if ($opt_manifest) { if ($opt_manifest eq '-') { open(MANIFEST, '<&STDIN') || die("STDIN dup: $!\n"); } else { open(MANIFEST, '<', $opt_manifest) || die("$opt_manifest: $!\n"); } } while (1) { my $file; if (@ARGV) { $file = shift @ARGV; } elsif ($opt_manifest) { if ($opt_mani0) { local $/ = "\0"; $file = ; last unless defined $file; $file =~ s/\0$//s; } else { $file = ; last unless defined $file; chomp $file; } } else { last; } my $n = $file; $n =~ s/([\000-\037 %])/sprintf("%%%02X", ord($1))/ges; if (-l $file) { print STDERR "$file\n" if $opt_verbose && !($opt_verbose == 1 && $file =~ /^KIWI\/.*\//); my $c = readlink($file); die("$file: readlink: $!\n") unless defined $c; if ("/$c/" =~ /\/\.?\//s) { print STDERR "$file: bad symlink ($c), ignored\n"; next; } if ("/$c/" =~ /^((?:\/\.\.)+)\/(.*?)$/s) { my ($head, $tail) = ($1, $2); if (("/$tail/" =~ /\/\.\.\//s) || (($head =~ y!/!!) > ($file =~ y!/!!))) { print STDERR "$file: bad symlink ($c), ignored\n"; next; } } else { if ("/$c/" =~ /\/\.\.\//s) { print STDERR "$file: bad symlink ($c), ignored\n"; next; } } $c =~ s/([\000-\037 %])/sprintf("%%%02X", ord($1))/ges; print "l $n $c\n"; next; } elsif (-d _) { print STDERR "$file\n" if $opt_verbose && ($opt_verbose > 1 || $file =~ /^KIWI\/[^\/]*$/); print "d $n\n"; next; } elsif (! -f _) { print STDERR "$file: unsupported file type, ignored\n"; next; } print STDERR "$file\n" if $opt_verbose && !($opt_verbose == 1 && $file =~ /^KIWI\/.*\//); my $fd = undef; if (!open($fd, '<', $file)) { print STDERR "$file: $!\n"; next; } my @stat = stat($fd); die unless @stat; my $filesize = $stat[7]; if ($filesize == 0) { print "f $n 0\n"; close($fd); next; } my $bsize = pack('I', 0); if (not defined ioctl($fd, $FIGETBSZ, $bsize)) { if (not defined ioctl($fd, alt_ioctl($FIGETBSZ), $bsize)) { die("$file: FIGETBSZ failed: $!\n"); } } $bsize = unpack('I', $bsize); die("$file: illegal blocksize $bsize\n") unless $bsize > 0; my $exts; if (!$opt_fibmap) { eval { $exts = fiemap_blocklist($fd, $filesize, $bsize) }; warn($@) if $@; } if (!defined($exts)) { eval { $exts = fibmap_blocklist($fd, $filesize, $bsize) }; warn($@) if $@; } die "$file: could not get extent list\n" unless defined $exts; print "f $n $filesize $bsize$exts\n"; close($fd); } print "\n"x$opt_padend if $opt_padend; obs-build-20210120/configs/000077500000000000000000000000001400202264700152505ustar00rootroot00000000000000obs-build-20210120/configs/arch.conf000066400000000000000000000012601400202264700170330ustar00rootroot00000000000000Repotype: arch ExpandFlags: preinstallexpand VMinstall: util-linux Preinstall: pacman pacman-mirrorlist sed grep Required: binutils gcc glibc libtool Support: acl autoconf automake zlib bzip2 filesystem curl Support: libtool ncurses perl gpgme libarchive openssl libssh2 Support: libassuan libgpg-error attr expat xz pacman pacman-mirrorlist Support: fakeroot file sudo patch make net-tools pkgconf inetutils Support: bison flex gettext which Prefer: zlib ttf-dejavu Prefer: libgl jdk7-openjdk libdrm Prefer: -nvidia-libgl -nvidia-304xx-utils -nvidia-304xx-utils -nvidia-utils Prefer: mesa-libgl Prefer: curl:ca-certificates Prefer: glib-networking:ca-certificates Prefer: iptables obs-build-20210120/configs/collax.conf000066400000000000000000000004761400202264700174100ustar00rootroot00000000000000Type: collax Repotype: debian Preinstall: acl akutils attr base-files bash bzip2 coreutils diffutils file Preinstall: findutils gawk grep gzip heirloom less lbzip2 libc6 libcap libdb Preinstall: libgcc1 libgdbmg1 libpam0 libstdc++-v3 m4 ncurses5 patch perl5.8 Preinstall: pigz sed shadow tar texinfo unzip vim zlib1g obs-build-20210120/configs/debian-jessie.conf000066400000000000000000000025061400202264700206240ustar00rootroot00000000000000Repotype: debian type: dsc buildengine: debootstrap Order: base-passwd:base-files Order: init-system-helpers:util-linux Preinstall: dash bash sed grep coreutils debianutils Preinstall: libc6 libncurses5 libacl1 libattr1 libpcre3 Preinstall: diffutils tar dpkg libc-bin Preinstall: gzip base-files base-passwd Preinstall: libselinux1 libsepol1 Preinstall: libgcc1 util-linux debconf tzdata findutils libdbus-1-3 Preinstall: liblzma5 xz-utils libstdc++6 passwd Preinstall: login zlib1g libbz2-1.0 libtinfo5 libsigsegv2 Preinstall: dash insserv libmpfr4 libgmp10 libdebconfclient0 Preinstall: perl-base perl mawk init-system-helpers Required: build-essential apt mount fakeroot dpkg-dev ncurses-base hostname Required: libtool # Work around packge looking up variations of localhost .e.g glibc tries to look up localhost. Support: libnss-myhostname Prefer: cvs libesd0 libfam0 libfam-dev expect Prefer: mawk locales default-jdk Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend Prefer: sysv-rc make Prefer: libjack-jackd2-dev libsndio-dev Prefer: pkg-config Prefer: texlive-htmlxml Prefer: libjpeg-dev obs-build-20210120/configs/debian-unstable.conf000066400000000000000000000026641400202264700211640ustar00rootroot00000000000000Repotype: debian type: dsc buildengine: debootstrap Order: base-passwd:base-files Preinstall: dash bash sed grep coreutils debianutils Preinstall: libc6 libncurses5 libacl1 libattr1 libpcre3 Preinstall: diffutils tar dpkg libc-bin Preinstall: gzip base-files base-passwd Preinstall: libselinux1 libsepol1 Preinstall: libgcc1 util-linux debconf tzdata findutils libdbus-1-3 Preinstall: liblzma5 xz-utils libstdc++6 passwd Preinstall: login zlib1g libbz2-1.0 libtinfo5 libsigsegv2 Preinstall: dash insserv libmpfr4 libgmp10 libdebconfclient0 Preinstall: perl-base perl libperl-dev mawk init-system-helpers Required: build-essential apt mount fakeroot dpkg-dev ncurses-base hostname Required: libtool # Work around packge looking up variations of localhost .e.g glibc tries to look up localhost. Support: libnss-myhostname Prefer: mawk Prefer: cvs libesd0 libfam0 libfam-dev expect Prefer: locales default-jdk Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend Prefer: sysv-rc make Prefer: libjack-jackd2-dev libsndio-dev Prefer: pkg-config Prefer: texlive-htmlxml Prefer: golang-github-miekg-dns-dev Prefer: golang-gopkg-yaml.v2-dev Prefer: golang-github-spf13-cobra-dev Prefer: golang-github-burntsushi-toml-dev obs-build-20210120/configs/debian.conf000066400000000000000000000166101400202264700173450ustar00rootroot00000000000000Repotype: debian Preinstall: bash perl-base sed grep coreutils debianutils Preinstall: libc6 libncurses5 libacl1 libattr1 Preinstall: libreadline4 tar gawk dpkg Preinstall: sysv-rc gzip base-files Runscripts: base-files initscripts VMinstall: util-linux binutils libblkid1 libuuid1 libdevmapper1.02 mount Required: autoconf automake binutils bzip2 gcc gettext libc6 Required: libtool libncurses5 perl zlib1g dpkg Support: build-essential fakeroot Support: bison cpio cracklib2 cvs login Support: file findutils flex diff Support: groff-base gzip info less Support: make man module-init-tools Support: net-tools util-linux Support: patch procps psmisc rcs strace Support: texinfo unzip vim ncurses-base sysvinit Keep: binutils cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gzip libada libstdc++ libunwind Keep: libunwind-devel libzio make mktemp pam-devel pam-modules Keep: patch perl rcs timezone Keep: linux-libc-dev Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: sysvinit:initscripts Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Substitute: utempter %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite Substitute: glibc-devel-32bit %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-debug kernel-um kernel-xen kernel-kdump %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 kernel-kdump %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %enidf %ifarch s390x Substitute: kernel-binary-packages kernel-default %enidf obs-build-20210120/configs/sl10.0.conf000066400000000000000000000202421400202264700170340ustar00rootroot00000000000000Repotype: rpm-md suse Preinstall: aaa_base acl attr bash bzip2 coreutils db devs diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libnscd libselinux libxcrypt m4 ncurses pam Preinstall: permissions popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 db gcc gdbm gettext glibc Required: libtool ncurses perl rpm zlib Support: bind-libs bind-utils bison cpio cpp cracklib cvs cyrus-sasl Support: e2fsprogs file findutils flex gawk gdbm-devel gettext-devel Support: glibc-devel glibc-locale gpm groff gzip info klogd less Support: libcom_err libstdc++ libzio make man mktemp module-init-tools Support: ncurses-devel net-tools netcfg openldap2-client openssl Support: pam-modules patch procinfo procps psmisc rcs strace sysvinit Support: tcpd texinfo timezone unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libstdc++ libunwind Keep: libunwind-devel libzio make mktemp pam-devel pam-modules Keep: patch perl rcs timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel jpackage-utils update-alternatives %else %ifarch ppc Substitute: java2-devel-packages IBMJava2-JRE IBMJava2-SDK jpackage-utils update-alternatives %endif %ifarch s390 ia64 Substitute: java2-devel-packages java-1_4_2-ibm-devel jpackage-utils update-alternatives %endif %ifarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit jpackage-utils update-alternatives %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um 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-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 1000 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl10.1.conf000066400000000000000000000200001400202264700170250ustar00rootroot00000000000000Preinstall: aaa_base acl attr bash bzip2 coreutils db diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libnscd libxcrypt m4 ncurses pam Preinstall: permissions popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 db gcc gdbm gettext glibc Required: libtool ncurses perl rpm zlib Support: bind-libs bind-utils bison cpio cpp cracklib cvs cyrus-sasl Support: e2fsprogs file findutils flex gawk gdbm-devel gettext-devel Support: glibc-devel glibc-locale gpm groff gzip info klogd less Support: libcom_err libstdc++ libzio make man mktemp module-init-tools Support: ncurses-devel net-tools netcfg openldap2-client openssl Support: pam-modules patch procinfo procps psmisc rcs strace sysvinit Support: tcpd texinfo timezone unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libstdc++ libunwind Keep: libunwind-devel libzio make mktemp pam-devel pam-modules Keep: patch perl rcs timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel update-alternatives %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel update-alternatives %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit update-alternatives %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um kernel-xen kernel-kdump %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 kernel-kdump %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 1010 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl10.2.conf000066400000000000000000000205561400202264700170460ustar00rootroot00000000000000Preinstall: aaa_base acl attr bash bzip2 coreutils db diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc41 libnscd libxcrypt m4 ncurses pam Preinstall: permissions popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl libvolume_id Required: autoconf automake binutils bzip2 db gcc gcc41 Required: gdbm gettext glibc libtool ncurses perl rpm zlib Support: audit-libs bind-libs Support: bind-utils bison cpio cpp cpp41 cracklib cvs cyrus-sasl Support: e2fsprogs file findutils flex gawk gdbm-devel gettext-devel Support: glibc-devel glibc-locale gpm groff gzip info klogd less Support: libcom_err libltdl libmudflap41 libstdc++41 libzio Support: linux-kernel-headers make man mktemp module-init-tools Support: ncurses-devel net-tools netcfg openldap2-client openssl Support: pam-modules patch procinfo procps psmisc rcs strace sysvinit Support: tcpd texinfo timezone unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libstdc++ libunwind Keep: libunwind-devel libzio make mktemp pam-devel pam-modules Keep: patch perl rcs timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun java-1_4_2-sun-jdbc gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder-lib Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit libcdio-mini faac-min Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office -java-1_5_0-ibm -java-1_5_0-ibm-jdbc Prefer: -java-1_4_2-gcj-compat -NX Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel,libgcj41,libstdc++41-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 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,pcre,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: tpb:tpctl-kmp Ignore: tpctl:tpctl-kmp Ignore: mkinitrd:pciutils Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-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: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel update-alternatives %else %ifnarch s390 ppc Substitute: java2-devel-packages java-1_4_2-ibm-devel update-alternatives %endif %ifarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit update-alternatives %endif %ifarch ia64 Substitute: java2-devel-packages java-1_5_0-bea-devel update-alternatives %endif %endif %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um kernel-xen kernel-kdump %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 kernel-kdump %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq kernel-source kernel-syms %suse_version 1020 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl10.3.conf000066400000000000000000000311711400202264700170420ustar00rootroot00000000000000%define gcc_version 42 Preinstall: aaa_base acl attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 ncurses pam Preinstall: permissions popt libreadline5 rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl-base libdb-4_5 libvolume_id Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Required: gettext glibc libtool ncurses perl rpm zlib Support: audit-libs cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-devel Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_5 Support: libltdl-3 libmudflap%{gcc_version} libstdc++%{gcc_version} Support: libvolume_id libxcrypt libzio Support: linux-kernel-headers make man mktemp netcfg Support: net-tools pam-modules patch perl-base sysvinit Support: texinfo timezone util-linux %ifarch ia64 Support: libunwind libunwind-devel %endif Keep: audit-libs binutils bzip2 cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada Keep: libunwind libunwind-devel libzio make mktemp pam-devel pam-modules Keep: patch perl-base perl rcs timezone Keep: cpp%{gcc_version} gcc%{gcc_version} gcc%{gcc_version}-ada libstdc++%{gcc_version} Keep: cpp41 gcc41 gcc41-ada libstdc++41 Prefer: libreadline5 Prefer: libdb_java-4_5 libltdl-3 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: java-1_5_0-sun java-1_5_0-sun-jdbc java-1_5_0-sun-devel java-1_5_0-bea-devel Prefer: gnome-panel desktop-data-SuSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} libmudflap%{gcc_version} Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: saxon:java-1_4_2-cacao gjdoc:antlr Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm-devel Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf gnu-javamail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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-common-es -bundle-lang-common-de -bundle-lang-common-fr Prefer: -bundle-lang-common-pt -bundle-lang-common-en 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: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links %if ! 0%{?opensuse_bs} Prefer: -crossover-office -java-1_5_0-ibm -java-1_5_0-ibm-jdbc Prefer: -java-1_4_2-gcj-compat -java-1_4_2-gcj-compat-devel %endif Prefer: -java-1_4_2-cacao -java-1_4_2-cacao-devel -java-1_4_2-ibm -java-1_4_2-ibm-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: -libgcc41 -libgcc41-32bit -libgcc41-64bit Prefer: -libffi41 Prefer: -libgcc43 -libgcc43-32bit -libgcc43-64bit Prefer: -libffi43 -libgomp43 Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini Prefer: -libcdio-mini -faac-mini Conflict: ghostscript-library:ghostscript-mini Ignore: cracklib:cracklib-dict Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release,udev Ignore: gettext-devel:libgcj,libstdc++-devel,libgcj41,libstdc++41-devel,libgcj42,libstdc++42-devel Ignore: libgcj43,libstdc++43-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 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,pcre,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: libgcc:glibc-32bit Ignore: libgcc41:glibc-32bit Ignore: libgcc42:glibc-32bit Ignore: libgcc43:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: libstdc41++:glibc-32bit Ignore: libstdc42++:glibc-32bit Ignore: libstdc43++:glibc-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: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary Ignore: OpenOffice_org:OpenOffice_org-i18n 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle Ignore: glib2:glib2-lang Ignore: gtk2:gtk2-lang Ignore: gtk:gtk-lang Ignore: atk:atk-lang Ignore: hal:pm-utils Ignore: MozillaThunderbird:pinentry-dialog Ignore: seamonkey:pinentry-dialog Ignore: icecream:gcc-c++ Ignore: no Ignore: package Ignore: provides %if 0%{?opensuse_bs} Substitute: java2-devel-packages gcc-java java-1_4_2-gcj-compat-devel %else %ifnarch s390 s390x ppc ppc64 ia64 Substitute: java2-devel-packages java-1_5_0-sun-devel unzip update-alternatives %else %ifarch s390 s390x ppc ppc64 Substitute: java2-devel-packages java-1_5_0-ibm-devel unzip update-alternatives %endif %ifarch ia64 Substitute: java2-devel-packages java-1_5_0-bea-devel unzip update-alternatives %endif %endif %endif %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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 kernel-xenpae %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-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif %ifarch ppc64 Substitute: mono-devel mono-devel mono-biarchcompat Substitute: mono-basic mono-basic mono-biarchcompat Substitute: mono-tools mono-tools mono-biarchcompat %endif Optflags: i586 -march=i586 -mtune=i686 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: i686 -march=i686 -mtune=i686 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: x86_64 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: ppc -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: ppc64 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: * -O2 %define suse_version 1030 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq kernel-source kernel-syms %suse_version 1030 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl11.0.conf000066400000000000000000000355411400202264700170450ustar00rootroot00000000000000%define gcc_version 43 Preinstall: aaa_base acl attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 libncurses5 pam Preinstall: permissions popt libreadline5 rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl-base libdb-4_5 libvolume_id Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Required: gettext-runtime glibc libtool perl rpm zlib libmpfr1 gmp Required: libncurses5 Support: audit-libs cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-tools Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_5 Support: libltdl-3 libmudflap%{gcc_version} libstdc++%{gcc_version} Support: libvolume_id libxcrypt libzio Support: linux-kernel-headers make man netcfg Support: net-tools pam-modules patch perl-base sysvinit Support: texinfo timezone util-linux login Support: terminfo-base libgomp43 libuuid1 psmisc %ifarch ia64 Support: libunwind libunwind-devel %endif Keep: audit-libs binutils bzip2 cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone gmp libmpfr1 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_6_0-openjdk java-1_6_0-openjdk-devel Prefer: libreadline5 Prefer: libdb_java-4_5 libltdl-3 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: java-1_5_0-sun java-1_5_0-sun-jdbc java-1_5_0-sun-devel java-1_5_0-bea java-1_5_0-bea-devel Prefer: java-1_7_0-icedtea %ifarch ppc ppc64 Prefer: java-1_5_0-ibm %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm %endif Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit Prefer: libstroke Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: saxon:java-1_4_2-cacao gjdoc:antlr Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm-devel Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf gnu-javamail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: xfce4-desktop:xfce4-desktop-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: OpenOffice_org:OpenOffice_org-branding-upstream Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: glib2:glib2-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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-common-es -bundle-lang-common-de -bundle-lang-common-fr Prefer: -bundle-lang-common-pt -bundle-lang-common-en 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: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links %if ! 0%{?opensuse_bs} Prefer: -crossover-office %ifnarch s390 s390x Prefer: -java-1_6_0-ibm %endif %ifnarch ppc Prefer: -java-1_5_0-ibm -java-1_5_0-ibm-jdbc %endif Prefer: -java-1_4_2-gcj-compat -java-1_4_2-gcj-compat-devel %endif Prefer: -java-1_4_2-cacao -java-1_4_2-cacao-devel -java-1_4_2-ibm -java-1_4_2-ibm-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libgcj_bc%{gcc_version} Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini Prefer: -libcdio-mini -faac-mini Prefer: -seamonkey Prefer: -libdb-4_4-devel Conflict: ghostscript-library:ghostscript-mini Conflict: ghostscript-fonts-std:ghostscript-mini Ignore: cracklib:cracklib-dict Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release,udev Ignore: gettext-tools:libgcj,libstdc++-devel,libgcj41,libstdc++41-devel,libgcj42,libstdc++42-devel Ignore: libgcj43,libstdc++43-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 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,pcre,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: libgcc:glibc-32bit Ignore: libgcc41:glibc-32bit Ignore: libgcc42:glibc-32bit Ignore: libgcc43:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: libstdc41++:glibc-32bit Ignore: libstdc42++:glibc-32bit Ignore: libstdc43++: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: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary Ignore: OpenOffice_org:OpenOffice_org-i18n 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils Ignore: MozillaThunderbird:pinentry-dialog Ignore: seamonkey:pinentry-dialog Ignore: gpg2:gpg2-lang Ignore: util-linux:util-linux-lang 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: yast2-casa-ats:CASA_auth_token_svc %if 0%{?opensuse_bs} Substitute: java2-devel-packages gcc-java java-1_4_2-gcj-compat-devel %else %ifnarch s390 s390x ppc ppc64 ia64 Substitute: java2-devel-packages java-1_5_0-sun-devel unzip update-alternatives %else %ifarch s390 s390x ppc ppc64 Substitute: java2-devel-packages java-1_5_0-ibm-devel unzip update-alternatives %endif %ifarch ia64 Substitute: java2-devel-packages java-1_5_0-bea-devel unzip update-alternatives %endif %endif %endif %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif %ifarch ppc64 Substitute: mono-devel mono-devel mono-biarchcompat Substitute: mono-basic mono-basic mono-biarchcompat Substitute: mono-tools mono-tools mono-biarchcompat %endif Optflags: i586 -march=i586 -mtune=i686 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: i686 -march=i686 -mtune=i686 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: x86_64 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: ppc -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: ppc64 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector Optflags: * -O2 %define suse_version 1100 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq kernel-source kernel-syms %kernel_module_package_buildreqs kernel-source kernel-syms %suse_version 1100 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl11.1.conf000066400000000000000000000373021400202264700170430ustar00rootroot00000000000000%define gcc_version 43 Preinstall: aaa_base acl attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 libncurses5 pam Preinstall: permissions popt libreadline5 rpm sed tar zlib libselinux1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux perl-base libdb-4_5 libvolume_id1 libsepol1 Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Required: gettext-runtime glibc libtool perl rpm zlib libmpfr1 gmp Required: libncurses5 Support: audit-libs cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-tools Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_5 Support: libstdc++%{gcc_version} Support: libvolume_id1 libxcrypt libzio Support: linux-kernel-headers make man netcfg Support: net-tools pam-modules patch perl-base sysvinit Support: texinfo timezone util-linux login Support: libgomp43 libuuid1 psmisc Support: terminfo-base Support: build brp-check-suse post-build-checks rpmlint-Factory Keep: brp-check-suse %ifarch ia64 Support: libunwind libunwind-devel %endif Keep: audit-libs binutils bzip2 cpio cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone gmp libmpfr1 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_6_0-openjdk java-1_6_0-openjdk-devel Keep: libvolume_id libvolume_id1 Prefer: -openSUSE-build-key Prefer: libreadline5 Prefer: libdb_java-4_5 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit Prefer: libstroke Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: xfce4-desktop:xfce4-desktop-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: OpenOffice_org:OpenOffice_org-branding-upstream Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner190-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: ant:xerces-j2 Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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-common-es -bundle-lang-common-de -bundle-lang-common-fr Prefer: -bundle-lang-common-pt -bundle-lang-common-en 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: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libgcj_bc%{gcc_version} Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini Prefer: -libcdio-mini -faac-mini Prefer: -seamonkey Prefer: -libdb-4_4-devel -libevoldap-2_4-2 Conflict: ghostscript-library:ghostscript-mini Conflict: ghostscript-fonts-std:ghostscript-mini Prefer: -libopenal0-soft -openal-soft -lsb-buildenv Prefer: gnu-crypto libusb-compat-devel Prefer: libusb-0_1-4 Prefer: CASA_auth_token_svc:xerces-j2 Prefer: OpenOffice_org:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Ignore: openSUSE-release:openSUSE-release-ftp,openSUSE-release-dvd5,openSUSE-release-dvd9,openSUSE-release-livecdkde,openSUSE-release-livecdgnome Ignore: cracklib:cracklib-dict Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release,udev Ignore: gettext-tools:libgcj,libstdc++-devel,libgcj41,libstdc++41-devel,libgcj42,libstdc++42-devel Ignore: libgcj43,libstdc++43-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 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,pcre,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: libgcc:glibc-32bit Ignore: libgcc41:glibc-32bit Ignore: libgcc42:glibc-32bit Ignore: libgcc43:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: libstdc41++:glibc-32bit Ignore: libstdc42++:glibc-32bit Ignore: libstdc43++: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: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary Ignore: OpenOffice_org:OpenOffice_org-i18n 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: phonon:phonon-backend Ignore: openwbem-devel Ignore: MozillaFirefox:MozillaFirefox-branding Ignore: yast2:yast2-branding Ignore: yast2-theme-SLE:yast2-branding Ignore: yast2-registration:yast2-registration-branding %ifarch s390 s390x Ignore: yast2-all-packages:yast2-x11 %endif %ifnarch ia64 s390 s390x ppc ppc64 Prefer: java-1_6_0-openjdk java-1_6_0-openjdk-devel %endif %ifarch s390 s390x ppc ppc64 Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %ifnarch ia64 s390 s390x ppc ppc64 Substitute: java2-devel-packages java-1_6_0-openjdk-devel %else %ifarch s390 s390x ppc ppc64 Substitute: java2-devel-packages java-1_6_0-ibm-devel unzip update-alternatives %endif %ifarch ia64 Substitute: java2-devel-packages java-1_6_0-bea-devel unzip update-alternatives %endif %endif %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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 %ifarch ppc64 Substitute: mono-devel mono-devel mono-biarchcompat Substitute: mono-basic mono-basic mono-biarchcompat Substitute: mono-tools mono-tools mono-biarchcompat Substitute: mono-data-sqlite mono-data-sqlite libsqlite3-0-32bit %endif Optflags: i586 -march=i586 -mtune=i686 -fmessage-length=0 Optflags: i686 -march=i686 -mtune=i686 -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1110 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %suse_version 1110 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl11.2.conf000066400000000000000000000443631400202264700170510ustar00rootroot00000000000000%define gcc_version 44 Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux Substitute: kiwi-filesystem:ext3 e2fsprogs procps psmisc reiserfs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-boot:isoboot kiwi-desc-isoboot module-init-tools elfutils squashfs aufs aufs-kmp-default Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-xenboot ncurses-utils curl dhcpcd iputils nbd net-tools netcfg nfs-client parted grub mdadm Substitute: kiwi-boot:oemboot kiwi-desc-oemboot Substitute: kiwi-boot:usbboot kiwi-desc-usbboot Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot Substitute: kiwi-boot:xenboot kiwi-desc-xenboot Substitute: build:debug vim strace gdb Preinstall: aaa_base acl attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar zlib libselinux1 Preinstall: liblzma0 libcap2 libpcre0 Preinstall: libpopt0 libelf1 liblua5_1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux perl-base libdb-4_5 libsepol1 libblkid1 libuuid1 Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Required: gettext-runtime glibc libtool perl rpm zlib libmpfr1 Required: libncurses5 libgmp3 libgmpxx4 Support: audit-libs cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-tools Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_5 Support: libstdc++%{gcc_version} Support: libxcrypt libzio Support: linux-kernel-headers make man netcfg Support: net-tools pam-modules patch perl-base sysvinit Support: texinfo timezone util-linux login Support: libgomp%{gcc_version} libuuid1 psmisc Support: terminfo-base # build tools packages Support: build brp-check-suse post-build-checks Support: rpmlint-Factory Keep: brp-check-suse # remove build-compare support to disable "same result" package dropping Support: build-compare %ifarch ia64 Support: libunwind libunwind-devel %endif Keep: audit-libs binutils bzip2 cpio cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libpcre0 Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone libmpfr1 libcap2 Keep: gmp libgmp3 libgmpxx4 Keep: cpp44 gcc44 gcc44-ada libstdc++44 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_6_0-openjdk java-1_6_0-openjdk-devel libcloog0 libppl7 libppl_c2 Keep: libpopt0 Prefer: -suse-build-key Prefer: krb5 krb5-devel Prefer: krb5-mini-devel:krb5-mini Prefer: libreadline5 Prefer: libdb_java-4_5 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default preload-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit Prefer: libstroke Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: OpenOffice_org:OpenOffice_org-branding-upstream Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: beagle-index:preload-kmp-default Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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 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 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: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libgcj_bc%{gcc_version} Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} libgfortran%{gcc_version} Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini -libiso9660-7-mini -libcdio10-mini Prefer: -libcdio-mini -faac-mini Prefer: -seamonkey Prefer: -libdb-4_4-devel -libevoldap-2_4-2 Conflict: ghostscript-library:ghostscript-mini Conflict: ghostscript-fonts-std:ghostscript-mini Prefer: libopenal0-soft openal-soft -lsb-buildenv Prefer: -libevent Prefer: gnu-crypto libusb-compat-devel Prefer: libusb-0_1-4 Prefer: CASA_auth_token_svc:xerces-j2 Prefer: OpenOffice_org:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -java-1_7_0-icedtea-devel -libiniparser -loudmouth -libkonq4 -libnetcdf-4 Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 #Temporary hack to solve #442202 Ignore: yast2-all-packages:yast2-boot-server,yast2-heartbeat,yast2-issleconfig,yast2-linux-user-mgmt,yast2-trans-am,yast2-trans-be,yast2-trans-he,yast2-trans-ms,yast2-trans-my,yast2-trans-tk 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,mingetty,distribution-release,udev 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre,libpcre0 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: libgcc:glibc-32bit Ignore: libgcc41:glibc-32bit Ignore: libgcc42:glibc-32bit Ignore: libgcc43:glibc-32bit Ignore: libgcc44:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: libstdc41++:glibc-32bit Ignore: libstdc42++:glibc-32bit Ignore: libstdc43++:glibc-32bit Ignore: libstdc44++: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: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary Ignore: OpenOffice_org:OpenOffice_org-i18n Ignore: OpenOffice_org:OpenOffice_org-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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: phonon:phonon-backend Ignore: openwbem-devel Ignore: MozillaFirefox:MozillaFirefox-branding Ignore: yast2: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: pulseaudio:kernel %ifarch s390 s390x Ignore: yast2-all-packages:yast2-x11 %endif %ifnarch ia64 s390 s390x Prefer: java-1_6_0-openjdk java-1_6_0-openjdk-devel %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif Substitute: java2-devel-packages java-1_6_0-openjdk-devel %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE Optflags: i586 -fomit-frame-pointer -fmessage-length=0 Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1120 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %suse_version 1120 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl11.3.conf000066400000000000000000000474401400202264700170510ustar00rootroot00000000000000%define gcc_version 45 Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-11-3 Substitute: kiwi-filesystem:ext3 e2fsprogs procps psmisc reiserfs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-boot:isoboot kiwi-desc-isoboot module-init-tools elfutils squashfs clicfs e2fsprogs fribidi gfxboot-devel gawk gfxboot gfxboot-devel grub hdparm hwinfo iproute2 kiwi-tools lvm2 make memtest86+ netcfg psmisc Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-xenboot ncurses-utils curl dhcpcd iputils nbd net-tools netcfg nfs-client parted grub mdadm Substitute: kiwi-boot:oemboot kiwi-desc-oemboot Substitute: kiwi-boot:usbboot kiwi-desc-usbboot Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot Substitute: kiwi-boot:xenboot kiwi-desc-xenboot Substitute: build:debug vim strace gdb Preinstall: aaa_base acl attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar zlib libselinux1 Preinstall: liblzma0 libcap2 libpcre0 Preinstall: libpopt0 libelf1 liblua5_1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux perl-base libdb-4_5 libsepol1 libblkid1 libuuid1 Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Required: gettext-runtime glibc libtool perl rpm zlib libmpfr1 Required: libncurses5 libgmp3 libgmpxx4 Support: libaudit1 Support: cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-tools Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_5 Support: libstdc++%{gcc_version} Support: libxcrypt libzio Support: make man netcfg Support: linux-glibc-devel Support: net-tools pam-modules patch perl-base sysvinit-tools Support: texinfo timezone util-linux login Support: libgomp%{gcc_version} libuuid1 psmisc Support: terminfo-base update-alternatives pwdutils build-mkbaselibs Support: brp-check-suse post-build-checks rpmlint-Factory Keep: brp-check-suse # remove build-compare support to disable "same result" package dropping Support: build-compare %ifarch ia64 Support: libunwind libunwind-devel %endif Keep: libaudit1 binutils bzip2 cpio cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libpcre0 Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone libmpfr1 libcap2 Keep: gmp libgmp3 libgmpxx4 libmpc2 Keep: cpp45 gcc45 gcc45-ada libstdc++45 Keep: cpp44 gcc44 gcc44-ada libstdc++44 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_6_0-openjdk java-1_6_0-openjdk-devel libcloog0 libppl7 libppl_c2 Keep: libpopt0 pkg-config Prefer: -suse-build-key Prefer: krb5 krb5-devel Prefer: krb5-mini-devel:krb5-mini Prefer: libreadline5 Prefer: libdb_java-4_5 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default preload-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: OpenOffice_org:OpenOffice_org-branding-upstream Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: beagle-index:preload-kmp-default Prefer: dummy-release Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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 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 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: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libffi%{gcc_version}-devel libgcj_bc%{gcc_version} Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} libgfortran%{gcc_version} Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini -libiso9660-7-mini -libcdio10-mini Prefer: -libcdio-mini -faac-mini Prefer: -seamonkey Prefer: -libdb-4_4-devel -libevoldap-2_4-2 Conflict: ghostscript-library:ghostscript-mini Conflict: ghostscript-fonts-std:ghostscript-mini Prefer: libopenal0-soft openal-soft -lsb-buildenv Prefer: -libevent Prefer: gnu-crypto libusb-compat-devel Prefer: libusb-0_1-4 Prefer: CASA_auth_token_svc:xerces-j2 Prefer: OpenOffice_org:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -java-1_7_0-icedtea-devel -libiniparser -loudmouth -libkonq4 -libnetcdf-4 Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel Prefer: linux-glibc-devel Prefer: squid sysvinit Prefer: libpng14-compat-devel Prefer: -python3 -x11-video-fglrxG02 -libpng12-0 Prefer: perl-Mail-SPF:perl-Error libldb0 -audit-libs mysql-community-server mysql-community-server-client #Temporary hack to solve #442202 Ignore: yast2-all-packages:yast2-boot-server,yast2-heartbeat,yast2-issleconfig,yast2-linux-user-mgmt,yast2-trans-am,yast2-trans-be,yast2-trans-he,yast2-trans-ms,yast2-trans-my,yast2-trans-tk 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,mingetty,distribution-release,udev 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre,libpcre0 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: libgcc:glibc-32bit Ignore: libgcc41:glibc-32bit Ignore: libgcc42:glibc-32bit Ignore: libgcc43:glibc-32bit Ignore: libgcc44:glibc-32bit Ignore: libgcc45: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: 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: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary Ignore: OpenOffice_org:OpenOffice_org-i18n Ignore: OpenOffice_org:OpenOffice_org-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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: phonon:phonon-backend Ignore: openwbem-devel Ignore: MozillaFirefox:MozillaFirefox-branding Ignore: yast2: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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp # sysconfig requires it at runtime, not buildtime Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 # no build dependencies Ignore: libksuseinstall1:yast2-packager Ignore: libksuseinstall1:zypper Ignore: libqca2:gpg2 Ignore: NetworkManager:wpa_supplicant Ignore: NetworkManager:dhcp-client %ifnarch ia64 s390 s390x Prefer: java-1_6_0-openjdk java-1_6_0-openjdk-devel %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif # We use always openjdk on openSUSE ! #%ifnarch ia64 s390 s390x Substitute: java2-devel-packages java-1_6_0-openjdk-devel #%else # %ifarch s390 s390x #Substitute: java2-devel-packages java-1_6_0-ibm-devel unzip update-alternatives # %endif # %ifarch ia64 #Substitute: java2-devel-packages java-1_6_0-bea-devel unzip update-alternatives # %endif #%endif %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE Optflags: i586 -fomit-frame-pointer -fmessage-length=0 Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1130 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %suse_version 1130 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl11.4.conf000066400000000000000000000633431400202264700170520ustar00rootroot00000000000000%define gcc_version 45 Patterntype: rpm-md ymp %if "%_repository" == "images" Type: kiwi Repotype: none Patterntype: none Prefer: openSUSE-release %endif Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-11-3 Substitute: kiwi-filesystem:ext3 e2fsprogs procps psmisc reiserfs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-boot:isoboot kiwi-desc-isoboot module-init-tools elfutils squashfs fribidi gfxboot-devel gawk gfxboot gfxboot-devel grub hdparm hwinfo iproute2 kiwi-tools lvm2 make memtest86+ netcfg psmisc squashfs sysfsutils syslinux clicfs e2fsprogs Substitute: kiwi-boot:oemboot kiwi-desc-oemboot adaptec-firmware atftp bc bind-libs bind-utils bootsplash bootsplash-branding-openSUSE busybox bzip2 clicfs cryptsetup curl dhcpcd dialog e2fsprogs eject fbiterm file fribidi gettext-runtime gfxboot gfxboot-devel grub hwinfo kernel-default kernel-default-base kernel-desktop kexec-tools kiwi-tools lvm2 make module-init-tools netcfg net-tools parted pciutils psmisc squashfs sysconfig sysfsutils tar util-linux jing Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-xenboot ncurses-utils curl dhcpcd iputils nbd net-tools netcfg nfs-client parted grub mdadm Substitute: kiwi-boot:usbboot kiwi-desc-usbboot Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot Substitute: kiwi-boot:xenboot kiwi-desc-xenboot Preinstall: aaa_base acl attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar zlib libselinux1 Preinstall: liblzma5 libcap2 libpcre0 Preinstall: libpopt0 libelf1 liblua5_1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 ExportFilter: \.x86_64\.rpm$ x86_64 ExportFilter: \.ia64\.rpm$ ia64 ExportFilter: \.s390x\.rpm$ s390x ExportFilter: \.ppc64\.rpm$ ppc64 ExportFilter: \.ppc\.rpm$ ppc ExportFilter: \.i686\.rpm$ i686 ExportFilter: -ia32-.*\.rpm$ ExportFilter: -32bit-.*\.sparc64\.rpm$ ExportFilter: -64bit-.*\.sparcv9\.rpm$ ExportFilter: ^glibc(?:-devel)?-32bit-.*\.sparc64\.rpm$ sparc64 ExportFilter: ^glibc(?:-devel)?-64bit-.*\.sparcv9\.rpm$ sparcv9 ExportFilter: ^blocxx-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^boost-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^bzip2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^curl-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^dbus-1-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^dbus-1-glib-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^e2fsprogs-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^expat-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^fontconfig-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^freetype2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^gcc45-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^gcc44-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^gcc43-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^glib2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^glibc-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^hal-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^hwinfo-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^icu-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^jpeg-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kdelibs3-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kernel-default-.*(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kernel-desktop-.*(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kernel-pae-.*(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libidn-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libpng12-0-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libqt4-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libxcrypt-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libxml2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libzypp-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^openssl-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^pcre-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^perl-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^perl-gettext-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^qt3-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^rpm-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^sysfsutils-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^wireless-tools-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libICE-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libSM-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libX11-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXau-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXdmcp-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXext-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXfixes-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXmu-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXrender-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libfontenc-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libs-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libxcb-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-server-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-core-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-hardware-detection-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-perl-bindings-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-pkg-bindings-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-qt-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-xml-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^zlib-(?:debuginfo|debugsource)-.*\.rpm$ . #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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 ExportFilter: ^wine.*\.i586.rpm$ . x86_64 #Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} #Required: gettext-runtime glibc libtool perl rpm zlib libmpfr4 #Required: libncurses5 libgmp10 libgmpxx4 libppl9 libppl_c4 Required: gcc gcc%{gcc_version} glibc perl rpm tar patch Support: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Support: gettext-runtime glibc libtool perl rpm zlib Support: libncurses5 Support: libaudit1 cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-tools Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_8 Support: libstdc++%{gcc_version} # for boot.udev Support: udev Support: libxcrypt libzio Support: linux-glibc-devel make man netcfg Support: net-tools pam-modules patch perl-base sysvinit-tools Support: texinfo timezone util-linux libmount1 login Support: libgomp%{gcc_version} libuuid1 psmisc Support: terminfo-base update-alternatives pwdutils build-mkbaselibs Support: brp-check-suse post-build-checks rpmlint-Factory Keep: brp-check-suse # remove build-compare support to disable "same result" package dropping Support: build-compare # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel %endif Keep: libaudit1 binutils bzip2 cpio cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libpcre0 Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone libmpfr4 libcap2 Keep: gmp libgmp10 libgmpxx4 libmpc2 Keep: cpp45 gcc45 gcc45-ada libstdc++45 Keep: cpp44 gcc44 gcc44-ada libstdc++44 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_6_0-openjdk java-1_6_0-openjdk-devel libcloog0 libppl9 libppl_c4 Keep: libpopt0 pkg-config libmount1 Prefer: -suse-build-key Prefer: krb5 krb5-devel Prefer: krb5-mini-devel:krb5-mini Prefer: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default preload-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: beagle-index:preload-kmp-default Prefer: dummy-release Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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 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 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libffi%{gcc_version}-devel libgcj_bc%{gcc_version} Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} libgfortran%{gcc_version} Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini -libiso9660-7-mini -libcdio10-mini -libcdio12-mini Prefer: -libcdio-mini -faac-mini Prefer: -seamonkey Prefer: -libdb-4_4-devel -libdb-4_5-devel -libevoldap-2_4-2 Conflict: ghostscript-library:ghostscript-mini Conflict: ghostscript-fonts-std:ghostscript-mini Prefer: libopenal0-soft openal-soft -lsb-buildenv Prefer: -libevent Prefer: gnu-crypto libusb-compat-devel Prefer: libusb-0_1-4 Prefer: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -java-1_7_0-icedtea-devel -libiniparser -loudmouth -libkonq4 -libnetcdf-4 Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel Prefer: linux-glibc-devel Prefer: squid sysvinit Prefer: libpng14-compat-devel Prefer: -python3 -x11-video-fglrxG02 -libpng12-0 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream 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,mingetty,distribution-release,udev 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre,libpcre0 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: libgcc:glibc-32bit Ignore: libgcc41:glibc-32bit Ignore: libgcc42:glibc-32bit Ignore: libgcc43:glibc-32bit Ignore: libgcc44:glibc-32bit Ignore: libgcc45: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: 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: avalon-logkit:servlet 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: phonon:phonon-backend Ignore: openwbem-devel Ignore: MozillaFirefox:MozillaFirefox-branding Ignore: yast2: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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp # sysconfig requires it at runtime, not buildtime Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 # no build dependencies Ignore: libksuseinstall1:yast2-packager Ignore: libksuseinstall1:zypper Ignore: libqca2:gpg2 Ignore: NetworkManager:wpa_supplicant Ignore: NetworkManager:dhcp-client %ifnarch ia64 s390 s390x Prefer: java-1_6_0-openjdk java-1_6_0-openjdk-devel %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif # We use always openjdk on openSUSE ! #%ifnarch ia64 s390 s390x Substitute: java2-devel-packages java-1_6_0-openjdk-devel #%else # %ifarch s390 s390x #Substitute: java2-devel-packages java-1_6_0-ibm-devel unzip update-alternatives # %endif # %ifarch ia64 #Substitute: java2-devel-packages java-1_6_0-bea-devel unzip update-alternatives # %endif #%endif %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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE Optflags: i586 -fomit-frame-pointer -fmessage-length=0 Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1140 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %suse_version 1140 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse %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} obs-build-20210120/configs/sl12.1.conf000066400000000000000000000660311400202264700170450ustar00rootroot00000000000000%define gcc_version 46 %define _with_aaa_base_malloc_debug 0 Patterntype: rpm-md ymp %if "%_repository" == "images" Type: kiwi Repotype: none Patterntype: none Prefer: openSUSE-release %endif CiCntStart: 1.1 Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-12-1 kiwi-instsource-plugins-openSUSE-11-3 Substitute: kiwi-filesystem:ext3 e2fsprogs procps psmisc reiserfs Substitute: kiwi-filesystem:squashfs squashfs # cdrkit-cdrtools-compat should not be necessary - bnc#680148 (coolo) Substitute: kiwi-boot:isoboot kiwi-desc-isoboot module-init-tools elfutils squashfs fribidi gfxboot-devel gawk gfxboot gfxboot-devel grub hdparm hwinfo iproute2 kiwi-tools lvm2 make memtest86+ netcfg psmisc squashfs sysfsutils syslinux clicfs e2fsprogs cdrkit-cdrtools-compat Substitute: kiwi-boot:oemboot kiwi-desc-oemboot adaptec-firmware atftp bc bind-libs bind-utils bootsplash bootsplash-branding-openSUSE busybox bzip2 clicfs cryptsetup curl dhcpcd dialog e2fsprogs eject fbiterm file fribidi gettext-runtime gfxboot gfxboot-devel grub hwinfo kernel-default kernel-default-base kernel-desktop kexec-tools kiwi-tools lvm2 make module-init-tools netcfg net-tools parted pciutils psmisc squashfs sysconfig sysfsutils tar util-linux jing kernel-firmware Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-xenboot ncurses-utils curl dhcpcd iputils nbd net-tools netcfg nfs-client parted grub mdadm Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kernel-default kexec-tools Substitute: kiwi-boot:xenboot kiwi-desc-xenboot Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar zlib libselinux1 Preinstall: liblzma5 libcap2 libpcre0 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 ExportFilter: \.x86_64\.rpm$ x86_64 ExportFilter: \.ia64\.rpm$ ia64 ExportFilter: \.s390x\.rpm$ s390x ExportFilter: \.ppc64\.rpm$ ppc64 ExportFilter: \.ppc\.rpm$ ppc ExportFilter: \.i686\.rpm$ i686 ExportFilter: -ia32-.*\.rpm$ ExportFilter: -32bit-.*\.sparc64\.rpm$ ExportFilter: -64bit-.*\.sparcv9\.rpm$ ExportFilter: ^glibc(?:-devel)?-32bit-.*\.sparc64\.rpm$ sparc64 ExportFilter: ^glibc(?:-devel)?-64bit-.*\.sparcv9\.rpm$ sparcv9 ExportFilter: ^blocxx-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^boost-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^bzip2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^curl-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^dbus-1-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^dbus-1-glib-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^e2fsprogs-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^expat-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^fontconfig-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^freetype2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^gcc46-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^gcc45-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^gcc44-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^gcc43-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^glib2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^glibc-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^hal-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^hwinfo-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^icu-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^jpeg-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kdelibs3-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kernel-default-.*(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kernel-desktop-.*(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^kernel-pae-.*(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libidn-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libpng12-0-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libqt4-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libxcrypt-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libxml2-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^libzypp-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^openssl-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^pcre-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^perl-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^perl-gettext-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^qt3-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^rpm-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^sysfsutils-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^wireless-tools-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libICE-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libSM-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libX11-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXau-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXdmcp-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXext-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXfixes-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXmu-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libXrender-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libfontenc-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libs-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-libxcb-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^xorg-x11-server-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-core-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-hardware-detection-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-perl-bindings-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-pkg-bindings-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-qt-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^yast2-xml-(?:debuginfo|debugsource)-.*\.rpm$ . ExportFilter: ^zlib-(?:debuginfo|debugsource)-.*\.rpm$ . #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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 ExportFilter: ^wine.*\.i586.rpm$ . x86_64 #Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} #Required: gettext-runtime glibc libtool perl rpm zlib libmpfr4 #Required: libncurses5 libgmp10 libgmpxx4 libppl9 libppl_c4 Required: gcc gcc%{gcc_version} glibc perl rpm tar patch Support: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Support: gettext-runtime glibc libtool perl rpm zlib Support: libncurses5 Support: libaudit1 cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-tools Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_8 Support: libstdc++%{gcc_version} # for boot.udev Support: udev Support: libxcrypt libzio Support: linux-glibc-devel make man netcfg Support: net-tools pam-modules patch perl-base sysvinit-tools Support: texinfo timezone util-linux libmount1 login Support: libgomp%{gcc_version} libuuid1 psmisc Support: terminfo-base update-alternatives pwdutils build-mkbaselibs Support: brp-check-suse post-build-checks rpmlint-Factory Keep: brp-check-suse # remove build-compare support to disable "same result" package dropping Support: build-compare # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif Keep: libaudit1 binutils bzip2 cpio cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libpcre0 Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone libmpfr4 libcap2 Keep: gmp libgmp10 libgmpxx4 libmpc2 Keep: cpp46 gcc46 gcc46-ada libstdc++46 Keep: cpp45 gcc45 gcc45-ada libstdc++45 Keep: cpp44 gcc44 gcc44-ada libstdc++44 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_6_0-openjdk java-1_6_0-openjdk-devel libcloog0 libppl9 libppl_c4 Keep: libpopt0 pkg-config libmount1 Keep: libacl1 libattr1 Prefer: -suse-build-key Prefer: krb5 krb5-devel Prefer: krb5-mini-devel:krb5-mini Prefer: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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 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 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: rubygem-rack-1_1 Prefer: wallpaper-branding-openSUSE # temporarly - already fix submitted Prefer: -kde3-kaffeine # kernel bug (coolo) Prefer: kernel-default-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libffi%{gcc_version}-devel libgcj_bc%{gcc_version} Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} libgfortran%{gcc_version} Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini -libiso9660-7-mini -libcdio10-mini -libcdio12-mini Prefer: -libcdio-mini -faac-mini Prefer: -seamonkey Prefer: -libdb-4_4-devel -libdb-4_5-devel -libevoldap-2_4-2 Conflict: ghostscript-library:ghostscript-mini Conflict: ghostscript-fonts-std:ghostscript-mini Prefer: libopenal0-soft openal-soft -lsb-buildenv Prefer: -libevent Prefer: gnu-crypto libusb-compat-devel Prefer: libusb-0_1-4 Prefer: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -java-1_7_0-icedtea-devel -libiniparser -loudmouth -libkonq4 -libnetcdf-4 Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel Prefer: linux-glibc-devel Prefer: squid sysvinit Prefer: libpng14-compat-devel Prefer: -python3 -python3-gobject-devel -python3-gobject2-devel -x11-video-fglrxG02 -libpng12-0 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel 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,mingetty,distribution-release,udev 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre,libpcre0 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: systemd:systemd-presets-branding Ignore: polkit:ConsoleKit 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: 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: 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: avalon-logkit:servlet 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: mkinitrd:sbin_init Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp # sysconfig requires it at runtime, not buildtime Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 # no build dependencies Ignore: libksuseinstall1:yast2-packager Ignore: libksuseinstall1:zypper Ignore: libqca2:gpg2 Ignore: NetworkManager:wpa_supplicant Ignore: NetworkManager:dhcp-client %ifnarch ia64 s390 s390x Prefer: java-1_6_0-openjdk java-1_6_0-openjdk-devel %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif # We use always openjdk on openSUSE ! #%ifnarch ia64 s390 s390x Substitute: java2-devel-packages java-1_6_0-openjdk-devel #%else # %ifarch s390 s390x #Substitute: java2-devel-packages java-1_6_0-ibm-devel unzip update-alternatives # %endif # %ifarch ia64 #Substitute: java2-devel-packages java-1_6_0-bea-devel unzip update-alternatives # %endif #%endif %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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE Optflags: i586 -fomit-frame-pointer -fmessage-length=0 Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1210 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %_with_aaa_base_malloc_debug 0 %suse_version 1210 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse %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} obs-build-20210120/configs/sl12.2.conf000066400000000000000000000605331400202264700170470ustar00rootroot00000000000000 %define gcc_version 47 %define _with_aaa_base_malloc_debug 1 Patterntype: rpm-md ymp %if "%_repository" == "images" Type: kiwi Repotype: none Patterntype: none Prefer: openSUSE-release %endif Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-12-1 Substitute: kiwi-filesystem:ext3 e2fsprogs Substitute: kiwi-filesystem:ext4 e2fsprogs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-filesystem:btrfs btrfsprogs Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:isoboot kiwi-desc-isoboot kiwi-desc-isoboot-requires Substitute: kiwi-boot:oemboot kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:tbz kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-netboot-requires Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kiwi-desc-vmxboot-requires Substitute: kiwi-boot:xenboot kiwi-desc-xenboot kiwi-desc-xenboot-requires Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv Preinstall: libbz2-1 libgcc%{gcc_version} m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar zlib libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 ExportFilter: \.x86_64\.rpm$ x86_64 ExportFilter: \.ia64\.rpm$ ia64 ExportFilter: \.s390x\.rpm$ s390x ExportFilter: \.ppc64\.rpm$ ppc64 ExportFilter: \.ppc\.rpm$ ppc ExportFilter: -ia32-.*\.rpm$ ExportFilter: -32bit-.*\.sparc64\.rpm$ ExportFilter: -64bit-.*\.sparcv9\.rpm$ ExportFilter: ^glibc(?:-devel)?-32bit-.*\.sparc64\.rpm$ sparc64 ExportFilter: ^glibc(?:-devel)?-64bit-.*\.sparcv9\.rpm$ sparcv9 # it would be a great idea to have, but sometimes installation-images wants to build debuginfos in #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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: gcc gcc%{gcc_version} glibc rpm tar patch Support: perl rpm-build Support: cpio Support: file findutils gawk Support: glibc-locale groff info less Support: libbz2-devel # for boot.udev Support: udev Support: man netcfg Support: net-tools pam-modules sysvinit-tools Support: texinfo timezone util-linux login psmisc Support: terminfo-base update-alternatives pwdutils build-mkbaselibs Support: brp-check-suse post-build-checks rpmlint-Factory Keep: brp-check-suse # remove build-compare support to disable "same result" package dropping Support: build-compare # Extracting appdata.xml from desktop files Support: brp-extract-appdata # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif Keep: libaudit1 binutils bzip2 cpio cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libpcre1 Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone libmpfr4 libcap2 Keep: gmp libgmp10 libgmpxx4 libmpc2 Keep: cpp47 gcc47 gcc47-ada libstdc++47 Keep: cpp46 gcc46 gcc46-ada libstdc++46 Keep: cpp45 gcc45 gcc45-ada libstdc++45 Keep: cpp44 gcc44 gcc44-ada libstdc++44 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_7_0-openjdk java-1_7_0-openjdk-devel libcloog0 libppl9 libppl_c4 Keep: libpopt0 pkg-config libmount1 Keep: libacl1 libattr1 rpm-build Prefer: -suse-build-key Prefer: krb5 krb5-devel Prefer: krb5-mini-devel:krb5-mini Prefer: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: plymouth:plymouth-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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 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 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 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 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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 Prefer: geronimo-servlet-2_4-api # just temporary Prefer: -rubygems # temporarly - already fix submitted Prefer: -kde3-kaffeine # kernel bug (coolo) Prefer: kernel-default-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libffi%{gcc_version}-devel libgcj_bc%{gcc_version} Prefer: libffi%{gcc_version}-32bit libffi%{gcc_version}-64bit Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} libgfortran%{gcc_version} libquadmath%{gcc_version} 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -java-1_7_0-icedtea-devel -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel Prefer: linux-glibc-devel Prefer: squid sysvinit Prefer: libpng14-compat-devel Prefer: -python3 -python3-gobject-devel -python3-gobject2-devel -x11-video-fglrxG02 -libpng12-0 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: systemd:systemd-presets-branding Ignore: polkit:ConsoleKit 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: avalon-logkit:servlet 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: mkinitrd:sbin_init Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp # sysconfig requires it at runtime, not buildtime Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 Ignore: sysconfig:tunctl # no build dependencies Ignore: libksuseinstall1:yast2-packager Ignore: libksuseinstall1:zypper Ignore: libqca2:gpg2 Ignore: NetworkManager:wpa_supplicant Ignore: NetworkManager:dhcp-client Ignore: autoyast2:yast2-schema # to be removed after 12.2 release Substitute: xorg-x11 xorg-x11 appres bdftopcf beforelight bitmap editres fonttosfnt fslsfonts fstobdf iceauth ico lbxproxy listres luit mkcomposecache oclock proxymngr rendercheck rstart showfont smproxy viewres x11perf xbacklight xbiff xcalc xclipboard xclock xcmsdb xcompmgr xcursor-themes xcursorgen xdbedizzy xditview xdpyinfo xedit xev xeyes xf86dga xfd xfindproxy xfontsel xfs xfsinfo xfwp xgamma xgc xhost xinput xkbcomp xkbevd xkbprint xkbutils xkill xload xlogo xlsatoms xlsclients xlsfonts xmag xman xmessage xmore xorg-scripts xplsprinters xpr xprehashprinterlist xprop xrandr xrefresh xrestop xrx xscope xset xsetmode xsetpointer xsm xstdcmap xtrap xvidtune xvinfo xwd xwininfo xwud %ifnarch ia64 s390 s390x Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif # We use always openjdk on openSUSE ! #%ifnarch ia64 s390 s390x Substitute: java2-devel-packages java-1_7_0-openjdk-devel #%else # %ifarch s390 s390x #Substitute: java2-devel-packages java-1_6_0-ibm-devel unzip update-alternatives # %endif # %ifarch ia64 #Substitute: java2-devel-packages java-1_6_0-bea-devel unzip update-alternatives # %endif #%endif %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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE Optflags: i586 -fomit-frame-pointer -fmessage-length=0 Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 # need mcpu=ultrasparc to complete sparcv8plus to sparcv9 (adds, for example, atomic ops) Optflags: sparcv9 -fmessage-length=0 -mcpu=ultrasparc Optflags: sparc64 -fmessage-length=0 -mcpu=ultrasparc %ifarch sparcv9 Target: sparcv9 %endif Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1220 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %_with_aaa_base_malloc_debug 1 %suse_version 1220 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse %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} obs-build-20210120/configs/sl12.3.conf000066400000000000000000000603711400202264700170500ustar00rootroot00000000000000 %define gcc_version 47 %define _with_aaa_base_malloc_debug 1 Patterntype: rpm-md ymp Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-12-1 Substitute: kiwi-filesystem:ext3 e2fsprogs Substitute: kiwi-filesystem:ext4 e2fsprogs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-filesystem:btrfs btrfsprogs Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:isoboot kiwi-desc-isoboot kiwi-desc-isoboot-requires Substitute: kiwi-boot:oemboot kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:tbz kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-netboot-requires Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kiwi-desc-vmxboot-requires Substitute: kiwi-boot:xenboot kiwi-desc-xenboot kiwi-desc-xenboot-requires Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini FileProvides: /usr/sbin/groupadd shadow Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar libz1 libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 net-tools ExportFilter: \.x86_64\.rpm$ x86_64 ExportFilter: \.ia64\.rpm$ ia64 ExportFilter: \.s390x\.rpm$ s390x ExportFilter: \.ppc64\.rpm$ ppc64 ExportFilter: \.ppc\.rpm$ ppc ExportFilter: -ia32-.*\.rpm$ ExportFilter: -32bit-.*\.sparc64\.rpm$ ExportFilter: -64bit-.*\.sparcv9\.rpm$ ExportFilter: \.armv7l\.rpm$ armv7l ExportFilter: \.armv7hl\.rpm$ armv7l ExportFilter: ^glibc(?:-devel)?-32bit-.*\.sparc64\.rpm$ sparc64 ExportFilter: ^glibc(?:-devel)?-64bit-.*\.sparcv9\.rpm$ sparcv9 # it would be a great idea to have, but sometimes installation-images wants to build debuginfos in #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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 # needed for su's default config - perhaps we should use a simplified form? Support: pam-modules # the basic stuff Support: perl build-mkbaselibs 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 # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif Prefer: -suse-build-key Prefer: krb5 krb5-devel Prefer: krb5-mini-devel:krb5-mini Prefer: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 Prefer: libstdc++6-32bit libstdc++6-64bit %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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 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 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 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 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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 Prefer: -rubygem-method_source-0_7 -rubygem-rails-2_3 -rubygem-activerecord-2_3 Prefer: geronimo-servlet-2_4-api Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 Prefer: systemd-mini systemd-mini-devel Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini Prefer: libudev1:udev 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 Prefer: postgresql postgresql-server # kernel bug (coolo) Prefer: kernel-default-devel Prefer: -libffi43 Prefer: wxWidgets-2_9-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: libgcc_s1-x86 libffi4 libffi4-devel libgcj_bc%{gcc_version} Prefer: libffi4-32bit libffi4-64bit Prefer: libgomp1 libgomp1-32bit libgomp1-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} libgfortran3 libquadmath%{gcc_version} 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc %ifnarch %arm Prefer: -java-1_7_0-icedtea-devel %endif Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel Prefer: linux-glibc-devel Prefer: squid sysvinit Prefer: libpng15-compat-devel Prefer: -python3 -python3-gobject-devel -python3-gobject2-devel -x11-video-fglrxG02 -libpng12-0 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX # prefer module-init-tools Prefer: -kmod-compat 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: libxfce4ui-1-0:exo-tools Ignore: scrollkeeper:docbook_4 Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop 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-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: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit:systemd Ignore: openssh:systemd Ignore: cronie:systemd Ignore: systemd:kbd Ignore: systemd:systemd-presets-branding Ignore: systemd:dbus-1 Ignore: systemd:pam-config Ignore: systemd:udev Ignore: systemd-mini:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: avalon-logkit:servlet 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: mkinitrd:sbin_init Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp # sysconfig requires it at runtime, not buildtime Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 Ignore: sysconfig:tunctl # 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: autoyast2:yast2-schema Ignore: libgio-2_0-0:dbus-1-x11 %ifarch %arm Prefer: java-1_7_0-icedtea java-1_7_0-icedtea-devel %else %ifnarch ia64 s390 s390x Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif %ifarch %arm Substitute: java2-devel-packages java-1_7_0-icedtea-devel %else Substitute: java2-devel-packages java-1_7_0-openjdk-devel %endif %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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE Optflags: i586 -fomit-frame-pointer -fmessage-length=0 Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 Optflags: armv5el -fmessage-length=0 Optflags: armv5tel -fmessage-length=0 Optflags: armv7l -fmessage-length=0 Optflags: armv7hl -fmessage-length=0 # need mcpu=ultrasparc to complete sparcv8plus to sparcv9 (adds, for example, atomic ops) Optflags: sparcv9 -fmessage-length=0 -mcpu=ultrasparc Optflags: sparc64 -fmessage-length=0 -mcpu=ultrasparc %ifarch sparcv9 Target: sparcv9 %endif Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1230 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %_with_aaa_base_malloc_debug 1 %suse_version 1230 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse %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} obs-build-20210120/configs/sl13.1.conf000066400000000000000000000645021400202264700170470ustar00rootroot00000000000000%define gcc_version 48 Patterntype: rpm-md ymp Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-12-1 Substitute: kiwi-filesystem:ext3 e2fsprogs Substitute: kiwi-filesystem:ext4 e2fsprogs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-filesystem:btrfs btrfsprogs Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:isoboot kiwi-desc-isoboot kiwi-desc-isoboot-requires Substitute: kiwi-boot:oemboot kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:tbz kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-netboot-requires Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kiwi-desc-vmxboot-requires Substitute: kiwi-boot:xenboot kiwi-desc-xenboot kiwi-desc-xenboot-requires Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini FileProvides: /usr/sbin/groupadd shadow FileProvides: /sbin/netconfig sysconfig-netconfig Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar libz1 libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs Prefer: libdb-4_8-devel VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 net-tools ExportFilter: \.x86_64\.rpm$ x86_64 ExportFilter: \.ia64\.rpm$ ia64 ExportFilter: \.s390x\.rpm$ s390x ExportFilter: \.ppc64\.rpm$ ppc64 ExportFilter: \.ppc\.rpm$ ppc ExportFilter: -ia32-.*\.rpm$ ExportFilter: -32bit-.*\.sparc64\.rpm$ ExportFilter: -64bit-.*\.sparcv9\.rpm$ ExportFilter: \.armv7l\.rpm$ armv7l ExportFilter: \.armv7hl\.rpm$ armv7l ExportFilter: ^glibc(?:-devel)?-32bit-.*\.sparc64\.rpm$ sparc64 ExportFilter: ^glibc(?:-devel)?-64bit-.*\.sparcv9\.rpm$ sparcv9 # it would be a great idea to have, but sometimes installation-images wants to build debuginfos in #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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 # needed for su's default config - perhaps we should use a simplified form? Support: pam-modules # the basic stuff Support: perl build-mkbaselibs 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 # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif 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: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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: geronimo-servlet-2_4-api Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini Prefer: libudev1:udev 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 Prefer: postgresql postgresql-server Prefer: -unzip-rcc # kernel bug (coolo) Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: libffi%{gcc_version} libffi%{gcc_version}-devel Prefer: libgcc_s1-x86 libffi4 libgcj_bc1 Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc %ifnarch %arm Prefer: -java-1_7_0-icedtea-devel %endif Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX # prefer module-init-tools Prefer: -kmod-compat Prefer: gettext-tools-mini gettext-runtime-mini # choice p11-kit-nss-trust Prefer: mozilla-nss-certs # amarok dependency Prefer: phonon-backend-gstreamer-0_10 Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug 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-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 # not during build Ignore: yui_backend Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit:systemd Ignore: openssh:systemd Ignore: cronie:systemd Ignore: systemd:kbd Ignore: systemd:systemd-presets-branding Ignore: systemd:dbus-1 Ignore: systemd:pam-config Ignore: systemd:udev Ignore: systemd-mini:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info Ignore: man:groff-full Ignore: git-core:rsync Ignore: apache2:systemd Ignore: icewm-lite:icewm 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: avalon-logkit:servlet 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: simias:mono(log4net) Ignore: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: mkinitrd:sbin_init Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp # sysconfig requires it at runtime, not buildtime Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 Ignore: sysconfig:tunctl # 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: autoyast2:yast2-schema Ignore: libgio-2_0-0:dbus-1-x11 Ignore: weather-wallpaper:inkscape %ifarch %arm Prefer: java-1_7_0-icedtea java-1_7_0-icedtea-devel %else %ifnarch s390 s390x Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel %endif %ifarch s390 s390x Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif %ifarch %arm Substitute: java2-devel-packages java-1_7_0-icedtea-devel %else Substitute: java2-devel-packages java-1_7_0-openjdk-devel %endif %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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE Optflags: i586 -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: x86_64 -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: ppc -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: ppc64 -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: ia64 -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: s390 -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: s390x -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: armv6l -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: armv6hl -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: armv7l -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: armv7hl -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: aarch64 -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 -fstack-protector Optflags: sparc64 -fmessage-length=0 -grecord-gcc-switches -mcpu=ultrasparc -fstack-protector %ifarch sparcv9 Target: sparcv9 %endif # Workaround buildservice bug (scheduler arch not matching target arch) %ifarch armv7l armv7hl Target: armv7hl-suse-linux %endif %ifarch armv6l armv6hl Target: armv6hl-suse-linux %endif Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables %define suse_version 1310 %ifarch aarch64 armv6l armv6hl %define qemu_user_space_build 1 %endif %if "%qemu_user_space_build" == "1" Hostarch: x86_64 Constraint: hostlabel QEMU_ARM Macros: %qemu_user_space_build 1 %_without_mono 1 :Macros %ifarch armv6l armv6hl Preinstall: qemu-linux-user %endif %ifarch armv7l armv7hl Preinstall: qemu-linux-user %endif ExportFilter: ^qemu-linux-user.*\.x86_64\.rpm$ . armv7l armv6l %endif Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %suse_version 1310 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver 48 %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} obs-build-20210120/configs/sl13.2.conf000066400000000000000000000641161400202264700170510ustar00rootroot00000000000000%define gcc_version 48 Patterntype: rpm-md ymp Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-12-1 Substitute: kiwi-filesystem:ext3 e2fsprogs Substitute: kiwi-filesystem:ext4 e2fsprogs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-filesystem:btrfs btrfsprogs Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:isoboot kiwi-desc-isoboot kiwi-desc-isoboot-requires Substitute: kiwi-boot:oemboot kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:tbz kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-netboot-requires Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kiwi-desc-vmxboot-requires Substitute: kiwi-boot:xenboot kiwi-desc-xenboot kiwi-desc-xenboot-requires Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /sbin/netconfig sysconfig-netconfig Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar libz1 libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs Prefer: libdb-4_8-devel VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 net-tools libsmartcols1 # kernel-obs-build - bnc#865554 ExportFilter: \.x86_64\.rpm$ x86_64 ExportFilter: \.ia64\.rpm$ ia64 ExportFilter: \.s390x\.rpm$ s390x ExportFilter: \.ppc64\.rpm$ ppc64 ExportFilter: \.ppc\.rpm$ ppc ExportFilter: -ia32-.*\.rpm$ ExportFilter: -32bit-.*\.sparc64\.rpm$ ExportFilter: -64bit-.*\.sparcv9\.rpm$ ExportFilter: \.armv7l\.rpm$ armv7l ExportFilter: \.armv7hl\.rpm$ armv7l ExportFilter: ^glibc(?:-devel)?-32bit-.*\.sparc64\.rpm$ sparc64 ExportFilter: ^glibc(?:-devel)?-64bit-.*\.sparcv9\.rpm$ sparcv9 # it would be a great idea to have, but sometimes installation-images wants to build debuginfos in #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ #ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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 # needed for su's default config - perhaps we should use a simplified form? Support: pam-modules # the basic stuff Support: perl build-mkbaselibs 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 # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif 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: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE enlightenment-theme-upstream Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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: geronimo-servlet-2_4-api Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini libcom_err2-mini libext2fs2-mini Prefer: libudev1:udev 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 Prefer: postgresql postgresql-server Prefer: -unzip-rcc -linuxconsoletools # kernel bug (coolo) Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: libffi%{gcc_version} libffi%{gcc_version}-devel Prefer: -libatomic1-gcc49 -libitm1-gcc49 -libgcj_bc1-gcc49 -libtsan0-gcc49 -libatomic1-gcc49-32bit -libitm1-gcc49-32bit Prefer: libgcc_s1-x86 libffi4 libgcj_bc1 Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc %ifnarch %arm Prefer: -java-1_7_0-icedtea-devel %endif Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX # prefer module-init-tools Prefer: -kmod-compat Prefer: gettext-tools-mini gettext-runtime-mini # choice p11-kit-nss-trust Prefer: mozilla-nss-certs # amarok dependency resolution Prefer: phonon-backend-gstreamer-0_10 # replacing mkinitrd Prefer: dracut # Not sure if wicked is ready yet Prefer: sysconfig-network Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug 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-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 # not during build Ignore: yui_backend Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit:systemd Ignore: openssh:systemd Ignore: cronie:systemd Ignore: systemd:kbd Ignore: systemd:systemd-presets-branding Ignore: systemd:dbus-1 Ignore: systemd:pam-config Ignore: systemd:udev Ignore: systemd-mini:this-is-only-for-build-envs Ignore: udev-mini:this-is-only-for-build-envs Ignore: libudev-mini1:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: avalon-logkit:servlet 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: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: mkinitrd:sbin_init Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp # sysconfig requires it at runtime, not buildtime Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 Ignore: sysconfig-network:iproute2 Ignore: sysconfig:tunctl # 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: autoyast2:yast2-schema Ignore: libgio-2_0-0:dbus-1-x11 Ignore: weather-wallpaper:inkscape Ignore: libgamin-1-0:gamin-server Ignore: libfam0-gamin:gamin-server %ifarch %arm Prefer: java-1_7_0-icedtea java-1_7_0-icedtea-devel %else Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif %ifarch %arm Substitute: java2-devel-packages java-1_7_0-icedtea-devel %else Substitute: java2-devel-packages java-1_7_0-openjdk-devel %endif %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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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: armv5el -fmessage-length=0 -grecord-gcc-switches Optflags: armv5tel -fmessage-length=0 -grecord-gcc-switches Optflags: armv7l -fmessage-length=0 -grecord-gcc-switches Optflags: armv7hl -fmessage-length=0 -grecord-gcc-switches Optflags: aarch64 -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 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1320 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %suse_version 1320 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver 48 %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} obs-build-20210120/configs/sl13.3.conf000066400000000000000000000727331400202264700170560ustar00rootroot00000000000000%define gcc_version 5 Substitute: kiwi-packagemanager:instsource kiwi-desc-isoboot-requires kiwi-instsource kiwi-instsource-plugins-openSUSE-13-2 Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /sbin/netconfig sysconfig-netconfig FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat FileProvides: /usr/sbin/lockdev lockdev FileProvides: /bin/logger util-linux-systemd 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 Order: libopenssl0_9_8:openssl-certs Prefer: libdb-4_8-devel VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 libsmartcols1 VMinstall: kernel-obs-build VMInstall: iproute2 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: \.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 # the basic stuff Support: perl build-mkbaselibs 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: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: mono-devel Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE enlightenment-theme-upstream 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: -servletapi3 -servletapi4 -servletapi5 Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: plasma5-desktop:plasma5-desktop-branding-upstream Prefer: plasma5-workspace:plasma5-workspace-branding-upstream Prefer: sddm:sddm-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: kdebase4-openSUSE:kdebase4-workspace Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release Prefer: e17-devel:e17 # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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: 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 # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 libQtGLib-2_0-0 libQtGLib-devel # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini libcom_err2-mini libext2fs2-mini Prefer: libudev1:udev 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 Prefer: postgresql postgresql-server 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 # as long as kactivities4 exists and is provided Prefer: kactivities5 # kernel bug (coolo) Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: libopenssl-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: libffi4 libffi-devel-gcc%{gcc_version} Prefer: -libatomic1-gcc49 -libitm1-gcc49 -libgcj_bc1-gcc49 -libtsan0-gcc49 -libatomic1-gcc49-32bit -libitm1-gcc49-32bit Prefer: -libitm1-gcc48 -libitm1-gcc48-32bit -libatomic1-gcc48 -libatomic1-gcc48-32bit -libtsan0-gcc48 Prefer: -libstdc++6-gcc48 -libgomp1-gcc48 -libatomic1-gcc48 Prefer: libgcc_s1-x86 libgcj_bc1 Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc Prefer: -java-1_7_0-icedtea-devel Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX perl-Test-YAML Prefer: gettext-tools-mini gettext-runtime-mini # 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 # wireshark has now split off the ui. qt is considered experimental 2014-08-09 Prefer: wireshark-ui-gtk # libmediaart is prepared for a larger update; for now favor mediaart-1.0 Prefer: -typelib-1_0-MediaArt-2_0 Ignore: installation-images-openSUSE:cracklib-dict-full Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libgtk-3-0:adwaita-icon-theme 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: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit: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: systemd-mini:this-is-only-for-build-envs Ignore: libsystemd0-mini:this-is-only-for-build-envs Ignore: udev-mini:this-is-only-for-build-envs Ignore: libudev-mini1:this-is-only-for-build-envs Ignore: jdk-bootstrap:this-is-only-for-build-envs Prefer: -harfbuzz-bootstrap -harfbuzz-bootstrap-devel Ignore: harfbuzz-bootstrap:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding 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 # 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) # RUBY STUFF %define %_with_ruby21 0 Macros: # # IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT # # if you change any macros here you have to update the copy in the # ruby-common as well. # # 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 the # ruby2.1 package as well. %rubygemsruby21() rubygem(ruby:2.1.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby21() %{expand:%%{rubygemsx%*}} %rubyruby21() ruby2.1 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby21() %{expand:%%{rubyx%*}} %rubydevelruby21() ruby2.1-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby21() %{expand:%%{rubydevelx%*}} %_with_ruby21 1 :Macros Macros: # # 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 # %rubygemsruby22() rubygem(ruby:2.2.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby22() %{expand:%%{rubygemsx%*}} %rubyruby22() ruby2.2 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby22() %{expand:%%{rubyx%*}} %rubydevelruby22() ruby2.2-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby22() %{expand:%%{rubydevelx%*}} %_with_ruby22 1 :Macros %define %_with_ruby21 0 %define rb_default_ruby ruby22 %define rb_default_ruby_suffix ruby2.2 %define rb_default_ruby_abi ruby:2.2.0 %define rb_build_ruby_abis ruby:2.1.0 ruby:2.2.0 %define rb_build_versions ruby21 ruby22 Macros: %rb_default_ruby ruby22 %rb_default_ruby_suffix ruby2.2 %rb_default_ruby_abi ruby:2.2.0 %rb_build_ruby_abis ruby:2.1.0 ruby:2.2.0 %rb_build_versions ruby21 ruby22 :Macros 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 # END RUBY STUFF Prefer: java-1_8_0-openjdk java-1_8_0-openjdk-devel Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif Substitute: java2-devel-packages java-1_7_0-openjdk-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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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 %define suse_version 1321 %define is_opensuse 1 Macros: %suse_version 1321 %is_opensuse 1 %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 %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver 5 %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 obs-build-20210120/configs/sl15.0.conf000066400000000000000000000765601400202264700170570ustar00rootroot00000000000000 Release: lp150.. %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 Substitute: kiwi-packagemanager:instsource product-builder-plugin-Tumbleweed Substitute: system-packages:kiwi-product product-builder Substitute: kiwi-packagemanager: kiwi-packagemanager:zypper Prefer: installation-images-openSUSE installation-images-debuginfodeps-openSUSE # switch to kiwi v8 Prefer: python3-kiwi Prefer: kiwi-boot-require FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /usr/sbin/usermod shadow FileProvides: /sbin/netconfig sysconfig-netconfig FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat #FileProvides: /usr/bin/mkisofs mkisofs FileProvides: /usr/sbin/lockdev lockdev FileProvides: /bin/logger util-linux-systemd FileProvides: /bin/csh tcsh FileProvides: /usr/bin/csh tcsh FileProvides: /usr/bin/mimencode metamail FileProvides: /usr/bin/pkg-config pkg-config FileProvides: /usr/bin/sg_inq sg3_utils FileProvides: /usr/bin/tput ncurses-utils FileProvides: /usr/bin/eu-nm elfutils FileProvides: /usr/bin/Xvfb xorg-x11-server FileProvides: /usr/bin/xmllint libxml2-tools FileProvides: /sbin/setcap libcap-progs FileProvides: /usr/bin/setfacl acl FileProvides: /usr/bin/fipscheck fipscheck FileProvides: /usr/bin/python python-base Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep liblua5_3-5 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 Prefer: cdrkit-cdrtools-compat genisoimage VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 libsmartcols1 VMinstall: kernel-obs-build VMInstall: net-tools-deprecated Required: rpm-build # Build all packages with -pie enabled Required: gcc-PIE # the basic stuff Support: perl build-mkbaselibs Support: brp-check-suse post-build-checks rpmlint-Factory %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: 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 # 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 # curl Ignore: libcurl-mini-devel:this-is-only-for-build-envs Ignore: libcurl4-mini:this-is-only-for-build-envs # curl: -full and -mini packages don't mingle well Prefer: -libcurl4-mini -libcurl-mini-devel Conflict: libcurl4-mini:curl Conflict: libcurl-mini-devel:libcurl4 # When kiwi comes into play, we do not want the -mini packages; -mini does not target end user systems 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 Prefer: -suse-build-key # Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) Prefer: postfix # Give the worker any default apache2-MPM for apache2- chosing 'prefork' (alternatives are -event and -worker, dep-wise they are equal) # 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 # Below list still needs to be reviewed Prefer: xorg-x11-Xvnc:icewm Prefer: cracklib-dict-small Prefer: apache2:apache2-prefork 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 # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service 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 Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: gnu-jaf yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: yast2-theme-openSUSE enlightenment-theme-upstream 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: -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: rpcbind eclipse-source Prefer: mx4j:log4j-mini 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: dummy-release Prefer: libGLw1 # Help GNOME:Factory over librest-0_7-0 vs librest0 choice Prefer: librest-0_7-0 # Tumbleweed ships nodejs4 for compatibility reasons - but it's not the preferred version Prefer: -nodejs4 # 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 -ruby2.2-rubygem-listen-3_0 -ruby2.2-rubygem-fast_gettext-1_1 -ruby2.2-rubygem-nokogiri-1_6 -ruby2.3-rubygem-nokogiri-1_6 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: 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 # 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: 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 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 python2-pep8 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 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: pam-modules:resmgr 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: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug 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: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding 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() %* # # RUBY STUFF # # IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT # # if you change any macros here you have to update the copy in # ruby2.2 aswell. # # IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT # %rubygemsruby22() rubygem(ruby:2.2.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby22() %{expand:%%{rubygemsx%*}} %rubyruby22() ruby2.2 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby22() %{expand:%%{rubyx%*}} %rubydevelruby22() ruby2.2-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby22() %{expand:%%{rubydevelx%*}} %_with_ruby22 1 # # IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT # # if you change any macros here you have to update the copy in # ruby2.3 aswell. # # IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT # %rubygemsruby23() rubygem(ruby:2.3.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby23() %{expand:%%{rubygemsx%*}} %rubyruby23() ruby2.3 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby23() %{expand:%%{rubyx%*}} %rubydevelruby23() ruby2.3-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby23() %{expand:%%{rubydevelx%*}} %_with_ruby23 1 :Macros %define _with_ruby22 1 %define _with_ruby23 1 %define rb_default_ruby ruby22 %define rb_default_ruby_suffix ruby2.2 %define rb_default_ruby_abi ruby:2.2.0 %define rb_build_ruby_abis ruby:2.2.0 ruby:2.3.0 %define rb_build_versions ruby22 ruby23 Macros: %rb_default_ruby ruby22 %rb_default_ruby_suffix ruby2.2 %rb_default_ruby_abi ruby:2.2.0 %rb_build_ruby_abis ruby:2.2.0 ruby:2.3.0 %rb_build_versions ruby22 ruby23 :Macros 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 # defined in tpython-rpm-macros Macros: %have_python2 1 %have_python3 1 %python_module() %{expand: %{?have_python2:python2-%{**}} %{?have_python3:python3-%{**}} %{?have_pypy3:pypy3-%{**}}} :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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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-strong -funwind-tables -fasynchronous-unwind-tables %define suse_version 1500 %define is_opensuse 1 Macros: %suse_version 1500 %is_opensuse 1 %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 obs-build-20210120/configs/sl15.1.conf000066400000000000000000001102731400202264700170460ustar00rootroot00000000000000 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 obs-build-20210120/configs/sl15.2.conf000066400000000000000000001136711400202264700170540ustar00rootroot00000000000000 Release: . spec:lp152.. %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 # Help with the switch to the gcc9 provided libs: Prefer: libasan5 libasan5-32bit libubsan1 libubsan1-32bit libgfortran5 Substitute: kiwi-setup:image python3-kiwi createrepo_c Substitute: kiwi-image:tbz python3-kiwi Substitute: kiwi-image:docker python3-kiwi kiwi-image-docker-requires 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 # allow builds using docker tool Substitute: build-packages:docker !systemd-mini !libsystemd0-mini !libudev-mini1 !udev-mini openSUSE-release-ftp containment-rpm-docker Substitute: build-packages:kiwi !systemd-mini !libsystemd0-mini !libudev-mini1 !udev-mini openSUSE-release-ftp # To build ISO images Substitute: build-packages:iso !systemd-mini !udev-mini !krb5-mini !libsystemd0-mini # create conflicts for packages installed into the target image Substitute: build-packages:kiwi !systemd-mini !udev-mini !krb5-mini !libsystemd0-mini Substitute: kiwi python3-kiwi 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 # ghc-bootstrap should not provide it to start with - but it does. so let's kick it Prefer: libffi7 Preinstall: liblua5_3-5 # Needed with latest rpm (Use libgcrypt as crypto library for SP2 and Leap 15.2 [jsc#SLE-9552]) Preinstall: libgcrypt20 libgpg-error0 # Needed with latest rpm (Added zstd support in SLE-15-SP2 [bsc#1162668]) Preinstall: libzstd1 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 FileProvides: /usr/bin/host bind-utils Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libncurses6 pam Preinstall: libgcc_s1 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 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 ### 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 Ignore: ghc-bootstrap:this-is-only-for-build-envs Ignore: ghc-bootstrap-helpers:this-is-only-for-build-envs Ignore: cmake-mini:this-is-only-for-build-envs # Let's speed up things: We don't need Mesa-dri and Mesa-gallium in the build system Ignore: Mesa:Mesa-dri Ignore: Mesa:Mesa-gallium # 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: -curl-mini -libcurl-mini-devel -libcurl4-mini Prefer: -suse-build-key # Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) Prefer: postfix # Give the worker any default apache2-MPM for apache2- chosing 'prefork' (alternatives are -event and -worker, dep-wise they are equal) # 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' - not true anymore # SP1 is prefer go1.12 Prefer: go go1.12 # python([23])-pep8 is provided by python\1-pep8 and python\1-pycodestyle - favoring 'the real one' Prefer: python2-pep8 python3-pep8 # There is python3-prompt_toolkit and also python3-prompt_toolkit1 for compat. Use the unversioned one by default Prefer: python3-prompt_toolkit # 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 # SLE has no nodejs preference, let's use nodejs10 Prefer: -nodejs4 -nodejs6 -nodejs9 nodejs10 Prefer: npm10 # 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/python3-vtk needed by vtk-devel Prefer: vtk-java vtk-tcl python3-vtk # 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 # There is python3-Django and python3-Django1 - as usual, we favor the unversioned one Prefer: python3-Django # 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-101-openmpi -libhdf5-101-mvapich2 -libhdf5_hl101-openmpi libhdf5_hl100 -libhdf5-103-openmpi -libhdf5-103-mvapich2 -libhdf5_hl103-openmpi -libhdf5_cpp103-openmpi -libhdf5_cpp103-mvapich2 -libhdf5-103-openmpi2 -libhdf5-103-openmpi3 -libhdf5_cpp103-openmpi2 -libhdf5_cpp103-openmpi3 Prefer: -hdf5-1_8-devel Prefer: -libvtk1-openmpi libvtk1-openmpi2 Prefer: fftw3-devel ImageMagick-config-7-SUSE # 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 -libnetcdf13-openmpi2 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 # Not true anymore peri-i #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 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 # samba-libs requires samba-libs-python Prefer: samba-libs-python3 # 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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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-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 150200 Macros: %suse_version 1500 %is_opensuse 1 %sle_version 150200 %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 9 # 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 latest versions built from GCC 7 sources %product_libs_gcc_ver_libasan4 7 %product_libs_gcc_ver_libgo11 7 %product_libs_gcc_ver_libgfortran4 7 %product_libs_gcc_ver_libubsan0 7 %product_libs_gcc_ver_libcilkrts5 7 %product_libs_gcc_ver_libobjc4 7 # The following shlibs have latest versions built from GCC 8 sources %product_libs_gcc_ver_libgo13 8 %product_libs_gcc_ver_libmpx2 8 %product_libs_gcc_ver_libmpxwrappers2 8 %product_libs_gcc_ver_libgfortran5 9 %product_libs_gcc_ver_libasan5 9 %product_libs_gcc_ver_libubsan1 9 %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 obs-build-20210120/configs/sl15.3.conf000066400000000000000000001136711400202264700170550ustar00rootroot00000000000000 Release: . spec:lp152.. %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 # Help with the switch to the gcc9 provided libs: Prefer: libasan5 libasan5-32bit libubsan1 libubsan1-32bit libgfortran5 Substitute: kiwi-setup:image python3-kiwi createrepo_c Substitute: kiwi-image:tbz python3-kiwi Substitute: kiwi-image:docker python3-kiwi kiwi-image-docker-requires 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 # allow builds using docker tool Substitute: build-packages:docker !systemd-mini !libsystemd0-mini !libudev-mini1 !udev-mini openSUSE-release-ftp containment-rpm-docker Substitute: build-packages:kiwi !systemd-mini !libsystemd0-mini !libudev-mini1 !udev-mini openSUSE-release-ftp # To build ISO images Substitute: build-packages:iso !systemd-mini !udev-mini !krb5-mini !libsystemd0-mini # create conflicts for packages installed into the target image Substitute: build-packages:kiwi !systemd-mini !udev-mini !krb5-mini !libsystemd0-mini Substitute: kiwi python3-kiwi 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 # ghc-bootstrap should not provide it to start with - but it does. so let's kick it Prefer: libffi7 Preinstall: liblua5_3-5 # Needed with latest rpm (Use libgcrypt as crypto library for SP2 and Leap 15.2 [jsc#SLE-9552]) Preinstall: libgcrypt20 libgpg-error0 # Needed with latest rpm (Added zstd support in SLE-15-SP2 [bsc#1162668]) Preinstall: libzstd1 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 FileProvides: /usr/bin/host bind-utils Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libncurses6 pam Preinstall: libgcc_s1 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 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 ### 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 Ignore: ghc-bootstrap:this-is-only-for-build-envs Ignore: ghc-bootstrap-helpers:this-is-only-for-build-envs Ignore: cmake-mini:this-is-only-for-build-envs # Let's speed up things: We don't need Mesa-dri and Mesa-gallium in the build system Ignore: Mesa:Mesa-dri Ignore: Mesa:Mesa-gallium # 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: -curl-mini -libcurl-mini-devel -libcurl4-mini Prefer: -suse-build-key # Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) Prefer: postfix # Give the worker any default apache2-MPM for apache2- chosing 'prefork' (alternatives are -event and -worker, dep-wise they are equal) # 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' - not true anymore # SP1 is prefer go1.12 Prefer: go go1.12 # python([23])-pep8 is provided by python\1-pep8 and python\1-pycodestyle - favoring 'the real one' Prefer: python2-pep8 python3-pep8 # There is python3-prompt_toolkit and also python3-prompt_toolkit1 for compat. Use the unversioned one by default Prefer: python3-prompt_toolkit # 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 # SLE has no nodejs preference, let's use nodejs10 Prefer: -nodejs4 -nodejs6 -nodejs9 nodejs10 Prefer: npm10 # 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/python3-vtk needed by vtk-devel Prefer: vtk-java vtk-tcl python3-vtk # 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 # There is python3-Django and python3-Django1 - as usual, we favor the unversioned one Prefer: python3-Django # 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-101-openmpi -libhdf5-101-mvapich2 -libhdf5_hl101-openmpi libhdf5_hl100 -libhdf5-103-openmpi -libhdf5-103-mvapich2 -libhdf5_hl103-openmpi -libhdf5_cpp103-openmpi -libhdf5_cpp103-mvapich2 -libhdf5-103-openmpi2 -libhdf5-103-openmpi3 -libhdf5_cpp103-openmpi2 -libhdf5_cpp103-openmpi3 Prefer: -hdf5-1_8-devel Prefer: -libvtk1-openmpi libvtk1-openmpi2 Prefer: fftw3-devel ImageMagick-config-7-SUSE # 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 -libnetcdf13-openmpi2 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 # Not true anymore peri-i #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 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 # samba-libs requires samba-libs-python Prefer: samba-libs-python3 # 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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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-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 150300 Macros: %suse_version 1500 %is_opensuse 1 %sle_version 150300 %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 9 # 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 latest versions built from GCC 7 sources %product_libs_gcc_ver_libasan4 7 %product_libs_gcc_ver_libgo11 7 %product_libs_gcc_ver_libgfortran4 7 %product_libs_gcc_ver_libubsan0 7 %product_libs_gcc_ver_libcilkrts5 7 %product_libs_gcc_ver_libobjc4 7 # The following shlibs have latest versions built from GCC 8 sources %product_libs_gcc_ver_libgo13 8 %product_libs_gcc_ver_libmpx2 8 %product_libs_gcc_ver_libmpxwrappers2 8 %product_libs_gcc_ver_libgfortran5 9 %product_libs_gcc_ver_libasan5 9 %product_libs_gcc_ver_libubsan1 9 %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 obs-build-20210120/configs/sl15.5.conf000066400000000000000000000735321400202264700170600ustar00rootroot00000000000000%define gcc_version 5 Substitute: kiwi-packagemanager:instsource kiwi-desc-isoboot-requires kiwi-instsource kiwi-instsource-plugins-openSUSE-13-2 Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /sbin/netconfig sysconfig-netconfig FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat FileProvides: /usr/sbin/lockdev lockdev FileProvides: /bin/logger util-linux-systemd # reduced preinstall list, use this if you bootstrap distribution #Preinstall: aaa_base attr bash coreutils diffutils #Preinstall: filesystem fillup glibc grep #Preinstall: libbz2-1 libgcc_s1 libncurses6 pam #Preinstall: permissions libreadline8 rpm sed tar libz1 libselinux1 libzstd1 #Preinstall: liblzma5 libcap2 libacl1 libattr1 #Preinstall: libpopt0 libelf1 liblua5_3-5 #Preinstall: libpcre1 libgcrypt20 libgpg-error0 #VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 libsmartcols1 # extended list, just for building additional packages ExpandFlags: preinstallexpand Preinstall: rpm # ip works without the lib Preinstall: -libxtables.so.12 Preinstall: -libxtables.so.12() Preinstall: -libxtables.so.12()(64bit) # generic VM tooling requirements: VMinstall: util-linux VMinstall: kernel-obs-build VMInstall: iproute2 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs Prefer: libdb-4_8-devel 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: \.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 # the basic stuff Support: perl build-mkbaselibs Support: brp-check-suse post-build-checks rpmlint-Factory # remove build-compare support to disable "same result" package dropping Support: build-compare 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: libreadline8 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: mono-devel Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE enlightenment-theme-upstream 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: -servletapi3 -servletapi4 -servletapi5 Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: plasma5-desktop:plasma5-desktop-branding-upstream Prefer: plasma5-workspace:plasma5-workspace-branding-upstream Prefer: sddm:sddm-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: kdebase4-openSUSE:kdebase4-workspace Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release Prefer: e17-devel:e17 # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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: 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 # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 libQtGLib-2_0-0 libQtGLib-devel # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini libcom_err2-mini libext2fs2-mini Prefer: libudev1:udev 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 Prefer: postgresql postgresql-server 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 # as long as kactivities4 exists and is provided Prefer: kactivities5 # kernel bug (coolo) Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: libopenssl-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: libffi4 libffi-devel-gcc%{gcc_version} Prefer: -libatomic1-gcc49 -libitm1-gcc49 -libgcj_bc1-gcc49 -libtsan0-gcc49 -libatomic1-gcc49-32bit -libitm1-gcc49-32bit Prefer: -libitm1-gcc48 -libitm1-gcc48-32bit -libatomic1-gcc48 -libatomic1-gcc48-32bit -libtsan0-gcc48 Prefer: -libstdc++6-gcc48 -libgomp1-gcc48 -libatomic1-gcc48 Prefer: libgcc_s1-x86 libgcj_bc1 Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc Prefer: -java-1_7_0-icedtea-devel Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX perl-Test-YAML Prefer: gettext-tools-mini gettext-runtime-mini # 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 # wireshark has now split off the ui. qt is considered experimental 2014-08-09 Prefer: wireshark-ui-gtk # libmediaart is prepared for a larger update; for now favor mediaart-1.0 Prefer: -typelib-1_0-MediaArt-2_0 # Prefer coreutils over coreutils-single Prefer: coreutils Ignore: installation-images-openSUSE:cracklib-dict-full Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libgtk-3-0:adwaita-icon-theme 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: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit: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: systemd-mini:this-is-only-for-build-envs Ignore: libsystemd0-mini:this-is-only-for-build-envs Ignore: udev-mini:this-is-only-for-build-envs Ignore: libudev-mini1:this-is-only-for-build-envs Ignore: jdk-bootstrap:this-is-only-for-build-envs Prefer: -harfbuzz-bootstrap -harfbuzz-bootstrap-devel Ignore: harfbuzz-bootstrap:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding 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 # 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) # RUBY STUFF %define %_with_ruby21 0 Macros: # # IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT # # if you change any macros here you have to update the copy in the # ruby-common as well. # # 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 the # ruby2.1 package as well. %rubygemsruby21() rubygem(ruby:2.1.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby21() %{expand:%%{rubygemsx%*}} %rubyruby21() ruby2.1 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby21() %{expand:%%{rubyx%*}} %rubydevelruby21() ruby2.1-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby21() %{expand:%%{rubydevelx%*}} %_with_ruby21 1 :Macros Macros: # # 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 # %rubygemsruby22() rubygem(ruby:2.2.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby22() %{expand:%%{rubygemsx%*}} %rubyruby22() ruby2.2 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby22() %{expand:%%{rubyx%*}} %rubydevelruby22() ruby2.2-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby22() %{expand:%%{rubydevelx%*}} %_with_ruby22 1 :Macros %define %_with_ruby21 0 %define rb_default_ruby ruby22 %define rb_default_ruby_suffix ruby2.2 %define rb_default_ruby_abi ruby:2.2.0 %define rb_build_ruby_abis ruby:2.1.0 ruby:2.2.0 %define rb_build_versions ruby21 ruby22 Macros: %rb_default_ruby ruby22 %rb_default_ruby_suffix ruby2.2 %rb_default_ruby_abi ruby:2.2.0 %rb_build_ruby_abis ruby:2.1.0 ruby:2.2.0 %rb_build_versions ruby21 ruby22 :Macros 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 # END RUBY STUFF Prefer: java-1_8_0-openjdk java-1_8_0-openjdk-devel Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif Substitute: java2-devel-packages java-1_7_0-openjdk-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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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 %define suse_version 1550 %define is_opensuse 1 Macros: %suse_version 1550 %is_opensuse 1 %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 %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver 5 %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 obs-build-20210120/configs/sl42.1.conf000066400000000000000000000717701400202264700170560ustar00rootroot00000000000000%define gcc_version 48 Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-13-2 Substitute: kiwi-filesystem:ext3 e2fsprogs Substitute: kiwi-filesystem:ext4 e2fsprogs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-filesystem:btrfs btrfsprogs Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:isoboot kiwi-desc-isoboot kiwi-desc-isoboot-requires Substitute: kiwi-boot:oemboot kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:tbz kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-netboot-requires Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kiwi-desc-vmxboot-requires Substitute: kiwi-boot:xenboot kiwi-desc-xenboot kiwi-desc-xenboot-requires Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /sbin/netconfig sysconfig-netconfig FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat FileProvides: /usr/sbin/lockdev lockdev FileProvides: /bin/logger util-linux-systemd FileProvides: /bin/csh tcsh FileProvides: /usr/bin/csh tcsh FileProvides: /usr/bin/mimencode metamail FileProvides: /usr/bin/pkg-config pkg-config FileProvides: /usr/bin/sg_inq sg3_utils FileProvides: /usr/bin/tput ncurses-utils FileProvides: /usr/bin/eu-nm elfutils FileProvides: /usr/bin/Xvfb xorg-x11-server FileProvides: /usr/bin/xmllint libxml2-tools FileProvides: /sbin/setcap libcap-progs FileProvides: /usr/bin/setfacl acl FileProvides: /usr/bin/fipscheck fipscheck FileProvides: /usr/bin/python python # Until input-utils has been formaly removed Prefer: -input-utils Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar libz1 libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs Prefer: libdb-4_8-devel VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 net-tools libsmartcols1 %ifarch ppc64le Constraint: hostlabel PPC64LE_HOST %endif # On qemu arches, kernel-obs-build does not make any sense # on ARMv7 you can not boot the kernel as a guest, there is a special # guest kernel. Same is true for PPC %ifnarch armv6l armv6hl armv7l armv7hl ppc VMinstall: kernel-obs-build %endif %ifarch armv6l armv6hl Target: armv6hl-suse-linux %endif %ifarch armv7l armv7hl Target: armv7hl-suse-linux %endif %if "%qemu_user_space_build" == "1" %ifarch aarch64 Target: aarch64-suse-linux %endif Hostarch: x86_64 #Constraint: hostlabel QEMU_ARM Macros: %qemu_user_space_build 1 %_without_mono 1 %_without_wayland 1 :Macros %ifarch armv6l armv6hl Preinstall: qemu-linux-user %endif %ifarch aarch64 Runscripts: qemu-linux-user Preinstall: qemu-linux-user %endif %endif Required: rpm-build # needed for su's default config - perhaps we should use a simplified form? Support: pam-modules # the basic stuff Support: perl build-mkbaselibs Support: brp-check-suse post-build-checks %ifnarch armv6hl armv6l aarch64 Support: rpmlint-Factory %endif %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif 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: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE enlightenment-theme-upstream Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat-jsp-2_2-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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: geronimo-servlet-2_4-api Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini libcom_err2-mini libext2fs2-mini Prefer: libudev1:udev 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 Prefer: postgresql postgresql-server Prefer: -unzip-rcc Prefer: -primus -primus-32bit Prefer: -staging-build-key # 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 Prefer: oxygen5-cursors Prefer: -opencv-qt5-devel Prefer: libopenssl-devel # kernel bug (coolo) Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: -libgcj_bc1-gcc49 Prefer: libitm1 libitm1-32bit libatomic1 libatomic1-32bit libtsan0 libtsan0-32bit Prefer: libgcc_s1-x86 libffi4 libgcj_bc1 libffi%{gcc_version}-devel Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc Prefer: -java-1_7_0-icedtea-devel Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX Prefer: gettext-tools-mini gettext-runtime-mini # 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: oxygen-cursors4 # Temporary Prefer: -perl-App-cpanminus # wireshark has now split off the ui. qt is considered experimental 2014-08-09 Prefer: wireshark-ui-gtk Prefer: plasma5-workspace-branding-upstream # comes in two flavors Prefer: -libhdf5-10-openmpi -libhdf5_hl10-openmpi Ignore: installation-images-openSUSE:cracklib-dict-full Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libgtk-3-0:adwaita-icon-theme 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: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit: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: systemd-mini:this-is-only-for-build-envs Ignore: udev-mini:this-is-only-for-build-envs Ignore: libudev-mini1:this-is-only-for-build-envs Ignore: jdk-bootstrap:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: avalon-logkit:servlet 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: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding 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 # 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) Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif Substitute: java2-devel-packages java-1_7_0-openjdk-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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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: ppc64le -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: armv6l -fmessage-length=0 -grecord-gcc-switches Optflags: armv6hl -fmessage-length=0 -grecord-gcc-switches Optflags: armv7l -fmessage-length=0 -grecord-gcc-switches Optflags: armv7hl -fmessage-length=0 -grecord-gcc-switches Optflags: aarch64 -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 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define sle_version 120100 %define suse_version 1315 %define is_opensuse 1 Macros: %sle_version 120100 %suse_version 1315 %is_opensuse 1 :Macros %define _without_mono 1 %define _without_wayland 1 %define _without_vlc 1 %define _without_compat_libs 1 %define _with_ruby21 1 %define rb_default_ruby ruby21 %define rb_default_ruby_suffix ruby2.1 %define rb_default_ruby_abi ruby:2.1.0 %define rb_build_ruby_abis ruby:2.1.0 %define rb_build_versions ruby21 #Prefer: rubygem(%{rb_default_ruby_abi}:gem2rpm) Prefer: %{rb_default_ruby_suffix}-rubygem-gem2rpm Prefer: %{rb_default_ruby_suffix}-rubygem-rack Macros: %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 %_without_mono 1 %_without_vlc 1 %_without_compat_libs 1 %_with_ruby21 1 %rb_default_ruby ruby21 %rb_default_ruby_suffix ruby2.1 %rb_default_ruby_abi ruby:2.1.0 %rb_build_ruby_abis ruby:2.1.0 %rb_build_versions ruby21 %rubygemsruby21() rubygem(ruby:2.1.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby21() %{expand:%%{rubygemsx%*}} # %rubygemsruby22() rubygem(ruby:2.2.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby22() %{expand:%%{rubygemsx%*}} # %rubygem() %{expand:%%{rubygems%rb_build_versions STOP %*}} %rubygemsSTOP() %nil %rubygemsxSTOP() %{expand:%%rubygemsxxSTOP -a %*} %rubygemsxxSTOP(a:) %{-a*}) %* # %rubyruby21() ruby2.1 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby21() %{expand:%%{rubyx%*}} # %rubyruby22() ruby2.2 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby22() %{expand:%%{rubyx%*}} # %rubySTOP() %nil %rubyxSTOP() %* # %ruby() %{expand:%%{ruby%rb_build_versions STOP %*}} # %rubydevelruby21() ruby2.1-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby21() %{expand:%%{rubydevelx%*}} # %rubydevelruby22() ruby2.2-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby22() %{expand:%%{rubydevelx%*}} # %rubydevel() %{expand:%%{rubydevel%rb_build_versions STOP %*}} # %rubydevelSTOP() %nil %rubydevelxSTOP() %* %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver_libasan0 48 %product_lifiullbs_gcc_ver_libgcj_bc1 48 %product_libs_gcc_ver_libobjc4 48 %product_libs_gcc_ver 5 %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} obs-build-20210120/configs/sl42.2.conf000066400000000000000000000771421400202264700170560ustar00rootroot00000000000000%define gcc_version 48 Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-13-2 Substitute: kiwi-filesystem:ext3 e2fsprogs Substitute: kiwi-filesystem:ext4 e2fsprogs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-filesystem:btrfs btrfsprogs Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:isoboot kiwi-desc-isoboot kiwi-desc-isoboot-requires Substitute: kiwi-boot:oemboot kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:tbz kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-netboot-requires Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kiwi-desc-vmxboot-requires Substitute: kiwi-boot:xenboot kiwi-desc-xenboot kiwi-desc-xenboot-requires Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini Conflict: udev:libudev-mini1 Conflict: udev-mini-devel:udev Conflict: systemd:libsystemd0-mini Conflict: systemd-mini-devel:systemd FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /sbin/netconfig sysconfig-netconfig FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat FileProvides: /usr/sbin/lockdev lockdev FileProvides: /bin/logger util-linux-systemd FileProvides: /bin/csh tcsh FileProvides: /usr/bin/csh tcsh FileProvides: /usr/bin/mimencode metamail FileProvides: /usr/bin/pkg-config pkg-config FileProvides: /usr/bin/sg_inq sg3_utils FileProvides: /usr/bin/tput ncurses-utils FileProvides: /usr/bin/eu-nm elfutils FileProvides: /usr/bin/Xvfb xorg-x11-server FileProvides: /usr/bin/xmllint libxml2-tools FileProvides: /sbin/setcap libcap-progs FileProvides: /usr/bin/setfacl acl FileProvides: /usr/bin/fipscheck fipscheck FileProvides: /usr/bin/python python # Until input-utils has been formaly removed Prefer: -input-utils Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar libz1 libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs Prefer: libdb-4_8-devel VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 net-tools libsmartcols1 # On qemu arches, kernel-obs-build does not make any sense # on ARMv7 you can not boot the kernel as a guest, there is a special # guest kernel. Same is true for PPC %ifnarch armv6l armv6hl armv7l armv7hl ppc VMinstall: kernel-obs-build %endif %ifarch armv6l armv6hl Target: armv6hl-suse-linux %endif %ifarch armv7l armv7hl Target: armv7hl-suse-linux %endif %ifarch armv6l armv6hl armv7l armv7hl # https://bugzilla.suse.com/show_bug.cgi?id=983749 Macros: %product_libs_gcc_ver_libffi4 48 :Macros %endif 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: \.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 # it would be a great idea to have, but sometimes installation-images wants to build debuginfos in #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ #ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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 ExportFilter: \.aarch64\.rpm$ aarch64 ExportFilter: \.aarch64_ilp32\.rpm$ aarch64_ilp32 Required: rpm-build # the basic stuff Support: perl build-mkbaselibs Support: brp-check-suse post-build-checks %ifnarch armv6hl armv6l Support: rpmlint-Factory %endif # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif 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: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE enlightenment-theme-upstream Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat-jsp-2_2-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: icewm-theme-branding Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: NetworkManager:NetworkManager-branding-openSUSE Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: mate-desktop-gschemas:mate-desktop-gschemas-branding-upstream Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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: geronimo-servlet-2_4-api Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi Prefer: -libpsm2-compat # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel libsystemd0-mini Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini libcom_err2-mini libext2fs2-mini Prefer: libudev1:udev 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 Prefer: -unzip-rcc Prefer: -primus -primus-32bit Prefer: -staging-build-key # ffmpeg and its fork libav both provide libswscale; prefer the 'original' ffmpeg Prefer: -ffmpeg2-devel 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: oxygen5-cursors Prefer: -opencv-qt5-devel Prefer: libopenssl-devel Prefer: -boost_1_61-devel Prefer: libunbound-devel-mini # kernel bug (coolo) Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: -libgcj_bc1-gcc49 # do not build with gcc6 Prefer: -libstdc++6-gcc6 -libgcj_bc1-gcc6 -libubsan0-gcc6 -libcilkrts5-gcc6 -liblsan0-gcc6 # do not prefer the legacy one Prefer: gnu-unifont-bitmap-fonts Prefer: libitm1 libatomic1 libtsan0 libubsan0 Prefer: libitm1-32bit libatomic1-32bit libtsan0-32bit libubsan0-32bit Prefer: libgcc_s1-x86 libffi4 libgcj_bc1 libffi%{gcc_version}-devel Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc Prefer: -java-1_7_0-icedtea-devel Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX Prefer: gettext-tools-mini gettext-runtime-mini # 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: oxygen-cursors4 # Temporary #Prefer: -perl-App-cpanminus # wireshark has now split off the ui. qt is considered experimental 2014-08-09 Prefer: wireshark-ui-gtk Prefer: plasma5-workspace-branding-upstream # comes in two flavors Prefer: -libhdf5-10-openmpi -libhdf5_hl10-openmpi # we have both python-dateutil and python-python-dateutil. The former is from # SLE so let's prefer it Prefer: python-dateutil ## From 42.1:Update # boo#966483 #Prefer: -libavcodec-libav-devel -libavdevice-libav-devel # boo#966639 #Substitute: ceph-devel ceph-devel-compat # boo#963771 -- liburcu0 provides liburcu.so.2 o_O and in openSUSE we also have userspace-rcu Prefer: liburcu0 # boo#968966 #Prefer: metatheme-breeze-common Prefer: php5 php5-pear php5-devel php5-tokenizer Prefer: php5-zip php5-ftp php5-dom php5-gd php5-gettext php5-ctype php5-mbstring php5-json # take the same version in SLE Prefer: -ruby2.1-rubygem-fast_gettext-1_1 -ruby2.1-rubygem-fast_gettext-1_2 Prefer: -ruby2.1-rubygem-web-console-2 Ignore: installation-images-openSUSE:cracklib-dict-full Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libgtk-3-0:adwaita-icon-theme 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: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit: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: systemd-mini:this-is-only-for-build-envs Ignore: libsystemd0-mini:this-is-only-for-build-envs Ignore: udev-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: jdk-bootstrap:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: avalon-logkit:servlet 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: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding 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 # 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) Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif Substitute: java2-devel-packages java-1_7_0-openjdk-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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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: ppc64le -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: armv6l -fmessage-length=0 -grecord-gcc-switches Optflags: armv6hl -fmessage-length=0 -grecord-gcc-switches Optflags: armv7l -fmessage-length=0 -grecord-gcc-switches Optflags: armv7hl -fmessage-length=0 -grecord-gcc-switches Optflags: aarch64 -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 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %ifarch s390x %define disable_32bit 1 %define tuneflag zEC12 %define archflag zEC12 Macros: %disable_32bit 1 %tuneflag zEC12 %archflag zEC12 :Macros %endif %define leap_version 420200 %define sle_version 120200 %define suse_version 1315 %define is_opensuse 1 Macros: %sle_version 120200 %suse_version 1315 %is_opensuse 1 :Macros %define _without_mono 1 %define _without_wayland 1 %define _without_vlc 1 %define _without_compat_libs 1 %define _with_ruby21 1 %define rb_default_ruby ruby21 %define rb_default_ruby_suffix ruby2.1 %define rb_default_ruby_abi ruby:2.1.0 %define rb_build_ruby_abis ruby:2.1.0 %define rb_build_versions ruby21 #Prefer: rubygem(%{rb_default_ruby_abi}:gem2rpm) Prefer: %{rb_default_ruby_suffix}-rubygem-gem2rpm Prefer: %{rb_default_ruby_suffix}-rubygem-rack Macros: %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 %_without_mono 1 %_without_vlc 1 %_without_compat_libs 1 %_with_ruby21 1 %rb_default_ruby ruby21 %rb_default_ruby_suffix ruby2.1 %rb_default_ruby_abi ruby:2.1.0 %rb_build_ruby_abis ruby:2.1.0 %rb_build_versions ruby21 %rubygemsruby21() rubygem(ruby:2.1.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby21() %{expand:%%{rubygemsx%*}} # %rubygemsruby22() rubygem(ruby:2.2.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby22() %{expand:%%{rubygemsx%*}} # %rubygem() %{expand:%%{rubygems%rb_build_versions STOP %*}} %rubygemsSTOP() %nil %rubygemsxSTOP() %{expand:%%rubygemsxxSTOP -a %*} %rubygemsxxSTOP(a:) %{-a*}) %* # %rubyruby21() ruby2.1 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby21() %{expand:%%{rubyx%*}} # %rubyruby22() ruby2.2 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby22() %{expand:%%{rubyx%*}} # %rubySTOP() %nil %rubyxSTOP() %* # %ruby() %{expand:%%{ruby%rb_build_versions STOP %*}} # %rubydevelruby21() ruby2.1-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby21() %{expand:%%{rubydevelx%*}} # %rubydevelruby22() ruby2.2-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby22() %{expand:%%{rubydevelx%*}} # %rubydevel() %{expand:%%{rubydevel%rb_build_versions STOP %*}} # %rubydevelSTOP() %nil %rubydevelxSTOP() %* %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver_libasan0 48 %product_lifiullbs_gcc_ver_libgcj_bc1 48 %product_libs_gcc_ver_libobjc4 48 %product_libs_gcc_ver 5 %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} obs-build-20210120/configs/sl42.3.conf000066400000000000000000000771421400202264700170570ustar00rootroot00000000000000%define gcc_version 48 Substitute: kiwi-packagemanager:zypper zypper Substitute: kiwi-packagemanager:smart smart Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux kiwi-instsource-plugins-openSUSE-13-2 Substitute: kiwi-filesystem:ext3 e2fsprogs Substitute: kiwi-filesystem:ext4 e2fsprogs Substitute: kiwi-filesystem:squashfs squashfs Substitute: kiwi-filesystem:btrfs btrfsprogs Substitute: kiwi-boot:usbboot kiwi Substitute: kiwi-boot:isoboot kiwi-desc-isoboot kiwi-desc-isoboot-requires Substitute: kiwi-boot:oemboot kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:tbz kiwi-desc-oemboot kiwi-desc-oemboot-requires Substitute: kiwi-boot:netboot kiwi-desc-netboot kiwi-desc-netboot-requires Substitute: kiwi-boot:vmxboot kiwi-desc-vmxboot kiwi-desc-vmxboot-requires Substitute: kiwi-boot:xenboot kiwi-desc-xenboot kiwi-desc-xenboot-requires Substitute: kiwi-setup:image kiwi createrepo tar -kiwi-desc-isoboot-requires -kiwi-desc-oemboot-requires -kiwi-desc-netboot-requires -kiwi-desc-vmxboot-requires -kiwi-desc-xenboot-requires Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini Conflict: udev:libudev-mini1 Conflict: udev-mini-devel:udev Conflict: systemd:libsystemd0-mini Conflict: systemd-mini-devel:systemd FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /sbin/netconfig sysconfig-netconfig FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat FileProvides: /usr/sbin/lockdev lockdev FileProvides: /bin/logger util-linux-systemd FileProvides: /bin/csh tcsh FileProvides: /usr/bin/csh tcsh FileProvides: /usr/bin/mimencode metamail FileProvides: /usr/bin/pkg-config pkg-config FileProvides: /usr/bin/sg_inq sg3_utils FileProvides: /usr/bin/tput ncurses-utils FileProvides: /usr/bin/eu-nm elfutils FileProvides: /usr/bin/Xvfb xorg-x11-server FileProvides: /usr/bin/xmllint libxml2-tools FileProvides: /sbin/setcap libcap-progs FileProvides: /usr/bin/setfacl acl FileProvides: /usr/bin/fipscheck fipscheck FileProvides: /usr/bin/python python # Until input-utils has been formaly removed Prefer: -input-utils Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar libz1 libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs Prefer: libdb-4_8-devel VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 net-tools libsmartcols1 # On qemu arches, kernel-obs-build does not make any sense # on ARMv7 you can not boot the kernel as a guest, there is a special # guest kernel. Same is true for PPC %ifnarch armv6l armv6hl armv7l armv7hl ppc VMinstall: kernel-obs-build %endif %ifarch armv6l armv6hl Target: armv6hl-suse-linux %endif %ifarch armv7l armv7hl Target: armv7hl-suse-linux %endif %ifarch armv6l armv6hl armv7l armv7hl # https://bugzilla.suse.com/show_bug.cgi?id=983749 Macros: %product_libs_gcc_ver_libffi4 48 :Macros %endif 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: \.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 # it would be a great idea to have, but sometimes installation-images wants to build debuginfos in #ExportFilter: -debuginfo-.*\.rpm$ #ExportFilter: -debugsource-.*\.rpm$ #ExportFilter: ^master-boot-code.*\.i586.rpm$ . x86_64 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 ExportFilter: \.aarch64\.rpm$ aarch64 ExportFilter: \.aarch64_ilp32\.rpm$ aarch64_ilp32 Required: rpm-build # the basic stuff Support: perl build-mkbaselibs Support: brp-check-suse post-build-checks %ifnarch armv6hl armv6l Support: rpmlint-Factory %endif # testing deltas (only for O:F for now!) #Support: build-mkdrpms deltarpm %ifarch ia64 Support: libunwind libunwind-devel Preinstall: libunwind %endif 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: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke # for symbol syslog (syslogd is best as it has the least dependencies) Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE enlightenment-theme-upstream Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat-jsp-2_2-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: icewm-theme-branding Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: NetworkManager:NetworkManager-branding-openSUSE Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: mate-desktop-gschemas:mate-desktop-gschemas-branding-upstream Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-openSUSE # 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: geronimo-servlet-2_4-api Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi Prefer: -libpsm2-compat # for now gstream 0.10 is it Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel libsystemd0-mini Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini libcom_err2-mini libext2fs2-mini Prefer: libudev1:udev 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 Prefer: -unzip-rcc Prefer: -primus -primus-32bit Prefer: -staging-build-key # ffmpeg and its fork libav both provide libswscale; prefer the 'original' ffmpeg Prefer: -ffmpeg2-devel 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: oxygen5-cursors Prefer: -opencv-qt5-devel Prefer: libopenssl-devel Prefer: -boost_1_61-devel Prefer: libunbound-devel-mini # kernel bug (coolo) Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: -libgcj_bc1-gcc49 # do not build with gcc6 Prefer: -libstdc++6-gcc6 -libgcj_bc1-gcc6 -libubsan0-gcc6 -libcilkrts5-gcc6 -liblsan0-gcc6 # do not prefer the legacy one Prefer: gnu-unifont-bitmap-fonts Prefer: libitm1 libatomic1 libtsan0 libubsan0 Prefer: libitm1-32bit libatomic1-32bit libtsan0-32bit libubsan0-32bit Prefer: libgcc_s1-x86 libffi4 libgcj_bc1 libffi%{gcc_version}-devel Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc Prefer: -java-1_7_0-icedtea-devel Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: 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: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX Prefer: gettext-tools-mini gettext-runtime-mini # 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: oxygen-cursors4 # Temporary #Prefer: -perl-App-cpanminus # wireshark has now split off the ui. qt is considered experimental 2014-08-09 Prefer: wireshark-ui-gtk Prefer: plasma5-workspace-branding-upstream # comes in two flavors Prefer: -libhdf5-10-openmpi -libhdf5_hl10-openmpi # we have both python-dateutil and python-python-dateutil. The former is from # SLE so let's prefer it Prefer: python-dateutil ## From 42.1:Update # boo#966483 #Prefer: -libavcodec-libav-devel -libavdevice-libav-devel # boo#966639 #Substitute: ceph-devel ceph-devel-compat # boo#963771 -- liburcu0 provides liburcu.so.2 o_O and in openSUSE we also have userspace-rcu Prefer: liburcu0 # boo#968966 #Prefer: metatheme-breeze-common Prefer: php5 php5-pear php5-devel php5-tokenizer Prefer: php5-zip php5-ftp php5-dom php5-gd php5-gettext php5-ctype php5-mbstring php5-json # take the same version in SLE Prefer: -ruby2.1-rubygem-fast_gettext-1_1 -ruby2.1-rubygem-fast_gettext-1_2 Prefer: -ruby2.1-rubygem-web-console-2 Ignore: installation-images-openSUSE:cracklib-dict-full Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libgtk-3-0:adwaita-icon-theme 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: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit: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: systemd-mini:this-is-only-for-build-envs Ignore: libsystemd0-mini:this-is-only-for-build-envs Ignore: udev-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: jdk-bootstrap:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: avalon-logkit:servlet 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: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding 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 # 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) Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel Prefer: -java-1_5_0-gcj-compat-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif Substitute: java2-devel-packages java-1_7_0-openjdk-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 # until the builds of the packages are fixed... Substitute: yast2-theme-SLED Substitute: yast2-theme-SLE 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: ppc64le -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: armv6l -fmessage-length=0 -grecord-gcc-switches Optflags: armv6hl -fmessage-length=0 -grecord-gcc-switches Optflags: armv7l -fmessage-length=0 -grecord-gcc-switches Optflags: armv7hl -fmessage-length=0 -grecord-gcc-switches Optflags: aarch64 -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 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %ifarch s390x %define disable_32bit 1 %define tuneflag zEC12 %define archflag zEC12 Macros: %disable_32bit 1 %tuneflag zEC12 %archflag zEC12 :Macros %endif %define leap_version 420300 %define sle_version 120300 %define suse_version 1315 %define is_opensuse 1 Macros: %sle_version 120300 %suse_version 1315 %is_opensuse 1 :Macros %define _without_mono 1 %define _without_wayland 1 %define _without_vlc 1 %define _without_compat_libs 1 %define _with_ruby21 1 %define rb_default_ruby ruby21 %define rb_default_ruby_suffix ruby2.1 %define rb_default_ruby_abi ruby:2.1.0 %define rb_build_ruby_abis ruby:2.1.0 %define rb_build_versions ruby21 #Prefer: rubygem(%{rb_default_ruby_abi}:gem2rpm) Prefer: %{rb_default_ruby_suffix}-rubygem-gem2rpm Prefer: %{rb_default_ruby_suffix}-rubygem-rack Macros: %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 %_without_mono 1 %_without_vlc 1 %_without_compat_libs 1 %_with_ruby21 1 %rb_default_ruby ruby21 %rb_default_ruby_suffix ruby2.1 %rb_default_ruby_abi ruby:2.1.0 %rb_build_ruby_abis ruby:2.1.0 %rb_build_versions ruby21 %rubygemsruby21() rubygem(ruby:2.1.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby21() %{expand:%%{rubygemsx%*}} # %rubygemsruby22() rubygem(ruby:2.2.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby22() %{expand:%%{rubygemsx%*}} # %rubygem() %{expand:%%{rubygems%rb_build_versions STOP %*}} %rubygemsSTOP() %nil %rubygemsxSTOP() %{expand:%%rubygemsxxSTOP -a %*} %rubygemsxxSTOP(a:) %{-a*}) %* # %rubyruby21() ruby2.1 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby21() %{expand:%%{rubyx%*}} # %rubyruby22() ruby2.2 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby22() %{expand:%%{rubyx%*}} # %rubySTOP() %nil %rubyxSTOP() %* # %ruby() %{expand:%%{ruby%rb_build_versions STOP %*}} # %rubydevelruby21() ruby2.1-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby21() %{expand:%%{rubydevelx%*}} # %rubydevelruby22() ruby2.2-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby22() %{expand:%%{rubydevelx%*}} # %rubydevel() %{expand:%%{rubydevel%rb_build_versions STOP %*}} # %rubydevelSTOP() %nil %rubydevelxSTOP() %* %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver_libasan0 48 %product_lifiullbs_gcc_ver_libgcj_bc1 48 %product_libs_gcc_ver_libobjc4 48 %product_libs_gcc_ver 5 %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} obs-build-20210120/configs/sl8.1.conf000066400000000000000000000176031400202264700167730ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash db devs diffutils filesystem Preinstall: fileutils fillup glibc grep libgcc libxcrypt m4 ncurses Preinstall: pam permissions readline rpm sed sh-utils shadow tar Preinstall: textutils Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 cracklib db gcc gdbm gettext Required: glibc libtool ncurses pam perl rpm zlib Support: bind9-utils bison cpio cpp cyrus-sasl e2fsprogs file Support: findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip kbd less libstdc++ make man mktemp modutils Support: ncurses-devel net-tools netcfg pam-devel pam-modules Support: patch ps rcs sendmail strace syslogd sysvinit texinfo Support: timezone unzip util-linux vim zlib-devel Keep: binutils bzip2 cpp cracklib file findutils fpk gawk gcc Keep: gcc-c++ gdbm glibc-devel glibc-locale gnat gnat-runtime Keep: gzip libstdc++ make mktemp pam-devel pam-modules patch perl Keep: popt rcs shlibs5 timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ia64 Substitute: java2-devel-packages java2 java2-jre jpackage-utils %else %ifarch ia64 s390 Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils %endif %ifarch s390x Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils glibc-32bit baselibs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit baselibs-32bit %else %ifarch ppc Substitute: glibc-devel-32bit glibc-devel-64bit glibc-64bit %else Substitute: glibc-devel-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default kernel-sn2 kernel-64k-pagesize %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-pmac64_32bit kernel-power3 kernel-smp kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq aaa_base %fillup_prereq fillup fileutils %install_info_prereq texinfo %suse_version 810 %sles_version 0 %ul_version 0 %_vendor suse obs-build-20210120/configs/sl8.2.conf000066400000000000000000000177111400202264700167740ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash coreutils db devs diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libxcrypt m4 ncurses pam permissions readline Preinstall: rpm sed shadow tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 cracklib db gcc gdbm gettext Required: glibc libtool ncurses pam perl rpm zlib Support: bind9-utils bison cpio cpp cvs cyrus-sasl2 e2fsprogs Support: file findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip info kbd less libstdc++ make man mktemp Support: modutils ncurses-devel net-tools netcfg pam-devel pam-modules Support: patch ps rcs sendmail strace syslogd sysvinit texinfo Support: timezone unzip util-linux vim zlib-devel Keep: binutils bzip2 cpp cracklib file findutils fpk gawk gcc Keep: gcc-c++ gdbm glibc-devel glibc-locale gnat gnat-runtime Keep: gzip libstdc++ make mktemp pam-devel pam-modules patch perl Keep: popt rcs shlibs5 timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ia64 Substitute: java2-devel-packages java2 java2-jre jpackage-utils %else %ifarch ia64 s390 Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils %endif %ifarch s390x Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils glibc-32bit baselibs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc Substitute: glibc-devel-32bit glibc-devel-64bit glibc-64bit %else Substitute: glibc-devel-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default kernel-sn2 kernel-64k-pagesize %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-pmac64_32bit kernel-power3 kernel-smp kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq insserv %fillup_prereq fillup fileutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 820 %sles_version 0 %ul_version 0 %jds_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl9.0.conf000066400000000000000000000177571400202264700170050ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash bzip2 coreutils db devs diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libxcrypt m4 ncurses pam permissions popt readline Preinstall: rpm sed shadow tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 cracklib db gcc gdbm gettext Required: glibc libtool ncurses perl rpm zlib Support: bind-utils bison cpio cpp cvs cyrus-sasl e2fsprogs file Support: findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip info kbd less libstdc++ make man mktemp Support: modutils ncurses-devel net-tools netcfg openldap2-client Support: openssl pam-devel pam-modules patch ps rcs sendmail strace Support: syslogd sysvinit texinfo timezone unzip util-linux vim Support: zlib-devel Keep: binutils cpp cracklib file findutils fpk gawk gcc gcc-c++ Keep: gdbm glibc-devel glibc-locale gnat gnat-runtime gzip libstdc++ Keep: libunwind make mktemp pam-devel pam-modules patch perl rcs Keep: shlibs5 timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ia64 Substitute: java2-devel-packages java2 java2-jre jpackage-utils %else %ifarch ia64 s390 Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils %endif %ifarch s390x Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils glibc-32bit baselibs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc Substitute: glibc-devel-32bit glibc-devel-64bit glibc-64bit %else Substitute: glibc-devel-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default kernel-sn2 kernel-64k-pagesize %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-pmac64_32bit kernel-power3 kernel-smp kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq insserv %fillup_prereq fillup fileutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 900 %sles_version 0 %ul_version 0 %jds_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl9.1.conf000066400000000000000000000202111400202264700167610ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash bzip2 coreutils db devs diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libselinux libxcrypt m4 ncurses pam permissions Preinstall: popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 db gcc gdbm gettext glibc Required: libtool ncurses perl rpm zlib Support: bind-utils bison cpio cpp cracklib cvs cyrus-sasl e2fsprogs Support: file findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip info kbd less libstdc++ make man mktemp Support: module-init-tools ncurses-devel net-tools netcfg Support: openldap2-client openssl pam-modules patch procinfo procps Support: psmisc rcs strace syslogd sysvinit tcpd texinfo timezone Support: unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-c++ gdbm Keep: glibc-devel glibc-locale gnat gnat-runtime gzip libstdc++ Keep: libunwind make mktemp pam-devel pam-modules patch perl rcs Keep: shlibs5 timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java2 java2-jre jpackage-utils %else %ifarch ia64 Substitute: java2-devel-packages IBMJava2-JRE BEAJava2-JRE BEAJava2-SDK jpackage-utils %endif %ifarch s390 ppc Substitute: java2-devel-packages IBMJava2-JRE IBMJava2-SDK jpackage-utils %endif %ifarch s390x Substitute: java2-devel-packages IBMJava2-JRE IBMJava2-SDK jpackage-utils XFree86-libs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc Substitute: glibc-devel-32bit glibc-devel-64bit glibc-64bit %else Substitute: glibc-devel-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default kernel-sn2 kernel-64k-pagesize %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-pmac64_32bit kernel-power3 kernel-smp kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq insserv %fillup_prereq fillup fileutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 910 %sles_version 0 %ul_version 0 %jds_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl9.2.conf000066400000000000000000000177121400202264700167760ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash bzip2 coreutils db devs diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libnscd libselinux libxcrypt m4 ncurses pam Preinstall: permissions popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 db gcc gdbm gettext glibc Required: libtool ncurses perl rpm zlib Support: bind-utils bison cpio cpp cracklib cvs cyrus-sasl e2fsprogs Support: file findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip info less libstdc++ libzio make man mktemp Support: module-init-tools ncurses-devel net-tools netcfg Support: openldap2-client openssl pam-modules patch procinfo procps Support: psmisc rcs strace syslogd sysvinit tcpd texinfo timezone Support: unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-c++ gdbm Keep: glibc-devel glibc-locale gnat gnat-runtime gzip libstdc++ Keep: libunwind libzio make mktemp pam-devel pam-modules patch Keep: perl rcs timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel jpackage-utils update-alternatives %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel jpackage-utils update-alternatives %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit jpackage-utils update-alternatives %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq insserv sed devs %fillup_prereq fillup coreutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 920 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sl9.3.conf000066400000000000000000000177401400202264700170000ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash bzip2 coreutils db devs diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libnscd libselinux libxcrypt m4 ncurses pam Preinstall: permissions popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 db gcc gdbm gettext glibc Required: libtool ncurses perl rpm zlib Support: bind-utils bison cpio cpp cracklib cvs cyrus-sasl e2fsprogs Support: file findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip info klogd less libstdc++ libzio make Support: man mktemp module-init-tools ncurses-devel net-tools Support: netcfg openldap2-client openssl pam-modules patch procinfo Support: procps psmisc rcs strace syslogd sysvinit tcpd texinfo Support: timezone unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-c++ gdbm Keep: glibc-devel glibc-locale gnat gnat-runtime gzip libstdc++ Keep: libunwind libunwind-devel libzio make mktemp pam-devel pam-modules Keep: patch perl rcs timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel jpackage-utils update-alternatives %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel jpackage-utils update-alternatives %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit jpackage-utils update-alternatives %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq insserv sed devs %fillup_prereq fillup coreutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 930 %sles_version 0 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sle12.0.conf000077700000000000000000000000001400202264700211562sles12.confustar00rootroot00000000000000obs-build-20210120/configs/sle12.1.conf000077700000000000000000000000001400202264700211572sles12.confustar00rootroot00000000000000obs-build-20210120/configs/sle12.2.conf000077700000000000000000000000001400202264700211602sles12.confustar00rootroot00000000000000obs-build-20210120/configs/sle12.3.conf000077700000000000000000000000001400202264700211612sles12.confustar00rootroot00000000000000obs-build-20210120/configs/sle12.4.conf000077700000000000000000000000001400202264700211622sles12.confustar00rootroot00000000000000obs-build-20210120/configs/sle12.5.conf000077700000000000000000000000001400202264700211632sles12.confustar00rootroot00000000000000obs-build-20210120/configs/sle15.0.conf000077700000000000000000000000001400202264700211642sles15.confustar00rootroot00000000000000obs-build-20210120/configs/sle15.1.conf000077700000000000000000000000001400202264700211652sles15.confustar00rootroot00000000000000obs-build-20210120/configs/sle15.2.conf000077700000000000000000000000001400202264700216132sles15sp2.confustar00rootroot00000000000000obs-build-20210120/configs/sle15.3.conf000077700000000000000000000000001400202264700216152sles15sp3.confustar00rootroot00000000000000obs-build-20210120/configs/sles10.conf000066400000000000000000000203001400202264700172210ustar00rootroot00000000000000Preinstall: aaa_base acl attr bash bzip2 coreutils db diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libnscd libxcrypt m4 ncurses pam Preinstall: permissions popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 db gcc gdbm gettext glibc Required: libtool ncurses perl rpm zlib Support: bind-libs bind-utils bison cpio cpp cracklib cvs cyrus-sasl Support: e2fsprogs file findutils flex gawk gdbm-devel gettext-devel Support: glibc-devel glibc-locale gpm groff gzip info klogd less Support: libcom_err libstdc++ libzio make man mktemp module-init-tools Support: ncurses-devel net-tools netcfg openldap2-client openssl Support: pam-modules patch procinfo procps psmisc rcs strace sysvinit Support: tcpd texinfo timezone unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada libstdc++ libunwind Keep: libunwind-devel libzio make mktemp pam-devel pam-modules Keep: patch perl rcs timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: novell-NLDAPsdk zaptel-kmp-default Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel update-alternatives %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel update-alternatives %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit update-alternatives %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um kernel-xen kernel-kdump %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 kernel-kdump %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq kernel-source kernel-syms %kernel_module_package_buildreqs kernel-source kernel-syms %suse_version 1010 %sles_version 10 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sles11.conf000077700000000000000000000000001400202264700210102sl11.1.confustar00rootroot00000000000000obs-build-20210120/configs/sles11sp2.conf000066400000000000000000000447271400202264700176720ustar00rootroot00000000000000 %define gcc_version 43 Preinstall: aaa_base acl attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libbz2-1 libgcc%{gcc_version} libxcrypt m4 libncurses5 pam Preinstall: permissions popt libreadline5 rpm sed tar zlib libselinux1 Preinstall: liblzma5 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux perl-base libdb-4_5 libblkid1 libuuid1 libsepol1 Keep: libvolume_id Required: autoconf automake binutils bzip2 gcc gcc%{gcc_version} Required: gettext-runtime glibc libtool perl rpm zlib libmpfr1 gmp Required: libncurses5 Support: audit-libs cpio cpp cpp%{gcc_version} cracklib cvs Support: file findutils gawk gdbm gettext-tools Support: glibc-devel glibc-locale groff gzip info less Support: libbz2-devel libdb-4_5 Support: libstdc++%{gcc_version} Support: libxcrypt libzio Support: linux-kernel-headers make man netcfg Support: net-tools pam-modules patch perl-base sysvinit Support: texinfo timezone util-linux login Support: libgomp43 libuuid1 psmisc Support: terminfo-base Support: build brp-check-suse post-build-checks rpmlint-Factory Keep: brp-check-suse %ifarch ia64 Support: libunwind libunwind-devel %endif FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/msgfmt gettext FileProvides: /usr/sbin/useradd pwdutils FileProvides: /usr/sbin/groupadd pwdutils FileProvides: /usr/sbin/update-alternatives update-alternatives FileProvides: /usr/bin/host bind-utils Keep: audit-libs binutils bzip2 cpio cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel glibc-locale gzip libada Keep: libunwind libunwind-devel libzio make pam-devel pam-modules Keep: patch perl-base perl rcs timezone gmp libmpfr1 Keep: cpp43 gcc43 gcc43-ada libstdc++43 Keep: cpp42 gcc42 gcc42-ada libstdc++42 Keep: cpp41 gcc41 gcc41-ada libstdc++41 Keep: java-1_6_0-openjdk java-1_6_0-openjdk-devel Prefer: -openSUSE-build-key Prefer: libreadline5 Prefer: libdb_java-4_5 libicu Prefer: cracklib-dict-small postfix Prefer: jta libpng fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-openSUSE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript-library Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default Prefer: libstdc++%{gcc_version} libgcc%{gcc_version} Prefer: libstdc++%{gcc_version}-32bit libstdc++%{gcc_version}-64bit Prefer: libstroke Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-openSUSE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: xfce4-desktop:xfce4-desktop-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: OpenOffice_org:OpenOffice_org-branding-upstream Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner190-32bit Prefer: mozilla-xulrunner190-devel:mozilla-xulrunner190 Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: ant:xerces-j2 Prefer: -bundle-lang-kde-de -bundle-lang-kde-en -bundle-lang-kde-es Prefer: -bundle-lang-kde-fr -bundle-lang-kde-pt 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 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-common-es -bundle-lang-common-de -bundle-lang-common-fr Prefer: -bundle-lang-common-pt -bundle-lang-common-en 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: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: libsepol1 Prefer: libexpat1 uuid-runtime Prefer: -x11-input-synaptics -kde4-marble Prefer: libdlm3 Prefer: squid Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc%{gcc_version} libgcc%{gcc_version}-32bit libgcc%{gcc_version}-64bit Prefer: libgcc%{gcc_version}-x86 libffi%{gcc_version} libgcj_bc%{gcc_version} Prefer: libgomp%{gcc_version} libgomp%{gcc_version}-32bit libgomp%{gcc_version}-64bit Prefer: libmudflap%{gcc_version} libmudflap%{gcc_version}-32bit libmudflap%{gcc_version}-64bit Prefer: libobjc%{gcc_version} libgfortran%{gcc_version} Prefer: -libnetpbm -libcdio7-mini -libiso9660-5-mini Prefer: -libcdio-mini -faac-mini Prefer: -seamonkey Prefer: -libdb-4_4-devel -libevoldap-2_4-2 Conflict: ghostscript-library:ghostscript-mini Conflict: ghostscript-fonts-std:ghostscript-mini Prefer: -libopenal0-soft -openal-soft -lsb-buildenv Prefer: -libevent Prefer: gnu-crypto libusb-compat-devel Prefer: libusb-0_1-4 Prefer: CASA_auth_token_svc:xerces-j2 Prefer: OpenOffice_org:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -java-1_7_0-icedtea-devel -libiniparser -loudmouth -libkonq4 -libnetcdf-4 Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kdm:kdm-branding-upstream Prefer: libica-2_0_2 Prefer: libxklavier12:libxklavier Prefer: webyast-base-ui:webyast-base-ui-branding-default Prefer: libpacemaker-devel:libglue-devel Prefer: libpacemaker3:libglue2 Prefer: pacemaker:resource-agents # have choice for jaxen-bootstrap >= 1.1 needed by dom4j: jaxen-bootstrap jaxen Prefer: -jaxen-bootstrap # have choice for jaf >= 1.0.2 Prefer: geronimo-jaf-1_0_2-api # have choice for javamail_1.3.1_api Prefer: excalibur-avalon-logkit:geronimo-javamail-1_3_1-api # have choice for jms_1.1_api Prefer: excalibur-avalon-logkit:geronimo-jms-1_1-api # have choice for jacc: geronimo-j2ee-1_4-apis geronimo-jacc-1_0-api Prefer: geronimo-jacc-1_0-api # have choice for antlr >= 2.7.1 needed by checkstyle: antlr antlr-bootstrap Prefer: checkstyle:antlr #have choice for antlr >= 2.7.6 needed by hibernate3: antlr antlr-bootstrap Prefer: hibernate3:antlr #have choice for antlr needed by jpam: antlr antlr-bootstrap Prefer: jpam:antlr #have choice for spacewalk-java-jdbc needed by spacewalk-java: spacewalk-java-postgresql spacewalk-java-oracle Prefer: spacewalk-java:spacewalk-java-oracle #have choice for jsp: geronimo-j2ee-1_4-apis geronimo-jsp-2_1-api geronimo-jsp-2_0-api Prefer: geronimo-jsp-2_0-api #have choice for jta: geronimo-j2ee-1_4-apis geronimo-jta-1_1-api java-1_5_0-gcj-compat Prefer: geronimo-jta-1_1-api #have choice for cglib >= 2.1.3 needed by jmock: cglib-nohook cglib Prefer: jmock:cglib #have choice for cglib >= 2.1.3 needed by hibernate3: cglib-nohook cglib Prefer: hibernate3:cglib # not wanted Prefer: -gnu-jaf # openoffice -> libreoffice Prefer: libreoffice:libreoffice-branding-upstream Prefer: libreoffice:xerces-j2 Prefer: -libreoffice Prefer: libreoffice:libreoffice-calc Prefer: libreoffice:mono-core Prefer: libservicelog:libservicelog-1_1-1 Ignore: openSUSE-release:openSUSE-release-ftp,openSUSE-release-dvd5,openSUSE-release-dvd9,openSUSE-release-livecdkde,openSUSE-release-livecdgnome Ignore: cracklib:cracklib-dict Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release,udev Ignore: gettext-tools:libgcj,libstdc++-devel,libgcj41,libstdc++41-devel,libgcj42,libstdc++42-devel Ignore: libgcj43,libstdc++43-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 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,pcre,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre 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-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 Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: libgcc:glibc-32bit Ignore: libgcc41:glibc-32bit Ignore: libgcc42:glibc-32bit Ignore: libgcc43:glibc-32bit Ignore: libgcc44:glibc-32bit Ignore: libgcc45: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: 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: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary Ignore: OpenOffice_org:OpenOffice_org-i18n 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils 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: phonon:phonon-backend Ignore: openwbem-devel Ignore: MozillaFirefox:MozillaFirefox-branding Ignore: yast2:yast2-branding Ignore: yast2-theme-SLE:yast2-branding Ignore: yast2-registration:yast2-registration-branding Ignore: compiz:compiz-branding Ignore: beagle-index:sled-release Ignore: kdebase4-runtime:kdebase4-runtime-branding Ignore: kdelibs4:kdelibs4-branding Ignore: spacewalk-check:zypp-plugin-spacewalk Ignore: libreoffice-de:myspell-german-dictionary Ignore: libreoffice:libreoffice-i18n Ignore: yast2-qt:yast2-branding %ifarch s390 s390x Ignore: yast2-all-packages:yast2-x11 %endif %ifnarch ia64 s390 s390x ppc ppc64 Prefer: java-1_6_0-openjdk java-1_6_0-openjdk-devel %endif %ifarch s390 s390x ppc ppc64 Prefer: java-1_6_0-ibm java-1_6_0-ibm-devel %endif %ifarch ia64 Prefer: java-1_6_0-bea java-1_6_0-bea-devel %endif Prefer: -java-1_5_0-gcj-compat-devel %if 0 Substitute: java2-devel-packages java-1_6_0-openjdk-devel %else %ifnarch ia64 s390 s390x ppc ppc64 Substitute: java2-devel-packages java-1_6_0-openjdk-devel %else %ifarch s390 s390x ppc ppc64 Substitute: java2-devel-packages java-1_6_0-ibm-devel unzip update-alternatives %endif %ifarch ia64 Substitute: java2-devel-packages java-1_6_0-bea-devel unzip update-alternatives %endif %endif %endif %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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 Substitute: kde4-kwin kwin Optflags: i586 -march=i586 -mtune=i686 -fmessage-length=0 Optflags: i686 -march=i686 -mtune=i686 -fmessage-length=0 Optflags: x86_64 -fmessage-length=0 Optflags: ppc -fmessage-length=0 Optflags: ppc64 -fmessage-length=0 Optflags: ia64 -fmessage-length=0 Optflags: s390 -fmessage-length=0 Optflags: s390x -fmessage-length=0 Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %define suse_version 1110 %define sles_version 11 Macros: %insserv_prereq insserv sed %fillup_prereq fillup coreutils grep diffutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %kernel_module_package_buildreq module-init-tools kernel-syms %kernel_module_package_buildreqs module-init-tools kernel-syms %suse_version 1110 %sles_version 11 %ul_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/sles12.conf000066400000000000000000000620141400202264700172330ustar00rootroot00000000000000%define gcc_version 48 Patterntype: rpm-md ymp Substitute: kiwi-packagemanager:instsource kiwi-instsource cdrkit-cdrtools-compat syslinux dosfstools kiwi-instsource-plugins-SLE-12 Conflict: kiwi:libudev-mini1 Conflict: kiwi:systemd-mini Conflict: libudev1:udev-mini Conflict: udev:udev-mini Conflict: sles-release:dummy-release FileProvides: /usr/sbin/groupadd shadow FileProvides: /usr/sbin/useradd shadow FileProvides: /sbin/netconfig sysconfig-netconfig FileProvides: /usr/bin/docbook2man docbook-utils FileProvides: /usr/bin/mkisofs cdrkit-cdrtools-compat FileProvides: /usr/sbin/lockdev lockdev FileProvides: /bin/logger util-linux-systemd Preinstall: aaa_base attr bash coreutils diffutils Preinstall: filesystem fillup glibc grep Preinstall: libbz2-1 libgcc_s1 m4 libncurses5 pam Preinstall: permissions libreadline6 rpm sed tar libz1 libselinux1 Preinstall: liblzma5 libcap2 libacl1 libattr1 Preinstall: libpopt0 libelf1 liblua5_1 Preinstall: libpcre1 libsmartcols1 Runscripts: aaa_base Order: libopenssl0_9_8:openssl-certs VMinstall: util-linux libmount1 perl-base libdb-4_8 libsepol1 libblkid1 libuuid1 net-tools VMInstall: kernel-obs-build %ifarch DISABLED_aarch64 Preinstall: qemu-linux-user Runscripts: qemu-linux-user Hostarch: x86_64 Macros: %qemu_user_space_build 1 :Macros %endif Required: rpm-build Support: pam-modules # the basic stuff Support: perl build-mkbaselibs Support: brp-check-suse post-build-checks rpmlint-Factory Prefer: libblkid1-mini libuuid1-mini libmount1-mini libsmartcols1-mini libdb-4_8-devel Prefer: krb5-mini krb5-mini-devel Conflict: krb5-devel:krb5-mini Conflict: krb5:krb5-mini-devel Prefer: libreadline5 Prefer: libdb_java-4_8 libicu Prefer: cracklib-dict-small postfix Prefer: jta fam mozilla mozilla-nss Prefer: unixODBC libsoup glitz Prefer: gnome-panel desktop-data-SLE gnome2-SuSE Prefer: mono-nunit gecko-sharp2 Prefer: apache2-prefork Mesa openmotif-libs ghostscript-mini ghostscript Prefer: gtk-sharp2 glib-sharp2 glade-sharp2 Prefer: libzypp-zmd-backend novell-NLDAPsdk zaptel-kmp-default Prefer: hbedv-dazuko-kmp-default dazuko-kmp-default vmware-wkstnmods-kmp-default Prefer: virtualbox-kmp-default virtualbox-host-kmp-default Prefer: libstdc++6 libgcc_s1 libquadmath0 Prefer: libstdc++6-32bit libstdc++6-64bit Prefer: libstdc++6-x86 Prefer: libstdc++6-gcc%{gcc_version} libgcc_s1-gcc%{gcc_version} libgomp1-gcc%{gcc_version} %ifarch s390x Prefer: -libstdc++41 %endif Prefer: libstroke Prefer: syslog-service syslogd Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 inkscape:gtkmm24 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: gjdoc:antlr-bootstrap Prefer: tomboy:gconf-sharp2 tomboy:gnome-sharp2 Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: glitz-32bit:Mesa-32bit Prefer: poppler-tools Prefer: libjpeg8-devel libjpeg-turbo Prefer: banshee:banshee-engine-gst helix-banshee:helix-banshee-engine-gst Prefer: banshee-1:banshee-1-client-classic Prefer: libfam0 Prefer: java-1_5_0-ibm:java-1_5_0-ibm-alsa Prefer: java-1_5_0-ibm:java-1_5_0-ibm-fonts Prefer: java-1_6_0-ibm:java-1_6_0-ibm-fonts Prefer: microcode_ctl:kernel-default Prefer: notification-daemon Prefer: pkg-config gtk-doc wlan-kmp-default lua-libs lua-devel Prefer: gnu-jaf classpathx-mail avahi-compat-mDNSResponder yast2-control-center-qt Prefer: vim-normal myspell-american wine Prefer: eclipse-platform eclipse-scripts Prefer: yast2-theme-SLE Prefer: amarok:amarok-xine Prefer: kdenetwork3-vnc:tightvnc Prefer: libgweather0 jessie ndesk-dbus ndesk-dbus-glib tomcat6-jsp-2_1-api tomcat6-servlet-2_5-api Prefer: icewm-lite Prefer: patterns-openSUSE-GNOME-cd:banshee Prefer: yast2-ncurses-pkg Prefer: monodevelop: mono-addins Prefer: ant-trax:saxon Prefer: gnome-session:gnome-session-branding-openSUSE Prefer: gnome-session:gconf2-branding-openSUSE Prefer: yast2-qt:yast2-qt-branding-openSUSE Prefer: bundle-lang-gnome:gnome-session-branding-openSUSE Prefer: fcitx:fcitx-branding-openSUSE Prefer: xfce4-notifyd:xfce4-notifyd-branding-upstream Prefer: exo-data:exo-branding-upstream Prefer: xfce4-settings:xfce4-settings-branding-upstream Prefer: xfdesktop:xfdesktop-branding-upstream Prefer: texlive-xmltex texlive-tools texlive-jadetex Prefer: mono-web:mono-data-sqlite Prefer: gnome-games:gnuchess Prefer: glchess:gnuchess Prefer: libreoffice:libreoffice-branding-upstream Prefer: yast2-branding-openSUSE Prefer: gimp:gimp-branding-upstream Prefer: libesd-devel:esound Prefer: libesd0:esound-daemon Prefer: package-lists-openSUSE-KDE-cd: esound-daemon Prefer: glib2:glib2-branding-upstream Prefer: libgio-2_0-0:gio-branding-upstream Prefer: libglib-2_0-0:glib2-branding-upstream Prefer: kdelibs4:kdelibs4-branding-upstream Prefer: kdebase4-workspace:kdebase4-workspace-branding-upstream Prefer: kdelibs4-branding:kdelibs4-branding-upstream Prefer: PackageKit:PackageKit-branding-upstream Prefer: lightdm-gtk-greeter:lightdm-gtk-greeter-branding-upstream Prefer: mysql-connector-java:java-1_5_0-gcj-compat Prefer: -geronimo-jta-1_0_1B-api -geronimo-jms-1_1-api -geronimo-el-1_0-api Prefer: rhino:xmlbeans-mini Prefer: ghostscript-devel:ghostscript-library Prefer: gdm:gdm-branding-upstream Prefer: rpcbind log4j-mini eclipse-source Prefer: mx4j:log4j-mini Prefer: podsleuth:sg3_utils Prefer: libcdio_cdda0 libcdio_paranoia0 Prefer: mozilla-xulrunner191 Prefer: mozilla-xulrunner191-32bit Prefer: boo tog-pegasus Prefer: kde4-kupdateapplet:kde4-kupdateapplet-zypp Prefer: kdebase4-workspace:kdebase4-workspace-ksysguardd Prefer: ant:xerces-j2 Prefer: dhcp-client:dhcp Prefer: dummy-release # 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: -zmd -libreoffice -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -python-setuptools Prefer: -kdenetwork3-InstantMessenger Prefer: -icc-profiles Prefer: libsocialweb:libsocialweb-branding-upstream Prefer: gnome-panel:gnome-panel-branding-upstream Prefer: vala Prefer: wallpaper-branding-SLE Prefer: -crimson 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: geronimo-servlet-2_4-api Prefer: -libhdf5-0-openmpi -libhdf5_hl0-openmpi -libhdf5_hl8-openmpi -libhdf5-8-openmpi Prefer: typelib-1_0-Gst-0_10 gstreamer-0_10-utils-unversioned gstreamer-0_10-utils typelib-1_0-GstInterfaces-0_10 # prefer the small systemd for building Prefer: libudev-mini-devel libudev-mini1 udev-debuginfo libudev1-debuginfo Prefer: systemd-mini systemd-mini-devel Prefer: systemd-mini-devel:systemd-mini Prefer: udev-mini libcom_err2-mini libext2fs2-mini Prefer: libudev1:udev 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 Prefer: postgresql postgresql-server Prefer: -unzip-rcc Prefer: kernel-default-devel Prefer: wxWidgets-2_9-devel Prefer: -NX -xaw3dd -db43 Prefer: -xerces-j2-xml-resolver -xerces-j2-xml-apis Prefer: -vmware-player Prefer: libgcc_s1 libgcc_s1-32bit libgcc_s1-64bit Prefer: libffi%{gcc_version} libffi%{gcc_version}-devel Prefer: libgcc_s1-x86 libffi4 libgcj_bc1 Prefer: libffi4-32bit libffi4-64bit 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: CASA_auth_token_svc:xerces-j2 Prefer: libreoffice:xerces-j2 Prefer: k3b:libdvdread4 Prefer: glibc-devel Prefer: -libpcap -libiniparser -loudmouth -libkonq4 -libnetcdf-4 -java-1_7_0-openjdk-javadoc -java-1_7_0-icedtea-javadoc Prefer: -java-1_7_0-icedtea-devel Prefer: NetworkManager:dhcp-client Prefer: kdebase3-SuSE:kdebase3 Prefer: kde4-kdm:kde4-kdm-branding-upstream Prefer: kdm:kdm-branding-upstream Prefer: pcre-tools Prefer: libpopt0 Prefer: -apache2-mod_perl -otrs -qa_apache_testsuite -ctcs2 Prefer: libgnome-keyring-devel 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: perl-Mail-SPF:perl-Error libldb0 -audit-libs mysql-community-server mysql-community-server-client Prefer: xml-commons-resolver12 xml-commons-jaxp-1.3-apis Prefer: xmlgraphics-fop:xerces-j2 Prefer: libxfce4ui:libxfce4ui-branding-upstream Prefer: libgarcon-1-0:libgarcon-branding-upstream Prefer: libgarcon-data:libgarcon-branding-upstream Prefer: libexo-1-0:libexo-1-0-branding-upstream Prefer: gnome-shell:mozilla-js20 Prefer: cogl-devel Prefer: -perl-XML-SAX Prefer: gettext-tools-mini gettext-runtime-mini Prefer: mozilla-nss-certs Prefer: phonon-backend-gstreamer-0_10 Prefer: dracut Prefer: kmod-compat Prefer: typelib-1_0-Wnck-3_0 Prefer: -cups154-libs -cups154-client -cups154 Ignore: java-1_7_0-openjdk:mozilla-nss Ignore: java-1_7_0-openjdk:java-ca-certificates 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: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils 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: gtk2:libpng,libtiff 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: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug 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: yui_backend Ignore: yast2-x11:sax2-libsax-perl Ignore: yast2-network:yast2-inetd Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs 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: ConsoleKit: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: systemd-mini:this-is-only-for-build-envs Ignore: udev-mini:this-is-only-for-build-envs Ignore: libudev-mini1:this-is-only-for-build-envs Ignore: polkit:ConsoleKit Ignore: logrotate:cron Ignore: texlive-filesystem:cron Ignore: xinit:xterm Ignore: xdm:xterm Ignore: gnome-control-center:gnome-themes-accessibility Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: gawk:info Ignore: grep:info Ignore: groff:info Ignore: m4:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: util-linux-mini:info Ignore: gettext-tools:info Ignore: gettext-runtime:info Ignore: libgcrypt-devel:info Ignore: binutils:info Ignore: gzip:info Ignore: make:info Ignore: bison:info Ignore: flex:info Ignore: help2man:info 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: avalon-logkit:servlet 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: zmd: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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Ignore: NetworkManager:NetworkManager-client Ignore: libbeagle:beagle 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: hal:pm-utils Ignore: MozillaThunderbird:pinentry-dialog Ignore: seamonkey:pinentry-dialog Ignore: pinentry:pinentry-dialog Ignore: gpg2:gpg2-lang Ignore: util-linux:util-linux-lang Ignore: util-linux-mini:util-linux-mini-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: pulseaudio:kernel Ignore: transmission-common:transmission-ui Ignore: mutter-moblin:moblin-branding Ignore: sysvinit-tools:mkinitrd cifs-utils:mkinitrd Ignore: mkinitrd:sbin_init Ignore: opensc:pinentry Ignore: gpg2:pinentry Ignore: NetworkManager:dhcp Ignore: NetworkManager:iproute2 Ignore: sysconfig:dbus-1 Ignore: sysconfig:procps Ignore: sysconfig:iproute2 Ignore: sysconfig-network:iproute2 Ignore: sysconfig:tunctl # 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: sles-release:product_flavor(SLES) Ignore: autoyast2:yast2-schema Ignore: libgio-2_0-0:dbus-1-x11 Ignore: weather-wallpaper:inkscape Ignore: libgamin-1-0:gamin-server Ignore: libfam0-gamin:gamin-server Ignore: avahi:sysvinit(network) Ignore: sysconfig:sysvinit(network) Prefer: java-1_7_0-openjdk java-1_7_0-openjdk-devel Prefer: -java-1_5_0-gcj-compat-devel Prefer: -java-1_6_0-ibm-devel %ifarch %ix86 x86_64 Prefer: -java-1_5_0-ibm-devel %endif Substitute: java2-devel-packages java-1_7_0-openjdk-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 -fstack-protector Optflags: i686 -march=i686 -mtune=generic -fomit-frame-pointer -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: x86_64 -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: ppc64le -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: s390 -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: s390x -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: aarch64 -fmessage-length=0 -grecord-gcc-switches -fstack-protector Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -funwind-tables -fasynchronous-unwind-tables %define suse_version 1315 %define _without_mono 1 %define _without_vlc 1 %define _without_compat_libs 1 %define rb_default_ruby ruby21 %define rb_default_ruby_suffix ruby2.1 %define rb_default_ruby_abi ruby:2.1.0 %define rb_build_ruby_abis ruby:2.1.0 %define rb_build_versions ruby21 #Prefer: rubygem(%{rb_default_ruby_abi}:gem2rpm) Prefer: %{rb_default_ruby_suffix}-rubygem-gem2rpm Macros: %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 %maintenance_vendor SUSE LLC %maintenance_distribution SUSE Linux Enterprise 12 %suse_version 1315 %sles_version 0 %ul_version 0 %do_profiling 1 %_without_mono 1 %_without_vlc 1 %_without_compat_libs 1 %rb_default_ruby ruby21 %rb_default_ruby_suffix ruby2.1 %rb_default_ruby_abi ruby:2.1.0 %rb_build_ruby_abis ruby:2.1.0 %rb_build_versions ruby21 %rubygemsruby21() rubygem(ruby:2.1.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby21() %{expand:%%{rubygemsx%*}} # %rubygemsruby22() rubygem(ruby:2.2.0:%{expand:%%rubygemsx%*} %{expand:%%{rubygems%*}} %rubygemsxruby22() %{expand:%%{rubygemsx%*}} # %rubygem() %{expand:%%{rubygems%rb_build_versions STOP %*}} %rubygemsSTOP() %nil %rubygemsxSTOP() %{expand:%%rubygemsxxSTOP -a %*} %rubygemsxxSTOP(a:) %{-a*}) %* # %rubyruby21() ruby2.1 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby21() %{expand:%%{rubyx%*}} # %rubyruby22() ruby2.2 %{expand:%%rubyx%*} %{expand:%%{ruby%*}} %rubyxruby22() %{expand:%%{rubyx%*}} # %rubySTOP() %nil %rubyxSTOP() %* # %ruby() %{expand:%%{ruby%rb_build_versions STOP %*}} # %rubydevelruby21() ruby2.1-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby21() %{expand:%%{rubydevelx%*}} # %rubydevelruby22() ruby2.2-devel %{expand:%%rubydevelx%*} %{expand:%%{rubydevel%*}} %rubydevelxruby22() %{expand:%%{rubydevelx%*}} # %rubydevel() %{expand:%%{rubydevel%rb_build_versions STOP %*}} # %rubydevelSTOP() %nil %rubydevelxSTOP() %* %_vendor suse # define which gcc package builds the system libraries %product_libs_gcc_ver 48 %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} obs-build-20210120/configs/sles15.conf000066400000000000000000001013611400202264700172350ustar00rootroot00000000000000 %define gcc_version 7 Substitute: kiwi python3-kiwi Substitute: kiwi-packagemanager:instsource product-builder-plugin-SLE_15 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 %define _without_mono 1 Macros: %_without_mono 1 :Macros Prefer: lua53 liblua5_3-5 lua53-devel libtolua++-5_3-devel Prefer: -liblua5_3 -liblua5_1 -liblua5_2 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 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 Required: rpm-build # Build all packages with -pie enabled Required: gcc-PIE # the basic stuff Support: perl 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 # Ring0 packages should not pull in 'info' - making the base VM smaller Ignore: binutils:info Ignore: bison:info Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: flex:info Ignore: gawk:info Ignore: gettext-runtime:info Ignore: gettext-tools:info Ignore: grep:info Ignore: groff:info Ignore: gzip:info Ignore: help2man:info Ignore: libgcrypt-devel:info Ignore: m4:info Ignore: make:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: which:info # 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 # 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 #Prefer: -openSUSE-build-key # Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) Prefer: postfix # Give the worker any default apache2-MPM for apache2- chosing 'prefork' (alternatives are -event and -worker, dep-wise they are equal) # 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 # do not used openmpi variant to build against netcdf Prefer: netcdf-devel # 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: 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 # python-scimpy: have choice for fftw-devel: fftw3-devel fftw3_3_3_6-gnu-hpc-devel fftw3_3_... 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: -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 # have choice for mysql-devel: libmariadb-devel libmysqlclient-devel # Prefer: libmariadb-devel Prefer: libmysqlclient-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 samba-client:cifs-utils 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 # actually a workaround for installation-images requiring # gettext-runtime-mini and getting conflict because systat # requires gettext (which is only provided by !-mini) Ignore: saptune:sysstat 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%*}} ### 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 :Macros Macros: %rb_build_ruby_abis ruby:2.5.0 %rb_build_versions ruby25 %_with_ruby25 1 :Macros %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 %define _with_ruby25 1 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 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 jaba 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 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 armv7l armv7hl Target: armv7hl-suse-linux %endif Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection %define suse_version 1500 %define sle_version 150000 %define is_susecaasp 1 %define is_susesap 1 Macros: %suse_version 1500 %sle_version 150000 %is_susecaasp 1 %is_susesap 1 %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 obs-build-20210120/configs/sles15sp2.conf000066400000000000000000001017121400202264700176620ustar00rootroot00000000000000 %define gcc_version 7 Substitute: kiwi python3-kiwi Substitute: kiwi-packagemanager:instsource product-builder-plugin-SLE_15 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 %define _without_mono 1 Macros: %_without_mono 1 :Macros Prefer: lua53 liblua5_3-5 lua53-devel libtolua++-5_3-devel Prefer: -liblua5_3 -liblua5_1 -liblua5_2 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 # Needed with latest rpm (Use libgcrypt as crypto library for SP2 [jsc#SLE-9552]) Preinstall: libgcrypt20 libgpg-error0 # Needed with latest rpm (Added zstd support in SLE-15-SP2 [bsc#1162668]) Preinstall: libzstd1 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 Required: rpm-build # Build all packages with -pie enabled Required: gcc-PIE # the basic stuff Support: perl 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 # Ring0 packages should not pull in 'info' - making the base VM smaller Ignore: binutils:info Ignore: bison:info Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: flex:info Ignore: gawk:info Ignore: gettext-runtime:info Ignore: gettext-tools:info Ignore: grep:info Ignore: groff:info Ignore: gzip:info Ignore: help2man:info Ignore: libgcrypt-devel:info Ignore: m4:info Ignore: make:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: which:info # 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 # 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 #Prefer: -openSUSE-build-key # Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) Prefer: postfix # Give the worker any default apache2-MPM for apache2- chosing 'prefork' (alternatives are -event and -worker, dep-wise they are equal) # 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 # do not used openmpi variant to build against netcdf Prefer: netcdf-devel # 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: 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 # python-scimpy: have choice for fftw-devel: fftw3-devel fftw3_3_3_6-gnu-hpc-devel fftw3_3_... 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: -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 # have choice for mysql-devel: libmariadb-devel libmysqlclient-devel # Prefer: libmariadb-devel Prefer: libmysqlclient-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 samba-client:cifs-utils 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 # actually a workaround for installation-images requiring # gettext-runtime-mini and getting conflict because systat # requires gettext (which is only provided by !-mini) Ignore: saptune:sysstat 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%*}} ### 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 :Macros Macros: %rb_build_ruby_abis ruby:2.5.0 %rb_build_versions ruby25 %_with_ruby25 1 :Macros %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 %define _with_ruby25 1 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 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 jaba 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 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 armv7l armv7hl Target: armv7hl-suse-linux %endif Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection %define suse_version 1500 %define sle_version 150200 %define is_susecaasp 1 %define is_susesap 1 Macros: %suse_version 1500 %sle_version 150200 %is_susecaasp 1 %is_susesap 1 %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 obs-build-20210120/configs/sles15sp3.conf000066400000000000000000001017121400202264700176630ustar00rootroot00000000000000 %define gcc_version 7 Substitute: kiwi python3-kiwi Substitute: kiwi-packagemanager:instsource product-builder-plugin-SLE_15 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 %define _without_mono 1 Macros: %_without_mono 1 :Macros Prefer: lua53 liblua5_3-5 lua53-devel libtolua++-5_3-devel Prefer: -liblua5_3 -liblua5_1 -liblua5_2 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 # Needed with latest rpm (Use libgcrypt as crypto library for SP2 [jsc#SLE-9552]) Preinstall: libgcrypt20 libgpg-error0 # Needed with latest rpm (Added zstd support in SLE-15-SP2 [bsc#1162668]) Preinstall: libzstd1 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 Required: rpm-build # Build all packages with -pie enabled Required: gcc-PIE # the basic stuff Support: perl 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 # Ring0 packages should not pull in 'info' - making the base VM smaller Ignore: binutils:info Ignore: bison:info Ignore: coreutils:info Ignore: cpio:info Ignore: diffutils:info Ignore: findutils:info Ignore: flex:info Ignore: gawk:info Ignore: gettext-runtime:info Ignore: gettext-tools:info Ignore: grep:info Ignore: groff:info Ignore: gzip:info Ignore: help2man:info Ignore: libgcrypt-devel:info Ignore: m4:info Ignore: make:info Ignore: sed:info Ignore: tar:info Ignore: util-linux:info Ignore: which:info # 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 # 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 #Prefer: -openSUSE-build-key # Set postfix as the 'default' smtp_daemon (virtual symbol provided by all MTAs) Prefer: postfix # Give the worker any default apache2-MPM for apache2- chosing 'prefork' (alternatives are -event and -worker, dep-wise they are equal) # 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 # do not used openmpi variant to build against netcdf Prefer: netcdf-devel # 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: 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 # python-scimpy: have choice for fftw-devel: fftw3-devel fftw3_3_3_6-gnu-hpc-devel fftw3_3_... 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: -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 # have choice for mysql-devel: libmariadb-devel libmysqlclient-devel # Prefer: libmariadb-devel Prefer: libmysqlclient-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 samba-client:cifs-utils 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 # actually a workaround for installation-images requiring # gettext-runtime-mini and getting conflict because systat # requires gettext (which is only provided by !-mini) Ignore: saptune:sysstat 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%*}} ### 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 :Macros Macros: %rb_build_ruby_abis ruby:2.5.0 %rb_build_versions ruby25 %_with_ruby25 1 :Macros %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 %define _with_ruby25 1 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 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 jaba 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 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 armv7l armv7hl Target: armv7hl-suse-linux %endif Optflags: * -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection %define suse_version 1500 %define sle_version 150300 %define is_susecaasp 1 %define is_susesap 1 Macros: %suse_version 1500 %sle_version 150300 %is_susecaasp 1 %is_susesap 1 %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 obs-build-20210120/configs/sles8.conf000066400000000000000000000176031400202264700171640ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash db devs diffutils filesystem Preinstall: fileutils fillup glibc grep libgcc libxcrypt m4 ncurses Preinstall: pam permissions readline rpm sed sh-utils shadow tar Preinstall: textutils Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 cracklib db gcc gdbm gettext Required: glibc libtool ncurses pam perl rpm zlib Support: bind9-utils bison cpio cpp cyrus-sasl e2fsprogs file Support: findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip kbd less libstdc++ make man mktemp modutils Support: ncurses-devel net-tools netcfg pam-devel pam-modules Support: patch ps rcs sendmail strace syslogd sysvinit texinfo Support: timezone unzip util-linux vim zlib-devel Keep: binutils bzip2 cpp cracklib file findutils fpk gawk gcc Keep: gcc-c++ gdbm glibc-devel glibc-locale gnat gnat-runtime Keep: gzip libstdc++ make mktemp pam-devel pam-modules patch perl Keep: popt rcs shlibs5 timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ia64 Substitute: java2-devel-packages java2 java2-jre jpackage-utils %else %ifarch ia64 s390 Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils %endif %ifarch s390x Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils glibc-32bit baselibs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit baselibs-32bit %else %ifarch ppc Substitute: glibc-devel-32bit glibc-devel-64bit glibc-64bit %else Substitute: glibc-devel-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default kernel-sn2 kernel-64k-pagesize %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-pmac64_32bit kernel-power3 kernel-smp kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq aaa_base %fillup_prereq fillup fileutils %install_info_prereq texinfo %suse_version 810 %sles_version 8 %ul_version 0 %_vendor suse obs-build-20210120/configs/sles9.conf000066400000000000000000000202111400202264700171520ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash bzip2 coreutils db devs diffutils Preinstall: filesystem fillup glibc grep insserv libacl libattr Preinstall: libgcc libselinux libxcrypt m4 ncurses pam permissions Preinstall: popt pwdutils readline rpm sed tar zlib Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 db gcc gdbm gettext glibc Required: libtool ncurses perl rpm zlib Support: bind-utils bison cpio cpp cracklib cvs cyrus-sasl e2fsprogs Support: file findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip info kbd less libstdc++ make man mktemp Support: module-init-tools ncurses-devel net-tools netcfg Support: openldap2-client openssl pam-modules patch procinfo procps Support: psmisc rcs strace syslogd sysvinit tcpd texinfo timezone Support: unzip util-linux vim zlib-devel Keep: binutils cpp cracklib file findutils gawk gcc gcc-c++ gdbm Keep: glibc-devel glibc-locale gnat gnat-runtime gzip libstdc++ Keep: libunwind make mktemp pam-devel pam-modules patch perl rcs Keep: shlibs5 timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java2 java2-jre jpackage-utils %else %ifarch ia64 Substitute: java2-devel-packages IBMJava2-JRE BEAJava2-JRE BEAJava2-SDK jpackage-utils %endif %ifarch s390 ppc Substitute: java2-devel-packages IBMJava2-JRE IBMJava2-SDK jpackage-utils %endif %ifarch s390x Substitute: java2-devel-packages IBMJava2-JRE IBMJava2-SDK jpackage-utils XFree86-libs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc Substitute: glibc-devel-32bit glibc-devel-64bit glibc-64bit %else Substitute: glibc-devel-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default kernel-sn2 kernel-64k-pagesize %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-pmac64_32bit kernel-power3 kernel-smp kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq insserv %fillup_prereq fillup fileutils %suseconfig_fonts_prereq perl aaa_base %install_info_prereq info %suse_version 910 %sles_version 9 %ul_version 0 %jds_version 0 %do_profiling 1 %_vendor suse obs-build-20210120/configs/spectool.conf000066400000000000000000000000701400202264700177440ustar00rootroot00000000000000%define spectool_version 1 Macros: %spectool_version 1 obs-build-20210120/configs/ubuntu.conf000066400000000000000000000207641400202264700174520ustar00rootroot00000000000000 Repotype: debian Preinstall: bash sed grep coreutils debianutils Preinstall: libc6 libncurses5 libacl1 libattr1 libpcre3 Preinstall: libreadline6 tar gawk dpkg libc-bin Preinstall: sysv-rc init-system-helpers Preinstall: gzip base-files base-passwd Preinstall: readline-common libselinux1 libsepol1 Preinstall: libgcc1 util-linux debconf tzdata findutils upstart libdbus-1-3 Preinstall: liblzma5 xz-utils libstdc++6 passwd libnih1 libnih-dbus1 Preinstall: login zlib1g libbz2-1.0 libtinfo5 libsigsegv2 Preinstall: dash insserv libmpfr4 libgmp10 libdebconfclient0 Preinstall: perl-base perl libperl5.22 Order: libc6:libc-bin Order: base-files:screen Order: base-files:initscripts Order: initscripts:util-linux Order: sysv-rc:hostname Order: sysv-rc:kmod Runscripts: gawk Runscripts: base-files base-passwd passwd sysv-rc VMinstall: binutils libblkid1 libuuid1 mount libmount1 libsmartcols1 %ifarch ppc64le # for LE switch VMinstall: kernel-obs-build %endif Substitute: snapcraft-plugin:kbuild snapcraft Prefer: -sudo-ldap Required: autoconf automake binutils bzip2 gcc gettext libc6 Required: libtool libncurses5 perl zlib1g dpkg Required: build-essential Support: fakeroot Support: bison cpio cvs login Support: file findutils flex diffutils Support: groff-base gzip hostname info less Support: make man sysv-rc Support: net-tools Support: patch procps psmisc strace Support: unzip vim ncurses-base Support: locales upstart-compat-sysv Support: mount # module-init-tools texinfo # circular dependendencies in openjdk stack Order: openjdk-6-jre-lib:openjdk-6-jre-headless Order: openjdk-6-jre-headless:ca-certificates-java Order: base-files:glibc Order: dpkg:gawk # Workaround for missing prerequires: Preinstall: initramfs-tools initscripts Support: initramfs-tools initscripts Keep: binutils cpp file findutils gawk gcc gcc-ada gcc-c++ Keep: gzip libada libstdc++ libunwind Keep: libunwind-devel libzio make pam-devel pam-modules Keep: patch perl timezone Keep: m4 dpkg dpkg-dev perl-modules libdpkg-perl Prefer: gawk libdb-dev Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: default-jdk Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office -libjack-dev Prefer: -libjpeg-turbo8-dev -libblas3gf Prefer: -make-guile # double packages in universe Prefer: -pkgconf Conflict: ghostscript-library:ghostscript-mini Ignore: upstart:ifupdown Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: initramfs-tools:udev Ignore: mountall:udev Ignore: mountall:plymouth Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy Substitute: utempter %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-debug kernel-um kernel-xen kernel-kdump %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 kernel-kdump %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif %define ubuntu_version 1604 Macros: %ubuntu_version 1604 obs-build-20210120/configs/ul1.conf000066400000000000000000000176031400202264700166270ustar00rootroot00000000000000Repotype: suse Preinstall: aaa_base acl attr bash db devs diffutils filesystem Preinstall: fileutils fillup glibc grep libgcc libxcrypt m4 ncurses Preinstall: pam permissions readline rpm sed sh-utils shadow tar Preinstall: textutils Runscripts: aaa_base VMinstall: util-linux perl Required: autoconf automake binutils bzip2 cracklib db gcc gdbm gettext Required: glibc libtool ncurses pam perl rpm zlib Support: bind9-utils bison cpio cpp cyrus-sasl e2fsprogs file Support: findutils flex gawk gdbm-devel glibc-devel glibc-locale Support: gpm groff gzip kbd less libstdc++ make man mktemp modutils Support: ncurses-devel net-tools netcfg pam-devel pam-modules Support: patch ps rcs sendmail strace syslogd sysvinit texinfo Support: timezone unzip util-linux vim zlib-devel Keep: binutils bzip2 cpp cracklib file findutils fpk gawk gcc Keep: gcc-c++ gdbm glibc-devel glibc-locale gnat gnat-runtime Keep: gzip libstdc++ make mktemp pam-devel pam-modules patch perl Keep: popt rcs shlibs5 timezone Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: aaa_base:aaa_skel,suse-release,logrotate,ash,mingetty,distribution-release Ignore: gettext-devel:libgcj,libstdc++-devel Ignore: pwdutils:openslp Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifnarch s390 s390x ia64 Substitute: java2-devel-packages java2 java2-jre jpackage-utils %else %ifarch ia64 s390 Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils %endif %ifarch s390x Substitute: java2-devel-packages IBMJava2-SDK jpackage-utils glibc-32bit baselibs-32bit %endif %endif Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit baselibs-32bit %else %ifarch ppc Substitute: glibc-devel-32bit glibc-devel-64bit glibc-64bit %else Substitute: glibc-devel-32bit %endif %endif %ifarch %ix86 Substitute: kernel-binary-packages kernel-default kernel-smp kernel-bigsmp kernel-um %endif %ifarch ia64 Substitute: kernel-binary-packages kernel-default kernel-sn2 kernel-64k-pagesize %endif %ifarch x86_64 Substitute: kernel-binary-packages kernel-default kernel-smp %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-pmac64_32bit kernel-power3 kernel-smp kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-iseries64 kernel-pseries64 kernel-pmac64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-s390x %endif Macros: %insserv_prereq aaa_base %fillup_prereq fillup fileutils %install_info_prereq texinfo %suse_version 810 %sles_version 0 %ul_version 1 %_vendor suse obs-build-20210120/create_container_package_list000077500000000000000000000016741400202264700215710ustar00rootroot00000000000000#!/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 if test -x "$tmpdir/unpack/rootfs/usr/bin/rpm" ; then chroot $tmpdir/unpack/rootfs rpm -qa --qf '[%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|%{DISTURL}\n]' else rpm --root "$tmpdir/unpack/rootfs" -qa --qf '[%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|%{DISTURL}\n]' fi obs-build-20210120/createarchdeps000077500000000000000000000036071400202264700165310ustar00rootroot00000000000000#!/usr/bin/perl -w # Archlinux support, based on the GSoC work of Nikolay Rysev ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{"BUILD_DIR"} || "/usr/lib/build"); } use strict; use Build ':arch'; use Build::Archrepo; use Digest::MD5 (); use File::Path; use Getopt::Long; Getopt::Long::Configure("no_ignore_case"); my $cachedir = "/var/cache/build"; sub getreponame { my ($url) = @_; return $1 if "/$url/" =~ /.*\/([^\/]+)\/os\//; return undef; } GetOptions("cachedir=s" => \$cachedir) or exit(1); for my $url (@ARGV) { die("$url: not an remote Archlinux repo") unless $url =~ /^(:?ftps?|https?):\/\/([^\/]*)\/?/; my $reponame = getreponame($url); die("could not determine reponame from url $url\n") unless defined $reponame; my $repoid = Digest::MD5::md5_hex($url); my $dir = "$cachedir/$repoid"; $url .= '/' unless $url =~ /\/$/; File::Path::mkpath($dir); system("$INC[0]/download", $dir, "$url$reponame.db"); Build::Archrepo::parse("$dir/$reponame.db", sub { Build::writedeps(\*STDOUT, $_[0], $url) }, 'addselfprovides' => 1); } obs-build-20210120/createdebdeps000077500000000000000000000071011400202264700163370ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2016 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{"BUILD_DIR"} || "/usr/lib/build"); } use strict; use Digest::MD5; use File::Path; use Getopt::Long; use Build ':deb'; use Build::Deb; use Build::Debrepo; 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 # # distribution: //[components] # flat repo: /. my $cachedir = "/var/cache/build"; my $archpath; GetOptions('cachedir=s' => \$cachedir, 'archpath=s' => \$archpath) or exit(1); if (!$archpath) { $archpath = `uname -p` || 'unknown'; chomp $archpath; } my $basearch = $archpath; $basearch =~ s/:.*//; $basearch = Build::Deb::basearch($basearch); my $pkgnum = 0; for my $url (@ARGV) { die("$url: not an remote debian repo\n") unless $url =~ /^(:?ftps?|https?):\/\/([^\/]*)\/?/; my $repoid = Digest::MD5::md5_hex($url); my $dir = "$cachedir/$repoid"; my @components; my $baseurl = $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 = ('.'); $url = defined($2) ? "$1$2" : $1; $url .= '/' unless $url =~ /\/$/; } else { if ($url =~ /([^\/]+)$/) { @components = split(/[,+]/, $1); $url =~ s/([^\/]+)$//; } push @components, 'main' unless @components; $url .= '/' unless $url =~ /\/$/; $baseurl = $url; $url =~ s/([^\/]+\/)$/dists\/$1/; $baseurl =~ s/([^\/]+\/)$//; } File::Path::mkpath($dir); for my $component (@components) { unlink("$dir/Packages.gz"); if ($component eq '.') { system($INC[0]."/download", $dir, "${url}Packages.gz"); die("Packages.gz missing\n") unless -s "$dir/Packages.gz"; } else { system($INC[0]."/download", $dir, "$url$component/binary-$basearch/Packages.gz"); die("Packages.gz missing for basearch $basearch, component $component\n") unless -s "$dir/Packages.gz"; } Build::Debrepo::parse("$dir/Packages.gz", sub { $pkgnum++; $_[0]->{'id'} = "$pkgnum/0/0"; Build::writedeps(\*STDOUT, $_[0], $baseurl); }, 'addselfprovides' => 1); } } obs-build-20210120/createdirdeps000077500000000000000000000057321400202264700163730ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Build; use Getopt::Long; use strict; Getopt::Long::Configure("no_ignore_case"); my $oldfile; GetOptions ("oldfile=s" => \$oldfile) or exit(1); sub queryfromfilename { my ($fn) = @_; $fn =~ s/.*\///; return {'name' => $1, 'arch' => $2} if $fn =~ /^(.*)-[^-]+-[^-]+\.([^\. ]+)\.rpm$/; return {'name' => $1, 'arch' => $2} if $fn =~ /^([^_]*)_(?:[^_]*)_([^_]*)\.deb$/; return {'name' => $1, 'arch' => $2} if $fn =~ /^(.*)-[^-]+-[^-]+-([^-]+)\.pkg\.tar\.[gx]z$/; return undef; } ###################################################################### my %old; if (defined($oldfile) && open(F, '<', $oldfile)) { while () { chomp; $old{$1} = $_ if /^([PRrCOI]:[^ ]+): /; } close F; } my %seen; for my $dir (@ARGV) { my $cmd = "find $dir -follow -type f \\( -name \"*.rpm\" -o -name \"*.deb\" -o -name \"*.pkg.tar.gz\" -o -name \"*.pkg.tar.xz\" \\) -a ! -name \"*src.rpm\" -printf '\%T@/\%s/\%i \%p\\n'"; open(F, '-|', $cmd) or next; while () { chomp; next unless /^([\d\.]+\/\d+\/\d+) (.*)$/; my $id = $1; my $path = $2; # newer find version add a fraction part to %T@, strip it $id =~ s/^(\d+)\.\d+/$1/; next if $path =~ /\.(?:patch|delta)\.rpm$/; # not good for building... if (%old) { my $q = queryfromfilename($path); if ($q && defined($q->{'name'}) && defined($q->{'arch'})) { my $idx = "$q->{'name'}.$q->{'arch'}-$id"; if ($old{"I:$idx"} && $old{"P:$idx"}) { # reuse old data next if $seen{$idx}; $seen{$idx} = 1; print "F:$idx: $path\n"; for (qw{P R C O I r s}) { print $old{"$_:$idx"}."\n" if $old{"$_:$idx"}; } next; } } } my $q = Build::query($path, 'addselfprovides' => 1, 'conflicts' => 1, 'evra' => 1, 'buildtime' => 1, 'weakdeps' => 1); next unless $q && defined($q->{'name'}) && defined($q->{'arch'}) && defined($q->{'version'}); my $idx = "$q->{'name'}.$q->{'arch'}-$id"; next if $seen{$idx}; $seen{$idx} = 1; $q->{'id'} = $id; $q->{'location'} = $path; Build::writedeps(\*STDOUT, $q); } close F; } obs-build-20210120/createmdkdeps000077500000000000000000000032031400202264700163570ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 2015 SUSE Linux 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 # ################################################################ # Mandriva/Mageia support BEGIN { unshift @INC, ($::ENV{"BUILD_DIR"} || "/usr/lib/build"); } use strict; use Build ':mdk'; use Build::Mdkrepo; use Digest::MD5 (); use File::Path; use Getopt::Long; Getopt::Long::Configure("no_ignore_case"); my $cachedir = "/var/cache/build"; GetOptions("cachedir=s" => \$cachedir) or exit(1); for my $url (@ARGV) { die("$url: not an remote mandriva/mageia repo") unless $url =~ /^(:?ftps?|https?):\/\/([^\/]*)\/?/; my $repoid = Digest::MD5::md5_hex($url); my $dir = "$cachedir/$repoid"; $url .= '/' unless $url =~ /\/$/; File::Path::mkpath($dir); system("$INC[0]/download", $dir, "${url}media_info/synthesis.hdlist.cz"); Build::Mdkrepo::parse("$dir/synthesis.hdlist.cz", sub { Build::writedeps(\*STDOUT, $_[0], $url) }, 'addselfprovides' => 1); } obs-build-20210120/createrepomddeps000077500000000000000000000107771400202264700171100ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use strict; use Data::Dumper; use Getopt::Long; use Build ':rpm'; use Build::Rpm; use Build::Rpmmd; use Digest::MD5 (); use File::Path qw(mkpath rmtree); use File::Basename; Getopt::Long::Configure("no_ignore_case"); my $opt_dump; my $opt_old; my $opt_nosrc; my $opt_bc; my $opt_zypp; my $cachedir = "/var/cache/build"; sub printold { my ($pkg, $baseurl, $old_seen) = @_; my $arch = $pkg->{'arch'}; $arch = 'src' if $pkg->{'arch'} eq 'nosrc'; return if $arch eq 'src' && $opt_nosrc; my $evr = $pkg->{'version'}.'-'.$pkg->{'release'}; $evr = "$pkg->{'epoch'}:$evr" if $pkg->{'epoch'}; my $loc = $baseurl . $pkg->{'location'}; if ($old_seen->{$pkg->{'name'}}->{$arch}) { my $vv = Build::Rpm::verscmp($old_seen->{$pkg->{'name'}}->{$arch}->{'evr'}, $evr, 0); if ($vv >= 0) { print "$loc\n"; return; } print $old_seen->{$pkg->{'name'}}->{$arch}->{'loc'}."\n"; } $old_seen->{$pkg->{'name'}}->{$arch}->{'evr'} = $evr; $old_seen->{$pkg->{'name'}}->{$arch}->{'loc'} = $loc; } GetOptions ( "nosrc" => \$opt_nosrc, "dump" => \$opt_dump, "old" => \$opt_old, "zypp=s" => \$opt_zypp, "cachedir=s" => \$cachedir, ) or exit(1); $opt_bc = 1 unless $opt_dump || $opt_old; my $old_seen = {}; # for opt_old my @packages; # for opt_dump for my $url (@ARGV) { my $dir; my $baseurl = $url; if ($opt_zypp) { $dir = $opt_zypp; } elsif ($url =~ /^(?:ftps?|https?):\/\/([^\/]*)\/?/) { my $repoid = Digest::MD5::md5_hex($url); $dir = "$cachedir/$repoid/"; $baseurl .= '/' unless $baseurl =~ /\/$/; mkpath("${dir}repodata"); system($INC[0].'/download', "${dir}repodata", "${baseurl}repodata/repomd.xml"); } else { $dir = $url; } $dir .= '/' unless $dir =~ /\/$/; $baseurl .= '/' unless $baseurl =~ /\/$/; if (! -s "${dir}repodata/repomd.xml") { die("zypp repo $url is not up to date, please refresh first\n") if $opt_zypp; die("repo $url does not contain a repomd.xml file\n"); } my @primaryfiles; Build::Rpmmd::parse_repomd("${dir}repodata/repomd.xml", \@primaryfiles); @primaryfiles = grep {$_->{'type'} eq 'primary' && defined($_->{'location'})} @primaryfiles; # print Dumper(\@primaryfiles); for my $f (@primaryfiles) { my $u = "$dir$f->{'location'}"; if ($] > 5.007) { require Encode; utf8::downgrade($u); } my $cached; if (-e $u) { $cached = 1; $cached = 0 if exists($f->{'size'}) && $f->{'size'} != (-s _); $cached = 0 if !$opt_zypp && !exists($f->{'size'}) && $u !~ /[0-9a-f]{32}-primary/; } if (!$cached) { die("zypp repo $url is not up to date, please refresh first\n") if $opt_zypp; if ($url =~ /^(?:ftps?|https?):\/\/([^\/]*)\/?/) { if (system("$INC[0]/download", "${dir}repodata/", "${baseurl}repodata/" . basename($u))) { die("download failed\n"); } } else { die("inconsistent repodata in $url\n"); } } my $fh; open($fh, '<', $u) or die "Error opening $u: $!\n"; if ($u =~ /\.gz$/) { use IO::Uncompress::Gunzip qw($GunzipError); $fh = new IO::Uncompress::Gunzip $fh or die "Error opening $u: $GunzipError\n"; } Build::Rpmmd::parse($fh, sub { if ($opt_dump) { $_[0]->{'baseurl'} = $baseurl; push @packages, $_[0] if $opt_dump; } if ($opt_bc) { binmode STDOUT, ":utf8"; Build::writedeps(\*STDOUT, $_[0], $baseurl); } elsif ($opt_old) { printold($_[0], $baseurl, $old_seen); } }, 'addselfprovides' => 1); close($fh); } } if ($opt_dump) { print Data::Dumper->Dump([\@packages], ['packages']); # caution: excessive memory consumption! } obs-build-20210120/createyastdeps000077500000000000000000000042531400202264700165720ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Build ':rpm'; use Build::Susetags; use Getopt::Long; use File::Path qw(mkpath); use strict; Getopt::Long::Configure("no_ignore_case"); my $opt_zypp; my $cachedir = "/var/cache/build"; GetOptions ("zypp=s" => \$opt_zypp, "cachedir=s" => \$cachedir) or exit(1); for my $url (@ARGV) { # XXX: use descrdir/datadir from content file my $descrdir = 'suse/setup/descr'; my $datadir = 'suse'; my $dir; my $baseurl = $url; if ($opt_zypp) { $dir = $opt_zypp; } elsif ($url =~ /^(?:ftps?|https?):\/\/([^\/]*)\/?/) { my $repoid = Digest::MD5::md5_hex($url); $dir = "$cachedir/$repoid/"; $baseurl .= '/' unless $baseurl =~ /\/$/; mkpath($dir); system("$INC[0]/download", "$dir/", "${baseurl}$descrdir/packages.gz"); $descrdir = '.'; } else { $dir = $url; } $dir .= '/' unless $dir =~ /\/$/; $baseurl .= '/' unless $baseurl =~ /\/$/; my $packages = "$dir$descrdir/packages"; $packages = "$packages.gz" if ! -e $packages && -e "$packages.gz"; Build::Susetags::parse($packages, sub { my $xurl = $baseurl; # multi cd support hack $xurl =~ s/1\/$/$_[0]->{'medium'}/ if $_[0]->{'medium'}; $xurl .= "$datadir/" if $datadir; Build::writedeps(\*STDOUT, $_[0], $xurl); }, 'addselfprovides' => 1); } obs-build-20210120/createzyppdeps000077500000000000000000000042561400202264700166170ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use strict; use Build::Zypp; use Getopt::Long; Getopt::Long::Configure("no_ignore_case"); my $cachedir = "/var/cache/build"; my $opt_listrepos; GetOptions( "cachedir=s" => \$cachedir, "listrepos" => \$opt_listrepos, ) or exit(1); if ($opt_listrepos) { die("createzyppdeps --listrepos does not take an argument\n") if @ARGV; for my $r (Build::Zypp::parseallrepos()) { print "$r->{'name'}\n" if $r->{'enabled'}; } exit 0; } die("createzyppdeps needs exactly one argument\n") if @ARGV != 1; my $url = $ARGV[0]; die("createzyppdeps argument must start with 'zypp://'\n") unless $url =~ /^zypp:\/\/([^\/]*)/; my $repo = Build::Zypp::parserepo($1); my $type = $repo->{'type'}; my $zyppcachedir = "/var/cache/zypp/raw/$repo->{'name'}"; if (!$type) { $type = 'yast2' if -e "$zyppcachedir/suse/setup/descr"; $type = 'rpm-md' if -e "$zyppcachedir/repodata"; } die("could not determine repo type for '$repo->{'name'}'\n") unless $type; if($type eq 'rpm-md') { exec ("$INC[0]/createrepomddeps", '--cachedir', $cachedir, '--zypp', $zyppcachedir, $url); } elsif ($type eq 'yast2') { exec ("$INC[0]/createyastdeps", '--cachedir', $cachedir, '--zypp', $zyppcachedir, $url); } else { die "unsupported repo type '$type' for '$repo->{'name'}'\n"; } obs-build-20210120/debtransform000077500000000000000000000366521400202264700162500ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ use strict; use Digest::MD5; use Digest::SHA; use POSIX qw(strftime); sub usage { die("usage: debtransform [--debug] [--changelog ] [--release ] \n"); } sub parsedsc { my ($fn) = @_; my @control; local *F; open(F, '<', $fn) || die("Error in reading $fn: $!\n"); @control = ; close F; chomp @control; splice(@control, 0, 3) if @control > 3 && $control[0] =~ /^-----BEGIN/; my @seq = (); my %tag; while (@control) { my $c = shift @control; last if $c eq ''; # new paragraph my ($tag, $data) = split(':', $c, 2); next unless defined $data; push @seq, $tag; $tag = uc($tag); while (@control && $control[0] =~ /^\s/) { $data .= "\n".substr(shift @control, 1); } $data =~ s/^\s+//s; $data =~ s/\s+$//s; $tag{$tag} = $data; } $tag{'__seq'} = \@seq; return \%tag; } sub writedsc { my ($fn, $tags) = @_; print "Writing $fn\n"; open(F, '>', $fn) || die("open $fn: $!\n"); my @seq = @{$tags->{'__seq'} || []}; my %seq = map {uc($_) => 1} @seq; for (sort keys %$tags) { if (! $seq{$_}) { # ucfirst will change checksums-sha1 to Checksums-sha1 but the canonical # form is Checksums-Sha1, hence the need for the second transformation my $camel_tag = ucfirst(lc($_)); $camel_tag =~ s/-\K(\w)/\U$1/g; push @seq, $camel_tag; } } for my $seq (@seq) { my $ucseq = uc($seq); my $d = $tags->{$ucseq}; next unless defined $d; $d =~ s/\n/\n /sg; if ($d =~ /^\n/) { print F "$seq:$d\n"; } else { print F "$seq: $d\n"; } } print F "\n"; close F; } sub listtar { my ($tar, $skipdebiandir) = @_; print "Scanning $tar...\n"; local *F; my @c; unless(defined($skipdebiandir)) { $skipdebiandir = 1; } open(F, '-|', 'tar', '--numeric-owner', '-tvf', $tar) || die("Execution of tar subprocess failed: $!\n"); while() { next unless /^([-dlbcp])(.........)\s+\d+\/\d+\s+(\S+) \d\d\d\d-\d\d-\d\d \d\d:\d\d(?::\d\d)? (.*)$/; my ($type, $mode, $size, $name) = ($1, $2, $3, $4); next if $type eq 'd'; if ($type eq 'l') { next if $skipdebiandir eq 0; die("Archive contains a link: $name\n"); } if ($type ne '-') { next if $skipdebiandir eq 0; die("Archive contains an unexpected type for file \"$name\"\n"); } $name =~ s/^\.\///; $name =~ s/^debian\/// if $skipdebiandir eq 1; push @c, {'name' => $name, 'size' => $size}; } close(F) || die("tar exited with non-zero status: $!\n"); return @c; } sub extracttar { my ($tar, $filename, $s) = @_; local *F; print "Extracting $tar...\n"; open(F, '-|', 'tar', '-xOf', $tar, $filename) || die("Execution of tar subprocess failed: $!\n"); my $file = ''; while ($s > 0) { my $l = sysread(F, $file, $s, length($file)); die("Error while reading from tar subprocess: $!\n") unless $l; $s -= $l; } my @file = split("\n", $file); close(F) || warn("tar exited with non-zero status: $!\n"); return @file; } sub dodiff { my ($oldname, $newname, $origtarfile, @content) = @_; my @oldcontent; for my $c (@{$origtarfile->{'content'}}) { if ($c->{'name'} eq $newname) { @oldcontent = extracttar($origtarfile->{'name'}, $c->{'name'}, $c->{'size'}); } } if ($newname eq $origtarfile->{'tardir'}."/debian/changelog") { my $firstline = $content[0]; my $version = $firstline; $version =~ s/.*\((.*)\).*/$1/g; if ($version ne $origtarfile->{'version'}) { $firstline =~ s/\(.*\)/($origtarfile->{'version'})/g; my $date = `date -R`; if (defined($ENV{SOURCE_DATE_EPOCH})) { $date = strftime("%a, %d %b %Y %T +0000", gmtime($ENV{SOURCE_DATE_EPOCH})); } chomp($date); my @newcontent = ($firstline, "", " * version number update by debtransform", "", " -- debtransform ".$date, ""); push(@newcontent, @content); @content = @newcontent; } } return unless @content; print DIFF "--- $oldname\n"; print DIFF "+++ $newname\n"; if (@oldcontent) { print DIFF "\@\@ -1,".scalar(@oldcontent)." +1,".scalar(@content)." \@\@\n"; print DIFF "-$_\n" for @oldcontent; } else { print DIFF "\@\@ -0,0 +1,".scalar(@content)." \@\@\n"; } print DIFF "+$_\n" for @content; } sub dotar { my ($tar, $tardir, $origin, $origtarfile, @c) = @_; local *F; open(F, '-|', 'tar', '-xOf', $tar) || die("tar: $!\n"); for my $c (@c) { my $s = $c->{'size'}; my $file = ''; while ($s > 0) { my $l = sysread(F, $file, $s, length($file)); die("tar read error\n") unless $l; $s -= $l; } next if $origin && $origin->{$c->{'name'}} ne $tar; my @file = split("\n", $file); dodiff("$tardir.orig/debian/$c->{'name'}", "$tardir/debian/$c->{'name'}", $origtarfile, @file); } close(F); } sub dofile { my ($file, $tardir, $dfile, $origtarfile) = @_; local *F; print "Processing file \"$file\"...\n"; open(F, '<', $file) || die("Error in reading $file: $!\n"); my @file = ; close F; chomp(@file); dodiff("$tardir.orig/$dfile", "$tardir/$dfile", $origtarfile, @file); } sub doseries { my ($series, $tardir) = @_; my $dir = $series; $dir =~ s/[^\/]+$//; $dir =~ s/\/+$//; $dir = '.' if $dir eq ''; local *F; open(F, '<', $series) || die("$series: $!\n"); my @series = ; close F; chomp(@series); print "Processing series file \"$series\"...\n"; for my $patch (@series) { $patch =~ s/(^|\s+)#.*//; next if $patch =~ /^\s*$/; my $level = 1; $level = $1 if $patch =~ /\s.*-p\s*(\d+)/; $patch =~ s/\s.*//; print "Processing patch $dir/$patch...\n"; open(F, '<', "$dir/$patch") || die("Error in reading $dir/$patch: $!\n"); while() { chomp; if ((/^--- ./ || /^\+\+\+ ./) && !/^... \/dev\/null/) { my $start = substr($_, 0, 4); $_ = substr($_, 4); my $l = $level; while ($l > 0) { last unless s/.*?\///; $l--; } if ($start eq '--- ') { print DIFF "$start$tardir.orig/$_\n"; } else { print DIFF "$start$tardir/$_\n"; } next; } print DIFF "$_\n"; } close F; } } sub addfile { my ($file, $algorithm) = @_; my $base = $file; $base =~ s/.*\///; local *F; open(F, '<', $file) || die("Error in reading $file: $!\n"); my $size = -s F; my $ctx; if ($algorithm =~ /^MD5/) { $ctx = Digest::MD5->new; } elsif ($algorithm =~ /^SHA/) { $ctx = Digest::SHA->new($algorithm); } else { die("Unknown digest $algorithm\n"); } $ctx->addfile(*F); close F; my $md5 = $ctx->hexdigest(); return "$md5 $size $base"; } print "** Started: debtransform @ARGV\n"; my $debug = 0; my $changelog; my $release; while (@ARGV > 3) { if ($ARGV[0] eq '--debug') { shift @ARGV; $debug = 1; } elsif ($ARGV[0] eq '--changelog') { shift @ARGV; $changelog = shift @ARGV; } elsif ($ARGV[0] eq '--release') { shift @ARGV; $release = shift @ARGV; } else { usage(); } } if( @ARGV != 3 ) { usage(); } my $dir = $ARGV[0]; my $dsc = $ARGV[1]; my $out = $ARGV[2]; die("$out is not a directory\n") unless -d $out; my $tags = parsedsc($dsc); opendir(D, $dir) || die("Could not open $dir: $!\n"); my @dir = grep {$_ ne '.' && $_ ne '..'} readdir(D); closedir(D); my %dir = map {$_ => 1} @dir; my $tarfile = $tags->{'DEBTRANSFORM-TAR'}; my @debtarfiles; if ($tags->{'DEBTRANSFORM-FILES-TAR'}) { @debtarfiles = split(' ', $tags->{'DEBTRANSFORM-FILES-TAR'}); } if (!$tarfile || !@debtarfiles) { my @tars = grep {/\.tgz$|\.tar(?:\.gz|\.bz2|\.xz)?$/} @dir; my @debtars = grep {/^debian\.tar(?:\.gz|\.bz2|\.xz)?$/} @tars; if (!$tarfile) { print "No DEBTRANSFORM-TAR line in the .dsc file.\n"; print "Attempting automatic discovery of a suitable source archive.\n"; @tars = grep {!/^debian\.tar(?:\.gz|\.bz2|\.xz)?$/} @tars; if (@debtarfiles) { my %debtarfiles = map {$_ => 1} @debtarfiles; @tars = grep {!$debtarfiles{$_}} @tars; } die("None of the files looks like a usable source tarball.\n") unless @tars; die("Too many files looking like a usable source tarball (would not know which to pick): @tars\n") if @tars > 1; $tarfile = $tars[0]; print "Source archive chosen for transformation: $tarfile\n"; } if (!exists($tags->{'DEBTRANSFORM-FILES-TAR'})) { print "No DEBTRANSFORM-FILES-TAR line in the .dsc file.\n"; print "Attempting automatic discovery of a debian archive.\n"; } if (@debtars && !exists($tags->{'DEBTRANSFORM-FILES-TAR'})) { die("package contains more than one debian archive\n") if @debtars > 1; @debtarfiles = ($debtars[0]); print "Debian archive chosen for transformation: $debtars[0]\n"; } } my $name = $tags->{'SOURCE'}; die("dsc file contains no Source: line\n") unless defined($name); my $version = $tags->{'VERSION'}; die("dsc file contains no Version: line\n") unless defined($version); # no epoch in version, please if ($version =~ s/^\d+://) { print "Stripped epoch from Version field, which is now \"$version\".\n"; } # debtransform generates source package in 1.0 (non-native) format print "Transforming into source package 1.0 (non-native) format\n"; # non-native sources should always contain Debian revision if ($version !~ /-/) { $version = $version . "-1"; print "Added Debian revision to Version field, which is now \"$version\".\n"; } # for 1.0 all source archives should be transformed into weak gzip files # (https://wiki.debian.org/Projects/DebSrc3.0) my $tmptar; if ($tarfile =~ /\.tar\.bz2/) { my $old = $tarfile; $tarfile =~ s/\.tar\.bz2/\.tar\.gz/; $tmptar = "$out/$tarfile"; print "converting $dir/$old to $tarfile\n"; system( ( "debtransformbz2", "$dir/$old", "$tmptar" )) == 0 || die("cannot transform .tar.bz2 to .tar.gz"); } if ($tarfile =~ /\.tar\.xz/) { my $old = $tarfile; $tarfile =~ s/\.tar\.xz/\.tar\.gz/; $tmptar = "$out/$tarfile"; print "converting $dir/$old to $tarfile\n"; system( ( "debtransformxz", "$dir/$old", "$tmptar" )) == 0 || die("cannot transform .tar.xz to .tar.gz"); } if ($tarfile =~ /\.zip/) { my $old = $tarfile; $tarfile =~ s/\.zip/\.tar\.gz/; $tmptar = "$out/$tarfile"; print "converting $dir/$old to $tarfile\n"; system( ( "debtransformzip", "$dir/$old", "$tmptar" )) == 0 || die("cannot transform .zip to .tar.gz"); } if ($tarfile =~ /\.tgz$/) { my $old = $tarfile; $tarfile =~ s/\.tgz/\.tar.gz/; $tmptar = "$out/$tarfile"; print "renaming $dir/$old to $tarfile\n"; system ( ("mv", "$dir/$old", "$tmptar" ) ) == 0 || die("cannot rename .tgz to .tar.gz"); } if ($tags->{'DEBTRANSFORM-RELEASE'} && $release) { # the tag DEBTRANSFORM-RELEASE in .dsc file instructs # to append OBS build number to package version. The # number is passed in "release" command line parameter. # On OBS, release is incremented automatically # (same as for RPMs) $version = $version . "+" . $release; } if ($version ne $tags->{VERSION}) { $tags->{VERSION} = $version; print "Modifying dsc Version field to \"$tags->{VERSION}\"\n"; } my @files; my @checksums_sha1; my @checksums_sha256; my $v = $version; # version without Debian revision $v =~ s/-[^-]*$//; $tarfile =~ /.*(\.tar.*?)$/; my $ntarfile = "${name}_$v.orig$1"; if( $tmptar ) { print "Moving $dir/$tarfile to $out/$ntarfile\n"; link("$tmptar", "$out/$ntarfile") || die("link: $!\n"); unlink("$tmptar"); } else { print "Hardlinking $dir/$tarfile to $out/$ntarfile\n"; link("$dir/$tarfile", "$out/$ntarfile") || die("link: $!\n"); } push @files, addfile("$out/$ntarfile", "MD5"); push @checksums_sha1, addfile("$out/$ntarfile", "SHA1"); push @checksums_sha256, addfile("$out/$ntarfile", "SHA256"); print "files @files\n"; my $tarpath = "$out/$ntarfile"; my $tardir = $tarfile; $tardir =~ s/\.orig\.tar/\.tar/; $tardir =~ s/\.tar.*?$//; my @tarfilecontent = listtar($tarpath, 0); my $origtarfile = {'name' => $tarpath, 'content' => \@tarfilecontent, 'version' => $tags->{'VERSION'}, 'tardir' => $tardir}; print "Generating $out/${name}_$version.diff\n"; # Since we are generating a unitary diff, we must re-set Format:. $tags->{"FORMAT"} = "1.0"; open(DIFF, '>', "$out/${name}_$version.diff") || die("Cannot open $out/${name}_$version.diff for write: $!\n"); undef $changelog if $dir{'debian.changelog'}; my %debtarorigin; my %debtarcontent; for my $debtarfile (@debtarfiles) { my @c = listtar("$dir/$debtarfile"); $debtarcontent{$debtarfile} = \@c; for (@c) { die("\"$_->{'name'}\" exists in both the debian archive as well as the package source directory.\n") if $dir{"debian.$_->{'name'}"}; undef $changelog if $_->{'name'} eq 'changelog'; $debtarorigin{$_->{'name'}} = "$dir/$debtarfile"; } } dofile($changelog, $tardir, 'debian/changelog', $origtarfile) if defined $changelog; if ($tags->{'DEBTRANSFORM-FILES'}) { for my $file (split(' ', $tags->{'DEBTRANSFORM-FILES'})) { dofile("$dir/$file", $tardir, $file, $origtarfile); } } for my $debtarfile (@debtarfiles) { dotar("$dir/$debtarfile", $tardir, \%debtarorigin, $origtarfile, @{$debtarcontent{$debtarfile} }); } for my $file (grep {/^debian\./} @dir) { next if $file eq 'debian.series'; next if $file =~ /\.tar$/; next if $file =~ /\.tar\./; dofile("$dir/$file", $tardir, 'debian/'.substr($file, 7), $origtarfile); } if ($tags->{'DEBTRANSFORM-SERIES'}) { doseries("$dir/$tags->{'DEBTRANSFORM-SERIES'}", $tardir); } elsif ($dir{"debian.series"}) { doseries("$dir/debian.series", $tardir); } elsif ($dir{"patches.series"}) { doseries("$dir/patches.series", $tardir); } close(DIFF); if (! -s "$out/${name}_$version.diff") { unlink("$out/${name}_$version.diff"); } else { 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"); push @checksums_sha256, addfile("$out/${name}_$version.diff.gz", "SHA256"); } else { push @files, addfile("$out/${name}_$version.diff", "MD5"); push @checksums_sha1, addfile("$out/${name}_$version.diff", "SHA1"); push @checksums_sha256, addfile("$out/${name}_$version.diff", "SHA256"); } } $tags->{'CHECKSUMS-SHA1'} = "\n".join("\n", @checksums_sha1); $tags->{'CHECKSUMS-SHA256'} = "\n".join("\n", @checksums_sha256); $tags->{'FILES'} = "\n".join("\n", @files); delete $tags->{'DEBTRANSFORM-SERIES'}; delete $tags->{'DEBTRANSFORM-TAR'}; delete $tags->{'DEBTRANSFORM-FILES-TAR'}; delete $tags->{'DEBTRANSFORM-FILES'}; delete $tags->{'DEBTRANSFORM-RELEASE'}; writedsc("$out/${name}_$version.dsc", $tags); if( $debug ) { print `ls -la $out`; print `cat $out/${name}_$version.dsc`; print `zcat $out/${name}_$version.diff.gz`; } exit(0); obs-build-20210120/debtransformbz2000077500000000000000000000017211400202264700166530ustar00rootroot00000000000000#! /bin/bash ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ if test $# -ne 2; then exit 1 fi bz="$1" tar="$2" bzcat "$bz" | gzip -f - >"$tar" || exit 1 exit 0 obs-build-20210120/debtransformxz000077500000000000000000000001331400202264700166130ustar00rootroot00000000000000#!/bin/sh if test $# -ne 2; then exit 1 fi xz -cd "$1" | gzip -f - >"$2" || exit 1 exit 0 obs-build-20210120/debtransformzip000077500000000000000000000020321400202264700167540ustar00rootroot00000000000000#! /bin/bash ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ if test $# -ne 2; then exit 1 fi zip="$1" tar="$2" tmp=$(mktemp -d) unzip -q -d "$tmp" -- "$zip" || exit 1 ( cd "$tmp" && tar czO * ) >"$tar" || exit 1 rm -r "$tmp" exit 0 obs-build-20210120/dist/000077500000000000000000000000001400202264700145635ustar00rootroot00000000000000obs-build-20210120/dist/PKGBUILD000066400000000000000000000005771400202264700157200ustar00rootroot00000000000000pkgname=build pkgver=20200110 pkgrel=0 pkgdesc="Build packages in sandbox" arch=('i686' 'x86_64') url="https://www.github.com/openSUSE/obs-build" license=('GPL-2.0+' 'GPL-2.0') groups=('base-devel') depends=('perl') source=(obs-build-${pkgver}.tar.gz) md5sums=('SKIP') package() { msg "Installing build ..." cd "${srcdir}"/obs-build-${pkgver} make DESTDIR=${pkgdir} install } obs-build-20210120/dist/build.changes000066400000000000000000002023251400202264700172200ustar00rootroot00000000000000------------------------------------------------------------------- Wed Jan 20 12:37:53 UTC 2021 - Adrian Schröter Features: - initial flatpak build support added - ccache support added - debtransform: Add Debian revision if not present - allow nodirindex filesystems via BuildFlags: vmfsoptions:nodirindex - Also do rich dep handling for PreReqs - kiwi image: configure ndb database if we install the rpm-ndb package - Implement alternative method to specify build-ignores Changes: - Ignore kiwi-image: deps when expanding image packages Fixes: - Improve autonumbering of source/patch - init_buildsystem: fix mode of /dev/full - drop option transparent_hugepages=never on s390x - Allow --vmdisk-filesystem-options as alias for --vm-disk-filesystem-options - Do not add a "kiwi-packagemanager:" dependency if no package manager is defined - debian: - Do not leave trailing whitespace while generating .dsc - Save modified version into .dsc file - Fail `debtransform` test if `debdiff` can't find something - return the unmapped arch if it is not found in the mapping hash - build-recipe-debootstrap: add fallback for Debian SID distro ------------------------------------------------------------------- Fri Aug 28 13:48:06 UTC 2020 - Adrian Schröter - support rpmlint installed in /usr/bin/ as well - fix local build for armv6hl - Extract generated chart from the tarball instead of using the recipe ------------------------------------------------------------------- Thu Aug 20 08:07:30 UTC 2020 - Adrian Schröter - fix factory version in config file bsc#1170956 - add missing ignores for Leap 15.2 bsc#1174854 - fix sysrq handling for KVM builds - avoid double removal of obscpio files - docker: * support builds using USER root statements * proper error handling when obs-docker-support gets called as non-root * helm build target support * support milestone handling - support repo files without types set (SLE 15 SP2 zypp) - add default substitute for system-packages:repo-creation - Support recursive kiwi profile usage ------------------------------------------------------------------- Thu Jul 23 05:38:24 UTC 2020 - Frank Schreiner - fix dependencies for Fedora 33 - Set $YAML::XS::LoadBlessed = 0 for Appimage/Snapcraft - add a new variable to track build time needed for ccache eviction - create folder for ccache archive to be copied before rsync - also package pkg-config files by default into baselibs. (bsc#1172563 etc) - Use shorter kernel flag for mitigations - Ignore, if shutdown behavior changed by build in z/VM - Control disk-space consumption while creating ccache archive - cleaning ccache - create folders before trying to copy ccache.tar - Generate .packages and .basepackages files for docker builds ------------------------------------------------------------------- Sun May 17 14:32:52 UTC 2020 - coolo@suse.com - enable sysrq operations on boot - Set kvm_serial_device to virtio-serial in the fixup - Split console arg setting code into kvm_add_console_args - Update for zVM to make container builds work. - Write to /proc/sys/kernel/hostname if the hostname command is not available - Use --cgroup-manager=cgroupfs when calling podman - Also squash by default in podman builds - Support different interpreters in prein/postin scriptlets - Use grep -E instead of egrep to check for the needsbinariesforbuild flag - Use new Build::Intrepo module - Add new Intrepo module to read/write build's internal repo format - remove .gz from _ccache archive as it is no longer compressed - Add support for Arch in build-recipe-kiwi - Autodetect whether to use --pipe option of systemd-nspawn. - Split parse_depfile() from readdeps() - enable compression on ccache - add bugzilla numbers for s390 workaround - extend --ccache to generate _ccache.tar.gz and implement --pkg-ccache - disable transparent_hugepage on s390x guests for now, causes hangs - set buildflavor also for Build::parse ------------------------------------------------------------------- Fri Mar 13 13:41:20 UTC 2020 - Adrian Schröter - Leap 15.2 config update (libzstd1 for rpm) - handle obscpio extraction error as fatal - Return correct exit code from systemd-nspawn build - Spec parser: do not parse included files from end to start - running disk full check also outside of VM - run disk full check only for chroot ------------------------------------------------------------------- Mon Feb 10 08:25:12 UTC 2020 - Adrian Schröter - Spec parser: add support for %elif, %elifarch, %elifos - Support rpm's %include statement (EXPERIMENTAL, known limitations) - Do not do vminstall expansion in expanddeps unless --vm is used ------------------------------------------------------------------- Wed Feb 5 08:23:06 UTC 2020 - Adrian Schröter - 15.2 config: preinstall gcrypt deps again - Recommends for Fedora based distros - support obsgendiff funcationality - various smaller code cleanups - additional test cases for spec file parsing - various fixes for cornercases during spec file parsing ------------------------------------------------------------------- Fri Jan 31 11:49:34 UTC 2020 - Adrian Schröter - fix regression in && operator handling of rpm spec file parser - Correctly expand macros defined with %global ------------------------------------------------------------------- Wed Jan 29 12:57:22 UTC 2020 - Adrian Schröter - 15.2 config: temporary revert gcrypt preinstall until distro has changed - factory config: ignore libxtables for iproute2, not needed for ip tool - Follow upstream rpm changes in regard to logical ops - Fix macro expansion of lines containing newlines - add missing header file to avoid compile warnings ------------------------------------------------------------------- Tue Jan 28 15:20:28 UTC 2020 - Adrian Schröter - support OBS-Milestone comment for kiwi - switch to preinstall expansion for factory ------------------------------------------------------------------- Fri Jan 24 15:44:00 UTC 2020 - Adrian Schröter - fix SLE 15 configurations - Fix dist autodetection for sle15-sp2 ------------------------------------------------------------------- Fri Jan 24 14:38:29 UTC 2020 - Adrian Schröter - Fix crash when using preinstall dependency expansion in OBS - build-vm-kvm: use /boot/kernel.obs.build and /boot/initrd.obs.build as fallback regardless of the platform to have a global fallback kernel to use for distros that do not use the "kernel-obs-build" package to provide the guests kernel and initrd as the system binaries are not reliable for use in a guest system - use abuild user if $NOROOTFORBUILD is set. ------------------------------------------------------------------- Wed Jan 22 12:30:41 UTC 2020 - Adrian Schröter - fix createrepo existens check for appimager and docker builds in chroot - support to use virt-make-fs for ext3 VM builds ------------------------------------------------------------------- Fri Jan 10 09:28:39 UTC 2020 - Adrian Schröter - Arch Linux zstd format support - fix testbuild fail with latest rpm in SP2 and Leap 15.2 - do not retry automatically on disk full error ------------------------------------------------------------------- Tue Jan 7 12:54:44 UTC 2020 - Adrian Schröter - allow to enter an existing buildroot w/o recipe - generate milestone files also for pure online media - fix ccache setup of non-dotted compiler versions ------------------------------------------------------------------- Thu Dec 5 08:57:27 UTC 2019 - Adrian Schröter - qemu vm_type is running qemu system emulator now. Works for: * aarch64 * armv7l * ppc64/ppc64le * s390/s390x * riscv64 Note: this requires a kernel and initrd in build target via kernel-obs-build mechanic - various --shell improvements - new --shell-cmd to run commands in chroot/KVM/Qemu/... directly - raising minimal required memory in qemu mode to 512MB to be able to run Linux kernel at least - Normalize epoch 0 away when reading the module info - Add systemd-nspawn backend (by Oleg Girko) ------------------------------------------------------------------- Thu Nov 14 13:18:14 UTC 2019 - Adrian Schröter - Add Fedora module parser - Rpmmd parser: set up a dummy ExternEnt handler - Add support for modules and publish flags - add zstd to recommends - Support rpm's new expression expansion syntax ------------------------------------------------------------------- Mon Sep 23 11:57:05 UTC 2019 - Adrian Schröter - build-recipe-dsc: Move all build results, not just *.deb and *.changes - Mount /sys in chroot build - vc: Do not open the editor if content is set - adding leap 15.2 and SLE 15 SP2 configs - Fix some rpmlint warnings - return exit status 9 in the genbuildreqs case - Export SYSTEMD_OFFLINE=1 to avoid failures from systemctl ------------------------------------------------------------------- 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 - don't crash with no rpm macros defined - Kiwi: support parsing of repos where the .repo file got used - package hostarch definition in preinstallimages - avoid double creation of monitor fifo - Debian: - debootstrap: ensure /etc/hosts exists - debootstrap: Add abuild shadow password entry - livebuild: publish source tarball - Adds Debian configurations for jessie and unstable - collect *.ddeb, *.udeb files ------------------------------------------------------------------- Thu Aug 16 14:55:53 UTC 2018 - adrian@suse.de - docker format: New podman/buildah build engine support - Support for full names in changes files - Set %url macro when seeing an Url: - pacman CLI updates - enable core dump generation in VM builds - Disable kpti on guest kernel for performance and correctness - support for e2fsprogs 1.43.1 with old kernels ------------------------------------------------------------------- Fri Jun 29 12:02:10 UTC 2018 - FSchreiner@suse.com - docker: * use a correct prefixed label for disturl * Support building multiple image types containing a docker image * Set build user to root for docker/fissile builds * Compress containers so that old kiwi versions can handle them * Put obs-docker-support uninstall before the last user line * Also pass arch and buildflavor when creating the containerinfo * set disturl as container LABEL * Uncompress kiwi generated containers * build-vm-docker: type=bind instead of type=volume in --mount option - computeblocklists/extractbuild: * Tweak verbose logging of directories in computeblocklists/extractbuild * add support for FIEMAP ioctl * don't use bare F for file * document and use alternate ioctl numbers * more tweaks and sanity checks * Fallback to encode/decode helpers if perl does not support 'Q' in pack/unpack * Use 'eval' when querying the blocklist - Misc: * fix escaping in regexp * log toplevel KIWI directories in verbose mode * Split kiwi product parser in a separate function * Always add extra dependencies when doing sysdeps expansion * Fix REPOTYPE setting if the PKGCONFIG file is generated by a service * support zypper's handling of versioned deps * pam-modules got dropped on sles 15 * testing for build specific filesystem, which are more important then worker defaults * mark lint option as obsolete * Make sure that we know all pre/vminstalls ------------------------------------------------------------------- Tue Apr 3 11:30:47 UTC 2018 - adrian@suse.de - KIWI: Support OBS-Profiles kiwi annotation kiwi profile filtering - Switch to a little perl http server to get rid of the python2 dependency - Avoid Ubuntu 18.04 uncompress failure messages - Don't rely on AppImage's auto-detection for architecture - build-recipe-livebuild: count ONIE images as build results ------------------------------------------------------------------- Fri Feb 9 15:17:38 UTC 2018 - adrian@suse.de - add sysrq functionality for KVM builds - add initial SLES 15 config ------------------------------------------------------------------- Wed Jan 31 13:37:35 UTC 2018 - adrian@suse.de - add own baselibs config for SLE 11 ------------------------------------------------------------------- Wed Jan 24 16:04:35 UTC 2018 - adrian@suse.de - Fix picking of right changes file for changelog generation (boo#1077145) ------------------------------------------------------------------- Tue Nov 28 13:33:11 UTC 2017 - adrian@suse.de - Fixed Dockerfile repository parsing - Improve file name check extractbuild (CVE-2017-14804, bsc#1069904) - track release number of containers - Define SOURCEURL and PATCHURL macros - Keep preinstalled packages - add libidn2 and libunistring to preinstall for archlinux ------------------------------------------------------------------- Tue Nov 21 09:12:41 UTC 2017 - coolo@suse.com - buildignore the sle flavor of mkbaselibs for sle ------------------------------------------------------------------- Fri Nov 17 09:36:04 UTC 2017 - adrian@suse.de - prepare for suse_version 1550 in factory (by Dominique) ------------------------------------------------------------------- Thu Nov 9 16:12:53 UTC 2017 - adrian@suse.de - fixes syntax error fissile support - various container handling improvements - support new debian control.tar.xz files ------------------------------------------------------------------- Thu Oct 12 16:00:09 UTC 2017 - adrian@suse.de - proper fix for for liblua, for factory and leap 15.0 ------------------------------------------------------------------- Thu Sep 21 08:55:08 UTC 2017 - coolo@suse.com - Support getting the container tags from the Dockerfile - Put the disturl in the .buildenv file - Support rpm-buildroot-override buildflag - Support kvm builds on Debian - Support with/without/unless rich deps - Added obs-docker-support script for docker images - Initial SLE 15 config ------------------------------------------------------------------- Wed Aug 2 14:59:15 UTC 2017 - lnussel@suse.de - Temporary hack to aid liblua5_3 -> liblua5_3-5 rename ------------------------------------------------------------------- Thu Jul 20 13:59:20 CEST 2017 - mls@suse.de - switch baselibs scheme for debuginfo packages from foo-debuginfo-32bit to foo-32bit-debuginfo [fate#323217] ------------------------------------------------------------------- Fri Mar 17 12:57:03 UTC 2017 - adrian@suse.de - fix usage of the right service generated files. - debootstrap: Also mount sysfs - Fileprovides should only match package names, not provides - avoid export of build results of sym links pointing to external files - support build of different flavors via multibuild - experimental AppImage build support - reworked openstack support (still experimental) ------------------------------------------------------------------- Thu Feb 9 13:15:55 UTC 2017 - adrian@suse.de - updated confguration for tumbleweed - Arch linux fixes - mount swap by label - allow custom qemu options - allow to override hostname - fix build with vm-type lxc ------------------------------------------------------------------- Wed Jan 25 16:06:13 UTC 2017 - adrian@suse.de - fix haskell builds (bsc#1018895) - fix multi type kiwi profile handling - minor distribution config and bug fixes ------------------------------------------------------------------- Tue Dec 6 15:36:20 UTC 2016 - adrian@suse.de - add config for openSUSE Leap 42.3 (alpha, non-final) - handle Fedora 25 special cases - Improve /proc mount behaviour - fix dependency on CentOS (build#2415) - Use weak dependencies as 3rd choice breaker - support statistics from xvda devices - build env wipe support (--wipe command) ------------------------------------------------------------------- Tue Nov 29 07:01:58 UTC 2016 - adrian@suse.de - speed up build (for preinstall and keeping packages) - Recognize Recommends and Supplements relations of RPMs. - fix build against susetags repos ------------------------------------------------------------------- Tue Oct 25 15:51:17 UTC 2016 - adrian@suse.de - Add clang binaries to ccache symlinking - Fix a probable tabs to spaces bug - Kiwi: allow to specify ExclusiveArch and ExcludeArch - build-vm-kvm: use virtio-rng-device also on aarch64 - Add support for LXC as libvirt driver - support multiple image builds for multiple profiles - Add optional whitelisting for allowed buildroots and parameters - build-vm-xen: use xvd devices for disks and hvc0 for console for recent xen - build-vm-kvm: fix vm_enable_console also for kvm_serial_console case - sl13.3.conf: Prepare for bash 4.4, using libreadline7 - Add and clarify licenses ------------------------------------------------------------------- Wed Aug 10 11:51:43 UTC 2016 - lnussel@suse.de - calculate leap version for default config ------------------------------------------------------------------- Tue Aug 9 13:36:48 UTC 2016 - adrian@suse.de - first version of Leap 42.2 configuration - provide loop devices in docker VM - support lxc 2.0 - Add architecture-specific sources extract for Arch Linux - snapcraft improvements ------------------------------------------------------------------- Thu Jun 30 05:47:52 UTC 2016 - adrian@suse.de - adding first snapcraft support ------------------------------------------------------------------- Wed Apr 27 15:03:56 UTC 2016 - adrian@suse.de - fix build on armv7hl ------------------------------------------------------------------- Wed Apr 27 06:31:53 UTC 2016 - adrian@suse.de - run debtransform after buildtime source services - Handle also aarch32* and armv8 cases for kvm cpu switches - add support for LXC 1.0.8 - added DoD for aarch64 repositories on Debian ------------------------------------------------------------------- Fri Apr 8 09:37:41 UTC 2016 - adrian@suse.de - support unpacking of obscpio archives in source - added DoD for aarch64 repositories on Debian - aarch64_ilp32 support - KVM: telnet feature fixes and documentation - KVM: run qemu as user - fail when space allocation is not successful (on supported FS) ------------------------------------------------------------------- Fri Mar 4 07:29:26 UTC 2016 - adrian@suse.de - add switch to enable VM console input - add --vm-user option to run kvm as non-root - Implement experimental obscpio unpacking - Use fallocate -p for a fast zero-fill, correctly truncate. - PowerVM backend - Make --ignoreignore only ignore ignores from the project config - aggregate patches fields - Fail simpleimage build when integration scripts fail - mkdrpms: do not create debuginfo/source deltas Kiwi: - Support new Kiwi v8 (experimental) - Make sure kiwi is called in UTF-8 locale - Kiwi appliance: support "replaces" attribute and handle it as buildignore - KIWI profile support - Support a way to map urls to OBS project/repos Debian: - Support lintian when OBS_DCH_RELEASE set - Add support for debbuild's eval and .debmacros ------------------------------------------------------------------- Thu Nov 5 14:59:24 UTC 2015 - adrian@suse.de - add openSUSE 42.1 config (bnc#953782) - avoid full path in sha256 files of products - support virtio-rng device in kvm builds - lxc 1.1 support ------------------------------------------------------------------- Fri Oct 9 08:41:04 UTC 2015 - adrian@suse.de - avoid dependency to perl(parent) again - fixed buildtime source service execution - fixed debian collax support ------------------------------------------------------------------- Thu Sep 17 10:45:57 UTC 2015 - adrian@suse.de - collax support added - Fix auto-detection of -p1 option to patch - Handle .deb files that have sysv ar(1) filenames - Exported RECIPEFILE in build-recipe-livebuild ------------------------------------------------------------------- Wed Sep 2 15:29:28 UTC 2015 - adrian@suse.de - openSUSE 13.3 config added (bnc#944121) - Support old versions of Archive::Tar - debtransformer xz archive support - workaround for broken chroot command (Mageia:5 shipped with it) - Support building with Mandriva/Mageia Repositories - debian: Various bugfixes for lintian support - debian: Generate .changes files when building deb packages. - create /dev/loop-control for kernel >= 3.1 - support singleexport flag handling - Fix precedence of unary '-' and '!' - fix ppc qemu registration rules ------------------------------------------------------------------- Wed Jun 17 15:01:43 UTC 2015 - adrian@suse.de - fixing test suite call ------------------------------------------------------------------- Mon Jun 15 11:41:12 UTC 2015 - adrian@suse.de - support build time source services - docker VM support - Simple image creation support - vc: create changelog file only in case of a change - get hostarch based on preinstalled kernel image - architecture CanDo updates - avoid endless loops during in binfmt misc registration - debian debootstrap fixes - added support of debbuild build engine - optional support of network inside of KVM - allow lintian to break the build ------------------------------------------------------------------- Tue Mar 17 07:20:36 UTC 2015 - adrian@suse.de - workaround initrd breakage when using initrd for systemd with older systems - fixes for building in LXC containers - avoid emulator for arm on aarch64 - Fixing UTC symlink resolving when setting localtime - ppc64le can build ppc64 with KVM - build-vm-kvm: Switch armv7 to virt machine - Fix --no-checks with older rpmbuild - documenation updates ------------------------------------------------------------------- Fri Jan 30 07:23:36 UTC 2015 - adrian@suse.de - add recommend to perl(Net::SSL) (bnc#880212) - add support for debian debootstrap build engine - Update arch config - Add support for conflicts, addselfprovides, weakdeps to query functions - installed package handling works also for arch and debian now - large code cleanup - bugfixes and documentation updates ------------------------------------------------------------------- Mon Nov 24 15:45:59 UTC 2014 - adrian@suse.de - Add releasesuffix hack for new PTF handling - support parallel build jobs for debs - Fix repocfg usage in the "exact match" case - Improve exclarch handling for deb builds - rewritten workaround for broken chroot tool ------------------------------------------------------------------- Mon Oct 27 09:01:57 UTC 2014 - adrian@suse.de - add support for new chroot tool * fixes Ubuntu 14.10 builds - man pages for unrpm and vc ------------------------------------------------------------------- Fri Sep 19 05:37:09 UTC 2014 - adrian@suse.de - drop not available packages from SLE 12 config ------------------------------------------------------------------- Thu Sep 18 10:46:25 UTC 2014 - adrian@suse.de - fix syntax error in SLE 12 config ------------------------------------------------------------------- Tue Sep 16 06:29:02 UTC 2014 - adrian@suse.de - add SLE 12 config (bnc#893618) - build-vm-kvm: Always use -mem-prealloc when using -mem-path - debian livebuild support - various ppc handling fixes - various smaller fixes ------------------------------------------------------------------- Thu Apr 24 19:09:19 UTC 2014 - adrian@suse.de - build script got refactored and split in multiple modules ------------------------------------------------------------------- Thu Feb 20 18:41:16 UTC 2014 - adrian@suse.de - bugfix release - /sys mounting - binfmtmisc setup ------------------------------------------------------------------- Thu Dec 5 13:26:34 UTC 2013 - adrian@suse.de - fix ppc64le vs. ppc64 emulator check (none needed) ------------------------------------------------------------------- Thu Dec 5 10:01:44 UTC 2013 - adrian@suse.de - fix vc tool regression from "minor fixes" ------------------------------------------------------------------- Wed Dec 4 08:26:56 UTC 2013 - adrian@suse.de - support for project side configured VM kernels - ppc64le support - minor fixes ------------------------------------------------------------------- Tue Oct 15 09:37:05 UTC 2013 - adrian@suse.de - update openSUSE 13.1 build configuration - add openSUSE 13.2 build configuration - add support for m86k - add support for Tizen changelog date format - export .packages, .verified and .ova files for kiwi - initvm code cleanup - Do not specify compression format for Arch packages when extracting - export kiwi-image:$type for kiwi files with schemaversion 5.6 or newer - mount tmpfs on $BUILD_ROOT/dev/shm - Create devices nodes if udev is not running - more arm architectures - make version '0' a valid version - fix the call to lintian, lintian gets a dsc file as input - adding generic parameter to hand over kiwi parameters ------------------------------------------------------------------- Fri Aug 2 20:35:02 UTC 2013 - dvlaeev@suse.com - add requires for Fedora ------------------------------------------------------------------- Fri May 17 09:44:35 UTC 2013 - adrian@suse.de - fix build for non-SUSE rpm distros ------------------------------------------------------------------- Fri May 17 09:24:49 UTC 2013 - adrian@suse.de - fix a number of issues regarding statistics collection => works with more udev versions now ------------------------------------------------------------------- Wed May 15 16:17:04 UTC 2013 - adrian@suse.de - fix qemu-binfmt registration in chroot builds ------------------------------------------------------------------- Tue May 14 10:52:18 UTC 2013 - adrian@suse.de - debian builds call linitian now if installed - Arch Linux: support new pacman tool syntax - support kiwi installation medias with new kiwi versions - fixed regression using build host rpm instead of the version from chroot - fixed repository priority ordering, when only some repos have a priority and kiwi appliances get build ------------------------------------------------------------------- Wed May 8 11:12:37 UTC 2013 - adrian@suse.de - support multi architecture initvm binaries => vminit gets build as subpackage now again - De-hardcode hugetlbfs from ppc - Do not emulate VGA - support new nameing scheme of install images of kiwi builds ------------------------------------------------------------------- Mon Apr 29 07:40:19 UTC 2013 - adrian@suse.de - disabling fsync again for newer rpm versions to speed up installation phase again. ------------------------------------------------------------------- Fri Apr 26 11:35:37 UTC 2013 - adrian@suse.de - cloud support for Amanzon EC2 and openstack - fixed SPEC_REL support - fixed zvm build - fixed uml support - fixing ext4 usage on old distros - final openSUSE 12.3 config - arm build support fixes ------------------------------------------------------------------- Tue Apr 2 11:09:59 UTC 2013 - coolo@suse.com - add sl13.1.conf (openSUSE:Factory prjconf of 2013-03-29) - have ncurses-devel-32bit require ncurses-devel and not ncurses-32bit - do not put .socket files into the 32bit packages - unbreak kvm for x86_64 ------------------------------------------------------------------- Fri Mar 8 09:43:58 UTC 2013 - adrian@suse.de - fix kvm support for x86_64 again ------------------------------------------------------------------- Mon Mar 4 11:03:17 UTC 2013 - adrian@suse.de - avoid writing out incomplete IO statistics ------------------------------------------------------------------- Wed Feb 27 09:14:05 UTC 2013 - adrian@suse.de - ARM AArch64 support added - Generic system emulator support as VM added - s390 z/VM build environment support added - support collecting resource statistics during build (for OBS 2.4) - rpm5 fixes - kvm support for armv7l - mount /dev/pts with right permissions ------------------------------------------------------------------- Mon Nov 26 08:49:59 UTC 2012 - adrian@suse.de - fixed deb building - collecting statistics during VM build ------------------------------------------------------------------- Fri Oct 5 10:58:15 UTC 2012 - adrian@suse.de - backport /proc mounting for rpmlint for factory ------------------------------------------------------------------- Thu Sep 27 07:33:21 UTC 2012 - coolo@suse.com - change to automatic date version in _service - update from git (4afd9f0ee03f9e51cf8db9a27fae4663e3f4dde6) Martin Koegler (1): Bug fix: ignore links in orig tar files Michael Schroeder (1): - be more verbose when the preinstallimage unpack fails Stephan Kulow (2): the difference between openSUSE and SLE is outdated do not cumulate packages with 12.2's rpm ------------------------------------------------------------------- Tue Sep 25 11:25:49 UTC 2012 - coolo@suse.com - remove build-mkbaselibs-sle, the split is no longer necessary - remove default requires for devel-32bit ------------------------------------------------------------------- Tue Sep 25 08:30:55 UTC 2012 - coolo@suse.com - fix logic for cumulating packages ------------------------------------------------------------------- Mon Sep 24 15:47:27 UTC 2012 - coolo@suse.com - update to current git (03587016a7eca7788f404820642a2b5a1556aa0b) Adrian Schröter (1): - use default MEMSIZE in check_for_ppc Anas Nashif (2): pass --use-system-qemu option to init_buildsystem Support https repositories Frank Lichtenheld (1): init_buildsystem: fail early on reorder failure Martin Koegler (4): Diff can't handle empty files Refactor diff generation Handle overriden files already present in the orig.tar.gz correctly in debtransform Correct version number of binaries, if necessary Michael Schroeder (3): - don't add self-provides for src packages - support binary rpms with fo SOURCERPM header element - drop '-o' bsdtar flag when unpacking preinstall images Werner Fink (1): Make init_buildsystem able to use the features of newer rpm ------------------------------------------------------------------- Fri Aug 24 14:04:11 CEST 2012 - mls@suse.de - update to current git * fixed arch PKGBUILD parsing * add .qcow2 file handling for kiwi * support root tar ball output format of kiwi ------------------------------------------------------------------- Tue Aug 21 08:56:05 UTC 2012 - adrian@suse.de - update to current git * fixed cross build initialsation with chroot * ignore prereqs for subpacks to be built * more Arch Linux support * new --vmdisk-clean switch - add recommends to qemu-linux-user ------------------------------------------------------------------- Thu Jul 19 07:47:23 UTC 2012 - adrian@suse.de - update openSUSE 12.2 config to RC1 state - add openSUSE 12.3 config to fix build for factory - do not package compressed _and_ uncompressed kiwi images - add build timestamps in each logfile line ------------------------------------------------------------------- Mon Jul 2 08:40:26 UTC 2012 - adrian@suse.de - preinstallimage support added ------------------------------------------------------------------- Thu Jun 14 13:54:42 UTC 2012 - adrian@suse.de - build fixes for Fedora 17 - syntax error fix for kiwi vmx builds ------------------------------------------------------------------- Tue Jun 5 14:25:08 UTC 2012 - coolo@suse.com - update from git: (mls) simplify debug package code so that it also works with --target ------------------------------------------------------------------- Thu May 31 12:24:32 UTC 2012 - adrian@suse.de - take care of prjconf target: definition for spec file parsing ------------------------------------------------------------------- Wed May 30 12:51:09 UTC 2012 - adrian@suse.de - support for breakages in Fedora:17 * support enforced ordering during preinstall and vminstall phase * allow to extract files via symlinked directories ------------------------------------------------------------------- Mon May 14 14:54:27 UTC 2012 - coolo@suse.com - work around command line size limit mkbaselibs may fail on an excessive number of packages (bnc#761977) - improve build root owner setting - don't die at compile time if Archive::Tar is not available ------------------------------------------------------------------- Tue Apr 24 13:59:49 UTC 2012 - adrian@suse.de - fixed breakage with older perls - ~ support for rpm version compare - handle broken deb packages better - no more hardcoded copy-in of qemu* binaries ------------------------------------------------------------------- Mon Apr 23 09:49:45 UTC 2012 - adrian@suse.de - do not use sle-baselibs.conf on openSUSE ------------------------------------------------------------------- Tue Apr 17 13:54:12 UTC 2012 - cfarrell@suse.com - license update: GPL-2.0+ and GPL-2.0 See e.g. spec2changelog by Pascal Bleser. Also, there should be a copy of the GPL-2.0 license in the package ------------------------------------------------------------------- Wed Mar 7 09:55:02 UTC 2012 - adrian@suse.de - check_emulator needs to use $BUILD_DIR for initvm checks or obs worker builds may break - Introduce --vmdisk-mount-options ------------------------------------------------------------------- Wed Feb 29 10:02:52 UTC 2012 - adrian@suse.de - using xz compression for kiwi raw files - progress counters during installing - 12.2 config added ------------------------------------------------------------------- Mon Feb 13 08:49:34 UTC 2012 - adrian@suse.de - Support for openSUSE 12.2 (current factory) - Support for crossbuild via Hostarch directive - PPC KVM support - swap space gets taken into account for ulimits - Failure on not supported personality set ------------------------------------------------------------------- Tue Oct 25 14:40:05 UTC 2011 - adrian@suse.de - use github.com as git repo now - fix build for rpmv5 ------------------------------------------------------------------- Mon Oct 10 19:29:20 CEST 2011 - mls@suse.de - add sles11sp2 build config and adapt autodetection [bnc#711770] ------------------------------------------------------------------- Tue Oct 4 12:43:27 UTC 2011 - adrian@suse.de - use new qemu-*-binfmt handler to run commands with correct $0 - fix build for Factory ------------------------------------------------------------------- Mon Sep 26 20:33:59 UTC 2011 - adrian@suse.de - fixing kvm cpuid setting for AMD and Intel CPU's - support new xen tools - fixed qemu build initialisation ------------------------------------------------------------------- Sun Aug 7 19:58:28 UTC 2011 - opensuse@cboltz.de - Requires:/Recommends: were part of the package description. Moved them to the correct place. ------------------------------------------------------------------- Fri Jul 1 07:26:34 UTC 2011 - adrian@suse.de - compat mode for broken kiwi of openSUSE 11.4 ------------------------------------------------------------------- Thu Jun 30 10:42:15 UTC 2011 - adrian@suse.de - fixed kiwi execution call for some versions ------------------------------------------------------------------- Fri Jun 17 08:35:15 UTC 2011 - adrian@suse.de - support new kiwi command line mode ------------------------------------------------------------------- Mon Jun 6 14:57:47 UTC 2011 - adrian@suse.de - do not build ia64 baselibs packages for openSUSE anymore ------------------------------------------------------------------- Wed May 25 12:14:38 UTC 2011 - adrian@suse.de - allow to use simple spec file parser via Build::show ------------------------------------------------------------------- Thu May 12 10:20:53 UTC 2011 - adrian@suse.de - conflict with old bsdtar (not supporting --chroot) ------------------------------------------------------------------- Wed Apr 27 12:34:17 UTC 2011 - adrian@suse.de - revert to single cpu build default for debian packages ------------------------------------------------------------------- Fri Apr 15 08:55:14 UTC 2011 - adrian@suse.de - switch back to single process build for debian to be conform with their policy - use cpuid kvm64 on kvm for 64bit as workaround for a cpuid bug ------------------------------------------------------------------- Tue Mar 29 14:59:28 UTC 2011 - lnussel@suse.de - make sure default.conf is no stale symlink ------------------------------------------------------------------- Tue Mar 1 15:35:21 UTC 2011 - adrian@suse.de - support new cross build initvm. Done by James Perkins from LinuxFoundation - do not use loop device anymore when using block devices directly ------------------------------------------------------------------- Thu Jan 20 10:18:09 UTC 2011 - lnussel@suse.de - force use of bsdtar for VMs (bnc#665768, CVE-2010-4226) ------------------------------------------------------------------- Thu Nov 11 12:24:13 UTC 2010 - adrian@suse.de - workaround for distros with appstart like Ubuntu 10.10 ------------------------------------------------------------------- Tue Nov 2 16:32:42 UTC 2010 - lnussel@suse.de - delta size limit 80% - actually unlink the delta file if the delta is too big ------------------------------------------------------------------- Wed Oct 27 13:38:48 UTC 2010 - lnussel@suse.de - use '.drpm' suffix instead of '.delta.rpm' for delta rpms - makedeltarpms -> mkdrpms and also rename subpackage to match script name - since mkdrpms needs Build.pm make perl-TimeDate dependency of build optional ------------------------------------------------------------------- Mon Oct 18 14:38:16 UTC 2010 - lnussel@suse.de - add missing optional perl dependencies ------------------------------------------------------------------- Fri Oct 15 10:27:08 UTC 2010 - adrian@suse.de - update to current git * export also fallback archs as exclusive archs for kiwi product building, fixes factory dvd5 64bit media * cross build fixes by Martin Mohring * correct disk image file creation, it was one byte too large by James Perkins ------------------------------------------------------------------- Tue Sep 21 13:23:00 UTC 2010 - adrian@suse.de - update to current git * workaround for supporting rpm install on cross build with native acceleration ------------------------------------------------------------------- Mon Sep 20 12:25:56 UTC 2010 - lnussel@suse.de - package mkdrpms script in separate package ------------------------------------------------------------------- Tue Aug 24 08:32:05 UTC 2010 - adrian@suse.de - update to current git * support for mips cross build ------------------------------------------------------------------- Wed Aug 4 15:31:41 UTC 2010 - adrian@suse.de - update to current git * replace release number macros with 0 if not specified ------------------------------------------------------------------- Wed Jul 28 15:44:41 CEST 2010 - mls@suse.de - update to current git * document --repo and --dist * update wiki links * fix bugs in repo handling * fix distribution autodetection code ------------------------------------------------------------------- Thu Jul 22 09:22:03 UTC 2010 - adrian@suse.de - update to current git * support for Files provide ------------------------------------------------------------------- Thu Jul 8 13:15:42 UTC 2010 - adrian@suse.de - update to current git * export BUILD_DEBUG so rpmlint can check for it (bnc#618004) ------------------------------------------------------------------- Tue Jun 29 15:06:06 CEST 2010 - mls@suse.de - update to current git * add 11.3 config * fix repo creation in --noinit case * support ovf files directly * allow multiple --oldpackages * delta rpm support ------------------------------------------------------------------- Mon Jun 21 12:20:36 UTC 2010 - adrian@suse.de - update to current git * fixes for image building for SLE 10 * fix parsing of macros that contain {} blocks * support xz decoder helper script * don't substitute in lines with %(), the parser cannot handle it (bnc#613965) * run kvm instance with the right number of cpus according to given parallel build jobs ------------------------------------------------------------------- Sat May 29 13:35:34 UTC 2010 - adrian@suse.de - update to current git * noatime VM mount * _service file rename happens inside of chroot/vm now. ------------------------------------------------------------------- Tue May 4 08:26:13 UTC 2010 - adrian@suse.de - update to current git * CBinstall and CBPreninstall directive support from Jan-Simon ------------------------------------------------------------------- Wed Apr 21 09:58:46 UTC 2010 - adrian@suse.de - detect kvm virtio initrds on SUSE systems automatically ------------------------------------------------------------------- Mon Apr 19 00:54:32 CEST 2010 - ro@suse.de - build-mkbaselibs: also move baselibs*conf to subpackage ------------------------------------------------------------------- Fri Apr 16 01:11:45 CEST 2010 - ro@suse.de - add BuildIgnore build-mkbaselibs to be able to bootstrap ------------------------------------------------------------------- Thu Apr 15 14:04:56 UTC 2010 - adrian@suse.de - split out -mkbaselibs package to avoid build dependency problems on perl version updates in future. - update to current git * added armv6el to emulator archs by Jan-Simon. * fixing a logic error in arch= attribute handling for kiwi ------------------------------------------------------------------- Fri Apr 9 07:58:24 UTC 2010 - adrian@suse.de - update to current git * Support for remote yum repos by yi.y.yang@intel.com * fixed kiwi file parsing for arch= attributes ------------------------------------------------------------------- Wed Mar 31 15:00:48 UTC 2010 - adrian@suse.de - update to current git * kvm autosetup enhancements * multiple bugfixes and refactoring ------------------------------------------------------------------- Wed Mar 10 13:34:45 UTC 2010 - adrian@suse.de - update to current git * Kiwi exclude arch handling ------------------------------------------------------------------- Mon Mar 8 12:07:03 UTC 2010 - adrian@suse.de - create default.conf symlink to correct *.conf based on %suse_version and %sles_version macros ------------------------------------------------------------------- Thu Feb 25 08:22:52 UTC 2010 - adrian@suse.de - add dependency to tar (needed for deb builds) - use current git * Added '--uid uid:gid' feature to specify abuild id in chroot (by David Greaves) ------------------------------------------------------------------- Sat Feb 20 10:49:00 UTC 2010 - adrian@suse.de - update to current git * fix for permissions for debian (done by Jan-Simon) ------------------------------------------------------------------- Thu Feb 11 19:09:11 UTC 2010 - adrian@suse.de - update to current git * fixed handling of kiwi build results ------------------------------------------------------------------- Mon Feb 8 15:52:12 UTC 2010 - adrian@suse.de - update to current git * support kiwi 4.1 schema files ------------------------------------------------------------------- Tue Jan 19 14:57:22 UTC 2010 - adrian@suse.de - update to current git * fixed missing --root parameter for substitutedeps call ------------------------------------------------------------------- Mon Jan 18 16:38:58 UTC 2010 - adrian@suse.de - update to current git * create .sha256 files for kiwi image results ------------------------------------------------------------------- Wed Jan 13 15:21:28 UTC 2010 - adrian@suse.de - update to current git repo * unbreaking kiwi builds again ------------------------------------------------------------------- Sun Jan 3 13:02:40 UTC 2010 - adrian@suse.de - update to current git repo, update to commit 549cf6c6e148b7f8c05c12ee06f3094cb67149f9 * minor bugfixes * sparc support fixes ------------------------------------------------------------------- Thu Dec 10 07:00:00 UTC 2009 - adrian@suse.de - switch to git repository, update to commit c8b33e430bfb40b80df43249279bd561d874d786 * product building via abuild user * prodoct building speedup ------------------------------------------------------------------- Fri Nov 27 09:44:56 UTC 2009 - adrian@suse.de - update to svn(r9279) Debian packages get configured at install time again now. But keeping additional configuration step afterwards for failed configutions (due to dep cycles) ------------------------------------------------------------------- Fri Nov 27 09:11:15 UTC 2009 - adrian@suse.de - add requires to perl-TimeDate for changelog2spec app ------------------------------------------------------------------- Wed Nov 25 10:54:24 UTC 2009 - adrian@suse.de - update to svn(r9238) * Debian chroot enviroments are running post installation scripts now after all packages got installed, not after each installation (partly fixes Ubuntu 9.10 setup) ------------------------------------------------------------------- Sat Nov 21 19:50:44 UTC 2009 - adrian@suse.de - update to current svn(r9154) * add support for xz compressed rpms (Fedora 12) on platforms without xz support in rpm. * speed up install by disabling fsync in rpm config ------------------------------------------------------------------- Thu Nov 5 06:16:05 UTC 2009 - adrian@suse.de - update to current svn (r8506) - product iso generation is done by kiwi now - debs get generated via "make install" ------------------------------------------------------------------- Wed Sep 23 12:01:05 CEST 2009 - mls@suse.de - update to current svn (r8048) - support openSUSE 11.2 [bnc#539914] ------------------------------------------------------------------- Mon Jul 27 17:03:47 CEST 2009 - ro@suse.de - update to current svn (r7751) - support for legacy releasepkg mechanism - only print parse warnings if $config->{'warnings'} is set - set warnings for expanddeps/substitutedeps - use UTC as default timezone - also consider patches as sources - do not call depmod until we use also the native kernel, it can't match otherwise - return with value 3, if basic file system creation fails. bs_worker will mark the build host as bad and retries on another one. - handle files from service correctly and strip their prefix. - - also add rpmv3 compatibility hack to createrpmdeps - mount proc filesystem for build compare run - fix for ccache support from - add build-ids for debuginfo packages for subpacks ------------------------------------------------------------------- Wed Jun 3 13:40:08 CEST 2009 - adrian@suse.de - update to current svn (r7483) * Jan-Simons "ChangeTarget" support * fix for handling missing self provides with rpm format 3.0.6 ------------------------------------------------------------------- Thu Apr 23 12:14:36 CEST 2009 - adrian@suse.de - update to current svn (r7164) * package vc tool correctly * avoid running fsck on vm instances after 23 build runs - install files via Makefile instead of manual calls in spec file ------------------------------------------------------------------- Mon Apr 20 14:48:41 CEST 2009 - adrian@suse.de - update to current svn (r7126) * new blocklist based build result export * Martin Mohrings cross build extensions * vc tool included now ------------------------------------------------------------------- Wed Mar 23 15:20:17 CET 2009 - adrian@suse.de - Fix for "Requires(pre/post)" tags - fix missing abuild group in /etc/gshadow on debian like distros ------------------------------------------------------------------- Wed Feb 25 15:20:17 CET 2009 - adrian@suse.de - Update for bug fix for image build with additional packages in --create step (fix from cthiel, bnc#479537) ------------------------------------------------------------------- Fri Feb 20 12:04:00 CET 2009 - adrian@suse.de - Fix kvm support together with Alexander - Support for new disturl containing a complete pointer to build service instance resource - add support for package compare to allow Build Service to drop same packages after build - image repack support from Christoph ------------------------------------------------------------------- Tue Jan 27 14:27:19 CET 2009 - adrian@suse.de - update to current buildservice/1.5 branch - More fixes for kiwi image build - Move Susetags.pm to correct Build:: namespace ------------------------------------------------------------------- Wed Dec 10 14:27:19 CET 2008 - froh@suse.de - update to r5853: - added: new armv7el arch for all binaries for up to ARMv7 EABI with VFP - Fix kiwi image build support within osc ------------------------------------------------------------------- Fri Dec 5 09:11:19 CET 2008 - froh@suse.de - remove baselibs.conf from the spec file, too ------------------------------------------------------------------- Fri Dec 5 02:26:21 CET 2008 - ro@suse.de - delete baselibs.conf (nowadays stored in package sources) ------------------------------------------------------------------- Wed Dec 3 13:17:26 CET 2008 - ro@suse.de - delete automatic requires for debuginfo-xxbit ------------------------------------------------------------------- Wed Dec 3 11:30:37 CET 2008 - froh@suse.de - config update ------------------------------------------------------------------- Fri Nov 28 15:19:21 CET 2008 - froh@suse.de - many kiwi fixes - _no_ cross build support yet ------------------------------------------------------------------- Thu Nov 13 15:01:59 CET 2008 - ro@suse.de - update mkbaselibs broken by previous debuginfo change - various fixes for kiwi build - add sl11.1.conf - add support for --disturl - also save .desktopfiles for coolo ------------------------------------------------------------------- Thu Oct 23 14:59:19 CEST 2008 - ro@suse.de - disable ppc:ia32 stuff again, causes trouble and can not work ------------------------------------------------------------------- Tue Oct 21 13:25:50 CEST 2008 - jblunck@suse.de - Generate debuginfo packages for baselibs (bnc #396196) ------------------------------------------------------------------- Mon Oct 20 17:56:20 CEST 2008 - ro@suse.de - update to svn trunk of today: - init_buildsystem: check for some left space before calling rpmbuild - create dev/shm as directory - baselibs_global.conf: update to current internal revision - add ia32 stuff for x86 binaries on ppc - add ldconfig for all non-devel baselibs packages - changed: to function also with emulators better use fakeroot-tcp for debian build - fixed: changed basis for memory calculation to assume also a stack which can be swapped well. gcc often needs much memory here - recognize SLES10 - fix boolification in && and || - re-preinstall critical packages on update - fix creation of buildenv to do it the same time with and without VM. - fixes installation-images build for ppc - fixed #406596: don't ignore BuildRequires in subpackages - print finished message - set BUILD_USER depending on the suse_version like it is done in old autobuild - added documentation for specfile control comments for build(1) - add --incarnation - add --create-build-binaries - support badarch (aka excludearch) - add support for Requires(pre) or (post) semantic ------------------------------------------------------------------- Mon Aug 11 16:15:23 CEST 2008 - adrian@suse.de Update from current svn trunk: - Improved XEN support (XEN call only once per build) - Add post build check hooks - rpmlint support - added kvm support - refactored code in various places ------------------------------------------------------------------- Tue Jun 3 17:53:22 CEST 2008 - mls@suse.de - fix debtransform bug [bnc#396766] ------------------------------------------------------------------- Thu May 29 16:17:17 CEST 2008 - mls@suse.de - add 11.0 config - fix debian provides - fix rpm tag parsing - add with/without/define/ccache/icecream/debug options - update mkbaselibs ------------------------------------------------------------------- Fri Sep 14 18:27:13 CEST 2007 - mls@suse.de - add sl10.3 config [#310089] - also look for BuildRequires in subpackage definitions [#305568] - allow removal of more config parameters ------------------------------------------------------------------- Thu Aug 2 15:56:09 CEST 2007 - mls@suse.de - support 'order' config option - support 'patterntype' config option - new setdeps() method - support for flexible query options - support 'description' query - fix bug in changelog2spec time cutoff - make debtransform understand Debtransform-Tar/Debtransform-Files-Tar/ Debtransform-Series - fix bug in substitutedeps ------------------------------------------------------------------- Wed Jun 13 17:18:17 CEST 2007 - mls@suse.de - implement rpm installation order calculation in perl - make substitute code modify requires, too - add filelist query support - add prereq parsing support - speed up version comparison a bit ------------------------------------------------------------------- Thu May 10 20:02:29 CEST 2007 - mls@suse.de - add _vendor to configs - fix deban dependency compare - allow not operator in configs - fix build from source rpms ------------------------------------------------------------------- Thu Apr 12 16:22:16 CEST 2007 - mls@suse.de - add --root to rpm call in rpm to work around a bug in rpm [#255720] ------------------------------------------------------------------- Thu Apr 5 15:59:21 CEST 2007 - mls@suse.de - update to 1561: * support architecture dependand requires in dsc files * support "global" definitions for rpm * support vminstall config option ------------------------------------------------------------------- Mon Mar 12 15:40:49 CET 2007 - mls@suse.de - update to r1419: * fix buildroot in debtransform * obey version numbers when expanding ------------------------------------------------------------------- Fri Mar 2 21:23:40 CET 2007 - mls@suse.de - transform suse changes file to rpm specfile format - improved debian support ------------------------------------------------------------------- Fri Jan 26 17:14:08 CET 2007 - poeml@suse.de - update to r1114: - re-add the lost unrpm script ------------------------------------------------------------------- Fri Jan 26 15:58:32 CET 2007 - poeml@suse.de - update to r1110: - make exclarch an array - remount root rw in xen case, needed if root is not reiserfs - add repotype/runscripts options - remove devs in sl10.1/10.2 - fix boolean test to make "00" false like rpm does - add rpm_verscmp for version comparison - runscripts - macro blocks - read_config_dist - useful xen exit status - add --kill - update 10.2 config - extend spec/dsc parser - fixed two bugs in the specfile parser ------------------------------------------------------------------- Fri Nov 24 17:43:28 CET 2006 - mls@suse.de - fix suse_version in sl10.1/sles10 config - add sl10.2 config - make dist autodetection work with opensuse - fix macro sequencing and expression parser bugs - treat preinstalls as keep ------------------------------------------------------------------- Thu Aug 24 00:49:19 CEST 2006 - ro@suse.de - init_buildsystem: when preinstalling, handle only sh scripts ------------------------------------------------------------------- Wed Jun 14 17:42:26 CEST 2006 - mls@suse.de - support for buildservice and debian packages ------------------------------------------------------------------- Fri Apr 28 17:07:30 CEST 2006 - mls@suse.de - add ndeps back to expansion calls - save original macro name so that other regexp calls don't destroy it ------------------------------------------------------------------- Wed Apr 19 15:34:10 CEST 2006 - mls@suse.de - add --list-state option [#119869] - suppress stat messages when deleting rpms [#154385] - delete not-ready flag when rpm expansion failes [#133568] - update baselibs.conf ------------------------------------------------------------------- Tue Apr 11 16:00:53 CEST 2006 - mls@suse.de - fix typo in configs - fix macro handling ------------------------------------------------------------------- Fri Apr 7 19:06:09 CEST 2006 - mls@suse.de - mkbaselibs: do not leave .src.rpm in the release [#158816] ------------------------------------------------------------------- Tue Apr 4 12:26:24 CEST 2006 - mls@suse.de - add update-alternatives to java2-devel-packages macro [#156137] ------------------------------------------------------------------- Mon Mar 27 20:01:01 CEST 2006 - mls@suse.de - run zic to set default timezone [#142363] - update baselibs.conf ------------------------------------------------------------------- Fri Mar 24 17:04:41 CET 2006 - mls@suse.de - fix handling of "keep" [#160346] - fix old configs [#159947] ------------------------------------------------------------------- Mon Mar 20 14:35:11 CET 2006 - mls@suse.de - make mkbaselibs use the right version for the srcrpm - update mkbaselibs configuration files ------------------------------------------------------------------- Fri Mar 10 14:15:40 CET 2006 - mls@suse.de - add package expansion and dependency substitution support ------------------------------------------------------------------- Wed Feb 8 21:29:48 CET 2006 - agruen@suse.de - Adjust the package lists so that the build script can at least be used again. ------------------------------------------------------------------- Wed Jan 25 21:45:57 CET 2006 - mls@suse.de - converted neededforbuild to BuildRequires ------------------------------------------------------------------- Mon Sep 12 11:11:30 CEST 2005 - mls@suse.de - also search for ix86 packages when building x86_64 [#116069] ------------------------------------------------------------------- Mon Sep 5 12:13:09 CEST 2005 - mls@suse.de - add --baselibs option - fix --extra-packs ------------------------------------------------------------------- Thu May 12 14:45:32 CEST 2005 - mls@suse.de - Fix typo in init_buildsystem that prevented the reuse of the build environment [#74714] ------------------------------------------------------------------- Fri Mar 11 18:03:30 CET 2005 - mls@suse.de - integrated patches into tarball - allowed build for older dists [#65506] ------------------------------------------------------------------- Wed Mar 2 12:28:07 CET 2005 - agruen@suse.de - Some more cleanups for 9.3. - When using the default list of packages, also try to include the packages in neededforbuild. ------------------------------------------------------------------- Mon Feb 28 17:36:02 CET 2005 - agruen@suse.de - ldconfig must be called with its absolute path. ------------------------------------------------------------------- Tue May 25 14:49:13 CEST 2004 - mls@suse.de - overhaul the manpage ------------------------------------------------------------------- Thu Mar 25 18:31:56 CET 2004 - mls@suse.de - incorporate ro's diff ------------------------------------------------------------------- Wed Mar 24 20:26:39 CET 2004 - mls@suse.de - really adapt to 9.1 - add --root and --extra-packs options - use BuildRequires: line - use user 'abuild' if norootforbuild found - fix BUILD_DIR security issue (#35281) ------------------------------------------------------------------- Thu Mar 11 20:00:13 CET 2004 - ro@suse.de - adapted for 9.1 ------------------------------------------------------------------- Mon Nov 10 23:54:37 CET 2003 - mmj@suse.de - Accept "-h" for help - rpm -ba is now rpmbuild -ba - Add Maximum RPM reference ------------------------------------------------------------------- Mon Nov 10 13:48:39 CET 2003 - mmj@suse.de - Update the default USEDFORBUILD to match todays packages - Don't build as root ------------------------------------------------------------------- Wed Oct 15 12:23:49 CEST 2003 - mmj@suse.de - Fix to work on amd64 (from mls) [#32229] ------------------------------------------------------------------- Fri Sep 5 16:01:54 CEST 2003 - mls@suse.de - select i586 on i686 is user didn't specify arch - complain if user wan't to build i686 on a not-i686 processor - patch rpmrc so that i686 rpms are written if building for i686 ------------------------------------------------------------------- Thu Sep 4 16:12:03 CEST 2003 - mls@suse.de - port to sl90 - allow path for BUILD_RPMS - add BUILD_ARCH and autodetection - add --jobs and --target options ------------------------------------------------------------------- Fri Aug 29 05:40:30 CEST 2003 - nashif@suse.de - fixed call for "head" ------------------------------------------------------------------- Thu Aug 7 11:58:11 CEST 2003 - schwab@suse.de - Fix typo. ------------------------------------------------------------------- Thu Aug 7 09:57:35 CEST 2003 - mmj@suse.de - Enhance build.1 a bit ------------------------------------------------------------------- Sat Mar 8 08:11:29 CET 2003 - kukuk@suse.de - Fix build on 8.2 (coreutils) [Bug #24895] ------------------------------------------------------------------- Fri Jan 31 19:58:17 CET 2003 - kukuk@suse.de - Fix build patch from bk. ------------------------------------------------------------------- Wed Jan 29 14:08:09 CET 2003 - kukuk@suse.de - Add workaround for duplicate packages for different archs - Add support for upcoming 8.2 ------------------------------------------------------------------- Fri Oct 4 17:18:26 CEST 2002 - bk@suse.de - integrate 8.1 diff into tarball and update README - build.dif: init_buildsystem: add support for earlyer distributions ------------------------------------------------------------------- Mon Sep 9 13:00:19 MEST 2002 - mls@suse.de - Adjust for SuSE Linux 8.1 again - Fix parameter parsing - Changed build to accept .src.rpm sources ------------------------------------------------------------------- Mon Aug 19 11:14:50 CEST 2002 - kukuk@suse.de - Adjust for SuSE Linux 8.1 ------------------------------------------------------------------- Tue Jul 30 16:00:16 CEST 2002 - kukuk@suse.de - Fix get_version_number.sh ------------------------------------------------------------------- Thu Jul 18 13:19:11 CEST 2002 - kukuk@suse.de - Don't create /etc/rc.config ------------------------------------------------------------------- Wed Jul 3 09:48:44 CEST 2002 - kukuk@suse.de - Add default package list for new spec files without usedforbuild - Make it work with gcc 2.95 and gcc 3.1 ------------------------------------------------------------------- Thu Mar 7 16:58:21 CET 2002 - kukuk@suse.de - Fix build/init_buildsystem ------------------------------------------------------------------- Mon Jan 14 16:38:56 CET 2002 - kukuk@suse.de - Add manual page from Gerd Knorr ------------------------------------------------------------------ Fri Dec 14 21:27:00 CET 2001 - kukuk@suse.de - Fix file list - Ignore new RPMs from pre-8.0 on 7.3 ------------------------------------------------------------------ Fri Dec 14 15:49:38 CET 2001 - kukuk@suse.de - More fixes ------------------------------------------------------------------- Tue Nov 27 16:10:57 CET 2001 - kukuk@suse.de - New build script which uses "usedforbuild" ------------------------------------------------------------------- Thu Jan 18 13:11:25 CET 2001 - kukuk@suse.de - Update Readme and init_buildsystem for 7.1 ------------------------------------------------------------------- Thu Nov 30 18:09:49 CET 2000 - kukuk@suse.de - Update init_buildsystem, add README ------------------------------------------------------------------- Wed Nov 15 18:07:58 CET 2000 - kukuk@suse.de - First version obs-build-20210120/dist/build.dsc000066400000000000000000000002641400202264700163570ustar00rootroot00000000000000Format: 1.0 Source: build Version: 20200110 Binary: build Maintainer: Adrian Schroeter Architecture: all Standards-Version: 3.7.2 Build-Depends: debhelper (>= 4) obs-build-20210120/dist/build.spec000066400000000000000000000177771400202264700165610ustar00rootroot00000000000000# # spec file for package build # # Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # # needsrootforbuild # needsbinariesforbuild %if 0%{?suse_version} %define __pkg_name build %else %define __pkg_name obs-build %endif Name: %{__pkg_name} Summary: A Script to Build SUSE Linux RPMs License: GPL-2.0-only OR GPL-3.0-only Group: Development/Tools/Building Version: 20200131 Release: 0 Source: obs-build-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch #!BuildIgnore: build-mkbaselibs build-mkbaselibs-sle # Keep the following dependencies in sync with obs-worker package Requires: bash 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 # For testcases BuildRequires: perl(Date::Parse) BuildRequires: perl(Test::Harness) BuildRequires: perl(Test::More) %if 0%{?fedora} Requires: perl-MD5 Requires: perl-TimeDate BuildRequires: perl-TimeDate %endif Conflicts: bsdtar < 2.5.5 BuildRequires: perl(Date::Parse) BuildRequires: perl(Test::Harness) BuildRequires: perl(Test::More) BuildRequires: perl(YAML) BuildRequires: perl(YAML::LibYAML) %if 0%{?suse_version} > 1000 || 0%{?centos_version} >= 800 || 0%{?rhel_version} >= 800 || 0%{?fedora_version} >= 21 # None of them are actually required for core features. # Perl helper scripts use them. Recommends: perl(Date::Language) Recommends: perl(Date::Parse) Recommends: perl(LWP::UserAgent) Recommends: perl(Pod::Usage) Recommends: perl(Time::Zone) Recommends: perl(URI) Recommends: perl(XML::Parser) Recommends: perl(Net::SSL) Recommends: perl(YAML) Recommends: perl(YAML::LibYAML) Recommends: bsdtar Recommends: qemu-linux-user Recommends: zstd Recommends: /usr/bin/qemu-kvm Recommends: /sbin/mkfs.ext3 %endif %if 0%{?suse_version} > 1120 || ! 0%{?suse_version} Requires: %{__pkg_name}-mkbaselibs %endif %if 0%{?suse_version} > 1120 || 0%{?mdkversion} Recommends: %{__pkg_name}-mkdrpms %endif # With fedora 33 the POSIX module was split out of the perl # package BuildRequires: perl(POSIX) Requires: perl(POSIX) %description This package provides a script for building RPMs for SUSE Linux in a chroot environment. %if 0%{?suse_version} > 1120 || ! 0%{?suse_version} %package mkbaselibs Summary: Tools to generate base lib packages # NOTE: this package must not have dependencies which may break boot strapping (eg. perl modules) Group: Development/Tools/Building %description mkbaselibs This package contains the parts which may be installed in the inner build system for generating base lib packages. %package mkdrpms Summary: Tools to generate delta rpms Group: Development/Tools/Building Requires: deltarpm # XXX: we wanted to avoid that but mkdrpms needs Build::Rpm::rpmq Requires: %{__pkg_name} %description mkdrpms This package contains the parts which may be installed in the inner build system for generating delta rpm packages. %endif %define initvm_arch %{_host_cpu} %if "%{_host_cpu}" == "i686" %define initvm_arch i586 %endif %package initvm-%{initvm_arch} Summary: Virtualization initializer for emulated cross architecture builds Group: Development/Tools/Building Requires: %{__pkg_name} BuildRequires: gcc BuildRequires: glibc-devel Provides: %{__pkg_name}-initvm Obsoletes: %{__pkg_name}-initvm %if 0%{?suse_version} > 1200 BuildRequires: glibc-devel-static %endif %description initvm-%{initvm_arch} This package provides a script for building RPMs for SUSE Linux in a chroot or a secure virtualized %prep %setup -q -n obs-build-%version %build %if 0%{?suse_version} # initvm make CFLAGS="$RPM_BUILD_FLAGS" initvm-all %endif %install # initvm %if 0%{?suse_version} make DESTDIR=%{buildroot} initvm-install strip %{buildroot}/usr/lib/build/initvm.* export NO_BRP_STRIP_DEBUG="true" chmod 0644 %{buildroot}/usr/lib/build/initvm.* %endif # main make DESTDIR=%{buildroot} install # tweak default config on suse %if 0%{?suse_version} cd %{buildroot}/usr/lib/build/configs/ SUSE_V=%{?suse_version} SLE_V=%{?sle_version} %if 0%{?sle_version} && 0%{?is_opensuse} && %suse_version == 1315 # this is SUSE Leap 42.X ln -s sl42.${SLE_V:3:1}.conf default.conf %endif %if 0%{?sle_version} && 0%{?is_opensuse} && %suse_version > 1315 # this is SUSE Leap 15 and higher ln -s sl${SLE_V:0:2}.${SLE_V:3:1}.conf default.conf %endif %if !0%{?sle_version} && ( 0%{?suse_version} <= 1310 || 0%{?suse_version} == 1320 || 0%{?suse_version} == 1330 || 0%{?suse_version} == 1550 ) # this is old openSUSE releases and Factory ln -s sl${SUSE_V:0:2}.${SUSE_V:2:1}.conf default.conf %endif %if 0%{?sle_version} && !0%{?is_opensuse} # this is SUSE SLE 12 and higher ln -s sle${SLE_V:0:2}.${SLE_V:3:1}.conf default.conf %endif %if 0%{?sles_version} == 1110 # this is SUSE SLE 11 ln -s sles11sp2.conf default.conf %endif # make sure that we have a config test -e default.conf || exit 1 %endif # tweak baselibs config on suse %if 0%{?suse_version} cd %{buildroot}/usr/lib/build %if %suse_version == 1500 # SLE 15 / Leap 15 ln -sf baselibs_configs/baselibs_global-sle15.conf baselibs_global.conf %endif %if %suse_version == 1315 # SLE 12 / Leap 42 ln -sf baselibs_configs/baselibs_global-sle12.conf baselibs_global.conf %endif %if %suse_version <= 1110 # SLE 11 ln -sf baselibs_configs/baselibs_global-sle11.conf baselibs_global.conf %endif test -e baselibs_global.conf || exit 1 %endif %check for i in build build-* ; do bash -n $i || exit 1 ; done # run perl module unit tests LANG=C make test || exit 1 if [ `whoami` != "root" ]; then echo "WARNING: Not building as root, build test did not run!" exit 0 fi if [ ! -f "%{buildroot}/usr/lib/build/configs/default.conf" ]; then echo "WARNING: No default config, build test did not run!" exit 0 fi # get back the default.conf link cp -av %{buildroot}/usr/lib/build/configs/default.conf configs/ # do not get confused when building this already with build: export BUILD_IGNORE_2ND_STAGE=1 # use our own build code export BUILD_DIR=$PWD # simple chroot build test cd test # target is autodetected %if 0%{?sles_version} echo "SLES config differs currently on purpose between OBS and build script." echo "Skipping test case" exit 0 %endif %if 0%{?qemu_user_space_build} echo "test suite is not prepared to run using qemu linux user" echo "Skipping test case" exit 0 %endif # we need to patch the not packaged configs, due to the buildignore sed -i 's,build-mkbaselibs,,' ../configs/*.conf ./testbuild.sh /.build.binaries/ %files %defattr(-,root,root) %doc README.md /usr/bin/build /usr/bin/buildvc /usr/bin/unrpm /usr/lib/build %config(noreplace) /usr/lib/build/emulator/emulator.sh %{_mandir}/man1/build.1* %{_mandir}/man1/unrpm.1* %{_mandir}/man1/buildvc.1* %if 0%{?suse_version} %exclude /usr/lib/build/initvm.* %endif %if 0%{?suse_version} > 1120 || ! 0%{?suse_version} %exclude /usr/lib/build/mkbaselibs %exclude /usr/lib/build/baselibs* %exclude /usr/lib/build/mkdrpms %files mkbaselibs %defattr(-,root,root) %dir /usr/lib/build /usr/lib/build/mkbaselibs /usr/lib/build/baselibs* %files mkdrpms %defattr(-,root,root) %dir /usr/lib/build /usr/lib/build/mkdrpms %endif %if 0%{?suse_version} %files initvm-%{initvm_arch} %defattr(-,root,root) /usr/lib/build/initvm.* %endif %changelog obs-build-20210120/dist/debian.changelog000066400000000000000000000133531400202264700176630ustar00rootroot00000000000000build (20160531) unstable; urgency=low * Update to current git trunk - add sles11sp2 build config and adapt autodetection -- Michael Schroeder Mon, 10 Oct 2011 19:30:22 +0200 build (2011.09.26-1) unstable; urgency=low * Update to current git trunk -- Adrian Schroeter Fri, 01 Jul 2010 10:03:54 +0200 build (2011.07.01-1) unstable; urgency=low * Update to current git trunk -- Adrian Schroeter Fri, 01 Jul 2010 10:03:54 +0200 build (2010.12.15-1) unstable; urgency=low * Update to current git trunk - support bsdtar for setting up build enviroment - make expanddeps use the highest version of a package if multiple versions aver available in a repository [bnc#656599] -- Michael Schroeder Wed, 15 Dec 2010 14:08:29 +0200 build (2010.07.28-1) unstable; urgency=low * Update to current git trunk - document --repo and --dist - update wiki links - fix bugs in repo handling - fix distribution autodetection code -- Michael Schroeder Wed, 28 Jul 2010 12:46:52 +0200 build (2010.07.08-1) unstable; urgency=low * Update to current git trunk -- Adrian Schroeter Wed, 08 Jul 2010 10:03:54 +0200 build (2010.06.29-1) unstable; urgency=low * Update to current git trunk - add 11.3 config - fix repo creation in --noinit case - support ovf files directly - allow multiple --oldpackages - delta rpm support -- Adrian Schroeter Tue, 29 Jun 2010 10:03:54 +0200 build (2010.02.02-1) unstable; urgency=low * Update to current git trunk - Support new kiwi 4.1 schema files -- Adrian Schroeter Tue, 02 Feb 2010 10:03:54 +0200 build (2009.09.23-1) unstable; urgency=low * Update to current svn trunk -- Michael Schroeder Wed, 23 Sep 2009 12:03:54 +0200 build (2009.04.20-1) unstable; urgency=low * Update to current svn trunk -- Adrian Schroeter Mon, 20 Feb 2009 08:27:13 +0200 build (2009.02.20-1) unstable; urgency=low * Fix kvm support together with Alexander * Support for new disturl containing a complete pointer to build service instance resource * add support for package compare to allow Build Service to drop same packages after build * image repack support from Christoph -- Adrian Schroeter Fri, 20 Feb 2009 08:27:13 +0200 build (2007.09.14-1) unstable; urgency=low * update to 2173: - add sl10.3 config [#310089] - also look for BuildRequires in subpackage definitions [#305568] - allow removal of more config parameters -- Michael Schroeder Fri, 14 Sep 2007 18:27:13 +0200 build (2007.08.02-1) unstable; urgency=low * update to 1902: - support 'order' config option - support 'patterntype' config option - new setdeps() method - support for flexible query options - support 'description' query - fix bug in changelog2spec time cutoff - make debtransform understand Debtransform-Tar/Debtransform-Files-Tar/ Debtransform-Series - fix bug in substitutedeps -- Michael Schroeder Thu, 2 Aug 2007 15:58:48 +0200 build (2007.06.13-1) unstable; urgency=low * update to 1727: - implement rpm installation order calculation in perl - make substitute code modify requires, too - add filelist query support - add prereq parsing support - speed up version comparison a bit -- Michael Schroeder Wed, 13 Jun 2007 17:18:17 +0100 build (2007.05.10-1) unstable; urgency=low * update to 1653: - add _vendor to configs - fix deban dependency compare - allow not operator in configs - fix build from source rpms -- Michael Schroeder Thu, 10 May 2007 20:02:29 +0100 build (2007.04.12-1) unstable; urgency=low * update to 1575: - add --root to rpm call in rpm to work around a bug in rpm [#255720] -- Michael Schroeder Thu, 12 Apr 2007 16:22:51 +0100 build (2007.04.05-1) unstable; urgency=low * update to 1561: - support architecture dependand requires in dsc files - support "global" definitions for rpm - support vminstall config option -- Michael Schroeder Thu, 5 Apr 2007 16:01:51 +0100 build (2007.03.12-1) unstable; urgency=low * update to r1419: - fix buildroot in debtransform call - obey version numbers when expanding -- Michael Schroeder Mon, 12 Mar 2007 15:42:48 +0100 build (2007.03.02-1) unstable; urgency=low * update - transform suse changes file to rpm specfile format - improved debian support -- Michael Schroeder Fri, 2 Mar 2007 21:22:41 +0100 build (2007.01.26-1) unstable; urgency=low * update to r1114 - re-add the lost unrpm script - make exclarch an array - remount root rw in xen case, needed if root is not reiserfs - add repotype/runscripts options - remove devs in sl10.1/10.2 - fix boolean test to make "00" false like rpm does - add rpm_verscmp for version comparison - runscripts - macro blocks - read_config_dist - useful xen exit status - add --kill - update 10.2 config - extend spec/dsc parser - fixed two bugs in the specfile parser -- Peter Poeml Fri, 26 Jan 2007 14:15:22 +0100 build (2006.10.5-1) unstable; urgency=low * update for fixed XEN build -- Michael Schroeder Thu, 5 Oct 2006 10:58:42 +0200 build (2006.8.10-1) unstable; urgency=low * update for fixed XEN build and proc mounting -- Adrian Schroeter Thu, 10 Aug 2006 12:01:08 +0200 build (2006.6.14-1) unstable; urgency=low * Initial release based on build-2006.6.14-5.1.src.rpm -- Rene Engelhard Thu, 22 Jun 2006 12:01:08 +0200 obs-build-20210120/dist/debian.compat000066400000000000000000000000021400202264700172020ustar00rootroot000000000000005 obs-build-20210120/dist/debian.control000066400000000000000000000006541400202264700174140ustar00rootroot00000000000000Source: build Section: devel Priority: optional Maintainer: Adrian Schroeter Build-Depends: debhelper (>= 5) Standards-Version: 3.7.2 Package: obs-build Architecture: all Depends: ${perl:Depends}, rpm Recommends: rpm2cpio Conflicts: build Replaces: build Provides: build Description: A script to build SUSE Linux RPMs This package provides a script for building RPMs for SUSE Linux in a chroot environment. obs-build-20210120/dist/debian.copyright000066400000000000000000000012661400202264700177440ustar00rootroot00000000000000This package was debianized by Rene Engelhard on Thu, 22 Jun 2006 12:01:08 +0200. It was downloaded from http://software.opensuse.org/download/openSUSE:/Tools/SUSE_Linux_Factory/src Upstream authors: Thorsten Kukuk Michael Schrter Bernhard Kaindl Mad Martin Jorgensen Andreas Schwab Rdiger Oertel Andreas Gruenbacher Copyright: (c) 1997-2007 SuSE GmbH Nuernberg, Germany License: GPL The Debian packaging is (C) 2006, Rene Engelhard and is licensed under the GPL, see `/usr/share/common-licenses/GPL'. obs-build-20210120/dist/debian.docs000066400000000000000000000000121400202264700166500ustar00rootroot00000000000000README.md obs-build-20210120/dist/debian.links000066400000000000000000000001001400202264700170360ustar00rootroot00000000000000usr/bin/build usr/bin/obs-build usr/lib/build usr/lib/obs-build obs-build-20210120/dist/debian.rules000066400000000000000000000026241400202264700170650ustar00rootroot00000000000000#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany # This file and all modifications and additions to the pristine package # are under the same license as the package itself. # # Please submit bugfixes or commens via http://bugs.opensuse.org # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 SHELL=/bin/bash configure: configure-stamp configure-stamp: dh_testdir touch configure-stamp build: build-stamp build-stamp: configure-stamp dh_testdir touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs make DESTDIR=$(CURDIR)/debian/obs-build install binary-arch: build install dh_testdir dh_testroot dh_installchangelogs dh_installdocs dh_installexamples dh_installman dh_link dh_strip dh_compress dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary-indep: build install binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure obs-build-20210120/download000077500000000000000000000046011400202264700153560ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use LWP::UserAgent; use URI; use File::Path; use File::Basename; use strict; sub get_zypp_baseurl { my ($reponame) = @_; require Build::Zypp; my $repo = Build::Zypp::parserepo($reponame); die("can't parse $reponame\n") unless $repo; die "missing url in repo $repo->{'name'}\n" unless $repo->{'baseurl'}; return $repo->{'baseurl'}; } die "USAGE: $0 DIR URLS..." unless $#ARGV >= 1; my $dir = shift @ARGV; my $ua = LWP::UserAgent->new( agent => "openSUSE build script", timeout => 42, ssl_opts => { verify_hostname => 1 }); for my $url (@ARGV) { if ($url =~ m#^zypp://#) { die("do not know how to download $url\n") unless $url =~ m#^zypp://([^/]+)/((?:.*/)?([^/]+)\.rpm)$#; my ($repo, $path, $pkg) = ($1, $2, $3); my $dest = "$dir/$pkg.rpm"; system('/usr/bin/zypper', '--no-refresh', '-q', '--pkg-cache-dir', $dir, 'download', '-r', $repo, $pkg) && die("zypper download $pkg failed\n"); rename("$dir/$repo/$path", "$dest") || die("rename $dir/$repo/$path $dest: $!\n"); next; } $url = URI->new($url); $ua->env_proxy; my $dest = "$dir/".basename($url->path); unlink($dest); # just in case my $retry = 3; while ($retry--) { my $res = $ua->mirror($url, $dest); last if $res->is_success; # if it's a redirect we probably got a bad mirror and should just retry die "requesting $url failed: ".$res->status_line."\n" unless $retry && $res->previous; warn "retrying $url\n"; } } # vim:sw=2 obs-build-20210120/dummyhttpserver000077500000000000000000000146311400202264700170350ustar00rootroot00000000000000#!/usr/bin/perl # dead-simple HTTP server # serves current directory on localhost:80 use Socket; use POSIX; use Fcntl qw(:DEFAULT :flock); use strict; $| = 1; my ($build_root, $dir, $uploaddir) = @ARGV; if (defined($build_root)) { chroot($build_root) || die("chroot $build_root: $!\n"); chdir('/') || die("chdir /: $!\n"); } if (defined($dir)) { chdir($dir) || die("chdir $dir: $!\n"); } my $tcpproto = getprotobyname('tcp'); my $acceptsock; socket($acceptsock , PF_INET, SOCK_STREAM, $tcpproto) || die "socket: $!\n"; setsockopt($acceptsock, SOL_SOCKET, SO_REUSEADDR, pack("l",1)); bind($acceptsock, sockaddr_in(80, inet_aton('127.0.0.1'))) || die "bind: $!\n"; listen($acceptsock , 512) || die "listen: $!\n"; my $sock; my $status; sub replyraw { my ($data) = @_; my $l; while (length($data)) { $l = syswrite($sock, $data, length($data)); die("write error: $!\n") unless $l; $data = substr($data, $l); } } sub reply { my ($str, @hdrs) = @_; if (@hdrs && $hdrs[0] =~ /^status: ((\d+).*)/i) { $status = $2; $hdrs[0] = "HTTP/1.1 $1"; $hdrs[0] =~ s/:/ /g; } else { $status = 200; unshift @hdrs, "HTTP/1.1 200 OK"; } push @hdrs, "Cache-Control: no-cache"; push @hdrs, "Connection: close"; push @hdrs, "Content-Length: ".length($str) if defined($str); my $data = join("\r\n", @hdrs)."\r\n\r\n"; $data .= $str if defined $str; fcntl($sock, F_SETFL,O_NONBLOCK); my $dummy = ''; 1 while sysread($sock, $dummy, 1024, 0); fcntl($sock, F_SETFL,0); replyraw($data); } sub reply_error { my ($errstr) = @_; my $code = 400; my $tag = 'Error'; if ($errstr =~ /^(\d+)\s+([^\r\n]*)/) { $code = $1; $tag = $2; } elsif ($errstr =~ /^([^\r\n]+)/) { $tag = $1; } reply("$errstr\n", "Status: $code $tag", 'Content-Type: text/plain'); } sub readrequest { my $qu = ''; my ($request, $rawhdrs); while (1) { if ($qu =~ /^(.*?)\r?\n/s) { $request = $1; last; } die($qu eq '' ? "empty query\n" : "received truncated query\n") if !sysread($sock, $qu, 1024, length($qu)); } my ($act, $path, $vers, undef) = split(' ', $request, 4); die("400 No method name\n") if !$act; if ($vers) { die("501 Unsupported method: $act\n") if $act ne 'GET' && $act ne 'HEAD' && $act ne 'PUT'; # read in all headers while ($qu !~ /^(.*?)\r?\n\r?\n(.*)$/s) { die("501 received truncated query\n") if !sysread($sock, $qu, 1024, length($qu)); } $qu =~ /^(.*?)\r?\n\r?\n(.*)$/s; # redo regexp to work around perl bug $qu = $2; $rawhdrs = "Request: $1"; } else { die("501 Bad method, must be GET\n") if $act ne 'GET'; $rawhdrs = 'Request: GET'; $qu = ''; } my $query_string = ''; if ($path =~ /^(.*?)\?(.*)$/) { $path = $1; $query_string = $2; } $path =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge; # unescape path die("501 invalid path\n") unless $path =~ /^\//s; # forbid relative paths die("501 invalid path\n") if $path =~ /\0/s; # do simple path substitutions while (1) { next if $path =~ s!//!/!; next if $path =~ s!/\.(?:/|$)!/!; next if $path =~ s!/[^/]+/\.\.(?:/|$)!/!; next if $path =~ s!/\.\.(?:/|$)!/!; last; } return ($act, $path, $query_string, $rawhdrs, $qu); } sub escape { my ($d) = @_; $d =~ s/&/&/sg; $d =~ s//>/sg; $d =~ s/"/"/sg; return $d; } while (1) { my $peeraddr = accept($sock, $acceptsock); next unless $peeraddr; my $pid = fork(); last if defined($pid) && !$pid; close $sock; 1 while waitpid(-1, POSIX::WNOHANG) > 0; } close($acceptsock); my $action; my $rawheaders; my $content; my $path = '?'; eval { ($action, $path, undef, $rawheaders, $content) = readrequest(); if ($action eq 'PUT') { die("no upload configured\n") unless defined($uploaddir) && $uploaddir ne ''; die("bad upload path\n") unless $path =~ /^\/[a-zA-Z0-9_][a-zA-Z0-9_\.]*$/s; die("no content length\n") unless $rawheaders =~ /^content-length:\s*(\d+)/im; my $cl = $1; die("bad content length $cl\n") if $cl > 100000000; my $lpath = "$uploaddir$path"; replyraw("HTTP/1.1 100 continue\r\n\r\n") if $rawheaders =~ /^expect:\s*100-continue/im; $content = substr($content, 0, $cl) if length($content) > $cl; my $fd; open($fd, '>', $lpath) || die("$lpath: $!\n"); if ($content ne '') { syswrite($fd, $content) == length($content) || die("syswrite: $!\n"); $cl -= length($content); } while ($cl > 0) { $content = ''; die("501 received truncated body\n") if !sysread($sock, $content, $cl > 8192 ? 8192 : $cl); syswrite($fd, $content) == length($content) || die("syswrite: $!\n"); $cl -= length($content); } close($fd) || die("close: $!\n"); reply("Thank you.\n", 'Content-type: text/plain'); close $sock; print "[$status PUT:$path]"; exit(0); } my $lpath = ".$path"; if (-d $lpath) { if ($path !~ /\/$/) { my $rpath = "$path/"; $rpath =~ s/([\000-\040<>;\"#\?&\+=%[\177-\377])/sprintf("%%%02X",ord($1))/sge; ; reply('', 'Status: 301 Moved Permanently', "Location: $rpath"); } else { my %d; my $dir; if (opendir($dir, $lpath)) { %d = map {$_ => 1} readdir($dir); closedir($dir); } delete $d{'.'}; delete $d{'..'}; my $body = "\n"; $body .= "Directory listing for ".escape($path)."\n"; $body .= "\n"; $body .= "

Directory listing for ".escape($path)."

\n"; $body .= "
\n\n
\n\n\n"; reply($body, 'Content-type: text/html'); } } elsif (-e _) { my $f; open($f, '<', $lpath) || die("500 $lpath: $!\n"); my @s = stat($f); die("stat: $!\n") unless @s; my $l = $s[7]; reply(undef, "Content-Length: $l", 'Content-Type: application/octet-stream'); my $data; while (1) { last unless $l; my $r = sysread($f, $data, 8192); $data = substr($data, 0, $l) if length($data) > $l; $l -= length($data); while (length($data)) { my $l2 = syswrite($sock, $data, length($data)); die("socket write: $!\n") unless $l2; $data = substr($data, $l2); } } close($f); } else { die("404 File not found\n"); } }; reply_error($@) if $@; close $sock; print "[$status $path]"; obs-build-20210120/emulator/000077500000000000000000000000001400202264700154505ustar00rootroot00000000000000obs-build-20210120/emulator/emulator.sh000077500000000000000000000026471400202264700176500ustar00rootroot00000000000000#!/bin/bash ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ echo "ERROR: the emulator.sh script needs to be changed to support your emulator!" exit 1 ### ### Example for the aarch64 emulator: ### LOG=$(mktemp) ./Foundation_v8 --image ./img-foundation.axf \ --block-device "$1" \ --network=none &> $LOG & while test 0$(grep -c terminal_0: $LOG ) -lt 1; do echo ".." sleep 1 done cat $LOG # terminal_0: Listening for serial connection on port 5012 PORT=$(grep terminal_0: $LOG | head -n 1 | cut -d " " -f 8) rm -f $LOG # telnet dies when emulator is quiting telnet 127.0.0.1 $PORT || exit 0 obs-build-20210120/expanddeps000077500000000000000000000266501400202264700157120ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use strict; use Build; my ($dist, $rpmdeps, $archs, $configdir, $useusedforbuild, $installonly, $noinstall, $isvm); my ($obspackage, $buildflavor); $configdir = ($::ENV{'BUILD_DIR'} || '/usr/lib/build') . '/configs'; while (@ARGV) { if ($ARGV[0] eq '--dist') { shift @ARGV; $dist = shift @ARGV; next; } if ($ARGV[0] eq '--depfile') { shift @ARGV; $rpmdeps = shift @ARGV; next; } if ($ARGV[0] eq '--archpath') { shift @ARGV; $archs = shift @ARGV; next; } if ($ARGV[0] eq '--configdir') { shift @ARGV; $configdir = shift @ARGV; next; } if ($ARGV[0] eq '--useusedforbuild') { shift @ARGV; $useusedforbuild = 1; next; } if ($ARGV[0] eq '--define') { shift @ARGV; my $def = shift @ARGV; Build::define($def); next; } if ($ARGV[0] eq '--with') { shift @ARGV; my $def = shift @ARGV; Build::define("_with_$def --with-$def"); next; } if ($ARGV[0] eq '--without') { shift @ARGV; my $def = shift @ARGV; Build::define("_without_$def --without-$def"); next; } if ($ARGV[0] eq '--vm') { shift @ARGV; $isvm = 1; next; } if ($ARGV[0] eq '--buildflavor') { shift @ARGV; $buildflavor = shift @ARGV; next; } if ($ARGV[0] eq '--obspackage') { shift @ARGV; $obspackage = shift @ARGV; next; } last; } $archs = '' unless defined $archs; die("you must specfiy a depfile!\n") unless defined $rpmdeps; # split args in recipe and pkgnames my $recipe; my @extradeps; for my $arg (@ARGV) { my $buildtype = Build::recipe2buildtype($arg); if ($buildtype) { die("can only work with at most one recipe file\n") if defined $recipe; $recipe = $arg; } else { push @extradeps, $arg; } } my $binarytype; my @archs = split(':', $archs); if ($recipe && $recipe =~ /(^|\/)PKGBUILD$/) { push @archs, 'any' unless grep {$_ eq 'any'} @archs; $binarytype = 'arch'; } elsif ($recipe && $recipe =~ /\.dsc$/) { push @archs, 'all' unless grep {$_ eq 'noarch'} @archs; $binarytype = 'deb'; } else { push @archs, 'noarch' unless grep {$_ eq 'noarch'} @archs; $binarytype = 'rpm'; } # read dist if we can my $cf; if (defined($dist) && $dist ne '') { $cf = Build::read_config_dist($dist, $archs[0], $configdir); $binarytype = $cf->{'binarytype'} if $cf->{'binarytype'} && $cf->{'binarytype'} ne 'UNDEFINED'; } my (%fn, %prov, %req, %con, %obs, %rec, %sup); my %packs; my %repo; my %ids; my %packs_arch; my %packs_done; open(F, '<', $rpmdeps) || die("$rpmdeps: $!\n"); # WARNING: the following code assumes that the 'I' tag comes last my ($pkgF, $pkgP, $pkgR, $pkgC, $pkgO, $pkgr, $pkgs); my $verscmp = \&Build::Rpm::verscmp; if ($binarytype && $binarytype eq 'deb') { $verscmp = \&Build::Deb::verscmp; for my $arch (@archs) { $arch = Build::Deb::basearch($arch) unless $arch =~ /^i[456]86$/; } } while() { chomp; if (/^F:(.*?)-\d+\/\d+\/\d+: (.*)$/) { $pkgF = $2; } elsif (/^P:(.*?)-\d+\/\d+\/\d+: (.*)$/) { $pkgP = $2; } elsif (/^R:(.*?)-\d+\/\d+\/\d+: (.*)$/) { $pkgR = $2; } elsif (/^C:(.*?)-\d+\/\d+\/\d+: (.*)$/) { $pkgC = $2; } elsif (/^O:(.*?)-\d+\/\d+\/\d+: (.*)$/) { $pkgO = $2; } elsif (/^r:(.*?)-\d+\/\d+\/\d+: (.*)$/) { $pkgr = $2; } elsif (/^s:(.*?)-\d+\/\d+\/\d+: (.*)$/) { $pkgs = $2; } elsif (/^I:(.*?)-\d+\/\d+\/\d+: (.*)$/) { if (!$packs_done{$1}) { my ($i, $newid) = ($1, $2); undef $i unless !$ids{$i} || $verscmp->($ids{$i}, $newid) < 0; undef $i unless defined($pkgF) && defined($pkgP); if (defined $i) { $i =~ /^(.*)\.([^\.]+)$/ or die; push @{$packs_arch{$2}}, $1; $ids{$i} = $newid; $fn{$i} = $pkgF; $prov{$i} = $pkgP; delete $req{$i}; delete $rec{$i}; delete $con{$i}; delete $obs{$i}; delete $rec{$i}; delete $sup{$i}; $req{$i} = $pkgR; $con{$i} = $pkgC if defined $pkgC; $obs{$i} = $pkgO if defined $pkgO; $rec{$i} = $pkgr if defined $pkgr; $sup{$i} = $pkgs if defined $pkgs; } } undef $pkgF; undef $pkgP; undef $pkgR; undef $pkgC; undef $pkgO; undef $pkgr; undef $pkgs; } elsif ($_ eq 'D:') { %packs_done = %ids; } } close F; for my $arch (@archs) { $packs{$_} ||= "$_.$arch" for @{$packs_arch{$arch} || []}; } # XXX: move to separate tool if (!defined($dist) || $dist eq '') { my $rpmarch = (grep {$fn{"rpm.$_"}} @archs)[0]; if (!$rpmarch) { $dist = 'default'; } else { my $rpmfn = $fn{"rpm.$rpmarch"}; if ($rpmfn =~ /^[a-z]+:\/\//) { require File::Temp; my $tmpdir = File::Temp::tempdir('CLEANUP' => 1); $rpmfn =~ s/.*\//$tmpdir\// unless system("$INC[0]/download", $tmpdir, $rpmfn); } my $rpmdist = ''; if ($rpmfn =~ /^\// && -e $rpmfn) { my %res = Build::Rpm::rpmq($rpmfn, 1010); $rpmdist = $res{1010}->[0] || ''; } $dist = Build::dist_canon($rpmdist, $archs[0]); # need some extra work for sles11 and sles15 :( if ($dist =~ /^sles11-/) { my %res = Build::Rpm::rpmq($rpmfn, 1049); $dist =~ s/^sles11-/sles11sp2-/ if grep {/^liblzma/} @{$res{1049} || []}; } if ($dist =~ /^sles15-/) { my %res = Build::Rpm::rpmq($rpmfn, 1049); $dist =~ s/^sles15-/sles15sp2-/ if grep {/^libgcrypt/} @{$res{1049} || []}; } } print STDERR "Warning: distribution not specified, assuming '$dist' (see $configdir).\n"; } $cf ||= Build::read_config_dist($dist, $archs[0], $configdir); $cf->{'warnings'} = 1; $cf->{'buildflavor'} = $buildflavor if defined $buildflavor; $cf->{'obspackage'} = $obspackage if defined $obspackage; $cf->{'no_vminstall_expand'} = 1 unless $isvm; my $dofileprovides = %{$cf->{'fileprovides'}}; $dofileprovides = 1 if ($binarytype || 'rpm') ne 'rpm'; sub parsedepline { return [] unless defined $_[0]; my @s = split(' ', $_[0]); my @r; while (@s) { my $s = shift @s; next if !$dofileprovides && $s =~ /^\//; if ($s =~ /^rpmlib\(/) { splice(@s, 0, 2); next; } if ($s =~ /^\(/) { unshift @s, $s; push @r, Build::Rpm::shiftrich(\@s); next; } push @r, $s; while (@s && $s[0] =~ /^[\(<=>|]/) { $r[-1] .= " $s[0] $s[1]"; $r[-1] =~ s/ \((.*)\)/ $1/; $r[-1] =~ s/(<|>){2}/$1/; splice(@s, 0, 2); } } 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; } ####################################################################### sub print_rpmlist { for (@_) { print "$_ $fn{$packs{$_}}\n"; print "rpmid: $_:$ids{$packs{$_}}\n" if exists $ids{$packs{$_}}; } print "preinstall: @{$cf->{'preinstall'} || []}\n"; print "vminstall: @{$cf->{'vminstall'} || []}\n"; print "runscripts: @{$cf->{'runscripts'} || []}\n"; print "dist: $dist\n" if defined $dist; print "installonly: $installonly\n" if defined $installonly; print "noinstall: $noinstall\n" if defined $noinstall; } if ($useusedforbuild) { die("Need a recipe file for --usedforbuild\n") unless defined $recipe; local *F; open(F, '<', $recipe) || die("$recipe: $!\n"); my @usedforbuild; my @buildrequires; while() { chomp; if (/^#\s*usedforbuild\s*(.*)$/) { push @usedforbuild, split(' ', $1); } if (/^buildrequires:\s*(.*)$/i) { push @buildrequires, split(' ', $1); } } close F; @usedforbuild = @buildrequires unless @usedforbuild; @usedforbuild = Build::unify(@usedforbuild) if @usedforbuild; my @errors; for (@usedforbuild) { push @errors, "package $_ not found" unless $packs{$_} && $fn{$packs{$_}}; } if (@errors) { print STDERR "expansion error\n"; print STDERR " $_\n" for @errors; exit(1); } print_rpmlist(@usedforbuild); exit(0); } ####################################################################### my $subpacks = []; my $buildtype = ''; my $extrasysdeps; sub includecallback { my ($recipe, $file) = @_; $file =~ s/.*\///; $recipe =~ s/[^\/]+$//; $file = "$recipe$file"; my $fd; my $str; if (open($fd, '<', $file)) { local $/; $str = <$fd>; close($fd); } return $str; } if ($recipe) { local $Build::Rpm::includecallback = sub { includecallback($recipe, @_) }; my $d = Build::parse($cf, $recipe) || {}; $buildtype = Build::recipe2buildtype($recipe) || ''; $cf->{'type'} = $buildtype if $buildtype; if ($buildtype eq 'kiwi') { # lets see if this is a product or image build $buildtype = $d->{'imagetype'} && $d->{'imagetype'}->[0] eq 'product' ? 'kiwi-product' : 'kiwi-image'; $extrasysdeps = [ grep {/^kiwi-.*:/} @{$d->{'deps'} || []} ]; } $subpacks = $d->{'subpacks'}; unshift @extradeps, @{$d->{'deps'} || []}; if ($d->{'prereqs'}) { my %deps = map {$_ => 1} (@extradeps, @{$d->{'subpacks'} || []}); push @extradeps, '--directdepsend--', grep {!$deps{$_} && !/^%/} @{$d->{'prereqs'}}; } } Build::readdeps($cf, undef, \%repo); ####################################################################### my @sysdeps = Build::get_sysbuild($cf, $buildtype, $extrasysdeps); if ($buildtype eq 'kiwi-image' || $buildtype eq 'kiwi-product') { if (!shift @sysdeps) { print STDERR "expansion error\n"; print STDERR " $_\n" for @sysdeps; exit(1); } # just use the sysdeps for now, ignore real deps print_rpmlist(@sysdeps); exit(0); } push @extradeps, '--ignoreignore--' if @sysdeps; my @bdeps = Build::get_build($cf, $subpacks, @extradeps); if (!shift @bdeps) { print STDERR "expansion error\n"; print STDERR " $_\n" for @bdeps; exit(1); } if (@sysdeps) { if (!shift @sysdeps) { print STDERR "expansion error\n"; print STDERR " $_\n" for @sysdeps; exit(1); } my %sysdeps = map {$_ => 1} @sysdeps; my %bdeps = map {$_ => 1} @bdeps; $installonly = join(' ', grep {!$bdeps{$_}} @sysdeps); $noinstall = join(' ', grep {!$sysdeps{$_}} @bdeps); @bdeps = Build::unify(@sysdeps, @bdeps); } # get preinstalls/vminstalls and check if the packages exist my @xdeps = Build::get_preinstalls($cf); push @xdeps, Build::get_vminstalls($cf) if $isvm; my @missing = grep {!$packs{$_}} @xdeps; if (@missing) { @missing = sort(Build::unify(@missing)); print STDERR "expansion error\n"; print STDERR " missing pre/vminstalls: ".join(', ', @missing)."\n"; exit(1); } # make sure all preinstalls/vminstalls are in bdeps @bdeps = Build::unify(@bdeps, @xdeps); print_rpmlist(@bdeps); obs-build-20210120/extractbuild000077500000000000000000000116621400202264700162460ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-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 # ################################################################ use strict; # buffer size for reading my $bufsize = 4*1024*1024; my ($opt_skip, $opt_disk, $opt_input, $opt_verbose); $opt_verbose = 0; while (@ARGV) { if ($ARGV[0] eq '--skip') { shift @ARGV; $opt_skip = shift @ARGV; next; } if ($ARGV[0] eq '--disk') { shift @ARGV; $opt_disk = shift @ARGV; next; } if ($ARGV[0] eq '--input') { shift @ARGV; $opt_input = shift @ARGV; next; } if ($ARGV[0] eq '--verbose' || $ARGV[0] eq '-v') { shift @ARGV; $opt_verbose++; next; } last; } die "need to specify disk image\n" unless $opt_disk; open(F, '<', $opt_disk) || die "$opt_disk: $!\n"; if ($opt_input) { open(S, '<', $opt_input) || die "$opt_input: $!\n"; } else { open(S, '<&STDIN') || die "can't dup stdin: $!\n"; } # skip build status if ($opt_skip) { seek(S, $opt_skip, 0) || die "seek: $!\n"; } my %done; while () { chomp; last unless length $_; my ($filetype, $file, $filesize, $blksize, @blocks) = split(' '); die("invalid input '$_'\n") unless defined($file); $file =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge; die("bad file '$file' (contains \\0)\n") if $file =~ /\0/; die("already processed: $file\n") if $done{$file}; die("bad file '$file'\n") if "/$file/" =~ /\/\.{0,2}\//s; if ($file =~ /^(.*)\//s) { die("file without directory: $file\n") unless $done{$1} && $done{$1} eq 'd'; } if ($filetype eq 'd') { # dir print "$file\n" if $opt_verbose && ($opt_verbose > 1 || $file =~ /^KIWI\/[^\/]*$/); mkdir($file) || die("mkdir $file: $!\n"); $done{$file} = 'd'; next; } if ($filetype eq 'l') { # symlink my $target = $filesize; die("symlink without target\n") unless defined $target; $target =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge; die("bad symlink: $target (contains \\0)\n") if $target =~ /\0/; die("bad symlink: $target\n") if "/$target/" =~ /\/\.?\//s; if ("/$target/" =~ /^((?:\/\.\.)+)\/(.*?)$/s) { my ($head, $tail) = ($1, $2); die("bad upref in symlink: $target\n") if "/$tail/" =~ /\/\.\.\//s; die("bad upref in symlink: $target\n") if ($head =~ y!/!!) > ($file =~ y!/!!); } else { die("bad upref in symlink: $target\n") if "/$target/" =~ /\/\.\.\//s; } print "$file\n" if $opt_verbose && !($opt_verbose == 1 && $file =~ /^KIWI\/.*\//); symlink($target, $file) || die("symlink $target $file: $!\n"); $done{$file} = 'l'; next; } die("illegal file type: $filetype\n") unless $filetype eq 'f'; print "$file\n" if $opt_verbose && !($opt_verbose == 1 && $file =~ /^KIWI\/.*\//); $done{$file} = 'f'; open (O, '>', $file) or die "$file: $!\n"; if ($filesize == 0) { close(O) || die("$file: close error: $!\n"); next; } $blksize = int($blksize); die "$file: invalid block size $blksize\n" unless $blksize > 0 && $blksize <= $bufsize; my $needtruncate; my $left = $filesize; for my $block (@blocks) { die("bad extent '$block'\n") unless $block =~ /^(\d+)(?::(\d+))?(?:-(\d+)(?::(\d+))?)?$/; my ($startblk, $startoff, $endblk, $endoff) = ($1, $2, $3, $4); $startoff = 0 unless defined $startoff; $endblk = $startblk unless defined $endblk; $endoff = $blksize - 1 unless defined $endoff; my $start = $startblk * $blksize + $startoff; my $len = $endblk * $blksize + $endoff + 1 - $start; die "$file: bad length\n" if $len <= 0; die "$file: extent is outside of file\n" if $left <= 0; $len = $left if $len > $left; # it's ok to overshoot the last block $left -= $len; if ($start == 0) { # a hole! seek(O, $len, 1); $needtruncate = 1; next; } $needtruncate = undef; seek(F, $start, 0) || die "$file: seek: $!\n"; while ($len > 0) { my $size = $len > $bufsize ? $bufsize : $len; my $buf; (sysread(F, $buf, $size) || 0) == $size || die("$file: read: $!\n"); (syswrite(O, $buf) || 0) == length($buf) || die("$file: write error\n"); $len -= $size; } } truncate(O, $filesize) if $needtruncate; close(O) || die("$file: close error: $!\n"); # sanity check die "$file: invalid file size ($left bytes left)\n" if $left != 0; } obs-build-20210120/getbinaryid000077500000000000000000000034411400202264700160510ustar00rootroot00000000000000#!/usr/bin/perl ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Build; use strict; my $createmeta; my $manifest; while (@ARGV) { if ($ARGV[0] eq '--createmeta') { shift @ARGV; $createmeta = 1; next; } if ($ARGV[0] eq '--manifest') { shift @ARGV; $manifest = shift @ARGV; next; } last; } my @files; if ($manifest) { if ($manifest eq '-') { @files = ; } else { local *F; open(F, '<', $manifest) || die("$manifest: $!\n"); @files = ; close F; } chomp @files; } push @files, @ARGV; for my $file (@files) { my $sig = Build::queryhdrmd5($file); die("$file: no signature available\n") unless $sig; if ($createmeta) { local *F; my $mf = $file; $mf =~ s/\.[^\.]*$//; $mf .= ".meta"; open(F, '>', $mf) || die("$mf: $!\n"); print F "$sig sigmd5\n"; close(F) || die("$mf: $!\n"); } else { print "$sig\n"; } } obs-build-20210120/getbuildids000077500000000000000000000040131400202264700160430ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 2016 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Build; use strict; sub getbuildid { my ($pkg) = @_; my $d = Build::query($pkg, 'evra' => 1, 'buildtime' => 1); return $d ? Build::getbuildid($d) : undef; } if (@ARGV && $ARGV[0] eq 'cachecheck') { my $pkg; my $buildid; my $dst; while () { chomp; if (/^PKG (\S+) (.+)$/) { ($pkg, $buildid, $dst) = ($1, $2, undef); } elsif (/^PKG (\S+)$/) { ($pkg, $buildid, $dst) = ($1, undef, undef); } elsif (/^DST (.+)$/) { $dst = $1; unlink($dst) if -e $dst; } elsif (/^CACHE (.+)$/) { next unless $dst; my $cpkg = $1; next unless -s $cpkg; if ($buildid) { my $bid = getbuildid($cpkg); next unless $bid; if ($bid =~ / 0-/) { my $buildid2 = $buildid; $buildid2 =~ s/ .*?-/0-/; next if $bid ne $buildid2; } else { next if $bid ne $buildid; } } symlink($cpkg, $dst); $dst = undef; # first hit wins } } exit(0); } while () { chomp; my $dst = $_; my $buildid = getbuildid($dst); next unless $buildid; open(F, '>', "$dst.buildid") || next; print F "$buildid\n"; close(F); } obs-build-20210120/help000066400000000000000000000005751400202264700145020ustar00rootroot00000000000000Start the building with this command from the obs-build root directory: BUILD_DIR=$PWD BUILD_ROOT=/tmp/build/ ./build --cachedir=/tmp/build/cache obs_example/Dockerfile Run the parser with an one liner (against the obs_example/Dockerfile): perl -e "use Cwd 'abs_path'; use lib abs_path('Build'); use Build::Docker; Build::Docker::parse('', abs_path('obs_example/Dockerfile'))" obs-build-20210120/init_buildsystem000077500000000000000000001077211400202264700171450ustar00rootroot00000000000000#!/bin/bash # Script to create a complete system to build packages in a chroot # environment. This script ensures, that all packages given as # parameter are installed. All other packges will be deleted. # # BUILD_ROOT here the packages will be installed/deleted # BUILD_RPMS here we get our packages to install (obsolete) # BUILD_ARCH path of the architectures we try # BUILD_DIST distribution to build for (will be guessed if not set) # ################################################################ # # Copyright (c) 1997-2014 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 # ################################################################ # # needed globals variables # export SRC export BUILD_DIR=${BUILD_DIR:-/usr/lib/build} PATH="$BUILD_DIR:$PATH" export YAST_IS_RUNNING=instsys # https://github.com/systemd/systemd/blob/master/docs/ENVIRONMENT.md export SYSTEMD_OFFLINE=1 # slurp in package binary support . "$BUILD_DIR/build-pkg" # need to restore build root owner for non-root builds browner=0 definesnstuff=() repos=() . $BUILD_DIR/common_functions || exit 1 # should RPMs be installed with --force ? USE_FORCE=false PREPARE_VM= USEUSEDFORBUILD= LIST_STATE= RPMLIST= CLEAN_BUILD= CREATE_BUILD_BINARIES= DLNOSIGNATURE= CACHE_DIR=/var/cache/build test -z "$CONFIG_DIR" && CONFIG_DIR="$BUILD_DIR/configs" while test -n "$1" ; do case "$1" in --prepare) shift PREPARE_VM=true ;; --create-build-binaries) shift CREATE_BUILD_BINARIES=true ;; --useusedforbuild) shift USEUSEDFORBUILD=--useusedforbuild ;; --list-state) shift LIST_STATE=true ;; --rpmlist) shift RPMLIST=$1 shift ;; --define|--with|--without|--buildflavor|--obspackage) definesnstuff[${#definesnstuff[@]}]="$1"; definesnstuff[${#definesnstuff[@]}]="$2"; shift 2 ;; --repository|--repo) repos[${#repos[@]}]="$2"; shift 2 ;; --clean) CLEAN_BUILD="$1" shift ;; --cachedir) CACHE_DIR="$2" shift 2 ;; --configdir) CONFIG_DIR="$2" shift 2 ;; --nosignature) shift DLNOSIGNATURE="--nosignature" ;; --root) BUILD_ROOT="$2" shift 2 ;; --arch) BUILD_ARCH="$2" shift 2 ;; --dist) BUILD_DIST="$2" shift 2 ;; *) break ;; esac done PKGS=("$@") if test -z "$BUILD_ROOT" ; then echo "Please specify a build root!" exit 1 fi BUILD_IS_RUNNING=$BUILD_ROOT/not-ready TMPFILE=$BUILD_ROOT/tmpfile BUILD_INIT_CACHE="$BUILD_ROOT/.init_b_cache" # # needed functions # mount_stuff() { 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 } umount_stuff() { if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then buildroot_umount "/proc/sys/fs/binfmt_misc" buildroot_umount "/proc" buildroot_umount "/sys" buildroot_umount "/dev/pts" buildroot_umount "/dev/shm" buildroot_umount "/mnt" fi } cleanup_and_exit() { trap 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 test "$BUILD_ROOT" = / -a -n "$browner" && chown "$browner" "$BUILD_ROOT" # umount so init_buildsystem can be used standalone umount_stuff exit $1 } clean_build_root() { if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then umount_stuff rm -rf -- "$BUILD_ROOT"/* 2> /dev/null || true chattr -a -A -i -R -- "$BUILD_ROOT" 2> /dev/null || true # does not follow symlinks rm -rf -- "$BUILD_ROOT"/* rm -rf -- "$BUILD_ROOT/.build" rm -rf -- "$BUILD_ROOT"/.build.kernel.* rm -rf -- "$BUILD_ROOT"/.build.initrd.* rm -rf -- "$BUILD_ROOT/.root" rm -rf -- "$BUILD_ROOT/.init_b_cache" test -L "$BUILD_ROOT/.preinstall_image" && rm -f -- "$BUILD_ROOT/.preinstall_image" rm -rf -- "$BUILD_ROOT"/.preinstall_image/* rm -rf -- "$BUILD_ROOT"/.preinstallimage* fi } unsafe_preinstall_check() { # cpio isn't safe so we require bsdtar for VMs. chroot is # unsafe anyways so it's ok for that. if test -n "$PREPARE_VM" ; then echo "Error: setting up a VM requires bsdtar for security reasons." echo "Please install bsdtar." cleanup_and_exit 1 fi } preinstall_image_filter() { for PKG in "$@" ; do test -e "$BUILD_ROOT/.preinstall_image/$PKG" && continue echo $PKG done } preinstall_setup() { cd "$BUILD_ROOT" || cleanup_and_exit 1 rm -rf build-preinstall mkdir build-preinstall || cleanup_and_exit 1 for i in * .* ; do # please keep in sync with recipe_build_preinstallimage case "$i" in .|..|build-preinstall) continue ;; .build.kernel.*|.build.hostarch.*|.build.initrd.*|.build.console.*) ;; .build*|.init_b_cache|.preinstallimage*|.srcfiles*|.pkgs|.rpm-cache|installed-pkg|proc|sys) continue ;; esac mv "./$i" build-preinstall || cleanup_and_exit 1 done cd build-preinstall || cleanup_and_exit 1 } preinstall_integrate() { cd "$BUILD_ROOT/build-preinstall" || cleanup_and_exit 1 for i in * .* ; do case "$i" in .|..|build-preinstall) continue ;; .build.kernel.*|.build.hostarch.*|.build.initrd.*|.build.console.*) ;; .build*|.init_b_cache|.preinstallimage*|.srcfiles*|.pkgs|.rpm-cache|installed-pkg|proc|sys) continue ;; esac mv "./$i" .. || cleanup_and_exit 1 done cd "$BUILD_ROOT" || cleanup_and_exit 1 assert_dirs } preinstall_image() { check_exit echo "unpacking preinstall image${2:+ $2}" preinstall_setup if test -x /usr/bin/bsdtar ; then TAR="/usr/bin/bsdtar --exclude .build --exclude .init_b_cache -P --chroot --numeric-owner -x" else unsafe_preinstall_check TAR="tar --exclude .build --exclude .init_b_cache -x" fi # pipe output through perl to print a dot every 1000 lines if ! $TAR -z -f "$BUILD_INIT_CACHE/rpms/$1" -v > >(tee "$BUILD_INIT_CACHE/.preinstallimage.unpack" | perl -e '$|=1; my $done=0; $done++ % 1000 or print "." while ; print "\n";') 2>&1 ; then echo "unpack failed." test -f "$BUILD_INIT_CACHE/.preinstallimage.unpack" && cat "$BUILD_INIT_CACHE/.preinstallimage.unpack" cleanup_and_exit 1 fi rm -rf "$BUILD_INIT_CACHE/.preinstallimage.unpack" preinstall_integrate } preinstall() { local PKG="$1" check_exit echo "preinstalling $PKG..." preinstall_setup if test -x /usr/bin/bsdtar ; then CPIO="/usr/bin/bsdtar --exclude .build --exclude .init_b_cache -P --chroot -o --numeric-owner -x -f-" TAR="/usr/bin/bsdtar --exclude .build --exclude .init_b_cache -P --chroot -o --numeric-owner -x" else unsafe_preinstall_check CPIO="cpio --extract --unconditional --preserve-modification-time --make-directories --no-absolute-filenames --quiet" TAR="tar --exclude .build --exclude .init_b_cache -x" fi pkg_preinstall preinstall_integrate } run_pkg_scripts() { chroot $BUILD_ROOT /sbin/ldconfig 2>/dev/null for PKG in $PACKAGES_TO_RUNSCRIPTS ; do pkg_runscripts check_exit done } reorder() { test -z "$*" && return rm -f $BUILD_ROOT/.init_b_cache/order.manifest for PKG in "$@" ; do echo "$PKG" >> $BUILD_ROOT/.init_b_cache/order.manifest done $BUILD_DIR/order --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir $CONFIG_DIR --manifest $BUILD_ROOT/.init_b_cache/order.manifest $BUILD_ROOT/.init_b_cache/rpms || touch $BUILD_ROOT/exit rm -f $BUILD_ROOT/.init_b_cache/order.manifest } create_devs() { local com file mode arg test -d $BUILD_ROOT/dev/pts -a ! -L $BUILD_ROOT/dev/pts || rm -f $BUILD_ROOT/dev/pts test -d $BUILD_ROOT/dev/shm -a ! -L $BUILD_ROOT/dev/shm || rm -f $BUILD_ROOT/dev/shm mkdir -m 755 -p $BUILD_ROOT/dev/pts mkdir -m 755 -p $BUILD_ROOT/dev/shm while read com file mode arg ; do rm -f $BUILD_ROOT/dev/$file if test $com = ln ; then ln -s $arg $BUILD_ROOT/dev/$file elif test $com = mknod ; then mknod -m $mode $BUILD_ROOT/dev/$file $arg fi done << DEVLIST mknod null 666 c 1 3 mknod zero 666 c 1 5 mknod full 666 c 1 7 mknod random 666 c 1 8 mknod urandom 644 c 1 9 mknod tty 666 c 5 0 mknod ptmx 666 c 5 2 mknod loop-control 600 c 10 237 mknod loop0 640 b 7 0 mknod loop1 640 b 7 1 mknod loop2 640 b 7 2 mknod loop3 640 b 7 3 mknod fuse 666 c 10 229 ln fd 777 /proc/self/fd ln stdin 777 fd/0 ln stdout 777 fd/1 ln stderr 777 fd/2 DEVLIST } # check whether the repo list contains a plain "zypp://". Add all # enabled zypp repos in this case expand_plain_zypp_repo() { local i j r=() for i in "${repos[@]}"; do if test "$i" = "zypp://" ; then for j in $($BUILD_DIR/createzyppdeps --listrepos) ; do r=("${r[@]}" "zypp://$j") done else r=("${r[@]}" "$i") fi done repos=("${r[@]}") } create_cache_file() { local findonly= expand_plain_zypp_repo # check if we can reuse the old cache file if ! test -f $CACHE_FILE || ! test -f $CACHE_FILE.id || \ test "${repos[*]} ${BUILD_RPMS//:/ /}" != "$(cat $CACHE_FILE.id 2>/dev/null)"; then rm -f $CACHE_FILE.id else for SRC in "${repos[@]}" ${BUILD_RPMS//:/ /}; do test -n "$SRC" || SRC=. if test "${SRC#zypp://}" != "$SRC" ; then SRC="/var/cache/zypp/raw/${SRC#zypp://}" fi if test "$SRC" -nt $CACHE_FILE; then rm -f $CACHE_FILE.id break fi # always rebuild if we have remote repositories and --clean is given if test -n "$CLEAN_BUILD" -a "$SRC" != "${SRC#*://}" -a "${SRC#zypp://}" = "$SRC" ; then rm -f $CACHE_FILE.id break fi done fi if test -f $CACHE_FILE.id ; then return fi # nope, generate a new cache file test -z "$LIST_STATE" && echo initializing $CACHE_FILE ... # figure out a repository type default REPOTYPE= if test -n "$BUILD_DIST" ; then for i in `queryconfig repotype --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"` ; do case $i in arch|debian|hdlist2|rpm-md) REPOTYPE=$i ;; esac test -n "$REPOTYPE" && break done if test -z "$REPOTYPE"; then BINTYPE=`queryconfig binarytype --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"` case "$BINTYPE" in arch) REPOTYPE=arch ;; deb) REPOTYPE=debian ;; esac fi fi if test -z "$REPOTYPE" ; then # check the first init_buildsystem arg, maybe it is a recipe case ${PKGS[0]} in *.spec) REPOTYPE=rpm-md ;; *.dsc) REPOTYPE=debian ;; */PKGBUILD|PKGBUILD|*/_service:*:PKGBUILD|_service:*:PKGBUILD) REPOTYPE=arch ;; esac fi for SRC in "${repos[@]}" -- ${BUILD_RPMS//:/ /}; do if test "$SRC" = '--' ; then findonly=1 continue fi SRCREPOTYPE=$REPOTYPE case $SRC in arch@* | debian@* | hdlist2@* | rpmmd@* | rpm-md@* | suse@*) SRCREPOTYPE=${SRC%%@*} SRC=${SRC#*@} ;; esac test -z "$SRC" && SRC=`pwd` if test "${SRC#http://}" != "$SRC" -o "${SRC#https://}" != "$SRC" -o "${SRC#ftp://}" != "$SRC" -o "${SRC#ftps://}" != "$SRC" ; then # remote repo, cache binary packages mkdir -p "$(getcachedir "$SRC")" if test "$SRCREPOTYPE" = arch ; then set -- $BUILD_DIR/createarchdeps --cachedir="$CACHE_DIR" "$SRC" elif test "$SRCREPOTYPE" = debian ; then set -- $BUILD_DIR/createdebdeps --cachedir="$CACHE_DIR" --archpath "$BUILD_ARCH" "$SRC" elif test "$SRCREPOTYPE" = suse ; then set -- $BUILD_DIR/createyastdeps --cachedir="$CACHE_DIR" "$SRC" elif test "$SRCREPOTYPE" = hdlist2 ; then set -- $BUILD_DIR/createmdkdeps --cachedir="$CACHE_DIR" "$SRC" else set -- $BUILD_DIR/createrepomddeps --cachedir="$CACHE_DIR" "$SRC" fi elif test "${SRC#zypp://}" != "$SRC" ; then # special zypp repo set -- $BUILD_DIR/createzyppdeps --cachedir="$CACHE_DIR" "$SRC" elif test ! -e "$SRC" ; then cleanup_and_exit 1 "*** $SRC does not exist" elif test -z "$findonly" -a \( -e "$SRC"/suse/setup/descr/packages -o -e "$SRC"/suse/setup/descr/packages.gz \) ; then set -- $BUILD_DIR/createyastdeps "$SRC" elif test -z "$findonly" -a -e "$SRC"/repodata/repomd.xml ; then set -- $BUILD_DIR/createrepomddeps "$SRC" else set -- $BUILD_DIR/createdirdeps --oldfile "$CACHE_FILE" "$SRC" fi echo "$@" >&2 "$@" || cleanup_and_exit 1 echo D: done > $CACHE_FILE.new mv $CACHE_FILE.new $CACHE_FILE echo "${repos[*]} ${BUILD_RPMS//:/ /}" > $CACHE_FILE.id } fail_exit() { cleanup_and_exit 1 } # modifies $SRC downloadpkg() { local url="$1" case $url in zypp://* | http://* | https://* | ftp://* | ftps://*) ;; *) cleanup_and_exit 1 "Invalid url: $url" ;; esac local cachedir="$(getcachedir "$url")" local name="$(basename "$url")" name=${name/%.pkg.tar.zst/.arch} name=${name/%.pkg.tar.?z/.arch} SRC="$cachedir/$name" local destdir="$cachedir/tmp" mkdir -p "$destdir" echo "downloading $url ... "; $BUILD_DIR/download "$destdir" "$url" || cleanup_and_exit 1 local destfile="$destdir/${url##*/}" if test ! -e "$destfile" ; then cleanup_and_exit 1 "expected $destfile after download but it's missing" fi # for rpm check integrity and the signature case $destfile in *.rpm) rpm -K $DLNOSIGNATURE "$destfile" > $destfile.v || { echo "rpm verify failed" >&2; rm -rf "$destdir"; cleanup_and_exit 1; } if grep "NOT OK" $destfile.v; then rm -rf "$destdir" cleanup_and_exit 1 fi rm -f "$destfile.v" ;; esac mv "$destfile" "$SRC" || cleanup_and_exit 1 } getcachedir() { local url=$1 for repo in "${repos[@]}" ; do case $repo in arch@* | debian@* | hdlist2@* | rpmmd@* | rpm-md@* | suse@*) repo=${repo#*@} ;; esac if test "${url:0:${#repo}}" == "$repo" ; then read repoid dummy < <(echo -n "$repo" | md5sum) echo "$CACHE_DIR/$repoid" break fi done } set_build_arch trap fail_exit EXIT if test "$BUILD_ROOT" = / ; then browner="$(stat -c %u /)" fi if test -n "$CLEAN_BUILD" ; then clean_build_root fi # # now test if there was an incomplete run # if test -e "$BUILD_IS_RUNNING" ; then echo "It seems that there was an incomplete setup of $BUILD_ROOT." if test -z "$BUILD_ROOT" -o "$BUILD_ROOT" = / ; then cleanup_and_exit 1 fi echo "To be sure, we will build it again completely..." umount_stuff echo "Your build system is broken!! Shall I execute" echo echo " rm -rf -- $BUILD_ROOT/*" echo echo "y - yes, cleanup the build root" echo "N - No, abort build (default on enter)" echo "c - Continue anyway with this build root" echo -n "[y/N/c] " read ANSWER case "$ANSWER" in c|C) rm -f $BUILD_IS_RUNNING $BUILD_ROOT/exit ;; y|Y) clean_build_root ;; *) cleanup_and_exit 1 ;; esac fi # check for surprises if test -z "$CLEAN_BUILD" -a -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / ; then assert_dirs fi # umount stuff if mounted if test -n "$BUILD_ROOT" -a "$BUILD_ROOT" != / -a -e "$BUILD_ROOT/proc/self" ; then umount_stuff fi # # store that we start to build the system # mkdir -p "$BUILD_ROOT" mkdir -p "$BUILD_ROOT/.build" mkdir -p "$BUILD_ROOT/proc" mkdir -p "$BUILD_ROOT/dev/pts" touch $BUILD_IS_RUNNING if test -n "$PREPARE_VM" ; then rm -rf $BUILD_ROOT/.build/init_buildsystem.data fi if test -e $BUILD_ROOT/.build/init_buildsystem.data ; then # vm continuation, read old config . $BUILD_ROOT/.build/init_buildsystem.data else # # now make sure that all the packages are installed. # rm -rf "$BUILD_ROOT/.init_b_cache" mkdir -p "$BUILD_ROOT/.init_b_cache/scripts" if test -z "$RPMLIST" ; then # # create rpmdeps file # CACHE_FILE=$BUILD_ROOT/.srcfiles.cache create_cache_file # # select and expand packages # RPMLIST=$BUILD_ROOT/.init_b_cache/rpmlist test -z "$LIST_STATE" && echo "expanding package dependencies..." VMOPT= test -z "$PREPARE_VM" || VMOPT=--vm if ! $BUILD_DIR/expanddeps $USEUSEDFORBUILD $VMOPT "${definesnstuff[@]}" --dist "$BUILD_DIST" --depfile "$CACHE_FILE" --archpath "$BUILD_ARCH" --configdir $CONFIG_DIR "${PKGS[@]}" > $RPMLIST ; then rm -f $BUILD_IS_RUNNING cleanup_and_exit 1 fi fi if test -n "$LIST_STATE" ; then rm -f $BUILD_IS_RUNNING while read PKG SRC ; do test "$PKG" = "preinstall:" && continue test "$PKG" = "runscripts:" && continue test "$PKG" = "cbpreinstall:" && continue test "$PKG" = "vminstall:" && continue test "$PKG" = "dist:" && continue test "$PKG" = "rpmid:" && continue echo "${SRC##*/}" done < $BUILD_ROOT/.init_b_cache/rpmlist rm -rf "$BUILD_ROOT/.init_b_cache" cleanup_and_exit 0 fi # # register the QEMU emulator if needed # (we do not need this for the prepare step, as we do not run scripts in this case) # if test -z "$PREPARE_VM" ; then if check_use_emulator ; then echo "registering binfmt handlers for cross build" "$BUILD_DIR/$INITVM_NAME" echo 0 > /proc/sys/vm/mmap_min_addr read mmap_min_addr < /proc/sys/vm/mmap_min_addr if test "$mmap_min_addr" != 0 ; then echo "Warning: mmap_min_addr is != 0. If programs fail at mmap this could be the reason." fi fi fi # # extract the data from the (generated) rpm list # PACKAGES_TO_INSTALL= PACKAGES_TO_PREINSTALL= PACKAGES_TO_RUNSCRIPTS= PACKAGES_TO_VMINSTALL= PACKAGES_TO_INSTALLONLY= PACKAGES_TO_NOINSTALL= PREINSTALL_IMAGE= PREINSTALL_IMAGE_SOURCE= RUNSCRIPTS_SEEN= PACKAGES_FROM_PREINSTALLIMAGE= GUESSED_DIST=unknown mkdir -p $BUILD_ROOT/.init_b_cache/rpms rm -f $BUILD_ROOT/.init_b_cache/rpmlist.download while read PKG SRC ; do if test "$PKG" = "preinstall:" ; then PACKAGES_TO_PREINSTALL=$SRC continue fi if test "$PKG" = "vminstall:" ; then PACKAGES_TO_VMINSTALL=$SRC continue fi if test "$PKG" = "installonly:" ; then PACKAGES_TO_INSTALLONLY=$SRC continue fi if test "$PKG" = "noinstall:" ; then PACKAGES_TO_NOINSTALL=$SRC continue fi if test "$PKG" = "preinstallimage:" ; then PREINSTALL_IMAGE=${SRC##*/} ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/${SRC##*/}" continue fi if test "$PKG" = "preinstallimagesource:" ; then PREINSTALL_IMAGE_SOURCE="$SRC" continue fi if test "$PKG" = "runscripts:" ; then RUNSCRIPTS_SEEN=true PACKAGES_TO_RUNSCRIPTS=$SRC continue fi if test "$PKG" = "dist:" ; then GUESSED_DIST=$SRC continue fi if test "$PKG" = "rpmid:" ; then echo "${SRC#*:}" > $BUILD_ROOT/.init_b_cache/rpms/${SRC%%:*}.id continue fi if test "$PKG" != "${PKG%:}"; then echo "Warning: ignoring unsupported tag '$PKG'" >&2 continue fi if test "$SRC" = "preinstallimage" ; then PACKAGES_FROM_PREINSTALLIMAGE="$PACKAGES_FROM_PREINSTALLIMAGE $PKG" PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL $PKG" continue fi PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL $PKG" if test "${SRC#/}" = "$SRC" ; then case "$SRC" in zypp://* | http://* | https://* | ftp://* | ftps://*) echo "$PKG $SRC" >>$BUILD_ROOT/.init_b_cache/rpmlist.download continue ;; *) cleanup_and_exit 1 "unsupported url for '$PKG': $SRC" ;; esac fi SRCSUF=${SRC/%.pkg.tar.zst/.arch} SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch} ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}" done < $RPMLIST PACKAGES_TO_ALL="$PACKAGES_TO_INSTALL" PACKAGES_TO_AVAILABLE="$PACKAGES_TO_INSTALL" # subtract noinstall packages from PACKAGES_TO_INSTALL if test -n "$PACKAGES_TO_NOINSTALL" ; then settest=" $PACKAGES_TO_NOINSTALL " PACKAGES_TO_INSTALL= for PKG in $PACKAGES_TO_ALL ; do test "$settest" = "${settest/ $PKG /}" && PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL $PKG" done fi # subtract installonly packages from PACKAGES_TO_AVAILABLE if test -n "$PACKAGES_TO_INSTALLONLY" ; then settest=" $PACKAGES_TO_INSTALLONLY " PACKAGES_TO_AVAILABLE= for PKG in $PACKAGES_TO_ALL ; do test "$settest" = "${settest/ $PKG /}" && PACKAGES_TO_AVAILABLE="$PACKAGES_TO_AVAILABLE $PKG" done fi # use cached packages where possible if test -s $BUILD_ROOT/.init_b_cache/rpmlist.download ; then echo "calculating packages to download..." while read PKG SRC ; do SRCSUF=${SRC/%.pkg.tar.zst/.arch} SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch} if test -s "$BUILD_ROOT/.init_b_cache/rpms/$PKG.id" ; then read cachepkgid < $BUILD_ROOT/.init_b_cache/rpms/$PKG.id echo "PKG $PKG $cachepkgid" else echo "PKG $PKG" fi echo "DST $BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}" if test "$SRC" != "${SRC#zypp://}" ; then # for zypp packages also look in the zypp cache cachedir="/var/cache/zypp/packages/${SRC#zypp://}" echo "CACHE ${cachedir%/*}/${SRC##*/}" fi cachedir="$(getcachedir "$SRC")" echo "CACHE $cachedir/${SRCSUF##*/}" done < $BUILD_ROOT/.init_b_cache/rpmlist.download | "$BUILD_DIR/getbuildids" cachecheck # remove found packages from download list rm -f $BUILD_ROOT/.init_b_cache/rpmlist.download2 while read PKG SRC ; do SRCSUF=${SRC/%.pkg.tar.zst/.arch} SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch} test -L "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}" || echo "$PKG $SRC" >>$BUILD_ROOT/.init_b_cache/rpmlist.download2 done < $BUILD_ROOT/.init_b_cache/rpmlist.download rm -f $BUILD_ROOT/.init_b_cache/rpmlist.download test -s $BUILD_ROOT/.init_b_cache/rpmlist.download2 && mv $BUILD_ROOT/.init_b_cache/rpmlist.download2 $BUILD_ROOT/.init_b_cache/rpmlist.download fi # now do the download of missing packages if test -s $BUILD_ROOT/.init_b_cache/rpmlist.download ; then PACKAGES_TO_DOWNLOAD=`awk '{print $2}' < "$BUILD_ROOT/.init_b_cache/rpmlist.download"` progress_setup PACKAGES_TO_DOWNLOAD while read PKG SRC ; do progress_step PACKAGES_TO_DOWNLOAD downloadpkg "$SRC" # downloadpkg modified $SRC, so it has a right name for use SRCSUF=${SRC/%.pkg.tar.zst/.arch} SRCSUF=${SRCSUF/%.pkg.tar.?z/.arch} ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}" done < $BUILD_ROOT/.init_b_cache/rpmlist.download rm -f $BUILD_ROOT/.init_b_cache/rpmlist.download echo fi # compatibility... test -z "$RUNSCRIPTS_SEEN" && PACKAGES_TO_RUNSCRIPTS="$PACKAGES_TO_PREINSTALL" buildroot_rm .guessed_dist echo "$GUESSED_DIST" > $BUILD_ROOT/.guessed_dist test -n "$BUILD_DIST" || BUILD_DIST="$GUESSED_DIST" pkg_set_type if test -n "$PREINSTALL_IMAGE" ; then for PKG in $PACKAGES_FROM_PREINSTALLIMAGE ; do # touch the file so that the copying works touch $BUILD_ROOT/.init_b_cache/rpms/"$PKG.$PSUF" done fi fi # XXX: should use an option instead of looking at the recipe? CREATE_PREINSTALL_DATA= case ${PKGS[0]} in _preinstallimage | */_preinstallimage | _service:*:_preinstallimage | */_service:*:_preinstallimage) mkdir -p $BUILD_ROOT/.preinstall_image CREATE_PREINSTALL_DATA=true echo "saving package data for preinstallimage generation" ;; esac # # test if we need to preinstall # if test ! -e $BUILD_ROOT/installed-pkg -a ! -e $BUILD_ROOT/.build/init_buildsystem.data ; then mkdir -p $BUILD_ROOT/.init_b_cache/rpms || cleanup_and_exit 1 mkdir -p $BUILD_ROOT/etc || cleanup_and_exit 1 mkdir -p $BUILD_ROOT/proc || cleanup_and_exit 1 test -L $BUILD_ROOT/etc/HOSTNAME && buildroot_rm etc/HOSTNAME test -f $BUILD_ROOT/etc/HOSTNAME || hostname -f > $BUILD_ROOT/etc/HOSTNAME for PKG in $PACKAGES_TO_RUNSCRIPTS ; do : > $BUILD_ROOT/.init_b_cache/scripts/$PKG.run done PACKAGES_TO_PREINSTALL_FILTERED="$PACKAGES_TO_PREINSTALL" PACKAGES_TO_VMINSTALL_FILTERED="$PACKAGES_TO_VMINSTALL" rm -f "$BUILD_ROOT/.preinstall_image"/* if test -n "$PREINSTALL_IMAGE" ; then preinstall_image "$PREINSTALL_IMAGE" "$PREINSTALL_IMAGE_SOURCE" PACKAGES_TO_PREINSTALL_FILTERED=`preinstall_image_filter $PACKAGES_TO_PREINSTALL_FILTERED` PACKAGES_TO_VMINSTALL_FILTERED=`preinstall_image_filter $PACKAGES_TO_VMINSTALL_FILTERED` fi PACKAGES_TO_PREINSTALL_FILTERED=`reorder $PACKAGES_TO_PREINSTALL_FILTERED` if test -n "$PREPARE_VM" ; then PACKAGES_TO_VMINSTALL_FILTERED=`reorder $PACKAGES_TO_VMINSTALL_FILTERED` fi progress_setup PACKAGES_TO_PREINSTALL_FILTERED for PKG in $PACKAGES_TO_PREINSTALL_FILTERED ; do progress_step PACKAGES_TO_PREINSTALL_FILTERED preinstall ${PKG##*/} done if test -n "$PREPARE_VM" ; then echo progress_setup PACKAGES_TO_VMINSTALL_FILTERED for PKG in $PACKAGES_TO_VMINSTALL_FILTERED ; do progress_step PACKAGES_TO_VMINSTALL_FILTERED preinstall ${PKG##*/} done fi # for reorder check_exit if test -w /root ; then test -c $BUILD_ROOT/dev/null || create_devs fi if ! test -e $BUILD_ROOT/etc/fstab ; then rm -rf $BUILD_ROOT/etc/fstab touch $BUILD_ROOT/etc/fstab fi if test ! -e $BUILD_ROOT/etc/ld.so.conf -a -f $BUILD_ROOT/etc/ld.so.conf.in -a ! -L $BUILD_ROOT/etc/ld.so.conf.in ; then rm -rf $BUILD_ROOT/etc/ld.so.conf cp $BUILD_ROOT/etc/ld.so.conf.in $BUILD_ROOT/etc/ld.so.conf fi if test -z "$PREPARE_VM" ; then mount_stuff run_pkg_scripts pkg_initdb touch $BUILD_ROOT/.init_b_cache/preinstall_finished fi # mark as preinstalled no longer needed rm -rf "$BUILD_ROOT/installed-pkg" mkdir -p "$BUILD_ROOT/installed-pkg" else # preinstall was already done if test -z "$PREPARE_VM" ; then mount_stuff fi fi if test -n "$PREPARE_VM" ; then echo "copying packages..." for PKG in $PACKAGES_TO_ALL ; do rm -rf $BUILD_ROOT/.init_b_cache/$PKG.$PSUF cp $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF $BUILD_ROOT/.init_b_cache/$PKG.$PSUF || cleanup_and_exit 1 ln -s -f ../$PKG.$PSUF $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF check_exit done # alreadyinstalled check will not work, but we have to live with that... echo -n 'reordering...' PACKAGES_TO_INSTALL=`reorder $PACKAGES_TO_INSTALL` check_exit echo 'done' Q="'\''" rm -rf "$BUILD_ROOT/.build/init_buildsystem.data" echo "PACKAGES_TO_INSTALL='${PACKAGES_TO_INSTALL//"'"/$Q}'" > $BUILD_ROOT/.build/init_buildsystem.data echo "PACKAGES_TO_RUNSCRIPTS='${PACKAGES_TO_RUNSCRIPTS//"'"/$Q}'" >> $BUILD_ROOT/.build/init_buildsystem.data # needed for continuation in xen/kvm with rpm-x86 echo "PACKAGES_TO_PREINSTALL='${PACKAGES_TO_PREINSTALL//"'"/$Q}'" >> $BUILD_ROOT/.build/init_buildsystem.data echo "PACKAGES_TO_AVAILABLE='${PACKAGES_TO_AVAILABLE//"'"/$Q}'" >> $BUILD_ROOT/.build/init_buildsystem.data echo "PSUF='$PSUF'" >> $BUILD_ROOT/.build/init_buildsystem.data rm -f $BUILD_IS_RUNNING cleanup_and_exit 0 fi # # finish preinstall if this is a vm continuation # if test -e "$BUILD_ROOT/.build/init_buildsystem.data" -a ! -e "$BUILD_ROOT/.init_b_cache/preinstall_finished" ; then run_pkg_scripts pkg_initdb touch "$BUILD_ROOT/.init_b_cache/preinstall_finished" fi # # create .build.binaries directory if requested # rm -rf "$BUILD_ROOT/.build.binaries" if test -n "$CREATE_BUILD_BINARIES" ; then echo "creating .build.binaries directory..." mkdir -p "$BUILD_ROOT/.build.binaries" for PKG in $PACKAGES_TO_AVAILABLE ; do test -L "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" || continue LPKG=`readlink -f "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF"` ln "$LPKG" "$BUILD_ROOT/.build.binaries/$PKG.$PSUF" 2>/dev/null test -f "$BUILD_ROOT/.build.binaries/$PKG.$PSUF" && continue cp "$LPKG" "$BUILD_ROOT/.build.binaries/$PKG.$PSUF" check_exit done fi # # Save some package build environment preparation time on Debian-like systems # Note: for OS image builds we probably want the man-db constructed properly # if test -x "$BUILD_ROOT/usr/bin/debconf-set-selections" && test "$BUILDTYPE" = dsc ; then echo "Preseed man-db/auto-update to false for a DSC package build..." chroot "$BUILD_ROOT" /usr/bin/debconf-set-selections < "$BUILD_ROOT/.init_b_cache/alreadyinstalled/$name" done ) # do pre-installation work pkg_prepare # # delete all packages we don't want # mkdir -p $BUILD_ROOT/.init_b_cache/todelete for PKG in $BUILD_ROOT/.init_b_cache/alreadyinstalled/* ; do PKG=${PKG##*/} test "$PKG" = "*" && continue ln $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG $BUILD_ROOT/.init_b_cache/todelete/$PKG done for PKG in $PACKAGES_TO_INSTALL; do rm -f $BUILD_ROOT/.init_b_cache/todelete/$PKG done for PKG in $BUILD_ROOT/.init_b_cache/todelete/* ; do PKG=${PKG##*/} test "$PKG" = "*" && continue echo "deleting $PKG" pkg_erase check_exit done rm -rf "$BUILD_ROOT/.init_b_cache/todelete" rm -rf "$BUILD_ROOT/.init_b_cache/preinstalls" mkdir -p "$BUILD_ROOT/.init_b_cache/preinstalls" for PKG in $PACKAGES_TO_PREINSTALL; do touch "$BUILD_ROOT/.init_b_cache/preinstalls/$PKG" done rm -rf "$BUILD_ROOT/installed-pkg" mkdir -p "$BUILD_ROOT/installed-pkg" test -x $BUILD_ROOT/sbin/ldconfig && chroot $BUILD_ROOT /sbin/ldconfig 2>&1 MAIN_LIST="$PACKAGES_TO_INSTALL" progress_setup MAIN_LIST for PKG in $MAIN_LIST ; do test -f $BUILD_ROOT/installed-pkg/$PKG && continue progress_step MAIN_LIST if test -e "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" -a ! -s "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" ; then # preinstallimage package, make sure it's in the image if ! test -e $BUILD_ROOT/.preinstall_image/$PKG ; then cleanup_and_exit 1 "Package $PKG is missing from the preinstall image" fi read PKG_HDRMD5 PKGID < $BUILD_ROOT/.preinstall_image/$PKG echo "preinstalled ${PKGID%% *}" echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG continue fi # get the hdrmd5 if we want to create a preinstall image PKG_HDRMD5= if test -n "$CREATE_PREINSTALL_DATA" -a ! -e $BUILD_ROOT/.preinstall_image/$PKG ; then PKG_HDRMD5=`perl -I$BUILD_DIR -MBuild -e 'print Build::queryhdrmd5($ARGV[0])' $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF` test -n "$PKG_HDRMD5" || cleanup_and_exit 1 fi test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF || continue if test -s "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF.buildid" ; then read PKGID < "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF.buildid" else PKGID=$(perl -I$BUILD_DIR -MBuild -e Build::showquery "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" buildid) fi if test -f "$BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG" ; then read OLDPKGID < "$BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG" if test "$PKGID" != "$OLDPKGID" && ! test -e "$BUILD_ROOT/.init_b_cache/preinstalls/$PKG" ; then echo "deleting unwanted ${OLDPKGID%% *}" pkg_erase else if test "$VERIFY_BUILD_SYSTEM" != true || pkg_verify_installed ; then echo "keeping ${PKGID%% *}" echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG continue fi echo "deleting incomplete ${OLDPKGID%% *}" pkg_erase fi if test -e "$BUILD_ROOT/.init_b_cache/preinstalls/$PKG" ; then preinstall "$PKG" fi check_exit fi if pkg_cumulate ; then echo "cumulate ${PKGID%% *}" continue fi # install the package echo "installing ${PKGID%% *}" if ! test "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" -ef "$BUILD_ROOT/.init_b_cache/$PKG.$PSUF" ; then rm -f $BUILD_ROOT/.init_b_cache/$PKG.$PSUF cp $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF $BUILD_ROOT/.init_b_cache/$PKG.$PSUF || cleanup_and_exit 1 fi pkg_install check_exit rm -f $BUILD_ROOT/.init_b_cache/$PKG.$PSUF echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG done # do post-installation work pkg_finalize # devices can vanish if devs got uninstalled test -c $BUILD_ROOT/dev/null || create_devs cd $BUILD_ROOT || cleanup_and_exit 1 # # setup /etc/mtab # rm -f $BUILD_ROOT/etc/mtab cp /proc/mounts $BUILD_ROOT/etc/mtab chmod 644 $BUILD_ROOT/etc/mtab # # make sure that our nis is not present in the chroot system # if test -e $BUILD_ROOT/etc/nsswitch.conf ; then sed -e "s:nis::g" < $BUILD_ROOT/etc/nsswitch.conf > $BUILD_ROOT/etc/nsswitch.conf.tmp mv $BUILD_ROOT/etc/nsswitch.conf.tmp $BUILD_ROOT/etc/nsswitch.conf fi # # create some default directories and files # for DIR in /usr/share/doc/packages \ /usr/X11R6/include/X11/pixmaps \ /usr/X11R6/include/X11/bitmaps ; do mkdir -p $BUILD_ROOT/$DIR done for FILE in /var/run/utmp /var/log/wtmp /etc/fstab ; do mkdir -p $BUILD_ROOT/${FILE%/*} touch $BUILD_ROOT/$FILE done echo now finalizing build dir... if test -x $BUILD_ROOT/sbin/ldconfig ; then CHROOT_RETURN="`chroot $BUILD_ROOT /sbin/ldconfig 2>&1`" case "$CHROOT_RETURN" in *warning:*) chroot $BUILD_ROOT /sbin/ldconfig echo echo chroot $BUILD_ROOT /sbin/ldconfig echo echo "$CHROOT_RETURN" echo echo "Problem with ldconfig. It's better to reinit the build system..." echo cleanup_and_exit 1 ;; esac fi if test -x $BUILD_ROOT/usr/sbin/Check && ! grep -q "/usr/sbin/Check is obsolete" $BUILD_ROOT/usr/sbin/Check ; then chroot $BUILD_ROOT /usr/sbin/Check fi mkdir -p $BUILD_ROOT/var/adm/packages touch $BUILD_ROOT/var/adm/packages if test -x $BUILD_ROOT/sbin/SuSEconfig ; then if grep norestarts $BUILD_ROOT/sbin/SuSEconfig > /dev/null ; then chroot $BUILD_ROOT /sbin/SuSEconfig --norestarts --force else chroot $BUILD_ROOT /sbin/SuSEconfig --force fi fi if test -x $BUILD_ROOT/usr/X11R6/bin/switch2mesasoft ; then chroot $BUILD_ROOT /usr/X11R6/bin/switch2mesasoft fi for PROG in /usr/bin/TeX/texhash /usr/bin/texhash ; do test -x $BUILD_ROOT/$PROG && \ chroot $BUILD_ROOT bash -c ". /etc/profile ; $PROG" done if test -e $BUILD_ROOT/usr/share/zoneinfo/UTC ; then for PROG in /usr/sbin/zic /usr/bin/zic /bin/zic /sbin/zic ; do test -x $BUILD_ROOT/$PROG && chroot $BUILD_ROOT bash -c "$PROG -l \$(readlink -f /usr/share/zoneinfo/UTC)" done fi if test -d $BUILD_ROOT/usr/lib/build/finalize-system ; then for PROG in $BUILD_ROOT/usr/lib/build/finalize-system/* ; do test -e "$PROG" || continue echo "... running ${PROG##*/}" chroot $BUILD_ROOT "/usr/lib/build/finalize-system/${PROG##*/}" || cleanup_and_exit 1 done fi test -e $BUILD_ROOT/.build/init_buildsystem.data || HOST=`hostname` test -e $BUILD_ROOT/etc/hosts || echo "127.0.0.1 localhost" > $BUILD_ROOT/etc/hosts if ! grep -F "127.0.0.1 $HOST" $BUILD_ROOT/etc/hosts > /dev/null ; then # this makes a reverse lookup on 127.0.0.1 return the host name, # which is bad, but 127.0.0.2 does not work on all unix systems echo "127.0.0.1 $HOST" > $BUILD_ROOT/etc/hosts.new test -f $BUILD_ROOT/etc/hosts && cat $BUILD_ROOT/etc/hosts >> $BUILD_ROOT/etc/hosts.new mv $BUILD_ROOT/etc/hosts.new $BUILD_ROOT/etc/hosts fi rm -f $BUILD_ROOT/.rpmmacros $BUILD_ROOT/root/.rpmmacros rm -rf "$BUILD_ROOT/.init_b_cache" rm -f $BUILD_IS_RUNNING rm -f $TMPFILE cleanup_and_exit 0 # vim: set tabstop=8 softtabstop=4 shiftwidth=4 noexpandtab: obs-build-20210120/initvm.c000066400000000000000000000222651400202264700153010ustar00rootroot00000000000000/* * NAME * initvm - init for qemu, setup binfmt_misc launch build * * SYNOPSIS * initvm * * DESCRIPTION * This is the kernel init script for virtual machines which will * be running executables for an embedded (non-native) * architecture. It registers binfmt_misc handlers for qemu and * executes the build script, and tests many assumptions. * * FILES * /.build/qemu-reg * text file with lines to stuff into the binfmt_misc * filesystem registration file * /.build/build * build script to execute once binfmts are set up * * AUTHOR * Copyright (c) 2012 James Perkins * i Adrian Schroeter * * 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 */ #include #include #include #include #include #include #include #include #include /* to enable debugging, compile with -DDEBUG */ #ifdef DEBUG #define DBG(x) do { x; } while(0) #else #define DBG(x) #endif /* function return codes */ enum okfail { FAIL=0, OK=1 }; /* qemu registration fields, see kernel/Documentation/binfmt_misc.txt */ enum fields { ignore=0, name, type, offset, magic, mask, interpreter, flags }; const char * const fieldnames[] = { "ignore", "name", "type", "offset", "magic", "mask", "interpreter", "flags" }; const int n_fields = 8; /* files in useful places */ #define SYSFS_BINFMT_MISC "/proc/sys/fs/binfmt_misc" #define SYSFS_BINFMT_MISC_REG "/proc/sys/fs/binfmt_misc/register" #define SYSFS_BINFMT_MISC_STAT "/proc/sys/fs/binfmt_misc/status" /* /usr/lib/build/x paths are copied to /.build inside a virtual machine */ #define BINFMT_REGF_0 "/.build/qemu-reg" #define BINFMT_REGF_1 "/usr/lib/build/qemu-reg" #define BUILD "/.build/build" /* useful constant arrays */ static char *rx_files[] = { "/proc", "/proc/sys", "/proc/sys/fs", SYSFS_BINFMT_MISC, NULL }; static char *w_files[] = { SYSFS_BINFMT_MISC_REG, NULL }; static char* const args[] = { BUILD, NULL }; /* test access modes for files, return OK or FAIL */ enum okfail test_access_files(char *files[], int mode, const char *errstr) { int i; for (i = 0; files[i] != NULL; i++) { if (access(files[i], mode) != 0) { fprintf(stderr, "%s: %s: fails test\n", files[i], errstr); return FAIL; } } return OK; } /* find a string in the given file, return OK or FAIL */ enum okfail strfile(const char *filename, const char *string) { char buf[BUFSIZ]; FILE *fp; enum okfail found = FAIL; fp = fopen(filename, "r"); if (fp == NULL) { perror(filename); return FAIL; } while (fgets(buf, sizeof(buf), fp) != NULL) { if (strcmp(buf, string) == 0) { found = OK; break; } } (void)fclose(fp); return found; } /* write the file with given string, return OK or FAIL */ enum okfail write_file_string(const char *filename, const char *string) { int fd; if ((fd = open(filename, O_WRONLY)) == -1) { perror(filename); return FAIL; } if (write(fd, string, strlen(string)) == -1) { perror("write"); fprintf(stderr, "%s: write failed\n", filename); close(fd); return FAIL; } close(fd); return OK; } #ifdef DEBUG /* dump contents of the file to stderr, return OK or FAIL */ enum okfail dump_file(char *path) { FILE *fp; char buf[BUFSIZ]; fp = fopen(path, "r"); if (fp == NULL) { perror(path); return FAIL; } while (fgets(buf, sizeof(buf), fp) != NULL) { fputs(buf, stderr); } fclose(fp); return OK; } #endif /* DEBUG */ /* parse datafile and register (to regfile) all binary formats found */ enum okfail binfmt_register(char *datafile, char *regfile) { char buf[BUFSIZ]; FILE *fp; int line; struct utsname myuname; uname(&myuname); fp = fopen(datafile, "r"); if (fp == NULL) { perror(datafile); return FAIL; } for (line = 1; fgets(buf, sizeof(buf), fp) != NULL; line++) { char tokens[BUFSIZ]; char *s = tokens; char *blacklist; char *f[n_fields]; /* field content pointers */ int n; /* current field */ char path[BUFSIZ]; if (buf[0] != ':') /* non-data input line */ { continue; } blacklist = strchr(buf, ' '); if (blacklist) { int skip = 0; char *eol; *blacklist = '\0'; blacklist++; eol = strchr(blacklist, '\n'); if (eol) *eol = '\0'; for (n = 0; blacklist != NULL; n++) { char *bp = strsep(&blacklist, " "); if (!strcmp(bp, myuname.machine)) { #ifdef DEBUG fprintf(stderr, " skipping on hostarch %s line %s\n", bp, buf); #endif /* DEBUG */ skip = 1; break; } } if (skip) continue; } /* copy buf and tokenize :-seperated fields into f[] */ strcpy(tokens, buf); for (n = 0; s != NULL && n < n_fields; n++) { f[n] = strsep(&s, ":"); } #ifdef DEBUG int i; fprintf(stderr, "DEBUG: line %d, fields %d:\n", line, n); for (i = name; i < n; i++) { fprintf(stderr, " %s %s\n", fieldnames[i], f[i]); } #endif /* DEBUG */ if (n == n_fields && s != NULL) { fprintf(stderr, "%s: line %d: extra fields, ignoring." " Content: %s", datafile, line, buf); continue; } if (n < n_fields) { fprintf(stderr, "%s: line %d: missing fields, ignoring." " Content: %s", datafile, line, buf); continue; } int ret; /* Is an interpreter for this arch already registered? */ snprintf(path, sizeof(path), SYSFS_BINFMT_MISC "/%s", f[name]); ret=access(path, X_OK); if (ret == 0) { #ifdef DEBUG fprintf(stderr, "interpreter for '%s' already registered, ignoring\n", f[name]); #endif /* DEBUG */ continue; } #ifdef DEBUG fprintf(stderr, "registering interpreter for '%s'...\n", f[name]); #endif /* DEBUG */ /* Does the interpreter exists? */ ret=access(f[interpreter], X_OK); if (ret != 0) { #ifdef DEBUG fprintf(stderr, "%s: line %d: interpreter '%s' not found," " ignoring, return %d\n", datafile, line, f[interpreter], ret); #endif /* DEBUG */ continue; } if (!write_file_string(regfile, buf)) { fprintf(stderr, "%s: line %d: write failed." " Content: %s\n", datafile, line, buf); (void)fclose(fp); return FAIL; } /* verify registration completed correctly */ snprintf(path, sizeof(path), SYSFS_BINFMT_MISC "/%s", f[name]); if (access(path, R_OK) != 0) { fprintf(stderr, "%s: line %d: binfmt path not created, content '%s'\n", path, line, buf); (void)fclose(fp); return FAIL; } DBG(fprintf(stderr, "dumping: %s\n", path)); DBG(dump_file(path)); } (void)fclose(fp); return OK; } /* set up/verify binfmt FS support, program more binfmts, and launch build */ int main(int argc, char* argv[], char* env[]) { int retval; char buf[BUFSIZ]; /* mount proc filesystem if it isn't already */ if (mount("proc", "/proc", "proc", MS_MGC_VAL, NULL) == -1) { if (errno != EBUSY) { perror("mount: /proc"); exit(1); } } /* try to load binfmt module if present, no big deal if it fails */ if ((retval = system("/sbin/modprobe binfmt_misc")) != 0) { DBG(fprintf(stderr, "modprobe binfmt_misc exit code %d\n", retval)); } /* mount binfmt filesystem */ if (mount("binfmt_misc", SYSFS_BINFMT_MISC, "binfmt_misc", MS_MGC_VAL, NULL) == -1) { if (errno != EBUSY) { perror("mount: binfmt_misc, " SYSFS_BINFMT_MISC); } } /* verify all paths resulting from this are OK */ if (!test_access_files(rx_files, R_OK|X_OK, "read/search")) { exit(1); } if (!test_access_files(w_files, W_OK, "write")) { exit(1); } if (!strfile("/proc/filesystems", "nodev\tbinfmt_misc\n")) { fprintf(stderr, "/proc/filesystems: binfmt_misc support missing\n"); exit(1); } if (!strfile(SYSFS_BINFMT_MISC_STAT, "enabled\n")) { fprintf(stderr, "%s: binfmt_misc filesystem support not enabled\n", SYSFS_BINFMT_MISC_STAT); exit(1); } if (getenv("BUILD_DIR")) sprintf(buf, "%s/qemu-reg", getenv("BUILD_DIR")); if (!buf || !binfmt_register(buf, SYSFS_BINFMT_MISC_REG)) { /* setup all done, do the registration */ if (!binfmt_register(BINFMT_REGF_0, SYSFS_BINFMT_MISC_REG)) { fprintf(stderr, "%s: failed. Trying alternate binfmt file\n", BINFMT_REGF_0); if (!binfmt_register(BINFMT_REGF_1, SYSFS_BINFMT_MISC_REG)) { fprintf(stderr, "%s: binfmt registration failed\n", BINFMT_REGF_1); exit(1); } } } /* if we are the init process, start build */ if (getpid() == 1) { if (access(BUILD, F_OK) != 0) { fprintf(stderr, "%s: build executable missing\n", BUILD); exit(1); } if (access(BUILD, X_OK) != 0) { fprintf(stderr, "%s: not executable\n", BUILD); exit(1); } execve(BUILD, args, env); perror("execve of "BUILD); exit(1); } /* success! */ exit(0); } obs-build-20210120/killchroot000077500000000000000000000051341400202264700157230ustar00rootroot00000000000000#!/usr/bin/perl ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ my $sig = 15; my $verbose = 0; my $msg = ''; my $doit = 1; while (@ARGV) { if ($ARGV[0] eq '-s' || $ARGV[0] eq '--signal') { die("$ARGV[0]: argument required") unless @ARGV > 1; $sig = $ARGV[1]; shift @ARGV; shift @ARGV; next; } if ($ARGV[0] eq '-v' || $ARGV[0] eq '--verbose') { $verbose = 1; shift @ARGV; next; } if ($ARGV[0] eq '-n') { $doit = 0; $verbose = 1; shift @ARGV; next; } if ($ARGV[0] eq '-m' || $ARGV[0] eq '--message') { die("$ARGV[0]: argument required") unless @ARGV > 1; $msg = $ARGV[1]; shift @ARGV; shift @ARGV; next; } last; } die("usage: killchroot [-s sig] ") unless @ARGV == 1 && $ARGV[0] ne ''; my $dir = $ARGV[0]; chdir($dir) || die("$dir: $!\n"); $dir = readlink('/proc/self/cwd'); die("readlink /proc/self/cwd: $!\n") unless defined $dir; my %pids; my $pid; my $path; opendir(D, "/proc") || die("/proc: $!\n"); for $pid (readdir(D)) { next unless $pid =~ /^\d+$/; $path = readlink("/proc/$pid/root"); next unless defined $path; if ($path =~ /^\Q$dir\E(\/.*)?$/) { $pids{$pid} = 1; } $path = readlink("/proc/$pid/exe"); if ($path =~ /^\Q$dir\E(\/.*)?$/) { $pids{$pid} = 1; } } closedir(D); my @pids = sort keys %pids; exit 0 unless @pids; print "$msg\n" if $msg ne ''; if ($verbose) { my @pidsv = (); for $pid (@pids) { open(F, " 1) { print "sending signal $sig to processes @pidsv\n"; } else { print "sending signal $sig to process @pidsv\n"; } } exit 0 unless $doit; kill $sig => @pids; kill CONT => @pids if $sig eq 9; exit 0; obs-build-20210120/listinstalled000077500000000000000000000035371400202264700164310ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Getopt::Long; use Build; use strict; Getopt::Long::Configure("no_ignore_case"); my $opt_root; my $opt_type; my $opt_extraname; GetOptions ("root=s" => \$opt_root, "type=s" => \$opt_type, "extraname" => \$opt_extraname) or exit(1); $opt_type ||= 'rpm'; my $ql = Build::queryinstalled($opt_type, $opt_root); die("cannot get list of installed packages for type $opt_type\n") unless $ql; for my $q (@$ql) { next unless defined($q->{'name'}) && defined($q->{'arch'}); next if $q->{'arch'} eq 'src' || $q->{'arch'} eq 'nosrc'; my $id = "$q->{'name'}.$q->{'arch'}-0/0/0: "; my $evr = $q->{'version'}; $evr = "$q->{'epoch'}:$evr" if $q->{'epoch'}; $evr .= "-$q->{'release'}" if defined $q->{'release'}; my $buildtime = $q->{'buildtime'} || 0; if ($opt_extraname) { print "I:$id$q->{'name'} $q->{'name'}-$evr $buildtime-$q->{'arch'}\n"; } else { print "I:$id$q->{'name'}-$evr $buildtime-$q->{'arch'}\n"; } } obs-build-20210120/livebuild_pre_run.template000077500000000000000000000041611400202264700210730ustar00rootroot00000000000000#!/bin/bash # # This is a template for a livebuild_pre_run script. These scripts are # executed by build_livebuild.sh in the chroot environment. # ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ fix_debootstrap() { # debootstrap in Debian 7.0 does not like dash if [ -x /usr/sbin/debootstrap ] ; then sed -i 's|^#!/bin/sh|#!/bin/bash|' /usr/sbin/debootstrap fi } fix_lb_bootstrap_archive-keys() { if [ -e /usr/lib/live/build/bootstrap_archive-keys ] ; then sed -i '/apt-get update/{ s/^/#/ }' \ /usr/lib/live/build/bootstrap_archive-keys fi } # # main # : ${TOPDIR:=/usr/src/packages} # Distribution and live-build specific hooks fix_debootstrap fix_lb_bootstrap_archive-keys # Expand configuration based on defaults cd $TOPDIR/LIVEBUILD_ROOT && lb config || exit 1 # Replace all occurances of LB_MIRROR with local repository sed -i "s|^\(LB_MIRROR_[^=]\+=\).*|\1\"file:$TOPDIR/SOURCES/repos/\"|" \ $TOPDIR/LIVEBUILD_ROOT/config/bootstrap sed -i "s|^\(LB_PARENT_MIRROR_[^=]\+=\).*|\1\"file:$TOPDIR/SOURCES/repos/\"|" \ $TOPDIR/LIVEBUILD_ROOT/config/bootstrap # Prevent debootstrap from cleaning our cache sed -i 's|^\(LB_CACHE_PACKAGES=\).*|\1"false"|' \ $TOPDIR/LIVEBUILD_ROOT/config/common # Disable GPG checking sed -i 's|^\(LB_APT_SECURE=\).*|\1"false"|' \ $TOPDIR/LIVEBUILD_ROOT/config/common obs-build-20210120/lxc.conf000066400000000000000000000006701400202264700152600ustar00rootroot00000000000000lxc.aa_profile = lxc-default-with-mounting lxc.cgroup.devices.deny = a # null lxc.cgroup.devices.allow = c 1:3 rw # zero lxc.cgroup.devices.allow = c 1:5 rw # full lxc.cgroup.devices.allow = c 1:7 rw # random lxc.cgroup.devices.allow = c 1:8 rw # urandom lxc.cgroup.devices.allow = c 1:9 rw # tty lxc.cgroup.devices.allow = c 5:0 rw # ptmx lxc.cgroup.devices.allow = c 5:2 rw # console lxc.console = none lxc.console.logfile = /dev/stdout obs-build-20210120/mkbaselibs000077500000000000000000001025211400202264700156630ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ use POSIX; use strict; use File::Temp qw/tempfile tempdir/; # See: http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format.html#S3-RPM-FILE-FORMAT-HEADER-TAG-LISTING # cf http://search.cpan.org/~davecross/Parse-RPM-Spec-0.01/lib/Parse/RPM/Spec.pm my %STAG = ( "NAME" => 1000, "VERSION" => 1001, "RELEASE" => 1002, "EPOCH" => 1003, "SERIAL" => 1003, "SUMMARY" => 1004, "DESCRIPTION" => 1005, "BUILDTIME" => 1006, "BUILDHOST" => 1007, "INSTALLTIME" => 1008, "SIZE" => 1009, "DISTRIBUTION" => 1010, "VENDOR" => 1011, "GIF" => 1012, "XPM" => 1013, "LICENSE" => 1014, "COPYRIGHT" => 1014, "PACKAGER" => 1015, "GROUP" => 1016, "SOURCE" => 1018, "PATCH" => 1019, "URL" => 1020, "OS" => 1021, "ARCH" => 1022, "PREIN" => 1023, "POSTIN" => 1024, "PREUN" => 1025, "POSTUN" => 1026, "OLDFILENAMES" => 1027, "FILESIZES" => 1028, "FILESTATES" => 1029, "FILEMODES" => 1030, "FILERDEVS" => 1033, "FILEMTIMES" => 1034, "FILEMD5S" => 1035, "FILELINKTOS" => 1036, "FILEFLAGS" => 1037, "FILEUSERNAME" => 1039, "FILEGROUPNAME" => 1040, "ICON" => 1043, "SOURCERPM" => 1044, "FILEVERIFYFLAGS" => 1045, "ARCHIVESIZE" => 1046, "PROVIDENAME" => 1047, "PROVIDES" => 1047, "REQUIREFLAGS" => 1048, "REQUIRENAME" => 1049, "REQUIREVERSION" => 1050, "NOSOURCE" => 1051, "NOPATCH" => 1052, "CONFLICTFLAGS" => 1053, "CONFLICTNAME" => 1054, "CONFLICTVERSION" => 1055, "EXCLUDEARCH" => 1059, "EXCLUDEOS" => 1060, "EXCLUSIVEARCH" => 1061, "EXCLUSIVEOS" => 1062, "RPMVERSION" => 1064, "TRIGGERSCRIPTS" => 1065, "TRIGGERNAME" => 1066, "TRIGGERVERSION" => 1067, "TRIGGERFLAGS" => 1068, "TRIGGERINDEX" => 1069, "VERIFYSCRIPT" => 1079, "CHANGELOGTIME" => 1080, "CHANGELOGNAME" => 1081, "CHANGELOGTEXT" => 1082, "PREINPROG" => 1085, "POSTINPROG" => 1086, "PREUNPROG" => 1087, "POSTUNPROG" => 1088, "BUILDARCHS" => 1089, "OBSOLETENAME" => 1090, "OBSOLETES" => 1090, "VERIFYSCRIPTPROG" => 1091, "TRIGGERSCRIPTPROG" => 1092, "COOKIE" => 1094, "FILEDEVICES" => 1095, "FILEINODES" => 1096, "FILELANGS" => 1097, "PREFIXES" => 1098, "INSTPREFIXES" => 1099, "SOURCEPACKAGE" => 1106, "PROVIDEFLAGS" => 1112, "PROVIDEVERSION" => 1113, "OBSOLETEFLAGS" => 1114, "OBSOLETEVERSION" => 1115, "DIRINDEXES" => 1116, "BASENAMES" => 1117, "DIRNAMES" => 1118, "OPTFLAGS" => 1122, "DISTURL" => 1123, "PAYLOADFORMAT" => 1124, "PAYLOADCOMPRESSOR" => 1125, "PAYLOADFLAGS" => 1126, "INSTALLCOLOR" => 1127, "INSTALLTID" => 1128, "REMOVETID" => 1129, "RHNPLATFORM" => 1131, "PLATFORM" => 1132, "PATCHESNAME" => 1133, "PATCHESFLAGS" => 1134, "PATCHESVERSION" => 1135, "CACHECTIME" => 1136, "CACHEPKGPATH" => 1137, "CACHEPKGSIZE" => 1138, "CACHEPKGMTIME" => 1139, "FILECOLORS" => 1140, "FILECLASS" => 1141, "CLASSDICT" => 1142, "FILEDEPENDSX" => 1143, "FILEDEPENDSN" => 1144, "DEPENDSDICT" => 1145, "SOURCEPKGID" => 1146, "PRETRANS" => 1151, "POSTTRANS" => 1152, "PRETRANSPROG" => 1153, "POSTTRANSPROG" => 1154, "DISTTAG" => 1155, "SUGGESTSNAME" => 1156, "SUGGESTSVERSION" => 1157, "SUGGESTSFLAGS" => 1158, "ENHANCESNAME" => 1159, "ENHANCESVERSION" => 1160, "ENHANCESFLAGS" => 1161, "PRIORITY" => 1162, "CVSID" => 1163, ); # do not mix numeric tags with symbolic tags. # special symbolic tag 'FILENAME' exists. # This function seems to take a set of tags and populates a global # hash-table (%res) with data obtained by doing a binary unpack() on # the raw package # http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format.html sub rpmq_many { my $rpm = shift; my @stags = @_; my $need_filenames = grep { $_ eq 'FILENAMES' } @stags; push @stags, 'BASENAMES', 'DIRNAMES', 'DIRINDEXES', 'OLDFILENAMES' if $need_filenames; @stags = grep { $_ ne 'FILENAMES' } @stags if $need_filenames; my %stags = map {0+($STAG{$_} or $_) => $_} @stags; my ($magic, $sigtype, $headmagic, $cnt, $cntdata, $lead, $head, $index, $data, $tag, $type, $offset, $count); local *RPM; if (ref($rpm) eq 'ARRAY') { ($headmagic, $cnt, $cntdata) = unpack('N@8NN', $rpm->[0]); if ($headmagic != 0x8eade801) { warn("Bad rpm\n"); return (); } if (length($rpm->[0]) < 16 + $cnt * 16 + $cntdata) { warn("Bad rpm\n"); return (); } $index = substr($rpm->[0], 16, $cnt * 16); $data = substr($rpm->[0], 16 + $cnt * 16, $cntdata); } else { return () unless open(RPM, "<$rpm"); if (read(RPM, $lead, 96) != 96) { warn("Bad rpm $rpm\n"); close RPM; return (); } ($magic, $sigtype) = unpack('N@78n', $lead); if ($magic != 0xedabeedb || $sigtype != 5) { warn("Bad rpm $rpm\n"); close RPM; return (); } if (read(RPM, $head, 16) != 16) { warn("Bad rpm $rpm\n"); close RPM; return (); } ($headmagic, $cnt, $cntdata) = unpack('N@8NN', $head); if ($headmagic != 0x8eade801) { warn("Bad rpm $rpm\n"); close RPM; return (); } if (read(RPM, $index, $cnt * 16) != $cnt * 16) { warn("Bad rpm $rpm\n"); close RPM; return (); } $cntdata = ($cntdata + 7) & ~7; if (read(RPM, $data, $cntdata) != $cntdata) { warn("Bad rpm $rpm\n"); close RPM; return (); } } my %res = (); if (ref($rpm) eq 'ARRAY' && @stags && @$rpm > 1) { my %res2 = &rpmq_many([ $rpm->[1] ], @stags); %res = (%res, %res2); return %res; } if (ref($rpm) ne 'ARRAY' && @stags) { if (read(RPM, $head, 16) != 16) { warn("Bad rpm $rpm\n"); close RPM; return (); } ($headmagic, $cnt, $cntdata) = unpack('N@8NN', $head); if ($headmagic != 0x8eade801) { warn("Bad rpm $rpm\n"); close RPM; return (); } if (read(RPM, $index, $cnt * 16) != $cnt * 16) { warn("Bad rpm $rpm\n"); close RPM; return (); } if (read(RPM, $data, $cntdata) != $cntdata) { warn("Bad rpm $rpm\n"); close RPM; return (); } } close RPM if ref($rpm) ne 'ARRAY'; return %res unless @stags; # nothing to do while($cnt-- > 0) { ($tag, $type, $offset, $count, $index) = unpack('N4a*', $index); $tag = 0+$tag; if ($stags{$tag}) { eval { my $otag = $stags{$tag}; if ($type == 0) { $res{$otag} = [ '' ]; } elsif ($type == 1) { $res{$otag} = [ unpack("\@${offset}c$count", $data) ]; } elsif ($type == 2) { $res{$otag} = [ unpack("\@${offset}c$count", $data) ]; } elsif ($type == 3) { $res{$otag} = [ unpack("\@${offset}n$count", $data) ]; } elsif ($type == 4) { $res{$otag} = [ unpack("\@${offset}N$count", $data) ]; } elsif ($type == 5) { $res{$otag} = [ undef ]; } elsif ($type == 6) { $res{$otag} = [ unpack("\@${offset}Z*", $data) ]; } elsif ($type == 7) { $res{$otag} = [ unpack("\@${offset}a$count", $data) ]; } elsif ($type == 8 || $type == 9) { my $d = unpack("\@${offset}a*", $data); my @res = split("\0", $d, $count + 1); $res{$otag} = [ splice @res, 0, $count ]; } else { $res{$otag} = [ undef ]; } }; if ($@) { warn("Bad rpm $rpm: $@\n"); return (); } } } if ($need_filenames) { if ($res{'OLDFILENAMES'}) { $res{'FILENAMES'} = [ @{$res{'OLDFILENAMES'}} ]; } else { my $i = 0; $res{'FILENAMES'} = [ map {"$res{'DIRNAMES'}->[$res{'DIRINDEXES'}->[$i++]]$_"} @{$res{'BASENAMES'}} ]; } } return %res; } sub rpmq_add_flagsvers { my $res = shift; my $name = shift; my $flags = shift; my $vers = shift; return unless $res; my @flags = @{$res->{$flags} || []}; my @vers = @{$res->{$vers} || []}; for (@{$res->{$name}}) { if (@flags && ($flags[0] & 0xe) && @vers) { $_ .= ' '; $_ .= '<' if $flags[0] & 2; $_ .= '>' if $flags[0] & 4; $_ .= '=' if $flags[0] & 8; $_ .= " $vers[0]"; } shift @flags; shift @vers; } } my @preamble = qw{ Name Version Release Epoch Summary Copyright License Distribution Disturl Vendor Group Packager Url Icon Prefixes }; my $rpm; my $arch; my $config = ''; my $targettype; my $targetarch; my $prefix; my $extension; my $configdir; my $targetname; my $legacyversion; my @baselib; my @config; my @provides; my @obsoletes; my @requires; my @prerequires; my @conflicts; my @recommends; my @supplements; my @suggests; my @prein; my @postin; my @preun; my @postun; my $autoreqprov; my $verbose; my %target_matched; my @filesystem; # Used for each package by sub parse_config { my $target = shift; my $pkgname = shift; my $pkgver = shift; my $pkghasmatched; my $pkgmatches = 1; my $packageseen = 0; $prefix = ''; $legacyversion = ''; $extension = ''; $configdir = ''; $targetname = ''; ($targetarch, $targettype) = split(':', $target, 2); @baselib = (); @config = (); @provides = (); @obsoletes = (); @requires = (); @recommends = (); @supplements = (); @suggests = (); @prerequires = (); @conflicts = (); @prein = (); @postin = (); @preun = (); @postun = (); $autoreqprov = 'on'; my $match1 = ''; for (split("\n", $config)) { s/^\s+//; s/\s+$//; next if $_ eq '' || $_ =~ /^#/; if ($_ eq 'end_of_config') { $pkgmatches = 0; $packageseen = 0; next; } s/\/$targettype/g; s/\/$targetarch/g; s/\/$pkgname/g; s/\/$pkgver/g; s/\/$prefix/g; s/\/$extension/g; s/\/$configdir/g; s/\/$match1/g; if (/^arch\s+/) { next unless s/^arch\s+\Q$arch\E\s+//; } next if /^targets\s+/; if (/\s+package\s+[-+_a-zA-Z0-9]+$/) { $pkgmatches = 0; # XXX: hack for targettype/targetarch conditional $packageseen = 1; } if (/\s+package\s+\/[-+_a-zA-Z0-9]+\/$/) { $pkgmatches = 0; # XXX: hack $packageseen = 1; } if (/^targettype\s+/) { next unless s/^targettype\s+\Q$targettype\E\s+//; } if (/^targetarch\s+/) { next unless s/^targetarch\s+\Q$targetarch\E\s+//; } if (/^prefix\s+(.*?)$/) { $prefix = $1; next; } if (/^legacyversion\s+(.*?)$/) { $legacyversion = $1; next; } if (/^extension\s+(.*?)$/) { $extension = $1; next; } if (/^configdir\s+(.*?)$/) { $configdir= $1; next; } if (/^targetname\s+(.*?)$/) { $targetname = $1 if $pkgmatches || !$packageseen; next; } $_ = "baselib $_" if /^[\+\-\"]/; $_ = "package $_" if /^[-+_a-zA-Z0-9]+$/; if (/^package\s+\/(.*?)\/$/) { my $pm = $1; $packageseen = 1; $pkgmatches = $pkgname =~ /$pm/; $match1 = defined($1) ? $1 : '' if $pkgmatches; $pkghasmatched |= $pkgmatches if $pkgname =~ /-debuginfo$/ && $target_matched{$target}; next; } if (/^package\s+(.*?)$/) { $packageseen = 1; $pkgmatches = $1 eq $pkgname; $pkghasmatched |= $pkgmatches; next; } next unless $pkgmatches; return 0 if $_ eq 'block!'; if (/^provides\s+(.*?)$/) { push @provides, $1; next; } if (/^requires\s+(.*?)$/) { push @requires, $1; next; } if (/^recommends\s+(.*?)$/) { push @recommends, $1; next; } if (/^supplements\s+(.*?)$/) { push @supplements, $1; next; } if (/^suggests\s+(.*?)$/) { push @suggests, $1; next; } if (/^prereq\s+(.*?)$/) { push @prerequires, $1; next; } if (/^obsoletes\s+(.*?)$/) { push @obsoletes, $1; next; } if (/^conflicts\s+(.*?)$/) { push @conflicts, $1; next; } if (/^baselib\s+(.*?)$/) { push @baselib, $1; next; } if (/^config\s+(.*?)$/) { push @config, $1; next; } if (/^pre(in)?\s+(.*?)$/) { push @prein, $2; next; } if (/^post(in)?\s+(.*?)$/) { push @postin, $2; next; } if (/^preun\s+(.*?)$/) { push @preun, $1; next; } if (/^postun\s+(.*?)$/) { push @preun, $1; next; } if (/^autoreqprov\s+(.*?)$/) {$autoreqprov = $1; next; } die("bad line: $_\n"); } return $pkghasmatched; } sub read_config { my $cfname = shift; local *F; open(F, "<$cfname") || die("$cfname: $!\n"); my @cf = ; close F; $config .= join('', @cf); # add end of config marker to reset package matching $config .= "\nend_of_config\n"; } sub get_targets { my $architecture = shift; my $conf = shift; my %targets; for (split("\n", $conf)) { if (/^arch\s+/) { next unless s/^arch\s+\Q$architecture\E\s+//; } if (/^targets\s+(.*?)$/) { $targets{$_} = 1 for split(' ', $1); } } my @targets = sort keys %targets; return @targets; } # Packages listed in config file sub get_pkgnames { my %rpms; for (split("\n", $config)) { if (/^(.*\s+)?package\s+([-+_a-zA-Z0-9]+)\s*$/) { # eg : arch ppc package libnuma-devel $rpms{$2} = 1; } elsif (/^\s*([-+_a-zA-Z0-9]+)\s*$/) { # eg: readline-devel $rpms{$1} = 1; } } return sort keys %rpms; } # Packages listed in config file - debian variant (can have "." in package names) sub get_debpkgnames { my %debs; for (split("\n", $config)) { if (/^(.*\s+)?package\s+([-+_a-zA-Z0-9.]+)\s*$/) { # eg : arch ppc package libnuma-devel $debs{$2} = 1; } elsif (/^\s*([-+_a-zA-Z0-9.]+)\s*$/) { # eg: readline-devel $debs{$1} = 1; } } return sort keys %debs; } sub handle_rpms { for $rpm (@_) { my @stags = map {uc($_)} @preamble; push @stags, 'DESCRIPTION'; push @stags, 'FILENAMES', 'FILEMODES', 'FILEUSERNAME', 'FILEGROUPNAME', 'FILEFLAGS', 'FILEVERIFYFLAGS'; push @stags, 'CHANGELOGTIME', 'CHANGELOGNAME', 'CHANGELOGTEXT'; push @stags, 'ARCH', 'SOURCERPM', 'RPMVERSION'; push @stags, 'BUILDTIME'; my %res = rpmq_many($rpm, @stags); die("$rpm: bad rpm\n") unless $res{'NAME'}; my $rname = $res{'NAME'}->[0]; my $sname = $res{'SOURCERPM'}->[0]; die("$rpm is a sourcerpm\n") unless $sname; die("bad sourcerpm: $sname\n") unless $sname =~ /^(.*)-([^-]+)-([^-]+)\.(no)?src\.rpm$/; $sname = $1; my $sversion = $2; my $srelease = $3; $arch = $res{'ARCH'}->[0]; my @targets = get_targets($arch, $config); if (!@targets) { print "no targets for arch $arch, skipping $rname\n"; next; } for my $target (@targets) { next unless parse_config($target, $res{'NAME'}->[0], $res{'VERSION'}->[0]); die("targetname not set\n") unless $targetname; $target_matched{$target} = 1; my %ghosts; my @rpmfiles = @{$res{'FILENAMES'}}; my @ff = @{$res{'FILEFLAGS'}}; for (@rpmfiles) { $ghosts{$_} = 1 if $ff[0] & (1 << 6); shift @ff; } my %files; my %cfiles; my %moves; my %symlinks; for my $r (@baselib) { my $rr = substr($r, 1); if (substr($r, 0, 1) eq '+') { if ($rr =~ /^(.*?)\s*->\s*(.*?)$/) { if (grep {$_ eq $1} @rpmfiles) { $files{$1} = 1; $moves{$1} = $2; } } else { for (grep {/$rr/} @rpmfiles) { $files{$_} = 1; delete $moves{$_}; } } } elsif (substr($r, 0, 1) eq '-') { delete $files{$_} for grep {/$rr/} keys %files; } elsif (substr($r, 0, 1) eq '"') { $rr =~ s/\"$//; if ($rr =~ /^(.*?)\s*->\s*(.*?)$/) { $symlinks{$1} = $2; } else { die("bad baselib string rule: $r\n"); } } else { die("bad baselib rule: $r\n"); } } if ($configdir) { for my $r (@config) { my $rr = substr($r, 1); if (substr($r, 0, 1) eq '+') { $cfiles{$_} = 1 for grep {/$rr/} grep {!$ghosts{$_}} @rpmfiles; } elsif (substr($r, 0, 1) eq '-') { delete $cfiles{$_} for grep {/$rr/} keys %cfiles; } else { die("bad config rule: $r\n"); } } } $files{$_} = 1 for keys %cfiles; if (!%files) { print "$rname($target): empty filelist, skipping rpm\n"; next; } my $i = 0; for (@{$res{'FILENAMES'}}) { $files{$_} = $i if $files{$_}; $i++; } my %cpiodirs; for (keys %files) { next if $cfiles{$_} || $moves{$_}; my $fn = $_; next unless $fn =~ s/\/[^\/]+$//; $cpiodirs{$fn} = 1; } my %alldirs; for (keys %files) { next if $cfiles{$_}; my $fn = $_; if ($moves{$fn}) { $fn = $moves{$fn}; next unless $fn =~ s/\/[^\/]+$//; $alldirs{$fn} = 1; } else { next unless $fn =~ s/\/[^\/]+$//; $alldirs{"$prefix$fn"} = 1; } } $alldirs{$_} = 1 for keys %symlinks; $alldirs{$configdir} = 1 if %cfiles; my $ad; for $ad (keys %alldirs) { $alldirs{$ad} = 1 while $ad =~ s/\/[^\/]+$//; } for (keys %files) { next if $cfiles{$_}; my $fn = $_; if ($moves{$fn}) { delete $alldirs{$moves{$fn}}; } else { delete $alldirs{"$prefix$fn"}; } } delete $alldirs{$_} for keys %symlinks; $ad = $prefix; delete $alldirs{$ad}; delete $alldirs{$ad} while $ad =~ s/\/[^\/]+$//; delete $alldirs{$_} for @filesystem; print "$rname($target): writing specfile...\n"; my ($fh, $specfile) = tempfile(SUFFIX => ".spec"); open(SPEC, ">&=", $fh) || die("open: $!\n"); for my $p (@preamble) { my $pt = uc($p); next unless $res{$pt}; my $d = $res{$pt}->[0]; $d =~ s/%/%%/g; if ($p eq 'Name') { print SPEC "Name: $sname\n"; next; } if ($p eq 'Version') { print SPEC "Version: $sversion\n"; next; } if ($p eq 'Release') { print SPEC "Release: $srelease\n"; next; } if ($p eq 'Disturl') { print SPEC "%define disturl $d\n"; next; } print SPEC "$p: $d\n"; } print SPEC "Source: $rpm\n"; print SPEC "NoSource: 0\n" if $res{'SOURCERPM'}->[0] =~ /\.nosrc\.rpm$/; print SPEC "BuildRoot: %{_tmppath}/baselibs-%{name}-%{version}-build\n"; print SPEC "%define _target_cpu $targetarch\n"; print SPEC "%define __os_install_post %{nil}\n"; print SPEC "%description\nUnneeded main package. Ignore.\n\n"; print SPEC "%package -n $targetname\n"; for my $p (@preamble) { next if $p eq 'Name' || $p eq 'Disturl'; my $pt = uc($p); next unless $res{$pt}; my $d = $res{$pt}->[0]; $d =~ s/%/%%/g; if ($pt eq 'VERSION' && $legacyversion) { $d = $legacyversion; } elsif ($pt eq 'RELEASE' && $legacyversion) { my @bt = localtime($res{'BUILDTIME'}->[0]); $bt[5] += 1900; $bt[4] += 1; $d = sprintf("%04d%02d%02d%02d%02d\n", @bt[5,4,3,2,1]); } print SPEC "$p: $d\n"; } print SPEC "Autoreqprov: $autoreqprov\n"; for my $ar ([\@provides, 'provides'], [\@prerequires, 'prereq'], [\@requires, 'requires'], [\@recommends, 'recommends'], [\@supplements, 'supplements'], [\@obsoletes, 'obsoletes'], [\@conflicts, 'conflicts']) { my @a = @{$ar->[0]}; my @na = (); for (@a) { if (substr($_, 0, 1) eq '"') { die("bad $ar->[1] rule: $_\n") unless /^\"(.*)\"$/; push @na, $1; } elsif (substr($_, 0, 1) eq '-') { my $ra = substr($_, 1); @na = grep {!/$ra/} @na; } else { die("bad $ar->[1] rule: $_\n"); } } print SPEC ucfirst($ar->[1]).": $_\n" for @na; } my $cpiopre = ''; $cpiopre = './' if $res{'RPMVERSION'}->[0] !~ /^3/; my $d = $res{'DESCRIPTION'}->[0]; $d =~ s/%/%%/g; if ($legacyversion) { $d = "This rpm was re-packaged from $res{'NAME'}->[0]-$res{'VERSION'}->[0]-$res{'RELEASE'}->[0]\n\n$d"; } print SPEC "\n%description -n $targetname\n"; print SPEC "$d\n"; print SPEC "%prep\n"; print SPEC "%build\n"; print SPEC "%install\n"; print SPEC "rm -rf \$RPM_BUILD_ROOT\n"; print SPEC "mkdir \$RPM_BUILD_ROOT\n"; print SPEC "cd \$RPM_BUILD_ROOT\n"; my @cfl = grep {!$cfiles{$_} && !$moves{$_}} sort keys %files; if (@cfl) { if ($prefix ne '') { print SPEC "mkdir -p \$RPM_BUILD_ROOT$prefix\n"; print SPEC "pushd \$RPM_BUILD_ROOT$prefix\n"; } print SPEC "cat <.filelist\n"; print SPEC "$_\n" for map {$cpiopre.substr($_, 1)} @cfl; print SPEC "EOFL\n"; print SPEC "mkdir -p \$RPM_BUILD_ROOT$prefix$_\n" for sort keys %cpiodirs; print SPEC "rpm2cpio $rpm | cpio -i -d -v -E .filelist\n"; print SPEC "rm .filelist\n"; if (%ghosts) { for my $fn (grep {$ghosts{$_}} @cfl) { my $fnm = $fn; $fnm = '.' unless $fnm =~ s/\/[^\/]+$//; print SPEC "mkdir -p \$RPM_BUILD_ROOT$prefix$fnm\n"; print SPEC "touch \$RPM_BUILD_ROOT$prefix$fn\n"; } } if ($prefix ne '') { print SPEC "popd\n"; } } if (%cfiles || %moves) { print SPEC "mkdir -p .cfiles\n"; print SPEC "pushd .cfiles\n"; print SPEC "cat <.filelist\n"; print SPEC "$_\n" for map {$cpiopre.substr($_, 1)} grep {$cfiles{$_} || $moves{$_}} sort keys %files; print SPEC "EOFL\n"; print SPEC "rpm2cpio $rpm | cpio -i -d -v -E .filelist\n"; print SPEC "popd\n"; if (%cfiles) { print SPEC "mkdir -p \$RPM_BUILD_ROOT$configdir\n"; print SPEC "mv .cfiles$_ \$RPM_BUILD_ROOT$configdir\n" for sort keys %cfiles; } for my $fn (sort keys %moves) { my $fnm = $moves{$fn}; $fnm = '.' unless $fnm =~ s/\/[^\/]+$//; print SPEC "mkdir -p \$RPM_BUILD_ROOT$fnm\n"; print SPEC "mv .cfiles$fn \$RPM_BUILD_ROOT$moves{$fn}\n"; } print SPEC "rm -rf .cfiles\n"; } for my $fn (sort keys %symlinks) { my $fnm = $fn; $fnm = '.' unless $fnm =~ s/\/[^\/]+$//; print SPEC "mkdir -p \$RPM_BUILD_ROOT$fnm\n"; print SPEC "ln -s $symlinks{$fn} \$RPM_BUILD_ROOT$fn\n"; } if ($prefix ne '' && grep {/\.so.*$/} @cfl) { @postin = () if @postin == 1 && $postin[0] =~ /^\"-p.*ldconfig/; unshift @postin, "\"/sbin/ldconfig -r $prefix\""; } if (@prein) { print SPEC "%pre -n $targetname"; print SPEC $prein[0] =~ /^\"-p/ ? " " : "\n"; for (@prein) { die("bad prein rule: $_\n") unless /^\"(.*)\"$/; print SPEC "$1\n"; } } if (@postin) { print SPEC "%post -n $targetname"; print SPEC $postin[0] =~ /^\"-p/ ? " " : "\n"; for (@postin) { die("bad postin rule: $_\n") unless /^\"(.*)\"$/; print SPEC "$1\n"; } } if (@preun) { print SPEC "%preun -n $targetname"; print SPEC $preun[0] =~ /^\"-p/ ? " " : "\n"; for (@preun) { die("bad preun rule: $_\n") unless /^\"(.*)\"$/; print SPEC "$1\n"; } } if (@postun) { print SPEC "%postun -n $targetname"; print SPEC $postun[0] =~ /^\"-p/ ? " " : "\n"; for (@postun) { die("bad postun rule: $_\n") unless /^\"(.*)\"$/; print SPEC "$1\n"; } } print SPEC "\n%clean\n"; print SPEC "\nrm -rf \$RPM_BUILD_ROOT\n\n"; print SPEC "%files -n $targetname\n"; for my $file (sort keys %alldirs) { print SPEC "%dir %attr(0755,root,root) $file\n"; } for my $file (keys %files) { my $fi = $files{$file}; my $fm = $res{'FILEMODES'}->[$fi]; my $fv = $res{'FILEVERIFYFLAGS'}->[$fi]; my $ff = $res{'FILEFLAGS'}->[$fi]; if (POSIX::S_ISDIR($fm)) { print SPEC "%dir "; } if ($ff & ((1 << 3) | (1 << 4))) { print SPEC "%config(missingok noreplace) "; } elsif ($ff & (1 << 3)) { print SPEC "%config(missingok) "; } elsif ($ff & (1 << 4)) { print SPEC "%config(noreplace) "; } elsif ($ff & (1 << 0)) { print SPEC "%config "; } print SPEC "%doc " if $ff & (1 << 1); print SPEC "%ghost " if $ff & (1 << 6); print SPEC "%license " if $ff & (1 << 7); print SPEC "%readme " if $ff & (1 << 8); if ($fv != 4294967295) { print SPEC "%verify("; if ($fv & 2147483648) { print SPEC "not "; $fv ^= 4294967295; } print SPEC "md5 " if $fv & (1 << 0); print SPEC "size " if $fv & (1 << 1); print SPEC "link " if $fv & (1 << 2); print SPEC "user " if $fv & (1 << 3); print SPEC "group " if $fv & (1 << 4); print SPEC "mtime " if $fv & (1 << 5); print SPEC "mode " if $fv & (1 << 6); print SPEC "rdev " if $fv & (1 << 7); print SPEC ") "; } #sigh, no POSIX::S_ISLNK ... if (($fm & 0170000) == 0120000) { printf SPEC "%%attr(-,%s,%s) ", $res{'FILEUSERNAME'}->[$fi], $res{'FILEGROUPNAME'}->[$fi]; } else { printf SPEC "%%attr(%03o,%s,%s) ", $fm & 07777, $res{'FILEUSERNAME'}->[$fi], $res{'FILEGROUPNAME'}->[$fi]; } if ($cfiles{$file}) { my $fn = $file; $fn =~ s/.*\///; print SPEC "$configdir/$fn\n"; } else { if ($moves{$file}) { print SPEC "$moves{$file}\n"; } else { print SPEC "$prefix$file\n"; } } } for (keys %symlinks) { printf SPEC "%%attr(-,root,root) $_\n"; } if ($res{'CHANGELOGTEXT'}) { print SPEC "\n%changelog -n $targetname\n"; my @ct = @{$res{'CHANGELOGTIME'}}; my @cn = @{$res{'CHANGELOGNAME'}}; my @wdays = qw{Sun Mon Tue Wed Thu Fri Sat}; my @months = qw{Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec}; for my $cc (@{$res{'CHANGELOGTEXT'}}) { my @lt = localtime($ct[0]); my $cc2 = $cc; my $cn2 = $cn[0]; $cc2 =~ s/%/%%/g; $cn2 =~ s/%/%%/g; printf SPEC "* %s %s %02d %04d %s\n%s\n", $wdays[$lt[6]], $months[$lt[4]], $lt[3], 1900 + $lt[5], $cn2, $cc2; shift @ct; shift @cn; } } close(SPEC) || die("$specfile: $!\n"); print "$rname($target): running build...\n"; if (system("rpmbuild -bb $specfile".($verbose ? '' : '>/dev/null 2>&1'))) { print "rpmbuild failed: $?\n"; print "re-running in verbose mode:\n"; system("rpmbuild -bb $specfile 2>&1"); exit(1); } unlink($specfile); } } } ################################################################ sub handle_debs { eval { require Parse::DebControl; }; if ($@){ print "mkbaselibs needs the perl module Parse::DebControl\n". "Error. baselibs-deb.conf specified but mkbaselibs can't run\n". "Please ensure that 'osc meta prjconf' contains the following line:\n". " Support: libparse-debcontrol-perl\n"; return; }; # for each deb: # look in the config file to see if we should be doing anything # # Unpack the deb control data using dpkg-deb # for each target # Unpack the deb control data *and* file data using dpkg-deb # process the config file for this package modifying control and moving files # repackage the target deb for my $deb (@_) { # http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles # unpack the outer loop control file - this gives us eg: the arch my $base = tempdir() || die("tempdir: $!\n"); system "dpkg -e $deb ${base}/DEBIAN" || die "dpkg -e failed on $deb"; my $controlParser = new Parse::DebControl; $controlParser->DEBUG(); my $keys = $controlParser->parse_file("${base}/DEBIAN/control"); # print Dumper($keys); # DebControl supports multiple paragraphs of control data but # debian/control in a .deb only has one (whereas a debian/control # in a build root contains many) # So extract the ref to the first one. my %control = %{@{$keys}[0]}; # Validate this is a binary deb and get the control data my $d_name = $control{'Package'}; my $d_version = $control{'Version'}; $arch = $control{'Architecture'}; # set global $arch # examine the # arch targets [:] [[:]...] # line and get a list of target_arch-es my @targets = get_targets($arch, $config); if (!@targets) { print "no targets for arch $arch, skipping $d_name\n"; next; # there may be more debs to handle } for my $target (@targets) { next unless parse_config($target, $d_name, $d_version); die("targetname not set\n") unless $targetname; # set in the global_conf $target_matched{$target} = 1; my $baseTarget = "${base}/$target"; # Unpack a .deb to work on. We have to do this each time as we # manipulate the unpacked files. system "mkdir ${base}/$target"; system "dpkg -e $deb ${baseTarget}/DEBIAN" || die "dpkg -e failed on $deb"; # Note that extracting to $prefix does the clever move to /lib-x86/ or whatever system "dpkg -x $deb ${baseTarget}/$prefix" || die "dpkg -x failed on $deb"; # Reset the control data $keys = $controlParser->parse_file("${baseTarget}/DEBIAN/control"); %control = %{@{$keys}[0]}; # Force the architecture $control{'Architecture'} = $targetarch; # Currently this script does not manipulate any files # If needed they are all unpacked in ${baseTarget} # we don't need a dsc/spec file.. all done by just moving files around # and running dpkg -b ${base} $NEW_DEB # # my $dscfile = "/usr/src/packages/DSCS/mkbaselibs$$.dsc"; print "$d_name($target): writing dscfile...\n"; # We can Use Parse::DebControl write_file to create the new control file # just modify tags in there # We'll use requires -> Depends: map s/^"(.*)"$/$1/, @requires; # remove leading/trailing "s $control{"Depends"} = @requires ? join(", ", @requires) : ""; # join array if exists or reset it to "" map s/^"(.*)"$/$1/, @prerequires; $control{"Pre-Depends"} = @prerequires ? join(", ", @prerequires) : ""; map s/^"(.*)"$/$1/, @provides; $control{"Provides"} = @provides ? join(", ", @provides) : ""; map s/^"(.*)"$/$1/, @recommends; $control{"Recommends"} = @recommends ? join(", ", @recommends) : ""; map s/^"(.*)"$/$1/, @suggests; $control{"Suggests"} = @suggests ? join(", ", @suggests) : ""; map s/^"(.*)"$/$1/, @obsoletes; $control{"Replaces"} = @obsoletes ? join(", ", @obsoletes) : ""; map s/^"(.*)"$/$1/, @conflicts; $control{"Conflicts"} = @conflicts ? join(", ", @conflicts) : ""; map s/^"(.*)"$/$1/, @supplements; $control{"Enhances"} = @supplements ? join(", ", @supplements) : ""; # Tidy up the various control files. # the md5sums are regenerated by dpkg-deb when building foreach my $c_file ( qw(conffiles postins postrm preinst prerm) ) { unlink "${baseTarget}/DEBIAN/$c_file"; } # Create them if needed if (@prein) { map s/^"(.*)"$/$1/, @prein; # remove leading/trailing "s open(my $SCRIPT, ">${baseTarget}/DEBIAN/preinst"); print $SCRIPT join("\n", @prein) ; chmod(0755, $SCRIPT); close($SCRIPT); } if (@postin) { map s/^"(.*)"$/$1/, @postin; open(my $SCRIPT, ">${baseTarget}/DEBIAN/postinst"); print $SCRIPT join("\n", @postin) ; chmod(0755, $SCRIPT); close($SCRIPT); } if (@preun) { map s/^"(.*)"$/$1/, @preun; open(my $SCRIPT, ">${baseTarget}/DEBIAN/prerm"); print $SCRIPT join("\n", @preun) ; chmod(0755, $SCRIPT); close($SCRIPT); } if (@postun) { map s/^"(.*)"$/$1/, @postun; open(my $SCRIPT, ">${baseTarget}/DEBIAN/postrm"); print $SCRIPT join("\n", @postun) ; chmod(0755, $SCRIPT); close($SCRIPT); } # Don't forget to rename the package - or it will replace/uninstall the /-based one $control{"Package"} = "${d_name}-${targettype}"; $controlParser->write_file("${baseTarget}/DEBIAN/control", \%control, {clobberFile => 1, addNewline=>1 } ); system "dpkg -b ${baseTarget} /usr/src/packages/DEBS/${d_name}-${targettype}_${d_version}_${targetarch}.deb" || die "dpkg -b failed on $deb"; system "rm -rf ${baseTarget}"; } system "rm -rf ${base}"; } } while (@ARGV) { if ($ARGV[0] eq '-v') { $verbose = 1; shift @ARGV; } elsif ($ARGV[0] eq '-c') { shift @ARGV; read_config($ARGV[0]); shift @ARGV; } else { last; } } # args is a list of full pathnames to rpm/deb files die("Usage: mkbaselibs [-v] [-c config] \n") unless @ARGV; my %goodpkgs = map {$_ => 1} get_pkgnames(); # These are packages named in the config file my @pkgs = @ARGV; my @rpms; my @debugrpms; for my $rpm (@pkgs) { my $rpmn = $rpm; unless (-f $rpm) { warn ("$rpm does not exist, skipping\n"); next; } my @rpmfiles = `rpm -qp --queryformat "[%{FILENAMES}\n]" $rpm`; if (!@rpmfiles) { warn ("$rpm is empty, skipping\n"); next; } next if $rpm =~ /\.(no)?src\.rpm$/; # ignore source rpms next if $rpm =~ /\.spm$/; $rpmn =~ s/.*\///; # Remove leading path info $rpmn =~ s/-[^-]+-[^-]+\.[^\.]+\.rpm$/\.rpm/; # remove all version info $rpmn =~ s/\.rpm$//; # remove extension push @rpms, $rpm if $goodpkgs{$rpmn}; if ($rpmn =~ s/-debuginfo$//) { push @debugrpms, $rpm if $goodpkgs{$rpmn}; } } for (@rpms) { die("$_: need absolute path to package\n") unless /^\//; } my %debs_to_process = map {$_ => 1} get_debpkgnames(); # These are packages named in the config file my @debs; for my $deb (@pkgs) { my $debn = $deb; next unless $debn =~ /\.deb$/; my @debfiles = `dpkg --contents $deb`; if (!@debfiles) { warn ("$deb is empty, skipping\n"); next; } $debn =~ s/.*\///; # Remove leading path info $debn =~ s/_[^_]+_[^_]+\.deb$//; # remove all version info and extension push @debs, $deb if $debs_to_process{$debn}; print "ignoring $deb as $debn not in baselibs.conf\n" if !$debs_to_process{$debn}; } for (@debs) { die("$_: need absolute path to package\n") unless /^\//; } exit 0 unless @rpms or @debs; if (@rpms) { @filesystem = split("\n", `rpm -ql filesystem 2>/dev/null`); die("filesystem rpm is not installed\n") unless @filesystem; handle_rpms(@rpms); handle_rpms(@debugrpms); } if (@debs) { handle_debs(@debs); } obs-build-20210120/mkdrpms000077500000000000000000000112521400202264700152240ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, '/usr/lib/build'; unshift @INC, $::ENV{'BUILD_DIR'} if $::ENV{'BUILD_DIR'}; } use Build; use strict; my $limit = 80; # throw away deltas bigger than this percentage of the reference my %oldpkgs; sub query { my ($file) = @_; return undef if $file =~ /\.(?:patch|delta)\.rpm$/; # XXX: rpmtags? my %res = Build::Rpm::rpmq($file, qw/NAME EPOCH VERSION RELEASE ARCH SOURCERPM NOSOURCE NOPATCH 1124/); return undef unless %res; return undef if $res{'1124'}->[0] && $res{'1124'}->[0] eq 'drpm'; my $arch; if ($res{'SOURCERPM'}->[0]) { $arch = $res{'ARCH'}->[0]; } else { # no src rpm deltas for now # if ($res{'NOSOURCE'}->[0] || $res{'NOPATCH'}->[0]) { # $arch = 'nosrc'; # } else { # $arch = 'src'; # } return undef; } return { file => $file, name => $res{'NAME'}->[0], epoch => $res{'EPOCH'} ? $res{'EPOCH'}->[0] : '', version => $res{'VERSION'}->[0], release => $res{'RELEASE'}->[0], arch => $arch}; } sub lsrpms { local *D; if (-f "$_[0]") { return ($_[0]) if $_[0] =~ /\.rpm$/; return (); } opendir(D, $_[0]) || return (); my @r = grep {$_ ne '.' && $_ ne '..'} readdir(D); closedir D; return map {"$_[0]/$_"} grep {/\.rpm$/} sort(@r); } while (@ARGV) { if ($ARGV[0] eq '--limit') { shift @ARGV; die("--limit needs an argument\n") unless @ARGV; $limit = shift @ARGV; next; } last; } my $prevbuild = shift @ARGV || die "USAGE: $0 "; my @prevbuild = ($prevbuild); my $i = 1; while (-d $prevbuild.$i) { push @prevbuild, $prevbuild.$i; ++$i; } for my $dir (@prevbuild) { for my $file (lsrpms($dir)) { my $q = query($file); next unless $q; my $n = $q->{'name'}.'.'.$q->{'arch'}; push @{$oldpkgs{$n}}, $q; } } my $sysret = 0; for my $dir (@ARGV) { for my $file (lsrpms($dir)) { my $q = query($file); next unless $q; next if $q->{'arch'} eq 'src' || $q->{'arch'} eq 'nosrc'; next if $q->{'name'} =~ /-debug(:?info|source)/; # no debug deltas my $n = $q->{'name'}.'.'.$q->{'arch'}; for my $oq (@{$oldpkgs{$n} || []}) { my $v = $oq->{'version'}; my $r = $oq->{'release'}; if ($v eq $q->{'version'} && $r eq $q->{'release'}) { # skip if same version and release next; } $v .= '_'.$q->{'version'} unless $v eq $q->{'version'}; $r .= '_'.$q->{'release'} unless $r eq $q->{'release'}; my $dn = sprintf("%s-%s-%s.%s.drpm", $q->{'name'}, $v, $r, $q->{'arch'}); my $sn = sprintf("%s-%s-%s.%s.dseq", $q->{'name'}, $v, $r, $q->{'arch'}); print "$dn ... "; my $dndir = $q->{'file'}; $dndir =~ s/[^\/]+$//s; $dn = "$dndir$dn"; my $ret = system('makedeltarpm', '-s', $sn, $oq->{'file'}, $q->{'file'}, $dn); if ($ret || ! -e $dn) { unlink($dn); unlink($sn); print "FAILED\n"; $sysret = 1; } else { my $ns = (stat($dn))[7] || 1; my $os = (stat($q->{'file'}))[7] || 1; my $factor = int($ns / $os * 100); if ($factor > $limit) { print "too big ($factor%), removed\n"; unlink($dn); unlink($sn); } else { local *F; my $seq = ''; if (!open(F, '<', $sn)) { print "missing sequence file, removed\n"; unlink($dn); unlink($sn); next; } 1 while sysread(F, $seq, 8192, length($seq)); close F; chomp $seq; unlink($sn); $seq = "Name: $q->{'name'}\nEpoch: $q->{'epoch'}\nVersion: $q->{'version'}\nRelease: $q->{'release'}\nArch: $q->{'arch'}\nOldName: $oq->{'name'}\nOldEpoch: $oq->{'epoch'}\nOldVersion: $oq->{'version'}\nOldRelease: $oq->{'release'}\nOldArch: $oq->{'arch'}\nSeq: $seq\n"; if (!open(F, '>', $sn) || syswrite(F, $seq) != length($seq) || !close(F)) { print "sequence file write error, removed\n"; unlink($dn); unlink($sn); next; } print "ok ($factor%)\n"; } } } } } exit $sysret; obs-build-20210120/obs-docker-support000077500000000000000000000145441400202264700173200ustar00rootroot00000000000000#!/bin/bash ################################################################ # # Enable docker build support in container. # # Author: Marco Strigl # ################################################################ # # Copyright (c) 2017 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 # ################################################################ LOCAL_REPOS_D="/etc/repos_obs_dockersupport.d/" LOCAL_APTREPOS_D="/etc/aptrepos_obs_dockersupport.d/" DATA_DIR= zypper() { cmd= # try to find the command globalopts=() while test -n "$1"; do case $1 in -*) globalopts[${#globalopts[@]}]="$1" shift ;; *) cmd=$1 shift break ;; esac done case $cmd in in|install|rm|remove|up|update|if|info) exec /usr/bin/zypper -D $LOCAL_REPOS_D "${globalopts[@]}" "$cmd" "$@" ;; ar|addrepo) exec /usr/bin/zypper "${globalopts[@]}" "$cmd" -C "$@" ;; ref|refresh) echo "skipping zypper refresh" exit 0 ;; *) exec /usr/bin/zypper "${globalopts[@]}" "$cmd" "$@" ;; esac } obs_pkg_mgr() { case "$1" in install|remove) shift exec /usr/bin/zypper -D $LOCAL_REPOS_D --no-gpg-checks -n in "$@" ;; add_repo) shift exec /usr/bin/zypper ar -C "$@" ;; *) echo "Usage: obs_pkg_mgr (install|add_repo) args" >&2 exit 1 ;; esac } apt_get() { cmd= # try to find the command globalopts=() while test -n "$1"; do case $1 in -*) globalopts[${#globalopts[@]}]="$1" shift ;; *) cmd=$1 shift break ;; esac done case $cmd in update) exit 0 ;; install|upgrade) exec /usr/bin/apt-get -o Dir::Etc::SourceList=$LOCAL_APTREPOS_D/obssource -o Dir::Etc::SourceParts=$LOCAL_APTREPOS_D --allow-unauthenticated "${globalopts[@]}" "$cmd" "$@" ;; *) exec /usr/bin/apt-get "${globalopts[@]}" "$cmd" "$@" ;; esac } dnf() { # try to find command globalopts=() while test -n "$1"; do case $1 in -*) globalopts[${#globalopts[@]}]="$1" shift ;; *) cmd=$1 shift break ;; esac done case $cmd in in|install|up|update) exec /usr/bin/dnf --setopt=reposdir=$LOCAL_REPOS_D "${globalopts[@]}" "$cmd" "$@" ;; *) exec /usr/bin/dnf "${globalopts[@]}" "$cmd" "$@" ;; esac } yum() { # try to find command globalopts=() while test -n "$1"; do case $1 in -*) globalopts[${#globalopts[@]}]="$1" shift ;; *) cmd=$1 shift break ;; esac done case $cmd in in|install|up|update) exec /usr/bin/yum --setopt=reposdir=$LOCAL_REPOS_D "${globalopts[@]}" "$cmd" "$@" ;; *) exec /usr/bin/yum "${globalopts[@]}" "$cmd" "$@" ;; esac } upload_with_perl=' use Socket; $/ = undef; my $data = ; my ($size, $ans) = length($data); socket(S, PF_INET, SOCK_STREAM, getprotobyname("tcp")) || die; connect(S, sockaddr_in(80, inet_aton("127.0.0.1"))) || die("connect: $!\n"); select(S); $| = 1; print S "PUT $ARGV[0] HTTP/1.1\r\nContent-Length: ".length($data)."\r\n\r\n$data"; read(S, $ans, 1024); die($ans) unless $ans =~ /^200/; ' upload_packages() { local n=$1 local ans if test -x /usr/bin/rpm -o -x /bin/rpm ; then rpm -qa --qf '%{NAME}|%{EPOCH}|%{VERSION}|%{RELEASE}|%{ARCH}|%{DISTURL}|%{LICENSE}\n' > /tmp/packages if test -n "$DATA_DIR" ; then cp /tmp/packages "$DATA_DIR/UPLOAD/$n" elif test -x /usr/bin/curl ; then curl "http://localhost:80/$n" -T /tmp/packages elif test -x /usr/bin/perl ; then perl -e "$upload_with_perl" "/$n" < /tmp/packages else (echo -n -e "PUT /$n HTTP/1.1\r\nContent-Length: $(wc -c < /tmp/packages)\r\n\r\n" | cat - /tmp/packages && read -t 600 ans ; case "$ans" in *\ 200\ *) ;; *) echo "$ans" >&2 ;; esac) <>/dev/tcp/localhost/80 1>&0 fi rm -f /tmp/packages fi } obs_docker_support() { case "$1" in --install|-i) 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 test -e /usr/bin/apt-get && ln -s obs-docker-support /usr/local/sbin/apt-get 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 < $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 upload_packages basepackages ;; --uninstall|-u) rm -rf "$LOCAL_REPOS_D" rm -rf "$LOCAL_APTREPOS_D" rm -f /usr/local/sbin/zypper rm -f /usr/local/sbin/yum rm -f /usr/local/sbin/dnf rm -f /usr/local/sbin/apt-get rm -f /usr/local/sbin/obs_pkg_mgr if test -e /var/lib/apt.obssave ; then rm -rf /var/lib/apt mv /var/lib/apt.obssave /var/lib/apt fi upload_packages packages rm -f /usr/local/sbin/obs-docker-support ;; esac } if test `id -u` != "0"; then echo "obs-docker-support: not executed as root user!" exit 1 fi case ${0##*/} in obs-docker-support) obs_docker_support "$@" ;; obs_pkg_mgr) obs_pkg_mgr "$@" ;; zypper) zypper "$@" ;; apt-get) apt_get "$@" ;; *) echo "obs-docker-support: unsupported mode ${0##*/}" >&2 exit 1 esac obs-build-20210120/obs_example/000077500000000000000000000000001400202264700161165ustar00rootroot00000000000000obs-build-20210120/obs_example/Dockerfile000066400000000000000000000013311400202264700201060ustar00rootroot00000000000000FROM opensuse:latest # Make obs_pkg_mgr available ARG OBS_REPOSITORY_URL ADD obs_pkg_mgr /usr/bin/obs_pkg_mgr RUN chmod +x /usr/bin/obs_pkg_mgr RUN obs_pkg_mgr add_repo http://download.opensuse.org/repositories/Virtualization:/containers/openSUSE_Leap_42.2/ "Virtualization:Containers (openSUSE_Leap_42.2)" && ls ; obs_pkg_mgr add_repo http://example.com/my_project:/mysubproject/my_package/ "My example project" && ls RUN obs_pkg_mgr install util-linux calcurse # amarok RUN obs_pkg_mgr install awk gcc \ which RUN ls # irrelevant command before additional dependencies RUN obs_pkg_mgr install glibc \ file-magic && ls ; ls -la ; obs_pkg_mgr install nethogs RUN obs_pkg_mgr install ssh-contact dumb-init; ls && ls -la obs-build-20210120/obs_example/fissile_example_spec.yml000066400000000000000000000004301400202264700230210ustar00rootroot00000000000000Name: "uaa-fissile-package" Version: 0.0 Release: 0 Summary: This package generates docker images for uaa-fissile-release License: [TBD] Description: "This is a very long description" DockerImageDeps: - "fissile-dev:201707081450" Build: "./build" Artifacts: - ".bosh/cache/*" obs-build-20210120/obs_example/obs_pkg_mgr000077500000000000000000000025431400202264700203410ustar00rootroot00000000000000#!/bin/bash VERSION="0.1" DESCRIPTION="Command/Subcommand line script template" usage() { echo "Usage: $0 (install|add_repo) args" 1>&2; exit 1; } function disable_repos { # Disable all repos for repo in "${repos[@]}"; do zypper modifyrepo -d $repo done # Add OBS repository zypper ar $OBS_REPOSITORY_URL obs_repository } function enable_repos { # Remove our obs repository zypper rr obs_repository # Enable all repos for repo in "${repos[@]}"; do zypper modifyrepo -e $repo done } install() { shift # remove the subcommand # Get enables repos and store them so we can enable them in the end. readarray -t repos <<< "$(zypper ls -E | grep "Yes" | awk '{print $1}' )" [ ! -z "$OBS_REPOSITORY_URL" ] && disable_repos zypper ref # TODO: use the "-r" option to avoid disabling/enabling repos zypper --no-gpg-checks -n in "$@" [ ! -z "$OBS_REPOSITORY_URL" ] && enable_repos } # Currently only this format is supported: # obs_pkg_mgr add_repo # obs_pkg_mgr add_repo add_repo() { shift # remove the subcommand # No need to refresh the repo if we are inside OBS if [ ! -z "$OBS_REPOSITORY_URL" ]; then zypper ar -C -G "$@" else zypper ar -G "$@" fi } case "$1" in install) install "$@" ;; add_repo) add_repo "$@" ;; *) usage exit 1 ;; esac exit 0; obs-build-20210120/openstack-console000066400000000000000000000035111400202264700171720ustar00rootroot00000000000000################################################################ # # Copyright (c) 2017 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 # ################################################################ import websocket import sys import re import time url = '' if len(sys.argv) != 2: sys.exit("usage: openstack-console ") else: url = sys.argv[1] print("openstack-console: Using url '%s'" % url) ws = websocket.create_connection(url, header={'Sec-WebSocket-Protocol: binary'}) buf = '' timeout=120 while timeout > 0: try: data = ws.recv() break except websocket._exceptions.WebSocketConnectionClosedException: print("Failed to get data from websocket %d retries left." % timeout) ws = websocket.create_connection(url, header={'Sec-WebSocket-Protocol: binary'}) timeout -= 1 time.sleep(1) while True: sys.stdout.write(data) if not ws.connected: sys.stdout.write("[connection closed]\n") break buf += data buf = buf[-256:] if re.search("[\r\n]\[\s*[0-9\.]*]\s+reboot: Power down", buf): break data = ws.recv() ws.close() obs-build-20210120/order000077500000000000000000000050541400202264700146650ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use Build; use strict; my ($dist, $archs, $configdir, $manifest); $configdir = ($::ENV{'BUILD_DIR'} || '/usr/lib/build') . '/configs'; while (@ARGV) { if ($ARGV[0] eq '--dist') { shift @ARGV; $dist = shift @ARGV; next; } if ($ARGV[0] eq '--archpath') { shift @ARGV; $archs = shift @ARGV; next; } if ($ARGV[0] eq '--configdir') { shift @ARGV; $configdir = shift @ARGV; next; } if (@ARGV && $ARGV[0] eq '--manifest') { shift @ARGV; $manifest = shift @ARGV; next; } last; } die("usage: order [--manifest manifest] cachedir [packages...]\n") unless @ARGV; my $cachedir = shift @ARGV; my @p; if ($manifest) { if ($manifest eq '-') { @p = ; } else { local *F; open(F, '<', $manifest) || die("$manifest: $!\n"); @p = ; close F; } chomp @p; } push @p, @ARGV; my $config = Build::read_config_dist($dist, $archs, $configdir); my %deps; my %bins; for my $p (@p) { my $q; for my $suf ('rpm', 'deb', 'arch') { next unless -f "$cachedir/$p.$suf"; if (! -s "$cachedir/$p.$suf") { $q = {'provides' => [], 'requires' => []}; # package from preinstallimage, no need to order last; } $q = Build::query("$cachedir/$p.$suf", 'filelist' => 1, 'alldeps' => 1, 'addselfprovides' => 1, 'normalizedeps' => 1); die("bad binary: $p.$suf\n") unless $q; push @{$q->{'provides'}}, @{$q->{'filelist'}} if $suf eq 'rpm' && $q->{'filelist'}; delete $q->{'filelist'}; last; } die("binary not found: $p\n") unless $q; $deps{$p} = $q; } Build::readdeps($config, undef, \%deps); @p = Build::order($config, @p); print "@p\n"; obs-build-20210120/patchdockerfile000077500000000000000000000040271400202264700167000ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 2020 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 # ################################################################ use strict; use warnings; my $install_docker_support = "COPY .obs-docker-support /usr/local/sbin/obs-docker-support\n" . "RUN obs-docker-support --install\n"; my $uninstall_docker_support = "RUN obs-docker-support --uninstall\n"; my @sections = ( [] ); while () { $_ .= "\n" unless /\n$/s; push @sections, [] if /^FROM\s/i; push @{$sections[-1]}, $_; } # write out header unmodified print join('', @{shift @sections}); for my $s (@sections) { # analyze the section (first line is always FROM) my ($install_idx, $uninstall_idx); my $idx = 0; for my $line (@$s) { if ($line =~ /^[uU][sS][eE][rR]\s+root[\s\n]/) { $install_idx = $idx unless defined $install_idx; $uninstall_idx = undef; } elsif ($line =~ /^[uU][sS][eE][rR]\s+/) { $install_idx = 0 unless defined $install_idx; $uninstall_idx = $idx unless defined $uninstall_idx; } $idx++; } # patch in commands $s->[$install_idx || 0] .= $install_docker_support; substr($s->[$uninstall_idx], 0, 0, $uninstall_docker_support) if defined $uninstall_idx; $s->[-1] .= $uninstall_docker_support unless defined $uninstall_idx; print join('', @$s); } obs-build-20210120/qemu-reg000066400000000000000000000063171400202264700152740ustar00rootroot00000000000000# register qemu binfmts # - used by initvm, build common_functions and init_buildsystem # derived from /usr/sbin/qemu-binfmt-conf.sh # NOTE: this requires a qemu with the binfmt misc handler binary # NOTE: blacklisted host machine types are added via space separated elements :aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-aarch64-binfmt:P aarch64 :alpha:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-alpha-binfmt:P alpha :arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P armv6l armv7l armv8l :armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb-binfmt:P armv6b armv7b armv8b :ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc-binfmt:P ppc ppc64 :ppc64:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc64-binfmt:P ppc64 :ppc64le:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-ppc64le-binfmt:P ppc64le :m68k:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-m68k-binfmt:P m68k :mips:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips-binfmt:P mips :mipsel:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsel-binfmt:P mipsel :riscv64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-riscv64-binfmt:P riscv64 :s390x:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-s390x-binfmt:P s390x :sh4:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-sh4-binfmt:P sh4 :sh4eb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb-binfmt:P sh4eb :sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sparc-binfmt:P sparc obs-build-20210120/queryconfig000077500000000000000000000063721400202264700161110ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use strict; use Build; use Build::Rpm; sub evalmacros { my ($config, $str) = @_; my @xspec; Build::Rpm::parse({%$config, 'save_expanded' => 1} , [ "$str" ], \@xspec); return @xspec && ref($xspec[0]) ? $xspec[0]->[1] : ''; } my ($dist, $archs, $configdir, $type, $argument); $configdir = ($::ENV{'BUILD_DIR'} || '/usr/lib/build') . '/configs'; while (@ARGV) { if ($ARGV[0] eq '--dist') { shift @ARGV; $dist = shift @ARGV; next; } elsif ($ARGV[0] eq '--archpath') { shift @ARGV; $archs = shift @ARGV; next; } elsif ($ARGV[0] eq '--configdir') { shift @ARGV; $configdir = shift @ARGV; next; } elsif (defined($type)) { $argument = shift @ARGV; } else { $type = shift @ARGV; } } die("Please specify what to query\n") unless defined $type; my $cf = Build::read_config_dist($dist, $archs, $configdir); die("Unable to read config\n") unless $cf; if ($type eq 'buildflags') { die("Specify which buildflag to query\n") unless $argument; my $result = $cf->{"buildflags:$argument"}; print "$result\n" if defined $result; } elsif ($type eq 'buildflags+') { die("Specify which buildflag to query\n") unless $argument; for (@{$cf->{'buildflags'} || []}) { print "$1\n" if /\Q$argument\E:(.*)/; } } elsif ($type eq 'hostarch') { my $result = $cf->{"hostarch"}; print "$result\n" if defined $result; } elsif ($type eq 'target' || $type eq 'type' || $type eq 'binarytype' || $type eq 'buildengine' || $type eq 'rawmacros') { print "$cf->{$type}\n" if $cf->{$type}; } elsif ($type eq 'repotype') { print join(' ', @{$cf->{$type}})."\n" if $cf->{$type}; } elsif ($type eq 'optflags') { exit(0) unless $cf->{'optflags'}; my $all = $cf->{'optflags'}->{'*'}; $all = defined($all) && $all ne '' ? " $all" : ''; $all .= " -g" if $argument && $argument eq 'debug'; for (sort keys %{$cf->{'optflags'}}) { next if $_ eq '*'; print "optflags: $_ $cf->{'optflags'}->{$_}$all\n"; } } elsif ($type eq 'substitute') { die("Specify which substitute to query\n") unless $argument; my @res = @{$cf->{'substitute'}->{$argument} || []}; print join(' ', @res)."\n" if @res; } elsif ($type eq 'eval') { die("Specify what to eval\n") unless defined $argument; my $result = evalmacros($cf, $argument); print "$result\n"; } else { die("unsupported query type: $type\n"); } exit(0); obs-build-20210120/runservices000077500000000000000000000064561400202264700161310ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use POSIX; use File::Temp (); use File::Copy (); use strict; use Build::SimpleXML; my $servicedir = '/usr/lib/obs/service'; my $buildroot = ''; sub ls { local *D; opendir(D, $_[0]) || return (); my @r = grep {$_ ne '.' && $_ ne '..'} readdir(D); closedir D; return @r; } sub run_services { my ($xml) = @_; my $servicexml = Build::SimpleXML::parse($xml); die("not a valid _service file\n") unless $servicexml && $servicexml->{'services'}; $servicexml = $servicexml->{'services'}->[0]; my $tempdir; if ($buildroot ne '') { $tempdir = File::Temp::tempdir('CLEANUP' => 1, 'DIR' => "$buildroot/tmp"); die("bad tempdir\n") unless $tempdir =~ s/^\Q$buildroot\E//; } else { $tempdir = File::Temp::tempdir('CLEANUP' => 1); } # take default version setting for my $s (@{$servicexml->{'service'} || []}) { # buildtime only is default next unless $s->{'mode'} && $s->{'mode'} eq 'buildtime'; die("missing name in service\n") unless $s->{'name'}; if (! -x "$buildroot$servicedir/$s->{'name'}") { die("service '$s->{'name'}' configured to run, but is not available\n"); } my @run; push @run, "$servicedir/$s->{'name'}"; for my $param (@{$s->{'param'}}) { next if $param->{'name'} eq 'outdir'; next unless $param->{'_content'}; push @run, "--$param->{'name'}"; push @run, $param->{'_content'}; } push @run, "--outdir"; push @run, $tempdir; my $pid = fork(); die("fork: $!\n") unless defined $pid; if ($pid == 0) { if ($buildroot ne '') { chroot($buildroot) || die("chroot $buildroot: $!\n"); } exec(@run); die("$run[0]: $!\n"); } 1 while waitpid($pid, 0) != $pid; die("service run failed for service '$s->{'name'}'\n") if $?; # copy back for my $file (grep {!/^[:\.]/} ls("$buildroot$tempdir")) { File::Copy::move("$buildroot$tempdir/$file", $file) if -f "$buildroot$tempdir/$file"; } } } if (@ARGV > 1 && $ARGV[0] eq '--buildroot') { shift @ARGV; $buildroot = shift @ARGV; $buildroot = '' if $buildroot && $buildroot eq '/'; $buildroot =~ s@//+@/@; # or we may fail with 'bad tempdir' later. die("bad buildroot\n") unless $buildroot eq '' || $buildroot =~ /^\//; } local *F; open(F, '<', '_service') || die("_service: $!\n"); my $xml = ''; 1 while sysread(F, $xml, 4096, length($xml)) > 0; close F; run_services($xml); obs-build-20210120/signdummy000077500000000000000000000037741400202264700155750ustar00rootroot00000000000000#!/usr/bin/perl ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ # simple "sign" replacement that does nothing but # write a 2048 byte file with a fixed signature. # sign is used in kiwi builds to sign repositories my $mode; while (@ARGV) { if ($ARGV[0] =~ /^-([cdrp])$/) { $mode = $1; shift @ARGV; next; } if ($ARGV[0] eq '--') { shift @ARGV; last; } if ($ARGV[0] =~ /^-/) { die("unsupported option $ARGV[0]\n"); } last; } if ($mode eq 'p') { my $block = "sIGnMeP\n"; $block .= "\0" x (8192 - length($block)); (syswrite(STDOUT, $block) || 0) == 8192 || die("pubkey write: $!\n"); exit 0; } die("only detached mode possible\n") if !$mode || $mode ne 'd'; die("filter mode not supported\n") unless @ARGV; for my $file (@ARGV) { local *F; open(F, '<', $file) || die("$file: $!\n"); my $buf = ''; 1 while sysread(F, $buf, 16384, length($buf)); close(F) || die("$file: $!\n"); my $block = "sIGnMe!\n"; $block .= sprintf("%08x%08x\n", length($buf), unpack("%32C*", $buf)); $block .= "\0" x (2048 - length($block)); open(F, '>', "$file.asc") || die("$file.asc: $!\n"); (syswrite(F, $block) || 0) == 2048 || die("$file.asc: $!\n"); close(F) || die("$file.asc: $!\n"); } obs-build-20210120/spec2changelog000077500000000000000000000056671400202264700164500ustar00rootroot00000000000000#!/usr/bin/perl # # Tiny perl script that parses a .spec file (STDIN), extracts # its %changelog entries and prints (STDOUT) them in the # format of a .changes file, ordered. # # Usage: cat foo.spec | spec2changes.pl > foo.changes # ################################################################ # # Copyright 2009 by Pascal Bleser # # 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 # ################################################################ use warnings; use strict; use Date::Language; use POSIX qw(strftime setlocale LC_ALL); # make sure date printed in correct locale $ENV{'TZ'} = 'UTC'; setlocale(LC_ALL, 'C'); my $sep = "-" x 67; my @days = qw{Mon Tue Wed Thu Fri Sat Sun}; my @months = qw{Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec}; #---------------------------------------------------------------------- # my %dh = map { $_ => 1 } @days; my %mh = map { $_ => 1 } @months; my $date_parser = Date::Language->new('English'); my %items = (); my $current_block = undef; my $time = undef; while (<>) { if (/^%changelog/ .. eof()) { next if /^%/; next if /^\s*#/; chomp; s/\s+$//; if (/^\*\s+(([A-Z][a-z]{2})\s+([A-Z][a-z]{2})\s+\d{1,2}\s+\d{4})(\s+(.*)\s*)$/ and exists $dh{$2} and exists $mh{$3}) { $items{$time} = $current_block if defined $current_block and defined $time; $time = $date_parser->str2time($1); $current_block = []; $_ = $4; } elsif (/^\*/) { warn("not matching a headline: \"$_\"\n"); } push(@$current_block, $_); } } $items{$time} = $current_block if defined $current_block and defined $time; foreach my $time (sort { $b <=> $a } (keys(%items))) { print $sep, "\n"; my $item = $items{$time}; my $head = shift(@$item); $head =~ s/^\s+//; $head =~ s/^\-\s+//; if ($head =~ m/^(.+?)\s*<(.+?\@.+?\..+?)>(\s*.*)$/) { $head = "$1 <$2>"; } elsif ($head =~ m/^<(.+?\@.+?\..+?)>(\s*.*)$/) { $head = $1; } if ($head =~ m/^\s*-\s*(.+)$/) { $head = $1; } print strftime("%a %b %e %H:%M:%S %Z %Y", localtime($time)), " - ", $head, "\n"; my $first = shift(@$item); print "\n" unless defined($first) && ($first eq ''); print $first, "\n"; print join("\n", @$item), "\n" if @$item; print "\n"; } obs-build-20210120/spec_add_patch000077500000000000000000000111241400202264700164660ustar00rootroot00000000000000#!/usr/bin/perl -w # vim:sw=4:et # Author: Dirk Mueller ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ use strict; sub helpexit { print "$0: [file.spec]\n"; exit 1; } my $specname; my %diffs; for my $arg (@ARGV) { if ($arg =~ /\.spec$/) { helpexit() if $specname; $specname = $arg; next; } $diffs{$arg} = 1; } sub find_specfile() { opendir(D, "."); my @specs = grep { /\.spec$/ } readdir(D); closedir(D); # choose the one with the shortest name (heuristic) $specname = ( sort { length($a) - length($b) } @specs)[0]; } if (!defined($specname) || ! -f $specname) { &find_specfile(); } open(S, '<', $specname) or die; my $ifdef_level = 0; my $in_prep = 0; my $in_global = 1; my $last_patch_in_prep_index = 0; my $last_patch_in_global_index = 0; my $last_source_in_global_index = 0; my @c = (); my $index = 0; # first read the specfile, parse useful information while() { if(/^\s*%\s*endif/) { $ifdef_level--; $last_patch_in_prep_index = $index if ($in_prep && $ifdef_level == 0); } die if ($ifdef_level < 0); $ifdef_level++ if(/^\s*%\s*if/); if ($ifdef_level == 0 && !$in_prep && $in_global && /^\%(?:prep|build|install|package|description|doc)/) { $in_global = 0; } if (!$in_prep && /^%prep/i) { $in_prep = 1; die if ($in_global); } if ($in_prep && /^%setup\b/) { $last_patch_in_prep_index = $index; } if ($in_prep && /^\%(?:build|install|package|description|doc)/) { $in_prep = 0; } die if (($in_prep + $in_global) > 1); if ($in_global && /^Patch(?:\d+)?:\s+(.+)/) { $last_patch_in_global_index = $index; if ($diffs{$1}) { print "$1 already in, skipped."; delete $diffs{$1}; } } if ($in_global && $ifdef_level == 0 && /^Source(?:\d+)?:/) { $last_source_in_global_index = $index; } if ($in_prep && $ifdef_level == 0 && /^\%patch/) { $last_patch_in_prep_index = $index; } push(@c, $_); $index++; } close(S); # append after last Source if this spec doesn't have any Patches if ($last_patch_in_global_index == 0) { $last_patch_in_global_index = $last_source_in_global_index; } die if ($ifdef_level > 0); die if ($in_global || $in_prep); die if ($last_patch_in_prep_index == 0); die if ($last_patch_in_global_index == 0); #print "adding Patch: $diffname to line $last_patch_in_global_index\n"; #print "adding %patch to line $last_patch_in_prep_index\n"; # determine patch number my $patchnum = 0; $patchnum = $1+1 if ($c[$last_patch_in_global_index] =~ /Patch(\d+):/); $patchnum = 1 if ($c[$last_patch_in_global_index] =~ /Patch:/); for my $diffname (keys %diffs) { # determine strip level my $striplevel = ""; open(P, '<', $diffname) or die "$diffname: $!\n"; while(

) { # Check if either the --- filename starts with 'a/' or the +++ # filename starts with 'b/', or either starts with a package # name/version prefix. We have to check for either, because either # of them could be /dev/null if a file is being added or # deleted. $striplevel = " -p1" if m,^--- a/, or m,^\+\+\+ b/, or m,^(---|\+\+\+) [^/]+-\d+\.,; last if (/^@@ -\d/); } close(P); print "Adding patch$striplevel $diffname to $specname\n"; splice @c, $last_patch_in_prep_index+1, 0, ("\%patch$patchnum$striplevel\n"); splice @c, $last_patch_in_global_index+1, 0, (sprintf "Patch%s:%s%s\n", $patchnum, ' ' x (10-length($patchnum)), $diffname); ++$last_patch_in_global_index; $last_patch_in_prep_index+=2; # actually line number ++$patchnum; } open(O, '>', "$specname.new") or die; print O @c; close(O); system("diff", "-u", $specname, "$specname.new"); rename("$specname.new", $specname); obs-build-20210120/spectool000077500000000000000000000253351400202264700154060ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ =head1 spectool spectool - tool to work with rpm spec files =head1 SYNOPSIS spectool [options] specfiles... =head1 OPTIONS =over 4 =item B<--help> display help as manpage =item B<--dist>=I set distribution, e.g. "11.1-i586" or path to config =item B<--archpath>=I compatible architecture separated by colon, e.g. C. Autotected if missing. =item B<--configdir>=I path to config files if B<--dist> didn't specify a full path =item B<--define>=I =item B<--with>=I =item B<--without>=I same meaning as in rpmbuild =item B<--tag>=I print tag from spec file, e.g. C. Regexp is also possible, e.g. C =item B<--sources> print package source files. If a file C or C.sources> is present verify the checksums against that. =over 4 =item B<--update> update the checksums =item B<--download> download missing sources =back =back =head1 DESCRIPTION The B<--sources> option allows to manage a sources file in a way similar to Fedora. The sources file lists the check sums and file names of the binary files specified in the spec file. B<--sources> without further options compares the check sums of all files and prints a report consisting of a character that describes the status of the file and the file name. Meaning of the characters is as follows: =over 4 =item B<.> check sum matches =item B check sum broken =item B file is missing, checksum known. Can be verified after download =item B<-> file is missing and checksum unknown =item B<_> file is present but checksum unknown =item B text file, will be skipped for check sums =item B check sum known but not referenced from spec file =back Additionally specifying B<--update> recomputes all check sums and updates the sources file. With B<--download> all missing files are downloaded if the spec file has an http or ftp url. =head2 FORMAT OF THE SOURCES FILE Lines of the form =head2 NAME OF THE SOURCES FILE A file named C is preferred if present for compatibility with Fedora. It only contains md5 sums. If that file is not present the C<.spec> suffix of the spec file is replaced with C<.sources> and the this name used as sources file (e.g. C -> C). In this file sha1 is preferred. Also, the name of the algorithm is prepended with colon to the check sum. =cut my $builddir; BEGIN { $builddir = ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); unshift @INC, $builddir; } use strict; use Build; use Pod::Usage; use Getopt::Long; Getopt::Long::Configure("no_ignore_case"); my (@opt_showtag, $opt_sources, $opt_update, $opt_download); sub parse_depfile; my ($dist, $rpmdeps, $archs, $configdir, $useusedforbuild); my %options; GetOptions ( \%options, "help" => sub { pod2usage(-exitstatus => 0, -verbose => 2) }, "dist=s" => \$dist, "archpath=s" => \$archs, "configdir=s" => \$configdir, "define=s" => sub { Build::define($_[1]) }, "with=s" => sub { Build::define("_with_".$_[1]." --with-".$_[1]) }, "without=s" => sub { Build::define("_without_".$_[1]." --without-".$_[1]) }, "tag=s" => \@opt_showtag, "sources" => \$opt_sources, "update" => \$opt_update, "download" => \$opt_download, "download-force", "download-recompress=s", "download-outdir=s", "download-compare=s", "download-delete-identical", ) or pod2usage(1); pod2usage(1) unless @ARGV; my $ua; my @specs = @ARGV; die "--download must be used together with --sources\n" if ($opt_download && !$opt_sources); die "--update must be used together with --sources\n" if ($opt_update && !$opt_sources); $options{'download-recompress'} ||= 'auto'; $options{'download-outdir'}.='/' if ($options{'download-outdir'} && $options{'download-outdir'} !~ /\/$/); $options{'download-outdir'} ||= ''; $options{'download-compare'}.='/' if ($options{'download-compare'} && $options{'download-compare'} !~ /\/$/); $options{'download-compare'} ||= ''; my @archs; if (!defined $archs) { use POSIX qw/uname/; my %archmap = qw/x86_64 i686 i686 i586 i586 i486 i486 i386/; my @a = uname(); push @archs, $a[4]; while(exists $archmap{$archs[-1]}) { push @archs, $archmap{$archs[-1]}; } } else { @archs = split(':', $archs); } push @archs, 'noarch' unless grep {$_ eq 'noarch'} @archs; unless ($dist) { $dist = 'spectool'; # $dist = `rpm -q --qf '%{DISTRIBUTION}' rpm 2>/dev/null`; # $dist = Build::dist_canon($dist||'', $archs[0]); } if($dist !~ /\// && !defined $configdir) { if($0 =~ /^\//) { use File::Basename qw/dirname/; $configdir = dirname($0).'/configs'; undef $configdir unless -e $configdir.'/sl11.3.conf'; } else { $configdir = $builddir.'/configs'; undef $configdir unless -e $configdir.'/sl11.3.conf'; } if(!defined $configdir) { print STDERR "please specify config dir\n"; } } ####################################################################### # param: array to fill, spec file # return: file name sub read_sources_digests($$) { my $files = shift; my $spec = shift; my $srcfile = 'sources'; if (! -r $srcfile) { $srcfile = $spec; $srcfile =~ s/spec$/sources/; } if (open (F, '<', $srcfile)) { while() { chomp; my ($sum, $file) = split(/ +/, $_, 2); $files->{$file} = $sum; } close F; } return $srcfile; } # param: file, oldsum # return: newsum or undef if match sub check_sum($$) { my $file = shift; my $oldsum = shift || 'sha1:'; my $sum; my $type = 'md5:'; if($oldsum =~ /^(\S+:)/) { $type = $1; } else { $oldsum = $type.$oldsum; } if ($type eq 'md5:') { $sum = $type.`md5sum $file` || die "md5sum failed\n"; } elsif ($type eq 'sha1:') { $sum = $type.`sha1sum $file` || die "sha1sum failed\n"; } else { die "unsupported digest type '$type'\n"; } $sum =~ s/ .*//s; if($sum ne $oldsum) { return $sum; } return undef; } sub download($$) { my ($url, $dest) = @_; my $retry = 3; while ($retry--) { my $res = $ua->mirror($url, $dest); last if $res->is_success; # if it's a redirect we probably got a bad mirror and should just retry return 0 unless $retry && $res->previous; warn "retrying $url\n"; } return 1; } ####################################################################### my $ret = 0; for my $spec (@specs) { my $cf = Build::read_config_dist($dist, $archs[0], $configdir); my $parsed = Build::parse($cf, $spec); if (!defined $parsed || $parsed->{'error'}) { die "can't parse $spec: ".($parsed->{'error'}||'unknown error')."\n"; } for my $tag (@opt_showtag) { if($tag =~ /^\/(.+)\/$/) { my $expr = $1; for my $t (keys %$parsed) { if ($t =~ $expr) { push @opt_showtag, $t; } } } else { if(exists $parsed->{lc $tag}) { print $tag, ": "; my $v = $parsed->{lc $tag}; $v = join(' ', @$v) if (ref $v eq 'ARRAY'); print $v, "\n"; } else { print STDERR "$tag does not exist\n"; } } } if ($opt_sources) { my $files = {}; my $srcfile = read_sources_digests($files, $spec); if ($opt_download) { unless ($ua) { use LWP::UserAgent; $ua = LWP::UserAgent->new( agent => "openSUSE build service", env_proxy => 1, timeout => 42); } for my $t (keys %$parsed) { next unless ($t =~ /^(?:source|patch)\d*/); my $url = $parsed->{$t}; next unless $url =~ /^(?:https?|ftp):\/\//; my $file = $url; $file =~ s/.*\///; my $src = $options{'download-compare'}.$file; next if -e $src && !($options{'download-force'} || $options{'download-delete-identical'}); print "Downloading $file...\n"; my $dest = $options{'download-outdir'}.$file; print "$url -> $dest\n"; if(!download($url, $dest) && $options{'download-recompress'} ne 'no') { # TODO # let's see if the file was recompressed if($url =~ s/\.bz2$/.gz/ && $file =~ s/\.bz2$/.gz/ && !download($url, $dest)) { if(system('bznew', $dest) == 0) { print STDERR "Used $file and recompressed to bz2 instead\n"; } else { unlink $dest; } } else { print STDERR "Downloading $file failed\n"; } } if ($options{'download-delete-identical'} && $options{'download-outdir'} && system('cmp', '-s', $dest, $src) == 0) { unlink($dest); } } } if ($opt_update) { my $changed; for my $t (keys %$parsed) { next unless ($t =~ /^(?:source|patch)\d*/); my $file = $parsed->{$t}; $file =~ s/.*\///; next unless -B $file; my $sum = check_sum($file, ($files->{$file} || ($srcfile eq 'sources'?'md5:':'sha1:'))); if($sum) { print STDERR "update $file\n"; $files->{$file} = $sum; $changed = 1; } } if($changed) { if(open(F, '>', $srcfile)) { for my $file (keys %$files) { $files->{$file} =~ s/^md5:// if $srcfile eq 'sources'; print F $files->{$file}, ' ', $file, "\n"; } close F; } } } else { for my $t (keys %$parsed) { next unless ($t =~ /^(?:source|patch)\d*/); my $file = $parsed->{$t}; $file =~ s/.*\///; if (!exists $files->{$file}) { if (! -e $file) { print '- '; } elsif (-B $file) { print '_ '; } else { print 't '; } } elsif (! -e $file) { print 'd '; delete $files->{$file}; } else { my $sum = check_sum($file, $files->{$file}); if($sum) { print '! '; $ret = 1; } else { print '. '; } delete $files->{$file}; } print $parsed->{$t}, "\n"; } for my $file (keys %$files) { print "? $file\n"; } } } } exit $ret; obs-build-20210120/startdockerd000077500000000000000000000117031400202264700162410ustar00rootroot00000000000000#!/bin/bash export BUILD_DIR=${BUILD_DIR:-/usr/lib/build} CONTAINERD_PID=0 DOCKERD_PID=0 WEBSERVER_PID=0 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 if test "$1" != 0 ; then test -n "$WEBSERVER_PID" -a "$WEBSERVER_PID" != 0 && kill "$WEBSERVER_PID" test -n "$DOCKERD_PID" -a "$DOCKERD_PID" != 0 && kill "$DOCKERD_PID" test -n "$CONTAINERD_PID" -a "$CONTAINERD_PID" != 0 && kill "$CONTAINERD_PID" fi exit $1 } BUILD_ROOT= IS_UNSHARED= KILL= WEBSERVER= WEBSERVER_ONLY= WEBSERVER_UPLOAD= DOCKERD_EXPERIMANTAL=--experimental while test -n "$1" ; do case "$1" in --root) BUILD_ROOT="$2" shift 2 ;; --webserver) WEBSERVER="$2" shift 2 ;; --webserver-only) WEBSERVER_ONLY=1 WEBSERVER="$2" shift 2 ;; --webserver-upload) WEBSERVER_UPLOAD="$2" shift 2 ;; --isunshared) IS_UNSHARED=true shift ;; --kill) KILL=true shift ;; *) break ;; esac done if test -n "$1" -o -z "$BUILD_ROOT" ; then cleanup_and_exit 1 "Usage: startdockerd --root " echo "Usage: startdockerd --root " fi if test -n "$KILL" ; then if test -e "$BUILD_ROOT/.startdockerd.pids" ; then read CONTAINERD_PID DOCKERD_PID WEBSERVER_PID < $BUILD_ROOT/.startdockerd.pids if test -n "$WEBSERVER_PID" -a "$WEBSERVER_PID" != 0 ; then echo "Stopping local repository server" kill "$WEBSERVER_PID" fi if test -n "$DOCKERD_PID" -a "$DOCKERD_PID" != 0 ; then echo "Stopping docker daemon" kill "$DOCKERD_PID" fi if test -n "$CONTAINERD_PID" -a "$CONTAINERD_PID" != 0 ; then echo "Stopping container daemon" kill "$CONTAINERD_PID" fi rm -f "$BUILD_ROOT/.startdockerd.pids" fi exit 0 fi rm -f $BUILD_ROOT/.startdockerd.pids if test -n "$WEBSERVER_ONLY" ; then echo "Starting local repository server" $BUILD_DIR/dummyhttpserver "$BUILD_ROOT" "$WEBSERVER" "$WEBSERVER_UPLOAD" & 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" --webserver-upload "$WEBSERVER_UPLOAD" "$@" cleanup_and_exit 1 "exec unshare returned" fi # load needed kernel modules modprobe bridge br_netfilter modprobe nf_nat modprobe xt_conntrack modprobe ip_tables 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 if test -n "$WEBSERVER" ; then echo "Starting local repository server" $BUILD_DIR/dummyhttpserver "$BUILD_ROOT" "$WEBSERVER" "$WEBSERVER_UPLOAD" & WEBSERVER_PID=$! echo "$CONTAINERD_PID $DOCKERD_PID $WEBSERVER_PID" > $BUILD_ROOT/.startdockerd.pids 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 --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 $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 echo "Waiting for docker daemon to complete startup" for i in 1 2 3 4 5 6 7 8 9 10 ; do chroot $BUILD_ROOT docker version >/dev/null 2>&1 && break sleep 1 done if ! chroot $BUILD_ROOT docker version >/dev/null 2>&1 ; then cleanup_and_exit 1 "Docker is dead" fi echo "Docker is running" exit 0 obs-build-20210120/substitutedeps000077500000000000000000000223571400202264700166460ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ BEGIN { unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build'); } use strict; use Build; sub expand { my ($config, $str) = @_; my @xspec; my %cf = %$config; $cf{'save_expanded'} = 1; Build::Rpm::parse(\%cf, [ "$str" ], \@xspec); return @xspec && ref($xspec[0]) ? $xspec[0]->[1] : ''; } my ($dist, $buildroot, $rpmdeps, $archs, $configdir, $release, $changelog, $buildflavor, $obspackage); $buildflavor = ''; # default to empty $configdir = ($::ENV{'BUILD_DIR'} || '/usr/lib/build') . '/configs'; while (@ARGV) { if ($ARGV[0] eq '--root') { shift @ARGV; $buildroot = shift @ARGV; next; } if ($ARGV[0] eq '--dist') { shift @ARGV; $dist = shift @ARGV; next; } if ($ARGV[0] eq '--archpath') { shift @ARGV; $archs = shift @ARGV; next; } if ($ARGV[0] eq '--configdir') { shift @ARGV; $configdir = shift @ARGV; next; } if ($ARGV[0] eq '--release') { shift @ARGV; $release = shift @ARGV; next; } if ($ARGV[0] eq '--changelog') { shift @ARGV; $changelog = shift @ARGV; next; } if ($ARGV[0] eq '--buildflavor') { shift @ARGV; $buildflavor = shift @ARGV; next; } if ($ARGV[0] eq '--obspackage') { shift @ARGV; $obspackage = shift @ARGV; next; } last; } die("Usage: substitutedeps --dist --archpath [--configdir ] \n") unless @ARGV == 2; my $spec = $ARGV[0]; my $specdir = $spec; $specdir =~ s/[^\/]*$//; $specdir = "./" if $specdir eq ''; my $newspec = $ARGV[1]; my $cf = Build::read_config_dist($dist, $archs, $configdir); $cf->{'warnings'} = 1; $cf->{'buildflavor'} = $buildflavor if defined $buildflavor; ####################################################################### my $xspec = []; my $d = Build::parse($cf, $spec, $xspec) || {}; my @sdeps = @{$d->{'deps'} || []}; my @neg = map {substr($_, 1)} grep {/^-/} @{$d->{'deps'} || []}; my %neg = map {$_ => 1} @neg; @sdeps = grep {!$neg{$_}} @sdeps; @sdeps = Build::do_subst($cf, @sdeps); @sdeps = grep {!$neg{$_}} @sdeps; my %sdeps = map {$_ => 1} @sdeps; open(F, '>', $newspec) || die("$newspec: $!\n"); my $used; my $inchangelog = 0; my $mainpkg = ''; my $pkg; for my $line (@$xspec) { $line =~ s/\@BUILD_FLAVOR\@/$buildflavor/g if defined $buildflavor; if (defined($obspackage)) { $line =~ s/\@OBS_PACKAGE\@/$obspackage/g; } else { die("recipe contains \@OBS_PACKAGE\@, but no package is set\n") if $line =~ /\@OBS_PACKAGE\@/; } $used = 1; if (ref($line)) { if (!defined($line->[1])) { $used = 0; $line = $line->[0]; } else { $line = $line->[1]; } } if ($inchangelog) { $inchangelog = 0 if $line =~ /^\s*%[^%]/; next if $inchangelog; } if ($changelog && ($line =~ /\s*\%changelog\b/)) { $inchangelog = 1; next; } if ($line =~ /^Name\s*:\s*(\S+)/i) { $pkg = $mainpkg = $1 unless $mainpkg; } if ($line =~ /^\s*%package\s+(-n\s+)?(\S+)/) { if ($1) { $pkg = $2; } else { $pkg = "$mainpkg-$2"; } } if ($line =~ /^Release\s*:\s*(.*?)\s*$/i) { my $spec_rel = $1; # User-provided value my $oldl = $line; if (defined $release) { if (!($line =~ s//$release/g)) { if ($line =~ /<(?:CI_CNT|B_CNT)>/) { # XXX: should pass ci_cnt/b_cnt instead if ($release =~ /(\d+)\.(\d+)$/) { my ($ci, $b) = ($1, $2); $line =~ s//$ci/; $line =~ s//$b/; } elsif ($release =~ /(\d+)$/) { my $b = $1; $b = '0' if $line =~ s//$b/; $line =~ s//$b/; } } else { # no special replacement rules in the line, simply replace $line =~ s/^(Release\s*:\s*).*/$1$release/i; $line =~ s//$spec_rel/g; } } $line =~ s///g; # no recursion please } else { # remove macros, as rpm doesn't like them $line =~ s//0/; $line =~ s//0/; $line =~ s//0/; } if ($cf->{'releasesuffix'}) { my $suffix = $cf->{'releasesuffix'}; if ($suffix =~ /^file:(.+)$/) { my $file = $1; if ($file =~ /\//s || $file =~ /^\./) { $suffix = "error:illegal release suffix"; } else { if (open(RP, '<', "$specdir$file")) { $suffix = "error:no suffix in $file"; for () { chomp; s/^\s+//; s/\s+$//; $suffix = $_ if $_ && !/^#/; } close RP; } else { $suffix = "error:$file file does not exist"; } } } if ($suffix =~ /^error:(.*)$/) { $suffix = $1; $suffix =~ s/^\s+//; $suffix =~ s/\s+$//; $suffix = "Error: $suffix"; } $line =~ s/^(Release\s*:\s*.*?)\s*$/$1$suffix/i if $suffix; } # this is to be compatible to legacy autobuild. # you can specify a releaseprg in the project configuration, # if your package contains this file it is executed and its # output is used as a release. # use only if you really must. if ($cf->{'releaseprg'} && -f "$specdir$cf->{'releaseprg'}") { my $newl = $line; $newl =~ s/^Release:\s*//; $oldl =~ s/^Release:\s*//; my $project = expand($cf, "%?_project") || 'BUILD_BASENAME'; my $arch = expand($cf, "%?_target_cpu") || 'noarch'; $::ENV{'BUILD_OLDRELEASE'} = $oldl; my @nl; my $interpreter = "/bin/bash"; if (open(RP, '<', "$specdir$cf->{'releaseprg'}")) { @nl = ; close RP; if (@nl && $nl[0] =~ /^#!\s*(\S*)/) { $interpreter = $1; } } if ($buildroot) { my $sd = $specdir; $sd =~ s/^\Q$buildroot\E//; open(RP, "-|", 'chroot', $buildroot, $interpreter, "$sd$cf->{'releaseprg'}", $project, $newl, $pkg, $arch) || die("$cf->{'releaseprg'}: $!\n"); } else { open(RP, "-|", $interpreter, "$specdir$cf->{'releaseprg'}", $project, $newl, $pkg, $arch) || die("$cf->{'releaseprg'}: $!\n"); } @nl = grep {$_ ne ''} ; if (!close(RP)) { warn("$cf->{'releaseprg'} failed: $?\n"); } # and another compatibility hack: if the prg returns pkg:, # the release of the package will be used. yuck... if (@nl && $nl[0] =~ s/^pkg://) { my $relpkg = $nl[0]; chomp $relpkg; if ($buildroot) { open(RP, "-|", 'chroot', $buildroot, 'rpm', '-q', '--qf', '%{RELEASE}', $relpkg) || die("rpm: $!\n"); } else { open(RP, "-|", 'rpm', '-q', '--qf', '%{RELEASE}', $relpkg) || die("rpm: $!\n"); } @nl = grep {$_ ne ''} ; if (!close(RP)) { warn("rpm package query of '$relpkg' failed: $?\n"); } } if ($nl[0]) { chomp $nl[0]; $line =~ s/^(Release:\s*).*/$1$nl[0]/i; if (defined $release) { if (!($line =~ s//$release/g)) { if ($line =~ /<(?:CI_CNT|B_CNT)>/) { # XXX: should pass ci_cnt/b_cnt instead if ($release =~ /(\d+)\.(\d+)$/) { my ($ci, $b) = ($1, $2); $line =~ s//$ci/; $line =~ s//$b/; } elsif ($release =~ /(\d+)$/) { my $b = $1; $line =~ s//$b/ unless $line =~ s//$b/; } } } } } } # all compat stuff done. we return to your scheduled program } if (!$used || ($line !~ /^(?:Requires|BuildRequires|PreReq)(?:\([^\)]+\))?:/i)) { print F "$line\n"; next; } if ($line =~ /%\(/) { # too hard for us print F "$line\n"; next; } my $isbuildrequires = 0; $isbuildrequires = 1 if $line =~ /^BuildRequires/i; my $r = $line; $r =~ s/^[^:]*:\s*//; if ($r =~ /^\(/) { # no rich dependency support for now print F "$line\n"; next; } my @deps = $r =~ /([^\s\[,]+)(\s+[<=>]+\s+[^\s\[,]+)?[\s,]*/g; my @ndeps = (); my $replace = 0; my @f2 = Build::do_subst_vers($cf, @deps); my %f2 = @f2; if ($isbuildrequires) { delete $f2{$_} for @neg; delete $f2{$_} for grep {/^-/} keys %f2; } while (@deps) { my ($pack, $vers) = splice(@deps, 0, 2); $vers = '' unless defined $vers; if (($isbuildrequires && $sdeps{$pack}) || exists($f2{$pack})) { push @ndeps, "$pack$vers"; delete $f2{$pack}; } else { $replace = 1; } } if (%f2) { while (@f2) { my ($pack, $vers) = splice(@f2, 0, 2); next unless exists $f2{$pack}; $vers = '' unless defined $vers; push @ndeps, "$pack$vers"; } $replace = 1 } if ($replace) { $line =~ /^(.*?:\s*)/; print F $1.join(' ', @ndeps)."\n" if @ndeps; } else { print F "$line\n"; } } if ($changelog) { print F "%changelog\n"; if (open(CF, '<', $changelog)) { while() { print F $_; } close CF; } } close(F) || die("close: $!\n"); exit(0); obs-build-20210120/t/000077500000000000000000000000001400202264700140635ustar00rootroot00000000000000obs-build-20210120/t/bad.livebuild000066400000000000000000001200001400202264700165030ustar00rootroot00000000000000./PaxHeaders.6730/auto0000644000000000000000000000013212222266372013026 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 auto/0000755000175000001440000000000012222266372012701 5ustar00jblunckusers00000000000000auto/PaxHeaders.6730/clean0000644000000000000000000000013212222266372013753 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 auto/clean0000755000175000001440000000024012222266372013705 0ustar00jblunckusers00000000000000#!/bin/sh set -e lb clean noauto "${@}" rm -f config/binary config/bootstrap config/chroot config/common config/source rm -f config/control rm -f build.log auto/PaxHeaders.6730/config0000644000000000000000000000013212222266372014136 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 auto/config0000755000175000001440000000062612222266372014100 0ustar00jblunckusers00000000000000#!/bin/sh set -e case "$(dpkg --print-architecture)" in amd64) _LINUX_FLAVOURS="amd64" _SOURCE="false" ;; i386) _LINUX_FLAVOURS="486 686-pae" _SOURCE="true" ;; esac lb config noauto \ --clean \ --ignore-system-defaults \ --mode debian \ --debian-installer live \ --linux-flavours "${_LINUX_FLAVOURS}" \ --linux-packages "linux-image linux-headers" \ --source "${_SOURCE}" \ "${@}" auto/PaxHeaders.6730/build0000644000000000000000000000013212222266372013770 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 auto/build0000755000175000001440000000011212222266372013720 0ustar00jblunckusers00000000000000#!/bin/sh set -e lb build noauto "${@}" && echo $? 2>&1 | tee build.log ./PaxHeaders.6730/config0000644000000000000000000000013212222300375013313 xustar000000000000000030 mtime=1380548861.684530853 30 atime=1404933484.298323059 30 ctime=1404933481.152361217 config/0000755000175000001440000000000012222300375013166 5ustar00jblunckusers00000000000000config/PaxHeaders.6730/bootloaders0000644000000000000000000000013212222304630015471 xustar000000000000000030 mtime=1380551064.696527946 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 config/bootloaders/0000755000175000001440000000000012222304630015501 5ustar00jblunckusers00000000000000config/PaxHeaders.6730/package-lists0000644000000000000000000000013212357312571015717 xustar000000000000000030 mtime=1404933497.776159592 30 atime=1404933498.247153879 30 ctime=1404933497.776159592 config/package-lists/0000755000175000001440000000000012357312571015727 5ustar00jblunckusers00000000000000config/package-lists/PaxHeaders.6730/installer.list.chroot0000644000000000000000000000013212222266372022161 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 config/package-lists/installer.list.chroot0000644000175000001440000000003712222266372022114 0ustar00jblunckusers00000000000000debian-installer-launcher sudo config/package-lists/PaxHeaders.6730/live.list.chroot0000644000000000000000000000013212222266372021123 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 config/package-lists/live.list.chroot0000644000175000001440000000002712222266372021055 0ustar00jblunckusers00000000000000live-manual live-tools config/package-lists/PaxHeaders.6730/localization.list.chroot0000644000000000000000000000013212222266372022654 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 config/package-lists/localization.list.chroot0000644000175000001440000000003412222266372022604 0ustar00jblunckusers00000000000000task-english console-tools config/package-lists/PaxHeaders.6730/standard.list.chroot0000644000000000000000000000013212222266372021764 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404933490.584246818 30 ctime=1404933481.152361217 config/package-lists/standard.list.chroot0000644000175000001440000000007212222266372021716 0ustar00jblunckusers00000000000000! Packages Priority standard task-laptop task-ssh-server config/package-lists/PaxHeaders.6730/memtest0000644000000000000000000000013212222266372017373 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404933486.633294738 30 ctime=1404933497.776159592 config/package-lists/memtest0000644000175000001440000000001312222266372017320 0ustar00jblunckusers00000000000000memtest86+ config/PaxHeaders.6730/archives0000644000000000000000000000013212222302706014762 xustar000000000000000030 mtime=1380550086.359529237 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 config/archives/0000755000175000001440000000000012222302706014772 5ustar00jblunckusers00000000000000config/archives/PaxHeaders.6730/debian.list.chroot0000644000000000000000000000013212222302676020461 xustar000000000000000030 mtime=1380550078.121529248 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 config/archives/debian.list.chroot0000644000175000001440000000020212222302676020406 0ustar00jblunckusers00000000000000deb obs://openSUSE.org:Debian:7.0/standard wheezy main contrib deb-src obs://openSUSE.org:Debian:7.0/standard wheezy main contrib config/archives/PaxHeaders.6730/debian.key.chroot0000644000000000000000000000013212222300432020262 xustar000000000000000030 mtime=1380548890.449530815 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 config/archives/debian.key.chroot0000644000175000001440000000004512222300432020214 0ustar00jblunckusers00000000000000a73043cf-7b16-42dc-b0d9-3031ed4370be ./PaxHeaders.6730/README0000644000000000000000000000013212222266372013013 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404933481.152361217 30 ctime=1404933481.152361217 README0000644000175000001440000000077112222266372012616 0ustar00jblunckusers00000000000000This is the configuration tree for: Debian Standard A software called live-build can be used to automatically build images from this configuration tree. live-build can be obtained from . On Debian based systems, live-build can be installed with: # apt-get install live-build More information about live-build and the Live Systems project can be found on its homepage at and in the manual at . obs-build-20210120/t/changelog2spec.t000066400000000000000000000017611400202264700171410ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 11; sub onetest(@) { my $expected = shift; my $actual = `./changelog2spec --selftest @_`; is($actual, $expected, "changelog2spec --selftest @_"); } my @tests=( # format is 1:specfile 2:expected-changes 3++:list-of-changes-files [qw"rpm rpm python-rpm rpm"], [qw"python-rpm python-rpm python-rpm rpm"], [qw"antlr antlr antlr antlr-bootstrap"], [qw"antlr anyunrelated anyunrelated"], [qw"antlr-bootstrap antlr-bootstrap antlr antlr-bootstrap"], [qw"antlr-bootstrap antlr antlr"], [qw"antlr-bootstrap antlr antlr antlr-other"], [qw"foo _service:obs_scm:foo foo _service:obs_scm:foo"], [qw"_service:obs_scm:foo _service:obs_scm:foo foo _service:obs_scm:foo"], [qw"_service:obs_scm:foo foo foo foo-bar"], [qw"_service:obs_scm:foo-bar foo foo foo-other"], ); for my $t (@tests) { my @tmp=@$t; my $file=shift(@tmp); foreach(0..$#tmp) {$tmp[$_].=".changes"} my $expected=shift(@tmp); onetest($expected, $file, @tmp); } obs-build-20210120/t/conflicts.t000066400000000000000000000041221400202264700162330ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 13; require 't/testlib.pm'; my $repo = <<'EOR'; P: a = 1-1 R: p P: b = 1-1 p P: c = 1-1 p P: d = 1-1 C: b P: e = 1-1 C: c P: f = 1-1 C: p P: g = 1-1 C: b c P: h = 1-1 R: f P: i = 1-1 P: j = 1-1 P: k = 1-1 R: j P: l = 1-1 R: b d P: m = 1-1 C: m EOR my $config = setuptest($repo, "Conflict: i:j"); my @r; # test that conflicts can fix choices @r = expand($config, 'a'); is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a'); @r = expand($config, 'a', 'd'); is_deeply(\@r, [1, 'a', 'c', 'd'], 'install a d'); @r = expand($config, 'a', 'e'); is_deeply(\@r, [1, 'a', 'b', 'e'], 'install a e'); # test test conflicting all providers works @r = expand($config, 'a', 'd', 'e'); is_deeply(\@r, [undef, '(provider b is in conflict with d)', '(provider c is in conflict with e)', 'conflict for providers of p needed by a'], 'install a d e'); @r = expand($config, 'a', 'f'); is_deeply(\@r, [undef, '(provider b is in conflict with f)', '(provider c is in conflict with f)', 'conflict for providers of p needed by a'], 'install a f'); # test that conflicting jobs work @r = expand($config, 'b', 'f'); is_deeply(\@r, [undef, 'f conflicts with b'], 'install b f'); @r = expand($config, 'b', 'h'); is_deeply(\@r, [undef, '(provider f conflicts with b)', 'conflict for providers of f needed by h'], 'install b h'); # test conflicts specified in the job @r = expand($config, 'i', '!i'); is_deeply(\@r, [undef, 'i is in conflict'], 'install i !i'); @r = expand($config, 'k', '!j'); is_deeply(\@r, [undef, '(provider j is in conflict)', 'conflict for providers of j needed by k'], 'install k !j'); # test conflicts from project config @r = expand($config, 'i', 'j'); is_deeply(\@r, [undef, 'i conflicts with j', 'j conflicts with i'], 'install i j'); @r = expand($config, 'i', 'k'); is_deeply(\@r, [undef, '(provider j is in conflict with i)', 'conflict for providers of j needed by k'], 'install i k'); @r = expand($config, 'l'); is_deeply(\@r, [undef, 'd conflicts with b'], 'install l'); @r = expand($config, 'm'); is_deeply(\@r, [1, 'm'], 'install m'); obs-build-20210120/t/data/000077500000000000000000000000001400202264700147745ustar00rootroot00000000000000obs-build-20210120/t/data/flatpak.json000066400000000000000000000061051400202264700173130ustar00rootroot00000000000000#!BuildVersion: 3.36.2 { "app-id": "org.gnome.Chess", "runtime": "org.gnome.Platform", "runtime-version": "3.36", "sdk": "org.gnome.Sdk", "command": "gnome-chess", "finish-args": [ "--share=ipc", "--socket=fallback-x11", "--socket=wayland", "--metadata=X-DConf=migrate-path=/org/gnome/Chess/" ], "cleanup": ["/share/gnuchess", "/share/info", "/share/man", "/include"], "modules": [ { "name": "phalanx", "buildsystem": "simple", "build-commands": [ "make", "install -D phalanx /app/bin/phalanx", "install -D pbook.phalanx /app/share/phalanx/pbook.phalanx", "install -D sbook.phalanx /app/share/phalanx/sbook.phalanx", "install -D eco.phalanx /app/share/phalanx/eco.phalanx" ], "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/phalanx-XXV-source.tgz", "sha256": "b3874d5dcd22c64626b2c955b18b27bcba3aa727855361a91eab57a6324b22dd" }, { "type": "patch", "path": "phalanx-books-path.patch" } ] }, { "name": "stockfish", "buildsystem": "simple", "build-options" : { "arch": { "x86_64": { "env": { "ARCH": "x86-64" } }, "arm": { "env": { "ARCH": "armv7" } }, "aarch64": { "env": { "ARCH": "armv7" } } } }, "build-commands": [ "make build", "install -D stockfish /app/bin/stockfish" ], "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/stockfish-10-src.zip", "sha256": "29bd01e7407098aa9e851b82f6ea4bf2b46d26e9075a48a269cb1e40c582a073" } ] }, { "name": "gnuchess", "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/gnuchess-6.2.5.tar.gz", "sha256": "9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802" } ] }, { "name": "gnome-chess", "buildsystem": "meson", "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/gnome-chess-3.36.1.tar.xz", "sha256": "b195c9f17a59d7fcc892ff55e6a6ebdd16e7329157bf37e3c2fe593b349aab98" } ] } ] } obs-build-20210120/t/data/flatpak.yaml000066400000000000000000000032661400202264700173110ustar00rootroot00000000000000#!BuildVersion: 3.36.2 --- app-id: org.gnome.Chess runtime: org.gnome.Platform runtime-version: '3.36' sdk: org.gnome.Sdk command: gnome-chess finish-args: - --share=ipc - --socket=fallback-x11 - --socket=wayland - --metadata=X-DConf=migrate-path=/org/gnome/Chess/ cleanup: [/share/gnuchess, /share/info, /share/man, /include] modules: - name: phalanx buildsystem: simple build-commands: - make - install -D phalanx /app/bin/phalanx - install -D pbook.phalanx /app/share/phalanx/pbook.phalanx - install -D sbook.phalanx /app/share/phalanx/sbook.phalanx - install -D eco.phalanx /app/share/phalanx/eco.phalanx sources: - type: archive url: "file:///usr/src/packages/SOURCES/phalanx-XXV-source.tgz" sha256: b3874d5dcd22c64626b2c955b18b27bcba3aa727855361a91eab57a6324b22dd - type: patch path: phalanx-books-path.patch - name: stockfish buildsystem: simple build-options: arch: x86_64: env: ARCH: x86-64 arm: env: ARCH: armv7 aarch64: env: ARCH: armv7 build-commands: - make build - install -D stockfish /app/bin/stockfish sources: - type: archive url: "file:///usr/src/packages/SOURCES/stockfish-10-src.zip" sha256: 29bd01e7407098aa9e851b82f6ea4bf2b46d26e9075a48a269cb1e40c582a073 - name: gnuchess sources: - type: archive url: "file:///usr/src/packages/SOURCES/gnuchess-6.2.5.tar.gz" sha256: 9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802 - name: gnome-chess buildsystem: meson sources: - type: archive url: "file:///usr/src/packages/SOURCES/gnome-chess-3.36.1.tar.xz" sha256: b195c9f17a59d7fcc892ff55e6a6ebdd16e7329157bf37e3c2fe593b349aab98 obs-build-20210120/t/determinism.t000066400000000000000000000005171400202264700165730ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 1; require 't/testlib.pm'; my $repo = <<'EOR'; P: a = 1-1 R: b c P: b1 = 1-1 b C: c1 P: b2 = 1-1 b P: c1 = 1-1 c P: c2 = 1-1 c EOR my $config = setuptest($repo, 'Prefer: b1 c1'); my @r; @r = expand($config, 'a'); is_deeply(\@r, [undef, 'b1 conflicts with c1'], 'install a'); obs-build-20210120/t/directory.livebuild000066400000000000000000000740001400202264700177710ustar00rootroot00000000000000./PaxHeaders.21794/directory0000644000000000000000000000013212361532117014146 xustar000000000000000030 mtime=1405531215.102319719 30 atime=1405531213.970331813 30 ctime=1405531215.102319719 directory/0000755000175000001440000000000012361532117013732 5ustar00jblunckusers00000000000000directory/PaxHeaders.21794/README0000644000000000000000000000013212222266372014751 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/README0000644000175000001440000000077112222266372014622 0ustar00jblunckusers00000000000000This is the configuration tree for: Debian Standard A software called live-build can be used to automatically build images from this configuration tree. live-build can be obtained from . On Debian based systems, live-build can be installed with: # apt-get install live-build More information about live-build and the Live Systems project can be found on its homepage at and in the manual at . directory/PaxHeaders.21794/auto0000644000000000000000000000013212222266372014764 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/auto/0000755000175000001440000000000012222266372014705 5ustar00jblunckusers00000000000000directory/auto/PaxHeaders.21794/clean0000644000000000000000000000013212222266372016046 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/auto/clean0000755000175000001440000000024012222266372015711 0ustar00jblunckusers00000000000000#!/bin/sh set -e lb clean noauto "${@}" rm -f config/binary config/bootstrap config/chroot config/common config/source rm -f config/control rm -f build.log directory/auto/PaxHeaders.21794/config0000644000000000000000000000013212222266372016231 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/auto/config0000755000175000001440000000062612222266372016104 0ustar00jblunckusers00000000000000#!/bin/sh set -e case "$(dpkg --print-architecture)" in amd64) _LINUX_FLAVOURS="amd64" _SOURCE="false" ;; i386) _LINUX_FLAVOURS="486 686-pae" _SOURCE="true" ;; esac lb config noauto \ --clean \ --ignore-system-defaults \ --mode debian \ --debian-installer live \ --linux-flavours "${_LINUX_FLAVOURS}" \ --linux-packages "linux-image linux-headers" \ --source "${_SOURCE}" \ "${@}" directory/auto/PaxHeaders.21794/build0000644000000000000000000000013212222266372016063 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/auto/build0000755000175000001440000000011212222266372015724 0ustar00jblunckusers00000000000000#!/bin/sh set -e lb build noauto "${@}" && echo $? 2>&1 | tee build.log directory/PaxHeaders.21794/config0000644000000000000000000000013212222300375015251 xustar000000000000000030 mtime=1380548861.684530853 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/0000755000175000001440000000000012222300375015172 5ustar00jblunckusers00000000000000directory/config/PaxHeaders.21794/bootloaders0000644000000000000000000000013212222304630017564 xustar000000000000000030 mtime=1380551064.696527946 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/bootloaders/0000755000175000001440000000000012222304630017505 5ustar00jblunckusers00000000000000directory/config/PaxHeaders.21794/package-lists0000644000000000000000000000013212357312571020012 xustar000000000000000030 mtime=1404933497.776159592 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/package-lists/0000755000175000001440000000000012357312571017733 5ustar00jblunckusers00000000000000directory/config/package-lists/PaxHeaders.21794/installer.list.chroot0000644000000000000000000000013212222266372024254 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/package-lists/installer.list.chroot0000644000175000001440000000003712222266372024120 0ustar00jblunckusers00000000000000debian-installer-launcher sudo directory/config/package-lists/PaxHeaders.21794/live.list.chroot0000644000000000000000000000013212222266372023216 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/package-lists/live.list.chroot0000644000175000001440000000002712222266372023061 0ustar00jblunckusers00000000000000live-manual live-tools directory/config/package-lists/PaxHeaders.21794/localization.list.chroot0000644000000000000000000000013212222266372024747 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/package-lists/localization.list.chroot0000644000175000001440000000003412222266372024610 0ustar00jblunckusers00000000000000task-english console-tools directory/config/package-lists/PaxHeaders.21794/standard.list.chroot0000644000000000000000000000013212222266372024057 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/package-lists/standard.list.chroot0000644000175000001440000000007212222266372023722 0ustar00jblunckusers00000000000000! Packages Priority standard task-laptop task-ssh-server directory/config/package-lists/PaxHeaders.21794/memtest0000644000000000000000000000013212222266372021466 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/package-lists/memtest0000644000175000001440000000001312222266372021324 0ustar00jblunckusers00000000000000memtest86+ directory/config/PaxHeaders.21794/archives0000644000000000000000000000013212357513140017062 xustar000000000000000030 mtime=1404999264.309919538 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/archives/0000755000175000001440000000000012357513140017003 5ustar00jblunckusers00000000000000directory/config/archives/PaxHeaders.21794/debian.key.chroot0000644000000000000000000000013212222300432022355 xustar000000000000000030 mtime=1380548890.449530815 30 atime=1405531215.102319719 30 ctime=1405531215.102319719 directory/config/archives/debian.key.chroot0000644000175000001440000000004512222300432022220 0ustar00jblunckusers00000000000000a73043cf-7b16-42dc-b0d9-3031ed4370be obs-build-20210120/t/dist000077500000000000000000000027111400202264700147550ustar00rootroot00000000000000#!/usr/bin/perl -w ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ use strict; use Test::More tests => 9; use Build; sub d { Build::dist_canon($_[0], $_[1]||'i586'); } is(d("UnitedLinux 1.0 (x86-64)"), "ul1-x86_64"); is(d("SuSE SLES-8 (ia64)"), "sles8-ia64"); is(d("SuSE Linux 8.2 (x86-64)"), "8.2-x86_64"); is(d("SuSE SLES-9 (x86-64)"), "sles9-x86_64"); is(d("SUSE Linux 10.1 (PPC64)"), "10.1-ppc64"); is(d("SUSE Linux Enterprise 10 (PPC)"), "sles10-ppc"); is(d("openSUSE 10.3 (X86-64)"), "10.3-x86_64"); is(d("SUSE Linux Enterprise 11"), "sles11-i386"); is(d("openSUSE 11.3"), "11.3-i386"); obs-build-20210120/t/expression.t000066400000000000000000000030541400202264700164510ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 45; use Build::Rpm; my @tests = ( '4*1024' => '4096', '5 < 1' => '0', '(4 + 5) * 2 == 18' => '1', '5 || 0' => '5', '5 && 0' => '0', '! ""' => '1', '! "foo"' => '0', '0 || 3' => '3', '2 || 3' => '2', '0 || 0' => '0', '2 || 0' => '2', '"" || "foo"' => '"foo', '"bar" || "foo"' => '"bar', '0 && 3' => '0', '2 && 3' => '3', '0 && 0' => '0', '2 && 0' => '0', '"" && "foo"' => '"', '"bar" && "foo"' => '"foo', '0 ? 2 : 3' => '3', '1 ? 2 : 3' => '2', '0 ? 0 ? 3 : 4 : 0 ? 6 : 7' => '7', '0 ? 0 ? 3 : 4 : 5 ? 6 : 7' => '6', '0 ? 2 ? 3 : 4 : 0 ? 6 : 7' => '7', '0 ? 2 ? 3 : 4 : 5 ? 6 : 7' => '6', '1 ? 0 ? 3 : 4 : 0 ? 6 : 7' => '4', '1 ? 0 ? 3 : 4 : 5 ? 6 : 7' => '4', '1 ? 2 ? 3 : 4 : 0 ? 6 : 7' => '3', '1 ? 2 ? 3 : 4 : 5 ? 6 : 7' => '3', '1 || 2 && 0' => '0', '1 - 1 - 1' => '-1', '1 + 2 * 3' => '7', '2 * -2' => '-4', '7 == 1 + 2 * 3' => '1', '5 || 2 ? 3 : 4' => '3', '"foo" + "bar"' => '"foobar', 'v"1.2" > v"1"' => '1', 'v"1.2" < v"1"' => '0', 'v"1.2" > v"1.2"' => '0', 'v"1.2" < v"1.2"' => '0', 'v"1.2" >= v"1.2"' => '1', 'v"1.2" <= v"1.2"' => '1', 'v"1.2" == v"1.2"' => '1', 'v"1.2" != v"1.2"' => '0', 'v"1.2" != v"1"' => '1', ); while (@tests) { my ($ex, $expected) = splice(@tests, 0, 2); my ($actual, $rem) = Build::Rpm::expr($ex); is($actual, $expected, $ex); } obs-build-20210120/t/flatpak.t000066400000000000000000000112071400202264700156730ustar00rootroot00000000000000#!/usr/bin/perl use strict; use warnings; use FindBin '$Bin'; use Test::More 0.98; my $path = "$Bin/data"; use Build; use Build::Flatpak; my $conf = Build::read_config('x86_64'); sub capture_stdout { my ($fn) = @_; local *STDOUT; open(STDOUT, '>', \my $cap) || die; $fn->(); return $cap; } subtest parse => sub { my $expected = { name => 'org.gnome.Chess', version => '3.36.2', sources => [ "phalanx-XXV-source.tgz", "stockfish-10-src.zip", "gnuchess-6.2.5.tar.gz", "gnome-chess-3.36.1.tar.xz", ], deps => [ 'org.gnome.Sdk-v3.36', 'org.gnome.Platform-v3.36', ], }; my $yaml = do { local $/; }; my $data = Build::Flatpak::parse($conf, \$yaml); is_deeply $data, $expected, 'parse() YAML flatpak content'; $data = Build::Flatpak::parse($conf, "$path/flatpak.yaml"); is_deeply $data, $expected, 'parse() YAML flatpak file'; $data = Build::Flatpak::parse($conf, "$path/flatpak.json"); is_deeply $data, $expected, 'parse() JSON flatpak file'; }; subtest show => sub { local @ARGV = ("$path/flatpak.yaml", 'name'); my $data = capture_stdout(sub { Build::Flatpak::show() }); is $data, "org.gnome.Chess\n", 'Build::Flatpak::show name'; @ARGV = ("$path/flatpak.yaml", 'sources'); $data = capture_stdout(sub { Build::Flatpak::show() }); is $data, "phalanx-XXV-source.tgz\nstockfish-10-src.zip\ngnuchess-6.2.5.tar.gz\ngnome-chess-3.36.1.tar.xz\n", 'Build::Flatpak::show sources'; }; done_testing; __DATA__ #!BuildVersion: 3.36.2 { "app-id": "org.gnome.Chess", "runtime": "org.gnome.Platform", "runtime-version": "3.36", "sdk": "org.gnome.Sdk", "command": "gnome-chess", "finish-args": [ "--share=ipc", "--socket=fallback-x11", "--socket=wayland", "--metadata=X-DConf=migrate-path=/org/gnome/Chess/" ], "cleanup": ["/share/gnuchess", "/share/info", "/share/man", "/include"], "modules": [ { "name": "phalanx", "buildsystem": "simple", "build-commands": [ "make", "install -D phalanx /app/bin/phalanx", "install -D pbook.phalanx /app/share/phalanx/pbook.phalanx", "install -D sbook.phalanx /app/share/phalanx/sbook.phalanx", "install -D eco.phalanx /app/share/phalanx/eco.phalanx" ], "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/phalanx-XXV-source.tgz", "sha256": "b3874d5dcd22c64626b2c955b18b27bcba3aa727855361a91eab57a6324b22dd" }, { "type": "patch", "path": "phalanx-books-path.patch" } ] }, { "name": "stockfish", "buildsystem": "simple", "build-options" : { "arch": { "x86_64": { "env": { "ARCH": "x86-64" } }, "arm": { "env": { "ARCH": "armv7" } }, "aarch64": { "env": { "ARCH": "armv7" } } } }, "build-commands": [ "make build", "install -D stockfish /app/bin/stockfish" ], "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/stockfish-10-src.zip", "sha256": "29bd01e7407098aa9e851b82f6ea4bf2b46d26e9075a48a269cb1e40c582a073" } ] }, { "name": "gnuchess", "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/gnuchess-6.2.5.tar.gz", "sha256": "9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802" } ] }, { "name": "gnome-chess", "buildsystem": "meson", "sources": [ { "type": "archive", "url": "file:///usr/src/packages/SOURCES/gnome-chess-3.36.1.tar.xz", "sha256": "b195c9f17a59d7fcc892ff55e6a6ebdd16e7329157bf37e3c2fe593b349aab98" } ] } ] } obs-build-20210120/t/live-build000077500000000000000000000037361400202264700160560ustar00rootroot00000000000000#!/usr/bin/perl -w -I .. ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ use strict; use Test::More tests => 5; use Build::LiveBuild; use Data::Dumper; use Digest::MD5 qw(md5_hex); my $VAR = ' a b #comment ! whatever '; is(Build::LiveBuild::filter($VAR), 'a b '); my $DEB_ARCHIVE = ' # comment deb obs://openSUSE.org:Debian:7.0/standard wheezy main contrib deb-src obs://openSUSE.org:Debian:7.0/standard wheezy main contrib '; my $DEB_ARCHIVE_RESULT = "\$VAR1 = 'openSUSE.org:Debian:7.0/standard'; "; is(Dumper(Build::LiveBuild::parse_archive($DEB_ARCHIVE)), $DEB_ARCHIVE_RESULT); my $config = {}; $Data::Dumper::Sortkeys = 1; is(md5_hex(Dumper(Build::LiveBuild::parse( $config, 'standard.livebuild'))), '9cfb69e8f0581293f207342edacd19e7'); #print Dumper(Build::LiveBuild::parse( $config, 'standard.livebuild')); is(md5_hex(Dumper(Build::LiveBuild::parse( $config, 'directory.livebuild'))), 'bc803d2b4a375d9a02b3242117f6c93a'); #print Dumper(Build::LiveBuild::parse( $config, 'directory.livebuild')); is(md5_hex(Dumper(Build::LiveBuild::parse( $config, 'bad.livebuild'))), '1e596160978007d1014e9c5e38574700'); #print Dumper(Build::LiveBuild::parse( $config, 'bad.livebuild')); obs-build-20210120/t/macros.t000066400000000000000000000024461400202264700155420ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 20; use Build::Rpm; my @tests = ( q{ %%} => '%', q{ %{%}} => '%{%}', q{ %not_defined} => '%not_defined', q{ %{not_defined}} => '%{not_defined}', q{ %{}} => '%{}', q{ %{ test }} => '%{ test }', q{ %define this that %{this}} => 'that', q{ %define this that %{?this}} => 'that', q{ %define this that %{?that}} => '', q{ %define this that %{?!this}} => '', q{ %define this that %{?!that}} => '', q{ %define this that %{?this:foo}} => 'foo', q{ %define this that %{?that:foo}} => '', q{ %define this that %{?!this:foo}} => '', q{ %define this that %{?!that:foo}} => 'foo', q{ %define this that %define that_that foo %{expand:%%{%{this}_that}}} => 'foo', q{ %define bar() "Bar %#: %{?1} %{?2}" %define foo() "Foo %#: %{?1} %{?2}" %bar a %foo 1 2} => '"Foo 2: 1 2" "Bar 1: a "', q{ %define foo hello" + "world %["%foo"]} => 'hello" + "world', q{ %define foo hello %define bar world %{foo:%{bar}}} => 'world', q{%[1 + %[2 * 3]]} => '7', ); while (@tests) { my ($in, $expected) = splice(@tests, 0, 2); $in =~ s/^\n//s; my %macros = ( 'nil' => '' ); my %macros_args; my $actual = ''; $actual .= Build::Rpm::expandmacros({}, $_, undef, \%macros, \%macros_args) for split("\n", $in); is($actual, $expected, $in); } obs-build-20210120/t/obsoletes.t000066400000000000000000000024431400202264700162520ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 9; require 't/testlib.pm'; my $repo = <<'EOR'; P: a = 1-1 R: p P: b = 1-1 p P: c = 1-1 p P: d = 1-1 O: b P: e = 1-1 O: c P: f = 1-1 O: p P: g = 1-1 O: b c P: h = 1-1 R: b d EOR my $config = setuptest($repo); my @r; @r = expand($config, 'a'); is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a'); @r = expand($config, 'a', 'd'); is_deeply(\@r, [1, 'a', 'c', 'd'], 'install a d'); @r = expand($config, 'a', 'e'); is_deeply(\@r, [1, 'a', 'b', 'e'], 'install a e'); @r = expand($config, 'a', 'd', 'e'); is_deeply(\@r, [undef, '(provider b is obsoleted by d)', '(provider c is obsoleted by e)', 'conflict for providers of p needed by a'], 'install a d e'); @r = expand($config, 'a', 'f'); is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a f'); @r = expand($config, 'b', 'd'); is_deeply(\@r, [undef, 'd obsoletes b'], 'install b d'); @r = expand($config, 'h'); is_deeply(\@r, [undef, 'd obsoletes b'], 'install h'); @r = expand($config, 'h', 'd'); is_deeply(\@r, [undef, '(provider b is obsoleted by d)', 'conflict for providers of b needed by h'], 'install h d'); @r = expand($config, 'h', 'b'); is_deeply(\@r, [undef, '(provider d obsoletes b)', 'conflict for providers of d needed by h'], 'install h b'); obs-build-20210120/t/ordep.t000066400000000000000000000011511400202264700153570ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 4; require 't/testlib.pm'; my $repo = <<'EOR'; P: a = 1-1 R: x | y P: b = 1-1 R: d | e P: c = 1-1 R: d | f P: d = 1-1 P: e = 1-1 P: f = 1-1 P: g = 1-1 R: x | e | d EOR my $config = setuptest($repo, "Binarytype: deb\nPrefer: f\n"); my @r; @r = expand($config, 'a'); is_deeply(\@r, [undef, 'nothing provides x | y needed by a'], 'install a'); @r = expand($config, 'b'); is_deeply(\@r, [1, 'b', 'd'], 'install b'); @r = expand($config, 'c'); is_deeply(\@r, [1, 'c', 'f'], 'install c'); @r = expand($config, 'g'); is_deeply(\@r, [1, 'e', 'g'], 'install g'); obs-build-20210120/t/parse_spec.t000066400000000000000000000115031400202264700163740ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 9; use Build; use Build::Rpm; use Data::Dumper; my ($spec, $spec2); my $result; my $expected; my $conf = Build::read_config('x86_64'); $spec = q{ Name: foo Version: 1.0 Release: 1 ExclusiveArch: x86_64 ExcludeArch: i586 }; $expected = { 'name' => 'foo', 'version' => '1.0', 'release' => '1', 'exclarch' => [ 'x86_64' ], 'badarch' => [ 'i586' ], 'deps' => [], 'subpacks' => [ 'foo' ], }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "preamble"); $spec = q{ BuildRequires: foo BuildRequires: bar > 1,baz }; $expected = { 'deps' => [ 'foo', 'bar > 1', 'baz' ], 'subpacks' => [], }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "simple build requires"); $spec = q{ BuildRequires: foo (bar > 1 || (baz)) xxx }; $expected = { 'deps' => [ 'foo', '(bar > 1 || (baz))', 'xxx' ], 'subpacks' => [], }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "rich build requires"); $spec = q{ Requires(pre): foo PreReq: bar Requires(post): baz Requires(xxx): xxx }; $expected = { 'deps' => [], 'prereqs' => [ 'foo', 'bar', 'baz' ], 'subpacks' => [], }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "pre requires"); $spec = q{ %if 1 BuildRequires: foo1 %endif %if 0 BuildRequires: foo2 %endif %if 1 BuildRequires: foo3 %else BuildRequires: foo4 %endif %if 0 BuildRequires: foo5 %else BuildRequires: foo6 %endif BuildRequires: foo7 %if "" BuildRequires: foo8 %endif %if "0" BuildRequires: foo9 %endif }; $expected = { 'deps' => [ 'foo1', 'foo3', 'foo6', 'foo7', 'foo9' ], 'subpacks' => [], 'configdependent' => 1, }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "if statements"); $spec = q{ %if 1 %if 1 BuildRequires: foo1 %endif %if 0 BuildRequires: foo2 %endif %endif %if 0 %if 1 BuildRequires: foo3 %endif %if 0 BuildRequires: foo4 %endif %endif %if 1 %if 1 BuildRequires: foo5 %endif %if 0 BuildRequires: foo6 %endif %else %if 1 BuildRequires: foo7 %endif %if 0 BuildRequires: foo8 %endif %endif %if 0 %if 1 BuildRequires: foo9 %endif %if 0 BuildRequires: foo10 %endif %else %if 1 BuildRequires: foo11 %endif %if 0 BuildRequires: foo12 %endif %endif }; $expected = { 'deps' => [ 'foo1', 'foo5', 'foo11' ], 'subpacks' => [], 'configdependent' => 1, }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "nested if statements"); $spec = q{ %ifarch i586 BuildRequires: foo1 %endif %ifarch x86_64 BuildRequires: foo2 %endif %ifarch i586 x86_64 BuildRequires: foo3 %endif %ifnarch i586 BuildRequires: foo1 %endif %ifnarch x86_64 BuildRequires: foo2 %endif %ifnarch i586 x86_64 BuildRequires: foo3 %endif }; $expected = { 'deps' => [ 'foo2', 'foo3', 'foo1' ], 'subpacks' => [], 'configdependent' => 1, }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "ifarch statements"); $spec = q{ BuildRequires: foo %include spec2 }; $spec2 = q{ BuildRequires: bar BuildRequires: baz%%%% }; $expected = { 'deps' => [ 'foo', 'bar', 'baz%%' ], 'subpacks' => [], }; $Build::Rpm::includecallback = sub { $_[0] eq 'spec2' ? $spec2 : undef }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "include statement"); $spec = q{ %if 0 BuildRequires: foo1_1 %elif 0 BuildRequires: foo2_1 %if 1 %elif 1 %else %endif %elif 0 BuildRequires: foo3_1 %else BuildRequires: foo4_1 %endif %if 1 BuildRequires: foo1_2 %if 1 %elif 1 %else %endif %elif 0 BuildRequires: foo2_2 %elif 0 BuildRequires: foo3_2 %else BuildRequires: foo4_2 %endif %if 0 BuildRequires: foo1_3 %elif 1 BuildRequires: foo2_3 %elif 0 BuildRequires: foo3_3 %if 1 %elif 1 %else %endif %else BuildRequires: foo4_3 %endif %if 1 BuildRequires: foo1_4 %if 1 %elif 1 %else %endif %elif 1 BuildRequires: foo2_4 %elif 0 BuildRequires: foo3_4 %else BuildRequires: foo4_4 %endif %if 0 BuildRequires: foo1_5 %elif 0 %if 1 %elif 1 %else %endif BuildRequires: foo2_5 %elif 1 BuildRequires: foo3_5 %else BuildRequires: foo4_5 %endif %if 1 BuildRequires: foo1_6 %elif 0 BuildRequires: foo2_6 %elif 1 BuildRequires: foo3_6 %else BuildRequires: foo4_6 %endif %if 0 BuildRequires: foo1_7 %if 1 %elif 1 %else %endif %elif 1 BuildRequires: foo2_7 %elif 1 BuildRequires: foo3_7 %if 1 %elif 1 %else %endif %else BuildRequires: foo4_7 %endif %if 1 BuildRequires: foo1_8 %elif 1 BuildRequires: foo2_8 %elif 1 BuildRequires: foo3_8 %else BuildRequires: foo4_8 %endif }; $expected = { 'deps' => [ 'foo4_1', 'foo1_2', 'foo2_3', 'foo1_4', 'foo3_5', 'foo1_6', 'foo2_7', 'foo1_8' ], 'subpacks' => [], 'configdependent' => 1, }; $result = Build::Rpm::parse($conf, [ split("\n", $spec) ]); is_deeply($result, $expected, "elif statements"); obs-build-20210120/t/recommends.t000066400000000000000000000011441400202264700164040ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 4; require 't/testlib.pm'; my $repo = <<'EOR'; P: a = 1-1 R: p P: b = 1-1 p P: c = 1-1 p P: d = 1-1 r: b P: e = 1-1 r: c EOR my $config = setuptest($repo); my @r; @r = expand($config, 'a'); is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a'); @r = expand($config, 'a', 'd'); is_deeply(\@r, [1, 'a', 'b', 'd'], 'install a d'); @r = expand($config, 'a', 'e'); is_deeply(\@r, [1, 'a', 'c', 'e'], 'install a e'); @r = expand($config, 'a', 'd', 'e'); is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a d e'); obs-build-20210120/t/requires.t000066400000000000000000000043021400202264700161060ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 20; require 't/testlib.pm'; my $repo = <<'EOR'; P: a = 1-1 R: b P: b = 1-1 P: c = 1-1 R: p P: d = 1-1 p P: e = 1-1 p P: f = 1-1 R: n P: ign2 = 1-1 R: ign1 P: ign3 = 1-1 R: ign4 P: ign5 = 1-1 ign4 P: ign6 = 1-1 R: ign7 P: ign8 = 1-1 R: ign7 P: g = 1-1 h P: h = 1-1 EOR my $config = setuptest($repo, 'Ignore: ign1 ign5 ign6:ign7'); my $config2 = setuptest($repo, 'Prefer: d'); my $config3 = setuptest($repo, 'Prefer: -d'); my @r; @r = expand($config); is_deeply(\@r, [1], 'install nothing'); @r = expand($config, 'n'); is_deeply(\@r, [undef, 'nothing provides n'], 'install n'); @r = expand($config, 'f'); is_deeply(\@r, [undef, 'nothing provides n needed by f'], 'install f'); @r = expand($config, "a"); is_deeply(\@r, [1, 'a', 'b'], 'install a'); @r = expand($config, "c"); is_deeply(\@r, [undef, 'have choice for p needed by c: d e'], 'install c'); @r = expand($config2, "c"); is_deeply(\@r, [1, 'c', 'd'], 'install c with prefer'); @r = expand($config3, "c"); is_deeply(\@r, [1, 'c', 'e'], 'install c with neg prefer'); @r = expand($config, "ign1"); is_deeply(\@r, [undef, 'nothing provides ign1'], 'install ign1'); @r = expand($config, "ign2"); is_deeply(\@r, [1, 'ign2'], 'install ign2'); @r = expand($config, "ign3"); is_deeply(\@r, [1, 'ign3'], 'install ign3'); @r = expand($config, "ign6"); is_deeply(\@r, [1, 'ign6'], 'install ign6'); @r = expand($config, "ign8"); is_deeply(\@r, [undef, 'nothing provides ign7 needed by ign8'], 'install ign8'); @r = expand($config, "ign2", "-ign2"); is_deeply(\@r, [1, 'ign2'], 'install ign2 -ign2'); @r = expand($config, "ign8", "-ign7"); is_deeply(\@r, [1, 'ign8'], 'install ign8 -ign7'); @r = expand($config2, "ign5", "-ign5"); is_deeply(\@r, [1, 'ign5'], 'install ign5 -ign5'); @r = expand($config2, "ign4", "-ign5"); is_deeply(\@r, [1, 'ign5'], 'install ign4 -ign5'); @r = expand($config, "ign5"); is_deeply(\@r, [1, 'ign5'], 'install ign5'); @r = expand($config, "ign4"); is_deeply(\@r, [1, 'ign5'], 'install ign4'); @r = expand($config, "h"); is_deeply(\@r, [1, 'h'], 'install h'); @r = expand($config, "--directdepsend--", "h"); is_deeply(\@r, [undef, 'have choice for h: g h'], 'install --directdepsend-- h'); obs-build-20210120/t/richdeps.t000066400000000000000000000133231400202264700160530ustar00rootroot00000000000000#!/usr/bin/perl -w use strict; use Test::More tests => 45; require 't/testlib.pm'; my $repo = <<'EOR'; P: a = 1-1 R: (b if c) d P: b = 1-1 P: c = 1-1 P: d = 1-1 R: c P: n1 = 1-1 R: n P: n2 = 1-1 C: d P: i = 1-1 P: j = 1-1 R: k P: k = 1-1 C: (i and j) P: lr = 1-1 R: (b if b) P: lc1 = 1-1 C: (b if b) P: lc2 = 1-1 C: (n if n) P: m = 1-1 C: (b and (n if b)) P: cx = 1-1 C: (b and cx and d) P: ign1 = 1-1 R: (ign and b) P: ign2 = 1-1 R: (ign or b) P: ign3 = 1-1 R: (b if ign) P: ign4 = 1-1 R: (ign if b) P: bad1 = 1-1 R: (n foo m) P: bad2 = 1-1 C: (n foo m) P: sc = 1-1 C: (a or sc) (n or sc) P: ifelse = 1-1 R: (b if i else c) P: unless = 1-1 C: (b unless i) P: unlesselse = 1-1 C: (b unless i else c) P: wa = 1-1 wx P: wb = 1-1 wx wy P: wc = 1-1 wy EOR my $config = setuptest($repo, 'Ignore: ign'); my @r; @r = expand($config, "()"); is_deeply(\@r, [undef, 'cannot parse dependency ()'], 'install ()'); @r = expand($config, "(n and )"); is_deeply(\@r, [undef, 'cannot parse dependency (n and )'], 'install (n and )'); @r = expand($config, "(n foo m)"); is_deeply(\@r, [undef, 'cannot parse dependency (n foo m)'], 'install (n foo m)'); @r = expand($config, "n"); is_deeply(\@r, [undef, 'nothing provides n'], 'install n'); @r = expand($config, "(n or o)"); is_deeply(\@r, [undef, 'nothing provides (n or o)'], 'install (n or o)'); @r = expand($config, "(n and o)"); is_deeply(\@r, [undef, 'nothing provides (n and o)'], 'install (n and o)'); @r = expand($config, "n1"); is_deeply(\@r, [undef, "nothing provides n needed by n1"], "install n1"); @r = expand($config, "(n2 and d)"); is_deeply(\@r, [undef, 'n2 conflicts with d'], "install (n2 and d)"); @r = expand($config, "(n2 or d)"); is_deeply(\@r, [undef, "have choice for (n2 or d): d n2"], "install (n2 or d)"); @r = expand($config, "a"); is_deeply(\@r, [1, qw{a b c d}], "install a"); @r = expand($config, 'i', 'j'); is_deeply(\@r, [undef, '(provider k conflicts with i)', '(provider k conflicts with j)', "conflict for providers of k needed by j"], "install i j"); # test corner cases @r = expand($config, "(b if b)"); is_deeply(\@r, [1], 'install (b if b)'); @r = expand($config, "(n if n)"); is_deeply(\@r, [1], 'install (n if n)'); @r = expand($config, "lr"); is_deeply(\@r, [1, 'lr'], 'install lr'); @r = expand($config, "lc1"); is_deeply(\@r, [undef, '(provider b is in conflict with lc1)', 'conflict for providers of (b if b) needed by lc1'], 'install lc1'); @r = expand($config, "lc2"); is_deeply(\@r, [undef, 'lc2 conflicts with always true (n if n)'], 'install lc2'); @r = expand($config, "m"); is_deeply(\@r, [1, 'm'], 'install m'); # complex config from the job @r = expand($config, 'b', 'c', 'd', '!(b and c and d)'); is_deeply(\@r, [undef, 'conflicts with b', 'conflicts with c', 'conflicts with d'], 'install b c d !(b and c and d)'); @r = expand($config, '!(n if n)'); is_deeply(\@r, [undef, 'conflict with always true (n if n)'], 'install !(n if n)'); @r = expand($config, 'b', 'cx', 'd'); is_deeply(\@r, [undef, 'cx conflicts with b', 'cx conflicts with d'], 'install b cx d'); @r = expand($config, 'ign'); is_deeply(\@r, [undef, 'nothing provides ign'], 'install ign'); @r = expand($config, 'ign1'); is_deeply(\@r, [1, 'b', 'ign1'], 'install ign1'); @r = expand($config, 'ign2'); is_deeply(\@r, [1, 'ign2'], 'install ign2'); @r = expand($config, 'ign3'); is_deeply(\@r, [1, 'ign3'], 'install ign3'); @r = expand($config, 'b', 'ign4'); is_deeply(\@r, [1, 'b', 'ign4'], 'install b ign4'); @r = expand($config, '(ign and b)'); is_deeply(\@r, [undef, 'nothing provides (ign and b)'], 'install b'); @r = expand($config, 'bad1'); is_deeply(\@r, [undef, 'cannot parse dependency (n foo m) from bad1'], 'install bad1'); @r = expand($config, 'bad2'); is_deeply(\@r, [undef, 'cannot parse dependency (n foo m) from bad2'], 'install bad2'); @r = expand($config, 'sc', 'b'); is_deeply(\@r, [1, 'b', 'sc'], 'install sc b'); @r = expand($config, 'ifelse'); is_deeply(\@r, [undef, 'have choice for (b if i else c) needed by ifelse: c i'], 'install ifelse'); @r = expand($config, 'ifelse', 'i'); is_deeply(\@r, [1, 'b', 'i', 'ifelse'], 'install ifelse i'); @r = expand($config, 'ifelse', 'c'); is_deeply(\@r, [1, 'c', 'ifelse'], 'install ifelse c'); @r = expand($config, 'unless', 'b'); is_deeply(\@r, [1, 'b', 'i', 'unless'], 'install unless b'); @r = expand($config, 'unless', 'b', '!i'); is_deeply(\@r, [undef, '(provider i is in conflict)', 'conflict for providers of (b unless i) needed by unless'], 'install unless b !i'); @r = expand($config, 'unlesselse', 'b', 'c'); is_deeply(\@r, [undef, '(provider i is in conflict with unlesselse)', 'conflict for providers of (b unless i else c) needed by unlesselse'], 'install unlesselse b c'); @r = expand($config, 'unlesselse', 'b'); is_deeply(\@r, [1, 'b', 'i', 'unlesselse'], 'install unlesselse b'); @r = expand($config, 'unlesselse', 'c'); is_deeply(\@r, [1, 'c', 'unlesselse'], 'install unlesselse c'); @r = expand($config, '(wx and wy)'); is_deeply(\@r, [undef, 'have choice for (wx and wy): wa wb', 'have choice for (wx and wy): wb wc'], 'install (wx and wy)'); @r = expand($config, '(wx with wy)'); is_deeply(\@r, [1, 'wb'], 'install (wx with wy)'); @r = expand($config, '(wx without wy)'); is_deeply(\@r, [1, 'wa'], 'install (wx without wy)'); @r = expand($config, '(wy without wx)'); is_deeply(\@r, [1, 'wc'], 'install (wy without wx)'); @r = expand($config, '(wa with wa)'); is_deeply(\@r, [1, 'wa'], 'install (wa with wa)'); @r = expand($config, '(wa with nnn)'); is_deeply(\@r, [undef, 'nothing provides (wa with nnn)'], 'install (wa with nnn)'); @r = expand($config, '(wa without wa)'); is_deeply(\@r, [undef, 'nothing provides (wa without wa)'], 'install (wa without wa)'); @r = expand($config, '(wa without nnn)'); is_deeply(\@r, [1, 'wa'], 'install (wa without nnn)'); obs-build-20210120/t/standard.livebuild000066400000000000000000000740001400202264700175650ustar00rootroot00000000000000./PaxHeaders.10269/auto0000644000000000000000000000013212222266372013110 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404999252.606063979 30 ctime=1404999250.918084803 auto/0000755000175000001440000000000012222266372012701 5ustar00jblunckusers00000000000000auto/PaxHeaders.10269/clean0000644000000000000000000000013212222266372014035 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 auto/clean0000755000175000001440000000024012222266372013705 0ustar00jblunckusers00000000000000#!/bin/sh set -e lb clean noauto "${@}" rm -f config/binary config/bootstrap config/chroot config/common config/source rm -f config/control rm -f build.log auto/PaxHeaders.10269/config0000644000000000000000000000013212222266372014220 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 auto/config0000755000175000001440000000062612222266372014100 0ustar00jblunckusers00000000000000#!/bin/sh set -e case "$(dpkg --print-architecture)" in amd64) _LINUX_FLAVOURS="amd64" _SOURCE="false" ;; i386) _LINUX_FLAVOURS="486 686-pae" _SOURCE="true" ;; esac lb config noauto \ --clean \ --ignore-system-defaults \ --mode debian \ --debian-installer live \ --linux-flavours "${_LINUX_FLAVOURS}" \ --linux-packages "linux-image linux-headers" \ --source "${_SOURCE}" \ "${@}" auto/PaxHeaders.10269/build0000644000000000000000000000013212222266372014052 xustar000000000000000030 mtime=1380543738.699537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 auto/build0000755000175000001440000000011212222266372013720 0ustar00jblunckusers00000000000000#!/bin/sh set -e lb build noauto "${@}" && echo $? 2>&1 | tee build.log ./PaxHeaders.10269/config0000644000000000000000000000013212222300375013375 xustar000000000000000030 mtime=1380548861.684530853 30 atime=1404999252.606063979 30 ctime=1404999250.918084803 config/0000755000175000001440000000000012222300375013166 5ustar00jblunckusers00000000000000config/PaxHeaders.10269/bootloaders0000644000000000000000000000013212222304630015553 xustar000000000000000030 mtime=1380551064.696527946 30 atime=1404999252.606063979 30 ctime=1404999250.918084803 config/bootloaders/0000755000175000001440000000000012222304630015501 5ustar00jblunckusers00000000000000config/PaxHeaders.10269/package-lists0000644000000000000000000000013212357312571016001 xustar000000000000000030 mtime=1404933497.776159592 30 atime=1404999252.606063979 30 ctime=1404999250.918084803 config/package-lists/0000755000175000001440000000000012357312571015727 5ustar00jblunckusers00000000000000config/package-lists/PaxHeaders.10269/installer.list.chroot0000644000000000000000000000013212222266372022243 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 config/package-lists/installer.list.chroot0000644000175000001440000000003712222266372022114 0ustar00jblunckusers00000000000000debian-installer-launcher sudo config/package-lists/PaxHeaders.10269/live.list.chroot0000644000000000000000000000013212222266372021205 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 config/package-lists/live.list.chroot0000644000175000001440000000002712222266372021055 0ustar00jblunckusers00000000000000live-manual live-tools config/package-lists/PaxHeaders.10269/localization.list.chroot0000644000000000000000000000013212222266372022736 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 config/package-lists/localization.list.chroot0000644000175000001440000000003412222266372022604 0ustar00jblunckusers00000000000000task-english console-tools config/package-lists/PaxHeaders.10269/standard.list.chroot0000644000000000000000000000013212222266372022046 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 config/package-lists/standard.list.chroot0000644000175000001440000000007212222266372021716 0ustar00jblunckusers00000000000000! Packages Priority standard task-laptop task-ssh-server config/package-lists/PaxHeaders.10269/memtest0000644000000000000000000000013212222266372017455 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 config/package-lists/memtest0000644000175000001440000000001312222266372017320 0ustar00jblunckusers00000000000000memtest86+ config/PaxHeaders.10269/archives0000644000000000000000000000013212357513140015051 xustar000000000000000030 mtime=1404999264.309919538 30 atime=1404999252.606063979 30 ctime=1404999264.309919538 config/archives/0000755000175000001440000000000012357513140014777 5ustar00jblunckusers00000000000000config/archives/PaxHeaders.10269/debian.key.chroot0000644000000000000000000000013212222300432020344 xustar000000000000000030 mtime=1380548890.449530815 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 config/archives/debian.key.chroot0000644000175000001440000000004512222300432020214 0ustar00jblunckusers00000000000000a73043cf-7b16-42dc-b0d9-3031ed4370be ./PaxHeaders.10269/README0000644000000000000000000000013212222266372013075 xustar000000000000000030 mtime=1380543738.739537615 30 atime=1404999250.918084803 30 ctime=1404999250.918084803 README0000644000175000001440000000077112222266372012616 0ustar00jblunckusers00000000000000This is the configuration tree for: Debian Standard A software called live-build can be used to automatically build images from this configuration tree. live-build can be obtained from . On Debian based systems, live-build can be installed with: # apt-get install live-build More information about live-build and the Live Systems project can be found on its homepage at and in the manual at . obs-build-20210120/t/testlib.pm000066400000000000000000000007061400202264700160720ustar00rootroot00000000000000 use Build; sub expand { my ($c, @r) = Build::expand(@_); return ($c, sort(@r)); } sub setuptest { my ($repo, $conf) = @_; my $l = ''; my $id = ''; for (split("\n", $repo)) { $id = "$1.noarch-0/0/0:" if /^P: (\S+)/; s/:/:$id/; $l .= "$_\n"; } local *F; open(F, '<', \$l); my $config = Build::read_config('noarch', [ split("\n", $conf || '') ]); Build::readdeps($config, undef, \*F); close F; return $config; } 1; obs-build-20210120/telnet_login_wrapper000077500000000000000000000003231400202264700177670ustar00rootroot00000000000000#!/bin/sh # login wrapper, just start a shell without arguments. # this skips all parameters and is the only way to open a shell without login # prompt on most telnetd implementations /bin/bash --login || sh obs-build-20210120/test-debtransform/000077500000000000000000000000001400202264700172635ustar00rootroot00000000000000obs-build-20210120/test-debtransform/1-out/000077500000000000000000000000001400202264700202305ustar00rootroot00000000000000obs-build-20210120/test-debtransform/1-out/grandorgue_0.3.0.6.1026-1.diff.gz000066400000000000000000000013251400202264700252460ustar00rootroot00000000000000ŕn0s $1vr vٰY{e;=xn[ "RylYIzCqhtQaRPY`iq\qhz^ (/[;c SJ*9yGIŬ -0BLVb ͠=QɆ\_F7n0k(ËA'^n>Y_rh'n;ޤICX KuZ; ˶!ݓWP?M@v…vט@O`k 8\]eigs;3EY\:#1 o QvrKOW@JTuA !QN4\ԒF( [9%-I,P JU6%WE` %˺˚Ta2JY JIr.FtCJ\J0X(wQRyE"޸co&l[xW`4R&<#ќGqgpve!F\˝y|HT<9عmi0l?8tf(m- ixv>)̂{{/>yCt>&\J&P`sV]S XE[@|>z_N77K8ffu˚?2?A~ތ=t'mW-lѿ.G^sEGYobs-build-20210120/test-debtransform/1-out/grandorgue_0.3.0.6.1026-1.dsc000066400000000000000000000015641400202264700244750ustar00rootroot00000000000000Format: 1.0 Source: grandorgue Binary: grandorgue Architecture: any Version: 0.3.0.6.1026-1 Maintainer: Martin Koegler Standards-Version: 3.9.1 Build-Depends: debhelper (>= 7), cdbs, cmake, gettext, po4a, libjack-jackd2-dev, libasound2-dev, libwxgtk2.8-dev, docbook-xsl, xsltproc, zip, devscripts Files: 7e72e6c31c2af52c227ce4c4c6ee3952 655 grandorgue_0.3.0.6.1026.orig.tar.gz 22352b6d141de37a3389e126a94b30c9 725 grandorgue_0.3.0.6.1026-1.diff.gz Checksums-Sha1: 4e0ac2fc3e87538ddb8bed79185ebedd31f1bb60 655 grandorgue_0.3.0.6.1026.orig.tar.gz 56ba6eb51c10d11b044f81a6b1ef031e2299a648 725 grandorgue_0.3.0.6.1026-1.diff.gz Checksums-Sha256: c8f0ac9ada429e83acdd442ebca7cd00e3c9c913553349e164eb91c2283efd27 655 grandorgue_0.3.0.6.1026.orig.tar.gz 9842c28ca711941841f2131a62b4fea7540173657f2e524e3303a791c77d446c 725 grandorgue_0.3.0.6.1026-1.diff.gz obs-build-20210120/test-debtransform/1-out/grandorgue_0.3.0.6.1026.orig.tar.gz000066400000000000000000000012171400202264700257250ustar00rootroot00000000000000MePmo0yͧi'Qkƴ,Uե֮4Mb 25~&lJ4)ͶFq%Y)Zld6Fn;) Fh}]a 4B5 Ml"oy|C3:eD *Hlɿl9Co˿aH> Ԩ@ҙ2dN&)o3 35Iiڸ.w8Եvav죶 uhW$J\|^~A l@آ2C߬ *gVMr:VTM% 0Fm+2ZLlJx[,OUMwx (\17|x0BZ{f:Yg3Zϛ5[;G$_}v!\|3/{]F))h*sT͚ ,aiUCXEAP*NT-M/y63SZ * &gjh<*RtMfD:+%h95KIs @V[kl6ЍgW??S/~zwMh\Fh4Fh4Fyr3 (obs-build-20210120/test-debtransform/1/000077500000000000000000000000001400202264700174235ustar00rootroot00000000000000obs-build-20210120/test-debtransform/1/debian.changelog000066400000000000000000000011351400202264700225160ustar00rootroot00000000000000grandorgue (0.3.0.6.10) unstable; urgency=low * OBS build -- Martin Koegler Sat, 16 Jun 2012 13:08:51 +0200 grandorgue (0.3.0.6.11) unstable; urgency=low * OBS build -- Martin Koegler Sat, 16 Jun 2012 13:08:35 +0200 grandorgue (0.3.0.6.10-1) unstable; urgency=low * Non-maintainer upload. * OBS build -- Martin Koegler Sat, 16 Jun 2012 11:27:19 +0200 grandorgue (0.3.0.6) unstable; urgency=low * Initial version -- Martin Koegler Sun, 06 Nov 2011 19:44:04 +0100 obs-build-20210120/test-debtransform/1/debian.empty000066400000000000000000000000001400202264700217130ustar00rootroot00000000000000obs-build-20210120/test-debtransform/1/debian.obs-version000066400000000000000000000000261400202264700230330ustar00rootroot00000000000000Version: 0.3.0.6.1026 obs-build-20210120/test-debtransform/1/debian.tar.gz000066400000000000000000000010121400202264700217660ustar00rootroot00000000000000%Oo0WR# &h$ihTzmL`Hc\O-;e=Cl&BKQR~tgE3UUsʹc-J  **ƯMc2~!f%v.7iCXIa6ωM<=zݶMXӟ`ڡߐ *.MۧAܐKSۓO4Df.wwn ]7&W)aWEY8ί>z?n'rWgo~$1{%i %8%9 Y_ۭo7}fAI;^o;0VDZ[\Cܒ\njk؆ZgCL]5pȵv4ԡk"|4a߹es88jEm yZK*Q#El%@jk% ϗIUZ\랰E8ŀR.VZgCO|Zӗ?ӿZ/)|B!B!B!B!<(obs-build-20210120/test-debtransform/1/debian1.tar.gz000066400000000000000000000011261400202264700220550ustar00rootroot00000000000000OOo0)| vlM iW?ihD>= C~jmql9u`jݾ='))5SޭoS4~8Ƥ(fD>뮮Mc!4qWC.*XrBǟ"c"bF7Ww:@jW骬H䥷M.ƣ+=TP͘4[PcIW 8SjP 0$_0EUN8l1,+^B9ZJ/!-Fpe!5|S/U-\eOZ (͹U0JXpۻO!B!B!BW7z8(obs-build-20210120/test-debtransform/1/go.tar.gz000066400000000000000000000012171400202264700211600ustar00rootroot00000000000000MePmo0yͧi'Qkƴ,Uե֮4Mb 25~&lJ4)ͶFq%Y)Zld6Fn;) Fh}]a 4B5 Ml"oy|C3:eD *Hlɿl9Co˿aH> Ԩ@ҙ2dN&)o3 35Iiڸ.w8Եvav죶 uhW$J\|^~A l@آ2C߬ *gVMr:VTM% 0Fm+2ZLlJx[,OUMwx (\17|x0BZ{f:Yg3Zϛ5[;G$_}v!\|3/{]F))h*sT͚ ,aiUCXEAP*NT-M/y63SZ * &gjh<*RtMfD:+%h95KIs @V[kl6ЍgW??S/~zwMh\Fh4Fh4Fyr3 (obs-build-20210120/test-debtransform/1/grandorgue.dsc000066400000000000000000000007031400202264700222530ustar00rootroot00000000000000Format: 1.0 Source: grandorgue Binary: grandorgue Architecture: any Version: 0.3.0.6.1026 Maintainer: Martin Koegler Standards-Version: 3.9.1 Build-Depends: debhelper (>= 7), cdbs, cmake, gettext, po4a, libjack-jackd2-dev, libasound2-dev, libwxgtk2.8-dev, docbook-xsl, xsltproc, zip, devscripts DEBTRANSFORM-FILES-TAR: debian.tar.gz debian1.tar.gz Files: 1e0023c7fb1f19a883ec8170efeff360 2817072 grandorgue_0.3.0.6.tar.gz obs-build-20210120/test-debtransform/2-out/000077500000000000000000000000001400202264700202315ustar00rootroot00000000000000obs-build-20210120/test-debtransform/2-out/grandorgue_0.3.0.6.1026-1.diff.gz000066400000000000000000000013251400202264700252470ustar00rootroot00000000000000ŕn0s $1vr vٰY{e;=xn[ "RylYIzCqhtQaRPY`iq\qhz^ (/[;c SJ*9yGIŬ -0BLVb ͠=QɆ\_F7n0k(ËA'^n>Y_rh'n;ޤICX KuZ; ˶!ݓWP?M@v…vט@O`k 8\]eigs;3EY\:#1 o QvrKOW@JTuA !QN4\ԒF( [9%-I,P JU6%WE` %˺˚Ta2JY JIr.FtCJ\J0X(wQRyE"޸co&l[xW`4R&<#ќGqgpve!F\˝y|HT<9عmi0l?8tf(m- ixv>)̂{{/>yCt>&\J&P`sV]S XE[@|>z_N77K8ffu˚?2?A~ތ=t'mW-lѿ.G^sEGYobs-build-20210120/test-debtransform/2-out/grandorgue_0.3.0.6.1026-1.dsc000066400000000000000000000015641400202264700244760ustar00rootroot00000000000000Format: 1.0 Source: grandorgue Binary: grandorgue Architecture: any Version: 0.3.0.6.1026-1 Maintainer: Martin Koegler Standards-Version: 3.9.1 Build-Depends: debhelper (>= 7), cdbs, cmake, gettext, po4a, libjack-jackd2-dev, libasound2-dev, libwxgtk2.8-dev, docbook-xsl, xsltproc, zip, devscripts Files: 379133fdd2c71598e21019375ff4d7c6 655 grandorgue_0.3.0.6.1026.orig.tar.gz 22352b6d141de37a3389e126a94b30c9 725 grandorgue_0.3.0.6.1026-1.diff.gz Checksums-Sha1: 92d92575c1aaa49e09c3be7261449383bdd129ee 655 grandorgue_0.3.0.6.1026.orig.tar.gz 56ba6eb51c10d11b044f81a6b1ef031e2299a648 725 grandorgue_0.3.0.6.1026-1.diff.gz Checksums-Sha256: e05cf0a7d87d7ab0390c17ac150eac7373997ad54485bc57979e85b8760e3a66 655 grandorgue_0.3.0.6.1026.orig.tar.gz 9842c28ca711941841f2131a62b4fea7540173657f2e524e3303a791c77d446c 725 grandorgue_0.3.0.6.1026-1.diff.gz obs-build-20210120/test-debtransform/2-out/grandorgue_0.3.0.6.1026.orig.tar.gz000066400000000000000000000012171400202264700257260ustar00rootroot00000000000000mo0yͧi'Qkƴ,Uե֮4Mb 25~&lJ4)ͶFq%Y)Zld6Fn;) Fh}]a 4B5 Ml"oy|C3:eD *Hlɿl9Co˿aH> Ԩ@ҙ2dN&)o3 35Iiڸ.w8Եvav죶 uhW$J\|^~A l@آ2C߬ *gVMr:VTM% 0Fm+2ZLlJx[,OUMwx (\17|x0BZ{f:Yg3Zϛ5[;G$_}v!\|3/{]F))h*sT͚ ,aiUCXEAP*NT-M/y63SZ * &gjh<*RtMfD:+%h95KIs @V[kl6ЍgW??S/~zwMh\Fh4Fh4Fyr3 (obs-build-20210120/test-debtransform/2/000077500000000000000000000000001400202264700174245ustar00rootroot00000000000000obs-build-20210120/test-debtransform/2/debian.changelog000066400000000000000000000011351400202264700225170ustar00rootroot00000000000000grandorgue (0.3.0.6.10) unstable; urgency=low * OBS build -- Martin Koegler Sat, 16 Jun 2012 13:08:51 +0200 grandorgue (0.3.0.6.11) unstable; urgency=low * OBS build -- Martin Koegler Sat, 16 Jun 2012 13:08:35 +0200 grandorgue (0.3.0.6.10-1) unstable; urgency=low * Non-maintainer upload. * OBS build -- Martin Koegler Sat, 16 Jun 2012 11:27:19 +0200 grandorgue (0.3.0.6) unstable; urgency=low * Initial version -- Martin Koegler Sun, 06 Nov 2011 19:44:04 +0100 obs-build-20210120/test-debtransform/2/debian.empty000066400000000000000000000000001400202264700217140ustar00rootroot00000000000000obs-build-20210120/test-debtransform/2/debian.obs-version000066400000000000000000000000261400202264700230340ustar00rootroot00000000000000Version: 0.3.0.6.1026 obs-build-20210120/test-debtransform/2/debian.tar.gz000066400000000000000000000010121400202264700217670ustar00rootroot00000000000000%Oo0WR# &h$ihTzmL`Hc\O-;e=Cl&BKQR~tgE3UUsʹc-J  **ƯMc2~!f%v.7iCXIa6ωM<=zݶMXӟ`ڡߐ *.MۧAܐKSۓO4Df.wwn ]7&W)aWEY8ί>z?n'rWgo~$1{%i %8%9 Y_ۭo7}fAI;^o;0VDZ[\Cܒ\njk؆ZgCL]5pȵv4ԡk"|4a߹es88jEm yZK*Q#El%@jk% ϗIUZ\랰E8ŀR.VZgCO|Zӗ?ӿZ/)|B!B!B!B!<(obs-build-20210120/test-debtransform/2/debian1.tar.gz000066400000000000000000000011261400202264700220560ustar00rootroot00000000000000OOo0)| vlM iW?ihD>= C~jmql9u`jݾ='))5SޭoS4~8Ƥ(fD>뮮Mc!4qWC.*XrBǟ"c"bF7Ww:@jW骬H䥷M.ƣ+=TP͘4[PcIW 8SjP 0$_0EUN8l1,+^B9ZJ/!-Fpe!5|S/U-\eOZ (͹U0JXpۻO!B!B!BW7z8(obs-build-20210120/test-debtransform/2/go.tar.bz2000066400000000000000000000013031400202264700212320ustar00rootroot00000000000000BZh91AY&SYpĐjJ@|  )5BmLM馦dچ i` F2ahp # !@2adɄ`!@0ʛ&=5620!z]b"H$U q98"94P¬Ke0ś> JaVPԗ. @j[J_7yF,;QQ*&UfmY8]/z2.s!`zO ,N!fStAyÍ9NOj+GzbgseeeL Standards-Version: 3.9.1 Build-Depends: debhelper (>= 7), cdbs, cmake, gettext, po4a, libjack-jackd2-dev, libasound2-dev, libwxgtk2.8-dev, docbook-xsl, xsltproc, zip, devscripts DEBTRANSFORM-FILES-TAR: debian.tar.gz debian1.tar.gz Files: 1e0023c7fb1f19a883ec8170efeff360 2817072 grandorgue_0.3.0.6.tar.gz obs-build-20210120/test-debtransform/run.sh000077500000000000000000000011051400202264700204230ustar00rootroot00000000000000#!/bin/bash function fail { echo "$1: FAIL" exit 1 } function run { rm -rf out mkdir out ERROR=0 PATH=..:$PATH ../debtransform $1 $1/$2 out || ERROR=1 if [ "$ERROR" != "$3" ]; then fail $1 fi echo "$1: OK" if [ "$ERROR" = 0 ]; then for a in out/* do NAME="`basename "$a"`" case $NAME in *.dsc) debdiff $4/$NAME out/$NAME RES=$? if [ $RES != 0 ]; then fail $RES fi ;; esac done fi } export SOURCE_DATE_EPOCH=1591490034 run 1 grandorgue.dsc 0 1-out run 2 grandorgue.dsc 0 2-out obs-build-20210120/test/000077500000000000000000000000001400202264700145775ustar00rootroot00000000000000obs-build-20210120/test/Fedora_11.conf000066400000000000000000000257031400202264700171560ustar00rootroot00000000000000%define _project Fedora:11 ### from Fedora:11 %define _repository standard Preinstall: acl attr bash bzip2 coreutils device-mapper-libs diffutils Preinstall: filesystem glibc grep libacl libattr Preinstall: libgcc m4 ncurses pam nss nspr Preinstall: popt readline ncurses-libs rpm sed tar zlib Preinstall: rpm-libs pcre info libselinux sqlite Preinstall: elfutils-libelf findutils neon openssl krb5-libs Preinstall: e2fsprogs-libs expat bzip2-libs libstdc++ setup libsepol Preinstall: perl-libs policycoreutils libcap db4 file-libs lua Preinstall: shadow-utils chkconfig nss-softokn-freebl util-linux-ng Runscripts: setup VMinstall: perl device-mapper Required: autoconf automake binutils bzip2 gcc gdbm gettext glibc Required: libtool ncurses nss-softokn-freebl perl rpm zlib rpm-build Support: bind-libs bind-utils bison cpio cpp cracklib cvs Support: e2fsprogs file findutils flex gawk gdbm-devel gettext-devel Support: glibc-devel gpm groff gzip info less Support: make man module-init-tools Support: ncurses-devel net-tools openssl Support: patch procinfo procps psmisc rcs strace Support: texinfo unzip util-linux-ng zlib-devel vim-enhanced Support: initscripts bzip2-devel shadow-utils Keep: binutils cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel gzip libada libstdc++ libunwind Keep: libunwind-devel make pam-devel pam-modules shadow-utils Keep: patch nss-softokn-freebl perl rcs rpm-build ncurses-libs nss nspr Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: initscripts:syslog-ng Prefer: generic-logos Prefer: text-www-browser:lynx Prefer: docbook-utils:lynx Prefer: kdepim:pinentry-qt Prefer: syslogd sysklogd Prefer: kernel Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Conflict: ghostscript-library:ghostscript-mini Ignore: initscripts:kernel,udev,ethtool,mingetty Ignore: tetex:tetex-fonts,desktop-file-utils Ignore: pam:glib2 Ignore: libraw1394:kernel Ignore: gettext-devel:libgcj,libstdc++-devel,libgcj_bc.so.1 Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: phonon:phonon-backend Ignore: phonon:phonon-backend(x86-32) Ignore: phonon:phonon-backend(x86-64) Ignore: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifarch %arm # workaround for broken Fedora arm distro #Ignore: bind-libs:libcrypto.so.6 #Ignore: bind-utils:libcrypto.so.6 %endif %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit %endif %endif # # Bugfix broken dependencies # Substitute: python python redhat-rpm-config # # SUSE compatibilities # Substitute: alsa alsa-lib Substitute: alsa-devel alsa-lib-devel Substitute: docbook-toys docbook-utils Substitute: expat expat expat-devel Substitute: gtkdoc gtk-doc Substitute: db db4 Substitute: db-devel db4-devel Substitute: dbus-1 dbus Substitute: dbus-1-devel dbus-devel Substitute: dbus-1-glib dbus-glib Substitute: dbus-1-python dbus-python Substitute: dbus-1-mono dbus-sharp Substitute: gtk-devel gtk+-devel Substitute: te_latex tetex-latex Substitute: xorg-x11-devel xorg-x11-proto-devel xorg-x11-xtrans-devel Substitute: krb5 krb5-libs Substitute: libsigc++2-devel libsigc++20-devel Substitute: libXerces-c-devel xerces-c-devel Substitute: libgphoto2-devel gphoto2-devel Substitute: libredland-devel redland-devel Substitute: libraptor-devel raptor-devel Substitute: librasqal-devel rasqal-devel Substitute: openldap2 openldap Substitute: openldap2-devel openldap-devel Substitute: pulseaudio-devel pulseaudio-libs-devel Substitute: xorg-x11-Mesa-devel mesa-libGL-devel Substitute: ImageMagick-Magick++-devel ImageMagick-c++-devel Substitute: ImageMagick-Magick++ ImageMagick-c++ Substitute: pyxml PyXML Substitute: Mesa mesa-libGL Substitute: Mesa-devel mesa-libGL-devel Substitute: freetype2 freetype Substitute: freetype2-devel freetype-devel Substitute: liblcms-devel lcms-devel Substitute: libqt4-devel qt-devel Substitute: kdelibs4-devel kdelibs-devel Prefer: -Glide3-libGL Prefer: wxGTK-media:GConf2 Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um kernel-xen kernel-kdump %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 kernel-kdump %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif # # experimentel, testing for mc # Substitute: sgml-skel sgml-common Substitute: docbook-xsl-stylesheets docbook-style-xsl Substitute: libelf elfutils-libelf %define fedora_version 11 Macros: %vendor obs://build.opensuse.org/Fedora:11 %_project Fedora:11 %distribution Fedora:11 %_project Fedora:11 ### from Fedora:11 %_repository standard %opensuse_bs 1 %fedora_version 11 %_vendor redhat #From fedora buildsys-macros package %fedora 11 %dist .fc11 %fc11 1 %kernel_module_package_buildreqs kernel-devel %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} obs-build-20210120/test/Fedora_12.conf000066400000000000000000000261751400202264700171630ustar00rootroot00000000000000%define _project Fedora:12 ### from Fedora:12 %define _repository standard Preinstall: acl attr bash bzip2 coreutils device-mapper-libs diffutils Preinstall: filesystem glibc grep libacl libattr Preinstall: libgcc m4 ncurses pam nss nspr Preinstall: popt readline ncurses-libs rpm sed tar zlib Preinstall: rpm-libs pcre info libselinux sqlite Preinstall: elfutils-libelf findutils openssl krb5-libs Preinstall: e2fsprogs-libs expat bzip2-libs libstdc++ setup libsepol Preinstall: perl-libs libcap db4 file-libs lua Preinstall: shadow-utils chkconfig util-linux-ng Preinstall: xz-libs nss-util libblkid libuuid Preinstall: nss-softokn-freebl nss-softokn #Runscripts: setup VMinstall: perl device-mapper Required: autoconf automake binutils bzip2 gcc gdbm gettext glibc Required: libtool ncurses nss-softokn-freebl perl rpm zlib rpm-build Support: bind-libs bind-utils bison cpp cracklib cvs cpio Support: e2fsprogs file findutils flex gawk gdbm-devel gettext-devel Support: glibc-devel gpm groff gzip info less Support: make man module-init-tools Support: ncurses-devel net-tools openssl Support: patch procinfo procps psmisc rcs strace Support: texinfo unzip util-linux-ng zlib-devel vim-enhanced Support: initscripts bzip2-devel shadow-utils Keep: binutils cpp cracklib file findutils gawk gcc gcc-ada gcc-c++ Keep: gdbm glibc-devel gzip libada libstdc++ libunwind Keep: libunwind-devel make pam-devel pam-modules shadow-utils Keep: patch nss-softokn-freebl perl rcs rpm-build ncurses-libs nss nspr Prefer: xorg-x11-libs libpng fam mozilla mozilla-nss xorg-x11-Mesa Prefer: unixODBC libsoup glitz java-1_4_2-sun gnome-panel Prefer: desktop-data-SuSE gnome2-SuSE mono-nunit gecko-sharp2 Prefer: apache2-prefork openmotif-libs ghostscript-mini gtk-sharp Prefer: glib-sharp libzypp-zmd-backend mDNSResponder Prefer: gnome-sharp2:art-sharp2 gnome-sharp:art-sharp Prefer: ifolder3:gnome-sharp2 ifolder3:gconf-sharp2 Prefer: nautilus-ifolder3:gnome-sharp2 Prefer: gconf-sharp2:glade-sharp2 gconf-sharp:glade-sharp Prefer: tomboy:gconf-sharp tomboy:gnome-sharp Prefer: zmd:libzypp-zmd-backend Prefer: yast2-packagemanager-devel:yast2-packagemanager Prefer: initscripts:syslog-ng Prefer: generic-logos Prefer: text-www-browser:lynx Prefer: docbook-utils:lynx Prefer: kdepim:pinentry-qt Prefer: syslogd sysklogd Prefer: kernel Prefer: -libgcc-mainline -libstdc++-mainline -gcc-mainline-c++ Prefer: -libgcj-mainline -viewperf -compat -compat-openssl097g Prefer: -zmd -OpenOffice_org -pam-laus -libgcc-tree-ssa -busybox-links Prefer: -crossover-office Prefer: -xz-lzma-compat Conflict: ghostscript-library:ghostscript-mini Ignore: initscripts:kernel,udev,ethtool,mingetty,glib2 Ignore: tetex:tetex-fonts,desktop-file-utils Ignore: pam:glib2 Ignore: libraw1394:kernel Ignore: qt-x11:phonon-backend Ignore: qt-x11:phonon-backend(x86-32) Ignore: qt-x11:phonon-backend(x86-64) Ignore: gettext-devel:libgcj,libstdc++-devel,libgcj_bc.so.1 Ignore: pam-modules:resmgr Ignore: rpm:suse-build-key,build-key Ignore: bind-utils:bind-libs Ignore: alsa:dialog,pciutils Ignore: portmap:syslogd Ignore: fontconfig:freetype2 Ignore: fontconfig-devel:freetype2-devel Ignore: xorg-x11-libs:freetype2 Ignore: xorg-x11:x11-tools,resmgr,xkeyboard-config,xorg-x11-Mesa,libusb,freetype2,libjpeg,libpng Ignore: apache2:logrotate Ignore: arts:alsa,audiofile,resmgr,libogg,libvorbis Ignore: kdelibs3:alsa,arts,pcre,OpenEXR,aspell,cups-libs,mDNSResponder,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,krb5,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:libidl Ignore: orbit2-devel:libidl,libidl-devel,indent Ignore: qt3:libmng Ignore: qt-sql:qt_database_plugin Ignore: gtk2:libpng,libtiff Ignore: libgnomecanvas-devel:glib-devel Ignore: libgnomeui:gnome-icon-theme,shared-mime-info Ignore: scrollkeeper:docbook_4,sgml-skel Ignore: gnome-desktop:libgnomesu,startup-notification Ignore: python-devel:python-tk Ignore: gnome-pilot:gnome-panel Ignore: gnome-panel:control-center2 Ignore: gnome-menus:kdebase3 Ignore: gnome-main-menu:rug Ignore: libbonoboui:gnome-desktop Ignore: postfix:pcre Ignore: docbook_4:iso_ent,sgml-skel,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-SuSELinux,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:perl-XML-Writer,libxslt,pkgconfig 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 Ignore: yast2-x11:sax2-libsax-perl Ignore: openslp-devel:openssl-devel Ignore: java-1_4_2-sun:xorg-x11-libs Ignore: java-1_4_2-sun-devel:xorg-x11-libs Ignore: kernel-um:xorg-x11-libs Ignore: tetex:xorg-x11-libs,expat,fontconfig,freetype2,libjpeg,libpng,ghostscript-x11,xaw3d,gd,dialog,ed Ignore: yast2-country:yast2-trans-stats Ignore: libgcc:glibc-32bit Ignore: libstdc++:glibc-32bit Ignore: susehelp:susehelp_lang,suse_help_viewer Ignore: mailx:smtp_daemon Ignore: cron:smtp_daemon Ignore: hotplug:syslog Ignore: pcmcia:syslog Ignore: avalon-logkit:servlet Ignore: jython:servlet Ignore: ispell:ispell_dictionary,ispell_english_dictionary Ignore: aspell:aspel_dictionary,aspell_dictionary Ignore: smartlink-softmodem:kernel,kernel-nongpl Ignore: OpenOffice_org-de:myspell-german-dictionary 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: phonon:phonon-backend Ignore: phonon:phonon-backend(x86-32) Ignore: phonon:phonon-backend(x86-64) Ignore: simias:mono(log4net) Ignore: zmd: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: 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: gnome-libs:libgnomeui Ignore: nautilus:gnome-themes Ignore: gnome-panel:gnome-themes Ignore: gnome-panel:tomboy %ifarch %arm # workaround for broken Fedora arm distro #Ignore: bind-libs:libcrypto.so.6 #Ignore: bind-utils:libcrypto.so.6 %endif %ifnarch s390 s390x ppc ia64 Substitute: java2-devel-packages java-1_4_2-sun-devel %else %ifnarch s390x Substitute: java2-devel-packages java-1_4_2-ibm-devel %else Substitute: java2-devel-packages java-1_4_2-ibm-devel xorg-x11-libs-32bit %endif %endif # # Bugfix broken dependencies # Substitute: python python redhat-rpm-config # # SUSE compatibilities # Substitute: alsa alsa-lib Substitute: alsa-devel alsa-lib-devel Substitute: docbook-toys docbook-utils Substitute: expat expat expat-devel Substitute: gtkdoc gtk-doc Substitute: db db4 Substitute: db-devel db4-devel Substitute: dbus-1 dbus Substitute: dbus-1-devel dbus-devel Substitute: dbus-1-glib dbus-glib Substitute: dbus-1-python dbus-python Substitute: dbus-1-mono dbus-sharp Substitute: gtk-devel gtk+-devel Substitute: te_latex tetex-latex Substitute: xorg-x11-devel xorg-x11-proto-devel xorg-x11-xtrans-devel Substitute: krb5 krb5-libs Substitute: libsigc++2-devel libsigc++20-devel Substitute: libXerces-c-devel xerces-c-devel Substitute: libgphoto2-devel gphoto2-devel Substitute: libredland-devel redland-devel Substitute: libraptor-devel raptor-devel Substitute: librasqal-devel rasqal-devel Substitute: openldap2 openldap Substitute: openldap2-devel openldap-devel Substitute: pulseaudio-devel pulseaudio-libs-devel Substitute: xorg-x11-Mesa-devel mesa-libGL-devel Substitute: ImageMagick-Magick++-devel ImageMagick-c++-devel Substitute: ImageMagick-Magick++ ImageMagick-c++ Substitute: pyxml PyXML Substitute: Mesa mesa-libGL Substitute: Mesa-devel mesa-libGL-devel Substitute: freetype2 freetype Substitute: freetype2-devel freetype-devel Substitute: liblcms-devel lcms-devel Substitute: libqt4-devel qt-devel Substitute: kdelibs4-devel kdelibs-devel Prefer: -Glide3-libGL Prefer: wxGTK-media:GConf2 Substitute: yast2-devel-packages docbook-xsl-stylesheets doxygen libxslt perl-XML-Writer popt-devel sgml-skel update-desktop-files yast2 yast2-devtools yast2-packagemanager-devel yast2-perl-bindings yast2-testsuite %ifarch x86_64 ppc64 s390x sparc64 Substitute: glibc-devel-32bit glibc-devel-32bit glibc-32bit %else %ifarch ppc 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-um kernel-xen kernel-kdump %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 kernel-kdump %endif %ifarch ppc Substitute: kernel-binary-packages kernel-default kernel-kdump kernel-ppc64 kernel-iseries64 %endif %ifarch ppc64 Substitute: kernel-binary-packages kernel-ppc64 kernel-iseries64 %endif %ifarch s390 Substitute: kernel-binary-packages kernel-s390 %endif %ifarch s390x Substitute: kernel-binary-packages kernel-default %endif # # experimentel, testing for mc # Substitute: sgml-skel sgml-common Substitute: docbook-xsl-stylesheets docbook-style-xsl Substitute: libelf elfutils-libelf %define fedora_version 12 Macros: %vendor obs://build.opensuse.org/Fedora:12 %_project Fedora:12 %distribution Fedora:12 %_project Fedora:12 ### from Fedora:12 %_repository standard %opensuse_bs 1 %fedora_version 12 %_vendor redhat #From fedora buildsys-macros package %fedora 12 %dist .fc12 %fc12 1 %kernel_module_package_buildreqs kernel-devel %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} obs-build-20210120/test/baselibs.conf000066400000000000000000000000121400202264700172230ustar00rootroot00000000000000libdummy1 obs-build-20210120/test/common000066400000000000000000000050071400202264700160140ustar00rootroot00000000000000#!/bin/bash # common functions for build script testing ################################################################ # # Copyright (c) 2009 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 # ################################################################ # set -e . ${0%/*}/config if [ -e ${0%/*}/config.local ]; then . ${0%/*}/config.local fi : ${BUILD_DIR:=/usr/lib/build} #if [ ! -e "$build_vm_img" ]; then # sudo dd if=/dev/zero of="$build_vm_img" bs=512 count=0 seek=$((build_vm_image_size*2*1024)) #fi #if [ ! -e "$build_vm_swap" ]; then # sudo dd if=/dev/zero of="$build_vm_swap" bs=512 count=0 seek=$((build_vm_swap_size*2*1024)) #fi die() { test -z "$1" || echo "$*" >&2 exit 1 } fail() { echo FAILED test -z "$1" || echo "$*" exit 2 } skip() { echo skipped test -z "$1" || echo "$*" exit 3 } build_args=() repos=() repo() { local dir eval dir="\"\$repo_$1\"" [ -n "$dir" ] || die "repo $1 not defined, try adding repo_$1=/path/to/repo to config.local" test -d "$dir" || skip repos[${#repos[@]}]="--repository"; repos[${#repos[@]}]="$dir"; } linux32= arch32bit() { local hostarch=`uname -m` case "$hostarch" in x86_64) linux32=linux32 ;; *) skip ;; esac } enable_kvm() { test -w /dev/kvm || skip "no kvm support" build_args+=(--kvm) [ -z "$build_vm_img" ] || build_args+=("$build_vm_img") [ -z "$build_vm_swap" ] || build_args+=(--swap "$build_vm_swap") [ -z "$build_vm_mem" ] || build_args+=(--memory "$build_vm_mem") } run_build() { for i in "$@"; do if [ "$i" = '--kvm' ]; then enable_kvm else build_args+=("$i") fi done SU_WRAPPER="" [ -x /usr/bin/sudo ] && SU_WRAPPER="sudo env" set -- $linux32 $SU_WRAPPER \ $BUILD_DIR/build \ --root "${build_root}" \ "${repos[@]}" \ "${build_args[@]}" echo "$@" "$@" || fail find $build_root/.build.packages/ -type f -name '*.rpm' -print0 | xargs --no-run-if-empty -0 rpm -K || fail } obs-build-20210120/test/config000066400000000000000000000003331400202264700157660ustar00rootroot00000000000000#!/bin/bash : ${build_root:=/abuild/build-root} #: ${build_vm_img:=/abuild/build-root.img} #: ${build_vm_swap:=/abuild/build-root.swap} : ${build_vm_mem:=256} : ${build_vm_image_size:=500} : ${build_vm_swap_size:=100} obs-build-20210120/test/libdummy1.spec000066400000000000000000000007431400202264700173620ustar00rootroot00000000000000Name: libdummy1 Version: 0 Release: 0 Group: None Summary: Dummy License: GPL BuildRoot: %_tmppath/%name-%version-build %build gcc --version echo "int dummy(void) {}" | gcc -shared -Wl,-soname=libdummy.so.1 -o libdummy.so.1 -x c - %install mkdir -p %buildroot%_libdir install libdummy.so.1 %buildroot%_libdir %clean rm -rf %buildroot %description target_cpu %_target_cpu arch %_arch build_arch %_build_arch %files %defattr(-,root,root) %_libdir/libdummy.so.1 %changelog obs-build-20210120/test/testbuild.11.0-i386000077500000000000000000000001341400202264700175670ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo 11_0_i386 run_build --dist 11.0-i386 \ "$@" obs-build-20210120/test/testbuild.11.0-x86_64000077500000000000000000000001251400202264700200340ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common repo 11_0_x86_64 run_build --dist 11.0-x86_64 \ "$@" obs-build-20210120/test/testbuild.11.1-i386000077500000000000000000000001331400202264700175670ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo 11_1_ftp run_build --dist 11.1-i386 \ "$@" obs-build-20210120/test/testbuild.11.2-i386000077500000000000000000000001271400202264700175730ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo 11_2 run_build --dist 11.2-i386 \ "$@" obs-build-20210120/test/testbuild.8.1-i386000077500000000000000000000001321400202264700175140ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo 8_1_i386 run_build --dist 8.1-i386 \ "$@" obs-build-20210120/test/testbuild.Fedora11-i386000077500000000000000000000001661400202264700205570ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo fedora11_i386 run_build --dist $PWD/Fedora_11.conf --arch i686 \ "$@" obs-build-20210120/test/testbuild.Fedora11-x86_64000077500000000000000000000001411400202264700210150ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common repo fedora11_x86_64 run_build --dist $PWD/Fedora_11.conf \ "$@" obs-build-20210120/test/testbuild.Fedora12-i386000077500000000000000000000001661400202264700205600ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo fedora12_i386 run_build --dist $PWD/Fedora_12.conf --arch i686 \ "$@" obs-build-20210120/test/testbuild.Fedora12-x86_64000077500000000000000000000001411400202264700210160ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common repo fedora12_x86_64 run_build --dist $PWD/Fedora_12.conf \ "$@" obs-build-20210120/test/testbuild.sh000077500000000000000000000005271400202264700171410ustar00rootroot00000000000000#!/bin/bash # # This is the generic test case for the current distribution, it # is to be called from the spec file while building a build.rpm . ${0%/*}/common REPO="$1" shift if [ -z "$REPO" ]; then echo "No local path to binary packages is given as argument" exit 1 fi [ "$ARCH" == "i386" ] && arch32bit repo "$REPO" run_build "$@" obs-build-20210120/test/testbuild.sles10-i386000077500000000000000000000001641400202264700203220ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo sle10sp2_i386 repo sle10sp2_sdk_i386 run_build --dist sles10 \ "$@" obs-build-20210120/test/testbuild.sles10-x86_64000077500000000000000000000001551400202264700205670ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common repo sle10sp2_x86_64 repo sle10sp2_sdk_x86_64 run_build --dist sles10 \ "$@" obs-build-20210120/test/testbuild.sles9-i386000077500000000000000000000001511400202264700202460ustar00rootroot00000000000000#!/bin/bash . ${0%/*}/common arch32bit repo core9_i386 repo sles9_i386 run_build --dist sles9 \ "$@" obs-build-20210120/unrpm000077500000000000000000000030011400202264700147010ustar00rootroot00000000000000#!/bin/bash ################################################################ # # Copyright (c) 1995-2014 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 # ################################################################ function Usage () { echo "Usage: $(basename $0) [-vq] rpm-files..."; echo "Unpack rpm files in current directory."; exit 1 } CPIO_OPTS="--extract --unconditional --preserve-modification-time --make-directories" FILES="" VERBOSE=false QUIET=false for i in $* ; do case "$i" in -v) VERBOSE=true ;; -q) QUIET=true ;; *) FILES="$FILES $i" ;; esac done test "$VERBOSE" = "true" && CPIO_OPTS="$CPIO_OPTS --verbose" test "$QUIET" = "true" && CPIO_OPTS="$CPIO_OPTS --quiet" test -z "$FILES" && Usage for f in $FILES; do if test "$QUIET" = "false" ; then echo -ne "$f:\t" fi rpm2cpio $f | cpio ${CPIO_OPTS} done obs-build-20210120/unrpm.1000066400000000000000000000006541400202264700150500ustar00rootroot00000000000000.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 .B unrpm .RB [ -v ] .RB [ -q ] .I rpm .RB ... .SH DESCRIPTION The \fBunrpm\fP tool unpacks one or more rpm files into the current directory. The \fB-v\fP option makes it print the filenames while unpacking, whereas the \fB-q\fP option suppresses any output. .SH SEE ALSO .BR rpm2cpio (8), obs-build-20210120/vc000077500000000000000000000077641400202264700141740ustar00rootroot00000000000000#!/bin/bash # use this script to edit *.changes files # # based on changelog edit script from xqf # # Copyright (C) 2002 Ludwig Nussel # Copyright (C) 2009 SUSE Linux Products GmbH, Nuernberg, Germany. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 or 3 of the License, or # (at your option) any later version. # # 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; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA shopt -s nullglob if [ -z "$mailaddr" ]; then domain=`dnsdomainname` [ -z "$domain" ] && domain=localhost mailaddr="$USER@$domain" fi if [ -n "$VC_REALNAME" ]; then packager="$VC_REALNAME <${VC_MAILADDR:-$mailaddr}>" elif [ -x /usr/bin/rpmdev-packager ]; then packager=`rpmdev-packager` else packager="`getent passwd $UID | cut -d: -f5 | cut -d ',' -f 1` <$mailaddr>" fi EDITOR=${EDITOR:-vim} date=`LC_ALL=POSIX TZ=UTC date` if ! which mktemp > /dev/null 2>&1; then echo "mktemp is required for this script to work" exit 1 fi while [ -n "$1" ]; do case "$1" in -m) if [ $just_edit ]; then echo "You cannot use -m and -e together!" exit 1 fi message="$2" shift 2 ;; -e) if [ -n "${message}" ]; then echo "You cannot use -m and -e together!" exit 1 fi just_edit=true shift 1 ;; --help) echo "Usage: $0 [-m MESSAGE|-e] [filename[.changes]|path [file_with_comment]]" echo echo "Will use '$packager' for changelog entries" echo echo "Options:" echo " -m MESSAGE add MESSAGE to changes (not open an editor)" echo " -e just open changes (cannot be used with -m)" exit 0 ;; *) break ;; esac done changelog="$1" content="$2" pkgpath= if [ -n "$changelog" -a -d "$changelog" ]; then pkgpath="$changelog/" changelog='' fi if [ -n "$changelog" ]; then if [ "${changelog%.changes}" = "$changelog" ]; then changelog="$changelog.changes" fi else changelog=($pkgpath*.changes) if [ "${#changelog[@]}" -eq 1 ]; then changelog="$changelog" elif [ -n "$changelog" ]; then echo "Choose one of ${changelog[@]}" exit 1 fi fi if [ -z "$changelog" ]; then changelog=($pkgpath*.spec) if [ "${#changelog[@]}" -eq 1 ]; then changelog=${changelog%.spec}.changes elif [ -n "$changelog" ]; then echo "Choose one of ${changelog[@]}" exit 1 fi fi if [ -z "$changelog" ]; then echo "no .changes and no .spec file found" exit 1 fi if [ ! -e "$changelog" ]; then created_new_changelog=true touch $changelog fi tmpfile=`mktemp -q $changelog.vctmp.XXXXXX` if [ $? -ne 0 ]; then echo "$0: Can't create temp file, exiting..." exit 1 fi trap "rm -f \"$tmpfile\"" EXIT set +e { if [ ! $just_edit ]; then echo "-------------------------------------------------------------------" echo "$date - $packager" echo fi if [ -n "$message" ]; then echo -e "- $message" elif [ -n "$content" ]; then cat "$content" elif [ ! $just_edit ]; then echo "- " fi if [ -f "$changelog" ] && [ -s "$changelog" ] && [ ! $just_edit ]; then # Avoid double newlines at EOF on a new blank .changes file, # but do provide enough spacing between preexisting log entries. echo fi cat $changelog } >> "$tmpfile" if [ -z "$message" -a -z "$content" ]; then set -- `md5sum "$tmpfile"` chksum="$1" $EDITOR +4 "$tmpfile" set -- `md5sum "$tmpfile"` if [ -z "$content" -a "$chksum" == "$1" ]; then echo "no changes made" if [ "$created_new_changelog" = true ]; then rm -f "$changelog" fi exit 0 fi fi mode=`stat -c "%a" "$changelog"` user=`stat -c "%u:%g" "$changelog"` mv "$tmpfile" "$changelog" chmod $mode "$changelog" chown $user "$changelog"