Imported Upstream version 2013.11.12 upstream/2013.11.12
authorZhang Qiang <qiang.z.zhang@intel.com>
Thu, 3 Apr 2014 07:53:09 +0000 (15:53 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Thu, 3 Apr 2014 07:53:09 +0000 (15:53 +0800)
120 files changed:
Build.pm [new file with mode: 0644]
Build/Arch.pm [new file with mode: 0644]
Build/Deb.pm [new file with mode: 0644]
Build/Kiwi.pm [new file with mode: 0644]
Build/Rpm.pm [new file with mode: 0644]
Build/Susetags.pm [new file with mode: 0644]
Build/Zypp.pm [new file with mode: 0644]
Makefile [new file with mode: 0644]
README [new file with mode: 0644]
baselibs_global-deb.conf [new file with mode: 0644]
baselibs_global.conf [new file with mode: 0644]
build [new file with mode: 0755]
build.1 [new file with mode: 0644]
build_kiwi.sh [new file with mode: 0644]
changelog2spec [new file with mode: 0755]
common_functions [new file with mode: 0755]
computeblocklists [new file with mode: 0755]
configs/arch.conf [new file with mode: 0644]
configs/debian.conf [new file with mode: 0644]
configs/sl10.0.conf [new file with mode: 0644]
configs/sl10.1.conf [new file with mode: 0644]
configs/sl10.2.conf [new file with mode: 0644]
configs/sl10.3.conf [new file with mode: 0644]
configs/sl11.0.conf [new file with mode: 0644]
configs/sl11.1.conf [new file with mode: 0644]
configs/sl11.2.conf [new file with mode: 0644]
configs/sl11.3.conf [new file with mode: 0644]
configs/sl11.4.conf [new file with mode: 0644]
configs/sl12.1.conf [new file with mode: 0644]
configs/sl12.2.conf [new file with mode: 0644]
configs/sl12.3.conf [new file with mode: 0644]
configs/sl13.1.conf [new file with mode: 0644]
configs/sl13.2.conf [new file with mode: 0644]
configs/sl8.1.conf [new file with mode: 0644]
configs/sl8.2.conf [new file with mode: 0644]
configs/sl9.0.conf [new file with mode: 0644]
configs/sl9.1.conf [new file with mode: 0644]
configs/sl9.2.conf [new file with mode: 0644]
configs/sl9.3.conf [new file with mode: 0644]
configs/sles10.conf [new file with mode: 0644]
configs/sles11.conf [new symlink]
configs/sles11sp2.conf [new file with mode: 0644]
configs/sles8.conf [new file with mode: 0644]
configs/sles9.conf [new file with mode: 0644]
configs/spectool.conf [new file with mode: 0644]
configs/ul1.conf [new file with mode: 0644]
createarchdeps [new file with mode: 0755]
createrepomddeps [new file with mode: 0755]
createrpmdeps [new file with mode: 0755]
createyastdeps [new file with mode: 0755]
debtransform [new file with mode: 0755]
debtransformbz2 [new file with mode: 0755]
debtransformzip [new file with mode: 0755]
detect_architecture.sh [new file with mode: 0644]
download [new file with mode: 0755]
emulator/emulator.sh [new file with mode: 0755]
expanddeps [new file with mode: 0755]
extractbuild [new file with mode: 0755]
getbinaryid [new file with mode: 0755]
getchangetarget [new file with mode: 0755]
getmacros [new file with mode: 0755]
getoptflags [new file with mode: 0755]
gettype [new file with mode: 0755]
init_buildsystem [new file with mode: 0755]
initscript_qemu_vm [new file with mode: 0755]
initvm.c [new file with mode: 0644]
killchroot [new file with mode: 0755]
lxc.conf [new file with mode: 0644]
mkbaselibs [new file with mode: 0755]
mkdrpms [new file with mode: 0755]
order [new file with mode: 0755]
qemu-reg [new file with mode: 0644]
signdummy [new file with mode: 0755]
spec2changelog [new file with mode: 0755]
spec_add_patch [new file with mode: 0755]
spectool [new file with mode: 0755]
substitutedeps [new file with mode: 0755]
t/dist [new file with mode: 0755]
test-debtransform/1-out/grandorgue_0.3.0.6.1026.diff.gz [new file with mode: 0644]
test-debtransform/1-out/grandorgue_0.3.0.6.1026.dsc [new file with mode: 0644]
test-debtransform/1-out/grandorgue_0.3.0.6.1026.orig.tar.gz [new file with mode: 0644]
test-debtransform/1/debian.changelog [new file with mode: 0644]
test-debtransform/1/debian.empty [new file with mode: 0644]
test-debtransform/1/debian.obs-version [new file with mode: 0644]
test-debtransform/1/debian.tar.gz [new file with mode: 0644]
test-debtransform/1/debian1.tar.gz [new file with mode: 0644]
test-debtransform/1/go.tar.gz [new file with mode: 0644]
test-debtransform/1/grandorgue.dsc [new file with mode: 0644]
test-debtransform/2-out/grandorgue_0.3.0.6.1026.diff.gz [new file with mode: 0644]
test-debtransform/2-out/grandorgue_0.3.0.6.1026.dsc [new file with mode: 0644]
test-debtransform/2-out/grandorgue_0.3.0.6.1026.orig.tar.gz [new file with mode: 0644]
test-debtransform/2/debian.changelog [new file with mode: 0644]
test-debtransform/2/debian.empty [new file with mode: 0644]
test-debtransform/2/debian.obs-version [new file with mode: 0644]
test-debtransform/2/debian.tar.gz [new file with mode: 0644]
test-debtransform/2/debian1.tar.gz [new file with mode: 0644]
test-debtransform/2/go.tar.bz2 [new file with mode: 0644]
test-debtransform/2/grandorgue.dsc [new file with mode: 0644]
test-debtransform/run.sh [new file with mode: 0755]
test/Fedora_11.conf [new file with mode: 0644]
test/Fedora_12.conf [new file with mode: 0644]
test/baselibs.conf [new file with mode: 0644]
test/common [new file with mode: 0644]
test/config [new file with mode: 0644]
test/libdummy1.spec [new file with mode: 0644]
test/testbuild.11.0-i386 [new file with mode: 0755]
test/testbuild.11.0-x86_64 [new file with mode: 0755]
test/testbuild.11.1-i386 [new file with mode: 0755]
test/testbuild.11.2-i386 [new file with mode: 0755]
test/testbuild.8.1-i386 [new file with mode: 0755]
test/testbuild.Fedora11-i386 [new file with mode: 0755]
test/testbuild.Fedora11-x86_64 [new file with mode: 0755]
test/testbuild.Fedora12-i386 [new file with mode: 0755]
test/testbuild.Fedora12-x86_64 [new file with mode: 0755]
test/testbuild.sles10-i386 [new file with mode: 0755]
test/testbuild.sles10-x86_64 [new file with mode: 0755]
test/testbuild.sles9-i386 [new file with mode: 0755]
unrpm [new file with mode: 0755]
vc [new file with mode: 0755]
zvm_functions [new file with mode: 0644]

diff --git a/Build.pm b/Build.pm
new file mode 100644 (file)
index 0000000..5024405
--- /dev/null
+++ b/Build.pm
@@ -0,0 +1,941 @@
+package Build;
+
+use strict;
+use Digest::MD5;
+use Build::Rpm;
+use Data::Dumper;
+
+our $expand_dbg;
+
+our $do_rpm;
+our $do_deb;
+our $do_kiwi;
+our $do_arch;
+
+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_rpm = $do_deb = $do_kiwi = $do_arch = 1 if !$do_rpm && !$do_deb && !$do_kiwi && !$do_arch;
+  if ($do_deb) {
+    require Build::Deb;
+  }
+  if ($do_kiwi) {
+    require Build::Kiwi;
+  }
+  if ($do_arch) {
+    require Build::Arch;
+  }
+}
+
+package Build::Features;
+our $preinstallimage = 1;      # on sale now
+package Build;
+
+my $std_macros = q{
+%define nil
+%define ix86 i386 i486 i586 i686 athlon
+%define arm armv4l armv5l armv6l armv7l armv4b armv5l armv5b armv5el armv5eb armv5tel armv5teb armv6hl armv6el armv6eb armv7el armv7eb armv7hl armv7nhl armv8el
+%define arml armv4l armv5l armv6l armv7l armv5tel armv5el armv6el armv6hl armv7el armv7hl armv7nhl armv8el
+%define armb armv4b armv5b armv5teb armv5eb armv6eb armv7eb
+%define sparc sparc sparcv8 sparcv9 sparcv9v sparc64 sparc64v
+};
+my $extra_macros = '';
+
+sub unify {
+  my %h = map {$_ => 1} @_;
+  return grep(delete($h{$_}), @_);
+}
+
+sub define($)
+{
+  my $def = shift;
+  $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 (\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 = <CONF>;
+    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";
+    }
+  }
+  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'} = '<CI_CNT>.<B_CNT>';
+  $config->{'repotype'} = [];
+  $config->{'patterntype'} = [];
+  $config->{'fileprovides'} = {};
+  $config->{'constraint'} = [];
+  $config->{'expandflags'} = [];
+  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:') {
+      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 packaging system (spec,dsc,arch,kiwi,...)
+      $config->{'type'} = $l[0];
+    } elsif ($l0 eq 'binarytype:') { #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];
+    } elsif ($l0 eq 'cicntstart:') {
+      $config->{'cicntstart'} = $l[0];
+    } elsif ($l0 eq 'releaseprg:') {
+      $config->{'releaseprg'} = $l[0];
+    } 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 !~ /^[#%]/) {
+      warn("unknown keyword in config: $l0\n");
+    }
+  }
+  for my $l (qw{preinstall vminstall required support keep runscripts repotype patterntype}) {
+    $config->{$l} = [ unify(@{$config->{$l}}) ];
+  }
+  for my $l (keys %{$config->{'substitute'}}) {
+    $config->{'substitute_vers'}->{$l} = [ map {/^(.*?)(=)?$/g} unify(@{$config->{'substitute'}->{$l}}) ];
+    $config->{'substitute'}->{$l} = [ unify(@{$config->{'substitute'}->{$l}}) ];
+    s/=$// for @{$config->{'substitute'}->{$l}};
+  }
+  init_helper_hashes($config);
+  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';
+    } else {
+      $config->{'type'} = 'UNDEFINED';
+    }
+  }
+  if (!$config->{'binarytype'}) {
+    $config->{'binarytype'} = 'rpm' if $config->{'type'} eq 'spec' || $config->{'type'} eq 'kiwi';
+    $config->{'binarytype'} = 'deb' if $config->{'type'} eq 'dsc';
+    $config->{'binarytype'} = 'arch' if $config->{'type'} eq 'arch';
+    $config->{'binarytype'} ||= 'UNDEFINED';
+  }
+  # 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);
+      }
+    }
+  }
+  for (@{$config->{'expandflags'} || []}) {
+    if (/^([^:]+):(.*)$/s) {
+      $config->{"expandflags:$1"} = $2;
+    } else {
+      $config->{"expandflags:$_"} = 1;
+    }
+  }
+  return $config;
+}
+
+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;
+}
+
+# Delivers all packages which get used for building
+sub get_build {
+  my ($config, $subpacks, @deps) = @_;
+  my @ndeps = grep {/^-/} @deps;
+  my @extra = (@{$config->{'required'}}, @{$config->{'support'}});
+  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/support
+    my %subpacks = map {$_ => 1} @{$subpacks || []};
+    @extra = grep {!$subpacks{$_}} @extra;
+  }
+  my %ndeps = map {$_ => 1} @ndeps;
+  @deps = grep {!$ndeps{$_}} @deps;
+  push @deps, @{$config->{'preinstall'}};
+  push @deps, @extra;
+  @deps = grep {!$ndeps{"-$_"}} @deps;
+  @deps = do_subst($config, @deps);
+  @deps = grep {!$ndeps{"-$_"}} @deps;
+  @deps = expand($config, @deps, @ndeps);
+  return @deps;
+}
+
+# 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) = @_;
+  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) = @_;
+  return @{$config->{'preinstall'}};
+}
+
+sub get_vminstalls {
+  my ($config) = @_;
+  return @{$config->{'vminstall'}};
+}
+
+sub get_runscripts {
+  my ($config) = @_;
+  return @{$config->{'runscripts'}};
+}
+
+### just for API compability
+sub get_cbpreinstalls { return @{[]}; }
+sub get_cbinstalls { return @{[]}; }
+
+###########################################################################
+
+sub readdeps {
+  my ($config, $pkginfo, @depfiles) = @_;
+
+  my %requires = ();
+  local *F;
+  my %provides;
+  my $dofileprovides = %{$config->{'fileprovides'}};
+  for my $depfile (@depfiles) {
+    if (ref($depfile) eq 'HASH') {
+      for my $rr (keys %$depfile) {
+       $provides{$rr} = $depfile->{$rr}->{'provides'};
+       $requires{$rr} = $depfile->{$rr}->{'requires'};
+      }
+      next;
+    }
+    # XXX: we don't support different architectures per file
+    open(F, "<$depfile") || die("$depfile: $!\n");
+    while(<F>) {
+      my @s = split(' ', $_);
+      my $s = shift @s;
+      my @ss;
+      while (@s) {
+       if (!$dofileprovides && $s[0] =~ /^\//) {
+         shift @s;
+         next;
+       }
+       if ($s[0] =~ /^rpmlib\(/) {
+           splice(@s, 0, 3);
+           next;
+       }
+       push @ss, shift @s;
+       while (@s) {
+         if ($s[0] =~ /^[\(<=>|]/) {
+           $ss[-1] .= " $s[0] $s[1]";
+           $ss[-1] =~ s/ \((.*)\)/ $1/;
+           $ss[-1] =~ s/(<|>){2}/$1/;
+           splice(@s, 0, 2);
+         } else {
+           last;
+         }
+       }
+      }
+      my %ss;
+      @ss = grep {!$ss{$_}++} @ss;
+      if ($s =~ /^(P|R):(.*)\.(.*)-\d+\/\d+\/\d+:$/) {
+       my $pkgid = $2;
+       my $arch = $3;
+       if ($1 eq "R") {
+         $requires{$pkgid} = \@ss;
+         $pkginfo->{$pkgid}->{'requires'} = \@ss if $pkginfo;
+         next;
+       }
+       # handle provides
+       $provides{$pkgid} = \@ss;
+       if ($pkginfo) {
+         # extract ver and rel from self provides
+         my ($v, $r) = map { /\Q$pkgid\E = ([^-]+)(?:-(.+))?$/ } @ss;
+         die("$pkgid: no self provides\n") unless defined($v) && $v ne '';
+         $pkginfo->{$pkgid}->{'name'} = $pkgid;
+         $pkginfo->{$pkgid}->{'version'} = $v;
+         $pkginfo->{$pkgid}->{'release'} = $r if defined($r);
+         $pkginfo->{$pkgid}->{'arch'} = $arch;
+         $pkginfo->{$pkgid}->{'provides'} = \@ss;
+       }
+      }
+    }
+    close F;
+  }
+  $config->{'providesh'} = \%provides;
+  $config->{'requiresh'} = \%requires;
+  makewhatprovidesh($config);
+}
+
+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 = map {@{$whatprovides{$_} || []}} @{$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'};
+}
+
+my %addproviders_fm = (
+  '>'  => 1,
+  '='  => 2,
+  '>=' => 3,
+  '<'  => 4,
+  '<=' => 6,
+);
+
+sub addproviders {
+  my ($config, $r) = @_;
+
+  my @p;
+  my $whatprovides = $config->{'whatprovidesh'};
+  $whatprovides->{$r} = \@p;
+  if ($r =~ /\|/) {
+    for my $or (split(/\s*\|\s*/, $r)) {
+      push @p, @{$whatprovides->{$or} || addproviders($config, $or)};
+    }
+    @p = unify(@p) if @p > 1;
+    return \@p;
+  }
+  return \@p if $r !~ /^(.*?)\s*([<=>]{1,2})\s*(.*?)$/;
+  my $rn = $1;
+  my $rv = $3;
+  my $rf = $addproviders_fm{$2};
+  return \@p unless $rf;
+  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
+       # kiwi: supports only rpm, so we need to hand it like it
+       next if $config->{'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 ($config->{'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;
+}
+
+sub expand {
+  my ($config, @p) = @_;
+
+  my $conflicts = $config->{'conflicth'};
+  my $prefer = $config->{'preferh'};
+  my $ignore = $config->{'ignoreh'};
+
+  my $whatprovides = $config->{'whatprovidesh'};
+  my $requires = $config->{'requiresh'};
+
+  my %xignore = map {substr($_, 1) => 1} grep {/^-/} @p;
+  @p = grep {!/^-/} @p;
+
+  my %p;               # expanded packages
+  my %aconflicts;      # packages we are conflicting with
+
+  # add direct dependency packages. this is different from below,
+  # because we add packages even if to dep is already provided and
+  # we break ambiguities if the name is an exact match.
+  for my $p (splice @p) {
+    my @q = @{$whatprovides->{$p} || addproviders($config, $p)};
+    if (@q > 1) {
+      my $pn = $p;
+      $pn =~ s/ .*//;
+      @q = grep {$_ eq $pn} @q;
+    }
+    if (@q != 1) {
+      push @p, $p;
+      next;
+    }
+    print "added $q[0] because of $p (direct dep)\n" if $expand_dbg;
+    push @p, $q[0];
+    $p{$q[0]} = 1;
+    $aconflicts{$_} = 1 for @{$conflicts->{$q[0]} || []};
+  }
+
+  my @pamb = ();
+  my $doamb = 0;
+  while (@p) {
+    my @error = ();
+    my @rerror = ();
+    for my $p (splice @p) {
+      for my $r (@{$requires->{$p} || [$p]}) {
+       my $ri = (split(/[ <=>]/, $r, 2))[0];
+       next if $ignore->{"$p:$ri"} || $xignore{"$p:$ri"};
+       next if $ignore->{$ri} || $xignore{$ri};
+       my @q = @{$whatprovides->{$r} || addproviders($config, $r)};
+       next if grep {$p{$_}} @q;
+       next if grep {$xignore{$_}} @q;
+       next if grep {$ignore->{"$p:$_"} || $xignore{"$p:$_"}} @q;
+       @q = grep {!$aconflicts{$_}} @q;
+       if (!@q) {
+         if ($r eq $p) {
+           push @rerror, "nothing provides $r";
+         } else {
+           next if $r =~ /^\//;
+           push @rerror, "nothing provides $r needed by $p";
+         }
+         next;
+       }
+       if (@q > 1 && !$doamb) {
+         push @pamb, $p unless @pamb && $pamb[-1] eq $p;
+         print "undecided about $p:$r: @q\n" if $expand_dbg;
+         next;
+       }
+       if (@q > 1) {
+         my @pq = grep {!$prefer->{"-$_"} && !$prefer->{"-$p:$_"}} @q;
+         @q = @pq if @pq;
+         @pq = grep {$prefer->{$_} || $prefer->{"$p:$_"}} @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) {
+         if ($r ne $p) {
+           push @error, "have choice for $r needed by $p: @q";
+         } else {
+           push @error, "have choice for $r: @q";
+         }
+         push @pamb, $p unless @pamb && $pamb[-1] eq $p;
+         next;
+       }
+       push @p, $q[0];
+       print "added $q[0] because of $p:$r\n" if $expand_dbg;
+       $p{$q[0]} = 1;
+       $aconflicts{$_} = 1 for @{$conflicts->{$q[0]} || []};
+       @error = ();
+       $doamb = 0;
+      }
+    }
+    return undef, @rerror if @rerror;
+    next if @p;                # still work to do
+
+    # only ambig stuff left
+    if (@pamb && !$doamb) {
+      @p = @pamb;
+      @pamb = ();
+      $doamb = 1;
+      print "now doing undecided dependencies\n" if $expand_dbg;
+      next;
+    }
+    return undef, @error if @error;
+  }
+  return 1, (sort keys %p);
+}
+
+sub order {
+  my ($config, @p) = @_;
+
+  my $requires = $config->{'requiresh'};
+  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 %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 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 ];
+  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 {
+  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::Arch::parse($cf, $fn, @args) if $do_arch && $fn =~ /(^|\/|-)PKGBUILD$/;
+  return parse_preinstallimage($cf, $fn, @args) if $fn =~ /(^|\/|-)_preinstallimage$/;
+  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 =~ /\.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)?$/;
+  return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.arch$/;
+  return undef;
+}
+
+sub queryhdrmd5 {
+  my ($binname) = @_;
+  return Build::Rpm::queryhdrmd5(@_) if $do_rpm && $binname =~ /\.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)?$/;
+  return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.arch$/;
+  return undef;
+}
+
+1;
diff --git a/Build/Arch.pm b/Build/Arch.pm
new file mode 100644 (file)
index 0000000..8e561c3
--- /dev/null
@@ -0,0 +1,222 @@
+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 <mad.f3ka@gmail.com>
+
+# parse a PKGBUILD file
+
+sub quote {
+  my ($str, $q, $vars) = @_;
+  if ($q ne "'" && $str =~ /\$/) {
+    $str =~ s/\$([a-zA-Z0-9_]+|\{([^\}]+)\})/$vars->{$2 || $1} ? join(' ', @{$vars->{$2 || $1}}) : "\$$1"/ge;
+  }
+  $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;
+  }
+  if ($str =~ /\$/) {
+    $str =~ s/\$([a-zA-Z0-9_]+|\{([^\}]+)\})/$vars->{$2 || $1} ? join(' ', @{$vars->{$2 || $1}}) : "\$$1"/ge;
+  }
+  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;
+  while (<PKG>) {
+    chomp;
+    next if /^\s*$/;
+    next if /^\s*#/;
+    last unless /^([a-zA-Z0-9_]*)=(\(?)(.*?)$/;
+    my $var = $1;
+    my $val = $3;
+    if ($2) {
+      while ($val !~ s/\)\s*$//s) {
+       my $nextline = <PKG>;
+       last unless defined $nextline;
+       chomp $nextline;
+       $val .= ' ' . $nextline;
+      }
+    }
+    $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'} = $vars{'makedepends'} || [];
+  push @{$ret->{'deps'}}, @{$vars{'depends'} || []};
+  $ret->{'source'} = $vars{'source'} if $vars{'source'};
+  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 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 queryvars {
+  my ($handle) = @_;
+
+  if (ref($handle)) {
+    die("arch pkg query not implemented for file handles\n");
+  }
+  if ($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 =~ /\.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'}) {
+    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'};
+  }
+  # 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'};
+  return $ret;
+}
+
+sub queryhdrmd5 {
+  my ($handle) = @_;
+  if (ref($handle)) {
+    die("arch pkg query not implemented for file handles\n");
+  }
+  if ($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;
+    }
+  }
+  return $d;
+}
+
+1;
diff --git a/Build/Deb.pm b/Build/Deb.pm
new file mode 100644 (file)
index 0000000..3878fd4
--- /dev/null
@@ -0,0 +1,343 @@
+package Build::Deb;
+
+use strict;
+use Digest::MD5;
+
+my $have_zlib;
+eval {
+  require Compress::Zlib;
+  $have_zlib = 1;
+};
+
+sub parse {
+  my ($bconf, $fn) = @_;
+  my $ret;
+  my @control;
+
+  # get arch and os from macros
+  my ($arch, $os);
+  for (@{$bconf->{'macros'} || []}) {
+    $arch = $1 if /^%define _target_cpu (\S+)/;
+    $os = $1 if /^%define _target_os (\S+)/;
+  }
+  # map to debian names
+  $os = 'linux' if !defined($os);
+  $arch = 'all' if !defined($arch) || $arch eq 'noarch';
+  $arch = 'i386' if $arch =~ /^i[456]86$/;
+  $arch = 'powerpc' if $arch eq 'ppc';
+  $arch = 'amd64' if $arch eq 'x86_64';
+  $arch = 'armel' if $arch =~ /^armv[4567]l$/;
+  $arch = 'armhf' if $arch eq 'armv7hl';
+
+  if (ref($fn) eq 'ARRAY') {
+    @control = @$fn;
+  } else {
+    local *F;
+    if (!open(F, '<', $fn)) {
+      $ret->{'error'} = "$fn: $!";
+      return $ret;
+    }
+    @control = <F>;
+    close F;
+    chomp @control;
+  }
+  splice(@control, 0, 3) if @control > 3 && $control[0] =~ /^-----BEGIN/;
+  my $name;
+  my $version;
+  my @deps;
+  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 'SOURCE') {
+      $name = $data;
+    } elsif ($tag eq 'BUILD-DEPENDS' || $tag eq 'BUILD-CONFLICTS' || $tag eq 'BUILD-IGNORE' || $tag eq 'BUILD-DEPENDS-INDEP') {
+      my @d = split(/,\s*/, $data);
+      for my $d (@d) {
+        my @alts = split('\s*\|\s*', $d);
+        my @needed;
+        for my $c (@alts) {
+          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") {
+                  $bad = 1;
+                  last;
+                }
+              } elsif ($q eq $arch || $q eq 'any' || $q eq "$os-$arch" || $q eq "$os-any") {
+                $bad = 0;
+              }
+            }
+            push @needed, $c unless $bad;
+          } else {
+            push @needed, $c;
+          }
+        }
+        next unless @needed;
+        $d = join(' | ', @needed);
+       $d =~ s/ \(([^\)]*)\)/ $1/g;
+       $d =~ s/>>/>/g;
+       $d =~ s/<</</g;
+       if ($tag eq 'BUILD-DEPENDS' || $tag eq 'BUILD-DEPENDS-INDEP') {
+         push @deps, $d;
+       } else {
+         push @deps, "-$d";
+       }
+      }
+    }
+  }
+  $ret->{'name'} = $name;
+  $ret->{'version'} = $version;
+  $ret->{'deps'} = \@deps;
+  return $ret;
+}
+
+sub ungzip {
+  my $data = shift;
+  local (*TMP, *TMP2);
+  open(TMP, "+>", undef) or die("could not open tmpfile\n");
+  syswrite TMP, $data;
+  sysseek(TMP, 0, 0);
+  my $pid = open(TMP2, "-|");
+  die("fork: $!\n") unless defined $pid;
+  if (!$pid) {
+    open(STDIN, "<&TMP");
+    exec 'gunzip';
+    die("gunzip: $!\n");
+  }
+  close(TMP);
+  $data = '';
+  1 while sysread(TMP2, $data, 1024, length($data)) > 0;
+  close(TMP2) || die("gunzip error");
+  return $data;
+}
+
+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\n");
+    close DEBF unless ref $fn;
+    return ();
+  }
+  if (substr($data, 0, 8+16) ne "!<arch>\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);
+  if (substr($data, 0, 16) ne 'control.tar.gz  ') {
+    warn("$fn: control.tar.gz 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
+  if ($have_zlib) {
+    $data = Compress::Zlib::memGunzip($data);
+  } else {
+    $data = ungzip($data);
+  }
+  if (!$data) {
+    warn("$fn: corrupt control.tar.gz 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.gz file\n");
+      return ();
+    }
+    if ($n eq './control') {
+      $control = substr($data, 512, $len);
+      last;
+    }
+    $data = substr($data, $blen);
+  }
+  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;
+  }
+  $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'} || '');
+  push @provides, "$name = $res{'VERSION'}";
+  my @depends = split(',\s*', $res{'DEPENDS'} || '');
+  my @predepends = split(',\s*', $res{'PRE-DEPENDS'} || '');
+  push @depends, @predepends;
+  s/ \(([^\)]*)\)/ $1/g for @provides;
+  s/ \(([^\)]*)\)/ $1/g for @depends;
+  s/>>/>/g for @provides;
+  s/<</</g for @provides;
+  s/>>/>/g for @depends;
+  s/<</</g for @depends;
+  my $data = {
+    name => $name,
+    hdrmd5 => $res{'CONTROL_MD5'},
+    provides => \@provides,
+    requires => \@depends,
+  };
+  $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'};
+  }
+  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\n");
+    close F;
+    return undef;
+  }
+  if (substr($data, 0, 8+16) ne "!<arch>\ndebian-binary   ") {
+    warn("$bin: not a debian package\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);
+  if (substr($data, 0, 16) ne 'control.tar.gz  ') {
+    warn("$bin: control.tar.gz 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);
+}
+
+1;
diff --git a/Build/Kiwi.pm b/Build/Kiwi.pm
new file mode 100644 (file)
index 0000000..f976029
--- /dev/null
@@ -0,0 +1,355 @@
+package Build::Kiwi;
+
+use strict;
+
+our $bootcallback;
+
+# worst xml parser ever, just good enough to parse those kiwi files...
+# can't use standard XML parsers, unfortunatelly, as the build script
+# must not rely on external libraries
+#
+sub parsexml {
+  my ($xml) = @_;
+
+  my @nodestack;
+  my $node = {};
+  my $c = '';
+  $xml =~ s/^\s*\<\?.*?\?\>//s;
+  while ($xml =~ /^(.*?)\</s) {
+    if ($1 ne '') {
+      $c .= $1;
+      $xml = substr($xml, length($1));
+    }
+    if (substr($xml, 0, 4) eq '<!--') {
+      $xml =~ s/.*?-->//s;
+      next;
+    }
+    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/&lt;/</g;
+      s/&gt;/>/g;
+      s/&amp;/&/g;
+      s/&apos;/\'/g;
+      s/&quot;/\"/g;
+    }
+    if ($mode == 0 || $mode == 2) {
+      my $n = {};
+      push @{$node->{$tag}}, $n;
+      for (sort keys %atts) {
+       $n->{$_} = $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 = $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 unify {
+  my %h = map {$_ => 1} @_;
+  return grep(delete($h{$_}), @_);
+}
+
+sub findFallBackArchs {
+  my ($fallbackArchXML, $arch) = @_;
+  my @fa;
+
+  for my $a (@{$fallbackArchXML->{'arch'}||[]}) {
+    if ( $a->{'id'} eq $arch && $a->{'fallback'} ) {
+      @fa = unify( $a->{'fallback'}, findFallBackArchs($fallbackArchXML, $a->{'fallback'}));
+    }
+  }
+
+  return @fa
+}
+
+# sles10 perl does not have the version.pm
+# implement own hack
+sub versionstring {
+  my ($str) = @_;
+  my @xstr = split (/\./,$str);
+  my $result = 0;
+  while (my $digit = shift(@xstr)) {
+    $result = $result * 100;
+    $result += $digit;
+  }
+  return $result;
+}
+
+sub kiwiparse {
+  my ($xml, $arch, $count) = @_;
+  $count ||= 0;
+  die("kiwi config inclusion depth limit reached\n") if $count++ > 10;
+
+  my $ret = {};
+  my @types;
+  my @repos;
+  my @bootrepos;
+  my @packages;
+  my @extrasources;
+  my @requiredarch;
+  my $schemaversion = 0;
+  my $schemaversion56 = versionstring("5.6");
+  my $kiwi = parsexml($xml);
+  die("not a kiwi config\n") unless $kiwi && $kiwi->{'image'};
+  $kiwi = $kiwi->{'image'}->[0];
+  $schemaversion = versionstring($kiwi->{'schemaversion'}) if $kiwi->{'schemaversion'}; 
+  $ret->{'filename'} = $kiwi->{'name'} if $kiwi->{'name'};
+  my $description = (($kiwi->{'description'} || [])->[0]) || {};
+  if ($description->{'specification'}) {
+    $ret->{'name'} = $description->{'specification'}->[0]->{'_content'};
+  }
+  # take default version setting
+  my $preferences = ($kiwi->{'preferences'} || []);
+  if ($preferences->[0]->{'version'}) {
+    $ret->{'version'} = $preferences->[0]->{'version'}->[0]->{'_content'};
+  }
+  for my $pref (@{$preferences || []}) {
+    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'};
+      }
+      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, $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";
+        }
+      }
+    }
+  }
+
+  my $instsource = ($kiwi->{'instsource'} || [])->[0];
+  if ($instsource) {
+    for my $repository(sort {$a->{priority} <=> $b->{priority}} @{$instsource->{'instrepo'} || []}) {
+      my $kiwisource = ($repository->{'source'} || [])->[0];
+      if ($kiwisource->{'path'} eq 'obsrepositories:/') {
+         # special case, OBS will expand it.
+         push @repos, '_obsrepositories';
+         next;
+      }
+      die("bad instsource path: $kiwisource->{'path'}\n") unless $kiwisource->{'path'} =~ /^obs:\/\/\/?([^\/]+)\/([^\/]+)\/?$/;
+      push @repos, "$1/$2";
+    }
+    $ret->{'sourcemedium'} = -1;
+    $ret->{'debugmedium'} = -1;
+    if ($instsource->{'productoptions'}) {
+      my $productoptions = $instsource->{'productoptions'}->[0] || {};
+      for my $po (@{$productoptions->{'productvar'} || []}) {
+       $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';
+      }
+    }
+    if ($instsource->{'architectures'}) {
+      my $a = $instsource->{'architectures'}->[0] || {};
+      for my $ra (@{$a->{'requiredarch'} || []}) {
+       push @requiredarch, $ra->{'ref'} if defined $ra->{'ref'};
+      }
+    }
+  }
+
+  # set default values for priority
+  for (@{$kiwi->{'repository'} || []}) {
+    next if defined $_->{'priority'};
+    if ($preferences->[0]->{'packagemanager'}->[0]->{'_content'} eq 'smart') {
+       $_->{'priority'} = 0;
+    } else {
+       $_->{'priority'} = 99;
+    }
+  }
+  my @repositories = sort {$a->{'priority'} <=> $b->{'priority'}} @{$kiwi->{'repository'} || []};
+  if ($preferences->[0]->{'packagemanager'}->[0]->{'_content'} eq 'smart') {
+    @repositories = reverse @repositories;
+  }
+  for my $repository (@repositories) {
+    my $kiwisource = ($repository->{'source'} || [])->[0];
+    next if $kiwisource->{'path'} eq '/var/lib/empty'; # grr
+    if ($kiwisource->{'path'} eq 'obsrepositories:/') {
+      push @repos, '_obsrepositories';
+      next;
+    };
+    die("bad path using not obs:/ URL: $kiwisource->{'path'}\n") unless $kiwisource->{'path'} =~ /^obs:\/\/\/?([^\/]+)\/([^\/]+)\/?$/;
+    push @repos, "$1/$2";
+  }
+
+  # Find packages and possible additional required architectures
+  my @additionalarchs;
+  my @pkgs;
+  for my $packages (@{$kiwi->{'packages'}}) {
+    next if $packages->{'type'} and $packages->{'type'} ne 'image' and $packages->{'type'} ne 'bootstrap';
+    push @pkgs, @{$packages->{'package'}} if $packages->{'package'};
+  }
+  if ($instsource) {
+    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=undef;
+      if (@requiredarch) {
+        # this is a product
+        foreach my $ma(@requiredarch) {
+          foreach my $pa(split(",", $package->{'arch'})) {
+            $valid = 1 if $ma eq $pa;
+          }
+        }
+      } else {
+        # live appliance
+        my $ma = $arch;
+        $ma =~ s/i[456]86/i386/;
+        foreach my $pa(split(",", $package->{'arch'})) {
+          $pa =~ s/i[456]86/i386/;
+          $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;
+    }
+
+    # 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;
+  
+  my @fallbackarchs;
+  for my $arch (@requiredarch) {
+    push @fallbackarchs, findFallBackArchs($instsource->{'architectures'}[0], $arch) if $instsource->{'architectures'}[0];
+  }
+  @requiredarch = unify(@requiredarch, @fallbackarchs);
+
+  if (!$instsource) {
+    my $packman = $preferences->[0]->{'packagemanager'}->[0]->{'_content'};
+    push @packages, "kiwi-packagemanager:$packman";
+  } else {
+    push @packages, "kiwi-packagemanager:instsource";
+  }
+
+  $ret->{'exclarch'} = [ unify(@requiredarch) ] if @requiredarch;
+  $ret->{'deps'} = [ unify(@packages) ];
+  $ret->{'path'} = [ unify(@repos, @bootrepos) ];
+  $ret->{'imagetype'} = [ unify(@types) ];
+  $ret->{'extrasource'} = \@extrasources if @extrasources;
+  for (@{$ret->{'path'}}) {
+    my @s = split('/', $_, 2);
+    $_ = {'project' => $s[0], 'repository' => $s[1]};
+  }
+  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'} || ''));
+  };
+  if ($@) {
+    my $err = $@;
+    $err =~ s/^\n$//s;
+    return {'error' => $err};
+  }
+  return $d;
+}
+
+sub show {
+  my ($fn, $field, $arch) = @ARGV;
+  my $cf = {'arch' => $arch};
+  my $d = parse($cf, $fn);
+  die("$d->{'error'}\n") if $d->{'error'};
+  my $x = $d->{$field};
+  $x = [ $x ] unless ref $x;
+  print "@$x\n";
+}
+
+# not implemented yet.
+sub queryiso {
+  my ($handle, %opts) = @_;
+  return {};
+}
+
+
+sub queryhdrmd5 {
+  my ($bin) = @_;
+  die("Build::Kiwi::queryhdrmd5 unimplemented.\n");
+}
+
+1;
diff --git a/Build/Rpm.pm b/Build/Rpm.pm
new file mode 100644 (file)
index 0000000..e6a1815
--- /dev/null
@@ -0,0 +1,953 @@
+package Build::Rpm;
+
+our $unfilteredprereqs = 0;
+
+use strict;
+
+use Digest::MD5;
+
+sub expr {
+  my $expr = shift;
+  my $lev = shift;
+
+  $lev ||= 0;
+  my ($v, $v2);
+  $expr =~ s/^\s+//;
+  my $t = substr($expr, 0, 1);
+  if ($t eq '(') {
+    ($v, $expr) = expr(substr($expr, 1), 0);
+    return undef unless defined $v;
+    return undef unless $expr =~ s/^\)//;
+  } elsif ($t eq '!') {
+    ($v, $expr) = expr(substr($expr, 1), 0);
+    return undef unless defined $v;
+    $v = 0 if $v && $v eq '\"\"';
+    $v =~ s/^0+/0/ if $v;
+    $v = !$v;
+  } elsif ($t eq '-') {
+    ($v, $expr) = expr(substr($expr, 1), 0);
+    return undef unless defined $v;
+    $v = -$v;
+  } elsif ($expr =~ /^([0-9]+)(.*?)$/) {
+    $v = $1;
+    $expr = $2;
+  } elsif ($expr =~ /^([a-zA-Z_0-9]+)(.*)$/) {
+    $v = "\"$1\"";
+    $expr = $2;
+  } elsif ($expr =~ /^(\".*?\")(.*)$/) {
+    $v = $1;
+    $expr = $2;
+  } else {
+    return;
+  }
+  while (1) {
+    $expr =~ s/^\s+//;
+    if ($expr =~ /^&&/) {
+      return ($v, $expr) if $lev > 1;
+      ($v2, $expr) = expr(substr($expr, 2), 1);
+      return undef unless defined $v2;
+      $v = 0 if $v && $v eq '\"\"';
+      $v =~ s/^0+/0/;
+      $v2 = 0 if $v2 && $v2 eq '\"\"';
+      $v2 =~ s/^0+/0/;
+      $v &&= $v2;
+    } elsif ($expr =~ /^\|\|/) {
+      return ($v, $expr) if $lev > 1;
+      ($v2, $expr) = expr(substr($expr, 2), 1);
+      return undef unless defined $v2;
+      $v = 0 if $v && $v eq '\"\"';
+      $v =~ s/^0+/0/;
+      $v2 = 0 if $v2 && $v2 eq '\"\"';
+      $v2 =~ s/^0+/0/;
+      $v ||= $v2;
+    } elsif ($expr =~ /^>=/) {
+      return ($v, $expr) if $lev > 2;
+      ($v2, $expr) = expr(substr($expr, 2), 2);
+      return undef unless defined $v2;
+      $v = (($v =~ /^\"/) ? $v ge $v2 : $v >= $v2) ? 1 : 0;
+    } elsif ($expr =~ /^>/) {
+      return ($v, $expr) if $lev > 2;
+      ($v2, $expr) = expr(substr($expr, 1), 2);
+      return undef unless defined $v2;
+      $v = (($v =~ /^\"/) ? $v gt $v2 : $v > $v2) ? 1 : 0;
+    } elsif ($expr =~ /^<=/) {
+      return ($v, $expr) if $lev > 2;
+      ($v2, $expr) = expr(substr($expr, 2), 2);
+      return undef unless defined $v2;
+      $v = (($v =~ /^\"/) ? $v le $v2 : $v <= $v2) ? 1 : 0;
+    } elsif ($expr =~ /^</) {
+      return ($v, $expr) if $lev > 2;
+      ($v2, $expr) = expr(substr($expr, 1), 2);
+      return undef unless defined $v2;
+      $v = (($v =~ /^\"/) ? $v lt $v2 : $v < $v2) ? 1 : 0;
+    } elsif ($expr =~ /^==/) {
+      return ($v, $expr) if $lev > 2;
+      ($v2, $expr) = expr(substr($expr, 2), 2);
+      return undef unless defined $v2;
+      $v = (($v =~ /^\"/) ? $v eq $v2 : $v == $v2) ? 1 : 0;
+    } elsif ($expr =~ /^!=/) {
+      return ($v, $expr) if $lev > 2;
+      ($v2, $expr) = expr(substr($expr, 2), 2);
+      return undef unless defined $v2;
+      $v = (($v =~ /^\"/) ? $v ne $v2 : $v != $v2) ? 1 : 0;
+    } elsif ($expr =~ /^\+/) {
+      return ($v, $expr) if $lev > 3;
+      ($v2, $expr) = expr(substr($expr, 1), 3);
+      return undef unless defined $v2;
+      $v += $v2;
+    } elsif ($expr =~ /^-/) {
+      return ($v, $expr) if $lev > 3;
+      ($v2, $expr) = expr(substr($expr, 1), 3);
+      return undef unless defined $v2;
+      $v -= $v2;
+    } elsif ($expr =~ /^\*/) {
+      ($v2, $expr) = expr(substr($expr, 1), 4);
+      return undef unless defined $v2;
+      $v *= $v2;
+    } elsif ($expr =~ /^\//) {
+      ($v2, $expr) = expr(substr($expr, 1), 4);
+      return undef unless defined $v2 && 0 + $v2;
+      $v /= $v2;
+    } 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 = (split(/(:?)/, $getopt, -1), undef);
+  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;
+}
+
+# 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 $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;
+  }
+  my @macros = @{$config->{'macros'}};
+  my $skip = 0;
+  my $main_preamble = 1;
+  my $preamble = 1;
+  my $inspec = 0;
+  my $hasif = 0;
+  my $lineno = 0;
+  while (1) {
+    my $line;
+    if (@macros) {
+      $line = shift @macros;
+      $hasif = 0 unless @macros;
+    } elsif ($specdata) {
+      $inspec = 1;
+      last unless @$specdata;
+      $line = shift @$specdata;
+      ++$lineno;
+      if (ref $line) {
+       $line = $line->[0]; # verbatim line
+       push @$xspec, $line if $xspec;
+       $xspec->[-1] = [ $line, undef ] if $xspec && $skip;
+       next;
+      }
+    } else {
+      $inspec = 1;
+      $line = <SPEC>;
+      last unless defined $line;
+      chomp $line;
+      ++$lineno;
+    }
+    push @$xspec, $line if $inspec && $xspec;
+    if ($line =~ /^#\s*neededforbuild\s*(\S.*)$/) {
+      if (defined $hasnfb) {
+       $xspec->[-1] = [ $xspec->[-1], undef ] if $inspec && $xspec;
+       next;
+      }
+      $hasnfb = $1;
+      $nfbline = \$xspec->[-1] if $inspec && $xspec;
+      next;
+    }
+    if ($line =~ /^\s*#/) {
+      next unless $line =~ /^#!BuildIgnore/;
+    }
+    my $expandedline = '';
+    if (!$skip && ($line =~ /%/)) {
+      my $tries = 0;
+      my @expandstack;
+      my $optmacros = {};
+      # newer perls: \{((?:(?>[^{}]+)|(?2))*)\}
+reexpand:
+      while ($line =~ /^(.*?)%(\{([^\}]+)\}|[\?\!]*[0-9a-zA-Z_]+|%|\*\*?|#|\()(.*?)$/) {
+       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;
+       my $macname = defined($3) ? $3 : $2;
+       my $macorig = $2;
+       my $macdata;
+       my $macalt;
+       if (defined($3)) {
+         if ($macname =~ /{/) {        # {
+           while (($macname =~ y/{/{/) > ($macname =~ y/}/}/)) {
+             last unless $line =~ /^([^}]*)}(.*)$/;
+             $macname .= "}$1";
+             $macorig .= "$1}";
+             $line = $2;
+           }
+         }
+         $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 '%') {
+         $expandedline .= '%';
+         next;
+       } elsif ($macname eq '(') {
+         print STDERR "Warning: spec file parser",($lineno?" line $lineno":''),": can't expand %(...)\n" if $config->{'warnings'};
+         $line = 'MACRO';
+         last;
+       } elsif ($macname eq 'define' || $macname eq 'global') {
+         if ($line =~ /^\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;
+         }
+         $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 (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 = $2;
+           }
+           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;
+         $line = "$macalt$line";
+       } elsif ($mactest) {
+         $macalt = '' if !defined($macalt) || $mactest == 1;
+         $line = "$macalt$line";
+       } else {
+         $expandedline .= "%$macorig" unless $macname =~ /^-/;
+       }
+      }
+      $line = $expandedline . $line;
+      if (@expandstack) {
+       my $m = pop(@expandstack);
+       if ($m) {
+         $optmacros = adaptmacros(\%macros, $optmacros, $m);
+         $expandstack[-2] .= $line;
+         $line = '';
+       }
+       $line = $line . pop(@expandstack);
+       $expandedline = pop(@expandstack);
+       goto reexpand;
+      }
+    }
+    if ($line =~ /^\s*%else\b/) {
+      $skip = 1 - $skip if $skip < 2;
+      next;
+    }
+    if ($line =~ /^\s*%endif\b/) {
+      $skip-- if $skip;
+      next;
+    }
+    $skip++ if $skip && $line =~ /^\s*%if/;
+
+    if ($skip) {
+      $xspec->[-1] = [ $xspec->[-1], undef ] if $xspec;
+      $ifdeps = 1 if $line =~ /^(BuildRequires|BuildPrereq|BuildConflicts|\#\!BuildIgnore)\s*:\s*(\S.*)$/i;
+      next;
+    }
+
+    if ($line =~ /^\s*%ifarch(.*)$/) {
+      my $arch = $macros{'_target_cpu'} || 'unknown';
+      my @archs = grep {$_ eq $arch} split(/\s+/, $1);
+      $skip = 1 if !@archs;
+      $hasif = 1;
+      next;
+    }
+    if ($line =~ /^\s*%ifnarch(.*)$/) {
+      my $arch = $macros{'_target_cpu'} || 'unknown';
+      my @archs = grep {$_ eq $arch} split(/\s+/, $1);
+      $skip = 1 if @archs;
+      $hasif = 1;
+      next;
+    }
+    if ($line =~ /^\s*%ifos(.*)$/) {
+      my $os = $macros{'_target_os'} || 'unknown';
+      my @oss = grep {$_ eq $os} split(/\s+/, $1);
+      $skip = 1 if !@oss;
+      $hasif = 1;
+      next;
+    }
+    if ($line =~ /^\s*%ifnos(.*)$/) {
+      my $os = $macros{'_target_os'} || 'unknown';
+      my @oss = grep {$_ eq $os} split(/\s+/, $1);
+      $skip = 1 if @oss;
+      $hasif = 1;
+      next;
+    }
+    if ($line =~ /^\s*%if(.*)$/) {
+      my ($v, $r) = expr($1);
+      $v = 0 if $v && $v eq '\"\"';
+      $v =~ s/^0+/0/ if $v;
+      $skip = 1 unless $v;
+      $hasif = 1;
+      next;
+    }
+    if ($main_preamble) {
+      if ($line =~ /^(Name|Version|Disttag|Release)\s*:\s*(\S+)/i) {
+       $ret->{lc $1} = $2;
+       $macros{lc $1} = $2;
+      } elsif ($line =~ /^(Source\d*|Patch\d*|Url)\s*:\s*(\S+)/i) {
+       $ret->{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 ($line =~ /^(?:Requires\(pre\)|Requires\(post\)|PreReq)\s*:\s*(\S.*)$/i) {
+      my $deps = $1;
+      my @deps = $deps =~ /([^\s\[,]+)(\s+[<=>]+\s+[^\s\[,]+)?(\s+\[[^\]]+\])?[\s,]*/g;
+      while (@deps) {
+       my ($pack, $vers, $qual) = splice(@deps, 0, 3);
+       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)\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 = $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;
+      if (lc($what) ne 'buildrequires' && lc($what) ne 'buildprereq') {
+       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 $xspec;
+         next;
+       }
+      }
+      push @packdeps, @ndeps;
+      next unless $xspec && $inspec;
+      if ($replace) {
+       my @cndeps = grep {!/^-/} @ndeps;
+       if (@cndeps) {
+         $xspec->[-1] = [ $xspec->[-1], "$what:  ".join(' ', @cndeps) ];
+       } else {
+         $xspec->[-1] = [ $xspec->[-1], ''];
+       }
+      }
+      next;
+    }
+
+    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 ($xspec && @$xspec && $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,     # /*!< internal Header+Payload size in bytes. */
+  "SIGTAG_MD5"     => 1004,     # /*!< internal MD5 signature. */
+  "NAME"           => 1000,
+  "VERSION"        => 1001,
+  "RELEASE"        => 1002,
+  "EPOCH"          => 1003,
+  "SUMMARY"        => 1004,
+  "DESCRIPTION"    => 1005,
+  "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,
+);
+
+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 = 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;
+  }
+}
+
+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 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'};
+  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'} || []} ];
+  }
+
+  # 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];
+  }
+  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);
+}
+
+1;
diff --git a/Build/Susetags.pm b/Build/Susetags.pm
new file mode 100644 (file)
index 0000000..cd0a103
--- /dev/null
@@ -0,0 +1,66 @@
+package Build::Susetags;
+
+use strict;
+use warnings;
+use Data::Dumper;
+
+sub addpkg {
+  my ($pkgs, $cur, $order, $cb, $cbdata, @arches) = @_;
+  if (defined($cur) && (!@arches || grep { /$cur->{'arch'}/ } @arches)) {
+    if(!$cb || &$cb($cur, $cbdata)) {
+      my $k = "$cur->{'name'}-$cur->{'version'}-$cur->{'release'}-$cur->{'arch'}";
+      $pkgs->{$k} = $cur;
+      # keep order (or should we use Tie::IxHash?)
+      push @{$order}, $k if defined $order;
+    }
+  }
+}
+
+sub parse {
+  # if @arches is empty take all arches
+  my ($file, $tmap, $order, @arches) = @_;
+  my $cb;
+  my $cbdata;
+  if (ref $order eq 'HASH') {
+    my $d = $order;
+    $order = undef;
+    $cb = $d->{'cb'} if (exists $d->{'cb'});
+    $cbdata = $d->{'data'} if (exists $d->{'data'});
+  }
+
+  # if @arches is empty take all arches
+  my @needed = keys %$tmap;
+  my $r = '(' . join('|', @needed) . '|Pkg):\s*(.*)';
+
+  if (!open(F, '<', $file)) {
+    if (!open(F, '-|', "gzip", "-dc", $file.'.gz')) {
+      die "$file: $!";
+    }
+  }
+
+  my $cur;
+  my $pkgs = {};
+  while (<F>) {
+    chomp;
+    next unless $_ =~ /([\+=])$r/;
+    my ($multi, $tag, $data) = ($1, $2, $3);
+    if ($multi eq '+') {
+      while (<F>) {
+       chomp;
+       last if $_ =~ /-$tag/;
+       push @{$cur->{$tmap->{$tag}}}, $_;
+      }
+    } elsif ($tag eq 'Pkg') {
+      addpkg($pkgs, $cur, $order, $cb, $cbdata, @arches);
+      $cur = {};
+      ($cur->{'name'}, $cur->{'version'}, $cur->{'release'}, $cur->{'arch'}) = split(' ', $data);
+    } else {
+      $cur->{$tmap->{$tag}} = $data;
+    }
+  }
+  addpkg($pkgs, $cur, $order, $cb, $cbdata, @arches);
+  close(F);
+  return $pkgs;
+}
+
+1;
diff --git a/Build/Zypp.pm b/Build/Zypp.pm
new file mode 100644 (file)
index 0000000..354adca
--- /dev/null
@@ -0,0 +1,33 @@
+package Build::Zypp;
+
+use strict;
+
+our $root = '';
+
+sub parsecfg($)
+{
+  my $file = shift;
+  my $repocfg = "$root/etc/zypp/repos.d/$file.repo";
+  local *REPO;
+  open(REPO, '<', $repocfg) or return undef;
+  my $name;
+  my $repo = {};
+  while (<REPO>) {
+    chomp;
+    if (/^\[(.+)\]/) {
+      $name = $1;
+    } else {
+      my ($key, $value) = split(/=/,$_,2);
+      $repo->{$key} = $value if defined $key;
+    }
+  }
+  close(REPO);
+  return undef unless $name;
+  $repo->{'description'} = $repo->{'name'} if exists $repo->{'name'};
+  $repo->{'name'} = $name;
+  return $repo;
+}
+
+1;
+
+# vim: sw=2
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..5bd4bf9
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,103 @@
+VERSION=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 detect_architecture.sh)
+
+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:
+
+install:
+       install -m755 -d \
+           $(DESTDIR)$(pkglibdir)/configs \
+           $(DESTDIR)$(pkglibdir)/Build \
+           $(DESTDIR)$(pkglibdir)/emulator \
+           $(DESTDIR)$(bindir) \
+           $(DESTDIR)$(man1dir)
+       install -m755 \
+           build \
+           build_kiwi.sh \
+           vc \
+           createrpmdeps \
+           order \
+           expanddeps \
+           computeblocklists \
+           extractbuild \
+           getbinaryid \
+           killchroot \
+           getmacros \
+           getoptflags \
+           gettype \
+           getchangetarget \
+           common_functions \
+           init_buildsystem \
+           initscript_qemu_vm \
+           substitutedeps \
+           debtransform \
+           debtransformbz2 \
+           debtransformzip \
+           mkbaselibs \
+           mkdrpms \
+           createarchdeps \
+           createrepomddeps \
+           createyastdeps \
+           changelog2spec \
+           spec2changelog \
+           download \
+           spec_add_patch \
+           spectool \
+           signdummy \
+           unrpm \
+           zvm_functions \
+           $(DESTDIR)$(pkglibdir)
+       install -m755 emulator/emulator.sh $(DESTDIR)$(pkglibdir)/emulator/
+       install -m644 Build/*.pm $(DESTDIR)$(pkglibdir)/Build
+       install -m644 qemu-reg $(DESTDIR)$(pkglibdir)
+       install -m644 *.pm baselibs_global*.conf lxc.conf $(DESTDIR)$(pkglibdir)
+       install -m644 configs/* $(DESTDIR)$(pkglibdir)/configs
+       install -m644 build.1 $(DESTDIR)$(man1dir)
+       ln -sf $(pkglibdir)/build $(DESTDIR)$(bindir)/build
+       ln -sf $(pkglibdir)/vc    $(DESTDIR)$(bindir)/buildvc
+       ln -sf $(pkglibdir)/unrpm $(DESTDIR)$(bindir)/unrpm
+
+# 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
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..3d758ae
--- /dev/null
+++ b/README
@@ -0,0 +1,21 @@
+
+This script is used for building SUSE Linux RPMs in
+a clean and safe chroot'ed build environment.
+
+At first you need to copy your SUSE Linux CDs into a
+path reachable by the build script, for example /home/suse-8.2-i386.
+
+If you have a DVD Drive and the SUSE Linux DVD, you can mount it
+and use this as the source for the RPMs.
+
+To build an RPM, change into the directory with the sources
+and the SPEC file. Then start the build script:
+env BUILD_RPMS=/home/suse-8.2-i386/suse build
+
+If this was successful you can find the binary and source RPMs below
+/var/tmp/build-root/usr/src/packages/
+
+Note: Depending on which package you want to build, you'll need
+a few hundred megabytes for the build in /var/tmp/build-root.
+
+For more information on using build, see 'man build'.
diff --git a/baselibs_global-deb.conf b/baselibs_global-deb.conf
new file mode 100644 (file)
index 0000000..bbed7d0
--- /dev/null
@@ -0,0 +1,39 @@
+arch 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-<targettype>/bin
+
+targettype x86 prefix /emul/ia32-linux
+
+targettype x86 extension -x86
+targettype 32bit extension 32
+targettype 64bit extension 64
+
+targetname <name>-<targettype>
+
++.*/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 /.(?<!-devel)$/
+post #!/bin/sh
+#post "/sbin/ldconfig"
+
+package /(.*)-devel$/
+targettype x86 block!
+requires "<name> = <version>"
+#requires "<match1>-<targettype> = <version>"
+
+package /(.*)-debuginfo$/
++/usr/lib(64)?/debug/.*/lib(64)?/.*\.(so\..*|so|o|a|la)\.debug$
diff --git a/baselibs_global.conf b/baselibs_global.conf
new file mode 100644 (file)
index 0000000..23c4937
--- /dev/null
@@ -0,0 +1,43 @@
+arch 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
+
+configdir /usr/lib/baselibs-<targettype>/bin
+
+targettype x86 prefix /emul/ia32-linux
+
+targettype x86 extension -x86
+targettype 32bit extension 32
+targettype 64bit extension 64
+
+targetname <name>-<targettype>
+
++.*/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 /(.*-devel)$/
+requires "<match1> = <version>"
+
+package /.(?<!-devel)$/
+post "/sbin/ldconfig"
+
+package /(.*)-debuginfo$/
++/usr/lib(64)?/debug/.*/lib(64)?/.*\.(so\..*|so|o|a|la)\.debug$
++/usr/lib(64)?/debug/.build-id/.*
diff --git a/build b/build
new file mode 100755 (executable)
index 0000000..aa7a217
--- /dev/null
+++ b/build
@@ -0,0 +1,3231 @@
+#!/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 spec file.
+#
+# BUILD_ROOT        here the packages will be built
+#
+# (c) 1997-2008 SuSE GmbH Nuernberg, Germany
+
+# some VMs do not allow to specify the init process...
+if test "$0" = "/sbin/init" ; then
+   exec /.build/build "$@"
+fi
+
+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
+
+ccache=0
+icecream=0
+statistics=0
+shell=
+definesnstuff=()
+repos=()
+old_packages=()
+
+# defaults for vm_img_mkfs
+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_tunefs_ext4='tune2fs -c 0'
+vm_img_mkfs_ext3='mkfs.ext3 -m 0 -q -F'
+vm_img_tunefs_ext3='tune2fs -c 0 -o journal_data_writeback'
+vm_img_mkfs_ext2='mkfs.ext2 -m 0 -q -F'
+vm_img_tunefs_ext2='tune2fs -c 0'
+vm_img_mkfs_reiserfs='mkreiserfs -q -f'
+vm_img_mkfs_btrfs='mkfs.btrfs'
+vm_img_mkfs_xfs='mkfs.xfs -f'
+
+vm_kernel=/boot/vmlinuz
+vm_initrd=/boot/initrd
+qemu_bin=/usr/bin/qemu
+uml_kernel=/boot/vmlinux-um
+uml_initrd=/boot/initrd-um
+
+# 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.0150-part1 hvc_iucv=8 console=hvc0"
+zvm_mult_pass="THR4ME"
+#zvm_worker_nr="1"
+zvm_init_script="/.build/build"
+
+kvm_bin=/usr/bin/qemu-kvm
+# whether we have virtio support
+kvm_virtio=
+
+# guest visible console device name
+console=ttyS0
+
+# need to restore build root owner for non-root builds
+browner=
+
+# additional kiwi parameters, used for appliance builds with obsrepositories:/ directive
+KIWI_PARAMETERS=
+
+# Default uid:gid for the build user
+ABUILD_UID=399
+ABUILD_GID=399
+
+DO_INIT=true
+DO_LINT=
+DO_CHECKS=true
+CLEAN_BUILD=
+USE_SYSTEM_QEMU=
+SPECFILES=()
+SRCDIR=
+BUILD_JOBS=
+ABUILD_TARGET=
+CREATE_BASELIBS=
+USEUSEDFORBUILD=
+LIST_STATE=
+VM_IMAGE=
+VM_SWAP=
+VM_KERNEL=
+VM_INITRD=
+VMDISK_ROOTSIZE=4096
+VMDISK_SWAPSIZE=1024
+VMDISK_FILESYSTEM=ext4
+# settings are for speed and not data safety, we format anyway on next run
+VMDISK_MOUNT_OPTIONS=__default
+VMDISK_CLEAN=
+HUGETLBFSPATH=
+MEMSIZE=
+RUNNING_IN_VM=
+RPMLIST=
+RELEASE=
+REASON=
+NOROOTFORBUILD=
+LOGFILE=
+KILL=
+CHANGELOG=
+BUILD_DEBUG=
+PERSONALITY_SYSCALL=
+INCARNATION=
+DISTURL=
+LINKSOURCES=
+OVERLAY=
+RSYNCSRC=
+RSYNCDEST=
+RSYNCDONE=
+SIGNDUMMY=
+HOST_ARCH=
+EMULATOR_SCRIPT=
+KVM_OPTIONS=
+BUILD_EC2_TYPE="t1.micro"
+
+
+# This is for insserv
+export YAST_IS_RUNNING=instsys
+
+unset LANGUAGE
+unset LANG
+export LC_ALL=POSIX
+umask 022
+
+echo_help () {
+    cat << EOT
+
+Some comments for build
+-----------------------
+
+With build you can create rpm 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 were 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 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.
+
+  --clean     Delete old build root before initializing it
+
+  --no-init   Skip initialization of build root and start with build
+              immediately.
+
+  --no-checks Do not run post-build checks
+
+  --lint      Run rpmlint after build.
+
+  --logfile logfile
+              Capture build output to logfile. Defaults to
+              .build.log in the build root for non-VM builds.
+
+  --repository PATH
+             Use package repository at PATH. Supported formats are
+             rpm-md and yast2.
+             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.
+              a url can specify a remote repo.
+
+  --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 --repository 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
+
+  --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.
+              You must NOT use any vm swap file for this.
+
+  --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
+
+  --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
+
+  --vm-memory SIZEINMB
+              Set amount of RAM for VMs
+
+  --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)
+
+  --debug
+              Enable creation of a debuginfo package
+
+Remember to have fun!
+
+[*] Maximum RPM: http://www.rpm.org/max-rpm/
+EOT
+}
+usage () {
+    echo "Usage: `basename $0` [--no-init|--clean|--rpms path|--verify|--help] [dir-to-build|spec-to-build]"
+    cleanup_and_exit 1
+}
+
+#
+#  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 host
+#
+cleanup_and_exit () {
+    trap EXIT
+    test -z "$1" && set 0
+    rm -f $BUILD_ROOT/exit
+    if test "$1" -eq 1 -a -x /bin/df ; then
+        # okay, it failed, but maybe because disk space?
+       if df $BUILD_ROOT 2>/dev/null | grep -q "100%"; then
+           set 3
+        fi
+    fi
+    if test -n "$RUNNING_IN_VM" ; then
+       echo "$1" >  /.build/_exitcode
+       test -n "$browner" && chown "$browner" $BUILD_ROOT
+       cd /
+       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
+       if test "$VM_TYPE" != lxc; then
+           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
+               halt -f -p
+           fi
+           echo "Warning: clean shut down of the VM didn't work"
+       fi
+    else
+        # nop if unused
+        cloud_volume_detach "$VM_SERVER" "$VM_VOLUME_NAME"
+        cloud_volume_detach "$VM_SERVER" "$VM_VOLUME_SWAP"
+        cloud_volume_detach "$VM_SERVER" "$EC2_EXTRACT_VOLUME_root"
+        cloud_volume_detach "$VM_SERVER" "$EC2_EXTRACT_VOLUME_swap"
+
+        [ -n "$EC2_SNAP_root" ] && ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_root"
+        [ -n "$EC2_SNAP_swap" ] && ec2-delete-snapshot --region "$BUILD_EC2_REGION" "$EC2_SNAP_swap"
+        [ -n "$EC2_EXTRACT_VOLUME_root" ] && ec2-delete-volume --region "$BUILD_EC2_REGION" "$EC2_EXTRACT_VOLUME_root"
+        [ -n "$EC2_EXTRACT_VOLUME_swap" ] && ec2-delete-volume --region "$BUILD_EC2_REGION" "$EC2_EXTRACT_VOLUME_swap"
+
+       umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2> /dev/null || true
+       umount -n $BUILD_ROOT/proc 2>/dev/null || true
+       umount -n $BUILD_ROOT/dev/pts 2>/dev/null || true
+       umount -n $BUILD_ROOT/dev/shm 2>/dev/null || true
+       test "$VM_IMAGE" = 1 && VM_IMAGE=
+       [ -n "$VM_IMAGE" ] && umount $BUILD_ROOT 2>/dev/null || true
+    fi
+
+#    echo "pid $$ exit $1"
+    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 [ "$ccache" = 1 ]; then
+       if mkdir -p $BUILD_ROOT/var/lib/build/ccache/bin; then
+           for i in $(ls $BUILD_ROOT/usr/bin | grep -E '^(cc|gcc|[cg][+][+])([-]?[234][.]?[0-9])*$'); do
+#                ln -sf /usr/bin/ccache $BUILD_ROOT/var/lib/build/ccache/bin/$i
+               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
+       chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT/.ccache"
+       echo "export CCACHE_DIR=/.ccache" > "$BUILD_ROOT"/etc/profile.d/build_ccache.sh
+       echo 'export PATH=/var/lib/build/ccache/bin:$PATH' >> "$BUILD_ROOT"/etc/profile.d/build_ccache.sh
+    else
+       rm -f "$BUILD_ROOT"/var/lib/build/ccache/bin/{gcc,g++,cc,c++}
+    fi
+}
+
+setupicecream()
+{
+    if [ "$icecream" -eq 0 ]; then
+       rm -rf "$BUILD_ROOT/var/run/icecream"
+       rm -f "$BUILD_ROOT/etc/profile.d/build_icecream.sh"
+       return
+    fi
+
+    if ! chroot "$BUILD_ROOT" rpm -q icecream >/dev/null 2>/dev/null; then
+       echo "*** icecream package not installed ***"
+       false
+       return
+    fi
+
+    echo "using icecream with $icecream jobs"
+
+    if [ "$ccache" -ne 1 ]; 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/var/run/icecream/*.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 [ -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/var/run/icecream"
+       mkdir -p "$BUILD_ROOT/var/run/icecream"
+       if [ -e "$BUILD_ROOT"/usr/bin/create-env ]; then
+         createenv=/usr/bin/create-env
+       elif [ -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 [ -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"
+         false
+         return
+       fi
+       chroot $BUILD_ROOT bash -c "cd /var/run/icecream; $createenv" || cleanup_and_exit 1
+       icecc_vers=(`shopt -s nullglob; echo $BUILD_ROOT/var/run/icecream/*.tar.{bz2,gz}`)
+       icecc_vers=${icecc_vers//$BUILD_ROOT/}
+    else
+       echo "reusing existing icecream environment $icecc_vers"
+    fi
+    if [ -n "$icecc_vers" ]; then
+      echo "export ICECC_VERSION=$icecc_vers" >> "$BUILD_ROOT"/etc/profile.d/build_icecream.sh
+    fi
+}
+
+setmemorylimit()
+{
+    if [ -n "$VM_IMAGE" -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*4))"
+           ;;
+           SwapTotal:*)
+               set -- $mem
+               eval "limit=\$(($2/3*4+$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" ; 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
+
+    mount -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+    # 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
+    [ -z "$RUNNING_IN_VM" ] || return 0
+    if [ -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 [ -d "$d" -a "$d" != "$dest" ] ; then
+           rm -rf "$dest"
+           mkdir -p "$dest"
+           cp -L $d/* "$dest"
+           : $((++i))
+       fi
+    done
+}
+
+vm_img_create()
+{
+    local img="$1"
+    local size="$2"
+
+    echo "Creating $img (${size}M)"
+    mkdir -p "${img%/*}" || cleanup_and_exit 3
+
+    # prefer fallocate, which avoids fragmentation
+    r=1
+    if type -p fallocate > /dev/null; then
+        fallocate -l "${size}M" "$img"
+        r=$?
+    fi
+    # fall back to dd method if fallocate is not supported
+    if [ "$r" -gt "0" ]; then
+        dd if=/dev/zero of="$img" bs=1M count=0 seek="$size" || cleanup_and_exit 3
+    fi
+}
+
+vm_img_mkfs()
+{
+    local fs="$1"
+    local img="$2"
+    local mkfs tunefs
+    eval "mkfs=\"\$vm_img_mkfs_${fs}\""
+    eval "mkfs_exta_options=\"\$vm_img_mkfs_${fs}_extra\""
+    eval "tunefs=\"\$vm_img_tunefs_${fs}\""
+
+    if test -z "$mkfs"; then
+       echo "filesystem \"$fs\" isn't supported"
+       cleanup_and_exit 3
+    fi
+
+
+    echo "Creating $fs filesystem on $img"
+    if ! $mkfs $mkfs_exta_options "$img"; then
+        if test -z "$mkfs_exta_options"; then
+            cleanup_and_exit 3
+        else
+            echo "Format call failed, trying again without extra options..."
+            $mkfs "$img" || cleanup_and_exit 3
+        fi
+    fi
+    if test -n "$tunefs" ; then
+       $tunefs "$img" || cleanup_and_exit 3
+    fi
+}
+
+background_monitor_process()
+{
+  max_disk=0
+  max_mem=0
+  while sleep 5; do
+
+    # memory usage
+    if [ -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 [ ${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 [ ${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
+
+    [ -e /.build/_statistics.exit ] && exit 0
+  done
+}
+
+detect_vm_2nd_stage()
+{
+    if test -e /.build/build.data; then
+        . /.build/build.data
+    fi
+    if test -z "$VM_TYPE" ; then
+       return 1
+    fi
+    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
+    echo "2nd stage started in virtual machine"
+    BUILD_ROOT=/
+    BUILD_DIR=/.build
+    echo "machine type: `uname -m`"
+    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'; then
+       mount -n ${VMDISK_MOUNT_OPTIONS},remount,rw /
+    fi
+    umount /run >/dev/null 2>&1
+# qemu inside of xen does not work, check again with kvm later before enabling this
+#    if [ -e /dev/kqemu ]; then
+#        # allow abuild user to run qemu
+#        chmod 0666 /dev/kqemu
+#    fi
+    if test "$VM_TYPE" = 'zvm' ; then
+        VM_SWAP='/dev/dasdb1'
+    fi
+    if test "$VM_TYPE" = 'ec2' ; then
+        VM_SWAP='/dev/sdb1'
+        # Usually the external system is writing the swap signature, but EC2 volume
+        # attach is very slow, so let's do it in the VM for now.
+        mkswap "$VM_SWAP"
+    fi
+    if test -n "$VM_SWAP" ; then
+       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
+       swapon -v "$VM_SWAP" || exit 1
+    fi
+    HOST="$MYHOSTNAME"
+
+    # fork a process monitoring max filesystem fillment during build
+    if test "$statistics" = "1"; then
+        background_monitor_process &
+    fi
+
+    if [ ! -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 [ $(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
+
+    return 0
+}
+
+find_spec_files()
+{
+    local spec files
+    if [ -z "$SPECFILES" ]; then
+       set -- "`pwd`"
+    else
+       set -- "${SPECFILES[@]}"
+    fi
+    SPECFILES=()
+    for spec in "$@"; do
+       if [ "$spec" = "${spec#/}" ]; then
+           spec="`pwd`/$spec"
+       fi
+
+       if [ -d "$spec" ]; then
+           specs=("$spec"/*.spec)
+           if [ -n "$specs" ]; then
+               SPECFILES=("${SPECFILES[@]}" "${specs[@]}")
+           else
+               specs=("$spec"/*.spec)
+               if [ -n "$specs" ]; then
+                   SPECFILES=("${SPECFILES[@]}" "${specs[@]}")
+               fi
+           fi
+       else
+           SPECFILES[${#SPECFILES[@]}]="$spec";
+       fi
+    done
+
+    if test -z "$SPECFILES"; then
+       echo no spec files or src rpms found in $@. exit...
+       cleanup_and_exit 1
+    fi
+}
+
+become_root_or_fail()
+{
+    if [ ! -w /root ]; then
+       echo "You have to be root to use $0" >&2
+       exit 1
+    fi
+    cleanup_and_exit 1
+}
+
+mkdir_build_root()
+{
+    if [ -d "$BUILD_ROOT" ]; then
+       # check if it is owned by root
+       if [ -z "$RUNNING_IN_VM" -a \! -O "$BUILD_ROOT" -a "`stat -c %u $BUILD_ROOT`" -ne 0 ]; then
+           echo "BUILD_ROOT=$BUILD_ROOT must be owned by root. Exit..."
+           cleanup_and_exit 1
+       fi
+    else
+       test "$BUILD_ROOT" != "${BUILD_ROOT%/*}" && mkdir -p "${BUILD_ROOT%/*}"
+       if ! mkdir $BUILD_ROOT; then
+           echo "can not create BUILD_ROOT=$BUILD_ROOT. Exit..."
+           cleanup_and_exit 1
+       fi
+    fi
+
+    if [ ! -w "$BUILD_ROOT" ]; then
+       echo "Error: BUILD_ROOT=$BUILD_ROOT not writeable, try --clean."
+       cleanup_and_exit 3
+    fi
+
+    rm -rf "$BUILD_ROOT/.build.packages"
+    if [ -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
+}
+
+ec2_volume_state()
+{
+    local VM_VOL_NAME="$1"
+    temp_file=`mktemp`
+    ec2-describe-volumes "$VM_VOL_NAME" --region "$BUILD_EC2_REGION" > $temp_file
+
+    if grep -q ^ATTACHMENT "$temp_file"; then
+      grep ^ATTACHMENT "$temp_file" | awk '{ print $5 }'
+    else
+      grep ^VOLUME "$temp_file" | awk '{ print $5 }'
+    fi
+    rm "$temp_file"
+}
+
+cloud_volume_attach()
+{
+    local VM_SERVER="$1"
+    local VM_VOL_NAME="$2"
+    local VM_VOL_DEV="$3"
+
+    if [ "$VM_TYPE" = 'openstack' ]; then
+      if ! nova volume-attach "$VM_SERVER" "$VM_VOL_NAME" "$VM_VOL_DEV"; then
+          echo "ERROR: nova attach failed. $?" >&2
+          return 3
+      fi
+      while true; do
+          state=`nova volume-show "$VM_VOL_NAME" | sed -n 's,^|[ ]*status[ ]*|[ ]*\([^ ]*\).*,\1,p'`
+          [ "$state" == "in-use" ] && break
+          if [ -z "$state" ]; then
+             echo "ERROR: unable to find state of volume $VM_VOL_NAME" >&2
+             return 3
+          fi
+          if [ "$state" == "available" ]; then
+             echo "WARNING: volume $VM_VOL_NAME got not attached, retrying" >&2
+             if ! nova volume-attach "$VM_SERVER" "$VM_VOL_NAME" "$VM_VOL_DEV"; then
+                 echo "ERROR: nova attach failed. $?" >&2
+                 return 3
+             fi
+          fi
+          sleep 3
+      done
+
+      if [ ! -e "$VM_VOL_DEV" ]; then
+          #GROSS HACK: kernel does not care about the given device name
+#          VM_VOL_DEV="/dev/"`dmesg| sed -n 's,.*\(vd.\): unknown partition tab.*,\1,p' | tail -n 1`
+          VM_VOL_DEV=`ls -1 /dev/vd? | tail -n 1`
+      fi
+      echo "$VM_VOL_DEV"
+    elif [ "$VM_TYPE" = 'ec2' ]; then
+      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 "$temp_file"
+         cleanup_and_exit 1
+      fi
+      # wait that it becomes available
+      while true; do
+        state=`ec2_volume_state "$VM_VOL_NAME"`
+        [ "$state" = "attached" ] && break
+        sleep 1
+      done
+      # print device node
+      grep ^ATTACHMENT "$temp_file" | awk '{ print $4 }'
+      rm "$temp_file"
+    fi
+}
+
+cloud_volume_detach()
+{
+    local VM_SERVER="$1"
+    local VM_VOL_NAME="$2"
+    if [ "$VM_TYPE" = 'openstack' ]; then
+      # needed at all?
+      nova volume-show "$VM_VOL_NAME" | grep -q in-use || return 0
+
+      # umount seems not to be enough
+      sync
+
+      if ! nova volume-detach "$VM_SERVER" "$VM_VOL_NAME"; then
+          echo "ERROR: nova detach of $VM_VOL_NAME failed." >&2
+          return 3
+      fi
+      while nova volume-show "$VM_VOL_NAME" | grep -q availabe; do
+          sleep 3
+      done
+    elif [ "$VM_TYPE" = 'ec2' ]; then
+       state=`ec2_volume_state "$VM_VOL_NAME"`
+       if [ "$state" != "available" ]; then
+         ec2-detach-volume "$VM_VOL_NAME" --region $BUILD_EC2_REGION || return 3
+       fi
+    fi
+    return 0
+}
+
+linux64()
+{
+       perl -e 'syscall('$PERSONALITY_SYSCALL', 0); exec(@ARGV) || die("$ARGV[0]: $!\n")' "$@"
+}
+
+check_for_arm()
+{
+    local uname
+
+    uname=$(uname -m)
+
+    if [ "$uname" != "armv7l" ]; then
+        return
+    fi
+
+    export HOST_ARCH=armv7l
+
+    export kvm_bin="/usr/bin/qemu-system-arm"
+    export console=ttyAMA0
+    export KVM_OPTIONS="-enable-kvm -M vexpress-a15 -dtb /boot/a15-guest.dtb -cpu cortex-a15"
+    VM_KERNEL=/boot/zImage
+    VM_INITRD=/boot/initrd
+    # prefer the guest kernel
+    if [ -e /boot/zImage.guest ]; then
+        VM_KERNEL=/boot/zImage.guest
+    fi
+    # prefer the guest initrd
+    if [ -e /boot/initrd.guest ]; then
+        VM_INITRD=/boot/initrd.guest
+    fi
+    export VM_KERNEL
+    export VM_INITRD
+}
+
+check_for_ppc()
+{
+    local uname
+
+    uname=$(uname -m)
+
+    case $uname in
+         ppc|ppc64) export VM_KERNEL=/boot/vmlinux
+                    export VM_INITRD=/boot/initrd
+                    ;;
+         ppc64le)   export VM_INITRD=/boot/vmlinuxle
+                    export VM_INITRD=/boot/initrdle
+                    ;;
+         *)         return ;;
+    esac
+
+    grep -q "PowerNV" /proc/cpuinfo && export HOST_ARCH=power7 || export HOST_ARCH=ppc970
+
+    export kvm_bin="/usr/bin/qemu-system-ppc64"
+    export console=hvc0
+    export KVM_OPTIONS="-enable-kvm -M pseries"
+    if [ -z "$RUNNING_IN_VM" -a -n "$HUGETLBFSPATH" ];then
+      if ! grep -q "$HUGETLBFSPATH" /proc/mounts; then
+         echo "hugetlbfs is not mounted"
+         exit 1
+      fi
+         PAGES_FREE=$(cat /sys/kernel/mm/hugepages/hugepages-16384kB/free_hugepages)
+         PAGES_REQ=$(( ${MEMSIZE:-64} / 16 ))
+      if [ "$PAGES_FREE" -lt "$PAGES_REQ" ];then
+         echo "please adjust nr_hugepages"
+         exit 1
+      fi
+      if [ "$HOST_ARCH" = "ppc970" ];then
+          if ! grep -q -E '(kvm_rma_count.*kvm_hpt_count)|(kvm_hpt_count.*kvm_rma_count)' /proc/cmdline; then
+             echo "put kvm_rma_count=<VM number> or kvm_hpt_count=<> to your boot options"
+             exit 1
+          fi
+      fi
+   fi
+}
+
+#### main ####
+
+trap fail_exit EXIT
+
+archname=`perl -V:archname`
+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)   PERSONALITY_SYSCALL=136 ;;
+    *) echo "ARCHITECTURE PERSONALITY IS UNKNOWN"; exit 1;;
+esac
+
+shopt -s nullglob
+
+export PATH=$BUILD_DIR:/sbin:/usr/sbin:$PATH
+
+if detect_vm_2nd_stage ; then
+    set "/.build-srcdir/$SPECFILE"
+    export PATH=/.build:$PATH
+fi
+
+. $BUILD_DIR/common_functions || exit 1
+. $BUILD_DIR/zvm_functions || exit 1
+
+export HOST
+
+needarg()
+{
+  if [ -z "$ARG" ]; then
+    echo "$PARAM needs an agrument" >&2
+    cleanup_and_exit 1
+  fi
+}
+
+while test -n "$1"; do
+  PARAM="$1"
+  UNSTRIPPED_ARG="$2"
+  ARG="$2"
+  [ "$ARG" = "${ARG#-}" ] || ARG=""
+  ARG2="$3"
+  [ "$ARG2" = "${ARG2#-}" ] || ARG2=""
+  shift
+  case $PARAM in
+    *-*=*)
+      ARG=${PARAM#*=}
+      PARAM=${PARAM%%=*}
+      set -- "----noarg=$PARAM" "$@"
+  esac
+  case $PARAM in
+      *-help|-h)
+       echo_help
+       cleanup_and_exit
+      ;;
+      *-no*init)
+       DO_INIT=false
+      ;;
+      *-no*checks)
+       DO_CHECKS=false
+      ;;
+      -clean|--clean)
+       CLEAN_BUILD='--clean'
+      ;;
+      *-kill)
+       KILL=true
+      ;;
+      *-rpms)
+       needarg
+       BUILD_RPMS="$ARG"
+       shift
+      ;;
+      *-arch)
+       needarg
+       BUILD_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
+      ;;
+      *-extra*packs|-X)
+       needarg
+       BUILD_EXTRA_PACKS="$BUILD_EXTRA_PACKS $ARG"
+       shift
+      ;;
+      *-lint)
+       DO_LINT=true
+       ;;
+      *-baselibs)
+       CREATE_BASELIBS=true
+       ;;
+      --kiwi-parameter)
+       KIWI_PARAMETERS="$KIWI_PARAMETERS $UNSTRIPPED_ARG"
+       shift
+       ;;
+      *-baselibs-internal)
+       CREATE_BASELIBS=internal
+       ;;
+      *-use-system-qemu)
+       USE_SYSTEM_QEMU="--use-system-qemu"
+      ;;
+      *-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
+      ;;
+      *-emulator-script)
+       needarg
+       EMULATOR_SCRIPT="$ARG"
+       shift
+      ;;
+      *-xen|*-kvm|--uml|--qemu|--emulator)
+       VM_TYPE=${PARAM##*-}
+       if [ -n "$ARG" ]; then
+           VM_IMAGE="$ARG"
+           shift
+       else
+           VM_IMAGE=1
+       fi
+      ;;
+      *-zvm)
+        VM_TYPE="zvm"
+       shift
+      ;;
+      --lxc)
+       VM_TYPE=${PARAM##*-}
+      ;;
+      --vm-type)
+       needarg
+       VM_TYPE="$ARG"
+       case "$VM_TYPE" in
+            zvm) ;;
+            ec2)
+               test -z "$VM_IMAGE" && VM_IMAGE=1
+                . /etc/profile.d/ec2.sh
+                EC2_INSTANCE_ID=`ec2-instance-id`
+                BUILD_EC2_ZONE=`ec2-meta-data placement/availability-zone`
+                BUILD_EC2_REGION=${BUILD_EC2_ZONE%?}
+               ;;
+           xen|kvm|uml|qemu|lxc|emulator|openstack)
+               test -z "$VM_IMAGE" && VM_IMAGE=1
+               ;;
+           none|chroot) VM_TYPE='' ;;
+           *)
+               echo "VM $VM_TYPE not supported"
+               cleanup_and_exit
+           ;;
+       esac
+       shift
+      ;;
+      --vm-worker)
+        needarg
+        VM_WORKER="$ARG"
+        shift
+      ;;
+      --vm-worker-nr)
+        needarg
+        zvm_worker_nr="$ARG"
+        shift
+      ;;
+      --vm-server|--vm-region)
+       needarg
+       VM_SERVER="$ARG"
+       shift
+      ;;
+      --vm-volumes)
+       needarg
+       VM_VOLUME_NAME="$ARG"
+       shift
+       needarg
+       VM_VOLUME_SWAP="$ARG2"
+       shift
+      ;;
+      --vm-disk)
+       needarg
+       VM_IMAGE="$ARG"
+       shift
+      ;;
+      *-xenswap|*-swap)
+       needarg
+       VM_SWAP="$ARG"
+       shift
+      ;;
+      *-xenmemory|*-memory)
+       needarg
+       MEMSIZE="$ARG"
+       shift
+      ;;
+      *-vm-kernel)
+       needarg
+       VM_KERNEL="$ARG"
+       shift
+      ;;
+      *-vm-initrd)
+       needarg
+       VM_INITRD="$ARG"
+       shift
+      ;;
+      *-vmdisk-rootsize|--vm-disk-size)
+       needarg
+       VMDISK_ROOTSIZE="$ARG"
+       shift
+      ;;
+      *-vmdisk-swapsize|--vm-swap-size)
+       needarg
+       VMDISK_SWAPSIZE="$ARG"
+       shift
+      ;;
+      *-vmdisk-filesystem|--vm-disk-filesystem)
+       needarg
+       VMDISK_FILESYSTEM="$ARG"
+       shift
+      ;;
+      *-vmdisk-mount-options|--vm-disk-mount-options)
+       needarg
+        # options needs to be quoted to handle argument which might start with "-o ..."
+       VMDISK_MOUNT_OPTIONS=$(echo $ARG | sed 's/^\"\(.*\)\"$/\1/g')
+       shift
+      ;;
+      *-vmdisk-clean)
+       # delete old root/swap to get rid of the old blocks
+        VMDISK_CLEAN=true
+      ;;
+      *-rpmlist)
+       needarg
+       RPMLIST="--rpmlist $ARG"
+       BUILD_RPMS=
+       shift
+      ;;
+      *-hugetlbfs)
+        HUGETLBFSPATH="$ARG"
+       shift
+      ;;
+      *-release)
+       needarg
+       RELEASE="$ARG"
+       shift
+      ;;
+      *-logfile)
+       needarg
+       LOGFILE="$ARG"
+       shift
+      ;;
+      *-reason)
+       needarg
+       REASON="$ARG"
+       shift
+      ;;
+      *-norootforbuild)
+       NOROOTFORBUILD=true
+      ;;
+      *-stage)
+       needarg
+       BUILD_RPM_BUILD_STAGE="$ARG"
+       shift
+      ;;
+      *-useusedforbuild)
+       USEUSEDFORBUILD="--useusedforbuild"
+      ;;
+      *-configdir)
+        needarg
+       CONFIG_DIR="$ARG"
+        shift
+      ;;
+      *-list*state)
+       LIST_STATE=true
+      ;;
+      --define|--with|--without)
+       needarg
+       definesnstuff[${#definesnstuff[@]}]="$PARAM";
+       definesnstuff[${#definesnstuff[@]}]="$ARG";
+       shift
+      ;;
+      --repository|--repo)
+       needarg
+       repos[${#repos[@]}]="$PARAM";
+       repos[${#repos[@]}]="$ARG";
+       shift
+      ;;
+      --icecream)
+       needarg
+       icecream="$ARG"
+       if [ "$icecream" -gt 0 ]; then
+               BUILD_JOBS="$ARG"
+       fi
+       shift
+      ;;
+      --ccache)
+       ccache=1
+      ;;
+      --statistics)
+       statistics=1
+      ;;
+      --debug)
+       BUILD_DEBUG=1
+      ;;
+      --incarnation)
+       needarg
+       INCARNATION=$ARG
+       shift
+      ;;
+      --disturl)
+       needarg
+       DISTURL=$ARG
+       shift
+      ;;
+      --linksources)
+       LINKSOURCES=true
+      ;;
+      ----noarg)
+       echo "$ARG does not take an argument"
+       cleanup_and_exit
+      ;;
+      *-changelog)
+       CHANGELOG=true
+      ;;
+      --overlay)
+       needarg
+       OVERLAY=$ARG
+       shift
+      ;;
+      --rsync-src)
+       needarg
+       RSYNCSRC=$ARG
+       shift
+      ;;
+      --rsync-dest)
+       needarg
+       RSYNCDEST=$ARG
+       shift
+      ;;
+      --uid)
+       needarg
+       ABUILD_ID="$ARG"
+       if test -n "${ABUILD_ID//[0-9:]/}"; then
+           echo "--uid argument must be uid:gid"
+           cleanup_and_exit
+       fi
+       ABUILD_UID=${ABUILD_ID%:*}
+       ABUILD_GID=${ABUILD_ID#*:}
+       shift
+      ;;
+      --shell)
+         shell=1
+         shift
+      ;;
+      --signdummy)
+       SIGNDUMMY=1
+      ;;
+      -*)
+       echo Unknown Option "$PARAM". Exit.
+       cleanup_and_exit 1
+      ;;
+      *)
+       SPECFILES[${#SPECFILES[@]}]="$PARAM";
+      ;;
+    esac
+done
+
+check_for_ppc
+check_for_arm
+
+if test "$VM_TYPE" = "lxc"; then
+    VM_IMAGE=''
+    VM_SWAP=''
+fi
+
+if test "$VM_TYPE" = "zvm"; then
+    VM_IMAGE='/dev/dasda1'
+    VM_SWAP='/dev/dasdb1'
+fi
+
+if test "$VM_TYPE" = "ec2"; then
+    # We can not use bash hashes because old bash does not support it
+    # This is always the x86_64 loader, we use also by default the
+    # local x86_64 kernel, which should be able to run a 32bit system
+    if [ "$BUILD_EC2_ZONE" = "us-east-1" ]; then
+        BUILD_EC2_AKI="aki-88aa75e1"
+    elif [ "$BUILD_EC2_ZONE" = "us-west-1" ]; then
+        BUILD_EC2_AKI="aki-f77e26b2"
+    elif [ "$BUILD_EC2_ZONE" = "us-west-2" ]; then
+        BUILD_EC2_AKI="aki-fc37bacc"
+    elif [ "$BUILD_EC2_ZONE" = "eu-west-1" ]; then
+        BUILD_EC2_AKI="aki-71665e05"
+    elif [ "$BUILD_EC2_ZONE" = "ap-southeast-1" ]; then
+        BUILD_EC2_AKI="aki-fe1354ac"
+    elif [ "$BUILD_EC2_ZONE" = "ap-southeast-2" ]; then
+        BUILD_EC2_AKI="aki-3f990e05"
+    elif [ "$BUILD_EC2_ZONE" = "ap-northeast-1" ]; then
+        BUILD_EC2_AKI="aki-44992845"
+    elif [ "$BUILD_EC2_ZONE" = "sa-east-1" ]; then
+        BUILD_EC2_AKI="aki-c48f51d9"
+    elif [ "$BUILD_EC2_ZONE" = "us-gov-west-1" ]; then
+        BUILD_EC2_AKI="aki-79a4c05a"
+    else
+        echo "Unknown Amazon EC2 Zone: $BUILD_EC2_ZONE"
+        exit 1
+    fi
+fi
+
+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
+
+if test -n "$KILL" ; then
+    test -z "$SRCDIR" || usage
+    if test -n "$VM_IMAGE" -a -n "$VM_SWAP" -a -n "$VM_TYPE"; then
+       # mark job as failed so that we don't extract packages
+       if test "$VM_TYPE" != "zvm"; then
+           echo -n "BUILDSTATUS1" >"$VM_SWAP"
+        fi
+    fi
+    (set -C; > "$BUILD_ROOT/exit" 2>/dev/null || true)
+    if test "$VM_TYPE" = 'lxc'; then
+       LXCID=${BUILD_ROOT##*/}
+       lxc-stop -n "$LXCID" || true
+       lxc-destroy -n "$LXCID"
+    elif test -z "$VM_IMAGE" ; then
+       if ! $BUILD_DIR/killchroot -s 9 $BUILD_ROOT ; then
+           echo "could not kill build in $BUILD_ROOT"
+           cleanup_and_exit 1
+       fi
+    elif test "$VM_TYPE" = 'xen'; then
+       XENID="${VM_IMAGE%/root}"
+       XENID="${XENID%/tmpfs}"
+       XENID="${XENID##*/}"
+       XENID="${XENID#root_}"
+       if xm list "build_$XENID" >/dev/null 2>&1 ; then
+           if ! xm destroy "build_$XENID" ; then
+               echo "could not kill xen build $XENID"
+               cleanup_and_exit 1
+           fi
+       fi
+    elif test "$VM_TYPE" = 'zvm'; then
+       if vmcp q "$VM_WORKER" > /dev/null 2>&1 ; then
+            if ! zvm_cp destroy $VM_WORKER ; then
+               echo "could not kill zvm worker $VM_WORKER"
+               cleanup_and_exit 1
+            fi
+        fi
+    elif test "$VM_TYPE" = 'ec2'; then
+       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
+               echo "could not kill EC2 instance $VM_BUILD_INSTANCE"
+               cleanup_and_exit 1
+           fi
+       fi
+    elif test "$VM_TYPE" = 'openstack'; then
+       if nova show "$VM_VOLUME_NAME" >/dev/null 2>&1 ; then
+           if ! nova delete "$VM_VOLUME_NAME" ; then
+               echo "could not kill openstack vm build $VM_VOLUME_NAME"
+               cleanup_and_exit 1
+           fi
+       fi
+    elif test -n "$VM_TYPE"; then
+       if ! fuser -k -TERM "$VM_IMAGE"; then
+           echo "could not kill build in $VM_IMAGE"
+           cleanup_and_exit 1
+       fi
+    else
+       echo "don't know how to kill this build job"
+       cleanup_and_exit 1
+    fi
+    cleanup_and_exit 0
+fi
+
+if [ "$VM_TYPE" = 'xen' -a -z "$RUNNING_IN_VM" ]; then
+    # XXX: merge with kvm path?
+    if [ -n "$VM_KERNEL" ]; then
+       vm_kernel="$VM_KERNEL"
+    elif [ -e "/boot/vmlinuz-xen" ]; then
+       vm_kernel="/boot/vmlinuz-xen"
+    fi
+    if [ -n "$VM_INITRD" ]; then
+       vm_initrd="$VM_INITRD"
+    elif [ -e "/boot/initrd-xen" ]; then
+       vm_initrd="/boot/initrd-xen"
+    fi
+fi
+
+if [ "$VM_TYPE" = 'zvm' -a -z "$RUNNING_IN_VM" ]; then
+    # verify settings
+    # In z/VM, this is a 4 digit hex number instead of a linux device.
+    # This is the root disk defined in user direct
+    # This number can be given with the parameter --root NR.
+    if [ -z "$VM_VOLUME_ROOT" ]; then
+        if [ -n "$BUILD_ROOT" -a ${#BUILD_ROOT} -le 4 ]; then
+            VM_VOLUME_ROOT="$BUILD_ROOT"
+        else
+            VM_VOLUME_ROOT="0150"
+        fi
+    fi
+    # In z/VM, this is a 4 digit hex number instead of a linux device.
+    # This is the swap disk defined in user direct
+    # This number can be given with the parameter --swap NR.
+    if [ -z "$VM_VOLUME_SWAP" ]; then
+        if [ -n "$VM_SWAP" -a ${#VM_SWAP} -le 4 ]; then
+            VM_VOLUME_SWAP="$VM_SWAP"
+        else
+            VM_VOLUME_SWAP="0250"
+        fi
+    fi
+    # z/VM guest name that is already defined in z/VM
+    if [ -z "$VM_WORKER" ]; then
+        echo "ERROR: No z/VM worker id specified"
+       cleanup_and_exit 3
+    fi
+    if [ -z "$zvm_worker_nr" ]; then
+        echo "ERROR: No z/VM worker number specified"
+        cleanup_and_exit 3
+    fi
+    # need the name for a kernel in zvm
+    if [ -n "$VM_KERNEL" ]; then
+        vm_kernel="$VM_KERNEL"
+    elif [ -e "/boot/vmlinux.gz" ]; then
+        vm_kernel="/boot/vmlinux.gz"
+    else
+        echo "ERROR: No z/VM kernel specified"
+       cleanup_and_exit 3
+    fi
+    # need the name for an initrd in zvm
+    # this normally will not be the local initrd
+    if [ -n "$VM_INITRD" ]; then
+        vm_initrd="$VM_INITRD"
+    else
+        echo "ERROR: No z/VM initrd specified"
+       cleanup_and_exit 3
+    fi
+fi
+
+if [ "$VM_TYPE" = 'ec2' -a -z "$RUNNING_IN_VM" ]; then
+    # verify settings
+    if [ -z "$AWS_ACCESS_KEY" -o -z "$AWS_ACCESS_KEY" ]; then
+       echo "ERROR:No amazon EC2 environment set. Set AWS_ACCESS_KEY and AWS_SECRET_KEY."
+       cleanup_and_exit 3
+    fi
+    if [ -z "$BUILD_EC2_AKI"  ]; then
+       echo "ERROR: No image refering to kernel and ramdisk is defined in BUILD_EC2_AKI env."
+       cleanup_and_exit 3
+    fi
+    if [ -z "$VM_VOLUME_NAME" ]; then
+       echo "ERROR: No worker root VM volume name specified."
+       cleanup_and_exit 3
+    fi
+    if [ -z "$VM_VOLUME_SWAP" ]; then
+       echo "ERROR: No worker swap VM volume name specified."
+       cleanup_and_exit 3
+    fi
+
+    # go
+    VM_IMAGE=`cloud_volume_attach "$VM_SERVER" "$VM_VOLUME_NAME" "$VM_IMAGE"`
+    [ "${VM_IMAGE:0:5}" == "/dev/" ] || cleanup_and_exit 3
+fi
+
+if [ "$VM_TYPE" = 'openstack' -a -z "$RUNNING_IN_VM" ]; then
+    # verify settings
+    if [ -z "$OS_AUTH_URL" ]; then
+       echo "ERROR:No openstack environment set. This vm-type works only inside of an openstack VM."
+       cleanup_and_exit 3
+    fi
+    if [ -z "$OBS_OPENSTACK_KERNEL_IMAGE_ID" ]; then
+       echo "ERROR: No image refering to kernel and ramdisk is defined in OBS_OPENSTACK_KERNEL_IMAGE_ID env."
+       cleanup_and_exit 3
+    fi
+    if [ -z "$VM_VOLUME_NAME" ]; then
+       echo "ERROR: No worker root VM volume name specified."
+       cleanup_and_exit 3
+    fi
+    if [ -z "$VM_VOLUME_SWAP" ]; then
+       echo "ERROR: No worker swap VM volume name specified."
+       cleanup_and_exit 3
+    fi
+    if [ -z "$VM_SERVER" ]; then
+       echo "ERROR: No VM server nod name specified (usually this instance)."
+       cleanup_and_exit 3
+    fi
+
+    # go
+    VM_IMAGE=`cloud_volume_attach "$VM_SERVER" "$VM_VOLUME_NAME" "$VM_IMAGE"`
+    [ "${VM_IMAGE:0:5}" == "/dev/" ] || cleanup_and_exit 3
+fi
+
+if [ "$VM_TYPE" = 'kvm' -a -z "$RUNNING_IN_VM" ]; then
+    if [ ! -r /dev/kvm -o ! -x "$kvm_bin" ]; then
+       echo "host doesn't 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
+    qemu_bin="$kvm_bin"
+    if [ -n "$VM_KERNEL" ]; then
+       vm_kernel="$VM_KERNEL"
+    fi
+
+    # check if a SUSE system with virtio initrd is running
+    if [ -z "$VM_INITRD" -a -e /etc/sysconfig/kernel ]; then
+       a=$( source /etc/sysconfig/kernel; echo $INITRD_MODULES )
+       have_virtio_pci=""
+       have_virtio_blk=""
+       for i in $a; do
+          [ "$i" == "virtio_pci" ] && have_virtio_pci="1"
+          [ "$i" == "virtio_blk" ] && have_virtio_blk="1"
+       done
+       [ -n "$have_virtio_pci" -a -n "$have_virtio_blk" ] && VM_INITRD="/boot/initrd"
+    fi
+
+    if [ -n "$VM_INITRD" ]; then
+       vm_initrd="$VM_INITRD"
+       kvm_virtio=1
+    elif [ -e "${vm_initrd}-build" ]; then
+       vm_initrd="${vm_initrd}-build"
+       kvm_virtio=1
+    else
+       if [ -L "$vm_initrd" ]; then
+           vm_initrd=`readlink -f "$vm_initrd"` || cleanup_and_exit 3
+       fi
+       vm_initrd_virtio="${vm_initrd}-virtio"
+
+       if [ ! -e ${vm_initrd_virtio} -o $vm_kernel -nt ${vm_initrd_virtio} ]; then
+           mkinitrd_virtio_cmd=(env rootfstype="$VMDISK_FILESYSTEM" \
+                   mkinitrd -d /dev/null \
+                   -m "ext3 ext4 btrfs reiserfs binfmt_misc virtio_pci virtio_blk" \
+                   -k $vm_kernel \
+                   -i ${vm_initrd_virtio})
+           if [ ! -w /root -o -n "$RPMLIST" ]; then
+               echo "No initrd that provides virtio support found. virtio accelleration disabled."
+               echo "Run the following command as root to enable virtio:"
+               shellquote "${mkinitrd_virtio_cmd[@]}"
+               echo
+           elif /sbin/modinfo virtio_pci >/dev/null 2>&1; then
+               echo "creating $vm_initrd_virtio"
+               "${mkinitrd_virtio_cmd[@]}" || cleanup_and_exit 1
+               kvm_virtio=1
+               vm_initrd="${vm_initrd_virtio}"
+           fi
+       else
+           kvm_virtio=1
+           vm_initrd="${vm_initrd_virtio}"
+       fi
+    fi
+
+    case $HOST_ARCH in
+        power7|armv7l) kvm_virtio=1;;
+        ppc970) kvm_virtio=;;
+    esac
+
+    if [ "$kvm_virtio" = 1 ]; then
+       VM_SWAPDEV=/dev/vdb
+       qemu_rootdev=/dev/vda
+    else
+       VM_SWAPDEV=/dev/sdb
+       qemu_rootdev=/dev/sda
+    fi
+fi
+
+if [ "$VM_TYPE" = 'openstack' ]; then
+    VM_SWAPDEV=/dev/vdb
+    qemu_rootdev=/dev/vda
+fi
+
+if [ "$VM_TYPE" = 'qemu' ]; then
+    VM_SWAPDEV=/dev/sdb
+    qemu_rootdev=/dev/sda
+fi
+
+if [ "$VM_TYPE" = 'uml' ]; then
+    VM_SWAPDEV=/dev/ubdb
+fi
+
+if [ -z "$RPMLIST" -a -z "$RUNNING_IN_VM" ]; then
+    if [ -z "$repos" -a -z "$BUILD_RPMS" ]; then
+       repos=(--repository 'zypp://')
+    fi
+else
+    repos=()
+fi
+
+set_build_arch
+
+if [ -n "$CLEAN_BUILD" ]; then
+    DO_INIT=true
+fi
+
+find_spec_files
+
+if test -n "$LIST_STATE" ; then
+    BUILD_ROOT=`mktemp -d /var/tmp/build-list-state-XXXXXX`
+    test -d "$BUILD_ROOT" || cleanup_and_exit 3
+    SPECFILE=$SPECFILES # only one specified anyways
+    if test "$SPECFILE" != "${SPECFILE%.src.rpm}" ; then
+       rm -rf "$BUILD_ROOT/usr/src/packages"
+       mkdir -p $BUILD_ROOT/usr/src/packages/SOURCES $BUILD_ROOT/usr/src/packages/SPECS
+       rpm -i --nodigest --nosignature --root $BUILD_ROOT $SPECFILE || {
+          echo "could not install $SPECFILE." 2>&1
+          rm -rf "$BUILD_ROOT"
+          cleanup_and_exit 3
+       }
+       for SPECFILE in $BUILD_ROOT/usr/src/packages/SPECS/*.spec ; do : ; done
+    fi
+    init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" --list-state "${definesnstuff[@]}" "${repos[@]}" $USEUSEDFORBUILD $SPECFILE $BUILD_EXTRA_PACKS
+    ERR=$?
+    rm -rf "$BUILD_ROOT"
+    cleanup_and_exit $ERR
+fi
+
+# z/VM:
+# 1. make sure that no buildjob exists anymore by doing an ipl of cms
+# 2. detach the root device from the worker
+# 3. link the device to the controlling guest
+#    -> Need a uniq worker id to calculate a uniq device address for linking
+#    -> VM_IMAGE is the resulting block device
+if [ "$VM_TYPE" = 'zvm' ]; then
+    if [ ! "$0" = "/.build/build" ] ; then
+       echo "in controlling guest"
+        zvm_cp worker_init $VM_WORKER $VM_VOLUME_ROOT $VM_VOLUME_SWAP $zvm_worker_nr
+        zvm_cp volume_detach $VM_WORKER $VM_VOLUME_ROOT
+        zvm_cp volume_detach $VM_WORKER $VM_VOLUME_SWAP
+        VM_IMAGE=$(zvm_cp volume_link_local $VM_WORKER $VM_VOLUME_ROOT $zvm_mult_pass $zvm_worker_nr )
+        VM_SWAP=$(zvm_cp volume_link_local $VM_WORKER $VM_VOLUME_SWAP $zvm_mult_pass $zvm_worker_nr )
+        if [ ! "${VM_IMAGE}" = "dasd${VM_IMAGE#dasd}" -o ! "${VM_SWAP}" = "dasd${VM_SWAP#dasd}" ]; then
+            echo "did not get a real device for VM_IMAGES: $VM_IMAGE $VM_SWAP"
+            cleanup_and_exit 3
+        else 
+            VM_IMAGE="/dev/"${VM_IMAGE}
+           VM_SWAP="/dev/"${VM_SWAP}
+        fi
+    fi
+fi
+
+echo "VM_IMAGE: $VM_IMAGE, VM_SWAP: $VM_SWAP"
+
+# doing setup
+if test -z "$RUNNING_IN_VM" ; then
+    if test -n "$VM_IMAGE" ; then
+       if test "$VM_IMAGE" = 1 ; then
+           VM_IMAGE="$BUILD_ROOT.img"
+           echo "using $VM_IMAGE as vm image"
+           if test -z "$VM_SWAP" -a "$VM_TYPE" != "emulator"; then
+               VM_SWAP="$BUILD_ROOT.swap"
+               echo "using $VM_SWAP as vm swap"
+           fi
+       fi
+       if [ "$VM_TYPE" = 'xen' ]; then
+           # this should not be needed, but sometimes a xen instance got lost
+           XENID="${VM_IMAGE%/root}"
+           XENID="${XENID%/tmpfs}"
+           XENID="${XENID##*/}"
+           XENID="${XENID#root_}"
+           xm destroy "build_$XENID" >/dev/null 2>&1
+       fi
+       if test -n "$VMDISK_CLEAN" ; then
+           # delete old root/swap to get rid of the old blocks
+           if test -f "$VM_IMAGE" ; then
+               echo "Deleting old $VM_IMAGE"
+               rm -rf "$VM_IMAGE"
+           fi
+           if test -n "$VM_SWAP" -a -f "$VM_SWAP" ; then
+               echo "Deleting old $VM_SWAP"
+               rm -rf "$VM_SWAP"
+           fi
+       fi
+       if test ! -e "$VM_IMAGE"; then
+           vm_img_create "$VM_IMAGE" "$VMDISK_ROOTSIZE"
+           if test -z "$CLEAN_BUILD" ; then
+               vm_img_mkfs "$VMDISK_FILESYSTEM" "$VM_IMAGE"
+           fi
+       fi
+       if test -n "$VM_SWAP" -a ! -e "$VM_SWAP" -a ! -b "$VM_SWAP"; then
+           vm_img_create "$VM_SWAP" "$VMDISK_SWAPSIZE"
+       fi
+       if test ! -e "$VM_IMAGE" ; then
+           echo "you need to create $VM_IMAGE first"
+           cleanup_and_exit 3
+       fi
+       if test -n "$CLEAN_BUILD" ; then
+           vm_img_mkfs "$VMDISK_FILESYSTEM" "$VM_IMAGE" || cleanup_and_exit 3
+       fi
+       mkdir_build_root
+       if [ -w /root ]; then
+            if [ -b $VM_IMAGE ]; then
+                # mount device directly
+               mount $VMDISK_MOUNT_OPTIONS $VM_IMAGE $BUILD_ROOT || cleanup_and_exit 3
+           else
+               mount ${VMDISK_MOUNT_OPTIONS},loop $VM_IMAGE $BUILD_ROOT || cleanup_and_exit 3
+            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_IMAGE $BUILD_ROOT auto noauto,user,loop 0 0"
+               cleanup_and_exit 3
+           fi
+       fi
+    else
+       test -w /root || become_root_or_fail
+    fi
+    if test -n "$VM_SWAP" ; then
+       dd if=/dev/zero of="$VM_SWAP" bs=1024 count=1 conv=notrunc 2>/dev/null
+       echo "mkswap $VM_SWAP"
+       mkswap "$VM_SWAP"
+        [ "$VM_TYPE" = 'openstack' ] && openstack_volume_detach "$VM_SERVER" "$VM_VOLUME_SWAP"
+    fi
+fi
+
+mkdir_build_root
+
+if [ "$BUILD_ROOT" = / ]; then
+    browner="$(stat -c %u /)"
+fi
+
+rm -f $BUILD_ROOT/exit
+
+if [ -w /root ]; then
+    mkdir -p $BUILD_ROOT/proc
+    mkdir -p $BUILD_ROOT/dev/pts
+    mount -n -tproc none $BUILD_ROOT/proc || true
+    mount -n -tdevpts -omode=0620,gid=5 none $BUILD_ROOT/dev/pts
+fi
+
+if test -z "$VM_IMAGE" -a -z "$LOGFILE"; then
+    LOGFILE="$BUILD_ROOT/.build.log"
+fi
+
+if test -n "$LOGFILE" -a -z "$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 [ -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_IMAGE" ; 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(<STDIN>){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(<STDIN>){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 [ -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_IMAGE:+ in $VM_IMAGE}"
+    echo
+fi
+
+test "$BUILD_ARCH" = all && BUILD_ARCH=
+BUILD_USER_ABUILD_USED=
+
+for SPECFILE in "${SPECFILES[@]}" ; do
+
+    SRCDIR="${SPECFILE%/*}"
+    SPECFILE="${SPECFILE##*/}"
+
+    BUILDTYPE=
+    case $SPECFILE in
+      *.spec|*.src.rpm) BUILDTYPE=spec ;;
+      *.dsc) BUILDTYPE=dsc ;;
+      *.kiwi) BUILDTYPE=kiwi ;;
+      PKGBUILD) BUILDTYPE=arch ;;
+      _preinstallimage) BUILDTYPE=preinstallimage ;;
+    esac
+    if test -z "$BUILDTYPE" ; then
+       echo "don't know how to build $SPECFILE"
+       cleanup_and_exit 1
+    fi
+
+    cd "$SRCDIR"
+
+    if [ -z "$RUNNING_IN_VM" ]; then
+       echo
+       echo "$HOST started \"build $SPECFILE\" at `date --utc`."
+       echo
+       test -n "$REASON" && echo "$REASON"
+       echo
+        TIME_START_TIME=`date +%s` # for statistics
+    fi
+
+    #
+    # first setup building directory...
+    #
+    test -s "$SPECFILE" || {
+       echo "$SPECFILE" is empty.  This should not happen...
+       cleanup_and_exit 1
+    }
+
+    if test "$SPECFILE" != "${SPECFILE%.src.rpm}" ; then
+       echo processing src rpm $SRCDIR/$SPECFILE ...
+       MYSRCDIR=$BUILD_ROOT/.build-srcdir
+       rm -rf "$MYSRCDIR"
+       mkdir -p "$MYSRCDIR"
+       cd $MYSRCDIR || cleanup_and_exit 1
+       $BUILD_DIR/unrpm -q $SRCDIR/$SPECFILE || {
+           echo "could not install $SPECFILE."
+           cleanup_and_exit 1
+       }
+       for SPECFILE in *.spec ; do : ; done
+    else
+       MYSRCDIR="$SRCDIR"
+    fi
+
+    # FIX to work with baselibs_$PROJ etc
+    if test "$BUILDTYPE" == "dsc" -a -e ${SRCDIR}/baselibs-deb.conf ; then
+       # Set CREATE_BASELIBS if not set
+       echo "dsc build and baselibs-deb.conf present: forcing --baselibs to true"
+       CREATE_BASELIBS=true
+    fi
+
+# Currently local osc build does not allow extra .deb packages to be
+# specified on the command line. Both init_buildsystem and expanddeps
+# need to handle .deb dependencies first
+#    if test -n "$CREATE_BASELIBS" ; then
+#        case $BUILDTYPE in
+#            spec) ;;
+#            dsc) BUILD_EXTRA_PACKS="$BUILD_EXTRA_PACKS libparse-debcontrol-perl" ;;
+#        esac
+#    fi
+
+    echo processing specfile $MYSRCDIR/$SPECFILE ...
+
+    ADDITIONAL_PACKS=""
+    test -z "$BUILD_EXTRA_PACKS" || ADDITIONAL_PACKS="$ADDITIONAL_PACKS $BUILD_EXTRA_PACKS"
+    test -z "$CREATE_BASELIBS" || ADDITIONAL_PACKS="$ADDITIONAL_PACKS build"
+    test "$ccache" = '0' || 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"
+
+    if test -n "$CHANGELOG" -a -z "$RUNNING_IN_VM" ; then
+       rm -f $BUILD_ROOT/.build-changelog
+       case $SPECFILE in
+         *.dsc) CFFORMAT=debian ;;
+         *) CFFORMAT=rpm ;;
+       esac
+       echo "running changelog2spec --target $CFFORMAT --file $MYSRCDIR/$SPECFILE"
+       if ! $BUILD_DIR/changelog2spec --target $CFFORMAT --file "$MYSRCDIR/$SPECFILE" > $BUILD_ROOT/.build-changelog ; then
+           rm -f $BUILD_ROOT/.build-changelog
+       fi
+    fi
+
+    if test -n "$VM_TYPE" -a -z "$RUNNING_IN_VM"; then
+       rm -rf "$BUILD_ROOT/.build"
+       mkdir -p "$BUILD_ROOT/.build"
+       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 "${definesnstuff[@]}" "${repos[@]}" $CLEAN_BUILD $USE_SYSTEM_QEMU $USEUSEDFORBUILD $RPMLIST "$MYSRCDIR/$SPECFILE" $ADDITIONAL_PACKS
+           echo "$* ..."
+            start_time=`date +%s`
+           "$@" || cleanup_and_exit 1
+           check_exit
+            TIME_PREINSTALL=$(( `date +%s` - $start_time ))
+            unset start_time
+           if [ ! -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 xen, 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"
+           if test "$BUILDTYPE" = kiwi ; 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
+       Q="'\''"
+       echo "SPECFILE='${SPECFILE//"'"/$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 "KIWI_PARAMETERS='${KIWI_PARAMETERS//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data
+       # FIXME: this depends on the kernel and vm.
+       # could be hda2, sda2 for xen or hdb/sdb for qemu
+       test -n "$VM_SWAP" && echo "VM_SWAP='${VM_SWAPDEV:-/dev/hda2}'" >> $BUILD_ROOT/.build/build.data
+       test -n "$VMDISK_MOUNT_OPTIONS" && echo "VMDISK_MOUNT_OPTIONS='${VMDISK_MOUNT_OPTIONS}'" >> $BUILD_ROOT/.build/build.data
+       PERSONALITY=0
+       if test "$VM_TYPE" != 'lxc'; then
+           test -n "$PERSONALITY_SYSCALL" && PERSONALITY=`perl -e 'print syscall('$PERSONALITY_SYSCALL', 0)."\n"'`
+       fi
+       if test "$(uname -m)" = 'ppc'; then
+            # ppc kernel never tells us if a 32bit personality is active
+            PERSONALITY=8
+        fi
+       echo "PERSONALITY='$PERSONALITY'" >> $BUILD_ROOT/.build/build.data
+       echo "MYHOSTNAME='`hostname`'" >> $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 "shell='$shell'" >> $BUILD_ROOT/.build/build.data
+       echo "statistics='$statistics'" >> $BUILD_ROOT/.build/build.data
+        # fallback time for broken hosts
+        date '+@%s' > $BUILD_ROOT/.build/.date
+       if [ "$VM_TYPE" = 'emulator' ]; then
+            ln -sf /.build/build $BUILD_ROOT/sbin/init
+        fi
+        if [ "$VM_TYPE" = 'zvm' ]; then
+            # 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"
+            mkdir -p $BUILD_ROOT/boot
+            cp $vm_kernel $vm_initrd $BUILD_ROOT/boot
+            mkdir -p $BUILD_ROOT/boot/zipl
+             # finally, install bootloader to the worker disk
+             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"
+        fi
+       umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2> /dev/null || true
+       umount -n $BUILD_ROOT/proc 2> /dev/null || true
+       umount -n $BUILD_ROOT/dev/pts 2> /dev/null || true
+       umount -n $BUILD_ROOT/dev/shm 2> /dev/null || true
+       umount -n $BUILD_ROOT/mnt 2> /dev/null || true
+
+       if check_use_emulator; then
+           if [ -e $BUILD_DIR/initvm.$BUILD_HOST_ARCH -a -e "$BUILD_DIR/qemu-reg" ]; then
+                chmod 0755 "$BUILD_DIR/initvm.$BUILD_HOST_ARCH"
+                vm_init_script="/.build/initvm.$BUILD_HOST_ARCH"
+           else
+               echo "Warning: can't find initscript to register binfmts"
+           fi
+       else
+           vm_init_script="/.build/build"
+       fi
+
+       if [ "$VM_TYPE" = 'emulator' ]; then
+                # generic emulator hook. an external script is needed to define
+                # the emulator startup
+                sync
+                pushd $BUILD_DIR/emulator
+                if [ -z "$EMULATOR_SCRIPT" ]; then
+                   EMULATOR_SCRIPT="./emulator.sh"
+                elif [ "${EMULATOR_SCRIPT:0:1}" != "/" ]; then
+                   EMULATOR_SCRIPT="./$EMULATOR_SCRIPT"
+                fi
+               set -- "$EMULATOR_SCRIPT" "$VM_IMAGE"
+               echo "$@"
+               if ! "$@"; then
+                     popd
+                     echo "ERROR: The emulator return with an failure"
+                     cleanup_and_exit 3
+                fi
+                popd
+
+       fi
+
+        if [ "$VM_TYPE" = 'openstack' -o "$VM_TYPE" = 'ec2' ]; then
+            # No way to handle this via init= parameter here....
+            echo "#!/bin/sh"               >  "$BUILD_ROOT/sbin/init"
+            echo 'exec /.build/build "$@"' >> "$BUILD_ROOT/sbin/init"
+            chmod 0755 "$BUILD_ROOT/sbin/init"
+        fi
+        if [ "$VM_TYPE" = 'ec2' ]; then
+            # use the instance kernel, if no kernel got installed via preinstall
+            if ! test -e "$BUILD_ROOT/boot/vmlinuz"; then
+                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
+                mkdir -p "$BUILD_ROOT/boot/grub"
+                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" >> "$BUILD_ROOT/boot/grub/menu.lst"
+                echo "   initrd /boot/initrd"                                                         >> "$BUILD_ROOT/boot/grub/menu.lst"
+            fi
+        fi
+       if [ -n "$VM_IMAGE" ]; then
+           check_exit
+           # needs to work otherwise we have a corrupted file system
+           umount $BUILD_ROOT || cleanup_and_exit 3
+       fi
+
+        if [ "$VM_TYPE" = 'openstack' -o "$VM_TYPE" = 'ec2' ]; then
+          cloud_volume_detach "$VM_SERVER" "$VM_VOLUME_NAME" || cleanup_and_exit 3
+        fi
+
+       if [ -n "$VM_IMAGE" -a "$VM_TYPE" = "zvm" ]; then
+          # detach the worker root and swap locally and link it in the worker
+          zvm_cp volume_detach_local $VM_VOLUME_ROOT ${zvm_worker_nr}
+          zvm_cp volume_detach_local $VM_VOLUME_SWAP ${zvm_worker_nr}
+          zvm_cp volume_attach $VM_WORKER $VM_VOLUME_ROOT
+          zvm_cp volume_attach $VM_WORKER $VM_VOLUME_SWAP
+       fi
+
+       if [ "$VM_TYPE" = 'xen' ]; then
+               XMROOT="file:$(readlink -f $VM_IMAGE)"
+               XMROOT=${XMROOT/#file:\/dev/phy:/dev}
+               XMROOT="disk=$XMROOT,hda1,w"
+               XMSWAP=
+               if test -n "$VM_SWAP" ; then
+                   XMSWAP="file:$(readlink -f $VM_SWAP)"
+                   XMSWAP=${XMSWAP/#file:\/dev/phy:/dev}
+                   XMSWAP="disk=$XMSWAP,hda2,w"
+               fi
+               XENID="${VM_IMAGE%/root}"
+               XENID="${XENID%/tmpfs}"
+               XENID="${XENID##*/}"
+               XENID="${XENID#root_}"
+
+               echo "booting XEN kernel ..."
+               if xm list "build_$XENID" >/dev/null 2>&1 ; then
+                  echo "Instance already exist, 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 = ${MEMSIZE:-64}"                                           >> $XEN_CONF_FILE
+               echo "vcpus = $BUILD_JOBS"                                               >> $XEN_CONF_FILE
+               echo "root = \"/dev/hda1 ro\""                                           >> $XEN_CONF_FILE
+               echo "extra = \"init=/bin/bash console=ttyS0 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
+               set -- xm create -c $XEN_CONF_FILE name="build_$XENID" $XMROOT $XMSWAP extra="quiet init="$vm_init_script" elevator=noop panic=1 console=ttyS0"
+               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 "$XEN_CONF_FILE"
+       elif [ "$VM_TYPE" = 'uml' ]; then
+               echo "booting UML kernel ..."
+               set -- $uml_kernel initrd=$uml_initrd root=ubda init="$vm_init_script" panic=1 elevator=noop quiet ubda=$VM_IMAGE ubdb=$VM_SWAP ${MEMSIZE:+mem=$MEMSIZE}
+               echo "$@"
+               "$@"
+       elif [ "$VM_TYPE" = 'qemu' -o "$VM_TYPE" = 'kvm' ]; then
+               echo "booting $VM_TYPE ..."
+                if [ "$VM_TYPE" = 'kvm' -a -b "$VM_IMAGE" ]; then
+                  # speed optimization when using kvm with raw devices
+                 CACHE=",cache=none"
+                else
+                  # speed optimization when using kvm with raw files
+                 CACHE=",cache=unsafe"
+               fi
+
+               # we do not want to have sound inside the VMs
+               export QEMU_AUDIO_DRV=none
+
+               if [ "$kvm_virtio" = 1 ]; then
+                   qemu_args=(-drive file="$VM_IMAGE",if=virtio$CACHE -drive file="$VM_IMAGE",if=ide,index=0$CACHE)
+                   if [ -n "$VM_SWAP" ]; then
+                       qemu_args=("${qemu_args[@]}" "-drive")
+                       qemu_args=("${qemu_args[@]}" "file=$VM_SWAP,if=virtio$CACHE")
+                   fi
+                   if [ "$HOST_ARCH" = "armv7l" ]; then
+                       qemu_args=(-drive file="$VM_IMAGE",if=none,id=disk$CACHE -device virtio-blk,transport=virtio-mmio.0,drive=disk)
+                       qemu_args=("${qemu_args[@]}" "-drive")
+                       qemu_args=("${qemu_args[@]}" "file=$VM_SWAP,if=none,id=swap$CACHE")
+                       qemu_args=("${qemu_args[@]}" "-device")
+                       qemu_args=("${qemu_args[@]}" "virtio-blk,transport=virtio-mmio.1,drive=swap")
+                   fi
+               else
+                       if [ "$HOST_ARCH" = "ppc970" ];then
+                               qemu_args=( "-drive" )
+                               qemu_args=("${qemu_args[@]}" "file=$VM_IMAGE,if=scsi,cache=unsafe")
+                       else
+                               qemu_args=(-hda "$VM_IMAGE")
+                       fi
+                       if [ -n "$VM_SWAP" ]; then
+                               qemu_args=("${qemu_args[@]}" "-drive")
+                               if [ "$HOST_ARCH" = "ppc970" ];then
+                                       DISK_IF=scsi
+                               else
+                                       DISK_IF=ide
+                               fi
+                               qemu_args=("${qemu_args[@]}" "file=$VM_SWAP,if=$DISK_IF,index=1$CACHE")
+                       fi
+               fi
+               if [ -n "$BUILD_JOBS" -a "$icecream" = 0 -a -z "$BUILD_THREADS" ]; then
+                   qemu_args=("${qemu_args[@]}" "-smp" "$BUILD_JOBS")
+               elif [ -n "$BUILD_JOBS" -a -n "$BUILD_THREADS" ]; then
+                   qemu_args=("${qemu_args[@]}" "-smp" "$BUILD_JOBS,threads=$BUILD_THREADS")
+               fi
+               if [ "$VM_TYPE" = 'kvm' -a "$HOST_ARCH" != "armv7l" ]; then
+                       KVM_OPTIONS="$KVM_OPTIONS -cpu host"
+                       if [ -n "$HUGETLBFSPATH" ]; then
+                             KVM_OPTIONS="$KVM_OPTIONS -mem-path $HUGETLBFSPATH"
+                       fi
+               fi
+
+               set -- $qemu_bin -no-reboot -nographic -vga none -net none $KVM_OPTIONS \
+                   -kernel $vm_kernel \
+                   -initrd $vm_initrd \
+                   -append "root=$qemu_rootdev panic=1 quiet no-kvmclock nmi_watchdog=0 rw elevator=noop console=$console init=$vm_init_script" \
+                   ${MEMSIZE:+-m $MEMSIZE} \
+                   "${qemu_args[@]}"
+
+               if test "$PERSONALITY" != 0 ; then
+                   # have to switch back to PER_LINUX to make qemu work
+                   set -- linux64 "$@"
+               fi
+               echo "$@"
+               "$@"
+       elif [ "$VM_TYPE" = 'ec2' ]; then
+               echo "booting $VM_TYPE ..."
+                EC2_SNAP_root=`ec2-create-snapshot --region "$BUILD_EC2_REGION" "$VM_VOLUME_NAME" | awk '{ print $2 }'`
+                if [ "$EC2_SNAP_root" == "${EC2_SNAP_root#snap-}" ]; then
+                    echo "ERROR: Failed to create snapshot for root disk $VM_VOLUME_NAME"
+                    cleanup_and_exit 3
+                fi
+                EC2_SNAP_swap=`ec2-create-snapshot --region "$BUILD_EC2_REGION" "$VM_VOLUME_SWAP" | awk '{ print $2 }'`
+                if [ "$EC2_SNAP_swap" == "${EC2_SNAP_swap#snap-}" ]; then
+                    echo "ERROR: Failed to create snapshot for swap disk $VM_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`
+                    [ "$c" == "2" ] && break
+                done
+                EC2_AMI=`ec2-register --region "$BUILD_EC2_REGION" -n build-$VM_VOLUME_NAME  -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 [ "$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 $BUILD_EC2_TYPE --kernel "$BUILD_EC2_AKI" --instance-initiated-shutdown-behavior terminate "$EC2_AMI" | grep ^INSTANCE | awk '{ print $2 }'`
+                if [ "$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 [ -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 :/
+#                    [ "$state" == "${state/stopped/}" ] || break
+                    [ "$state" == "${state/terminated/}" ] || break
+                    I=$(( $I + 1 ))
+                    if [ $I -gt 10 ]; then
+                       echo -n .
+                       I="0"
+                       L=$(( $L + 1 ))
+                    fi
+                    if [ $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 "$temp_file"
+                echo
+                ec2-deregister --region "$BUILD_EC2_REGION" "$EC2_AMI"
+                # snapshots get deleted after extract
+       elif [ "$VM_TYPE" = 'openstack' ]; then
+               echo "booting $VM_TYPE ..."
+                nova boot --image $OBS_OPENSTACK_KERNEL_IMAGE_ID --flavor m1.small --block_device_mapping vda=${VM_VOLUME_NAME}::$(( $VMDISK_ROOTSIZE / 1024 )):0 --block_device_mapping vdb=${VM_VOLUME_SWAP}::1:0 --poll "build-$VM_VOLUME_NAME" || cleanup_and_exit 3
+                
+#                while [ `nova show "build-$VM_VOLUME_NAME" | sed -n -e 's,|[ ]*status[ ]*|[ ]*\([^ ]*\).*,\1,p'` == "ACTIVE" ]; do
+#                  sleep 5
+#                done
+                nova console-log "build-$VM_VOLUME_NAME"
+       elif [ "$VM_TYPE" = 'lxc' ]; then
+               echo "booting $VM_TYPE ..."
+               LXCCONF="$BUILD_ROOT/.build.lxc.conf"
+               rm -f "$LXCCONF"
+               cat $BUILD_DIR/lxc.conf > "$LXCCONF"
+               cat >> "$LXCCONF" <<-EOF
+               lxc.rootfs = $BUILD_ROOT
+               EOF
+               # XXX: do this always instead of leaking the hosts' one?
+               echo "rootfs / rootfs rw 0 0" > $BUILD_ROOT/etc/mtab
+               LXCID=${BUILD_ROOT##*/}
+               lxc-destroy -n "$LXCID" >/dev/null 2>&1 || true
+               lxc-create -n "$LXCID" -f "$LXCCONF" || cleanup_and_exit 1
+               lxc-start -n "$LXCID" "$vm_init_script"
+               BUILDSTATUS="$?"
+               test "$BUILDSTATUS" != 255 || BUILDSTATUS=3
+               cleanup_and_exit "$BUILDSTATUS"
+        elif [ "$VM_TYPE" = 'zvm' ]; then
+                echo "booting $VM_TYPE ..."
+                zvm_cp ipl $VM_WORKER $VM_VOLUME_ROOT
+                # start IUCV Console
+                # IPL needs some time until IPL really starts...
+                 sleep 2
+                 # start iucv console. This blocks until build process is finished.
+                iucvconn $VM_WORKER lnxhvc0
+                # Take root and swap devices from worker
+                # This might be critical regarding timing (IUCV_CONSOLE down, but machine still running)
+                sleep 5
+                zvm_cp volume_detach $VM_WORKER $VM_VOLUME_ROOT
+                zvm_cp volume_detach $VM_WORKER $VM_VOLUME_SWAP
+                VM_IMAGE="/dev/$(zvm_cp volume_link_local $VM_WORKER $VM_VOLUME_ROOT $zvm_mult_pass $zvm_worker_nr)"
+                VM_SWAP="/dev/$(zvm_cp volume_link_local $VM_WORKER $VM_VOLUME_SWAP $zvm_mult_pass $zvm_worker_nr)"
+       fi
+
+       if [ "$VM_TYPE" = 'openstack' ]; then
+           VM_IMAGE=`cloud_volume_attach "$VM_SERVER" "$VM_VOLUME_NAME" "$VM_IMAGE"`
+           [ "${VM_IMAGE:0:5}" == "/dev/" ] || cleanup_and_exit 3
+           VM_SWAP=`cloud_volume_attach "$VM_SERVER" "$VM_VOLUME_SWAP" "$VM_SWAP"`
+           [ "${VM_SWAP:0:5}" == "/dev/" ] || cleanup_and_exit 3
+        fi
+       if [ "$VM_TYPE" = 'ec2' ]; then
+           VM_IMAGE=`cloud_volume_attach "$VM_SERVER" "$EC2_EXTRACT_VOLUME_root" "$VM_IMAGE"`
+           [ "${VM_IMAGE:0:5}" == "/dev/" ] || cleanup_and_exit 3
+           VM_SWAP=`cloud_volume_attach "$VM_SERVER" "$EC2_EXTRACT_VOLUME_swap" "$VM_SWAP"`
+           [ "${VM_SWAP:0:5}" == "/dev/" ] || cleanup_and_exit 3
+        fi
+
+        # Exctract build resutls from VM
+       if [ "$VM_TYPE" = 'emulator' ]; then
+            # 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_IMAGE -o loop .mount
+            if [ -e .mount/.build.packages ]; then
+              cp -a .mount/.build.packages/* .
+            fi
+            exitcode=`cat .mount/.build/_exitcode`
+            umount .mount
+            rmdir .mount
+
+           cleanup_and_exit "$exitcode"
+
+       elif test -n "$VM_SWAP" ; then
+           BUILDSTATUS=`dd if="$VM_SWAP" bs=12 count=1 2>/dev/null`
+           case $BUILDSTATUS in
+             BUILDSTATUS[02])
+               mkdir -p $BUILD_ROOT/.build.packages
+               cd $BUILD_ROOT/.build.packages || cleanup_and_exit 1
+               echo "build: extracting built packages..."
+               extractbuild --disk "$VM_IMAGE" --input "$VM_SWAP" --skip 512 -v || cleanup_and_exit 3
+               # create same layout as with plain chroot
+               if test "$BUILDTYPE" = spec ; then
+                   mkdir -p SRPMS
+                   for i in *src.rpm *.desktopfiles ; do
+                       test -e "$i" || continue
+                       mv "$i" SRPMS/
+                   done
+                   for i in *.rpm ; do
+                       test -e "$i" || continue
+                       arch=${i%.rpm}
+                       arch=${i%.delta}
+                       arch=${arch##*\.}
+                       mkdir -p RPMS/$arch
+                       mv "$i" RPMS/$arch/
+                   done
+               elif test "$BUILDTYPE" = dsc ; then
+                   mkdir -p DEBS
+                   find . -type f | while read i; do mv "$i" DEBS/; done
+               elif test "$BUILDTYPE" = arch ; then
+                   mkdir -p ARCHPKGS
+                   find . -type f | while read i; do mv "$i" ARCHPKGS/; done
+               elif test "$BUILDTYPE" = kiwi ; then
+                   mkdir -p KIWI
+                   find . -type f | while read i; do mv "$i" KIWI/; done
+               fi
+               for i in * ; do
+                   test -f "$i" || continue
+                   case $i in
+                       _*|.*) ;;
+                       *) mkdir -p OTHER ; mv $i OTHER/ ;;
+                   esac
+               done
+                if test "$statistics" = 1; then
+                    mkdir -p OTHER
+                    [ -e _statistics ] && mv _statistics OTHER/
+                    [ -n "$TIME_PREINSTALL" ] && echo "TIME_preinstall: $TIME_PREINSTALL"  >> OTHER/_statistics
+                    TIME_TOTAL=$(( `date +%s` - $TIME_START_TIME ))
+                    echo "TIME_total: $TIME_TOTAL"  >> OTHER/_statistics
+                fi
+               if [ "$VM_TYPE" = 'zvm' ]; then
+                   # free worker devices
+                   zvm_cp volume_detach_local $VM_VOLUME_ROOT ${zvm_worker_nr}
+                   zvm_cp volume_detach_local $VM_VOLUME_SWAP ${zvm_worker_nr}
+               fi
+               if [ "$VM_TYPE" = 'openstack' ]; then
+                    cloud_volume_detach "$VM_SERVER" "$VM_VOLUME_NAME"
+                    cloud_volume_detach "$VM_SERVER" "$VM_VOLUME_SWAP"
+                fi
+               cleanup_and_exit ${BUILDSTATUS#BUILDSTATUS}
+               ;;
+             BUILDSTATUS*)
+               if [ "$VM_TYPE" = 'zvm' ]; then
+                   # free worker devices
+                   zvm_cp volume_detach_local $VM_VOLUME_ROOT ${zvm_worker_nr}
+                   zvm_cp volume_detach_local $VM_VOLUME_SWAP ${zvm_worker_nr}
+               fi
+               cleanup_and_exit ${BUILDSTATUS#BUILDSTATUS}
+               ;;
+             *)
+               if [ "$VM_TYPE" = 'zvm' ]; then
+                   # free worker devices
+                   zvm_cp volume_detach_local $VM_VOLUME_ROOT ${zvm_worker_nr}
+                   zvm_cp volume_detach_local $VM_VOLUME_SWAP ${zvm_worker_nr}
+               fi
+               echo "No buildstatus set, either the base system is broken (glibc/bash/perl)"
+               echo "or the build host has a kernel or hardware problem..."
+               cleanup_and_exit 3
+               ;;
+           esac
+
+           cleanup_and_exit 1
+       fi
+
+       cleanup_and_exit 0
+    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
+       CREATE_BUILD_BINARIES=
+       test "$BUILDTYPE" = preinstallimage && mkdir -p $BUILD_ROOT/.preinstall_image
+       egrep '^#[       ]*needsbinariesforbuild[       ]*$' >/dev/null <$MYSRCDIR/$SPECFILE && CREATE_BUILD_BINARIES=--create-build-binaries
+       set -- init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" "${definesnstuff[@]}" "${repos[@]}" $CLEAN_BUILD $USE_SYSTEM_QEMU $USEUSEDFORBUILD $CREATE_BUILD_BINARIES $RPMLIST "$MYSRCDIR/$SPECFILE" $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
+               echo "build does not work on a completely full filesystem"
+               cleanup_and_exit 1
+           fi
+       fi
+       mount -n -tproc none $BUILD_ROOT/proc || true
+       mount -n -tdevpts -omode=0620,gid=5 none $BUILD_ROOT/dev/pts
+
+       copy_oldpackages
+    fi
+
+    if test "$BUILDTYPE" = preinstallimage ; then
+       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*) 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"
+       continue
+    fi
+
+    if test -z "$BUILD_DIST" -a -e "$BUILD_ROOT/.guessed_dist" ; then
+       read BUILD_DIST < $BUILD_ROOT/.guessed_dist
+    fi
+
+    #
+    # 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
+
+    #
+    # 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`
+       if test -n "$SUSE_VERSION" && test "$SUSE_VERSION" -le 1020 ; then
+           BUILD_USER=root
+       fi
+    fi
+    if test "$BUILD_USER" = abuild ; then
+       egrep '^#[       ]*needsrootforbuild[       ]*$' >/dev/null <$SPECFILE && BUILD_USER=root
+    else
+       egrep '^#[       ]*norootforbuild[       ]*$' >/dev/null <$SPECFILE && 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 $SPECFILE imagetype)
+      test "$imagetype" = 'product' || BUILD_USER=root
+    fi
+
+    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 -e "s@^root::@root:*:@" < $BUILD_ROOT/etc/shadow > $BUILD_ROOT/etc/shadow.t && mv $BUILD_ROOT/etc/shadow.t $BUILD_ROOT/etc/shadow
+       fi
+       if test -f $BUILD_ROOT/etc/gshadow ; then
+           sed -e "s@^root::@root:*:@" < $BUILD_ROOT/etc/gshadow > $BUILD_ROOT/etc/gshadow.t && mv $BUILD_ROOT/etc/gshadow.t $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"
+           egrep -v '^abuild:' <$BUILD_ROOT/etc/passwd >$BUILD_ROOT/etc/passwd.new
+           mv $BUILD_ROOT/etc/passwd.new $BUILD_ROOT/etc/passwd
+           egrep -v '^abuild:' <$BUILD_ROOT/etc/group >$BUILD_ROOT/etc/group.new
+           mv $BUILD_ROOT/etc/group.new $BUILD_ROOT/etc/group
+           if test -f $BUILD_ROOT/etc/shadow ; then
+             egrep -v '^abuild:' <$BUILD_ROOT/etc/shadow >$BUILD_ROOT/etc/shadow.new
+             mv $BUILD_ROOT/etc/shadow.new $BUILD_ROOT/etc/shadow
+           fi
+           if test -f $BUILD_ROOT/etc/gshadow ; then
+             egrep -v '^abuild:' <$BUILD_ROOT/etc/gshadow >$BUILD_ROOT/etc/gshadow.new
+             mv $BUILD_ROOT/etc/gshadow.new $BUILD_ROOT/etc/gshadow
+           fi
+       fi
+    fi
+
+    if test "$BUILDTYPE" = spec ; then
+       TOPDIR=`chroot $BUILD_ROOT su -c "rpm --eval '%_topdir'" - $BUILD_USER`
+       if test -z "$TOPDIR"; then
+           echo "Error: TOPDIR empty"
+           cleanup_and_exit 1
+       fi
+    else
+       TOPDIR=/usr/src/packages
+       mkdir -p $BUILD_ROOT$TOPDIR
+    fi
+
+    rm -f $BUILD_ROOT/.build.packages
+    ln -s ${TOPDIR#/} $BUILD_ROOT/.build.packages
+
+    mount -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+    mount -n -tdevpts -omode=0620,gid=5 none $BUILD_ROOT/dev/pts 2> /dev/null
+    # needed for POSIX semaphores
+    mount -n -ttmpfs none $BUILD_ROOT/dev/shm 2> /dev/null
+
+    setupicecream
+
+    setupccache
+
+    # 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
+
+    #
+    # now clean up RPM building directories
+    #
+    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"
+    check_exit
+
+    mkdir -p $BUILD_ROOT$TOPDIR/SOURCES
+    if test "$BUILDTYPE" = kiwi ; then
+       mkdir -p $BUILD_ROOT$TOPDIR/KIWI
+       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
+               echo "source copy failed"
+               cleanup_and_exit 1
+           fi
+       fi
+    else
+       cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
+    fi
+    # strip prefix from autogenerated files of source services.
+    for i in $BUILD_ROOT$TOPDIR/SOURCES/_service\:*; do
+      mv "$i" "${i%/*}/${i##*:}"
+    done
+    SPECFILE="${SPECFILE##*:}"
+
+    test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir && rm -rf "$MYSRCDIR"
+    CHANGELOGARGS=
+    test -n "$CHANGELOG" -a -f "$BUILD_ROOT/.build-changelog" && CHANGELOGARGS="--changelog $BUILD_ROOT/.build-changelog"
+
+    if test "$BUILDTYPE" = spec ; then
+       # do buildrequires/release substitution
+       args=()
+       if test -n "$RELEASE"; then
+               args=(--release "$RELEASE")
+       fi
+       substitutedeps "${args[@]}" --root "$BUILD_ROOT" --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" $CHANGELOGARGS "$BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE" "$BUILD_ROOT/.spec.new" || cleanup_and_exit 1
+       # extract macros from configuration
+       getmacros --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" > $BUILD_ROOT/root/.rpmmacros
+       if test -n "$BUILD_DEBUG" ; 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/.rpmmacros
+       fi
+
+       if [ -n "$BUILD_JOBS" ]; then
+               cat >> $BUILD_ROOT/root/.rpmmacros <<-EOF
+               %jobs $BUILD_JOBS
+               %_smp_mflags -j$BUILD_JOBS
+               EOF
+       fi
+       test $BUILD_USER = abuild && cp -p $BUILD_ROOT/root/.rpmmacros $BUILD_ROOT/home/abuild/.rpmmacros
+       # extract optflags from configuration
+       getoptflags --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" ${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=$(getchangetarget --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH" )
+           test -z "$ABUILD_TARGET" || echo "build target is $ABUILD_TARGET"
+       fi
+    fi
+    if test -f $BUILD_ROOT/.spec.new ; then
+       if ! cmp -s $BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE $BUILD_ROOT/.spec.new ; then
+           echo -----------------------------------------------------------------
+           echo "I have the following modifications for $SPECFILE:"
+           sed -e "/^%changelog/q" $BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE > $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/$SPECFILE
+       else
+           rm -f $BUILD_ROOT/.spec.new
+       fi
+    fi
+
+    if test "$BUILDTYPE" = dsc ; then
+       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=$SPECFILE
+       for f in $BUILD_ROOT$TOPDIR/SOURCES/debian.* ; do
+           test -f $f && DEB_TRANSFORM=true
+       done
+       if test -n "$DEB_TRANSFORM" ; then
+           echo "running debian transformer..."
+           if ! debtransform $CHANGELOGARGS $BUILD_ROOT$TOPDIR/SOURCES $BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE $BUILD_ROOT$TOPDIR/SOURCES.DEB ; then
+               echo "debian transforming failed."
+               cleanup_and_exit 1
+           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
+    fi
+
+    if test "$BUILDTYPE" = arch ; then
+       echo "Preparing sources..."
+       chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && makepkg -s -o 2>&1 >/dev/null" - $BUILD_USER
+       mv $BUILD_ROOT/$TOPDIR/SOURCES/* -t $BUILD_ROOT/$TOPDIR/BUILD
+    fi
+
+    chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR"
+    cd $BUILD_ROOT$TOPDIR/SOURCES || cleanup_and_exit 1
+
+    echo -----------------------------------------------------------------
+    if test "$BUILD_USER" = root ; then
+       echo ----- building $SPECFILE
+    else
+       echo ----- building $SPECFILE "(user $BUILD_USER)"
+    fi
+    echo -----------------------------------------------------------------
+    echo -----------------------------------------------------------------
+    if [ -n "$RUNNING_IN_VM" ]; then
+       if [ -x /sbin/ip ]; then
+           ip addr add 127.0.0.1/8 dev lo
+           ip link set lo up
+       else
+           ifconfig lo 127.0.0.1 up
+       fi
+       if [ -n "$MYHOSTNAME" ]; then
+           hostname "$MYHOSTNAME"
+       fi
+    fi
+
+    BUILD_SUCCEEDED=false
+
+    if test -n "$OVERLAY" ; then
+       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
+    fi
+
+    if test -n "$RSYNCSRC" ; then
+       if test -n "$RSYNCDEST"; then
+           if test -d "$RSYNCSRC"; then
+               if ! test -d "$BUILD_ROOT/$RSYNCDEST"; then
+                   echo "ATTENTION! Creating target directory ($BUILD_ROOT/$RSYNCDEST) as its not there."
+                   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 no directory - skipping"
+           fi
+       else
+           echo "RSYNCSRC given, but not RSYNCDEST - skipping"
+       fi
+    fi
+
+    start_time=`date +%s`
+    if test "$BUILDTYPE" = spec ; then
+       test -z "$BUILD_RPM_BUILD_STAGE" && BUILD_RPM_BUILD_STAGE=-ba
+
+       rpmbuild=rpmbuild
+       test -x $BUILD_ROOT/usr/bin/rpmbuild || rpmbuild=rpm
+
+       # XXX: move _srcdefattr to macro file?
+       rpmbopts=("$BUILD_RPM_BUILD_STAGE" "--define" "_srcdefattr (-,root,root)")
+       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
+
+       # su involves a shell which would require even more
+       # complicated quoting to bypass than this
+       toshellscript $rpmbuild \
+               "${definesnstuff[@]}" \
+               "${rpmbopts[@]}" \
+               "$TOPDIR/SOURCES/$SPECFILE" \
+               > $BUILD_ROOT/.build.command
+       chmod 755 $BUILD_ROOT/.build.command
+       check_exit
+       if test -n "$shell"; then
+           chroot $BUILD_ROOT su -
+       else
+           chroot $BUILD_ROOT su -c /.build.command - $BUILD_USER < /dev/null && BUILD_SUCCEEDED=true
+       fi
+    fi
+
+    if test "$BUILDTYPE" = dsc ; then
+       # 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
+# Debian policy requires to build with single CPU by default
+#      if [ -n "$BUILD_JOBS" ]; then
+#          DSC_BUILD_JOBS="-j$BUILD_JOBS"
+#      fi
+       DSC_BUILD_CMD="dpkg-buildpackage -us -uc -rfakeroot-tcp $DSC_BUILD_JOBS"
+       if test -e $BUILD_ROOT/$TOPDIR/SOURCES/build.script ; then
+           echo "Sourcing build.script to build - it should normally run 'dpkg-buildpackage -us -uc -rfakeroot-tcp'"
+           DSC_BUILD_CMD="source $TOPDIR/SOURCES/build.script"
+           chmod +x $BUILD_ROOT/$TOPDIR/SOURCES/build.script
+       fi
+
+       if test -n "$shell"; then
+           chroot $BUILD_ROOT su -
+       else
+           chroot $BUILD_ROOT su -c "cd $TOPDIR/BUILD && $DSC_BUILD_CMD" - $BUILD_USER < /dev/null && BUILD_SUCCEEDED=true
+           if test "$BUILD_SUCCEEDED" = true -a "$DO_CHECKS" != "false"; then
+               DEB_CHANGESFILE=${SPECFILE%.dsc}_"$(chroot $BUILD_ROOT su -c 'dpkg-architecture -qDEB_BUILD_ARCH')".changes
+               chroot $BUILD_ROOT su -c "which lintian > /dev/null && cd $TOPDIR && echo Running lintian && (set -x && lintian -i $DEB_SOURCEDIR/$DEB_DSCFILE)" - $BUILD_USER < /dev/null
+           fi
+       fi
+
+       mkdir -p $BUILD_ROOT/$TOPDIR/DEBS
+       for DEB in $BUILD_ROOT/$TOPDIR/*.deb ; do
+           test -e "$DEB" && mv "$DEB" "$BUILD_ROOT/$TOPDIR/DEBS"
+       done
+       # link sources over
+       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)
+    fi
+
+    if test "$BUILDTYPE" = arch ; then
+       chroot $BUILD_ROOT su -c "cd $TOPDIR/BUILD && makepkg -f" - $BUILD_USER < /dev/null && BUILD_SUCCEEDED=true
+       mkdir -p $BUILD_ROOT/$TOPDIR/ARCHPKGS
+       for PKG in $BUILD_ROOT/$TOPDIR/BUILD/*.pkg.tar.?z ; do
+           test -e "$PKG" && mv "$PKG" "$BUILD_ROOT/$TOPDIR/ARCHPKGS"
+       done
+    fi
+
+    if test "$BUILDTYPE" = kiwi ; then
+       . $BUILD_DIR/build_kiwi.sh
+       run_kiwi
+    fi
+    if test "$statistics" = 1; then
+        mkdir -p $TOPDIR/OTHER
+        echo "TIME_main_build: $(( `date +%s` - $start_time ))"  >> $TOPDIR/OTHER/_statistics
+    fi
+    unset start_time
+
+    test "$BUILD_SUCCEEDED" = true || cleanup_and_exit 1
+    test -d "$SRCDIR" && cd "$SRCDIR"
+done
+
+if test -n "$RUNNING_IN_VM" -a -n "$VM_SWAP"; then
+    touch /.build/_statistics.exit
+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" 2>/dev/null || true`
+
+if test -n "$RPMS" -a -n "$BUILD_USER_ABUILD_USED" ; then
+    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
+       echo "please fix your filelist (e.g. add defattr)"
+       cleanup_and_exit 1
+    fi
+fi
+
+if test -n "$RPMS" -a -d "$BUILD_ROOT/usr/lib/build/checks" ; then
+    export PNAME=""
+    export DO_RPM_REMOVE=true
+    for SRPM in $BUILD_ROOT/$TOPDIR/SRPMS/*src.rpm ; do
+       test -f "$SRPM" && PNAME=`rpm --nodigest --nosignature -qp --qf "%{NAME}" $SRPM`
+    done
+    mount -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+    for CHECKSCRIPT in $BUILD_ROOT/usr/lib/build/checks/* ; do
+       echo "... running `basename $CHECKSCRIPT`"
+       $CHECKSCRIPT || cleanup_and_exit 1
+    done
+    umount -n $BUILD_ROOT/proc 2>/dev/null || true
+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" 2>/dev/null || true`
+
+if test -n "$RPMS" -a "$DO_CHECKS" != "false" -a -x "$BUILD_ROOT/opt/testing/bin/rpmlint" ; then
+    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
+    mount -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+    chroot $BUILD_ROOT su -s /opt/testing/bin/rpmlint "$BUILD_USER" -- \
+           --info ${LINT_RPM_FILE_LIST[*]#$BUILD_ROOT} \
+           ${SRPM_FILE_LIST[*]#$BUILD_ROOT} > "$BUILD_ROOT$rpmlint_logfile" || ret=1
+           cat "$BUILD_ROOT$rpmlint_logfile"
+           echo
+    umount -n $BUILD_ROOT/proc 2>/dev/null || true
+    if test "$ret" = 1; then
+       cleanup_and_exit 1
+    fi
+fi
+
+if test \( -n "$RPMS" -o -n "$DEBS" \) -a -n "$CREATE_BASELIBS"; then
+    create_baselibs
+fi
+
+exitcode=0
+# post build scripts
+# 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/$TOPDIR/RPMS" \
+       -a -d "$BUILD_ROOT/.build.oldpackages" \
+       ; then
+    if test -x "$BUILD_ROOT/usr/lib/build/same-build-result.sh" ; then
+       echo "... comparing built packages with the former built"
+       mount -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+       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
+        umount -n $BUILD_ROOT/proc 2>/dev/null || true
+    fi
+    if test ! -e $BUILD_ROOT/.build/.same_result_marker \
+       -a -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
+fi
+
+if test -n "$RUNNING_IN_VM"; then
+    if test "$statistics" = 1; then
+         echo "... saving built statistics"
+         [ -n "$TIME_INSTALL" ] && echo "TIME_install: $TIME_INSTALL"  >> $BUILD_ROOT$TOPDIR/OTHER/_statistics
+         if [ -e /.build/_statistics.df ]; then
+           echo -n "MAX_mb_used_on_disk: " >> $TOPDIR/OTHER/_statistics
+           cat /.build/_statistics.df >> $TOPDIR/OTHER/_statistics
+           echo "" >> $TOPDIR/OTHER/_statistics
+           rm /.build/_statistics.df
+         fi
+         if [ -e /.build/_statistics.memory ]; then
+           echo -n "MAX_mb_used_memory: " >> $TOPDIR/OTHER/_statistics
+           cat /.build/_statistics.memory >> $TOPDIR/OTHER/_statistics
+           echo "" >> $TOPDIR/OTHER/_statistics
+           rm /.build/_statistics.memory
+         fi
+         mkdir -p /sys
+         mount -n sys /sys -t sysfs
+         device="hda1"
+         [ -e /dev/sda ] && device="sda"
+         [ -e /dev/vda ] && device="vda"
+         [ -e /dev/dasda ] && device="dasda" # in z/VM
+         [ -e /dev/nfhd0 ] && device="nfhd0" # in aranym
+         if [ -e /sys/block/${device}/stat ]; then
+           disk=(`cat /sys/block/${device}/stat`)
+           [ "0${disk[0]}" -gt 0 ] && echo "IO_requests_read: ${disk[0]}"  >> $TOPDIR/OTHER/_statistics
+           [ "0${disk[2]}" -gt 0 ] && echo "IO_sectors_read: ${disk[2]}"   >> $TOPDIR/OTHER/_statistics
+           [ "0${disk[4]}" -gt 0 ] && echo "IO_requests_write: ${disk[4]}" >> $TOPDIR/OTHER/_statistics
+           [ "0${disk[6]}" -gt 0 ] && echo "IO_sectors_write: ${disk[6]}"  >> $TOPDIR/OTHER/_statistics
+         else
+           echo "ERROR: no root disk device found, yet another new device name?"
+           ls -l /sys/block/
+         fi
+         umount /sys
+    fi
+
+    if test -n "$VM_SWAP"; then
+         echo "... saving built packages"
+         swapoff "$VM_SWAP"
+         args="--padstart 512 --padend 512 -v"
+         case "$BUILDTYPE" in
+             spec)
+                 computeblocklists $args $TOPDIR/RPMS/*/*.{d,}rpm $TOPDIR/SRPMS/* $TOPDIR/OTHER/* > "$VM_SWAP"
+                 ;;
+             dsc)
+                 computeblocklists $args $TOPDIR/DEBS/*.deb $TOPDIR/SOURCES.DEB/* $TOPDIR/OTHER/* > "$VM_SWAP"
+                 ;;
+             kiwi)
+                 computeblocklists $args $TOPDIR/KIWI/* $TOPDIR/OTHER/* > "$VM_SWAP"
+                 ;;
+             arch)
+                 computeblocklists $args $TOPDIR/ARCHPKGS/* $TOPDIR/OTHER/* > "$VM_SWAP"
+                 ;;
+             preinstallimage)
+                 computeblocklists $args $TOPDIR/OTHER/* > "$VM_SWAP"
+                 ;;
+             *)
+                 cleanup_and_exit 1
+                 ;;
+         esac || cleanup_and_exit 1
+    else
+         # quit inside of the emulator
+         cleanup_and_exit "$exitcode"
+    fi
+fi
+
+echo
+echo "$HOST finished \"build $SPECFILE\" at `date --utc`."
+echo
+
+cleanup_and_exit "$exitcode"
diff --git a/build.1 b/build.1
new file mode 100644 (file)
index 0000000..53cfcea
--- /dev/null
+++ b/build.1
@@ -0,0 +1,169 @@
+.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-2008 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 [ --rpms
+.IR path1 : path2 : ... ]
+.RB [ --arch
+.IR arch1 : arch2 : ... ]
+.RB [ --root
+.IR buildroot ]
+.RB [ specfile | srcrpm ]
+.br
+.B build
+.B --help
+.br
+.B build
+.B --verify
+.SH DESCRIPTION
+\fBbuild\fR is a tool to build SuSE Linux RPMs in a safe and clean way.
+.B build
+will install a minimal SuSE Linux as build system into some directory
+and will chroot to this system to compile the package.
+This way you don't risk to corrupt your working system (due to a broken spec
+file for example), even if the package does not use BuildRoot.
+
+.B build
+searches the spec file for a
+.I BuildRequires:
+line; if such a line is found, all the specified rpms are installed.
+Otherwise a selection of default packages are used. Note that
+.B build
+doesn't automatically resolve missing dependencies, so the specified
+rpms have to be sufficient for the build.
+.P
+If a spec 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 a srcrpm is specified,
+.B build
+automatically unpacks it for the build.
+If neither is given,
+.B build
+will use all the specfiles in the current directory.
+.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
+.B --list-state
+list rpms 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 SuSE Linux RPMs needed to create the
+build system. This option overrides the BUILD_RPMS environment
+variable.
+.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
+don't specify this option.
+.TP
+.BI "\-\-repo " url_or_dir
+Also use the specified repository to create the build system.
+The repositories may be either of type rpmmd, yast2 (susetags),
+or a simple directory. Multiple --repo options may be given.
+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 --rpms or --repo option is used.
+.TP
+.BI "\-\-root " buildroot
+Specifies where the build system is set up. Overrides the
+BUILD_ROOT enviroment variable.
+.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 --norootforbuild
+
+.TP
+.B --help
+Print a short help text.
+.TP
+.B --verify
+verify the files in an existing build system.
+.TP
+.BI "\-\--dist " distribution
+Set the distribution. If this option is not given, build tries to
+calculate the distribution by looking at the rpm package used in the
+build.
+The specified distribution can either be a string
+like "11.2" or "sles9", or the pathname of the build configuration to
+use.
+
+.SH .spec FILE OPTIONS
+The
+.B build
+command interprets some special control comments in the specfile:
+.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.
+.TP
+.B BUILD_RPMS
+Where build can find the SuSE Linux RPMs.  build needs them to create the
+build system.
+.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 can use this to add more options to RPM.
+
+.SH SEE ALSO
+.BR rpm (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
diff --git a/build_kiwi.sh b/build_kiwi.sh
new file mode 100644 (file)
index 0000000..3f91119
--- /dev/null
@@ -0,0 +1,368 @@
+#!/bin/bash
+run_kiwi()
+{
+    imagetype=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE imagetype)
+    imagename=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE filename)
+    imageversion=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE version)
+    # prepare rpms as source and createrepo on the repositories
+    ln -sf $TOPDIR/SOURCES/repos $BUILD_ROOT/repos
+    cd $BUILD_ROOT/$TOPDIR/SOURCES/repos
+    for r in */* ; do
+        test -L $r && continue
+        test -d $r || continue
+        repo="$TOPDIR/SOURCES/repos/$r/"
+        # 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##*/}"
+       repo="$TOPDIR/SOURCES/repos/${rc%/*}/${rc##*/}/"
+        fi
+        if test "$imagetype" != product -a "$DO_INIT" != "false" ; then
+           echo "creating repodata for $repo"
+           if chroot $BUILD_ROOT createrepo --no-database --simple-md-filenames --help >/dev/null 2>&1 ; then
+               chroot $BUILD_ROOT createrepo --no-database --simple-md-filenames "$repo"
+           else
+               chroot $BUILD_ROOT createrepo "$repo"
+           fi
+        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 $SPECFILE $BUILD_ROOT/$TOPDIR/SOURCES/config.xml
+    if test "$imagetype" = product ; then
+       echo "running kiwi --create-instsource..."
+       # runs always as abuild user
+       mkdir -p "$BUILD_ROOT/$TOPDIR/KIWIROOT"
+       chroot "$BUILD_ROOT" chown -R abuild.abuild "$TOPDIR"
+       ver=`chroot "$BUILD_ROOT" su -c "/usr/sbin/kiwi --version | sed -n 's,.*kiwi version v\(.*\),\1,p'"`
+        if [ ${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
+          if [ ${ver:2:2} == "01" ]; then
+            ## This block is obsolete with current kiwi versions, only needed for kiwi 3.01 version
+            for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do
+                test -d "$i" || continue
+                n="${i##*/}"
+                test "$n" = scripts && continue
+                test "$n" != "${n%0}" && continue
+                chroot $BUILD_ROOT su -c "suse-isolinux $TOPDIR/KIWIROOT/main/$n $TOPDIR/KIWI/$n.iso" - $BUILD_USER
+            done
+          fi
+        else
+          if [ ${ver:0:1} == "4" -a ${ver:2:2} -lt 90 ]; then
+            # broken kiwi version, not accepting verbose level
+           chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v -v --logfile terminal -p $TOPDIR/SOURCES --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
+          else
+            # current default
+           chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v 2 --logfile terminal -p $TOPDIR/SOURCES --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
+          fi
+        fi
+
+       # move created product to correct destination
+       for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do
+           test -e "$i" || continue
+           f=${i##*/}
+           case $f in
+               *.iso) mv $i $BUILD_ROOT/$TOPDIR/KIWI/. ;;
+               *.packages) mv $i $BUILD_ROOT/$TOPDIR/OTHER/. ;;
+               scripts) ;;
+               *0) ;;
+               *) test -d $i && mv $i $BUILD_ROOT/$TOPDIR/KIWI/. ;;
+           esac
+       done
+    else
+       BUILD_SUCCEEDED=true
+       if [ -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..."
+           [ -x /etc/init.d/boot.device-mapper ] && /etc/init.d/boot.device-mapper start
+       fi
+       for imgtype in $imagetype ; do
+           echo "running kiwi --prepare for $imgtype..."
+           # Do not use $BUILD_USER here, since we always need root permissions
+           if chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && kiwi --prepare $TOPDIR/SOURCES --logfile terminal --root $TOPDIR/KIWIROOT-$imgtype $KIWI_PARAMETERS" - root < /dev/null ; then
+               echo "running kiwi --create for $imgtype..."
+               mkdir -p $BUILD_ROOT/$TOPDIR/KIWI-$imgtype
+               chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && kiwi --create $TOPDIR/KIWIROOT-$imgtype --logfile terminal --type $imgtype -d $TOPDIR/KIWI-$imgtype $KIWI_PARAMETERS" - root < /dev/null || cleanup_and_exit 1
+           else
+               cleanup_and_exit 1
+           fi
+       done
+
+       # create tar.gz of images, in case it makes sense
+       imagearch=`uname -m`
+       buildnum=""
+         if test -n "$RELEASE"; then
+           buildnum="-Build$RELEASE"
+       fi
+       imageout="$imagename.$imagearch-$imageversion"
+       for imgtype in $imagetype ; do
+           case "$imgtype" in
+               oem)
+                   cat > $BUILD_ROOT/kiwi_post.sh << 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
+
+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
+                   ;;
+               vmx)
+                   cat > $BUILD_ROOT/kiwi_post.sh << EOF
+echo "compressing vmx images... "
+cd /$TOPDIR/KIWI-vmx
+for suffix in "ovf" "qcow2" "ova"; do
+  if [ -e "$imageout.\$suffix" ]; then
+       mv "$imageout.\$suffix" "/$TOPDIR/KIWI/$imageout$buildnum.\$suffix"
+       pushd /$TOPDIR/KIWI
+       if [ -x /usr/bin/sha256sum ]; then
+           echo "Create sha256 \$suffix file..."
+           /usr/bin/sha256sum "$imageout$buildnum.\$suffix" > "$imageout$buildnum.\$suffix.sha256"
+        fi
+       popd
+  fi
+done
+# This option has a number of format parameters
+VMXFILES=""
+SHAFILES=""
+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 [ -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-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.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
+EOF
+                   ;;
+               xen)
+                   cat > $BUILD_ROOT/kiwi_post.sh << 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
+                   ;;
+               pxe)
+                   cat > $BUILD_ROOT/kiwi_post.sh << 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
+                   ;;
+               iso)
+                   cat > $BUILD_ROOT/kiwi_post.sh << 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
+                   ;;
+               tbz)
+                   cat > $BUILD_ROOT/kiwi_post.sh << 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
+                   ;;
+               *)
+                   cat > $BUILD_ROOT/kiwi_post.sh << 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
+                   ;;
+           esac
+           cat >> $BUILD_ROOT/kiwi_post.sh << EOF
+cd /$TOPDIR/KIWI-$imgtype
+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
+    fi
+    # Hook for running post kiwi build scripts like QA scripts if installed
+    if [ -x $BUILD_ROOT/usr/lib/build/kiwi_post_run ]; then
+        chroot $BUILD_ROOT su -c /usr/lib/build/kiwi_post_run || cleanup_and_exit 1
+    fi
+}
diff --git a/changelog2spec b/changelog2spec
new file mode 100755 (executable)
index 0000000..dceb7e5
--- /dev/null
@@ -0,0 +1,223 @@
+#!/usr/bin/perl -w
+
+#
+# Convert a SUSE or Debian changelog file to rpm format
+#
+
+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 $printtype;
+my $input = '';
+my $target = 'rpm';
+
+while (@ARGV) {
+  if ($ARGV[0] eq '--test') {
+    $test = 1;
+    shift @ARGV;
+    next;
+  }
+  if ($ARGV[0] eq '--type') {
+    $printtype = 1;
+    shift @ARGV;
+    next;
+  }
+  if (@ARGV > 1 && $ARGV[0] eq '--target') {
+    shift @ARGV;
+    $target = 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);
+  @changes = sort {length($a) <=> length($b) || $a cmp $b} @changes;
+  exit(1) unless @changes;     # nothing to do
+  if (@changes > 1) {
+    while ($file ne '') {
+      my @c = grep {/\Q$file\E/} @changes;
+      if (@c) {
+       @changes = @c;
+       last;
+      }
+      last unless $file =~ s/[-.][^-.]*$//;
+    }
+  }
+  @ARGV = ("$dir/$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*//;
+  $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 <first.last@example.com>
+    # tizen:    * Fri Jun 07 2013 First Last <first.last@example.com> 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);
+  printf("* %s %s %2d %4d %s\n", $wday[$gm[6]], $mon[$gm[4]], $gm[3], $gm[5] + 1900, $who);
+  $changes =~ s/%/%%/g;
+  $changes =~ s/^(\s*)%%(\S*)/$1\[%%$2\]/;
+  $changes =~ s/^(\s*)(\#\d*)/$1\[$2\]/mg;
+  $changes =~ s/^\*/  */mg;
+  print $changes;
+}
+exit(0);
diff --git a/common_functions b/common_functions
new file mode 100755 (executable)
index 0000000..a0e528f
--- /dev/null
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+: ${CACHE_DIR:=/var/cache/build}
+
+build_host_arch()
+{
+    : ${BUILD_HOST_ARCH:=`uname -m`}
+    # avoid multiple initvm.* helpers for i586 and i686
+    test i686 != "$BUILD_HOST_ARCH" || BUILD_HOST_ARCH=i586
+}
+
+set_build_arch()
+{
+    build_host_arch
+
+    if [ -z "$BUILD_ARCH" ]; then
+       BUILD_ARCH="$BUILD_HOST_ARCH"
+    fi
+
+    case $BUILD_ARCH in
+      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" ;;
+      i686) BUILD_ARCH="i686:i586:i486:i386" ;;
+      i586) BUILD_ARCH="i586:i486:i386" ;;
+      i486) BUILD_ARCH="i486:i386" ;;
+      i386) BUILD_ARCH="i386" ;;
+      ppc64) BUILD_ARCH="ppc64:ppc" ;;
+      ppc64le) BUILD_ARCH="ppc64le" ;;
+      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
+    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()
+{
+    arch=":$BUILD_ARCH:"
+    if test "$arch" != "${arch/:$BUILD_HOST_ARCH:/}"; then
+        # native supported arch, no emulator
+        return 1
+    fi
+
+    # to run the qemu initialization in the XEN chroot, we need to
+    # register it with a static program or shell script
+    if test -e $BUILD_DIR/initvm.$BUILD_HOST_ARCH && \
+        test -e $BUILD_DIR/qemu-reg; then
+       chmod 0755 "$BUILD_DIR/initvm.$BUILD_HOST_ARCH"
+        if [ -z "$PREPARE_VM" ]; then
+             return 0  # chroot build, we need to run
+        fi
+        # emulator in vm already registered during startup
+    else
+        # 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.$BUILD_HOST_ARCH for this one."
+    fi
+    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}
+}
diff --git a/computeblocklists b/computeblocklists
new file mode 100755 (executable)
index 0000000..f9300d6
--- /dev/null
@@ -0,0 +1,100 @@
+#!/usr/bin/perl -w
+# compute the blocks used by a file
+# usage:
+# computeblocklists [options] <files...>
+# options:
+# --padstart NUM, --padend NUM, --verbose
+#
+# output:
+# <file base name> <size> <blocksize> <block numbers...>
+#
+# a block is either a number or a range (start-end)
+#
+# TODO: instead of printing zeroes for each block in a hole use
+# something like 0*num
+
+use strict;
+
+my ($opt_padstart, $opt_padend, $opt_verbose);
+
+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 = 1;
+    next;
+  }
+  last;
+}
+
+if($opt_padstart) {
+  print "\n"x$opt_padstart;
+}
+
+for my $file (@ARGV) {
+  next unless -f $file;
+  print STDERR "$file\n" if $opt_verbose;
+  my $n = $file;
+  $n =~ s/.*\///;
+
+  if(!open(F, '<', $file)) {
+    print STDERR "$file: $!";
+    next;
+  }
+
+  my $bsize = 'xxxx';
+  ioctl(F, 2, $bsize) || ioctl(F, 536870914, $bsize) || die("FIGETBSZ: $!\n");
+  $bsize = unpack("L", $bsize);
+
+  my @stat = stat(F);
+  my ($st_size, $st_blocks) = ($stat[7], $stat[11], $stat[12]);
+
+  my $blocks = int(($st_size+$bsize-1)/$bsize);
+
+  print "$n $st_size $bsize ";
+
+  my ($firstblock, $lastblock);
+  for ($b = 0; $b < $blocks; ++$b) {
+    my $block = pack('I', $b);
+    if(not defined ioctl(F, 1, $block)) {
+       if(not defined ioctl(F, 536870913, $block)) {
+           die "$file: $!";
+       }
+    }
+    $block = unpack('I', $block);
+    if($b == 0) {
+      print "$block";
+      $firstblock = $block;
+    } else {
+      # blocks are non-contiguous
+      if($lastblock+1 != $block) {
+       # check if we skipped some that form a range
+       if($firstblock != $lastblock) {
+         printf "-$lastblock";
+       }
+       print " $block";
+       $firstblock = $block;
+      }
+      # last block, check if contiguous
+      if($b+1==$blocks && $lastblock+1 == $block) {
+       print "-$block";
+      }
+    }
+    $lastblock = $block;
+  }
+  close F;
+  print "\n";
+}
+
+if($opt_padend) {
+  print "\n"x$opt_padend;
+}
diff --git a/configs/arch.conf b/configs/arch.conf
new file mode 100644 (file)
index 0000000..466475e
--- /dev/null
@@ -0,0 +1,16 @@
+Repotype: arch
+
+Preinstall: glibc bash perl sed grep coreutils pacman pacman-mirrorlist
+Preinstall: gawk gzip filesystem curl acl gpgme libarchive
+Preinstall: openssl libssh2 zlib libassuan libgpg-error attr
+Preinstall: expat xz bzip2
+
+VMinstall: util-linux binutils readline ncurses pcre libcap
+
+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 pkg-config
+
diff --git a/configs/debian.conf b/configs/debian.conf
new file mode 100644 (file)
index 0000000..c37b4c4
--- /dev/null
@@ -0,0 +1,182 @@
+Repotype: 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
+
+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
+
+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
diff --git a/configs/sl10.0.conf b/configs/sl10.0.conf
new file mode 100644 (file)
index 0000000..e9de0b1
--- /dev/null
@@ -0,0 +1,202 @@
+Repotype: 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
diff --git a/configs/sl10.1.conf b/configs/sl10.1.conf
new file mode 100644 (file)
index 0000000..654ea3e
--- /dev/null
@@ -0,0 +1,196 @@
+Preinstall: 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
diff --git a/configs/sl10.2.conf b/configs/sl10.2.conf
new file mode 100644 (file)
index 0000000..fdf5ec6
--- /dev/null
@@ -0,0 +1,208 @@
+Preinstall: 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
diff --git a/configs/sl10.3.conf b/configs/sl10.3.conf
new file mode 100644 (file)
index 0000000..03b71c0
--- /dev/null
@@ -0,0 +1,316 @@
+%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
diff --git a/configs/sl11.0.conf b/configs/sl11.0.conf
new file mode 100644 (file)
index 0000000..3b1a048
--- /dev/null
@@ -0,0 +1,377 @@
+%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
diff --git a/configs/sl11.1.conf b/configs/sl11.1.conf
new file mode 100644 (file)
index 0000000..ef63de8
--- /dev/null
@@ -0,0 +1,407 @@
+%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
diff --git a/configs/sl11.2.conf b/configs/sl11.2.conf
new file mode 100644 (file)
index 0000000..daa1bcb
--- /dev/null
@@ -0,0 +1,452 @@
+%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
diff --git a/configs/sl11.3.conf b/configs/sl11.3.conf
new file mode 100644 (file)
index 0000000..4155315
--- /dev/null
@@ -0,0 +1,489 @@
+%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
diff --git a/configs/sl11.4.conf b/configs/sl11.4.conf
new file mode 100644 (file)
index 0000000..787b42b
--- /dev/null
@@ -0,0 +1,600 @@
+%define gcc_version 45
+%define opensuse_bs 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-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
+%opensuse_bs 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}
+
diff --git a/configs/sl12.1.conf b/configs/sl12.1.conf
new file mode 100644 (file)
index 0000000..e5f3abf
--- /dev/null
@@ -0,0 +1,638 @@
+%define gcc_version 46
+%define opensuse_bs 1
+%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
+%opensuse_bs 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}
+
diff --git a/configs/sl12.2.conf b/configs/sl12.2.conf
new file mode 100644 (file)
index 0000000..893f38d
--- /dev/null
@@ -0,0 +1,610 @@
+
+%define gcc_version 47
+%define opensuse_bs 1
+%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
+%opensuse_bs 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}
+
diff --git a/configs/sl12.3.conf b/configs/sl12.3.conf
new file mode 100644 (file)
index 0000000..fc8fb49
--- /dev/null
@@ -0,0 +1,640 @@
+
+%define gcc_version 47
+%define opensuse_bs 1
+%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 pwdutils
+
+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
+%opensuse_bs 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}
+
diff --git a/configs/sl13.1.conf b/configs/sl13.1.conf
new file mode 100644 (file)
index 0000000..db18b4c
--- /dev/null
@@ -0,0 +1,696 @@
+%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 pwdutils
+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
+%opensuse_bs 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}
+
diff --git a/configs/sl13.2.conf b/configs/sl13.2.conf
new file mode 100644 (file)
index 0000000..77cd7ae
--- /dev/null
@@ -0,0 +1,697 @@
+%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 pwdutils
+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: \.ppc64le\.rpm$ ppc64le
+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 1320
+
+%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 1320
+%sles_version 0
+%ul_version 0
+%do_profiling 1
+%opensuse_bs 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}
+
diff --git a/configs/sl8.1.conf b/configs/sl8.1.conf
new file mode 100644 (file)
index 0000000..e1b095e
--- /dev/null
@@ -0,0 +1,196 @@
+Repotype: 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
diff --git a/configs/sl8.2.conf b/configs/sl8.2.conf
new file mode 100644 (file)
index 0000000..a12fbce
--- /dev/null
@@ -0,0 +1,199 @@
+Repotype: 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
diff --git a/configs/sl9.0.conf b/configs/sl9.0.conf
new file mode 100644 (file)
index 0000000..f5ab2b5
--- /dev/null
@@ -0,0 +1,200 @@
+Repotype: 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
diff --git a/configs/sl9.1.conf b/configs/sl9.1.conf
new file mode 100644 (file)
index 0000000..24d4fcf
--- /dev/null
@@ -0,0 +1,203 @@
+Repotype: 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
diff --git a/configs/sl9.2.conf b/configs/sl9.2.conf
new file mode 100644 (file)
index 0000000..cd1902f
--- /dev/null
@@ -0,0 +1,198 @@
+Repotype: 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
diff --git a/configs/sl9.3.conf b/configs/sl9.3.conf
new file mode 100644 (file)
index 0000000..33c4256
--- /dev/null
@@ -0,0 +1,198 @@
+Repotype: 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
diff --git a/configs/sles10.conf b/configs/sles10.conf
new file mode 100644 (file)
index 0000000..bdc5827
--- /dev/null
@@ -0,0 +1,200 @@
+Preinstall: 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
diff --git a/configs/sles11.conf b/configs/sles11.conf
new file mode 120000 (symlink)
index 0000000..87e994a
--- /dev/null
@@ -0,0 +1 @@
+sl11.1.conf
\ No newline at end of file
diff --git a/configs/sles11sp2.conf b/configs/sles11sp2.conf
new file mode 100644 (file)
index 0000000..e0c3a9a
--- /dev/null
@@ -0,0 +1,486 @@
+
+%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
diff --git a/configs/sles8.conf b/configs/sles8.conf
new file mode 100644 (file)
index 0000000..12bbe19
--- /dev/null
@@ -0,0 +1,196 @@
+Repotype: 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
diff --git a/configs/sles9.conf b/configs/sles9.conf
new file mode 100644 (file)
index 0000000..70ea7d6
--- /dev/null
@@ -0,0 +1,203 @@
+Repotype: 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
diff --git a/configs/spectool.conf b/configs/spectool.conf
new file mode 100644 (file)
index 0000000..39bac9e
--- /dev/null
@@ -0,0 +1,4 @@
+%define spectool_version 1
+
+Macros:
+%spectool_version 1
diff --git a/configs/ul1.conf b/configs/ul1.conf
new file mode 100644 (file)
index 0000000..a4ca28d
--- /dev/null
@@ -0,0 +1,196 @@
+Repotype: 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
diff --git a/createarchdeps b/createarchdeps
new file mode 100755 (executable)
index 0000000..a97f762
--- /dev/null
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w
+
+# Archlinux support, based on the GSoC work of Nikolay Rysev <mad.f3ka@gmail.com>
+
+BEGIN {
+  unshift @INC, ($::ENV{"BUILD_DIR"} || "/usr/lib/build");
+}
+
+use strict;
+use Archive::Tar;
+use Build::Arch;
+use Digest::MD5;
+use File::Path;
+use Getopt::Long;
+
+Getopt::Long::Configure("no_ignore_case");
+
+my $cachedir = "/var/cache/build";
+
+sub getrepodb {
+  my ($url, $reponame, $dir) = @_;
+  File::Path::mkpath($dir);
+  system($INC[0]."/download", $dir, "$url$reponame.db");
+}
+
+sub getreponame {
+  my ($url) = @_;
+  return $1 if "/$url/" =~ /.*\/([^\/]+)\/os\//;
+  return undef;
+}
+
+sub printpkginfo {
+  my ($d, $repourl)  = @_;
+  my $id = $d->{'name'} . "." . $d->{'arch'} . "-" . $d->{'buildtime'} . "/0/0";
+  my $pkgurl = $repourl . $d->{'filename'};
+  my $selfprovides = $d->{'name'};
+  $selfprovides .= "=$d->{'version'}" if defined $d->{'version'};
+  push @{$d->{'provides'}}, $selfprovides unless @{$d->{'provides'} || []} && $d->{'provides'}->[-1] eq $selfprovides;
+  print "F:$id: $pkgurl\n";
+  print "P:$id: " . join(' ', @{$d->{'provides'}}) . "\n" if $d->{'provides'};
+  print "R:$id: " . join(' ', @{$d->{'requires'}}) . "\n" if $d->{'requires'};
+  print "I:$id: $d->{name}-$d->{'version'} $d->{'buildtime'}\n";
+}
+
+GetOptions("cachedir=s"  => \$cachedir) or exit(1);
+
+
+for my $url (@ARGV) {
+  die("Not an Archlinux repo") unless $url =~ /^(ht|f)tp:\/\/([^\/]*)\/?/;
+  my $reponame = getreponame($url);
+  my $repoid = Digest::MD5::md5_hex("arch\@$url");
+  my $dir = "$cachedir/$repoid";
+  $url .= '/' unless $url =~ /\/$/;
+  getrepodb($url, $reponame, $dir);
+
+  my $repodb = Archive::Tar->iter("$dir/$reponame.db", 1);
+  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) {
+      printpkginfo($d, $url) if $d->{'name'};
+      $d = {};
+      $lastfn = $fn;
+    }
+    Build::Arch::parserepodata($d, $e->get_content());
+  }
+  printpkginfo($d, $url) if $d->{'name'};
+}
diff --git a/createrepomddeps b/createrepomddeps
new file mode 100755 (executable)
index 0000000..48a6b46
--- /dev/null
@@ -0,0 +1,495 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use strict;
+use XML::Parser;
+use Data::Dumper;
+use Getopt::Long;
+use Build::Rpm;
+use Digest::MD5 qw(md5 md5_hex md5_base64);
+use File::Path qw(mkpath rmtree);
+use File::Basename;
+use LWP::UserAgent;
+use URI;
+Getopt::Long::Configure("no_ignore_case");
+
+my @parent = [];
+my @primaryfiles = ();
+my @packages = ();
+
+my $baseurl; # current url
+
+my $opt_dump;
+my $opt_old;
+my $opt_nosrc;
+my $opt_bc;
+my $cachedir = "/var/cache/build";
+
+my $old_seen = ();
+
+my $repomdparser = {
+  repomd => {
+    data => {
+      _start => \&repomd_handle_data_start,
+      _end => \&repomd_handle_data_end,
+      location => {
+       _start => \&repomd_handle_location,
+      },
+      size => {
+       _text => \&repomd_handle_size,
+      },
+    },
+  },
+};
+
+my $primaryparser = {
+  metadata => {
+    'package' => {
+      _start => \&primary_handle_package_start,
+      _end => \&primary_handle_package_end,
+      name => { _text => \&primary_collect_text, _end => \&primary_store_text },
+      arch => { _text => \&primary_collect_text, _end => \&primary_store_text },
+      version => { _start => \&primary_handle_version },
+      'time' => { _start => \&primary_handle_time },
+      format => {
+       'rpm:provides' => { 'rpm:entry' => { _start => \&primary_handle_package_provides }, },
+       'rpm:requires' => { 'rpm:entry' => { _start => \&primary_handle_package_requires }, },
+       'rpm:conflicts' => { 'rpm:entry' => { _start => \&primary_handle_package_conflicts }, },
+       'rpm:obsoletes' => { 'rpm:entry' => { _start => \&primary_handle_package_obsoletes }, },
+       'rpm:buildhost' => { _text => \&primary_collect_text, _end => \&primary_store_text },
+       'rpm:sourcerpm' => { _text => \&primary_collect_text, _end => \&primary_store_text },
+### currently commented out, as we ignore file provides in createrpmdeps
+#      file => {
+#        _start => \&primary_handle_file_start,
+#        _text => \&primary_collect_text,
+#        _end => \&primary_handle_file_end
+#      },
+      },
+      location => { _start => \&primary_handle_package_location },
+    },
+  },
+};
+
+# [ [tag, \%], ... ]
+my @cursor = ();
+
+my %datafile;
+sub repomd_handle_data_start
+{
+  my $p = shift;
+  my $el = shift;
+
+  my $attr = map_attrs(@_);
+  %datafile = ();
+  if($attr->{'type'} ne 'primary') {
+    pop @cursor;
+  }
+}
+
+sub repomd_handle_data_end
+{
+  my $p = shift;
+  my $el = shift;
+  push @primaryfiles, { %datafile } if exists $datafile{'location'};
+}
+
+
+sub repomd_handle_location
+{
+  my $p = shift;
+  my $el = shift;
+
+  my $attr = map_attrs(@_);
+  $datafile{'location'} = $attr->{'href'} if defined $attr->{'href'};
+}
+
+sub repomd_handle_size
+{
+  my $p = shift;
+  my $el = shift;
+  $datafile{'size'} = $el;
+}
+
+
+sub generic_handle_start
+{
+  my $p = shift;
+  my $el = shift;
+
+  if(exists $cursor[-1]->[1]->{$el})
+  {
+    my $h = $cursor[-1]->[1]->{$el};
+    push @cursor, [$el, $h];
+    if(exists $h->{'_start'}) {
+      &{$h->{'_start'}}($p, $el, @_);
+    }
+  }
+}
+
+sub generic_handle_char
+{
+  my $p = shift;
+  my $text = shift;
+
+  my $h = $cursor[-1]->[1];
+
+  if(exists $h->{'_text'}) {
+    &{$h->{'_text'}}($p, $text);
+  }
+}
+
+sub generic_handle_end
+{
+  my $p = shift;
+  my $el = shift;
+
+  if(!defined $cursor[-1]->[0] || $cursor[-1]->[0] eq $el)
+  {
+    my $h = $cursor[-1]->[1];
+
+    if(exists $h->{'_end'}) {
+      &{$h->{'_end'}}($p, $el);
+    }
+
+    pop @cursor;
+  }
+}
+
+sub map_attrs
+{
+  my %h;
+  while(@_) {
+    my $k = shift;
+    $h{$k} = shift;
+  }
+
+  return \%h;
+}
+
+# expat does not guarantee that character data doesn't get split up
+# between multiple calls
+my $textbuf = '';
+sub primary_collect_text
+{
+  my $p = shift;
+  my $text = shift;
+
+  $textbuf .= $text;
+}
+
+sub primary_store_text
+{
+    my $p = shift;
+    my $el = shift;
+
+    $packages[-1]->{$cursor[-1]->[0]} = $textbuf;
+    $textbuf = '';
+}
+
+sub primary_handle_package_start
+{
+  my $p = shift;
+  my $el = shift;
+
+  my $attr = map_attrs(@_);
+
+  push @packages, { type => $attr->{'type'}, baseurl => $baseurl };
+}
+
+sub primary_handle_package_end
+{
+  my $p = shift;
+  my $el = shift;
+
+  if($opt_bc) {
+      printasbuildcachefile(@packages);
+      shift @packages;
+  } elsif ($opt_old) {
+      foreach my $pkg (@packages) {
+    my $arch = $pkg->{'arch'};
+    $arch = 'src' if $pkg->{'arch'} eq 'nosrc';
+    next if ($arch eq 'src' && $opt_nosrc);
+    if(exists($old_seen->{$pkg->{'name'}}->{$arch})) {
+       my $pv = $old_seen->{$pkg->{'name'}}->{$arch}->{'ver'};
+       my $rv = $pkg->{'ver'}.'-'.$pkg->{'rel'};
+       my $vv = Build::Rpm::verscmp($pv, $rv, 0);
+       if($vv < 0)
+       {
+      print $old_seen->{$pkg->{'name'}}->{$arch}->{'loc'}."\n";
+      $old_seen->{$pkg->{'name'}}->{$arch}->{'ver'} = $pkg->{'ver'}.'-'.$pkg->{'rel'};
+      $old_seen->{$pkg->{'name'}}->{$arch}->{'loc'} = $pkg->{'baseurl'} . $pkg->{'location'};
+       } else {
+      print $pkg->{'baseurl'} . $pkg->{'location'}."\n";
+       }
+    } else {
+       $old_seen->{$pkg->{'name'}}->{$arch}->{'ver'} = $pkg->{'ver'}.'-'.$pkg->{'rel'};
+       $old_seen->{$pkg->{'name'}}->{$arch}->{'loc'} = $pkg->{'baseurl'} . $pkg->{'location'};
+    }
+      }
+      shift @packages;
+  }
+}
+
+sub primary_handle_version
+{
+  my $p = shift;
+  my $el = shift;
+
+  my $attr = map_attrs(@_);
+  $packages[-1]->{'ver'} = $attr->{'ver'};
+  $packages[-1]->{'rel'} = $attr->{'rel'};
+}
+
+sub primary_handle_time
+{
+  my $p = shift;
+  my $el = shift;
+
+  my $attr = map_attrs(@_);
+  $packages[-1]->{'filetime'} = $attr->{'file'};
+  $packages[-1]->{'buildtime'} = $attr->{'build'};
+}
+
+sub primary_handle_package_location
+{
+  my $p = shift;
+  my $el = shift;
+
+  my $attr = map_attrs(@_);
+  $packages[-1]->{'location'} = $attr->{'href'};
+}
+
+sub primary_handle_file_start
+{
+  my $p = shift;
+  my $el = shift;
+
+  my $attr = map_attrs(@_);
+  if(exists $attr->{'type'}) {
+    pop @cursor;
+  }
+}
+
+sub primary_handle_file_end
+{
+  my $p = shift;
+  my $text = shift;
+
+  primary_handle_package_deps('provides', 'name', $textbuf);
+  $textbuf = '';
+}
+
+my %flagmap = (
+  EQ => '=',
+  LE => '<=',
+  GE => '>=',
+  GT => '>',
+  LT => '<',
+  NE => '!=',
+);
+
+sub primary_handle_package_deps
+{
+  my $dep = shift;
+  my $attr = map_attrs(@_);
+
+  if(exists $attr->{'flags'}) {
+    if(!exists($flagmap{$attr->{'flags'}})) {
+      print STDERR "bogus relation: ", $attr->{'flags'}, "\n";
+      return;
+    }
+    $attr->{'flags'} = $flagmap{$attr->{'flags'}};
+  }
+  return if($attr->{'name'} =~ /^rpmlib\(/);
+  push @{$packages[-1]->{$dep}}, $attr;
+
+}
+
+sub primary_handle_package_conflicts
+{
+  shift;shift; primary_handle_package_deps('conflicts', @_);
+}
+
+sub primary_handle_package_obsoletes
+{
+  shift;shift; primary_handle_package_deps('obsoletes', @_);
+}
+
+sub primary_handle_package_requires
+{
+  shift;shift; primary_handle_package_deps('requires', @_);
+}
+sub primary_handle_package_provides
+{
+  shift;shift; primary_handle_package_deps('provides', @_);
+}
+
+sub deps2string
+{
+  return join(' ', map {
+       my $s = $_->{'name'};
+       if(exists $_->{'flags'}) {
+         $s .= ' '.$_->{'flags'}.' ';
+         $s .= $_->{'epoch'}.':' if(exists $_->{'epoch'} && $_->{'epoch'} != 0);
+         $s .= $_->{'ver'};
+         $s .= '-'.$_->{'rel'} if exists $_->{'rel'};
+       }
+       $s
+      } @_);
+}
+
+sub printasbuildcachefile(@)
+{
+  foreach my $pkg (@_) {
+    next if $pkg->{'arch'} eq 'src' || $pkg->{'arch'} eq 'nosrc';
+    my $id = sprintf("%s.%s-%d/%d/%d: ",
+      $pkg->{'name'},
+      $pkg->{'arch'},
+      $pkg->{'buildtime'},
+      $pkg->{'filetime'},
+      0);
+    print "F:".$id. $pkg->{'baseurl'} . $pkg->{'location'} . "\n";
+
+    my $deps = deps2string(@{$pkg->{'provides'}});
+    print "P:$id$deps\n";
+
+    $deps = deps2string(@{$pkg->{'requires'}});
+    print "R:$id$deps\n";
+
+    my $tag = sprintf("%s-%s-%s %s",
+      $pkg->{'name'},
+      $pkg->{'ver'},
+      $pkg->{'rel'},
+#      $pkg->{'rpm:buildhost'},
+      $pkg->{'buildtime'});
+    print "I:$id$tag\n";
+  }
+}
+
+sub getmetadata
+{
+  my $url = $_[0];
+  my $dir = $_[1];
+
+  my $dest = $dir . "repodata";
+  mkpath($dest);
+  system($INC[0].'/download', $dest, $url . "repodata/repomd.xml");
+}
+
+### main
+
+GetOptions (
+    "nosrc"   => \$opt_nosrc,
+    "dump"   => \$opt_dump,
+    "old"   => \$opt_old,
+    "cachedir=s"  => \$cachedir,
+    ) or exit(1);
+
+$opt_bc = 1 unless ($opt_dump || $opt_old);
+
+my $p = new XML::Parser(
+  Handlers => {
+    Start => \&generic_handle_start,
+    End => \&generic_handle_end,
+    Char => \&generic_handle_char
+  });
+
+#my $url = '/mounts/mirror/SuSE/ftp.suse.com/pub/suse/update/10.1/';
+for my $url (@ARGV) {
+  my $dir;
+  if ($url =~ /^zypp:\/\/([^\/]*)\/?/) {
+    use Build::Zypp;
+    my $repo = Build::Zypp::parsecfg($1);
+    die "can't parse $1\n" unless $repo;
+    my $type = $repo->{'type'};
+    if($type eq 'rpm-md') {
+      my $name = $repo->{'name'};
+      $dir = "/var/cache/zypp/raw/$name/";
+      $baseurl = $url;
+      $baseurl .= '/' unless $baseurl =~ /\/$/;
+    } elsif ($type eq 'yast2') {
+      # XXX
+      exec ($INC[0].'/createyastdeps', $url);
+    } else {
+      die "unsupported repo type: $type\n";
+    }
+  } elsif ($url =~ /^http[s]?:\/\/([^\/]*)\/?/) {
+    my $repoid = md5_hex($url);
+    $dir = "$cachedir/$repoid/";
+    $baseurl = $url;
+    $baseurl .= '/' unless $baseurl =~ /\/$/;
+    getmetadata($baseurl, $dir);
+  } elsif ($url =~ /^arch\@/) {
+    exec ("$INC[0]/createarchdeps", "--cachedir=$cachedir", substr($url, 5));
+  } else {
+    $dir = $url;
+    $dir .= '/' unless $dir =~ /\/$/;
+    $baseurl = $dir;
+  }
+
+  @primaryfiles = ();
+  @cursor = ([undef, $repomdparser]);
+
+  $p->parsefile($dir . 'repodata/repomd.xml');
+
+#  print Dumper(\@primaryfiles);
+
+  foreach my $f (@primaryfiles) {
+    @cursor = ([undef, $primaryparser]);
+
+    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 !exists($f->{'size'}) && $u !~ /[0-9a-f]{32}-primary/;
+    }
+    if ($url =~ /^http[s]?:\/\/([^\/]*)\/?/ and !$cached) {
+        if (system($INC[0].'/download', $dir . "repodata/", $baseurl . "repodata/" . basename($u))) {
+         die("download failed\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";
+    }
+    $p->parse($fh);
+    close($fh);
+  }
+}
+
+if ($opt_dump) {
+    print Data::Dumper->Dump([\@packages], ['packages']); # caution: excessive memory consumption!
+}
+
+#if($rpmdepdump) {
+#    my %amap = map { $_ => 1 } @archs;
+#    my $packages = do $rpmdepdump or die $!;
+#
+#    foreach my $pkg (@$packages) {
+#        next if exists $packs{$pkg->{'name'}};
+#        next unless exists $amap{$pkg->{'arch'}};
+#        next if $pkg->{'arch'} eq 'src' || $pkg->{'arch'} eq 'nosrc';
+#        next if $pkg->{'location'} =~ /\.(?:patch|delta)\.rpm$/;
+#
+#        my $pa = $pkg->{'name'}.'.'.$pkg->{'arch'};
+#        $packs{$pkg->{'name'}} = $pa;
+#        $fn{$pa} = $pkg->{'baseurl'}.$pkg->{'location'};
+#        my $r = {};
+#        # flags and version ignored
+#        my @pr = map { $_->{'name'} } @{$pkg->{'provides'}};
+#        my @re = map { $_->{'name'} } @{$pkg->{'requires'}};
+#        $r->{'provides'} = \@pr;
+#        $r->{'requires'} = \@re;
+#        $repo{$pkg->{'name'}} = $r;
+#    }
+#}
diff --git a/createrpmdeps b/createrpmdeps
new file mode 100755 (executable)
index 0000000..c8c796d
--- /dev/null
@@ -0,0 +1,146 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use Build;
+use strict;
+
+######################################################################
+
+my $rpmdepfile = $ARGV[0];
+
+my %tag;
+
+my %oldp;
+my %oldr;
+if (defined($rpmdepfile) && open(F, '<', $rpmdepfile)) {
+  while (<F>) {
+    chomp;
+    if (/^P:([^ ]): /) {
+      $oldp{$1} = $_;
+    } elsif (/^R:([^ ]): /) {
+      $oldr{$1} = $_;
+    }
+  }
+  close F;
+}
+
+my $redo = 1;
+foreach my $dir (@ARGV) {
+  $redo = 0;
+  my @known;
+  my %known2fn;
+  my %known2path;
+  my %fnsize2id;
+  my $cmd = "find $dir -follow -type f \\( -name \"*.rpm\" -o -name \"*.deb\" \\) -a ! -name \"*src.rpm\" -printf '\%T@/\%s/\%i \%p\\n'";
+  open(F, '-|', $cmd) or next;
+  while (<F>) {
+    chomp;
+    next unless /^([\d\.]+\/\d+\/\d+) (.*)$/;
+    my $id = $1;
+    my $path = $2;
+    # new find added a fraction part to %T@, ignore it
+    $id =~ s/^(\d+)\.\d+/$1/;
+    next unless $path =~ /\.(?:rpm|deb)$/;
+    my $fn = $path;
+    $fn =~ s/.*\///;
+    next if $fn =~ /\.(?:patch|delta)\.rpm$/;
+    my ($r, $arch);
+    if ($fn =~ /^(.*)-[^-]+-[^-]+\.([^\. ]+)\.rpm$/) {
+      $r = $1;
+      $arch = $2;
+    } elsif ($path =~ /^(?:.*\/)?([^\/ ]+)\/([^\/ ]+)\.rpm$/) {
+      #next if $1 eq '.';
+      $r = $2;
+      $arch = $1;
+    } elsif ($fn =~ /^([^_]*)_(?:[^_]*)_([^_]*)\.deb$/) {
+      $r = $1;
+      $arch = $2;
+      $arch = 'noarch' if $arch eq 'all';
+    } else {
+      next;
+    }
+    next if $arch eq 'src' || $arch eq 'nosrc';
+    push @known, "$r.$arch-$id";
+    $known2fn{"$r.$arch-$id"} = $fn;
+    $known2path{"$r.$arch-$id"} = $path;
+    my $size = (split('/', $id))[1];
+    $fnsize2id{"$fn-$size"} = $id;
+  }
+
+  close F;
+
+  my %newp;
+  my %newr;
+  for (@known) {
+    $newp{$_} = $oldp{$_} if $oldp{$_};
+    $newr{$_} = $oldr{$_} if $oldr{$_};
+  }
+
+  my @todo = grep {!($newp{$_} && $newr{$_})} @known;
+  if (@todo) {
+    for my $known (@todo) {
+      my $path = $known2path{$known};
+      if ($path =~ /\.rpm$/) {
+       my %res = Build::Rpm::rpmq($path, 1000, 1001, 1002, 1006, 1022, 1047, 1049, 1048, 1050, 1112, 1113);
+       next unless %res;
+       Build::Rpm::add_flagsvers(\%res, 1047, 1112, 1113);
+       Build::Rpm::add_flagsvers(\%res, 1049, 1048, 1050);
+       my $id = $known;
+       $id =~ s/.*-//;
+       if ($known ne "$res{1000}->[0].$res{1022}->[0]-$id") {
+         $known = "$res{1000}->[0].$res{1022}->[0]-$id";
+         if (!$known2path{$known}) {
+           push @known, $known;
+           $known2path{$known} = $path;
+         }
+       }
+       # rpm3 compatibility: retrofit missing self provides
+       my $name = $res{1000}->[0];
+       if (!@{$res{1047} || []} || $res{1047}->[-1] !~ /^\Q$name\E =/) {
+         my $evr = "$res{1001}->[0]-$res{1002}->[0]";
+         $evr = "$res{1003}->[0]:$evr" if $res{1003} && $res{1003}->[0];
+         push @{$res{1047}}, "$name = $evr";
+       }
+
+       $newp{$known} = "P:$known: ".join(' ', @{$res{1047} || []});
+       $newr{$known} = "R:$known: ".join(' ', @{$res{1049} || []});
+       #$tag{$known} = $res{1000}->[0]."-".$res{1001}->[0]."-".$res{1002}->[0]." ".$res{1007}->[0]."-".$res{1006}->[0];
+       $tag{$known} = $res{1000}->[0]."-".$res{1001}->[0]."-".$res{1002}->[0]." ".$res{1006}->[0];
+      } else {
+       my %res = Build::Deb::debq($path);
+       next unless %res;
+       my ($dn, $da) = ($res{'PACKAGE'}, $res{'ARCHITECTURE'});
+       $da = 'noarch' if $da eq 'all';
+       my $id = $known;
+       $id =~ s/.*-//;
+       if ($known ne "$dn.$da-$id") {
+         $known = "$dn.$da-$id";
+         if (!$known2path{$known}) {
+           push @known, $known;
+           $known2path{$known} = $path;
+         }
+       }
+       my @provides = split(',\s*', $res{'PROVIDES'} || '');
+       my @depends = split(',\s*', $res{'DEPENDS'} || '');
+       my @predepends = split(',\s*', $res{'PRE-DEPENDS'} || '');
+       s/\s.*// for @provides;   #for now
+       s/\s.*// for @depends;    #for now
+       s/\s.*// for @predepends; #for now
+       push @depends, @predepends;
+       push @provides, $res{'PACKAGE'};
+       $newp{$known} = "P:$known: ".join(' ', @provides);
+       $newr{$known} = "R:$known: ".join(' ', @depends);
+      }
+    }
+  }
+  @known = grep {$newp{$_} && $newr{$_}} @known;
+  for (@known) {
+    print "F:$_: $known2path{$_}\n";
+    print "$newp{$_}\n";
+    print "$newr{$_}\n";
+    print "I:$_: $tag{$_}\n" if exists $tag{$_};
+  }
+}
diff --git a/createyastdeps b/createyastdeps
new file mode 100755 (executable)
index 0000000..a17bd74
--- /dev/null
@@ -0,0 +1,104 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use Build;
+use Build::Susetags;
+use strict;
+
+sub print_pkg($)
+{
+  my $pkg = shift;
+
+  return if $pkg->{'arch'} eq 'src' || $pkg->{'arch'} eq 'nosrc';
+  my $id = sprintf("%s.%s-%d/%d/%d: ",
+    $pkg->{'name'},
+    $pkg->{'arch'},
+    $pkg->{'buildtime'},
+    0,
+    0);
+  print sprintf('F:%s%ssuse/%s/%s',$id,$pkg->{'baseurl'},
+    $pkg->{'arch'}, $pkg->{'location'}), "\n";
+
+  print "P:$id".$pkg->{'provides'}."\n";
+  print "R:$id".$pkg->{'requires'}."\n";
+
+  my $tag = sprintf("%s-%s-%s %s",
+    $pkg->{'name'},
+    $pkg->{'version'},
+    $pkg->{'release'},
+#    $pkg->{'rpm:buildhost'},
+    $pkg->{'buildtime'});
+  print "I:$id$tag\n";
+}
+
+sub callback
+{
+  my ($pkg, $url) = @_;
+  $pkg->{'provides'} = [] unless exists $pkg->{'provides'};
+  # add self provides (rpm3 misses that)
+  my $n = $pkg->{'name'};
+  if(substr($pkg->{'arch'}, -3) ne 'src' && !scalar grep(/^\Q$n\E( =.*)?$/,@{$pkg->{'provides'}}))
+  {
+    push @{$pkg->{'provides'}}, sprintf("%s = %s-%s", $pkg->{'name'}, $pkg->{'version'}, $pkg->{'release'});
+  }
+  $pkg->{'provides'} = join(' ', @{$pkg->{'provides'}});
+  $pkg->{'requires'} = join(' ', @{$pkg->{'requires'}}) if $pkg->{'requires'};
+  $pkg->{'baseurl'} = $url;
+  my @data = split(' ', $pkg->{'location'});
+  # multi cd support hack
+  my $num = $data[0];
+  if($pkg->{'baseurl'} =~ /1\/$/ && $num ne 0) {
+    $pkg->{'baseurl'} =~ s/1\/$/$num\//;
+  }
+  $pkg->{'location'} = $data[1];
+
+  print_pkg($pkg);
+
+  return 0;
+}
+
+for my $url (@ARGV) {
+  my $dir;
+  if ($url =~ /^zypp:\/\/([^\/]*)\/?/) {
+    use Build::Zypp;
+    my $repo = Build::Zypp::parsecfg($1);
+    die "can't parse $1\n" unless $repo;
+    die "only yast2 repos supported\n" unless $repo->{'type'} eq 'yast2';
+    my $name = $repo->{'name'};
+    $dir = "/var/cache/zypp/raw/$name/";
+  } else {
+    $dir = $url;
+  }
+
+# a really fucked up system
+#  if (-e $url."/yast/order") {
+#    if(open(F, '<', $url."/yast/order")) {
+#      my $found_products;
+#      while(<F>) {
+#        chomp;
+#        my ($a, $b) = split(/ /);
+#        $a =~ s/^\///;
+#        if(-e $url.$a)
+#        {
+#          push @ARGV, $url.$a;
+#          $found_products = 1;
+#          print STDERR "$url -> $url$a\n";
+#        }
+#      }
+#      close(F);
+#      next if $found_products;
+#    }
+#  }
+  # XXX: location is actually defined in content file
+  my $packages = $dir.'/suse/setup/descr/packages';
+  
+  $url .= '/' unless $url =~ /\/$/;
+
+  my @order = ();
+  my $pkgs = Build::Susetags::parse($packages,
+    { 'Loc' => 'location', 'Prv' => 'provides', 'Req' => 'requires', 'Tim' => 'buildtime' },
+    { cb => \&callback, data => $url });
+}
diff --git a/debtransform b/debtransform
new file mode 100755 (executable)
index 0000000..272ff71
--- /dev/null
@@ -0,0 +1,372 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Digest::MD5;
+
+sub parsedsc {
+  my ($fn) = @_;
+  my @control;
+  local *F;
+  open(F, '<', $fn) || die("$fn: $!\n");
+  @control = <F>;
+  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) = @_;
+  open(F, '>', $fn) || die("$fn: $!\n");
+  my @seq = @{$tags->{'__seq'} || []};
+  my %seq = map {uc($_) => 1} @seq;
+  for (sort keys %$tags) {
+    push @seq, ucfirst(lc($_)) unless $seq{$_};
+  }
+  for my $seq (@seq) {
+    my $ucseq = uc($seq);
+    my $d = $tags->{$ucseq};
+    next unless defined $d;
+    $d =~ s/\n/\n /sg;
+    print F "$seq: $d\n";
+  }
+  print F "\n";
+  close F;
+}
+
+sub listtar {
+  my ($tar, $skipdebiandir) = @_;
+  local *F;
+  my @c;
+  unless(defined($skipdebiandir)) {
+    $skipdebiandir = 1;
+  }
+  open(F, '-|', 'tar', '--numeric-owner', '-tvf', $tar) || die("tar: $!\n");
+  while(<F>) {
+    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("debian tar contains link: $name\n");
+    }
+    if ($type ne '-') {
+      next if $skipdebiandir eq 0;
+      die("debian tar contains unexpected file type: $name\n");
+    }
+    $name =~ s/^\.\///;
+    $name =~ s/^debian\/// if $skipdebiandir eq 1;
+    push @c, {'name' => $name, 'size' => $size};
+  }
+  close(F) || die("tar: $!\n");
+  return @c;
+}
+
+sub extracttar {
+  my ($tar, $filename, $s) = @_;
+  local *F;
+  open(F, '-|', 'tar', '-xOf', $tar, $filename) || die("tar: $!\n");
+  my $file = '';
+  while ($s > 0) {
+    my $l = sysread(F, $file, $s, length($file));
+    die("tar read error\n") unless $l;
+    $s -= $l;
+  }
+  my @file = split("\n", $file);
+  close(F);
+  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`;
+      chomp($date);
+      my @newcontent = ($firstline, "", "  * version number update by debtransform", "", " -- debtransform <build\@opensuse.org>  ".$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;
+  open(F, '<', $file) || die("$file: $!\n");
+  my @file = <F>;
+  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 = <F>;
+  close F;
+  chomp(@series);
+  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.*//;
+    open(F, '<', "$dir/$patch") || die("$dir/$patch: $!\n");
+    while(<F>) {
+      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) = @_;
+  my $base = $file;
+  $base =~ s/.*\///;
+  local *F;
+  open(F, '<', $file) || die("$file: $!\n");
+  my $size = -s F;
+  my $ctx = Digest::MD5->new;
+  $ctx->addfile(*F);
+  close F;
+  my $md5 = $ctx->hexdigest();
+  return "$md5 $size $base";
+}
+
+my $changelog;
+
+if (@ARGV > 1 && $ARGV[0] eq '--changelog') {
+  shift @ARGV;
+  $changelog = shift @ARGV;
+}
+die("usage: debtransform [--changelog <changelog>] <srcdir> <dscfile> <outdir>\n") unless @ARGV == 3;
+
+my $dir = $ARGV[0];
+my $dsc = $ARGV[1];
+my $out = $ARGV[2];
+
+die("$out: $!\n") unless -d $out;
+
+my $tags = parsedsc($dsc);
+
+opendir(D, $dir) || die("$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)?$/} @dir;
+  my @debtars = grep {/^debian\.tar(?:\.gz|\.bz2)?$/} @tars;
+  if (!$tarfile) {
+    @tars = grep {!/^debian\.tar(?:\.gz|\.bz2)?$/} @tars;
+    if (@debtarfiles) {
+      my %debtarfiles = map {$_ => 1} @debtarfiles;
+      @tars = grep {!$debtarfiles{$_}} @tars;
+    }
+    die("package contains no tar file\n") unless @tars;
+    die("package contains more than one tar file: @tars\n") if @tars > 1;
+    $tarfile = $tars[0];
+  }
+  if (@debtars && !exists($tags->{'DEBTRANSFORM-FILES-TAR'})) {
+    die("package contains more than one debian tar file\n") if @debtars > 1;
+    @debtarfiles = ($debtars[0]);
+  }
+}
+
+my $name = $tags->{'SOURCE'};
+die("dsc file contains no source\n") unless defined($name);
+my $version = $tags->{'VERSION'};
+die("dsc file contains no version\n") unless defined($version);
+$version =~ s/^\d+://; # no epoch in version, please
+
+# transform 
+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 =~ /\.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");
+}
+
+my @files;
+my $v = $version;
+$v =~ s/-[^-]*$//;
+$tarfile =~ /.*(\.tar.*?)$/;
+my $ntarfile = "${name}_$v.orig$1";
+if( $tmptar ) {
+  link("$tmptar", "$out/$ntarfile") || die("link $dir/$tarfile $out/$ntarfile: $!\n");
+  unlink("$tmptar");
+} else {
+  link("$dir/$tarfile", "$out/$ntarfile") || die("link $dir/$tarfile $out/$ntarfile: $!\n");
+}
+push @files, addfile("$out/$ntarfile");
+
+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};
+
+open(DIFF, '>', "$out/${name}_$version.diff") || die("$out/${name}_$version.diff: $!\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("debian tar and directory both contain '$_->{'name'}'\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', '-9', "$out/${name}_$version.diff");
+  if (-f "$out/${name}_$version.diff.gz") {
+    push @files, addfile("$out/${name}_$version.diff.gz");
+  } else {
+    push @files, addfile("$out/${name}_$version.diff");
+  }
+}
+
+$tags->{'FILES'} = "\n".join("\n", @files);
+delete $tags->{'DEBTRANSFORM-SERIES'};
+delete $tags->{'DEBTRANSFORM-TAR'};
+delete $tags->{'DEBTRANSFORM-FILES-TAR'};
+delete $tags->{'DEBTRANSFORM-FILES'};
+writedsc("$out/${name}_$version.dsc", $tags);
+exit(0);
diff --git a/debtransformbz2 b/debtransformbz2
new file mode 100755 (executable)
index 0000000..01c1e9d
--- /dev/null
@@ -0,0 +1,11 @@
+#! /bin/bash
+
+if test $# -ne 2; then
+    exit 1
+fi
+
+bz="$1"
+tar="$2"
+
+bzcat "$bz" | gzip -f - >"$tar" || exit 1
+exit 0
diff --git a/debtransformzip b/debtransformzip
new file mode 100755 (executable)
index 0000000..2054c12
--- /dev/null
@@ -0,0 +1,14 @@
+#! /bin/bash
+
+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
diff --git a/detect_architecture.sh b/detect_architecture.sh
new file mode 100644 (file)
index 0000000..6ac345e
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+source common_functions
+
+build_host_arch
+
+echo $BUILD_HOST_ARCH
+
diff --git a/download b/download
new file mode 100755 (executable)
index 0000000..9ac2bdf
--- /dev/null
+++ b/download
@@ -0,0 +1,56 @@
+#!/usr/bin/perl -w
+
+use Net::SSL ();
+BEGIN {
+  $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0,
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use LWP::UserAgent;
+use URI;
+use File::Path;
+use File::Basename;
+
+use strict;
+
+die "USAGE: $0 DIR URLS..." unless $#ARGV >= 1;
+
+my $dir = shift @ARGV;
+
+my $ua = LWP::UserAgent->new(
+  agent => "openSUSE build script",
+  timeout => 42);
+
+for my $url (@ARGV) {
+  if ($url =~ /^zypp:\/\/([^\/]*)\/?/) {
+    use Build::Zypp;
+    my $repo = Build::Zypp::parsecfg($1);
+    die "can't parse $1\n" unless $repo;
+    die "missing url in repo ".$repo->{'name'}."\n" unless exists $repo->{'baseurl'};
+    my $u = $repo->{'baseurl'};
+    $u .= '/' unless substr($u, -1, 1) eq '/';
+    $url =~ s/^zypp:\/\/[^\/]*\/*//;
+    $url = URI->new($u.$url);
+    if ($url->scheme eq 'dir') {
+      my $dest = "$dir/".basename($url->path);
+      unlink($dest);   # just in case
+      system('cp', $url->path, $dest) && die("cp $url->path $dest failed\n");
+      last;
+    }
+  } else {
+    $url = URI->new($url);
+  }
+  $ua->env_proxy  if $url->scheme ne 'https';
+  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
diff --git a/emulator/emulator.sh b/emulator/emulator.sh
new file mode 100755 (executable)
index 0000000..0051172
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+echo "ERROR: the emulator.sh script got not 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
+
+
diff --git a/expanddeps b/expanddeps
new file mode 100755 (executable)
index 0000000..46ae1f2
--- /dev/null
@@ -0,0 +1,289 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use strict;
+
+use Build;
+
+my ($dist, $rpmdeps, $archs, $configdir, $useusedforbuild);
+
+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;
+  }
+  last;
+}
+$configdir = '.' unless defined $configdir;
+$archs = '' unless defined $archs;
+die("you must specfiy a depfile!\n") unless defined $rpmdeps;
+
+my @extradeps = grep {!/(^|\/)(?:PKGBUILD|_preinstallimage)$/ && !/\.(?:spec|dsc|kiwi)$/} @ARGV;
+my @specs = grep {/(^|\/)(?:PKGBUILD|_preinstallimage)$/ || /\.(?:spec|dsc|kiwi)$/} @ARGV;
+die("can only work with at most one spec\n") if @specs > 1;
+my $spec = $specs[0];
+
+my @archs = split(':', $archs);
+if ($spec =~ /(^|\/)PKGBUILD$/) {
+  push @archs, 'any' unless grep {$_ eq 'any'} @archs;
+} else {
+  push @archs, 'noarch' unless grep {$_ eq 'noarch'} @archs;
+}
+
+my (%fn, %prov, %req);
+
+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);
+while(<F>) {
+  chomp;
+  if (/^F:(.*?)-\d+\/\d+\/\d+: (.*)$/) {
+    $pkgF = $2;
+    next if $fn{$1};
+    $fn{$1} = $2;
+    my $pack = $1;
+    $pack =~ /^(.*)\.([^\.]+)$/ or die;
+    push @{$packs_arch{$2}}, $1;
+  } elsif (/^P:(.*?)-\d+\/\d+\/\d+: (.*)$/) {
+    $pkgP = $2;
+    next if $prov{$1};
+    $prov{$1} = $2;
+  } elsif (/^R:(.*?)-\d+\/\d+\/\d+: (.*)$/) {
+    $pkgR = $2;
+    next if $req{$1};
+    $req{$1} = $2;
+  } elsif (/^I:(.*?)-\d+\/\d+\/\d+: (.*)$/) {
+    if ($ids{$1} && !$packs_done{$1} && defined($pkgF) && defined($pkgP) && defined($pkgR)) {
+      my $i = $1;
+      my $oldid = $ids{$1};
+      my $newid = $2;
+      if (Build::Rpm::verscmp($oldid, $newid) < 0) {
+        $ids{$i}  = $newid;
+        $fn{$i}   = $pkgF;
+        $prov{$i} = $pkgP;
+        $req{$i}  = $pkgR;
+      }
+    } else {
+      next if $ids{$1};
+      $ids{$1} = $2;
+    }
+    undef $pkgF;
+    undef $pkgP;
+    undef $pkgR;
+  } 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 :(
+    if ($dist =~ /^sles11-/) {
+      my %res = Build::Rpm::rpmq($rpmfn, 1049);
+      $dist =~ s/^sles11-/sles11sp2-/ if grep {/^liblzma/} @{$res{1049} || []};
+    }
+  }
+  print STDERR "Warning: distribution not specified, assuming '$dist' (see $configdir).\n";
+}
+
+my $cf = Build::read_config_dist($dist, $archs[0], $configdir);
+$cf->{'warnings'} = 1;
+
+my $dofileprovides = %{$cf->{'fileprovides'}};
+
+for my $pack (keys %packs) {
+  my $r = {};
+  my (@s, $s, @pr, @re);
+  @s = split(' ', $prov{$packs{$pack}} || '');
+  while (@s) {
+    $s = shift @s;
+    next if !$dofileprovides && $s =~ /^\//;
+    if ($s =~ /^rpmlib\(/) {
+      splice(@s, 0, 2);
+      next;
+    }
+    push @pr, $s;
+    splice(@s, 0, 2) if @s && $s[0] =~ /^[<=>]/;
+  }
+  @s = split(' ', $req{$packs{$pack}} || '');
+  while (@s) {
+    $s = shift @s;
+    next if !$dofileprovides && $s =~ /^\//;
+    if ($s =~ /^rpmlib\(/) {
+      splice(@s, 0, 2);
+      next;
+    }
+    push @re, $s;
+    splice(@s, 0, 2) if @s && $s[0] =~ /^[<=>]/;
+  }
+  $r->{'provides'} = \@pr;
+  $r->{'requires'} = \@re;
+  $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;
+}
+
+if ($useusedforbuild) {
+  die("Need a specfile/dscfile for --usedforbuild\n") unless defined $spec;
+  local *F;
+  open(F, '<', $spec) || die("$spec: $!\n");
+  my @usedforbuild;
+  my @buildrequires;
+  while(<F>) {
+    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 ($packname, $packvers, $subpacks, @packdeps);
+$subpacks = [];
+
+if ($spec) {
+  my $d;
+  if ($spec =~ /\.kiwi$/) {
+    # lets see if this is a product or image build
+    $d = Build::parse($cf, $spec) || {};
+    my $type = $d->{'imagetype'} && $d->{'imagetype'}->[0] eq 'product' ? 'product' : 'image';
+    my @kdeps;
+    if ($type eq 'image') {
+      @kdeps = @{$cf->{'substitute'}->{'kiwi-setup:image'} || []};
+      @kdeps = ('kiwi', 'createrepo', 'tar') unless @kdeps;
+    } else {
+      @kdeps = @{$cf->{'substitute'}->{'kiwi-setup:product'} || []};
+      @kdeps = ('kiwi') unless @kdeps;
+    }
+    push @kdeps, grep {/^kiwi-.*:/} @{$d->{'deps'} || []};
+    $d = { 'deps' => \@kdeps, 'subpacks' => [] };
+  } else {
+    $d = Build::parse($cf, $spec);
+  }
+  $packname = $d->{'name'};
+  $packvers = $d->{'version'};
+  $subpacks = $d->{'subpacks'};
+  @packdeps = @{$d->{'deps'} || []};
+  if ($d->{'prereqs'}) {
+    my %deps = map {$_ => 1} (@packdeps, @{$d->{'subpacks'} || []});
+    push @packdeps, grep {!$deps{$_} && !/^%/} @{$d->{'prereqs'}};
+  }
+}
+
+Build::readdeps($cf, undef, \%repo);
+
+#######################################################################
+
+my @bdeps = Build::get_build($cf, $subpacks, @packdeps, @extradeps);
+
+if (!shift @bdeps) {
+  print STDERR "expansion error\n";
+  print STDERR "  $_\n" for @bdeps;
+  exit(1);
+}
+
+# make sure all preinstalls are in bdeps;
+# XXX: also add vmdeps?
+@bdeps = Build::unify(@bdeps, Build::get_preinstalls($cf));
+
+print_rpmlist(@bdeps);
diff --git a/extractbuild b/extractbuild
new file mode 100755 (executable)
index 0000000..f46ffc1
--- /dev/null
@@ -0,0 +1,101 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+# buffer size for reading
+my $bufsize = 4*1024*1024;
+
+my ($opt_skip, $opt_disk, $opt_input, $opt_verbose);
+
+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 = 1;
+    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 "$!\n";
+}
+
+while(<S>) {
+  chomp;
+  last unless length $_;
+  my ($file, $filesize, $blksize, @blocks) = split(/ /);
+  if($#blocks == -1 && $filesize) {
+    die "invalid input '$_'\n";
+  }
+  $filesize = int($filesize);
+  $blksize = int($blksize);
+  die "invalid block size" unless ($blksize > 0 && $blksize <= $bufsize);
+  my $maxblocks = int($bufsize/$blksize);
+  $file =~ s/.*\///; # ensure basename, also stops directory traversal
+  $file =~ s/[^[:print:]]/_/g; # no binary junk in file names
+  print "$file\n" if $opt_verbose;
+  open (O, '>', $file) or die "$file: $!";
+  for my $block (@blocks) {
+    my ($block, $end) = split(/-/, $block);
+    $block = int($block);
+
+    if($block == 0) { # a hole!
+      seek(O, $blksize, 1);
+      $filesize -= $blksize;
+      next;
+    }
+
+    $end = $block unless $end;
+    $end = int($end);
+    seek(F, $block*$blksize, 0) || die "$file: seek: $!\n";
+    while($block <= $end && $filesize) {
+      my $size;
+      if($end == $block) {
+       $size = $blksize;
+       ++$block;
+      } elsif($maxblocks >= $end-$block) {
+       $size = ($end-$block)*$blksize;
+       $block += $end-$block;
+      } else {
+       $size = $maxblocks*$blksize;
+       $block += $maxblocks;
+      }
+      $size = $filesize if $size > $filesize;
+      my $buf;
+      if((sysread(F, $buf, $size) || 0) != $size) {
+       die "$file: read: $!\n";
+      }
+      $filesize -= $size;
+      print O $buf;
+    }
+  }
+  close O;
+  # sanity check
+  die "$file: invalid file size ($filesize byes left)\n" if $filesize != 0;
+}
diff --git a/getbinaryid b/getbinaryid
new file mode 100755 (executable)
index 0000000..55c57f6
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+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 = <STDIN>;
+  } else {
+    local *F;
+    open(F, '<', $manifest) || die("$manifest: $!\n");
+    @files = <F>;
+    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";
+  }
+}
diff --git a/getchangetarget b/getchangetarget
new file mode 100755 (executable)
index 0000000..c9e51a1
--- /dev/null
@@ -0,0 +1,35 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use strict;
+
+use Build;
+
+my ($dist, $archs, $configdir);
+
+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;
+  }
+  last;
+}
+
+die("Usage: getchangetarget --dist <dist> --archpath <archpath> [--configdir <configdir>]\n") if @ARGV;
+
+my $cf = Build::read_config_dist($dist, $archs, $configdir);
+print "$cf->{'target'}\n" if $cf->{'target'};
diff --git a/getmacros b/getmacros
new file mode 100755 (executable)
index 0000000..d15af57
--- /dev/null
+++ b/getmacros
@@ -0,0 +1,33 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use Build;
+use strict;
+
+my ($dist, $configdir, $archs);
+
+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;
+  }
+  last;
+}
+die("Usage: getmacros --dist <dist> [--configdir <configdir>]\n") if @ARGV;
+my $cf = Build::read_config_dist($dist, $archs, $configdir);
+print $cf->{'rawmacros'} if exists $cf->{'rawmacros'};
+exit(0);
diff --git a/getoptflags b/getoptflags
new file mode 100755 (executable)
index 0000000..8031bf9
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use strict;
+
+use Build;
+
+my ($dist, $archs, $configdir, $debug);
+
+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[0] eq '--debug') {
+    shift @ARGV;
+    $debug = 1;
+    next;
+  }
+  last;
+}
+
+die("Usage: getoptflags --dist <dist> --archpath <archpath> [--configdir <configdir>]\n") if @ARGV;
+
+my $cf = Build::read_config_dist($dist, $archs, $configdir);
+exit 0 unless $cf->{'optflags'};
+my $all = $cf->{'optflags'}->{'*'};
+$all = defined($all) && $all ne '' ? " $all" : '';
+$all .= " -g" if $debug;
+for (sort keys %{$cf->{'optflags'}}) {
+  next if $_ eq '*';
+  print "optflags: $_ $cf->{'optflags'}->{$_}$all\n";
+}
diff --git a/gettype b/gettype
new file mode 100755 (executable)
index 0000000..1ceb746
--- /dev/null
+++ b/gettype
@@ -0,0 +1,36 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use strict;
+
+use Build;
+
+my ($dist, $archs, $configdir, $debug);
+
+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;
+  }
+  last;
+}
+
+die("Usage: gettype --dist <dist> --archpath <archpath> [--configdir <configdir>]\n") if @ARGV;
+
+my $cf = Build::read_config_dist($dist, $archs, $configdir);
+exit 0 unless $cf->{'binarytype'};
+print "$cf->{'binarytype'}\n";
diff --git a/init_buildsystem b/init_buildsystem
new file mode 100755 (executable)
index 0000000..ff0bddd
--- /dev/null
@@ -0,0 +1,1321 @@
+#!/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
+# BUILD_ARCH  path of the architectures we try
+#
+# (c) 1997-2005 SuSE GmbH Nuernberg, Germany
+
+#
+# needed globals variables
+#
+export SRC
+export YAST_IS_RUNNING="instsys"
+export DEBIAN_FRONTEND=noninteractive
+export DEBIAN_PRIORITY=critical
+export BUILD_DIR=${BUILD_DIR:-/usr/lib/build}
+# 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
+
+BUILD_IS_RUNNING=$BUILD_ROOT/not-ready
+TMPFILE=$BUILD_ROOT/tmpfile
+#buildhost removed so that id can be generated from repo files
+#RPMIDFMT="%{NAME}-%{VERSION}-%{RELEASE} %{BUILDHOST}-%{BUILDTIME}\n"
+RPMIDFMT="%{NAME}-%{VERSION}-%{RELEASE} %{BUILDTIME}\n"
+
+PREPARE_VM=
+USE_SYSTEM_QEMU=
+USEUSEDFORBUILD=
+LIST_STATE=
+RPMLIST=
+CLEAN_BUILD=
+CREATE_BUILD_BINARIES=
+
+while test -n "$1" ; do
+    case "$1" in
+       --prepare)
+           shift
+           PREPARE_VM=true
+           ;;
+       --use-system-qemu)
+           shift
+           USE_SYSTEM_QEMU=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)
+           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
+           ;;
+       *)
+           break
+           ;;
+    esac
+done
+PKGS=("$@")
+
+#
+# needed functions
+#
+
+cleanup_and_exit()
+{
+    trap EXIT
+    test "$BUILD_ROOT" = / -a -n "$browner" && chown "$browner" "$BUILD_ROOT"
+    # umount so init_buildsystem can be used standalone
+# XXX: use stat -f /dev/pts/ -c %T  to check whether it's mounted and not suppress errors then?
+    umount -n "$BUILD_ROOT/proc/sys/fs/binfmt_misc" 2> /dev/null || true
+    umount -n "$BUILD_ROOT/proc" 2> /dev/null || true
+    umount -n "$BUILD_ROOT/dev/pts" 2> /dev/null || true
+    umount -n "$BUILD_ROOT/mnt" 2> /dev/null || true
+    exit ${1:-0}
+}
+
+clean_build_root()
+{
+       test -n "$BUILD_ROOT" && {
+           umount -n "$BUILD_ROOT/proc/sys/fs/binfmt_misc" 2> /dev/null || true
+           umount -n "$BUILD_ROOT/proc" 2> /dev/null || true
+           umount -n "$BUILD_ROOT/dev/pts" 2> /dev/null || true
+           umount -n "$BUILD_ROOT/mnt" 2> /dev/null || true
+           rm -rf -- "$BUILD_ROOT"/*
+           rm -rf -- "$BUILD_ROOT/.build"
+           rm -rf -- "$BUILD_ROOT/.root"
+           rm -rf -- "$BUILD_ROOT/.init_b_cache"
+           rm -rf -- "$BUILD_ROOT/.preinstall_image/*"
+           rm -rf -- "$BUILD_ROOT/.preinstallimage"*
+           mkdir -p "$BUILD_ROOT/proc"
+           mkdir -p "$BUILD_ROOT/dev/pts"
+           if [ "$UID" = '0' ]; then
+                   mount -n -tproc none "$BUILD_ROOT/proc"
+                   mount -n -tdevpts -omode=0620,gid=5 none "$BUILD_ROOT/dev/pts"
+           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_image()
+{
+    check_exit
+    if test -n "$2" ; then
+       echo "unpacking preinstall image $2"
+    else
+       echo "unpacking preinstall image"
+    fi
+    cd $BUILD_ROOT || cleanup_and_exit 1
+    if test -x /usr/bin/bsdtar ; then
+       TAR="/usr/bin/bsdtar -P --chroot --numeric-owner -x"
+    else
+       unsafe_preinstall_check
+       TAR="tar -x"
+    fi
+    # pipe output through perl to print a dot every 1000 lines
+    if ! $TAR -z --exclude .build --exclude .init_b_cache -f "$BUILD_ROOT/.init_b_cache/rpms/$1" -v > >(tee "$BUILD_ROOT/.preinstallimage.unpack" | perl -e '$|=1; my $done=0; $done++ % 1000 or print "." while <STDIN>; print "\n";')  2>&1 ; then
+       echo "unpack failed."
+       test -e "$BUILD_ROOT/.preinstallimage.unpack" && cat "$BUILD_ROOT/.preinstallimage.unpack"
+       cleanup_and_exit 1
+    fi
+    rm -f "$BUILD_ROOT/.preinstallimage.unpack"
+}
+
+preinstall()
+{
+    check_exit
+    echo "preinstalling $1..."
+    cd $BUILD_ROOT || cleanup_and_exit 1
+    if test -x /usr/bin/bsdtar ; then
+       CPIO="/usr/bin/bsdtar -P --chroot -o --numeric-owner -x -f-"
+       TAR="/usr/bin/bsdtar -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 -x"
+    fi
+    if test -e "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" ; then
+       PAYLOADDECOMPRESS=cat
+       case `rpm -qp --nodigest --nosignature --qf "%{PAYLOADCOMPRESSOR}\n" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm"` in
+           lzma) rpm --showrc | egrep 'PayloadIsLzma|_lzma' > /dev/null || PAYLOADDECOMPRESS="lzma -d" ;;
+           xz) rpm --showrc | egrep 'PayloadIsXz|_xz' > /dev/null || PAYLOADDECOMPRESS="xz -d" ;;
+       esac
+       if test "$PAYLOADDECOMPRESS" = "lzma -d" ; then
+           if ! lzma </dev/null >/dev/null 2>&1 ; then
+               test -f "$BUILD_DIR/lzmadec.sh" && PAYLOADDECOMPRESS="bash $BUILD_DIR/lzmadec.sh"
+           fi
+       fi
+       if test "$PAYLOADDECOMPRESS" = "xz -d" ; then
+           if ! xz </dev/null >/dev/null 2>&1 ; then
+               test -f "$BUILD_DIR/xzdec.sh" && PAYLOADDECOMPRESS="bash $BUILD_DIR/xzdec.sh"
+           fi
+       fi
+       if test "$PAYLOADDECOMPRESS" = cat ; then
+           rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" | $CPIO
+       else
+           rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" | $PAYLOADDECOMPRESS | $CPIO
+       fi
+       if test -e ".init_b_cache/scripts/$1.run" ; then
+           rpm -qp --nodigest --nosignature --qf "%{PREIN}" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" > ".init_b_cache/scripts/$1.pre"
+           rpm -qp --nodigest --nosignature --qf "%{POSTIN}" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" > ".init_b_cache/scripts/$1.post"
+           echo -n '(none)' > .init_b_cache/scripts/.none
+           cmp -s ".init_b_cache/scripts/$1.pre" .init_b_cache/scripts/.none && rm -f ".init_b_cache/scripts/$1.pre"
+           cmp -s ".init_b_cache/scripts/$1.post" .init_b_cache/scripts/.none && rm -f ".init_b_cache/scripts/$1.post"
+           rm -f .init_b_cache/scripts/.none
+       fi
+    elif test -e "$BUILD_ROOT/.init_b_cache/rpms/$1.deb" ; then
+       ar x "$BUILD_ROOT/.init_b_cache/rpms/$1.deb" control.tar.gz data.tar.gz
+       mkdir -p .init_b_cache/scripts/control
+       $TAR -C .init_b_cache/scripts/control -z -f control.tar.gz
+       $TAR -z -f data.tar.gz
+       if test -e ".init_b_cache/scripts/$1.run" ; then
+           test -e .init_b_cache/scripts/control/preinst && mv .init_b_cache/scripts/control/preinst ".init_b_cache/scripts/$1.pre"
+           test -e .init_b_cache/scripts/control/postinst && mv .init_b_cache/scripts/control/postinst ".init_b_cache/scripts/$1.post"
+       fi
+       rm -rf .init_b_cache/scripts/control control.tar.gz data.tar.gz
+    elif test -e "$BUILD_ROOT/.init_b_cache/rpms/$1.arch" ; then
+       $TAR -f "$BUILD_ROOT/.init_b_cache/rpms/$1.arch"
+       if test -f .INSTALL ; then
+           cat .INSTALL > ".init_b_cache/scripts/$1.post"
+           echo 'type post_install >/dev/null 2>&1 && post_install' >> ".init_b_cache/scripts/$1.post"
+       fi
+       rm -f .PKGINFO .INSTALL
+    else
+       echo "warning: package $1 does not exist"
+    fi
+}
+
+run_pkg_scripts()
+{
+    chroot $BUILD_ROOT /sbin/ldconfig 2>/dev/null
+    for PKG in $PACKAGES_TO_RUNSCRIPTS ; do
+       if test -e "$BUILD_ROOT/.init_b_cache/scripts/$PKG.pre" ; then
+           echo "running $PKG preinstall script"
+           if test -e "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" ; then
+               chroot $BUILD_ROOT sh ".init_b_cache/scripts/$PKG.pre" 0
+           else
+               chroot $BUILD_ROOT ".init_b_cache/scripts/$PKG.pre" install < /dev/null
+           fi
+           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"
+           if test -e "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" ; then
+               chroot $BUILD_ROOT sh ".init_b_cache/scripts/$PKG.post" 1
+           else
+               chroot $BUILD_ROOT ".init_b_cache/scripts/$PKG.post" configure '' < /dev/null
+           fi
+           rm -f "$BUILD_ROOT/.init_b_cache/scripts/$PKG.post"
+       fi
+       check_exit
+    done
+}
+
+init_db()
+{
+    if test $PSUF = rpm ; then
+       echo initializing rpm db...
+        if ! test -e $BUILD_ROOT/usr/lib/rpm/cpuinfo.yaml; then
+            # rpm v5 does not have initdb
+            # rpmdb --initdb is recommended and exists since SL9
+            if [ -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
+    elif test $PSUF = deb ; then
+       # force dpkg into database to make epoch test work
+       if ! test "$BUILD_ROOT/.init_b_cache/rpms/dpkg.deb" -ef "$BUILD_ROOT/.init_b_cache/dpkg.deb" ; then
+           rm -f $BUILD_ROOT/.init_b_cache/dpkg.deb
+           cp $BUILD_ROOT/.init_b_cache/rpms/dpkg.deb $BUILD_ROOT/.init_b_cache/dpkg.deb || cleanup_and_exit 1
+       fi
+       chroot $BUILD_ROOT dpkg -i --force all .init_b_cache/dpkg.deb >/dev/null 2>&1
+    elif test $PSUF = arch ; then
+       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
+    fi
+}
+
+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
+
+    mkdir -m 755 -p $BUILD_ROOT/dev/pts
+    test -f $BUILD_ROOT/dev/shm && rm -f $BUILD_ROOT/dev/shm
+    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
+           continue
+       fi
+       $com -m $mode $BUILD_ROOT/dev/$file $arg
+    done << DEVLIST
+       mknod null    666 c 1 3
+       mknod zero    666 c 1 5
+       mknod full    622 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 loop0   640 b 7 0
+       mknod loop1   640 b 7 1
+       mknod loop2   640 b 7 2
+       mknod loop3   640 b 7 3
+       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
+maybe_add_all_zypp_repos()
+{
+    local i j
+    r=()
+    for i in "${repos[@]}"; do
+       if [ "$i" = "zypp://" ]; then
+           while read j; do
+               j="${j#/etc/zypp/repos.d/}"
+               r=("${r[@]}" "zypp://${j%.repo}")
+           done < <(grep -l enabled=1 /etc/zypp/repos.d/*.repo)
+       else
+           r=("${r[@]}" "$i")
+       fi
+    done
+    repos=("${r[@]}")
+}
+
+validate_cache_file()
+{
+    local findonly=''
+    maybe_add_all_zypp_repos
+    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 [ "${SRC#zypp://}" != "$SRC" ]; then
+               SRC="/var/cache/zypp/raw" # XXX can't use name here as we'd need to parse the file
+           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#*://}" ; then
+               rm -f $CACHE_FILE.id
+               break
+           fi
+       done
+    fi
+    if ! test -f $CACHE_FILE.id ; then
+       test -z "$LIST_STATE" && echo initializing $CACHE_FILE ...
+       for SRC in "${repos[@]}" -- ${BUILD_RPMS//:/ /}; do
+           if test "$SRC" = '--' ; then
+               findonly=1
+               continue
+           fi
+           test -z "$SRC" && SRC=`pwd`
+           if [ "${SRC#zypp://}" != "$SRC" ]; then
+               set -- $BUILD_DIR/createrepomddeps "$SRC"
+           elif [ "${SRC#http://}" != "$SRC" -o "${SRC#https://}" != "$SRC" -o "${SRC#ftp://}" != "$SRC" -o "${SRC#ftps://}" != "$SRC" ]; then
+               mkdir -p "$(getcachedir "$SRC")"
+               set -- $BUILD_DIR/createrepomddeps --cachedir="$CACHE_DIR" "$SRC"
+           elif [ "${SRC#arch@http://}" != "$SRC" -o "${SRC#arch@https://}" != "$SRC" -o "${SRC#arch@ftp://}" != "$SRC" -o "${SRC#arch@ftps://}" != "$SRC" ]; then
+               mkdir -p "$(getcachedir "$SRC")"
+               set -- $BUILD_DIR/createrepomddeps --cachedir="$CACHE_DIR" "$SRC"
+           elif [ ! -e "$SRC" ]; then
+               echo "*** $SRC does not exist" >&2
+               cleanup_and_exit 1
+           elif [ -z "$findonly" -a \( -e "$SRC"/suse/setup/descr/packages -o -e "$SRC"/suse/setup/descr/packages.gz \) ]; then
+               set -- $BUILD_DIR/createyastdeps "$SRC"
+           elif [ -z "$findonly" -a -e "$SRC"/repodata/repomd.xml ]; then
+               set -- $BUILD_DIR/createrepomddeps "$SRC"
+           else
+               set -- $BUILD_DIR/createrpmdeps "$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
+    fi
+}
+
+fail_exit()
+{
+  cleanup_and_exit 1
+}
+
+# modifies $SRC
+downloadpkg()
+{
+    local url="$1"
+    local cachedir
+
+    if [ "${url:0:7}" == "zypp://" ] ; then
+       cachedir="/var/cache/zypp/packages/"
+       SRC="$cachedir${url#zypp://}"
+       mkdir -p "${SRC%/*}" || cleanup_and_exit 1
+    elif [ "${url:0:7}" == "http://" -o "${url:0:8}" == "https://" -o "${url:0:6}" == "ftp://" -o "${url:0:7}" == "ftps://" ] ; then
+       cachedir="$(getcachedir "$url")"
+       local name="$(basename "$url")"
+       name=${name/%.pkg.tar.?z/.arch}
+       SRC="$cachedir/$name"
+    else
+       echo "Invalid url: $url"
+       cleanup_and_exit 1
+    fi
+
+    local destdir="$cachedir/tmp"
+    mkdir -p "$destdir"
+    echo "downloading $url ... ";
+    $BUILD_DIR/download "$destdir" "$url" || cleanup_and_exit 1
+    local destfile="$destdir/${url##*/}"
+    if [ ! -e "$destfile" ]; then
+       echo "expected $destfile after download but it's missing" >&2
+       cleanup_and_exit 1
+    fi
+    case $destfile in
+      *.rpm)
+       rpm -K "$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
+    case $url in
+      zypp://*)
+       url=${url#zypp:/}
+       echo "/var/cache/zypp/packages/${url%/*}"
+       return 0;
+       ;;
+      *.pkg.tar.?z) url="arch@$url" ;;
+    esac
+    for repo in "${repos[@]}" ; do
+       if [ "${url:0:${#repo}}" == "$repo" -o "${url:0:${#repo}}" == "$repo" ] ; then
+           read repoid dummy < <(echo -n "$repo" | md5sum)
+           echo "$CACHE_DIR/$repoid"
+           break
+       fi
+    done
+}
+
+get_pkg_filename()
+{
+    local url="$1"
+    local name=$(basename $url)
+    local cachedir=$(getcachedir $url)
+    local destfile="$cachedir/$name"
+    echo $destfile
+}
+
+set_build_arch
+
+trap fail_exit EXIT
+
+if [ "$BUILD_ROOT" = / ]; then
+    browner="$(stat -c %u /)"
+fi
+
+if [ -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.
+    echo To be sure, we will build it again completely...
+    umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2> /dev/null || true
+    umount -n $BUILD_ROOT/proc 2> /dev/null
+    umount -n $BUILD_ROOT/dev/pts 2> /dev/null
+    umount -n $BUILD_ROOT/mnt 2> /dev/null
+    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 ;;
+       y|Y) clean_build_root ;;
+       *) cleanup_and_exit 1 ;;
+    esac
+fi
+
+#
+# store that we start to build system
+#
+mkdir -p $BUILD_ROOT
+mkdir -p $BUILD_ROOT/.build
+touch $BUILD_IS_RUNNING
+
+if test -n "$PREPARE_VM" ; then
+    rm -f $BUILD_ROOT/.build/init_buildsystem.data
+fi
+if test -e $BUILD_ROOT/.build/init_buildsystem.data ; then
+    # vm continuation
+    . $BUILD_ROOT/.build/init_buildsystem.data
+    if ! test -e $BUILD_ROOT/.init_b_cache/preinstall_finished ; then
+       # finish preinstall
+       run_pkg_scripts
+       init_db
+       touch $BUILD_ROOT/.init_b_cache/preinstall_finished
+    fi
+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
+       validate_cache_file
+
+       #
+       # select and expand packages
+       #
+       RPMLIST=$BUILD_ROOT/.init_b_cache/rpmlist
+       test -z "$LIST_STATE" && echo "expanding package dependencies..."
+       if ! $BUILD_DIR/expanddeps $USEUSEDFORBUILD "${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 check_use_emulator; then
+           echo "registering binfmt handlers for VM"
+
+           if [ -x "$BUILD_DIR/initvm.`uname -m`" -a -e "$BUILD_DIR/qemu-reg" ]; then
+               $BUILD_DIR/initvm.`uname -m`
+           else
+               echo "Warning: could not register binfmt handlers. Neither build-initvm nor /usr/sbin/qemu-binfmt-conf.sh exist"
+           fi
+
+           echo 0 > /proc/sys/vm/mmap_min_addr
+           read mmap_min_addr < /proc/sys/vm/mmap_min_addr
+           if [ "$mmap_min_addr" != 0 ]; then
+               echo "Warning: mmap_min_addr is != 0. If programs fail at mmap this could be the reason"
+           fi
+    fi
+
+    PACKAGES_TO_INSTALL=
+    PACKAGES_TO_PREINSTALL=
+    PACKAGES_TO_RUNSCRIPTS=
+    PACKAGES_TO_VMINSTALL=
+    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" = "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 [ "${SRC#/}" = "$SRC" ]; then
+           case "$SRC" in
+               zypp://* | http://* | https://* | ftp://* | ftps://*)
+                   echo "$PKG $SRC" >>$BUILD_ROOT/.init_b_cache/rpmlist.download
+                   continue
+                   ;;
+               *)
+                   echo "unsupported url for '$PKG': $SRC" >&2
+                   cleanup_and_exit 1
+                   ;;
+           esac
+       fi
+       SRCSUF=${SRC/%.pkg.tar.?z/.arch}
+       ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}"
+    done < $RPMLIST
+
+    # check if we really can use cached versions for packages on the download list
+    if test -s $BUILD_ROOT/.init_b_cache/rpmlist.download ; then
+       rm -f $BUILD_ROOT/.init_b_cache/rpmlist.download2
+        while read PKG SRC ; do
+           cachepkg="${SRC##*/}"
+           cachepkg="${cachepkg/%.pkg.tar.?z/.arch}"
+           cachedir="$(getcachedir "$SRC")"
+           if test -s "$cachedir/$cachepkg" ; then
+               if test -s "$BUILD_ROOT/.init_b_cache/rpms/$PKG.id" -a "${SRC%.rpm}" != "$SRC" ; then
+                   PKGID=`rpm -qp --qf "$RPMIDFMT" $RPMCHECKOPTS_HOST "$cachedir/$cachepkg"`
+                   read cachepkgid < $BUILD_ROOT/.init_b_cache/rpms/$PKG.id
+                   if test "$cachepkgid" = "$PKGID" ; then
+                       SRC="$cachedir/$cachepkg"
+                   else
+                       rm -f "$cachedir/$cachepkg"
+                   fi
+               else
+                   $SRC="$cachedir/$cachepkg"
+               fi
+           fi
+           if test "${SRC#/}" = "$SRC" ; then
+               echo "$PKG $SRC" >>$BUILD_ROOT/.init_b_cache/rpmlist.download2
+           else
+               SRCSUF=${SRC/%.pkg.tar.?z/.arch}
+               ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRCSUF##*.}"
+           fi
+       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=`cat ${RPMLIST}.download|awk '{print $2}'`
+        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.?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
+        printf "\n"
+    fi
+
+    # compatibility...
+    test -z "$RUNSCRIPTS_SEEN" && PACKAGES_TO_RUNSCRIPTS="$PACKAGES_TO_PREINSTALL"
+
+    echo "$GUESSED_DIST" > $BUILD_ROOT/.guessed_dist
+    test -n "$BUILD_DIST" || BUILD_DIST="$GUESSED_DIST"
+    PSUF=`gettype --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"`
+    case "$PSUF" in
+       UNKNOWN|'')
+           # auto detect from packages
+           if test -n "$PREINSTALL_IMAGE" ; then
+               echo "cannot autodetect build type when using a preinstall image" >&2
+               cleanup_and_exit 1
+           fi
+           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
+           ;;
+    esac
+
+    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
+
+#
+# now test if there is already a build dir.
+#
+if test ! -f $BUILD_ROOT/var/lib/rpm/packages.rpm -a ! -f $BUILD_ROOT/var/lib/rpm/Packages -a ! -e $BUILD_ROOT/.build/init_buildsystem.data ; then
+    mkdir -p $BUILD_ROOT/var/lib/rpm || cleanup_and_exit 1
+    mkdir -p $BUILD_ROOT/usr/src/packages/SOURCES || cleanup_and_exit 1
+    mkdir -p $BUILD_ROOT/etc || cleanup_and_exit 1
+    mkdir -p $BUILD_ROOT/proc || cleanup_and_exit 1
+    test -f $BUILD_ROOT/etc/HOSTNAME || hostname -f > $BUILD_ROOT/etc/HOSTNAME
+    if test $PSUF = deb ; then
+       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
+       :> $BUILD_ROOT/etc/default/rcS
+    fi
+    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`
+    progress_setup PACKAGES_TO_PREINSTALL_FILTERED
+    for PKG in $PACKAGES_TO_PREINSTALL_FILTERED ; do
+       progress_step PACKAGES_TO_PREINSTALL_FILTERED
+       preinstall ${PKG##*/}
+    done
+    printf "\n"
+    if test -n "$PREPARE_VM" ; then
+        PACKAGES_TO_VMINSTALL_FILTERED=`reorder $PACKAGES_TO_VMINSTALL_FILTERED`
+       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 [ -w /root ]; then
+           test -c $BUILD_ROOT/dev/null || create_devs
+    fi
+    test -e $BUILD_ROOT/etc/fstab || touch $BUILD_ROOT/etc/fstab
+    test ! -e $BUILD_ROOT/etc/ld.so.conf -a -e $BUILD_ROOT/etc/ld.so.conf.in && cp $BUILD_ROOT/etc/ld.so.conf.in $BUILD_ROOT/etc/ld.so.conf
+    if test -z "$PREPARE_VM" ; then
+       run_pkg_scripts
+       init_db
+       touch $BUILD_ROOT/.init_b_cache/preinstall_finished
+    fi
+fi
+
+if test -n "$PREPARE_VM" ; then
+    echo "copying packages..."
+    for PKG in $PACKAGES_TO_INSTALL ; do
+       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
+       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="'\''"
+    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 "PSUF='$PSUF'" >> $BUILD_ROOT/.build/init_buildsystem.data
+    rm -f $BUILD_IS_RUNNING
+    cleanup_and_exit 0
+fi
+
+mkdir -p $BUILD_ROOT/proc
+mkdir -p $BUILD_ROOT/dev/pts
+mount -n -tproc none $BUILD_ROOT/proc 2>/dev/null || true
+mount -n -tdevpts -omode=0620,gid=5 none $BUILD_ROOT/dev/pts 2>/dev/null || true
+
+#
+# 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_INSTALL ; 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
+
+#
+# get list and ids of already installed rpms
+#
+mkdir -p $BUILD_ROOT/.init_b_cache/alreadyinstalled
+if test -f $BUILD_ROOT/var/lib/rpm/packages.rpm -o -f $BUILD_ROOT/var/lib/rpm/Packages ; then
+    chroot $BUILD_ROOT rpm -qa --qf "%{NAME} $RPMIDFMT" | (
+       while read pp ii; do
+           echo "$ii" > "$BUILD_ROOT/.init_b_cache/alreadyinstalled/$pp"
+       done
+    )
+fi
+
+#
+# reorder packages (already done in vm continuation)
+#
+if ! test -e $BUILD_ROOT/.build/init_buildsystem.data ; then
+    echo -n 'reordering...'
+    PACKAGES_TO_INSTALL=`reorder $PACKAGES_TO_INSTALL`
+    check_exit
+    echo 'done'
+fi
+
+rpm_e()
+{
+    chroot $BUILD_ROOT rpm --nodeps -e $PKG 2>&1 | \
+    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"
+               echo "re-try deleting $PKG using --noscripts"
+               chroot $BUILD_ROOT rpm --nodeps --noscripts -e $PKG || true
+           ;;
+           *) echo "$line" ;;
+       esac
+    done
+}
+
+#
+# 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"
+    rpm_e "$PKG"
+    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"
+
+RPMCHECKOPTS=
+RPMCHECKOPTS_HOST=
+# 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"
+test -x /usr/bin/rpmquery && RPMCHECKOPTS_HOST="--nodigest --nosignature"
+
+test -x $BUILD_ROOT/sbin/ldconfig && chroot $BUILD_ROOT /sbin/ldconfig 2>&1
+
+typeset -ri suse_version=$(chroot $BUILD_ROOT rpm --eval '%{?suse_version}' 2>/dev/null)
+typeset -i num cumulate=-1
+typeset -a CUMULATED_LIST=()
+typeset -a CUMULATED_PIDS=()
+typeset -a CUMULATED_HMD5=()
+
+DO_CUMULATE=
+if ((suse_version > 1220)) ; then
+    DO_CUMULATE=true
+fi
+
+MAIN_LIST="$PACKAGES_TO_INSTALL"
+test -n "$DO_CUMULATE" && MAIN_LIST="$MAIN_LIST CUMULATED"
+progress_setup MAIN_LIST
+for PKG in $MAIN_LIST; do
+    test -f $BUILD_ROOT/installed-pkg/$PKG && continue
+    progress_step MAIN_LIST
+
+    case $PKG in
+    CUMULATED)
+       #
+       # Use the features of rpm which are reordering the list of packages to
+       # satisfy dependencies and the final execution of the %posttrans scriplets
+       #
+       echo "now installing cumulated packages"
+       ((cumulate < 0)) && continue
+       exec 4>$BUILD_ROOT/.init_b_cache/manifest
+       for ((num=0; num<=cumulate; num++)) ; do
+           echo ${CUMULATED_LIST[$num]} 1>&4
+           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
+       exec 4>&-
+       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 .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
+       CUMULATED_LIST=()
+       CUMULATED_PIDS=()
+       CUMULATED_HMD5=()
+       let cumulate=-1
+       continue
+       ;;
+    esac
+    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
+           echo "Package $PKG is missing from the preinstall image"
+           cleanup_and_exit 1
+       fi
+       read PKG_HDRMD5 PKGID < $BUILD_ROOT/.preinstall_image/$PKG
+       echo "preinstalled ${PKGID%% *}"
+       echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+       continue
+    fi
+    PKG_HDRMD5=
+    if test -d $BUILD_ROOT/.preinstall_image ; then
+       if ! test -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
+    fi
+    test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF || continue
+
+    if test $PSUF = deb ; then
+       # debian world, install deb files
+       if ! test "$BUILD_ROOT/.init_b_cache/rpms/$PKG.deb" -ef "$BUILD_ROOT/.init_b_cache/$PKG.deb" ; then
+           rm -f $BUILD_ROOT/.init_b_cache/$PKG.deb
+           cp $BUILD_ROOT/.init_b_cache/rpms/$PKG.deb $BUILD_ROOT/.init_b_cache/$PKG.deb || cleanup_and_exit 1
+       fi
+       PKGID=`readlink $BUILD_ROOT/.init_b_cache/rpms/$PKG.deb`
+       PKGID="${PKGID##*/}"
+       PKGID="${PKGID%.deb} debian"
+       echo "installing ${PKGID%% *}"
+       ( chroot $BUILD_ROOT dpkg --install --force all .init_b_cache/$PKG.deb 2>&1 || touch $BUILD_ROOT/exit ) | \
+           perl -ne '$|=1;/^(Configuration file|Installing new config file|Selecting previously deselected|\(Reading database|Unpacking |Setting up|Creating config file|Preparing to replace dpkg)/||/^$/||print'
+       check_exit
+       echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+       test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
+        # 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"
+       continue
+    fi
+
+    if test $PSUF = arch ; then
+       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
+       PKGID=`readlink $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF`
+       PKGID="${PKGID##*/}"
+       PKGID="${PKGID/%.pkg.tar.?z/.arch}"
+       PKGID="${PKGID%.arch} arch"
+       echo "installing ${PKGID%% *}"
+       # -d -d disables deps checking
+       ( chroot $BUILD_ROOT pacman -U --force -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|Targets |Total Installed Size: |Net Upgrade Size: |Proceed with installation|checking package integrity|loading package files|checking available disk space|installing |upgrading |warning:.*is up to date -- reinstalling|Optional dependencies for|    )/||/^$/||print'
+       check_exit
+       echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+       test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
+       continue
+    fi
+
+    if test -f $BUILD_ROOT/.init_b_cache/rpms/$PKG.id -a -f $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG ; then
+       read PKGID < $BUILD_ROOT/.init_b_cache/rpms/$PKG.id
+       read OLDPKGID < $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG
+       if test "$PKGID" = "$OLDPKGID" ; 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
+    fi
+
+    PKGID=`rpm -qp --qf "$RPMIDFMT" $RPMCHECKOPTS_HOST $BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm`
+
+    if test -f $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG ; then
+       read OLDPKGID < $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG
+       if test "$PKGID" != "$OLDPKGID" ; then
+           echo deleting unwanted ${OLDPKGID%% *}
+           rpm_e "$PKG"
+       elif test "$VERIFY_BUILD_SYSTEM" = true ; then
+           chroot $BUILD_ROOT rpm --verify $PKG 2>&1 | tee $TMPFILE
+           if grep ^missing $TMPFILE > /dev/null ; then
+               echo deleting incomplete ${PKGID%% *}
+               rpm_e "$PKG"
+           else
+               #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
+       else
+           #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
+       if test -e "$BUILD_ROOT/.init_b_cache/preinstalls/$PKG" ; then
+           preinstall "$PKG"
+           # call for rpm-4.x and not rpm-devel
+           test -z "${PKG##rpm-[0-9]*}" && chroot $BUILD_ROOT rpm --rebuilddb
+           # also exec for exchanged rpm !  naming is rpm-x86-<target>-<ver>
+           test -z "${PKG##rpm-x86-*[0-9]*}" && chroot $BUILD_ROOT rpm --rebuilddb
+       fi
+    fi
+    export ADDITIONAL_PARAMS=
+    if test "$USE_FORCE" = true ; then
+       export ADDITIONAL_PARAMS="$ADDITIONAL_PARAMS --force"
+    fi
+    # FIXME: 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
+    if test -n "$DO_CUMULATE" -a "$ADDITIONAL_PARAMS" = "${ADDITIONAL_PARAMS%--justdb}"; then
+       echo "cumulate ${PKGID%% *}"
+       let cumulate++
+       CUMULATED_LIST[$cumulate]=".init_b_cache/$PKG.rpm"
+       CUMULATED_PIDS[$cumulate]="$PKGID"
+       CUMULATED_HMD5[$cumulate]="$PKG_HDRMD5"
+       continue
+    fi
+    echo "installing ${PKGID%% *}"
+    if ! test "$BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm" -ef "$BUILD_ROOT/.init_b_cache/$PKG.rpm" ; then
+       rm -f $BUILD_ROOT/.init_b_cache/$PKG.rpm
+       cp $BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm $BUILD_ROOT/.init_b_cache/$PKG.rpm || cleanup_and_exit 1
+    fi
+    ( 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$"
+    # delete link so package is only installed once
+    rm -f $BUILD_ROOT/.init_b_cache/$PKG.rpm
+    check_exit
+    echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+    test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
+
+done
+
+if test $PSUF = deb ; then
+    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 ! chroot $BUILD_ROOT dpkg --configure --pending  2>&1; then
+       echo "first configure attempt failed, trying again..."
+       chroot $BUILD_ROOT dpkg --configure --pending  2>&1 || touch $BUILD_ROOT/exit
+    fi
+fi
+
+# 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
+
+#
+# to be sure, path is set correctly, we have to source /etc/profile before
+# starting rpm.
+#
+# XXX
+#rm -f $BUILD_ROOT/bin/rpm.sh
+#cp $BUILD_LIBDIR/lib/rpm.sh $BUILD_ROOT/bin/rpm.sh
+#chmod 755 $BUILD_ROOT/bin/rpm.sh
+#test -f $BUILD_ROOT/bin/rpm -a ! -L $BUILD_ROOT/bin/rpm && \
+#    mv $BUILD_ROOT/bin/rpm $BUILD_ROOT/bin/rpm.bin
+#rm -f $BUILD_ROOT/bin/rpm
+#ln -s rpm.sh $BUILD_ROOT/bin/rpm
+
+#
+# some packages use uname -r to decide which kernel is used to build for.
+# this does not work in autobuild always.  Here is a wrapper script, that
+# gets Version from kernel sources.
+#
+# XXX
+#rm -f $BUILD_ROOT/bin/uname.sh
+#cp -v $BUILD_LIBDIR/lib/uname.sh $BUILD_ROOT/bin/uname.sh
+#chmod 755 $BUILD_ROOT/bin/uname.sh
+#test -f $BUILD_ROOT/bin/uname -a ! -L $BUILD_ROOT/bin/uname && \
+#    mv $BUILD_ROOT/bin/uname $BUILD_ROOT/bin/uname.bin
+#rm -f $BUILD_ROOT/bin/uname
+#ln -s uname.sh $BUILD_ROOT/bin/uname
+
+#
+# some distributions have a /etc/rpmrc or /etc/rpm/macros and some not.
+# make sure, that it is setup correctly.
+#
+# XXX
+#rm -f $BUILD_ROOT/etc/rpmrc
+#if test -e $BUILD_LIBDIR/lib/rpmrc.$BUILD_BASENAME ; then
+#    cp -v $BUILD_LIBDIR/lib/rpmrc.$BUILD_BASENAME $BUILD_ROOT/etc/rpmrc
+#elif test -e $BUILD_LIBDIR/lib/rpmrc ; then
+#    cp -v $BUILD_LIBDIR/lib/rpmrc $BUILD_ROOT/etc/rpmrc
+#fi
+
+# XXX
+#rm -f $BUILD_ROOT/etc/rpm/macros $BUILD_ROOT/etc/rpm/suse_macros
+#mkdir -p $BUILD_ROOT/etc/rpm
+#if test -e $BUILD_LIBDIR/lib/macros.$BUILD_BASENAME ; then
+#    cp -v $BUILD_LIBDIR/lib/macros.$BUILD_BASENAME $BUILD_ROOT/etc/rpm/macros
+#    cp -v $BUILD_LIBDIR/lib/macros.$BUILD_BASENAME $BUILD_ROOT/etc/rpm/suse_macros
+#elif test -e $BUILD_LIBDIR/lib/macros ; then
+#    cp -v $BUILD_LIBDIR/lib/macros $BUILD_ROOT/etc/rpm/macros
+#    cp -v $BUILD_LIBDIR/lib/macros $BUILD_ROOT/etc/rpm/suse_macros
+#fi
+
+#
+# make sure, that our nis is not present in the chroot system
+#
+test -e $BUILD_ROOT/etc/nsswitch.conf && {
+    echo removing nis flags from $BUILD_ROOT/etc/nsswitch.conf...
+    cat $BUILD_ROOT/etc/nsswitch.conf | sed -e"s:nis::g" > \
+       $BUILD_ROOT/etc/nsswitch.conf.tmp
+    mv $BUILD_ROOT/etc/nsswitch.conf.tmp $BUILD_ROOT/etc/nsswitch.conf
+}
+
+#
+# creating some default directories
+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 $PROG -l UTC
+    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
+
+if test -x $BUILD_ROOT/bin/rpm -a ! -f $BUILD_ROOT/var/lib/rpm/packages.rpm -a ! -f $BUILD_ROOT/var/lib/rpm/Packages ; then
+    echo "initializing rpm db..."
+    if [ -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
+    # create provides index
+    chroot $BUILD_ROOT rpm -q --whatprovides rpm >/dev/null 2>&1
+fi
+
+# create modules.dep in kvm/xen
+# This can not work, until we use the native repository kernel
+#if [ $BUILD_ROOT = "/" -a -x /sbin/depmod ]; then
+#  /sbin/depmod -a
+#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
diff --git a/initscript_qemu_vm b/initscript_qemu_vm
new file mode 100755 (executable)
index 0000000..be8d8b5
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash-static
+
+# from /usr/sbin/qemu-binfmt-conf.sh
+if [ ! -f /proc/sys ]; then
+  mount-static -n proc -t proc /proc
+fi
+if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then
+  mount-static -n binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
+fi
+# register arm, ppc, mips
+
+echo   ':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:'             > /proc/sys/fs/binfmt_misc/register
+echo   ':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:'         > /proc/sys/fs/binfmt_misc/register
+
+echo   ':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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc:'             > /proc/sys/fs/binfmt_misc/register
+
+echo   ':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:'           > /proc/sys/fs/binfmt_misc/register
+echo   ':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:'       > /proc/sys/fs/binfmt_misc/register
+#echo   ':mipsn32: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-mipsn32:'     > /proc/sys/fs/binfmt_misc/register
+#echo   ':mipsn32el: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-mipsn32el:' > /proc/sys/fs/binfmt_misc/register
+#echo   ':mips64:M::\x7fELF\x02\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-mips64:'       > /proc/sys/fs/binfmt_misc/register
+#echo   ':mips64el:M::\x7fELF\x02\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-mips64el:'   > /proc/sys/fs/binfmt_misc/register
+
+echo    ':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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-sh4:' > /proc/sys/fs/binfmt_misc/register
+echo    ':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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb:' > /proc/sys/fs/binfmt_misc/register
+
+#exec /.build/build 
+/bin/bash-static /.build/build
diff --git a/initvm.c b/initvm.c
new file mode 100644 (file)
index 0000000..bed0cc4
--- /dev/null
+++ b/initvm.c
@@ -0,0 +1,336 @@
+/*
+ * 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
+ *     James Perkins <james.perkins@linuxfoundation.org>
+ */
+
+#include <sys/mount.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <stdio.h>
+
+/* 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;
+
+       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 *f[n_fields];      /* field content pointers */
+               int n;                  /* current field */
+               char path[BUFSIZ];
+
+               if (buf[0] != ':')      /* non-data input line */
+               {
+                       goto skip;
+               }
+
+               /* 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);
+                       goto skip;
+               }
+
+               if (n < n_fields)
+               {
+                       fprintf(stderr, "%s: line %d: missing fields, ignoring."
+                               " Content: %s", datafile, line, buf);
+                       goto skip;
+               }
+
+
+               if (access(f[interpreter], X_OK) != 0) {
+                       fprintf(stderr, 
+                               "%s: line %d: interpreter '%s' not found,"
+                               " ignoring\n", datafile, line, f[interpreter]);
+                       goto skip;
+               }
+
+               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));
+
+skip:
+               ;
+       }
+
+
+       (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");
+               exit(1);
+       }
+
+       /* success! */
+       exit(0);
+}
diff --git a/killchroot b/killchroot
new file mode 100755 (executable)
index 0000000..2b71f6c
--- /dev/null
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+
+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] <rootdir>") 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, "</proc/$pid/cmdline");
+    my $cmd = '';
+    sysread(F, $cmd, 128);
+    close F;
+    $cmd =~ s/\0.*//;
+    #$cmd =~ s/ .*//;
+    push @pidsv, "$pid($cmd)";
+  }
+  if (@pids > 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;
diff --git a/lxc.conf b/lxc.conf
new file mode 100644 (file)
index 0000000..d95924a
--- /dev/null
+++ b/lxc.conf
@@ -0,0 +1,15 @@
+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
diff --git a/mkbaselibs b/mkbaselibs
new file mode 100755 (executable)
index 0000000..1446ff0
--- /dev/null
@@ -0,0 +1,1139 @@
+#!/usr/bin/perl -w
+
+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;
+  $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 '' || $_ =~ /^#/;
+
+    s/\<targettype\>/$targettype/g;
+    s/\<targetarch\>/$targetarch/g;
+    s/\<name\>/$pkgname/g;
+    s/\<version\>/$pkgver/g;
+    s/\<prefix\>/$prefix/g;
+    s/\<extension\>/$extension/g;
+    s/\<configdir\>/$configdir/g;
+    s/\<match1\>/$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
+    }
+    if (/\s+package\s+\/[-+_a-zA-Z0-9]+\/$/) {
+      $pkgmatches = 0; # XXX: hack
+    }
+    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; next; }
+
+    $_ = "baselib $_" if /^[\+\-\"]/;
+    $_ = "package $_" if /^[-+_a-zA-Z0-9]+$/;
+    if (/^package\s+\/(.*?)\/$/) {
+      my $pm = $1;
+      $pkgmatches = $pkgname =~ /$pm/;
+      $match1 = $1 if defined $1;
+      $pkghasmatched |= $pkgmatches if $pkgname =~ /-debuginfo$/ && $target_matched{$target};
+      next;
+    }
+    if (/^package\s+(.*?)$/) {
+      $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 = <F>;
+  close F;
+  $config .= join('', @cf);
+  $config .= "\npackage __does_not_match__\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, nothing to do\n";
+    exit(0);
+  }
+  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"};
+      }
+    }
+    $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 <<EOFL >.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 <<EOFL >.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 <arch> targets <target_arch>[:<target_type>] [<target_arch>[:<target_type>]...]
+    # line and get a list of target_arch-es
+    my @targets = get_targets($arch, $config);
+    if (!@targets) {
+      print "no targets for arch $arch, nothing to do\n";
+      return; # 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}";
+  }
+}
+
+# args is a list of full pathnames to rpm/deb files
+die("Usage: mkbaselibs <rpms>\n") unless @ARGV;
+
+if ($ARGV[0] eq '-v') {
+  $verbose = 1;
+  shift @ARGV;
+}
+while ($ARGV[0] eq '-c') {
+  shift @ARGV;
+  read_config($ARGV[0]);
+  shift @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;
+  }
+  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$/;
+  $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);
+}
diff --git a/mkdrpms b/mkdrpms
new file mode 100755 (executable)
index 0000000..b3c13b3
--- /dev/null
+++ b/mkdrpms
@@ -0,0 +1,136 @@
+#!/usr/bin/perl -w
+
+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 <oldpkgdir> <directories...>";
+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;
+       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;
diff --git a/order b/order
new file mode 100755 (executable)
index 0000000..6682fd6
--- /dev/null
+++ b/order
@@ -0,0 +1,80 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use Build;
+use strict;
+
+my ($dist, $archs, $configdir, $manifest);
+
+
+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 = <STDIN>;
+  } else {
+    local *F;
+    open(F, '<', $manifest) || die("$manifest: $!\n");
+    @p = <F>;
+    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);
+    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";
diff --git a/qemu-reg b/qemu-reg
new file mode 100644 (file)
index 0000000..fe1eca5
--- /dev/null
+++ b/qemu-reg
@@ -0,0 +1,20 @@
+# 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
+
+: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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-arm64-binfmt:P
+: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
+: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
+: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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc-binfmt:P
+: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
+: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
+#:mipsn32: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-mipsn32-binfmt:P
+#:mipsn32el: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-mipsn32el-binfmt:P
+#:mips64:M::\x7fELF\x02\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-mips64-binfmt:P
+#:mips64el:M::\x7fELF\x02\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-mips64el-binfmt:P
+
+: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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-sh4-binfmt:P
+: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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb-binfmt:P
+
diff --git a/signdummy b/signdummy
new file mode 100755 (executable)
index 0000000..8fc2e4c
--- /dev/null
+++ b/signdummy
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+# 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");
+}
diff --git a/spec2changelog b/spec2changelog
new file mode 100755 (executable)
index 0000000..4ac2b0a
--- /dev/null
@@ -0,0 +1,79 @@
+#!/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 <pascal.bleser@opensuse.org>
+# This script is licensed under the GNU General Public License version 2
+# http://www.gnu.org/licenses/gpl-2.0.html
+#
+
+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 = $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";
+}
diff --git a/spec_add_patch b/spec_add_patch
new file mode 100755 (executable)
index 0000000..fd62753
--- /dev/null
@@ -0,0 +1,143 @@
+#!/usr/bin/perl -w
+# vim:sw=4:et
+# Author: Dirk Mueller
+
+use strict;
+
+sub helpexit {
+    print "$0: <patches...> [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 @c = ();
+my $index = 0;
+
+# first read the specfile, parse useful information
+while(<S>)
+{
+
+    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_patch_in_global_index = $index;
+    }
+
+    if ($in_prep && $ifdef_level == 0 && /^\%patch/) {
+        $last_patch_in_prep_index = $index;
+    }
+    push(@c, $_);
+    $index++;
+}
+close(S);
+
+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(<P>) {
+       $striplevel = " -p1" if (m/^--- a/ or m/^--- [^\/]+-\d+\./);
+       last if (/^--- /);
+
+    }
+    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);
diff --git a/spectool b/spectool
new file mode 100755 (executable)
index 0000000..ef05859
--- /dev/null
+++ b/spectool
@@ -0,0 +1,406 @@
+#!/usr/bin/perl -w
+
+=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<STRING>
+
+set distribution, e.g. "11.1-i586" or path to config
+
+=item B<--archpath>=I<STRING>
+
+compatible architecture separated by colon, e.g. C<i586:i486:i386>.
+Autotected if missing.
+
+=item B<--configdir>=I<STRING>
+
+path to config files if B<--dist> didn't specify a full path
+
+=item B<--define>=I<STRING>
+
+=item B<--with>=I<STRING>
+
+=item B<--without>=I<STRING>
+
+same meaning as in rpmbuild
+
+=item B<--tag>=I<STRING>
+
+print tag from spec file, e.g. C<version>. Regexp is also possible,
+e.g. C</source[01]/>
+
+=item B<--sources>
+
+print package source files. If a file C<sources> or
+C<I<packagename>.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<d> 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<t> 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
+<checksum> <whitespace> <filename>
+
+=head2 NAME OF THE SOURCES FILE
+
+A file named C<sources> 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<foo.spec> ->
+C<foo.sources>). 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(<F>) {
+      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) {
+    die "can't parse $spec\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;
diff --git a/substitutedeps b/substitutedeps
new file mode 100755 (executable)
index 0000000..efea76a
--- /dev/null
@@ -0,0 +1,277 @@
+#!/usr/bin/perl -w
+
+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);
+
+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;
+  }
+  last;
+}
+die("Usage: substitutedeps --dist <dist> --archpath <archpath> [--configdir <configdir>] <specin> <specout>\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;
+
+#######################################################################
+
+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) {
+  $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\d*>/$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_CNT>/$ci/;
+           $line =~ s/<B_CNT>/$b/;
+         } elsif ($release =~ /(\d+)$/) {
+           my $b = $1;
+           $b = '0' if $line =~ s/<CI_CNT>/$b/;
+           $line =~ s/<B_CNT>/$b/;
+         }
+       } else {
+         # no special replacement rules in the line, simply replace
+         $line =~ s/^(Release\s*:\s*).*/$1$release/i;
+         $line =~ s/<SPEC_REL>/$spec_rel/g;
+       }
+      }
+      $line =~ s/<SPEC_REL>//g;        # no recursion please
+    } else {
+      # remove macros, as rpm doesn't like them
+      $line =~ s/<RELEASE\d*>/0/;
+      $line =~ s/<CI_CNT>/0/;
+      $line =~ s/<B_CNT>/0/;
+    }
+    # 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 = <RP>;
+       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 ''} <RP>;
+      if (!close(RP)) {
+       warn("$cf->{'releaseprg'} failed: $?\n");
+      }
+      # and another compatibility hack: if the prg returns pkg:<package>,
+      # 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 ''} <RP>;
+       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\d*>/$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_CNT>/$ci/;
+               $line =~ s/<B_CNT>/$b/;
+             } elsif ($release =~ /(\d+)$/) {
+               my $b = $1;
+               $line =~ s/<B_CNT>/$b/ unless $line =~ s/<CI_CNT>/$b/;
+             }
+           }
+         }
+       }
+      }
+    }
+    # all compat stuff done. we return to your scheduled program
+  }
+
+  if (!$used || ($line !~ /^(?:Build)?Requires:/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*//;
+  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(<CF>) {
+      print F $_;
+    }
+    close CF;
+  }
+}
+
+close(F) || die("close: $!\n");
+
+exit(0);
diff --git a/t/dist b/t/dist
new file mode 100755 (executable)
index 0000000..889d182
--- /dev/null
+++ b/t/dist
@@ -0,0 +1,19 @@
+#!/usr/bin/perl -w
+
+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");
diff --git a/test-debtransform/1-out/grandorgue_0.3.0.6.1026.diff.gz b/test-debtransform/1-out/grandorgue_0.3.0.6.1026.diff.gz
new file mode 100644 (file)
index 0000000..545ea28
Binary files /dev/null and b/test-debtransform/1-out/grandorgue_0.3.0.6.1026.diff.gz differ
diff --git a/test-debtransform/1-out/grandorgue_0.3.0.6.1026.dsc b/test-debtransform/1-out/grandorgue_0.3.0.6.1026.dsc
new file mode 100644 (file)
index 0000000..e06cbb3
--- /dev/null
@@ -0,0 +1,12 @@
+Format: 1.0
+Source: grandorgue
+Binary: grandorgue
+Architecture: any
+Version: 0.3.0.6.1026
+Maintainer: Martin Koegler <martin.koegler@chello.at>
+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
+ 6d0b166ecd6f5863a5bba1fd576f57a8 756 grandorgue_0.3.0.6.1026.diff.gz
+
diff --git a/test-debtransform/1-out/grandorgue_0.3.0.6.1026.orig.tar.gz b/test-debtransform/1-out/grandorgue_0.3.0.6.1026.orig.tar.gz
new file mode 100644 (file)
index 0000000..e991c62
Binary files /dev/null and b/test-debtransform/1-out/grandorgue_0.3.0.6.1026.orig.tar.gz differ
diff --git a/test-debtransform/1/debian.changelog b/test-debtransform/1/debian.changelog
new file mode 100644 (file)
index 0000000..624c354
--- /dev/null
@@ -0,0 +1,24 @@
+grandorgue (0.3.0.6.10) unstable; urgency=low
+
+  * OBS build
+
+ -- Martin Koegler <mkoegler@auto.tuwien.ac.at>  Sat, 16 Jun 2012 13:08:51 +0200
+
+grandorgue (0.3.0.6.11) unstable; urgency=low
+
+  * OBS build
+
+ -- Martin Koegler <mkoegler@auto.tuwien.ac.at>  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 <mkoegler@auto.tuwien.ac.at>  Sat, 16 Jun 2012 11:27:19 +0200
+
+grandorgue (0.3.0.6) unstable; urgency=low
+
+  * Initial version
+
+ -- Martin Koegler <martin.koegler@chello.at>  Sun, 06 Nov 2011 19:44:04 +0100
diff --git a/test-debtransform/1/debian.empty b/test-debtransform/1/debian.empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test-debtransform/1/debian.obs-version b/test-debtransform/1/debian.obs-version
new file mode 100644 (file)
index 0000000..3e61434
--- /dev/null
@@ -0,0 +1 @@
+Version: 0.3.0.6.1026
diff --git a/test-debtransform/1/debian.tar.gz b/test-debtransform/1/debian.tar.gz
new file mode 100644 (file)
index 0000000..484f362
Binary files /dev/null and b/test-debtransform/1/debian.tar.gz differ
diff --git a/test-debtransform/1/debian1.tar.gz b/test-debtransform/1/debian1.tar.gz
new file mode 100644 (file)
index 0000000..b22b94c
Binary files /dev/null and b/test-debtransform/1/debian1.tar.gz differ
diff --git a/test-debtransform/1/go.tar.gz b/test-debtransform/1/go.tar.gz
new file mode 100644 (file)
index 0000000..e991c62
Binary files /dev/null and b/test-debtransform/1/go.tar.gz differ
diff --git a/test-debtransform/1/grandorgue.dsc b/test-debtransform/1/grandorgue.dsc
new file mode 100644 (file)
index 0000000..7add24f
--- /dev/null
@@ -0,0 +1,11 @@
+Format: 1.0
+Source: grandorgue
+Binary: grandorgue
+Architecture: any
+Version: 0.3.0.6.1026
+Maintainer: Martin Koegler <martin.koegler@chello.at>
+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
diff --git a/test-debtransform/2-out/grandorgue_0.3.0.6.1026.diff.gz b/test-debtransform/2-out/grandorgue_0.3.0.6.1026.diff.gz
new file mode 100644 (file)
index 0000000..0d4e9e5
Binary files /dev/null and b/test-debtransform/2-out/grandorgue_0.3.0.6.1026.diff.gz differ
diff --git a/test-debtransform/2-out/grandorgue_0.3.0.6.1026.dsc b/test-debtransform/2-out/grandorgue_0.3.0.6.1026.dsc
new file mode 100644 (file)
index 0000000..0898745
--- /dev/null
@@ -0,0 +1,12 @@
+Format: 1.0
+Source: grandorgue
+Binary: grandorgue
+Architecture: any
+Version: 0.3.0.6.1026
+Maintainer: Martin Koegler <martin.koegler@chello.at>
+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: 
+ 7ab43adb27b5ce885dccd5526745a5a1 655 grandorgue_0.3.0.6.1026.orig.tar.gz
+ aee05a68c294747ab67965c8675f9821 756 grandorgue_0.3.0.6.1026.diff.gz
+
diff --git a/test-debtransform/2-out/grandorgue_0.3.0.6.1026.orig.tar.gz b/test-debtransform/2-out/grandorgue_0.3.0.6.1026.orig.tar.gz
new file mode 100644 (file)
index 0000000..84cd163
Binary files /dev/null and b/test-debtransform/2-out/grandorgue_0.3.0.6.1026.orig.tar.gz differ
diff --git a/test-debtransform/2/debian.changelog b/test-debtransform/2/debian.changelog
new file mode 100644 (file)
index 0000000..624c354
--- /dev/null
@@ -0,0 +1,24 @@
+grandorgue (0.3.0.6.10) unstable; urgency=low
+
+  * OBS build
+
+ -- Martin Koegler <mkoegler@auto.tuwien.ac.at>  Sat, 16 Jun 2012 13:08:51 +0200
+
+grandorgue (0.3.0.6.11) unstable; urgency=low
+
+  * OBS build
+
+ -- Martin Koegler <mkoegler@auto.tuwien.ac.at>  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 <mkoegler@auto.tuwien.ac.at>  Sat, 16 Jun 2012 11:27:19 +0200
+
+grandorgue (0.3.0.6) unstable; urgency=low
+
+  * Initial version
+
+ -- Martin Koegler <martin.koegler@chello.at>  Sun, 06 Nov 2011 19:44:04 +0100
diff --git a/test-debtransform/2/debian.empty b/test-debtransform/2/debian.empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test-debtransform/2/debian.obs-version b/test-debtransform/2/debian.obs-version
new file mode 100644 (file)
index 0000000..3e61434
--- /dev/null
@@ -0,0 +1 @@
+Version: 0.3.0.6.1026
diff --git a/test-debtransform/2/debian.tar.gz b/test-debtransform/2/debian.tar.gz
new file mode 100644 (file)
index 0000000..484f362
Binary files /dev/null and b/test-debtransform/2/debian.tar.gz differ
diff --git a/test-debtransform/2/debian1.tar.gz b/test-debtransform/2/debian1.tar.gz
new file mode 100644 (file)
index 0000000..b22b94c
Binary files /dev/null and b/test-debtransform/2/debian1.tar.gz differ
diff --git a/test-debtransform/2/go.tar.bz2 b/test-debtransform/2/go.tar.bz2
new file mode 100644 (file)
index 0000000..9d835e1
Binary files /dev/null and b/test-debtransform/2/go.tar.bz2 differ
diff --git a/test-debtransform/2/grandorgue.dsc b/test-debtransform/2/grandorgue.dsc
new file mode 100644 (file)
index 0000000..7add24f
--- /dev/null
@@ -0,0 +1,11 @@
+Format: 1.0
+Source: grandorgue
+Binary: grandorgue
+Architecture: any
+Version: 0.3.0.6.1026
+Maintainer: Martin Koegler <martin.koegler@chello.at>
+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
diff --git a/test-debtransform/run.sh b/test-debtransform/run.sh
new file mode 100755 (executable)
index 0000000..204e312
--- /dev/null
@@ -0,0 +1,32 @@
+#!/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
+                   ;;
+           esac
+       done
+    fi
+}
+
+run 1 grandorgue.dsc 0 1-out
+run 2 grandorgue.dsc 0 2-out
\ No newline at end of file
diff --git a/test/Fedora_11.conf b/test/Fedora_11.conf
new file mode 100644 (file)
index 0000000..1f4dac1
--- /dev/null
@@ -0,0 +1,305 @@
+%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}
+
diff --git a/test/Fedora_12.conf b/test/Fedora_12.conf
new file mode 100644 (file)
index 0000000..f0fe9a1
--- /dev/null
@@ -0,0 +1,311 @@
+%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}
+
diff --git a/test/baselibs.conf b/test/baselibs.conf
new file mode 100644 (file)
index 0000000..c0e9a7c
--- /dev/null
@@ -0,0 +1 @@
+libdummy1
diff --git a/test/common b/test/common
new file mode 100644 (file)
index 0000000..6c42210
--- /dev/null
@@ -0,0 +1,100 @@
+#!/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 later 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; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+set -e
+. ${0%/*}/config
+if [ -e ${0%/*}/config.local ]; then
+       . ${0%/*}/config.local
+fi
+
+#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
+       set -- $linux32 sudo env \
+               /usr/bin/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
+}
diff --git a/test/config b/test/config
new file mode 100644 (file)
index 0000000..22f38d5
--- /dev/null
@@ -0,0 +1,8 @@
+#!/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}
diff --git a/test/libdummy1.spec b/test/libdummy1.spec
new file mode 100644 (file)
index 0000000..6748229
--- /dev/null
@@ -0,0 +1,28 @@
+Name:          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
diff --git a/test/testbuild.11.0-i386 b/test/testbuild.11.0-i386
new file mode 100755 (executable)
index 0000000..97dfd7c
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo 11_0_i386
+
+run_build --dist 11.0-i386 \
+       "$@"
diff --git a/test/testbuild.11.0-x86_64 b/test/testbuild.11.0-x86_64
new file mode 100755 (executable)
index 0000000..7e8fea8
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+. ${0%/*}/common
+
+repo 11_0_x86_64
+
+run_build --dist 11.0-x86_64 \
+       "$@"
diff --git a/test/testbuild.11.1-i386 b/test/testbuild.11.1-i386
new file mode 100755 (executable)
index 0000000..c665992
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo 11_1_ftp
+
+run_build --dist 11.1-i386 \
+       "$@"
diff --git a/test/testbuild.11.2-i386 b/test/testbuild.11.2-i386
new file mode 100755 (executable)
index 0000000..ab3f9a2
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo 11_2
+
+run_build --dist 11.2-i386 \
+       "$@"
diff --git a/test/testbuild.8.1-i386 b/test/testbuild.8.1-i386
new file mode 100755 (executable)
index 0000000..64b6daa
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo 8_1_i386
+
+run_build --dist 8.1-i386 \
+       "$@"
diff --git a/test/testbuild.Fedora11-i386 b/test/testbuild.Fedora11-i386
new file mode 100755 (executable)
index 0000000..d69249c
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo fedora11_i386
+
+run_build --dist $PWD/Fedora_11.conf --arch i686 \
+       "$@"
diff --git a/test/testbuild.Fedora11-x86_64 b/test/testbuild.Fedora11-x86_64
new file mode 100755 (executable)
index 0000000..55441c5
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+. ${0%/*}/common
+
+repo fedora11_x86_64
+
+run_build --dist $PWD/Fedora_11.conf \
+       "$@"
diff --git a/test/testbuild.Fedora12-i386 b/test/testbuild.Fedora12-i386
new file mode 100755 (executable)
index 0000000..e43a055
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo fedora12_i386
+
+run_build --dist $PWD/Fedora_12.conf --arch i686 \
+       "$@"
diff --git a/test/testbuild.Fedora12-x86_64 b/test/testbuild.Fedora12-x86_64
new file mode 100755 (executable)
index 0000000..4db3279
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+. ${0%/*}/common
+
+repo fedora12_x86_64
+
+run_build --dist $PWD/Fedora_12.conf \
+       "$@"
diff --git a/test/testbuild.sles10-i386 b/test/testbuild.sles10-i386
new file mode 100755 (executable)
index 0000000..59108e1
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo sle10sp2_i386
+repo sle10sp2_sdk_i386
+
+run_build --dist sles10 \
+       "$@"
diff --git a/test/testbuild.sles10-x86_64 b/test/testbuild.sles10-x86_64
new file mode 100755 (executable)
index 0000000..5e29cc9
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+. ${0%/*}/common
+
+repo sle10sp2_x86_64
+repo sle10sp2_sdk_x86_64
+
+run_build --dist sles10 \
+       "$@"
diff --git a/test/testbuild.sles9-i386 b/test/testbuild.sles9-i386
new file mode 100755 (executable)
index 0000000..7e1b7c6
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+. ${0%/*}/common
+
+arch32bit
+
+repo core9_i386
+repo sles9_i386
+
+run_build --dist sles9 \
+       "$@"
diff --git a/unrpm b/unrpm
new file mode 100755 (executable)
index 0000000..e69dafb
--- /dev/null
+++ b/unrpm
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+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
diff --git a/vc b/vc
new file mode 100755 (executable)
index 0000000..e9d8f55
--- /dev/null
+++ b/vc
@@ -0,0 +1,170 @@
+#!/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 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
+
+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 '$mailaddr' 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
+       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 - $mailaddr"
+               echo
+       fi
+       if [ -n "$message" ]; then
+               echo "- $message"
+               echo
+       elif [ -n "$content" ]; then
+               cat "$content"
+               echo
+       elif [ ! $just_edit ]; then
+               echo "- "
+               echo
+               if [ -d .osc -a -n "$(which osc 2>/dev/null)" ]; then
+                       OSC_STATUS="$(cd "$pkgpath" &> /dev/null; osc st)"
+                       ADDED="$(sed -n 's/^A[[:blank:]]\+\([^[:blank:]].*\.\(patch\|diff\)\)$/  * \1/p' <<< "$OSC_STATUS")"
+                       DELETED="$(sed -n 's/^D[[:blank:]]\+\([^[:blank:]].*\.\(patch\|diff\)\)$/  * \1/p' <<< "$OSC_STATUS")"
+                       MODIFIED="$(sed -n 's/^M[[:blank:]]\+\([^[:blank:]].*\.\(patch\|diff\)\)$/  * \1/p' <<< "$OSC_STATUS")"
+                       if [ -n "$ADDED" ]; then
+                           echo "- added patches:"
+                           echo "$ADDED"
+                       fi
+                       if [ -n "$DELETED" ]; then
+                           echo "- removed patches:"
+                           echo "$DELETED"
+                       fi
+                       if [ -n "$MODIFIED" ]; then
+                           echo "- modified patches:"
+                           echo "$MODIFIED"
+                       fi
+               fi
+       fi
+       cat $changelog
+} >> "$tmpfile"
+
+if [ -z "$message" ]; then
+       set -- `md5sum "$tmpfile"`
+       chksum="$1"
+       $EDITOR +4 "$tmpfile"
+       set -- `md5sum "$tmpfile"`
+       if [ -z "$content" -a "$chksum" == "$1" ]; then
+               echo "no changes made"
+               exit 0
+       fi
+fi
+mode=`stat -c "%a" "$changelog"`
+mv "$tmpfile" "$changelog"
+chmod $mode "$changelog"
diff --git a/zvm_functions b/zvm_functions
new file mode 100644 (file)
index 0000000..a914694
--- /dev/null
@@ -0,0 +1,223 @@
+#!/bin/bash
+
+zvm_cleanup_and_exit()
+{
+    if test -n "$1"; then
+        echo "$1"
+        umount ${BUILD_ROOT}/proc
+        umount ${BUILD_ROOT}/dev/pts
+        cleanup_and_exit 1
+    else
+        exit 0
+        cleanup_and_exit 1
+    fi
+}
+
+prevent_detach()
+{
+    if test "$1" = "150" -o "$1" = "0150"; then
+        echo "don't detach local root"
+        zvm_cleanup_and_exit 1
+    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 define storage ${2}M ; then
+            zvm_cleanup_and_exit "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_cleanup_and_exit "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 $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_cleanup_and_exit "User $1 not logged on."
+        else
+            if ! $(vmcp send $1 ipl $2); then
+                 zvm_cleanup_and_exit "Could not send command to $1"
+            fi
+        fi
+    else
+        zvm_cleanup_and_exit "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_cleanup_and_exit "Could not force $1"
+        fi
+    fi
+}
+
+zvm_get_local_devnr()
+{
+    # $1 is base address, either 150 or 250
+    # $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.
+    #echo "Debug: zvm_get_local_devnr: arg1: $1 arg2: $2"
+    if test $2 -ge 100 ; then
+        zvm_cleanup_and_exit "Not more than 100 workers supported by one controlling guest."
+    fi
+    if test "$1" = "0150" -o "$1" = "150" ; then 
+        DEVNR=$((300+$2))
+    else
+        if test "$1" = "0250" -o "$1" = "250" ; then 
+            DEVNR=$((400+$2))
+        else
+            zvm_cleanup_and_exit "The disk devices for root and swap must be 150 and 250 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 pass=THR4ME >& /dev/null ; then
+            zvm_cleanup_and_exit "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_cleanup_and_exit "The device /sys/bus/ccw/devices/0.0.0$DEVNR has not been setup correctly."
+        fi
+        echo "${DEVICE}1"
+    else
+        zvm_cleanup_and_exit "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)
+    prevent_detach $DEVNR
+    dasd_configure 0.0.0$DEVNR 0 0
+    if ! vmcp detach $DEVNR >& /dev/null ; then
+        zvm_cleanup_and_exit "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
+    if ! vmcp send $1 link \* $2 $2 ; then
+        zvm_cleanup_and_exit "Could not link remote worker disk number $2 from user $1"
+    fi 
+}
+
+zvm_volume_detach()
+{
+    # send machine detach nr
+    # $1: user name
+    # $2: disk
+    if ! vmcp send $1 detach $2 ; then
+        zvm_cleanup_and_exit "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 [ -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
+        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()
+{
+    modprobe vmcp || zvm_cleanup_and_exit "Cannod load vmcp module"
+    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
+}