our build.rpm with buildservice support
authorMichael Schröder <mls@suse.de>
Wed, 22 Mar 2006 16:07:38 +0000 (16:07 +0000)
committerMichael Schröder <mls@suse.de>
Wed, 22 Mar 2006 16:07:38 +0000 (16:07 +0000)
29 files changed:
Build.pm [new file with mode: 0644]
README [new file with mode: 0644]
baselibs.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]
configs/debian.conf [new file with mode: 0644]
configs/default.conf [new symlink]
configs/sl10.0.conf [new file with mode: 0644]
configs/sl10.1.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/sles8.conf [new file with mode: 0644]
configs/sles9.conf [new file with mode: 0644]
configs/ul1.conf [new file with mode: 0644]
createrpmdeps [new file with mode: 0755]
debsort [new file with mode: 0755]
expanddeps [new file with mode: 0755]
extractbuild [new file with mode: 0755]
getmacros [new file with mode: 0755]
init_buildsystem [new file with mode: 0755]
mkbaselibs [new file with mode: 0755]
substitutedeps [new file with mode: 0755]
xen.conf [new file with mode: 0644]

diff --git a/Build.pm b/Build.pm
new file mode 100644 (file)
index 0000000..bc33e07
--- /dev/null
+++ b/Build.pm
@@ -0,0 +1,981 @@
+
+package Build;
+
+our $expand_dbg;
+
+use strict;
+
+my $std_macros = q{
+%define ix86 i386 i486 i586 i686 athlon
+%define arm armv4l armv4b armv5l armv5b armv5tel armv5teb
+%define arml armv4l armv5l armv5tel
+%define armb armv4b armv5b armv5teb
+};
+
+sub unify {
+  my %h = map {$_ => 1} @_;
+  return grep(delete($h{$_}), @_);
+}
+
+sub read_config {
+  my ($arch, $cfile) = @_;
+  return undef unless !defined($cfile) || -e $cfile;
+  my @macros = split("\n", $std_macros);
+  push @macros, "%define _target_cpu $arch";
+  push @macros, "%define _target_os linux";
+  my $config = {'macros' => \@macros};
+  my (@spec);
+  read_spec($config, $cfile, \@spec) if $cfile;
+  $config->{'preinstall'} = [];
+  $config->{'required'} = [];
+  $config->{'support'} = [];
+  $config->{'keep'} = [];
+  $config->{'prefer'} = [];
+  $config->{'ignore'} = [];
+  $config->{'conflict'} = [];
+  $config->{'substitute'} = {};
+  my $inmacro = 0;
+  for my $l (@spec) {
+    if ($inmacro) {
+      push @macros, ref($l) ? $l->[0] : $l;
+      next;
+    }
+    $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:') {
+      $inmacro = 1;
+      next;
+    }
+    if ($l0 eq 'preinstall:' || $l0 eq 'required:' || $l0 eq 'support:' || $l0 eq 'keep:' || $l0 eq 'prefer:' || $l0 eq 'ignore:' || $l0 eq 'conflict:') {
+      push @{$config->{substr($l0, 0, -1)}}, @l;
+    } elsif ($l0 eq 'substitute:') {
+      next unless @l;
+      $ll = shift @l;
+      push @{$config->{'substitute'}->{$ll}}, @l;
+    } elsif ($l0 !~ /^[#%]/) {
+      warn("unknown keyword in config: $l0\n");
+    }
+  }
+  for my $l (qw{preinstall required support keep}) {
+    $config->{$l} = [ unify(@{$config->{$l}}) ];
+  }
+  for my $l (keys %{$config->{'substitute'}}) {
+    $config->{'substitute'}->{$l} = [ unify(@{$config->{'substitute'}->{$l}}) ];
+  }
+  $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;
+  $config->{'type'} = (grep {$_ eq 'rpm'} @{$config->{'preinstall'} || []}) ? 'spec' : 'dsc';
+  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};
+    if ($subst->{$d}) {
+      unshift @deps, @{$subst->{$d}};
+      push @res, $d if grep {$_ eq $d} @{$subst->{$d}};
+    } else {
+      push @res, $d;
+    }
+    $done{$d} = 1;
+  }
+  return @res;
+}
+
+sub get_build {
+  my ($config, $subpacks, @deps) = @_;
+  my @ndeps = grep {/^-/} @deps;
+  my %keep = map {$_ => 1} $config->{'keep'};
+  for (@{$subpacks || []}) {
+    push @ndeps, "-$_" unless $keep{$_};
+  }
+  my %ndeps = map {$_ => 1} @ndeps;
+  @deps = grep {!$ndeps{$_}} @deps;
+  push @deps, @{$config->{'preinstall'}};
+  push @deps, @{$config->{'required'}};
+  push @deps, @{$config->{'support'}};
+  @deps = grep {!$ndeps{"-$_"}} @deps;
+  @deps = do_subst($config, @deps);
+  @deps = grep {!$ndeps{"-$_"}} @deps;
+  @deps = expand($config, @deps);
+  return @deps;
+}
+
+sub get_deps {
+  my ($config, $subpacks, @deps) = @_;
+  my @ndeps = grep {/^-/} @deps;
+  my %keep = map {$_ => 1} $config->{'keep'};
+  for (@{$subpacks || []}) {
+    push @ndeps, "-$_" unless $keep{$_};
+  }
+  my %ndeps = map {$_ => 1} @ndeps;
+  @deps = grep {!$ndeps{$_}} @deps;
+  push @deps, @{$config->{'required'}};
+  @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);
+  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 readrpmdeps {
+  my ($config, $pkgidp, @depfiles) = @_;
+
+  my %provides = ();
+  my %requires = ();
+  local *F;
+  my %prov;
+  for my $depfile (@depfiles) {
+    if (ref($depfile) eq 'HASH') {
+      for my $rr (keys %$depfile) {
+       $prov{$rr} = $depfile->{$rr}->{'provides'};
+       $requires{$rr} = $depfile->{$rr}->{'requires'};
+      }
+      next;
+    }
+    open(F, "<$depfile") || die("$depfile: $!\n");
+    while(<F>) {
+      my @s = split(' ', $_);
+      my $s = shift @s;
+      my @ss; 
+      while (@s) {
+       if ($s[0] =~ /^\//) {
+         shift @s;
+         next;
+       }
+       if ($s[0] =~ /^rpmlib\(/) {
+         shift @s;
+         shift @s;
+         shift @s;
+         next;
+       }
+       push @ss, shift @s;
+       if (@s && $s[0] =~ /^[<=>]/) {
+         shift @s;
+         shift @s;
+       }
+      }
+      my %ss; 
+      @ss = grep {!$ss{$_}++} @ss;
+      if ($s =~ s/^P:(.*):$/$1/) {
+       my $pkgid = $s;
+       $s =~ s/-[^-]+-[^-]+-[^-]+$//;
+       $prov{$s} = \@ss; 
+       $pkgidp->{$s} = $pkgid if $pkgidp;
+      } elsif ($s =~ s/^R:(.*):$/$1/) {
+       my $pkgid = $s;
+       $s =~ s/-[^-]+-[^-]+-[^-]+$//;
+       $requires{$s} = \@ss; 
+       $pkgidp->{$s} = $pkgid if $pkgidp;
+      }
+    }
+    close F;
+  }
+  for my $p (keys %prov) {
+    push @{$provides{$_}}, $p for unify(@{$prov{$p}});
+  }
+  $config->{'providesh'} = \%provides;
+  $config->{'requiresh'} = \%requires;
+}
+
+sub forgetrpmdeps {
+  my $config;
+  delete $config->{'providesh'};
+  delete $config->{'requiresh'};
+}
+
+sub expand {
+  my ($config, @p) = @_;
+
+  my $conflicts = $config->{'conflicth'};
+  my $prefer = $config->{'preferh'};
+  my $ignore = $config->{'ignoreh'};
+
+  my $provides = $config->{'providesh'};
+  my $requires = $config->{'requiresh'};
+
+  my %xignore = map {substr($_, 1) => 1} grep {/^-/} @p;
+  @p = grep {!/^-/} @p;
+  my %p = map {$_ => 1} grep {$requires->{$_}} @p;
+
+  my %aconflicts;
+  for my $p (keys %p) {
+    $aconflicts{$_} = 1 for @{$conflicts->{$p} || []};
+  }
+
+  while (@p) {
+    my $didsomething = 0;
+    my @error = ();
+    my @uerror = ();
+    my @usolve = ();
+    for my $p (splice @p) {
+      for my $r (@{$requires->{$p} || [$p]}) {
+       next if $ignore->{"$p:$r"} || $xignore{"$p:$r"};
+       next if $ignore->{$r} || $xignore{$r};
+       my @q = @{$provides->{$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) {
+           return undef, "nothing provides $r";
+         } else {
+           return undef, "nothing provides $r needed by $p";
+         }
+       }
+       if (@q > 1 && grep {$conflicts->{$_}} @q) {
+         # delay this one as some conflict later on might
+         # clear things up
+         push @p, $p unless @p && $p[-1] eq $p;
+         print "undecided about $p:$r: @q\n" if $expand_dbg;
+         if ($r ne $p) {
+           push @uerror, "have choice for $r needed by $p: @q";
+         } else {
+           push @uerror, "have choice for $r: @q";
+         }
+         push @usolve, @q;
+         push @usolve, map {"$p:$_"} @q;
+         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) {
+         if ($r ne $p) {
+           push @error, "have choice for $r needed by $p: @q";
+          } else {
+           push @error, "have choice for $r: @q";
+          }
+         push @p, $p unless @p && $p[-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]} || []};
+       $didsomething = 1;
+       @error = ();
+      }
+    }
+    if (!$didsomething && @error) {
+      return undef, @error;
+    }
+    if (!$didsomething && @usolve) {
+      # only conflicts left
+      print "looking at conflicts: @usolve\n" if $expand_dbg;
+      @usolve = grep {$prefer->{$_}} @usolve;
+      if (@usolve > 1) {
+        my %usolve = map {$_ => 1} @usolve;
+        @usolve  = (grep {$usolve{$_}} @{$config->{'prefer'}})[0];
+      }
+      if (@usolve) {
+       $usolve[0] =~ s/:.*//;
+        push @p, $usolve[0];
+        print "added $usolve[0]\n" if $expand_dbg;
+        $p{$usolve[0]} = 1;
+        $aconflicts{$_} = 1 for @{$conflicts->{$usolve[0]} || []};
+       next;
+      }
+      return undef, @uerror;
+    }
+  }
+  return 1, (sort keys %p);
+}
+
+sub add_all_providers {
+  my ($config, @p) = @_;
+  my $provides = $config->{'providesh'};
+  my $requires = $config->{'requiresh'};
+  my %a;
+  for my $p (@p) {
+    for my $r (@{$requires->{$p} || [$p]}) {
+      $a{$_} = 1 for @{$provides->{$r} || []};
+    }
+  }
+  push @p, keys %a;
+  return unify(@p);
+}
+
+###########################################################################
+
+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 = !$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 &&= $v2;
+    } elsif ($expr =~ /^\|\|/) {
+      return ($v, $expr) if $lev > 1;
+      ($v2, $expr) = expr(substr($expr, 2), 1);
+      return undef unless defined $v2;
+      $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 read_spec {
+  my ($config, $specfile, $xspec) = @_;
+
+  my $packname;
+  my $packvers;
+  my @subpacks;
+  my @packdeps;
+  my $hasnfb;
+  my %macros;
+
+  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");
+    return (undef, "open: $!", undef);
+  }
+  my @macros = @{$config->{'macros'}};
+  my $skip = 0;
+  my $main_preamble = 1;
+  my $inspec = 0;
+  while (1) {
+    my $line;
+    if (@macros) {
+      $line = pop @macros;
+    } elsif ($specdata) {
+      $inspec = 1;
+      last unless @$specdata;
+      $line = shift @$specdata;
+    } else {
+      $inspec = 1;
+      $line = <SPEC>;
+      last unless defined $line;
+      chomp $line;
+    }
+    push @$xspec, $line if $inspec && $xspec;
+    if ($line =~ /^#\s*neededforbuild\s*(\S.*)$/) {
+      next if $hasnfb;
+      $hasnfb = $1;
+      next;
+    }
+    if ($line =~ /^\s*#/) {
+      next unless $line =~ /^#!BuildIgnore/;
+    }
+    my $expandedline = '';
+    if (!$skip) {
+      my $tries = 0;
+      while ($line =~ /^(.*?)%(\{([^\}]+)\}|[0-9a-zA-Z_]+|%|\()(.*?)$/) {
+       if ($tries++ > 1000) {
+         $line = 'MACRO';
+         last;
+       }
+       $expandedline .= $1;
+       $line = $4;
+       my $macname = defined($3) ? $3 : $2;
+       my $mactest = 0;
+       if ($macname =~ /^\!\?/ || $macname =~ /^\?\!/) {
+         $mactest = -1;
+       } elsif ($macname =~ /^\?/) {
+         $mactest = 1;
+       }
+       $macname =~ s/^[\!\?]+//;
+       my $macalt;
+       ($macname, $macalt) = split(':', $macname, 2);
+       if ($macname eq '%') {
+         $expandedline .= '%';
+         next;
+       } elsif ($macname eq '(') {
+         $line = 'MACRO';
+         last;
+       } elsif ($macname eq 'define') {
+         if ($line =~ /^\s*([0-9a-zA-Z_]+)(\([^\)]*\))?\s*(.*?)$/) {
+           my $macname = $1;
+           my $macargs = $2;
+           my $macbody = $3;
+           $macbody = undef if $macargs;
+           $macros{$macname} = $macbody;
+         }
+         $line = '';
+         last;
+       } elsif (exists($macros{$macname})) {
+         if (!defined($macros{$macname})) {
+           $line = 'MACRO';
+           last;
+         }
+         $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 .= "%$2";
+       }
+      }
+    }
+    $line = $expandedline . $line;
+    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;
+      next;
+    }
+
+    if ($line =~ /^\s*%ifarch(.*)$/) {
+      my $arch = $macros{'_target_cpu'} || 'unknown';
+      my @archs = grep {$_ eq $arch} split(/\s+/, $1);
+      $skip = 1 if !@archs;
+      next;
+    }
+    if ($line =~ /^\s*%ifnarch(.*)$/) {
+      my $arch = $macros{'_target_cpu'} || 'unknown';
+      my @archs = grep {$_ eq $arch} split(/\s+/, $1);
+      $skip = 1 if @archs;
+      next;
+    }
+    if ($line =~ /^\s*%ifos(.*)$/) {
+      my $os = $macros{'_target_os'} || 'unknown';
+      my @oss = grep {$_ eq $os} split(/\s+/, $1);
+      $skip = 1 if !@oss;
+      next;
+    }
+    if ($line =~ /^\s*%ifnos(.*)$/) {
+      my $os = $macros{'_target_os'} || 'unknown';
+      my @oss = grep {$_ eq $os} split(/\s+/, $1);
+      $skip = 1 if @oss;
+      next;
+    }
+    if ($line =~ /^\s*%if(.*)$/) {
+      my ($v, $r) = expr($1);
+      $v = 0 if $v && $v eq '\"\"';
+      $skip = 1 unless $v;
+      next;
+    }
+    if ($main_preamble && ($line =~ /^Name:\s*(\S+)/i)) {
+      $packname = $1;
+      $macros{'name'} = $packname;
+    }
+    if ($main_preamble && ($line =~ /^Version:\s*(\S+)/i)) {
+      $packvers = $1;
+      $macros{'version'} = $packvers;
+    }
+    if ($main_preamble && ($line =~ /^(BuildRequires|BuildConflicts|\#\!BuildIgnore):\s*(\S.*)$/i)) {
+      my $what = $1;
+      my $deps = $2;
+      my @deps = $deps =~ /([^\s\[\(,]+)(\s+[<=>]+\s+[^\s\[,]+)?(\s+\[[^\]]+\])?[\s,]*/g;
+      if (defined($hasnfb)) {
+        next unless $xspec;
+        if ((grep {$_ eq 'glibc' || $_ eq 'rpm' || $_ eq 'gcc' || $_ eq 'bash'} @deps) > 2) {
+          # ignore old generetad BuildRequire lines.
+         $xspec->[-1] = [ $xspec->[-1], undef ];
+        }
+        next;
+      }
+      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;
+       }
+       push @ndeps, $pack;
+      }
+      $replace = 1 if grep {/^-/} @ndeps;
+      if ($what ne 'BuildRequires') {
+       push @packdeps, map {"-$_"} @ndeps;
+       next;
+      }
+      push @packdeps, @ndeps;
+      next unless $xspec && $inspec;
+      if ($replace) {
+       my @cndeps = grep {!/^-/} @ndeps;
+       if (@cndeps) {
+          $xspec->[-1] = [ $xspec->[-1], "BuildRequires:  ".join(' ', @cndeps) ];
+       } else {
+          $xspec->[-1] = [ $xspec->[-1], ''];
+       }
+      }
+      next;
+    }
+
+    if ($line =~ /^\s*%package\s+(-n\s+)?(\S+)/) {
+      if ($1) {
+       push @subpacks, $2;
+      } else {
+       push @subpacks, "$packname-$2" if defined $packname;
+      }
+    }
+
+    if ($line =~ /^\s*%(package|prep|build|install|check|clean|preun|postun|pretrans|posttrans|pre|post|files|changelog|description|triggerpostun|triggerun|triggerin|trigger|verifyscript)/) {
+      $main_preamble = 0;
+    }
+  }
+  close SPEC unless ref $specfile;
+  if (defined($hasnfb)) {
+    if (!@packdeps) {
+      @packdeps = split(' ', $hasnfb);
+    }
+  }
+  unshift @subpacks, $packname;
+  return ($packname, $packvers, \@subpacks, @packdeps);
+}
+
+###########################################################################
+
+sub read_dsc {
+  my ($bconf, $fn) = @_;
+  local *F;
+  open(F, '<', $fn) || return ();
+  my @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') {
+      my @d = split(/,\s*/, $data);
+      s/\s.*// for @d;
+      push @deps, @d;
+    } elsif ($tag eq 'BUILD-CONFLICTS' || $tag eq 'BUILD-IGNORE') {
+      my @d = split(/,\s*/, $data);
+      s/\s.*// for @d;
+      push @deps, map {"-$_"} @d;
+    }
+  }
+  return ($name, $version, undef, @deps);
+}
+
+###########################################################################
+
+sub rpmq {
+  my $rpm = shift;
+  my @stags = @_;
+  my %stags = map {0+$_ => $_} @stags; 
+
+  my ($magic, $sigtype, $headmagic, $cnt, $cntdata, $lead, $head, $index, $data, $tag, $type, $offset, $count);
+
+  local *RPM;
+  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;
+    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 ();
+  }
+  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;
+  my %res = ();
+  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 ();
+      }
+    }
+  }
+  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 $have_zlib;
+eval {
+  require Compress::Zlib;
+  $have_zlib = 1;
+};
+
+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 *F;
+  if (ref($fn) eq 'GLOB') {
+      *F = $fn;
+  } elsif (!open(F, '<', $fn)) {
+    warn("$fn: $!\n");
+    return ();
+  }
+  my $data = '';
+  sysread(F, $data, 4096);
+  if (length($data) < 8+60) {
+    warn("$fn: not a debian package\n");
+    close F unless ref $fn;
+    return ();
+  }
+  if (substr($data, 0, 8+16) ne "!<arch>\ndebian-binary   ") {
+    close F 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(F, $data, $r < 4096 ? 4096 : $r, length($data)) || 0) < $r) {
+      warn("$fn: unexpected EOF\n");
+      close F 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 F unless ref $fn;
+    return ();
+  }
+  $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("$fn: unexpected EOF\n");
+      close F unless ref $fn;
+      return ();
+    }
+  }
+  close F;
+  $data = substr($data, 60, $len);
+  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;
+  }
+  return %res;
+}
+
+1;
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..da404f4
--- /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.conf b/baselibs.conf
new file mode 100644 (file)
index 0000000..72dc7ce
--- /dev/null
@@ -0,0 +1,629 @@
+# do not add a package without a comment
+
+#
+# core runtime packages
+#
+glibc
+  post "-p "/sbin/ldconfig -n /%_lib""
+  targettype x86 +/etc/ld.so.conf
+  targettype x86 "/lib/ld-linux.so.2 -> <prefix>/lib/ld-linux.so.2"
+  targettype x86 obsoletes "baselibs-x86"
+  prereq -glibc-x86
+
+glibc-locale
+  +/usr/lib(64)?/gconv/gconv-modules
+  targettype x86 -/usr/lib(64)?/gconv/gconv-modules
+readline
+ncurses
+  targettype x86 provides "baselibs-x86:<prefix>/lib/libncurses.so.5"
+
+targettype x86 package bash
+  +^/bin/bash$
+  +^/bin/sh$
+  prereq -glibc-x86
+
+targettype x86 package coreutils
+  +^/bin/uname$
+  prereq -glibc-x86
+
+#
+# core development packages
+#
+glibc-devel
+  +^/usr/include/gnu/stubs-.*\.h$
+glibc-profile
+gdb
+  +/usr/bin/gdbserver -> /usr/bin/gdbserver<extension>
+  +/usr/bin/gdb -> /usr/bin/gdb<extension>
+  # kill package for i586 32bit
+  targetarch x86_64 block!
+  prereq -glibc-x86
+strace
+  +/usr/bin/strace-graph -> /usr/bin/strace-graph<extension>
+  +/usr/bin/strace -> /usr/bin/strace<extension>
+  prereq -glibc-x86
+ltrace
+  +/usr/bin/ltrace -> /usr/bin/ltrace<extension>
+#
+# essential devel packages
+#
+readline-devel
+ncurses-devel
+
+#
+# gcc devel and runtime libs
+libgcj
+  # see bugzilla #144113
+  requires "libgcj"
+  +/usr/bin/grmiregistry -> /usr/bin/grmiregistry<extension>
+  +/usr/bin/gij -> /usr/bin/gij<extension>
+libgcj-devel
+targettype x86 package libada
+targettype x86 package libgcc
+targettype x86 package libobjc
+targettype x86 package libstdc++
+targettype x86 package compat-libstdc++
+# for gcc4
+gmp
+
+java-1_4_2-gcj-compat
+  +.*/(java|rmiregistry|rt\.jar)$
+  provides "jre-<extension>"
+  requires "libgcj-<targettype>"
+
+#
+# libs for old binaries
+#
+compat
+  targettype x86 provides "baselibs-x86:<prefix>/usr/lib/libg++-1.so.2"
+#
+compat-openssl097g
+
+#
+# postgres requirements:
+#
+zlib
+  targettype x86 provides "baselibs-x86:<prefix>/lib/libz.so.1"
+zlib-devel
+tcl
+perl
+python
+
+#
+# mysql requirements:
+#
+tcpd
+
+#
+# python requirements:
+#
+bzip2
+  targettype x86 provides "baselibs-x86:<prefix>/usr/lib/libbz2.so.1"
+db
+gdbm
+#
+# perl requirements:
+#
+bzip2
+db
+gdbm
+gdbm-devel
+
+#
+# heimdal requirements
+#
+db42
+#
+# wine & wine-devel requirements:
+#
+xorg-x11-Mesa
+  obsoletes "XFree86-Mesa-<targettype>"
+  provides  "XFree86-Mesa-<targettype>"
+xorg-x11-Mesa-devel
+  obsoletes "XFree86-Mesa-devel-<targettype>"
+  provides  "XFree86-Mesa-devel-<targettype>"
+Mesa
+  obsoletes "XFree86-Mesa-<targettype> xorg-x11-Mesa-<targettype>"
+  provides  "XFree86-Mesa-<targettype> xorg-x11-Mesa-<targettype>"
+Mesa-devel
+  obsoletes "XFree86-Mesa-devel-<targettype> xorg-x11-Mesa-devel-<targettype>"
+  provides  "XFree86-Mesa-devel-<targettype> xorg-x11-Mesa-devel-<targettype>"
+xorg-x11-libs
+  obsoletes "XFree86-compat-libs-<targettype> XFree86-libs-<targettype>"
+  provides  "XFree86-compat-libs-<targettype> XFree86-libs-<targettype>"
+  targettype x86 provides "baselibs-x86:<prefix>/usr/X11R6/lib/libX11.so.6"
+xorg-x11-devel
+  obsoletes "XFree86-devel-<targettype>"
+  provides  "XFree86-devel-<targettype>"
+  requires -xorg-x11-<targettype>
+  requires "xorg-x11-libs-<targettype> = <version>"
+libdrm
+libdrm-devel
+alsa
+capi4linux
+  -/pppd
+freeglut
+freeglut-devel
+libjpeg
+libjpeg-devel
+liblcms
+liblcms-devel
+giflib
+  obsoletes "libungif-<targettype>"
+  provides  "libungif-<targettype>"
+  targettype 32bit provides "libungif.so.4"
+  targettype 64bit provides "libungif.so.4()(64bit)"
+giflib-devel
+sane
+openssl
+openssl-devel
+
+#
+# wine devel requirements
+#
+bison
+flex
+gcc
+libsmbclient
+samba-libs
+
+#
+# libsmbclient requirements:
+#
+#kerberos implementation switched to krb5 currently
+#heimdal-lib
+#heimdal-devel
+
+krb5
+  obsoletes "heimdal-lib-<targettype>"
+  provides  "heimdal-lib-<targettype>"
+krb5-devel
+
+e2fsprogs
+e2fsprogs-devel
+openldap2-client
+openldap2-devel
+  requires -openldap2-<targettype>
+  requires "openldap2-client-<targettype> = <version>"
+
+#
+# Needed by MarbleBlast (32bit game on amd64)
+#
+SDL
+SDL-devel
+
+# Needed by SDL
+#
+aalib
+aalib-devel
+
+#
+# Needed by aalib
+#
+slang
+slang-devel
+gpm
+
+
+#
+# Needed by openldap2-client
+#
+cyrus-sasl
+cyrus-sasl-devel
+
+#
+# xorg-x11-libs requirements:
+#
+expat
+fontconfig
+fontconfig-devel
+freetype2
+freetype2-devel
+
+#
+# kdebase3-nsplugin requirements:
+#
+openmotif-libs
+openmotif-devel
+  requires -openmotif-<targettype>
+  requires "openmotif-libs-<targettype> = <version>"
+xorg-x11-libs
+kdelibs3
+kdelibs3-arts
+glibc
+libart_lgpl
+qt3
+qt3-devel
+fontconfig
+freetype2
+expat
+libpng
+libpng-devel
+zlib
+fam
+cups-libs
+
+#
+# qt3 requirements:
+#
+libmng
+
+#
+# kdelibs3 requirements:
+#
+arts
+aspell
+audiofile
+glib2
+libjasper
+libogg
+libtiff
+libtiff-devel
+libvorbis
+libxml2
+libxml2-devel
+libxslt
+libxslt-devel
+mad
+pcre
+libidn
+jack
+OpenEXR
+
+#
+# lkcdutils-netdump-server requirements:
+#
+popt
+glib
+
+#
+# only for SLES
+#laus
+#  +/sbin/auditd -> /sbin/auditd<extension>
+#  +/usr/sbin/aucat -> /usr/sbin/aucat<extension>
+#  +/usr/sbin/audbin -> /usr/sbin/audbin<extension>
+#  +/usr/sbin/aurun64 -> /usr/sbin/aurun<extension>
+#laus-devel
+
+#
+# http://bugzilla.suse.de/show_bug.cgi?id=34512
+# openal requirements:
+#
+openal
+
+#
+# eclipse
+#
+libbonobo
+libidl
+gnome-vfs2
+gconf2
+orbit2
+
+#
+# openoffice
+#
+thinkeramik
+thinkeramik-style
+startup-notification
+evolution-data-server
+glitz
+libpixman
+cairo
+curl
+neon
+libsndfile
+mono-core
+  +/usr/bin/mono -> /usr/bin/mono<extension>
+
+#
+# evolution-data-server
+#
+libgcrypt
+libgcrypt-devel
+gnutls
+gnutls-devel
+libgpg-error
+libgpg-error-devel
+libsoup
+libsoup-devel
+
+#
+# gnutls
+#
+libopencdk
+libopencdk-devel
+lzo
+lzo-devel
+
+
+# MainActor
+libavc1394
+libavc1394-devel
+#
+
+# customers with 64bit databases on biarch systems...
+libaio
+libaio-devel
+# http://bugzilla.suse.de/show_bug.cgi?id=41276
+libcap
+# also db access libraries and development libs.
+unixODBC
+unixODBC-devel
+  requires "unixODBC-<targettype> = <version>"
+
+#
+# Dinge wo keiner so rischtisch weiss wers braucht...
+#
+parted
+libusb
+DirectFB
+atk
+bind-libs
+  obsoletes "bind-utils-<targettype>"
+  provides  "bind-utils-<targettype>"
+binutils
+cdparanoia
+cracklib
+db1
+db40
+esound
+file
+flac
+gettext
+glib
+glib-devel
+gnome-libs
+gtk
+gtk2
+  +/opt/gnome/bin/gdk-pixbuf-query-loaders(-64)?
+  +/opt/gnome/bin/gtk-query-immodules-2.0(-64)?
+  prereq "/usr/bin/touch"
+  post "touch var/adm/SuSEconfig/run-gtk"
+imlib
+libacl
+libattr
+libica
+libmikmod
+libmpeg3
+libtool
+libxcrypt
+libxml
+nss_ldap
+orbit
+
+pango
+  +/etc/opt/gnome/pango/pango.modules
+  +/opt/gnome/bin/pango-querymodules(-64)?
+  prereq "/usr/bin/touch"
+  post "touch var/adm/SuSEconfig/run-pango"
+popt
+popt-devel
+postgresql-libs
+resmgr
+#rpm
+speex
+taglib
+termcap
+  targettype x86 provides "baselibs-x86:<prefix>/usr/lib/libtermcap.so.2"
+tk
+utempter
+xaw3d
+xmms-lib
+  obsoletes "xmms-<targettype>"
+  provides  "xmms-<targettype>"
+pciutils
+pciutils-devel
+  requires -pciutils-<targettype>
+libglade
+#
+# xine-lib
+#
+xine-lib
+libtheora
+#
+# kraxel
+#
+libexif
+
+#
+# mono
+#
+libicu
+libicu-devel
+
+#
+# gtk-sharp
+#
+libgnomeui
+libbonoboui
+libglade2
+libgnome
+gnome-keyring
+libgnomecanvas
+libgnomeprint
+libgnomeprintui
+libgnomecups
+gnome-themes
+gtk-qt-engine
+gtk2-engines
+librsvg
+libgsf
+libcroco
+#
+# iscan
+#
+libgphoto2
+libieee1284
+
+#
+# kdebase3 requirements:
+#
+kdebase3
+kdebase3-khotkeys
+libraw1394
+libraw1394-devel
+
+#
+# pam-modules requirements:
+#
+pam
+pam-modules
+pam_ldap
+pam_krb5
+libselinux
+libselinux-devel
+
+#
+# PowerDVD
+#
+gdk-pixbuf
+
+#
+# PHP4
+#
+php4
+  +/usr/lib(64)?/php/sce_install
+
+# used by kdebase3
+dbus-1
+dbus-1-qt3
+hal
+
+# other dbus
+dbus-1-qt
+qt
+
+# used by kdelibs3
+mDNSResponder
+
+# used by DirectFB
+sysfsutils
+
+# used by various
+db42
+
+# used by xine-lib
+libcdio
+libcddb
+vcdimager
+
+# used by kdebase3
+powersave-libs
+cpufrequtils
+
+# novell-ifolder
+compat-curl2
+
+# nautilus-ifolder
+eel
+gail
+nautilus
+newt
+sqlite2
+gnome-desktop
+gnome-menus
+libbeagle
+
+# build tcl browser plugin
+tclplug
+# useful for media players
+lirc
+# for gambas
+mysql-shared
+SDL_mixer
+SDL_mixer-devel
+# for krb5 et al
+libcom_err
+# for mozilla et al
+mozilla-nspr
+mozilla-nss
+# for ltrace
+libelf
+# for scilab
+f2c
+# for arcad_eval
+libnetpbm
+# for banshee
+nautilus-cd-burner
+gstreamer
+gstreamer-plugins
+dbus-1-glib
+sqlite
+libipoddevice
+libgtop
+gtk-sharp
+gtk-sharp2
+gnome-panel
+gnome-panel-nld
+libwnck
+#
+# x86 stuff
+#
+freetype
+itcl
+libgtkhtml
+scim
+openmotif21-libs
+# Mplayer
+libdv
+xvid
+lame
+fribidi
+# edirectory
+openslp
+# qa team
+ltp
+reaim
+# ibm request
+libhugetlbfs
+  +/usr/lib(64)?/libhugetlbfs
+
+numactl
+# pam module included
+CASA
+# ppc 64bit stuff
+arch ppc64 package bind-devel
+  requires -bind-<targettype>
+arch ppc64 package boost
+arch ppc64 package boost-devel
+arch ppc64 package libacl-devel
+arch ppc64 package libapr-util1
+arch ppc64 package libapr-util1-devel
+arch ppc64 package libapr1
+arch ppc64 package libapr1-devel
+arch ppc64 package libattr-devel
+arch ppc64 package libnotify
+arch ppc64 package libnotify-devel
+arch ppc64 package recode
+arch ppc64 package recode-devel
+arch ppc64 package blocxx
+arch ppc64 package blocxx-devel
+arch ppc64 package gmp-devel
+arch ppc64 package gtk2-devel
+arch ppc64 package libzio
+arch ppc64 package net-snmp
+arch ppc64 package net-snmp-devel
+arch ppc64 package qt-devel
+arch ppc64 package qt-qt3support
+arch ppc64 package qt-sql
+arch ppc64 package qt-sql-sqlite
+arch ppc64 package qt-x11
+arch ppc64 package qt3-devel-doc
+arch ppc64 package qt3-devel-tools
+arch ppc64 package qt3-mysql
+arch ppc64 package qt3-postgresql
+arch ppc64 package qt3-unixODBC
+arch ppc64 package tcpd-devel
+
+# ia32el trampoline
+targettype x86 package ia32el
+  +/usr/lib/ia32el
+
+# IBM request
+device-mapper
+itrace
+# ICAClient
+novell-NLDAPsdk
+# helix hack
+helix-dbus-server
diff --git a/baselibs_global.conf b/baselibs_global.conf
new file mode 100644 (file)
index 0000000..15d997e
--- /dev/null
@@ -0,0 +1,30 @@
+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
+
+targettype x86 prefix /emul/ia32-linux
+configdir /usr/lib/baselibs-<targettype>/bin
+targettype x86 extension -x86
+targettype 32bit extension 32
+targettype 64bit extension 64
+
+targetname <name>-<targettype>
+
++.*/lib(64)?/.*\.(so.*|o|a|la)$
+
+targettype 64bit -^(/usr)?/lib/lib
+targettype 32bit -/lib64/
+targettype x86   -/lib64/
+
+config    +.*bin.*-config$
+config    -/kde-config$
+
+targettype x86 requires "ia32el"
+targettype x86 prereq "glibc-x86"
+
+package /(.*)-devel$/
+targettype x86 block!
+requires "<name> = <version>"
+requires "<match1>-<targettype> = <version>"
diff --git a/build b/build
new file mode 100755 (executable)
index 0000000..cf40394
--- /dev/null
+++ b/build
@@ -0,0 +1,630 @@
+#!/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-2006 SuSE GmbH Nuernberg, Germany
+
+test -z "$BUILD_ROOT" && BUILD_ROOT=/var/tmp/build-root
+test -z "$BUILD_RPMS" && BUILD_RPMS=/media/dvd/suse
+test -z "$BUILD_ARCH" && {
+    BUILD_ARCH=`uname -m`
+    test i686 = "$BUILD_ARCH" && BUILD_ARCH=i586
+}
+export BUILD_ARCH BUILD_ROOT BUILD_RPMS
+
+export BUILD_DIR=/usr/lib/build
+export PATH=$BUILD_DIR:$PATH
+
+# 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 :)
+
+  --clean     Delete old build root before initializing it
+
+  --no-init   Skip initialization of build root and start with build
+              immediately.
+
+  --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
+
+  --useusedforbuild
+              Do not expand dependencies but search the specfile for
+              usedforbuild lines.
+
+  --verify    Run verify when initializing the build root
+
+  --extra-packs pack
+              Also install package 'pack'
+
+  --root rootdir
+              Use 'rootdir' to setup chroot environment
+
+  --baselibs  Create -32bit/-64bit/-x86 rpms for other architectures
+
+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
+}
+
+function clean_build_root () {
+        test -n "$BUILD_ROOT" && {
+            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
+            rm -rf $BUILD_ROOT/*
+        }
+}
+
+#
+#  cleanup_and_exit
+#
+cleanup_and_exit () {
+    if test "$1" = 0 -o -z "$1" ; then
+        exit 0
+    else
+        exit $1
+    fi
+}
+
+function create_baselibs {
+    echo "... creating baselibs"
+    BRPMS=
+    for RPM in $BUILD_ROOT$TOPDIR/RPMS/*/*.rpm ; do
+        BRPMS="$BRPMS ${RPM#$BUILD_ROOT}"
+    done
+    BASELIBS_CFG=
+    if test -e $BUILD_ROOT$TOPDIR/SOURCES/baselibs.conf ; then
+       BASELIBS_CFG="-c $TOPDIR/SOURCES/baselibs.conf"
+    fi
+    if test -f $BUILD_ROOT/usr/lib/build/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
+       chroot $BUILD_ROOT /usr/lib/build/mkbaselibs -c /usr/lib/build/baselibs_global.conf $BASELIBS_CFG $BRPMS || cleanup_and_exit 1
+    else
+       # use external version
+       rm -rf $BUILD_ROOT/.mkbaselibs
+       mkdir -p $BUILD_ROOT/.mkbaselibs
+       cp -f $BUILD_DIR/mkbaselibs $BUILD_ROOT/.mkbaselibs
+       cp -f $BUILD_DIR/baselibs_global.conf $BUILD_ROOT/.mkbaselibs
+       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
+       chroot $BUILD_ROOT /.mkbaselibs/mkbaselibs -c /.mkbaselibs/baselibs_global.conf $BASELIBS_CFG $BRPMS || cleanup_and_exit 1
+       rm -rf $BUILD_ROOT/.mkbaselibs
+    fi
+}
+
+DO_INIT=true
+CLEAN_BUILD=false
+SRCDIR=
+BUILD_JOBS=
+ABUILD_TARGET_ARCH=
+CREATE_BASELIBS=
+USEUSEDFORBUILD=
+XENIMAGE=
+XENSWAP=
+XENMEMORY=
+BUILD_INIT_BUILDSYSTEM=init_buildsystem
+RUNNING_IN_XEN=
+RPMLIST=
+RELEASE=
+REASON=
+NOROOTFORBUILD=
+
+if test "$0" = "/.build/build" ; then
+    BUILD_ROOT=/
+    BUILD_DIR=/.build
+    . $BUILD_DIR/build.data
+    PATH=$BUILD_DIR:$PATH
+    RUNNING_IN_XEN=true
+    if test -n "$XENSWAP" ; then
+       for i in 1 2 3 4 5 6 7 8 9 10 ; do
+           test -e "$XENSWAP" && break
+           test $i = 1 && echo "waiting for $XENSWAP to appear"
+           echo -n .
+           sleep 1
+       done
+       test $i = 1 || echo
+       cp -a "$XENSWAP" /.build/swapdev
+    fi
+    umount -l /dev 2>/dev/null
+    mount -orw -n -tproc none /proc 2>/dev/null
+    if test -n "$XENSWAP" ; then
+       rm -f "$XENSWAP"
+       cp -a /.build/swapdev "$XENSWAP"
+       swapon -v "$XENSWAP" || exit 1
+    fi
+    set "/.build-srcdir/$SPECFILE"
+fi
+
+while test -n "$1"; do
+  PARAM="$1"
+  ARG="$2"
+  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
+      ;;
+      *-clean)
+        CLEAN_BUILD=true
+      ;;
+      *-rpms)
+        BUILD_RPMS="$ARG"
+       if [ -z "$BUILD_RPMS" ] ; then
+         echo_help
+         cleanup_and_exit
+       fi
+        shift
+      ;;
+      *-arch)
+        BUILD_ARCH="$ARG"
+        shift
+      ;;
+      *-verify)
+        export VERIFY_BUILD_SYSTEM=true
+      ;;
+      *-target)
+       ABUILD_TARGET_ARCH="$ARG"
+       shift
+      ;;
+      *-jobs) 
+       BUILD_JOBS="$ARG"
+       shift
+      ;;
+      *-extra*packs|-X)
+        BUILD_EXTRA_PACKS="$BUILD_EXTRA_PACKS $ARG"
+        shift
+      ;;
+      *-baselibs)
+        CREATE_BASELIBS=true
+        ;;
+      *-root)
+        BUILD_ROOT="$ARG"
+        shift
+      ;;
+      *-dist) 
+       BUILD_DIST="$ARG"
+       export BUILD_DIST
+       shift
+      ;;
+      *-xen)
+        XENIMAGE="$ARG"
+        shift
+      ;;
+      *-xenswap)
+        XENSWAP="$ARG"
+        shift
+      ;;
+      *-xenmemory)
+        XENMEMORY="memory=$ARG"
+        shift
+      ;;
+      *-rpmlist)
+        RPMLIST="--rpmlist $ARG"
+       BUILD_RPMS=
+        shift
+      ;;
+      *-release)
+        RELEASE="--release $ARG"
+        shift
+      ;;
+      *-reason)
+        REASON="$ARG"
+        shift
+      ;;
+      *-norootforbuild)
+        NOROOTFORBUILD=true
+      ;;
+      *-stage)
+        BUILD_RPM_BUILD_STAGE="$ARG"
+        shift
+      ;;
+      *-useusedforbuild)
+        USEUSEDFORBUILD="--useusedforbuild"
+      ;;
+      ----noarg)
+        echo "$ARG does not take an argument"
+        cleanup_and_exit
+      ;;
+      -*)
+        echo Unknown Option "$PARAM". Exit.
+        cleanup_and_exit 1
+      ;;
+      *)
+        test -n "$SRCDIR" && usage
+        SRCDIR="$PARAM"
+      ;;
+    esac
+done
+
+test $UID != 0 && {
+    echo You have to be root to use $0. Exit.
+    cleanup_and_exit 1
+}
+
+case $BUILD_ARCH in
+i686) BUILD_ARCH="i686:i586:i486:i386" ;;
+i586) BUILD_ARCH="i586:i486:i386" ;;
+i486) BUILD_ARCH="i486:i386" ;;
+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 "
+    test "$cpuflags" = "${cpuflags/ cx8 /}" -o "$cpuflags" = "${cpuflags/ cmov /}" && {
+       echo "Your cpu doesn't support i686 rpms. Exit."
+       exit 1
+    }
+fi
+
+if test "`echo $SRCDIR | cut -c 1`" != "/" ; then
+    SRCDIR=`pwd`/$SRCDIR
+fi
+
+if test -f $SRCDIR ; then
+    SPECFILES=`basename $SRCDIR`
+    SRCDIR=`dirname $SRCDIR`
+else
+    SPECFILES=""
+    for i in $SRCDIR/*.spec ; do
+        SPECFILES="$SPECFILES `basename $i`"
+    done
+    test -z "$SPECFILES" && {
+       for i in $SRCDIR/*.src.rpm ; do
+           SPECFILES="$SPECFILES `basename $i`"
+       done
+    }
+fi
+
+test -z "$SPECFILES" && {
+    echo no spec files and src rpms found in $SRCDIR. exit...
+    cleanup_and_exit 1
+}
+
+if test -z "$SRCDIR" -o ! -d "$SRCDIR" ; then
+    echo Usage: $0 \<src-dirctory\>
+    cleanup_and_exit 1
+fi
+
+if test -d "$BUILD_ROOT" ; then
+    # check if it is owned by root
+    test -O "$BUILD_ROOT" || {
+       echo "BUILD_ROOT=$BUILD_ROOT must be owned by root. Exit..."
+       cleanup_and_exit 1
+    }
+else
+    test "$BUILD_ROOT" != "${BUILD_ROOT%/*}" && mkdir -p "${BUILD_ROOT%/*}"
+    mkdir $BUILD_ROOT || {
+       echo "can not create BUILD_ROOT=$BUILD_ROOT. Exit..."
+       cleanup_and_exit 1
+    }
+fi
+
+if test -n "$XENIMAGE" ; then
+    umount -n $BUILD_ROOT/proc 2> /dev/null
+    umount -n $BUILD_ROOT/dev/pts 2> /dev/null
+    umount -t loop $BUILD_ROOT 2>/dev/null
+    if test "$CLEAN_BUILD" = true ; then
+       echo "Creating filesystem on $XENIMAGE"
+       if ! echo y | mkfs -t reiserfs -f $XENIMAGE >/dev/null 2>&1 ; then
+           if ! echo y | mkfs -t reiserfs -f $XENIMAGE ; then
+               cleanup_and_exit 1
+           fi
+       fi
+    fi
+    mount -oloop $XENIMAGE $BUILD_ROOT || cleanup_and_exit 1
+    if test -n "$XENSWAP" ; then
+       mkswap "$XENSWAP"
+    fi
+fi
+
+rm -f $BUILD_ROOT/exit
+
+if test -z "$XENIMAGE" ; then
+    echo  logging output to $BUILD_ROOT/.build.log...
+    rm -f $BUILD_ROOT/.build.log
+    touch $BUILD_ROOT/.build.log
+    exec 1> >(exec -a 'build logging tee' tee -a $BUILD_ROOT/.build.log) 2>&1
+fi
+
+#
+# say hello
+#
+echo $HOST started \"build $SPECFILES\" at `date`.
+echo
+test -n "$REASON" && echo "$REASON"
+echo Using BUILD_ROOT=$BUILD_ROOT
+test -n "$BUILD_RPMS" && echo Using BUILD_RPMS=$BUILD_RPMS
+echo Using BUILD_ARCH=$BUILD_ARCH
+test -n "$XENIMAGE" && echo "Doing XEN build in $XENIMAGE"
+echo
+
+test "$BUILD_ARCH" = all && BUILD_ARCH=
+
+cd $SRCDIR
+
+for SPECFILE in $SPECFILES ; do
+    #
+    # first setup building directory...
+    #
+    test -s $SPECFILE || {
+       echo $SPECFILE is empty.  This should not happen...
+       continue
+    }
+
+    if test "$SPECFILE" != "${SPECFILE%.src.rpm}" ; then
+       echo processing src rpm `pwd`/$SPECFILE...
+       TOPDIR=`chroot $BUILD_ROOT rpm --eval '%_topdir'`
+       rm -rf $BUILD_ROOT$TOPDIR
+       mkdir -p $BUILD_ROOT$TOPDIR/SOURCES $BUILD_ROOT$TOPDIR/SPECS
+       rpm -i --nodigest --nosignature --root $BUILD_ROOT $SPECFILE || {
+           echo "could not install $SPECFILE."
+           continue
+       }
+       rm -rf $BUILD_ROOT/.build-srcdir
+       mkdir -p $BUILD_ROOT/.build-srcdir
+       mv $BUILD_ROOT$TOPDIR/SOURCES/* $BUILD_ROOT/.build-srcdir
+       mv $BUILD_ROOT$TOPDIR/SPECS/* $BUILD_ROOT/.build-srcdir
+       MYSRCDIR=$BUILD_ROOT/.build-srcdir
+       cd $MYSRCDIR || cleanup_and_exit 1
+       for SPECFILE in *.spec ; do : ; done
+    else
+       echo processing specfile `pwd`/$SPECFILE...
+       MYSRCDIR=$SRCDIR
+    fi
+
+    ADDITIONAL_PACKS=""
+    test -n "$BUILD_EXTRA_PACKS" && ADDITIONAL_PACKS="$ADDITIONAL_PACKS $BUILD_EXTRA_PACKS"
+    test -n "$CREATE_BASELIBS" && ADDITIONAL_PACKS="$ADDITIONAL_PACKS build"
+
+    if test "$CLEAN_BUILD" = true ; then
+        clean_build_root
+        DO_INIT=true
+    fi
+
+    if test -n "$XENIMAGE" ; then
+       # do fist stage of init_buildsystem
+        echo init_buildsystem $USEUSEDFORBUILD $RPMLIST $SPECFILE $ADDITIONAL_PACKS ...
+        init_buildsystem --prepare $USEUSEDFORBUILD $RPMLIST "$MYSRCDIR/$SPECFILE" $ADDITIONAL_PACKS || cleanup_and_exit 1
+       # start up xen, rerun ourself
+       mkdir -p $BUILD_ROOT/.build
+       cp -a $BUILD_DIR/. $BUILD_ROOT/.build
+       if ! test $MYSRCDIR = $BUILD_ROOT/.build-srcdir ; then
+           mkdir $BUILD_ROOT/.build-srcdir
+           cp -p $MYSRCDIR/* $BUILD_ROOT/.build-srcdir
+           MYSRCDIR=$BUILD_ROOT/.build-srcdir
+       fi
+       echo "SPECFILE='${SPECFILE//\'/\'\\\'\'}'" > $BUILD_ROOT/.build/build.data
+       echo "BUILD_JOBS='${BUILD_JOBS//\'/\'\\\'\'}'" >> $BUILD_ROOT/.build/build.data
+       echo "BUILD_ARCH='${BUILD_ARCH//\'/\'\\\'\'}'" >> $BUILD_ROOT/.build/build.data
+       echo "BUILD_RPMS='${BUILD_RPMS//\'/\'\\\'\'}'" >> $BUILD_ROOT/.build/build.data
+       echo "CREATE_BASELIBS='$CREATE_BASELIBS'" >> $BUILD_ROOT/.build/build.data
+       echo "REASON='${REASON//\'/\'\\\'\'}'" >> $BUILD_ROOT/.build/build.data
+       test -n "$XENSWAP" && echo "XENSWAP='/dev/hda2'" >> $BUILD_ROOT/.build/build.data
+       umount $BUILD_ROOT
+       XMROOT=file:$XENIMAGE
+       XMROOT=${XMROOT/#file:\/dev/phy:}
+       XMROOT="disk=$XMROOT,hda1,w"
+       XMSWAP=
+       if test -n "$XENSWAP" ; then
+           XMSWAP=file:$XENSWAP
+           XMSWAP=${XMSWAP/#file:\/dev/phy:}
+           XMSWAP="disk=$XMSWAP,hda2,w"
+       fi
+       xm create -c $BUILD_DIR/xen.conf name="build:${XENIMAGE##*/}" $XENMEMORY $XMROOT $XMSWAP extra="init=/.build/build panic=1"
+       exit 0
+    fi
+
+    if test "$DO_INIT" = true ; then
+        echo init_buildsystem $USEUSEDFORBUILD $RPMLIST $SPECFILE $ADDITIONAL_PACKS ...
+        $BUILD_INIT_BUILDSYSTEM $USEUSEDFORBUILD $RPMLIST "$MYSRCDIR/$SPECFILE" $ADDITIONAL_PACKS || cleanup_and_exit 1
+    fi
+
+    if test -z "$BUILD_DIST" -a -e "$BUILD_ROOT/.guessed_dist" ; then
+       BUILD_DIST=`cat $BUILD_ROOT/.guessed_dist`
+    fi
+
+    if test "$SPECFILE" = "${SPECFILE%.dsc}" ; then
+       TOPDIR=`chroot $BUILD_ROOT rpm --eval '%_topdir'`
+    else
+       TOPDIR=/usr/src/packages
+       mkdir -p $BUILD_ROOT$TOPDIR
+    fi
+
+    ln -f -s ${TOPDIR#/} $BUILD_ROOT/.build.packages
+
+    #
+    # 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
+
+    #
+    # check if we want to build with the abuild user
+    #
+    BUILD_USER=root
+    test -n "$NOROOTFORBUILD" && BUILD_USER=abuild
+    if egrep '^#[       ]*norootforbuild[       ]*$' >/dev/null <$SPECFILE; then
+        BUILD_USER=abuild
+    fi
+    if test $BUILD_USER = abuild ; then
+        if ! egrep '^abuild:' >/dev/null <$BUILD_ROOT/etc/passwd ; then
+            echo 'abuild::99:99:Autobuild:/home/abuild:/bin/bash' >>$BUILD_ROOT/etc/passwd
+            echo 'abuild::99:' >>$BUILD_ROOT/etc/group
+            mkdir -p $BUILD_ROOT/home/abuild
+            chown 99:99 $BUILD_ROOT/home/abuild
+        fi
+    else
+        if egrep '^abuild:' >/dev/null <$BUILD_ROOT/etc/passwd ; then
+            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
+            rm -rf $BUILD_ROOT/home/abuild
+        fi
+    fi
+
+    #
+    # now clean up RPM building directories
+    #
+    rm -rf $BUILD_ROOT$TOPDIR
+    for i in BUILD RPMS/`arch` RPMS/i386 RPMS/noarch SOURCES SPECS SRPMS ; do
+        mkdir -p $BUILD_ROOT$TOPDIR/$i
+       test BUILD_USER = abuild && chown 99:99 $BUILD_ROOT$TOPDIR/$i
+    done
+    test -e $BUILD_ROOT/exit && cleanup_and_exit
+    mkdir -p $BUILD_ROOT$TOPDIR/SOURCES
+    cp -p $MYSRCDIR/* $BUILD_ROOT$TOPDIR/SOURCES/
+    test $MYSRCDIR = $BUILD_ROOT/.build-srcdir && rm -rf $MYSRCDIR
+
+    if test "$SPECFILE" = "${SPECFILE%.dsc}" ; then
+       # do buildrequires/release substitution
+       substitutedeps $RELEASE --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$BUILD_DIR/configs" "$BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE" "$BUILD_ROOT/.spec.new" || cleanup_and_exit 1
+       # extract macros from configuration
+       getmacros --dist "$BUILD_DIST" --configdir "$BUILD_DIR/configs" > $BUILD_ROOT/root/.rpmmacros
+       test $BUILD_USER = abuild && cp -p $BUILD_ROOT/root/.rpmmacros $BUILD_ROOT/home/abuild/.rpmmacros
+    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:
+           diff $BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE $BUILD_ROOT/.spec.new
+           mv $BUILD_ROOT/.spec.new $BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE
+       else
+           rm -f $BUILD_ROOT/.spec.new
+       fi
+    fi
+
+    if test "$SPECFILE" != "${SPECFILE%.dsc}" ; then
+       rm -rf $BUILD_ROOT$TOPDIR/BUILD
+       test $BUILD_USER = abuild && chown 99:99 $BUILD_ROOT$TOPDIR
+       chroot $BUILD_ROOT su -c "dpkg-source -x $TOPDIR/SOURCES/$SPECFILE $TOPDIR/BUILD" - $BUILD_USER
+    fi
+    if test $BUILD_USER = abuild ; then
+        chown -R 99:99 $BUILD_ROOT$TOPDIR/*
+    else
+        chown -R root:root $BUILD_ROOT$TOPDIR/*
+    fi
+    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 -----------------------------------------------------------------
+    sync
+    mount -oro -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+    mount -n -tdevpts none $BUILD_ROOT/dev/pts 2> /dev/null
+
+    BUILD_SUCCEDED=false
+
+    if test "$SPECFILE" = "${SPECFILE%.dsc}" ; then
+       test -z "$BUILD_RPM_BUILD_STAGE" && BUILD_RPM_BUILD_STAGE=-ba
+
+       BUILD_PARAMETERS="$BUILD_RPM_BUILD_STAGE"
+       test -n "$ABUILD_TARGET_ARCH" && BUILD_PARAMETERS="$BUILD_PARAMETERS --target=\"$ABUILD_TARGET_ARCH\""
+       test -n "$BUILD_JOBS" && BUILD_PARAMETERS="$BUILD_PARAMETERS --eval \"%define jobs \\\"$BUILD_JOBS\\\"\""
+       test root != "$BUILD_USER" && BUILD_PARAMETERS="$BUILD_PARAMETERS --eval \"%define _srcdefattr (-,root,root)\""
+       RPMBUILD=rpmbuild
+       test -x $BUILD_ROOT/usr/lib/rpm/rpmi || RPMBUILD=rpm
+       chroot $BUILD_ROOT su -c "$RPMBUILD $BUILD_PARAMETERS $TOPDIR/SOURCES/$SPECFILE" - $BUILD_USER < /dev/null && BUILD_SUCCEDED=true
+    else
+       chroot $BUILD_ROOT su -c "cd $TOPDIR/BUILD && dpkg-buildpackage -us -uc -rfakeroot" - $BUILD_USER < /dev/null && BUILD_SUCCEDED=true
+       mkdir -p $BUILD_ROOT/$TOPDIR/DEBS
+       for DEB in $BUILD_ROOT/$TOPDIR/*.deb ; do
+           test -e "$DEB" && mv "$DEB" "$BUILD_ROOT/$TOPDIR/DEBS"
+       done
+    fi
+
+    umount -n $BUILD_ROOT/proc 2> /dev/null
+    umount -n $BUILD_ROOT/mnt 2> /dev/null
+    umount -n $BUILD_ROOT/dev/pts 2> /dev/null
+    test "$BUILD_SUCCEDED" = true || cleanup_and_exit 1
+    test -d "$SRCDIR" && cd "$SRCDIR"
+done
+
+if test -n "$CREATE_BASELIBS" ; then
+    mount -oro -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+    create_baselibs
+    umount -n $BUILD_ROOT/proc 2> /dev/null
+fi
+
+if test -n "$RUNNING_IN_XEN" ; then
+    cd /
+    test -n "$XENSWAP" && swapoff "$XENSWAP"
+    exec >&0 2>&0      # so that the logging tee finishes
+    sleep 1            # wait till tee terminates
+    kill -9 -1         # goodbye cruel world
+    exec /bin/bash -c 'mount -n -o remount,ro / ; halt -f'
+    halt -f
+fi
+
+cleanup_and_exit 0
diff --git a/build.1 b/build.1
new file mode 100644 (file)
index 0000000..5c69f97
--- /dev/null
+++ b/build.1
@@ -0,0 +1,102 @@
+.TH build 1 "(c) 1997-2005 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.
+.SH OPTIONS
+.TP
+.B --clean
+remove the build system and reinitialize it from scratch.
+.TP
+.B --no-init
+skip the build system initialization and start with build immediately.
+.TP
+.BI "\-\-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 "\-\-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 --help
+Print a short help text.
+.TP
+.B --verify
+verify the files in an existing build system.
+.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.  "/media/dvd/suse" is the default value which will do
+the trick if you have the SuSE Linux DVD mounted.
+.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 (1),
+.TP
+.BR "Maximum RPM":
+.I http://www.rpm.org/max-rpm/
diff --git a/configs/debian.conf b/configs/debian.conf
new file mode 100644 (file)
index 0000000..988f9e6
--- /dev/null
@@ -0,0 +1,176 @@
+Preinstall: bash perl-base sed grep coreutils debianutils
+Preinstall: libc6 libncurses5 libacl1 libattr1
+Preinstall: libreadline4 tar gawk dpkg
+Preinstall: sysv-rc gzip base-files
+
+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/default.conf b/configs/default.conf
new file mode 120000 (symlink)
index 0000000..75836d9
--- /dev/null
@@ -0,0 +1 @@
+sl10.1.conf
\ No newline at end of file
diff --git a/configs/sl10.0.conf b/configs/sl10.0.conf
new file mode 100644 (file)
index 0000000..1c4835f
--- /dev/null
@@ -0,0 +1,191 @@
+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
+
+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
+%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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv sed
+%define fillup_prereq fillup coreutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 1000
+%define sles_version 0
+%define ul_version 0
+%define do_profiling 1
diff --git a/configs/sl10.1.conf b/configs/sl10.1.conf
new file mode 100644 (file)
index 0000000..cf9f375
--- /dev/null
@@ -0,0 +1,191 @@
+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
+
+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
+%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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv sed devs
+%define fillup_prereq fillup coreutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 1001
+%define sles_version 0
+%define ul_version 0
+%define do_profiling 1
diff --git a/configs/sl8.1.conf b/configs/sl8.1.conf
new file mode 100644 (file)
index 0000000..0a48f3f
--- /dev/null
@@ -0,0 +1,188 @@
+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
+
+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 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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq aaa_base
+%define fillup_prereq fillup fileutils
+%define install_info_prereq texinfo
+%define suse_version 810
+%define sles_version 0
+%define ul_version 0
diff --git a/configs/sl8.2.conf b/configs/sl8.2.conf
new file mode 100644 (file)
index 0000000..1e170bb
--- /dev/null
@@ -0,0 +1,191 @@
+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
+
+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 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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv
+%define fillup_prereq fillup fileutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 820
+%define sles_version 0
+%define ul_version 0
+%define jds_version 0
+%define do_profiling 1
diff --git a/configs/sl9.0.conf b/configs/sl9.0.conf
new file mode 100644 (file)
index 0000000..01739ec
--- /dev/null
@@ -0,0 +1,192 @@
+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
+
+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 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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv
+%define fillup_prereq fillup fileutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 900
+%define sles_version 0
+%define ul_version 0
+%define jds_version 0
+%define do_profiling 1
diff --git a/configs/sl9.1.conf b/configs/sl9.1.conf
new file mode 100644 (file)
index 0000000..721df0b
--- /dev/null
@@ -0,0 +1,192 @@
+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
+
+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 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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv
+%define fillup_prereq fillup fileutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 910
+%define sles_version 0
+%define ul_version 0
+%define jds_version 0
+%define do_profiling 1
diff --git a/configs/sl9.2.conf b/configs/sl9.2.conf
new file mode 100644 (file)
index 0000000..ca1390e
--- /dev/null
@@ -0,0 +1,191 @@
+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
+
+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
+%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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv sed devs
+%define fillup_prereq fillup coreutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 920
+%define sles_version 0
+%define ul_version 0
+%define do_profiling 1
diff --git a/configs/sl9.3.conf b/configs/sl9.3.conf
new file mode 100644 (file)
index 0000000..1aad683
--- /dev/null
@@ -0,0 +1,191 @@
+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
+
+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
+%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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv sed devs
+%define fillup_prereq fillup coreutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 930
+%define sles_version 0
+%define ul_version 0
+%define do_profiling 1
diff --git a/configs/sles10.conf b/configs/sles10.conf
new file mode 100644 (file)
index 0000000..8731f5d
--- /dev/null
@@ -0,0 +1,191 @@
+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
+
+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
+%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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv sed
+%define fillup_prereq fillup coreutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 1001
+%define sles_version 10
+%define ul_version 0
+%define do_profiling 1
diff --git a/configs/sles8.conf b/configs/sles8.conf
new file mode 100644 (file)
index 0000000..1ccfcb7
--- /dev/null
@@ -0,0 +1,188 @@
+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
+
+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 unitedlinux-release 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 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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq aaa_base
+%define fillup_prereq fillup fileutils
+%define install_info_prereq texinfo
+%define suse_version 810
+%define sles_version 8
+%define ul_version 0
diff --git a/configs/sles9.conf b/configs/sles9.conf
new file mode 100644 (file)
index 0000000..0680195
--- /dev/null
@@ -0,0 +1,192 @@
+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
+
+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 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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq insserv
+%define fillup_prereq fillup fileutils
+%define suseconfig_fonts_prereq perl aaa_base
+%define install_info_prereq info
+%define suse_version 910
+%define sles_version 9
+%define ul_version 0
+%define jds_version 0
+%define do_profiling 1
diff --git a/configs/ul1.conf b/configs/ul1.conf
new file mode 100644 (file)
index 0000000..4ede7f0
--- /dev/null
@@ -0,0 +1,188 @@
+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
+
+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 unitedlinux-release 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 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
+
+%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
+%enidf
+%ifarch s390x
+Substitute: kernel-binary-packages kernel-default
+%enidf
+
+Macros:
+%define insserv_prereq aaa_base
+%define fillup_prereq fillup fileutils
+%define install_info_prereq texinfo
+%define suse_version 810
+%define sles_version 0
+%define ul_version 1
diff --git a/createrpmdeps b/createrpmdeps
new file mode 100755 (executable)
index 0000000..84348d5
--- /dev/null
@@ -0,0 +1,204 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use Build;
+use strict;
+
+######################################################################
+
+my $rpmdepfile = $ARGV[0];
+
+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;
+while ($redo) {
+  $redo = 0;
+  my $packages;
+  my @known;
+  my %known2fn;
+  my %known2path;
+  my %fnsize2id;
+  while (<STDIN>) {
+    chomp;
+    if ($_ eq '') {
+      # next block;
+      $redo = 1;
+      last;
+    }
+    if (/\/packages$/) {
+      $packages = $_;
+      next;
+    }
+    next unless /^(\d+\/\d+\/\d+) (.*)$/;
+    my $id = $1;
+    my $path = $2;
+    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;
+  }
+
+  my %newp;
+  my %newr;
+  for (@known) {
+    $newp{$_} = $oldp{$_} if $oldp{$_};
+    $newr{$_} = $oldr{$_} if $oldr{$_};
+  }
+
+  my @todo = grep {!($newp{$_} && $newr{$_})} @known;
+  if (@todo && $packages && open(F, '<', $packages)) {
+    my ($pack, $vers, $rel, $btime, $arch, $loc, $id, $size);
+    my ($req, $prv);
+    while (<F>) {
+      chomp;
+      next unless /^[=+]/;
+      my ($tag, $data);
+      if (/^\+(.*)$/) {
+       $tag = $1;
+       $data = '';
+       while (<F>) {
+         chomp;
+         last if $_ eq "-$tag";
+         $data .= "$_\n";
+       }
+       chop $data;
+      } else {
+       ($tag, $data) = split(' ', $_, 2);
+       $tag = substr($tag, 1);
+      }
+      if ($tag eq 'Pkg:') {
+       if ($pack && $loc && $size) {
+         my $id = $fnsize2id{"$loc-$size"};
+         if ($id && $known2path{"$pack.$arch-$id"}) {
+           $prv = "$pack = $vers-$rel" unless defined $prv;
+           $req = '' unless defined $req;
+           $newp{"$pack.$arch-$id"} = "P:$pack.$arch-$id: $prv";
+           $newr{"$pack.$arch-$id"} = "R:$pack.$arch-$id: $req";
+         }
+       }
+       ($pack, $vers, $rel, $arch) = split(' ', $data);
+       undef $req;
+       undef $prv;
+       undef $btime;
+       undef $size;
+       undef $loc;
+       undef $pack if $arch && ($arch eq 'src' || $arch eq 'nosrc');
+      } elsif ($tag eq 'Req:') {
+       next unless $pack;
+       $data =~ s/\n/ /gs;
+       $req = $data;
+      } elsif ($tag eq 'Prv:') {
+       next unless $pack;
+       # add self provides for old rpm versions
+       $data = "$pack = $vers-$rel\n$data" unless "\n$data" =~ /\n\Q$pack\E =/s;
+       $data =~ s/\n/ /gs;
+       $prv = $data;
+      } elsif ($tag eq 'Tim:') {
+       $btime = $data;
+      } elsif ($tag eq 'Loc:') {
+       my @data = split(' ', $data);
+       $loc = $data[1];
+      } elsif ($tag eq 'Siz:') {
+       my @data = split(' ', $data);
+       $size = $data[0];
+      }
+    }
+    close F;
+    if ($pack && $loc && $size) {
+      my $id = $fnsize2id{"$loc-$size"};
+      if ($id && $known2path{"$pack.$arch-$id"}) {
+       $newp{"$pack.$arch-$id"} = "P:$pack.$arch-$id: $prv";
+       $newr{"$pack.$arch-$id"} = "R:$pack.$arch-$id: $req";
+      }
+    }
+    @todo = grep {!($newp{$_} && $newr{$_})} @known;
+  }
+  if (@todo) {
+    for my $known (@todo) {
+      my $path = $known2path{$known};
+      if ($path =~ /\.rpm$/) {
+        my %res = Build::rpmq($path, 1000, 1022, 1047, 1049, 1048, 1050, 1112, 1113);
+        next unless %res;
+        Build::rpmq_add_flagsvers(\%res, 1047, 1112, 1113);
+        Build::rpmq_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;
+         }
+        }
+        $newp{$known} = "P:$known: ".join(' ', @{$res{1047} || []});
+        $newr{$known} = "R:$known: ".join(' ', @{$res{1049} || []});
+      } else {
+        my %res = Build::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";
+  }
+}
diff --git a/debsort b/debsort
new file mode 100755 (executable)
index 0000000..26cfe33
--- /dev/null
+++ b/debsort
@@ -0,0 +1,137 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use Build;
+
+sub sortpacks {
+  my ($depsp, @packs) = @_;
+
+  my %deps;
+  my %rdeps;
+  my %needed;
+
+  # map and unify dependencies, create rdeps and needed
+  my %known = map {$_ => 1} @packs;
+  for my $p (@packs) {
+    if ($basep && $basep->{$p}) {
+      $deps{$p} = [];
+      $needed{$p} = 0;
+      next;
+    }
+    my @fdeps = grep {$known{$_}} @{$depsp->{$p} || []};
+    my %fdeps = ($p => 1);      # no self reference
+    @fdeps = grep {!$fdeps{$_}++} @fdeps;
+    $deps{$p} = \@fdeps;
+    $needed{$p} = @fdeps;
+    push @{$rdeps{$_}}, $p for @fdeps;
+  }
+  undef %known;         # free memory
+
+  @packs= sort {$needed{$a} <=> $needed{$b} || $a cmp $b} @packs;
+  my @good;
+  my @res;
+  # the big sort loop
+  while (@packs) {
+    @good = grep {$needed{$_} == 0} @packs;
+    if (@good) {
+      @packs = grep {$needed{$_}} @packs;
+      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} @packs;
+    $notdone{$_} = 0 for @res;  # already did those
+    my @todo = @packs;
+    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, 
+      print STDERR "cycle: ".join(' -> ', @cyc)."\n";
+      my $breakv;
+      if ($buildp) {
+        my @b = grep {$buildp->{$_}} @cyc;
+        $breakv = $b[0] if @b;
+      }
+      if (!defined($breakv)) {
+        my @b = @cyc;
+        @b = sort {$needed{$a} <=> $needed{$b} || $a cmp $b} @b;
+        $breakv = $b[0];
+      }
+      push @cyc, $cyc[0];
+      shift @cyc while $cyc[0] ne $breakv;
+      print STDERR "  breaking with $breakv -> $cyc[1]\n";
+      $deps{$breakv} = [ grep {$_ ne $cyc[1]} @{$deps{$breakv}} ];
+      $needed{$breakv}--;
+    }
+  }
+  return @res;
+}
+
+sub orderdeb {
+  my ($cachedir, @debs) = @_;
+  my %prov;
+  my %req;
+  for my $deb (@debs) {
+    my %q = Build::debq("$cachedir/$deb.deb");
+    if (!%q) {
+      $req{$deb} = [];
+      push @{$prov{$deb}}, $deb;
+      next;
+    }
+    my @provides = split(',\s*', $q{'PROVIDES'} || '');
+    s/\s.*// for @provides;   #for now
+    my @depends = split(',\s*', $q{'DEPENDS'} || '');
+    my @predepends = split(',\s*', $q{'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, $q{'PACKAGE'};
+    $req{$deb} = \@depends;
+    push @{$prov{$_}}, $deb for @provides;
+  }
+  for my $deb (@debs) {
+    $req{$deb} = [ map {$prov{$_} ? $prov{$_}->[0] : $_} @{$req{$deb}} ];
+  }
+  return sortpacks(\%req, @debs);
+}
+
+my $cachedir = shift @ARGV;
+my @debs = @ARGV;
+@debs = orderdeb($cachedir, @debs);
+print "@debs\n";
+exit(0);
diff --git a/expanddeps b/expanddeps
new file mode 100755 (executable)
index 0000000..b75712f
--- /dev/null
@@ -0,0 +1,215 @@
+#!/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;
+  }
+  last;
+}
+$configdir = '.' unless defined $configdir;
+$archs = '' unless defined $archs;
+die("you must specfiy a depfile!\n") unless defined $rpmdeps;
+
+my @extradeps = grep {!/\.(?:spec|dsc)$/} @ARGV;
+my @specs = grep {/\.(?:spec|dsc)$/} @ARGV;
+die("can only work with at most one spec\n") if @specs > 1;
+my $spec = $specs[0];
+
+my @archs = split(':', $archs);
+push @archs, 'noarch' unless grep {$_ eq 'noarch'} @archs;
+
+my (%fn, %prov, %req);
+
+open(F, '<', $rpmdeps) || die("$rpmdeps: $!\n");
+my %packs_arch;
+while(<F>) {
+  chomp;
+  if (/^F:(.*?)-\d+\/\d+\/\d+: (.*)$/) {
+    next if $fn{$1};
+    $fn{$1} = $2;
+    my $pack = $1;
+    $pack =~ /^(.*)\.([^\.]+)$/ or die;
+    push @{$packs_arch{$2}}, $1;
+  } elsif (/^P:(.*?)-\d+\/\d+\/\d+: (.*)$/) {
+    next if $prov{$1};
+    $prov{$1} = $2;
+  } elsif (/^R:(.*?)-\d+\/\d+\/\d+: (.*)$/) {
+    next if $req{$1};
+    $req{$1} = $2;
+  }
+}
+close F;
+
+my %packs;
+for my $arch (@archs) {
+  $packs{$_} ||= "$_.$arch" for @{$packs_arch{$arch} || []};
+}
+
+if (!defined($dist) || $dist eq '') {
+  my $rpmarch = (grep {$fn{"rpm.$_"}} @archs)[0];
+  if (!$rpmarch) {
+    $dist = 'default';
+  } else {
+    my $rpmfn = $fn{"rpm.$rpmarch"};
+    my $rpmdist = `rpm -qp --nodigest --nosignature --qf '%{DISTRIBUTION}' $rpmfn`;
+    chomp $rpmdist;
+    $rpmdist = lc($rpmdist);
+    $rpmdist =~ s/-/_/g;
+    my $rpmdista = $rpmdist;
+    $rpmdista =~ s/.*\(//;
+    $rpmdista =~ s/\).*//;
+    $rpmdista =~ s/i[456]86/i386/;
+    $rpmdist = '' unless $rpmdista =~ /^(i386|x86_64|ia64|ppc|ppc64|s390|s390x)$/;
+    if ($rpmdist =~ /unitedlinux 1\.0.*/) {
+      $dist = "ul1-$rpmdista";
+    } elsif ($rpmdist =~ /suse sles_(\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";
+    } else {
+      $dist = 'default';
+    }
+  }
+}
+
+my $cdist = $dist;
+$cdist =~ s/-.*//;
+$cdist = "sl$cdist" if $cdist =~ /^\d/;
+my $cf = Build::read_config($archs[0], "$configdir/$cdist.conf");
+if (!$cf) {
+  $cf = Build::read_config($archs[0], "$configdir/default.conf");
+  die("default config not found\n") unless $cf;
+}
+
+#######################################################################
+
+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);
+  }
+  for (@usedforbuild) {
+    print "$_ $fn{$packs{$_}}\n";
+  }
+  print "preinstall: @{$cf->{'preinstall'} || []}\n";
+  print "dist: $dist\n" if defined $dist;
+  exit(0);
+}
+
+#######################################################################
+
+my ($packname, $packvers, $subpacks, @packdeps);
+$subpacks = [];
+
+if ($spec) {
+  if ($spec =~ /\.dsc$/) {
+    ($packname, $packvers, $subpacks, @packdeps) = Build::read_dsc($cf, $spec);
+  } else {
+    ($packname, $packvers, $subpacks, @packdeps) = Build::read_spec($cf, $spec);
+  }
+}
+
+my %repo;
+for my $pack (keys %packs) {
+  my $r = {};
+  my (@s, $s, @pr, @re);
+  @s = split(' ', $prov{$packs{$pack}});
+  while (@s) {
+    $s = shift @s;
+    next if $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 $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;
+}
+Build::readrpmdeps($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);
+}
+
+for (@bdeps) {
+  print "$_ $fn{$packs{$_}}\n";
+}
+print "preinstall: @{$cf->{'preinstall'} || []}\n";
+print "dist: $dist\n" if defined $dist;
diff --git a/extractbuild b/extractbuild
new file mode 100755 (executable)
index 0000000..115e423
--- /dev/null
@@ -0,0 +1,99 @@
+#!/usr/bin/perl
+
+use strict;
+
+$ENV{'PATH'} = "/bin:/usr/bin:/sbin:/usr/sbin";
+
+$| = 1;
+
+sub ls {
+  local *D;
+  opendir(D, $_[0]) || return ();
+  my @r = grep {$_ ne '.' && $_ ne '..'} readdir(D);
+  closedir D;
+  return @r;
+}
+
+open(F, '</.build/build.data') || die("/.build/build.data: $!\n");
+my (%vars, $var, $val);
+my $l = '';
+while (<F>) {
+  chomp;
+  $l .= $_;
+  my $q = $l =~ tr/\'/\'/;
+  if ($q < 2 || ($q - 2) % 3 != 0) {
+    $l .= "\n";
+    next;
+  }
+  if ($l =~ /^([a-zA-Z0-9]*)=\'(.*)\'$/s) {
+    $var = $1;
+    $val = $2;
+    $val =~ s/\'\\\'\'/\'/gs;
+    $vars{$var} = $val;
+  }
+  $l = '';
+}
+close F;
+
+my $xenswap = $vars{'XENSWAP'};
+die("need XENSWAP for swapout operation\n") unless $xenswap;
+system("umount -l /dev 2>/dev/null");
+die("$xenswap: $!\n") unless -e $xenswap;
+open(S, '>', $xenswap) || die("$xenswap: $!\n");
+
+my $specfile = $vars{'SPECFILE'};
+die("no specfile/dscfile\n") unless $specfile;
+my $topdir = '/usr/src/packages';
+my $psuf = 'deb';
+my @dirs = ($topdir);
+if ($specfile =~ /\.spec$/) {
+  $topdir = `rpm --eval '%_topdir'`;
+  chomp $topdir;
+  die("rpm returned no topdir\n") unless $topdir;
+  die("rpm returned bad topdir\n") unless -d $topdir;
+  @dirs = map {"$topdir/RPMS/$_"} ls("$topdir/RPMS");
+  unshift @dirs, "$topdir/SRPMS";
+  $psuf = 'rpm';
+}
+my @packs;
+for my $dir (@dirs) {
+  push @packs, map {"$dir/$_"} grep {/$psuf$/} ls($dir);
+}
+unshift @packs, '/.build.log';
+
+my $cpio = '';
+for my $pack (@packs) {
+  print "$pack\n";
+  my @s = stat($pack);
+  my $n = $pack;
+  $n =~ s/.*\///;
+  $n = 'logfile' if $n eq '.build.log';
+  die("$pack: $!\n") unless @s;
+  $cpio .= "07070100000000000081a4000000000000000000000001";
+  $cpio .= sprintf("%08x%08x", $s[9], $s[7]);
+  $cpio .= "00000000000000000000000000000000";
+  $cpio .= sprintf("%08x", length($n) + 1);
+  $cpio .= "00000000";
+  $cpio .= "$n\0";
+  $cpio .= substr("\0\0\0\0", (length($cpio) & 3)) if length($cpio) & 3;
+  open(F, '<', $pack) || die("$pack: $!\n");
+  my $l = $s[7];
+  while ($l) {
+    my $ll = sysread(F, $cpio, $l > 8192 ? 8192 : $l, length($cpio));
+    die("$pack: $!\n") unless $ll;
+    die if $ll > $l;
+    $l -= $ll;
+    if (length($cpio) > 4096) {
+      (syswrite(S, $cpio, 4096) || 0) == 4096 || die("swap write: $!\n");
+      $cpio = substr($cpio, 4096);
+    }
+  }
+  $cpio .= substr("\0\0\0\0", (length($cpio) & 3)) if length($cpio) & 3;
+}
+$cpio .= "07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!\0\0\0\0";
+$cpio .= "\0" x (4096 - length($cpio) % 4096) if length($cpio) % 4096;
+while (length($cpio)) {
+  (syswrite(S, $cpio, 4096) || 0) == 4096 || die("swap write: $!\n");
+  $cpio = substr($cpio, 4096);
+}
+exec('halt -f');
diff --git a/getmacros b/getmacros
new file mode 100755 (executable)
index 0000000..76429b9
--- /dev/null
+++ b/getmacros
@@ -0,0 +1,39 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+my ($dist, $configdir);
+
+while (@ARGV)  {
+  if ($ARGV[0] eq '--dist') {
+    shift @ARGV;
+    $dist = shift @ARGV;
+    next;
+  }
+  if ($ARGV[0] eq '--configdir') {
+    shift @ARGV;
+    $configdir = shift @ARGV;
+    next;
+  }
+  last;
+}
+$configdir = '.' unless defined $configdir;
+$dist = '' unless defined $dist;
+
+die("Usage: getmacros --dist <dist> [--configdir <configdir>]\n") if !defined($dist) || @ARGV;
+local *F;
+if ($dist =~ /\//) {
+  open(F, '<', $dist) || die("$dist: $!\n");
+} else {
+  $dist =~ s/-.*//;
+  $dist = "sl$dist" if $dist =~ /^\d/;
+  open(F, '<', "$configdir/$dist.conf") || open(F, '<', "$configdir/default.conf") || die("config not found\n");
+}
+my $inmacro = 0;
+while(<F>) {
+  if (!$inmacro) {
+    $inmacro = 1 if /^\s*macros:/i;
+    next;
+  }
+  print;
+}
diff --git a/init_buildsystem b/init_buildsystem
new file mode 100755 (executable)
index 0000000..fe53f06
--- /dev/null
@@ -0,0 +1,604 @@
+#!/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}
+PROC_IS_MOUNTED=
+
+# should RPMs be installed with --force ?
+USE_FORCE=false
+
+BUILD_IS_RUNNING=$BUILD_ROOT/not-ready
+TMPFILE=$BUILD_ROOT/tmpfile
+RPMIDFMT="%{NAME}-%{VERSION}-%{RELEASE} %{BUILDHOST}-%{BUILDTIME}\n"
+
+PREPARE_XEN=
+USEUSEDFORBUILD=
+RPMLIST=
+
+while test -n "$1" ; do
+    case $1 in
+       --prepare)
+           shift
+           PREPARE_XEN=true
+           ;;
+       --useusedforbuild)
+           shift
+           USEUSEDFORBUILD=--useusedforbuild
+           ;;
+       --rpmlist)
+           shift
+           RPMLIST=$1
+           shift
+           ;;
+       *)
+           break
+           ;;
+    esac
+done
+PKGS="$*"
+
+#
+# needed functions
+#
+
+function cleanup_and_exit {
+    test -n "$PROC_IS_MOUNTED" && umount -n $BUILD_ROOT/proc 2>/dev/null
+    exit ${1:-0}
+}
+
+function clean_build_root () {
+        test -n "$BUILD_ROOT" && {
+            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
+            rm -rf $BUILD_ROOT/*
+        }
+}
+
+function preinstall {
+    if test -n "$1" ; then
+        echo "preinstalling $1..."
+        cd $BUILD_ROOT || cleanup_and_exit 1
+       if test -e "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" ; then
+           rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" | cpio --extract --unconditional --preserve-modification-time --make-directories --no-absolute-filenames --quiet
+           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
+       else
+           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 -xzf control.tar.gz
+           tar xzf data.tar.gz
+           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
+           rm -rf .init_b_cache/scripts/control control.tar.gz data.tar.gz
+       fi
+    fi
+    if test -n "$2" ; then
+        for PKG in $PACKAGES_TO_PREINSTALL ; 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
+        done
+    fi
+}
+
+function init_db {
+    if test $PSUF = rpm ; then
+       echo initializing rpm db...
+       chroot $BUILD_ROOT rpm --initdb || cleanup_and_exit 1
+    else
+       # 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
+    fi
+}
+
+function reorder {
+    REORDER_HAVE=
+    if test $PSUF = deb ; then
+       $BUILD_DIR/debsort $BUILD_ROOT/.init_b_cache/rpms "$@"
+       return
+    fi
+    rm -rf $BUILD_ROOT/.reorder
+    mkdir -p $BUILD_ROOT/.reorder/.db
+    rpm --initdb --dbpath $BUILD_ROOT/.reorder/.db
+    for PKG in "$@" ; do
+        touch $BUILD_ROOT/.reorder/$PKG
+        test -e $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG && continue
+        test -f $BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm && REORDER_HAVE="$REORDER_HAVE
+$PKG.rpm"
+    done
+    if test -z "$REORDER_HAVE"; then
+        rm -rf $BUILD_ROOT/.reorder
+        echo "$@"
+        return
+    fi
+    # manifest must be at least 96 bytes...
+    echo "################################################################################################" "$REORDER_HAVE" > $BUILD_ROOT/.reorder/MANIFEST.rpm
+    bash -c "cd $BUILD_ROOT/.init_b_cache/rpms && rpm -Uvv --dbpath $BUILD_ROOT/.reorder/.db --nosuggest --nodigest --nosignature --ignoresize --force --nodeps --test $BUILD_ROOT/.reorder/MANIFEST.rpm" 2>&1 | sed -n -e 's/-[^- ]*-[^- ]* / /' -e 's/^D:   install: \([^ ]*\) .*/\1/p' > $BUILD_ROOT/.reorder/.list
+    rm -f $BUILD_ROOT/.reorder/MANIFEST.rpm
+    REORDER_HAVE=
+    for PKG in `cat $BUILD_ROOT/.reorder/.list`; do
+        test -e $BUILD_ROOT/.reorder/$PKG || continue
+        REORDER_HAVE="$REORDER_HAVE $PKG"
+        rm $BUILD_ROOT/.reorder/$PKG
+    done
+    for PKG in "$@" ; do
+        test -e $BUILD_ROOT/.reorder/$PKG || continue
+        REORDER_HAVE="$REORDER_HAVE $PKG"
+       REORDER_MISSED="$REORDER_MISSED $PKG"
+        rm $BUILD_ROOT/.reorder/$PKG
+    done
+    echo $REORDER_HAVE
+}
+
+function create_devs {
+    local com file mode arg
+
+    mkdir -m 755 -p $BUILD_ROOT/dev/pts
+    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
+}
+
+function validate_cache_file {
+    test "$BUILD_RPMS" != "$(cat $CACHE_FILE.id 2>/dev/null)" && rm -f $CACHE_FILE.id
+    test -f $CACHE_FILE || rm -f $CACHE_FILE.id
+    for SRC in ${BUILD_RPMS//:/ } ; do
+       test -z "$SRC" && SRC=.
+       test $SRC -nt $CACHE_FILE && rm -f $CACHE_FILE.id
+    done
+    if ! test -f $CACHE_FILE.id ; then
+       echo initializing $CACHE_FILE with find command...
+       for SRC in ${BUILD_RPMS//:/ } ; do
+           test -z "$SRC" && SRC=.
+           find $SRC -type f -name packages -print -o -follow -type f \( -name "*.rpm" -o -name "*.deb" \) -a ! -name "*src.rpm" -printf '%T@/%s/%i %p\n'
+           echo
+       done | createrpmdeps $CACHE_FILE > $CACHE_FILE.new
+       mv $CACHE_FILE.new $CACHE_FILE
+       echo "$BUILD_RPMS" > $CACHE_FILE.id
+    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 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 -n "[y/N] "
+    read ANSWER
+    test "$ANSWER" != y && {
+      exit
+    }
+    clean_build_root
+fi
+
+#
+# store that we start to build system
+#
+mkdir -p $BUILD_ROOT
+touch $BUILD_IS_RUNNING
+
+if test -e $BUILD_ROOT/.build/init_buildsystem.data ; then
+    # xen continuation
+    . $BUILD_ROOT/.build/init_buildsystem.data
+    if ! test -e $BUILD_ROOT/.init_b_cache/preinstall_finished ; then
+       # finish preinstall
+       preinstall '' true
+       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
+       echo "expanding package dependencies..."
+       if ! expanddeps $USEUSEDFORBUILD --dist "$BUILD_DIST" --depfile "$CACHE_FILE" --archpath "$BUILD_ARCH" --configdir $BUILD_DIR/configs $PKGS > $RPMLIST ; then
+           cleanup_and_exit 1
+       fi
+    fi
+    PACKAGES_TO_INSTALL=
+    GUESSED_DIST=unknown
+    mkdir -p $BUILD_ROOT/.init_b_cache/rpms
+    while read PKG SRC ; do
+       if test "$PKG" = "preinstall:" ; then
+           PACKAGES_TO_PREINSTALL=$SRC
+           continue
+       fi
+       if test "$PKG" = "dist:" ; then
+           GUESSED_DIST=$SRC
+           continue
+       fi
+       ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/$PKG.${SRC##*.}"
+       PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL $PKG"
+    done < $RPMLIST
+    echo "$GUESSED_DIST" > $BUILD_ROOT/.guessed_dist
+    PSUF=rpm
+    test -L $BUILD_ROOT/.init_b_cache/rpms/rpm.rpm || PSUF=deb
+    if test -n "$PREPARE_XEN" ; then
+       # add util-linux/binutils/mount to preinstall list
+       test "$PACKAGES_TO_PREINSTALL" = "${PACKAGES_TO_PREINSTALL/util-linux}" && PACKAGES_TO_PREINSTALL="$PACKAGES_TO_PREINSTALL util-linux"
+       test $PSUF = deb -a "$PACKAGES_TO_PREINSTALL" = "${PACKAGES_TO_PREINSTALL/binutils}" && PACKAGES_TO_PREINSTALL="$PACKAGES_TO_PREINSTALL binutils"
+       test $PSUF = deb -a "$PACKAGES_TO_PREINSTALL" = "${PACKAGES_TO_PREINSTALL/mount}" && PACKAGES_TO_PREINSTALL="$PACKAGES_TO_PREINSTALL mount"
+    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 ; 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
+    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
+       :> $BUILD_ROOT/var/lib/dpkg/status
+       :> $BUILD_ROOT/var/lib/dpkg/available
+       :> $BUILD_ROOT/var/log/dpkg.log
+       :> $BUILD_ROOT/etc/ld.so.conf
+    fi
+    for PKG in $PACKAGES_TO_PREINSTALL ; do
+       preinstall ${PKG##*/}
+    done
+    test -c $BUILD_ROOT/dev/null || create_devs
+    if test -z "$PREPARE_XEN" ; then
+       preinstall '' true
+       init_db
+       touch $BUILD_ROOT/.init_b_cache/preinstall_finished
+    fi
+fi
+
+if test -n "$PREPARE_XEN" ; then
+    mkdir -p $BUILD_ROOT/.build
+    echo "PACKAGES_TO_INSTALL='${PACKAGES_TO_INSTALL//\'/\'\\\'\'}'" > $BUILD_ROOT/.build/init_buildsystem.data
+    echo "PACKAGES_TO_PREINSTALL='${PACKAGES_TO_PREINSTALL//\'/\'\\\'\'}'" >> $BUILD_ROOT/.build/init_buildsystem.data
+    echo "PSUF='$PSUF'" >> $BUILD_ROOT/.build/init_buildsystem.data
+    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
+    done
+    rm -f $BUILD_IS_RUNNING
+    exit 0
+fi
+
+mkdir -p $BUILD_ROOT/proc
+mount -n -tproc none $BUILD_ROOT/proc 2> /dev/null
+PROC_IS_MOUNTED=true
+
+test -e $BUILD_ROOT/etc/ld.so.conf || \
+    cp $BUILD_ROOT/etc/ld.so.conf.in $BUILD_ROOT/etc/ld.so.conf
+chroot $BUILD_ROOT /sbin/ldconfig 2> /dev/null
+
+#
+# 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
+#
+echo -n 'reordering...'
+REORDER_MISSED=
+PACKAGES_TO_INSTALL_FIRST=`reorder $PACKAGES_TO_INSTALL_FIRST`
+PACKAGES_TO_INSTALL=`reorder $PACKAGES_TO_INSTALL`
+echo 'done'
+test -n "$REORDER_MISSED" && echo "WARNING: reorder missed$REORDER_MISSED"
+
+#
+# delete all packages we don't want
+#
+cp -a $BUILD_ROOT/.init_b_cache/alreadyinstalled $BUILD_ROOT/.init_b_cache/todelete
+for PKG in $PACKAGES_TO_INSTALL_FIRST $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 `sed -e 's/ .*//' < $BUILD_ROOT/.init_b_cache/todelete/$PKG`
+    chroot $BUILD_ROOT rpm --nodeps -e $PKG 2>&1 | \
+       grep -v "^r.*failed: No such file or directory"
+done
+rm -rf $BUILD_ROOT/.init_b_cache/todelete
+
+rm -rf $BUILD_ROOT/installed-pkg
+mkdir -p $BUILD_ROOT/installed-pkg
+
+RPMCHECKOPTS=
+RPMCHECKOPTS_HOST=
+test -x $BUILD_ROOT/usr/lib/rpm/rpmi && RPMCHECKOPTS="--nodigest --nosignature"
+test -x /usr/lib/rpm/rpmi && RPMCHECKOPTS_HOST="--nodigest --nosignature"
+
+for PKG in $PACKAGES_TO_INSTALL_FIRST RUN_LDCONFIG $PACKAGES_TO_INSTALL ; do
+    case $PKG in
+      RUN_LDCONFIG)
+        test -x $BUILD_ROOT/sbin/ldconfig && chroot $BUILD_ROOT /sbin/ldconfig 2>&1
+        continue
+      ;;
+    esac
+    test -f $BUILD_ROOT/installed-pkg/$PKG && continue
+
+    if test $PSUF = deb ; then
+       # debian world, install deb files
+       test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.deb || continue
+       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}"
+       echo "installing ${PKGID%_*}"
+       ( chroot $BUILD_ROOT dpkg -i --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'
+       test -e $BUILD_ROOT/exit && cleanup_and_exit 1
+       echo "$PKGID debian" > $BUILD_ROOT/installed-pkg/$PKG
+       continue
+    fi
+
+    test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm || continue
+
+    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
+       if test "$PKGID" != "`cat $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG`" ; then
+           echo deleting unwanted `sed -e 's/ .*//' < $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG`
+           chroot $BUILD_ROOT rpm --nodeps -e $PKG 2>&1 | \
+               grep -v "^r.*failed: No such file or directory"
+       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%% *}
+               chroot $BUILD_ROOT rpm --nodeps -e $PKG 2>&1 | \
+                   grep -v "^r.*failed: No such file or directory"
+           else
+               echo "keeping ${PKGID%% *}"
+               echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+               continue
+           fi
+       else
+           echo "keeping ${PKGID%% *}"
+           echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+           continue
+       fi
+    fi
+    export ADDITIONAL_PARAMS=
+    if test "$USE_FORCE" = true ; then
+        export ADDITIONAL_PARAMS="$ADDITIONAL_PARAMS --force"
+    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 --nodeps -U --oldpackage --ignoresize $RPMCHECKOPTS \
+               $ADDITIONAL_PARAMS .init_b_cache/$PKG.rpm 2>&1 || \
+         touch $BUILD_ROOT/exit ) | \
+             grep -v "^warning:.*saved as.*rpmorig$"
+    rm -f $BUILD_ROOT/.init_b_cache/$PKG.rpm
+    test -e $BUILD_ROOT/exit && cleanup_and_exit 1
+    echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+done
+
+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
+    touch $BUILD_ROOT/$FILE
+done
+
+echo now finalizing build dir...
+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
+test -x $BUILD_ROOT/usr/sbin/Check && chroot $BUILD_ROOT /usr/sbin/Check
+
+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 -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..."
+    chroot $BUILD_ROOT rpm --initdb || cleanup_and_exit 1
+    # create provides index
+    chroot $BUILD_ROOT rpm -q --whatprovides rpm >/dev/null 2>&1
+fi
+
+rm -rf $BUILD_ROOT/.init_b_cache
+
+rm -f $BUILD_IS_RUNNING
+
+rm -f $TMPFILE
+
+cleanup_and_exit 0
diff --git a/mkbaselibs b/mkbaselibs
new file mode 100755 (executable)
index 0000000..7690321
--- /dev/null
@@ -0,0 +1,874 @@
+#!/usr/bin/perl -w
+
+use POSIX;
+use strict;
+
+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,
+);
+
+# do not mix numeric tags with symbolic tags.
+# special symbolic tag 'FILENAME' exists.
+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 @baselib;
+my @config;
+
+my @provides;
+my @obsoletes;
+my @requires;
+my @prerequires;
+my @conflicts;
+
+my @prein;
+my @postin;
+my @preun;
+my @postun;
+
+sub parse_config {
+  my $target = shift;
+  my $pkgname = shift;
+  my $pkgver = shift;
+
+  my $pkghasmatched;
+
+  my $pkgmatches = 1;
+  $prefix = '';
+  $extension = '';
+  $configdir = '';
+  $targetname = '';
+  ($targetarch, $targettype) = split(':', $target, 2);
+  @baselib = ();
+  @config = ();
+  @provides = ();
+  @obsoletes = ();
+  @requires = ();
+  @prerequires = ();
+  @conflicts = ();
+  @prein = ();
+  @postin = ();
+  @preun = ();
+  @postun = ();
+  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 (/^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;
+      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 (/^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; }
+    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 %targets;
+  for (split("\n", $config)) {
+    if (/^arch\s+/) {
+      next unless s/^arch\s+\Q$arch\E\s+//;
+    }
+    if (/^targets\s+(.*?)$/) {
+      $targets{$_} = 1 for split(' ', $1);
+    }
+  }
+  my @targets = sort keys %targets;
+  return @targets;
+}
+
+sub get_pkgnames {
+  my %rpms;
+  for (split("\n", $config)) {
+    if (/^(.*\s+)?package\s+([-+_a-zA-Z0-9]+)\s*$/) {
+      $rpms{$2} = 1;
+    } elsif (/^\s*([-+_a-zA-Z0-9]+)\s*$/) {
+      $rpms{$1} = 1;
+    }
+  }
+  return sort keys %rpms;
+}
+
+my $verbose;
+
+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();
+my @rpms = @ARGV;
+for my $rpm (splice @rpms) {
+  my $rpmn = $rpm;
+  next if $rpm =~ /\.(no)?src\.rpm$/;
+  next if $rpm =~ /\.spm$/;
+  $rpmn =~ s/.*\///;
+  $rpmn =~ s/-[^-]+-[^-]+\.[^\.]+\.rpm$/\.rpm/;
+  $rpmn =~ s/\.rpm$//;
+  push @rpms, $rpm if $goodpkgs{$rpmn};
+}
+for (@rpms) {
+  die("$_: need absolute path to rpm\n") unless /^\//;
+}
+
+exit 0 unless @rpms;
+
+my @filesystem = split("\n", `rpm -ql filesystem 2>/dev/null`);
+die("filesystem rpm is not installed\n") unless @filesystem;
+
+for $rpm (@rpms) {
+
+  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';
+  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 =~ /^(.*)-([^-]+)-([^-]+)$/;
+  $sname = $1;
+  my $sversion = $2;
+  my $srelease = $3;
+
+  $arch = $res{'ARCH'}->[0];
+  my @targets = get_targets();
+  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;
+
+    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;
+
+    my $specfile = "/usr/src/packages/SPECS/mkbaselibs$$.spec";
+    unlink($specfile);
+    print "$rname($target): writing specfile...\n";
+    open(SPEC, ">$specfile") || die("$specfile: $!\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 "Autoreqprov: on\n";
+    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;
+      print SPEC "$p: $d\n";
+    }
+
+    for my $ar ([\@provides, 'provides'],
+                [\@prerequires, 'prereq'],
+                [\@requires, 'requires'],
+                [\@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;
+    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);
+  }
+}
diff --git a/substitutedeps b/substitutedeps
new file mode 100755 (executable)
index 0000000..a95aef2
--- /dev/null
@@ -0,0 +1,129 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
+}
+
+use strict;
+
+use Build;
+
+my ($dist, $rpmdeps, $archs, $configdir, $release);
+
+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 '--release') {
+    shift @ARGV;
+    $release = shift @ARGV;
+    next;
+  }
+  if ($ARGV[0] eq '--configdir') {
+    shift @ARGV;
+    $configdir = shift @ARGV;
+    next;
+  }
+  last;
+}
+$configdir = '.' unless defined $configdir;
+$archs = '' unless defined $archs;
+$dist = '' unless defined $dist;
+
+die("Usage: substitutedeps --dist <dist> --archpath <archpath> [--configdir <configdir>] <specin> <specout>\n") unless @ARGV == 2;
+my $spec = $ARGV[0];
+my $newspec = $ARGV[1];
+
+my @archs = split(':', $archs);
+push @archs, 'noarch' unless grep {$_ eq 'noarch'} @archs;
+
+my $cf;
+if ($dist =~ /\//) {
+  die("$dist: $!\n") unless -e $dist;
+  $cf = Build::read_config($archs[0], $dist);
+} else {
+  $dist =~ s/-.*//;
+  $dist = "sl$dist" if $dist =~ /^\d/;
+  $cf = Build::read_config($archs[0], "$configdir/$dist.conf");
+  if (!$cf) {
+    $cf = Build::read_config($archs[0], "$configdir/default.conf");
+  }
+}
+die("config not found\n") unless $cf;
+
+#######################################################################
+
+my ($packname, $packvers, $subpacks, @packdeps);
+$subpacks = [];
+
+my $xspec = [];
+($packname, $packvers, $subpacks, @packdeps) = Build::read_spec($cf, $spec, $xspec);
+my @sdeps = @packdeps;
+my @neg = map {substr($_, 1)} grep {/^-/} @packdeps;
+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");
+
+for my $l (@$xspec) {
+  if (!ref($l)) {
+    $l =~ s/^(Release:\s*).*/$1$release/i if $release;
+    if ($l !~ /^BuildRequires:/i) {
+      print F "$l\n";
+      next;
+    }
+    $l = [$l, $l];
+  } else {
+    if (!defined($l->[1])) {
+      $l->[0] =~ s/^(Release:\s*).*/$1$release/i if $release;
+      print F "$l->[0]\n";
+      next;
+    }
+    $l->[1] =~ s/^(Release:\s*).*/$1$release/i if $release;
+    if ($l->[1] !~ /^BuildRequires:/i) {
+      print F "$l->[1]\n";
+      next;
+    }
+  }
+  my $r = $l->[1];
+  $r =~ s/^[^:]*:\s*//;
+  my @deps = $r =~ /([^\s\[\(,]+)(\s+[<=>]+\s+[^\s\[,]+)?[\s,]*/g;
+  my @ndeps = ();
+  my $replace = 0;
+  my %f2 = @deps;
+  my @f2 = Build::do_subst($cf, grep {!/^-/} keys %f2);
+  %f2 = map {$_ => 1} @f2;
+  delete $f2{$_} for @neg;
+  while (@deps) {
+    my ($pack, $vers) = splice(@deps, 0, 2);
+    $vers = '' unless defined $vers;
+    if ($sdeps{$pack}) {
+      push @ndeps, "$pack$vers";
+      delete $f2{$pack};
+    } else {
+      $replace = 1;
+    }
+  }
+  if (%f2) {
+    push @ndeps, sort keys %f2;
+    $replace = 1
+  }
+  if ($replace) {
+    print F "BuildRequires:  ".join(' ', @ndeps)."\n" if @ndeps;
+  } else {
+    print F "$l->[1]\n";
+  }
+}
+close(F) || die("close: $!\n");
+
+exit(0);
diff --git a/xen.conf b/xen.conf
new file mode 100644 (file)
index 0000000..0d8afdb
--- /dev/null
+++ b/xen.conf
@@ -0,0 +1,35 @@
+#  -*- mode: python; -*-
+#============================================================================
+# Python configuration setup for 'xm create'.
+# This script sets the parameters used when a domain is created using 'xm create'.
+# You use a separate script for each domain you want to create, or 
+# you can set the parameters for the domain on the xm command line.
+#============================================================================
+
+kernel = "/boot/vmlinuz-xen"
+ramdisk = "/boot/initrd-xen"
+memory = 64
+# name = "bsbuild01"
+# List of which CPUS this domain is allowed to use, default Xen picks
+#cpus = ""         # leave to Xen to pick
+#cpus = "0"        # all vcpus run on CPU0
+#cpus = "0-3,5,^1" # run on cpus 0,2,3,5
+#----------------------------------------------------------------------------
+# Define the disk devices you want the domain to have access to, and
+# what you want them accessible as.
+# Each disk entry is of the form phy:UNAME,DEV,MODE
+# where UNAME is the device, DEV is the device name the domain will see,
+# and MODE is r for read-only, w for read-write.
+
+# disk = [ 'file:/tmp/xentest.img,hda1,w' ]
+
+# Set root device.
+root = "/dev/hda1 ro"
+
+# Sets init=build, reboot on panic
+extra = "init=/bin/bash panic=1"
+
+on_poweroff = 'destroy'
+on_reboot = 'destroy'
+on_crash = 'destroy'
+