* houghi <[EMAIL PROTECTED]> [Aug 09. 2006 04:53]:
> On Tue, Jul 11, 2006 at 10:39:33AM +0200, Klaus Kaempf wrote:
> > 
> > Thats black autobuild magic ;-)
> > Our chief autobuild vodoo priest is on vacation currently, just be patient.
> 
> Is he still on vacation?

No, he's not. Find 'mk_listings' attached

> 
> Also I see references to the CVS (e.g. create_package_descr) but I don't
> seem to be able to find those. Could anybody give info on this?

create_package_descr is part of the autoyast2-utils package.

(I already asked to package mk_listings too.)

Klaus
#!/usr/bin/perl

sub cp {
  my $from = shift;
  my $to = shift;
  $to =~ s/\/+$//;
  if (-d $to) {
    return undef unless $from =~ /([^\/]+)$/;
    $to = $to ne '' ? "$to/$1" : $1;
  }
  return 1 if $to eq $from;
  if (!open(FROM, "<$from")) {
    error("cp: $from: $!\n");
    return undef;
  }
  if (!open(TO, ">$to")) {
    my $errno = $!;
    close FROM;
    $! = $errno;
    error("cp: $to: $!\n");
    return undef;
  }
  my $l;
  while ($l = <FROM>) {
    print TO $l;
  }
  close FROM;
  if (!close(TO)) {
    error("cp: $to: $!\n");
    return undef;
  }
  return 1;
}

my $rsyncable = "";

my $arg = shift @ARGV;
my $tmpdir = `mktemp -d /tmp/mk_listings.XXXXXX`;
chomp ($tmpdir);
if ( $arg ) {
    die unless ( -d $arg );
}

if ( $arg !~ /^\// ) {
    $pwd = `pwd`;
    chomp ($pwd);
    $arg = "$pwd/$arg";
}

my $cd_replace = "/CD";
my $arg_base = $arg;
$arg_base =~ s/^.*\/([^\/]*)$/$1/;
$cd_replace = "/DVD" if ( $arg_base =~ /-dvd-/ );
$cd_replace = "/inst-source" if ( $arg_base =~ /^stable-oss/ );

system (`touch "$tmpdir/fff"`);
system (`gzip --rsyncable "$tmpdir/fff" >/dev/null 2>/dev/null`);
if ( -f "$tmpdir/fff.gz" ) {
    $rsyncable = "--rsyncable";
}
system (`rm -f "$tmpdir/fff" "$tmpdir/fff.gz"`);

print "creating ls-lR.gz, INDEX.gz and ARCHIVES.gz\n";

open ( FINDALL , "cd $arg ; find . -type f |" );
my @FINDALL = <FINDALL>;
close ( FINDALL );
my @FINDALL2 = @FINDALL;

my @FIND_RPMS = ();
my @FIND_TARZ = ();
my @FIND_TARBZ = ();
my @FIND_TAR = ();
my @FIND_DEB = ();
for (@FINDALL) {
    push @FIND_RPMS, $_ if ( /\.rpm$/ || /\.spm$/ );
    push @FIND_TARZ, $_ if ( /\.tar.gz$/ || /\.tar.Z$/ || /\.tgz$/ || 
/\.tar.z$/ || /\.taz$/ );
    push @FIND_TARBZ, $_ if ( /\.tar.bz2$/ || /\.tbz$/ );
    push @FIND_TAR, $_ if ( /\.tar$/ );
    push @FIND_DEB, $_ if ( /\.deb$/ );
}

open ( ARCHIVES, "| gzip $rsyncable > $tmpdir/ARCHIVES.gz");

print ARCHIVES <<EOF;
---------------------------------------------------------------------
---------------------------------------------------------------------
--------------- Here comes contents of all files: -------------------
------ *.rpm *.tar.gz *.tar.Z *.tgz *.taz *.tar.z *.tar *.deb -------
------------------ found in any subdirectory ------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
EOF

my $curnum = 0;
my $all_num = $#FIND_RPMS + $#FIND_TARZ + $#FIND_TARBZ + $#FIND_TAR + 
$#FIND_DEB + 5;

for (@FIND_RPMS) {
   $curnum++;
   print "$curnum/$all_num\r" if ( -t STDOUT );
   my $filename = $_;
   chomp($filename);
   my $print_name = $filename;
   $print_name =~ s/\/CD/$cd_replace/;
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES "---> $print_name\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   my $nodigest = "";
   if ( !system("rpm --nodigest 2>/dev/null") ) {
        $nodigest = "--nodigest --nosignature";
   }
   open (RPML,"rpm $nodigest -qpilv $arg/$filename|");
   while (<RPML>) {
      print ARCHIVES "$print_name:    $_";
   }
   close (RPML);
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
}

for (@FIND_TARZ) {
   $curnum++;
   print "$curnum/$all_num\r" if ( -t STDOUT );
   my $filename = $_;
   chomp($filename);
   my $print_name = $filename;
   $print_name =~ s/\/CD/$cd_replace/;
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES "---> $print_name\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   open (TARL,"tar ztvf $arg/$filename|");
   while (<TARL>) {
      print ARCHIVES "$print_name:    $_";
   }
   close (TARL);
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
}

for (@FIND_TARBZ) {
   $curnum++;
   print "$curnum/$all_num\r" if ( -t STDOUT );
   my $filename = $_;
   chomp($filename);
   my $print_name = $filename;
   $print_name =~ s/\/CD/$cd_replace/;
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES "---> $print_name\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   open (TARL,"tar jtvf $arg/$filename|");
   while (<TARL>) {
      print ARCHIVES "$print_name:    $_";
   }
   close (TARL);
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
}

for (@FIND_TAR) {
   $curnum++;
   print "$curnum/$all_num\r" if ( -t STDOUT );
   my $filename = $_;
   chomp($filename);
   my $print_name = $filename;
   $print_name =~ s/\/CD/$cd_replace/;
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES "---> $print_name\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   open (TARL,"tar tvf $arg/$filename|");
   while (<TARL>) {
      print ARCHIVES "$print_name:    $_";
   }
   close (TARL);
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
}

for (@FIND_DEB) {
   $curnum++;
   print "$curnum/$all_num\r" if ( -t STDOUT );
   my $filename = $_;
   chomp($filename);
   my $print_name = $filename;
   $print_name =~ s/\/CD/$cd_replace/;
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES "---> $print_name\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   open (DEBL,"ar pf $arg/$filename data.tar.gz | tar tzvf -|");
   while (<DEBL>) {
      print ARCHIVES "$print_name:    $_";
   }
   close (DEBL);
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
   print ARCHIVES 
"-----------------------------------------------------------------\n";
}

close (ARCHIVES);
cp ("$tmpdir/ARCHIVES.gz","$arg/ARCHIVES.gz");

open ( LSLR , "cd $arg ; ls -lR |" );
open ( LSLRZ, "| gzip $rsyncable > $tmpdir/ls-lR.gz");
while (<LSLR>) {
   next if ( /\.listing$/ );
   $_ =~ s/\/CD/$cd_replace/;
   print LSLRZ $_;
}
close (LSLR);
close (LSLRZ);
cp ("$tmpdir/ls-lR.gz","$arg/ls-lR.gz");

open ( INDEX, "| gzip $rsyncable > $tmpdir/INDEX.gz");
for (@FINDALL2) {
   next if ( /\.listing$/ );
   $_ =~ s/\/CD/$cd_replace/;
   print INDEX $_;
}
close (INDEX);
cp ("$tmpdir/INDEX.gz","$arg/INDEX.gz");

system("rm -rf $tmpdir");

if ( -d "$arg/CD1" ) {
    unlink "$arg/CD1/ARCHIVES.gz" if ( -f "$arg/CD1/ARCHIVES.gz" );
    link "$arg/ARCHIVES.gz","$arg/CD1/ARCHIVES.gz";
}

for (1...9) {
    next unless ( -d "$arg/CD$_" );
    unlink "$arg/CD$_/INDEX.gz" if ( -f "$arg/CD$_/INDEX.gz" );
    link "$arg/INDEX.gz", "$arg/CD$_/INDEX.gz";
    unlink "$arg/CD$_/ls-lR.gz" if ( -f "$arg/CD$_/ls-lR.gz" );
    link "$arg/ls-lR.gz","$arg/CD$_/ls-lR.gz";
}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to