diff options
author | Olivier Thauvin <nanardon@mandriva.org> | 2004-01-05 21:51:31 +0000 |
---|---|---|
committer | Olivier Thauvin <nanardon@mandriva.org> | 2004-01-05 21:51:31 +0000 |
commit | 7574e2a44235fa15099a636797c93fb11fb1620d (patch) | |
tree | 6011325ba1769816f50eeac44d456f737a4ac98e /genhdlist | |
parent | 4ab4b17a8db598b301d84113dba7ba5ac15a39fe (diff) | |
download | rpmtools-7574e2a44235fa15099a636797c93fb11fb1620d.tar rpmtools-7574e2a44235fa15099a636797c93fb11fb1620d.tar.gz rpmtools-7574e2a44235fa15099a636797c93fb11fb1620d.tar.bz2 rpmtools-7574e2a44235fa15099a636797c93fb11fb1620d.tar.xz rpmtools-7574e2a44235fa15099a636797c93fb11fb1620d.zip |
add somes feature
Diffstat (limited to 'genhdlist')
-rw-r--r-- | genhdlist | 94 |
1 files changed, 72 insertions, 22 deletions
@@ -1,51 +1,101 @@ #!/usr/bin/perl +# +# $Id$ +# + +#- Copyright (C) 1999 MandrakeSoft +#- +#- This program is free software; you can redistribute it and/or modify +#- it under the terms of the GNU General Public License as published by +#- the Free Software Foundation; either version 2, or (at your option) +#- any later version. +#- +#- This program is distributed in the hope that it will be useful, +#- but WITHOUT ANY WARRANTY; without even the implied warranty of +#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#- GNU General Public License for more details. +#- +#- You should have received a copy of the GNU General Public License +#- along with this program; if not, write to the Free Software +#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + use strict; use URPM; use URPM::Build; use File::Find; use File::Path; +use Getopt::Long; + +my ($noclean, $nooutput, $dontdie, $suffix) = (0, 0, 0, "", "."); +my $tmpdir = (-d "$ENV{HOME}/tmp" ? "$ENV{HOME}/tmp" : $ENV{TMPDIR} || "/tmp") . "/.build_hdlist"; + +sub usage { + print <<EOF; +Usage: $0 [options] [dir...] +Options: + --help print this message and exit + --headersdir dir put temporary files in dir + -s silent mode + --nobadrpm do not stop on bad rpm + --noclean keep cache files + --suffix SUFFIX put a suffix on hdlist names + +EOF +} + +GetOptions( + 'help|h' => sub { usage(); exit }, + 'noclean' => \$noclean, + 'headersdir=s' => \$tmpdir, + 'fermetagueule|s' => \$nooutput, + 'nobadrpm' => \$dontdie, + 'suffix=s' => \$suffix, +); my $urpm = new URPM; -my $tmpdir = "/tmp/genhdlist"; -my $index="hdlist.cz"; -my $synthesis="synthesis.$index"; -my $dir = @ARGV[0] or die "usage: genhdlist <dir>"; +my $index = "hdlist$suffix.cz"; +my $synthesis = "synthesis.$index"; +my @dir = @ARGV || ("."); -chdir $dir or die "can't chdir in directory $dir"; +#chdir $rootdistrib or die "can't chdir in directory $rootdistrib"; +rmtree($tmpdir) unless $noclean; +mkpath($tmpdir); -# get rpm list my @rpms; -File::Find::find({wanted => \&wanted}, "."); sub wanted { - if (-f $_ && $_ =~ /^.*\.rpm$/ ) { - print "$File::Find::name\n"; - push(@rpms, $File::Find::name); - } + if (-f $_ && $_ =~ /^.*\.rpm$/ ) { + #print "$File::Find::name\n" unless $nooutput; + push(@rpms, $File::Find::name); + } } -if (!@rpms) { - print "no rpms found, aborting\n"; - exit(0); + +# get rpm list +open(LIST, "> list$suffix") or die "can't create list file: $!"; +foreach my $dir (@dir) { + @rpms=(); + File::Find::find({wanted => \&wanted}, $dir); + $urpm->parse_rpms_build_headers(dir => $tmpdir, + rpms => \@rpms, + dontdie => $dontdie, + silent => $nooutput); + foreach my $rpm (@rpms) { print LIST "$rpm\n" }; } +close(LIST); # create index file -mkpath($tmpdir); -$urpm->parse_rpms_build_headers(dir => $tmpdir, - rpms => \@rpms); +# No rpms, exit ! @{$urpm->{depslist}} > 0 or die "nothing read"; + $urpm->build_hdlist(start => 0, end => $#{$urpm->{depslist}}, dir => $tmpdir, hdlist => $index, ratio => 9); -rmtree($tmpdir); +rmtree($tmpdir) unless $noclean; # create synthesis file $urpm->build_synthesis(start => 0, end => $#{$urpm->{depslist}}, synthesis => $synthesis); -# create list file -open(LIST, "> list") or die "can't create list file list: $!"; -foreach my $rpm (@rpms) { print LIST "$rpm\n" }; -close(LIST); |