source: soft/build_system/build_system/upload/robot/trunk/build-hdlist @ 1

Last change on this file since 1 was 1, checked in by fasma, 13 years ago

Initial Import from Mandriva's soft revision 224062 and package revision 45733

File size: 2.0 KB
Line 
1#!/usr/bin/perl -I /home/warly/files/cvs/mdk/soft/mkcd/pm
2#
3#
4
5use strict;
6use URPM;
7use URPM::Build;
8use File::Find qw(find);
9
10$ARGV[0] or print "\nUsage:
11        build-hdlist <rpms dir 1> <rpms dir 2> ... <rpms dir n>
12
13\n\n" and exit;
14my $topdir = `pwd`;
15chop $topdir;
16my $tmp = $ENV{TMPDIR} || "$topdir/tmp";
17
18my @ARCH = qw(i586 ia64 noarch ppc alpha sparc);
19
20my ($path);
21
22mkcd_build_hdlist(int @ARGV, 
23        [ 0, 
24                map { 
25                        $path = $_;
26                        my @rpm;
27                        find({ wanted => sub{ push @rpm, $_ if -f && /(?!src).rpm$/ }, no_chdir => 1 },$path);
28                        #open my $LIST, "find $path -name '*.rpm' -not -name '*.src.rpm' |";
29                        #while (<$LIST>) { chomp; push @rpm, $_ }
30                        open my $A, ">$path/list";
31                        { rpms => [ 
32                                map { 
33                                        my $a = $_; 
34                                        $a =~ s/$path//; 
35                                        #print "$a\n";
36                                        print $A "./$a\n";
37                                        "$path/$a"
38                                } @rpm ], 
39                        hdlist => "$path/hdlist.cz", 
40                        synthesis => "$path/synthesis.hdlist.cz" 
41                        } 
42                } @ARGV ], "$tmp/.bh-build_hdlist");
43
44exit;
45
46sub mkcd_build_hdlist{
47    my ($num,$hdlist,$headers_dir,$depslist,$provides,$compss) = @_;
48    my $urpm = new URPM;
49    for (1 .. $num){
50        $hdlist->[$_]{headers} = 
51           [ $urpm->parse_rpms_build_headers(
52                dir => $headers_dir, 
53                rpms => $hdlist->[$_]{rpms}) ];
54    }
55
56    $urpm->unresolved_provides_clean;
57    for (1 .. $num){
58        my $e = $hdlist->[$_];
59        my ($start, $end) = $urpm->parse_headers(dir => $headers_dir, headers => $e->{headers}, callback => $hdlist->[$_]{callback});
60        $urpm->compute_deps;
61        if ($start >= $end){
62            print "WARNING mkcd_build_hdlist: $e->{hdlist} and $e->{synthesis} are empty\n";
63            next
64        }
65        if (length $e->{hdlist}){
66            print "mkcd_build_hdlist: write $e->{hdlist}\n";
67            $urpm->build_hdlist(start => $start, end => $end, dir => $headers_dir, hdlist => $e->{hdlist}, ratio => 9);
68        }
69        if (length $e->{synthesis}){
70            print "mkcd_build_hdlist: write $e->{synthesis}\n";
71            $urpm->build_synthesis(start => $start, end => $end, synthesis => $e->{synthesis})
72        }
73    }
74    $urpm->build_base_files(depslist => $depslist, provides => $provides, compss => $compss);
75
76    return $urpm;
77}
Note: See TracBrowser for help on using the repository browser.