source: soft/build_system/build_system/upload/robot/trunk/sync-official @ 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: 3.8 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use File::NCopy qw(copy);
5
6my $genhdlist;
7if ($ARGV[0] eq "--genhdlist") { $genhdlist = 1; shift @ARGV }
8my $version = @ARGV[0];
9my $cooker_dir = "/mnt/BIG/dis/cooker";
10
11$version =~ /\d\d\.\d/ or usage($version);
12my @ARCH = ('i586', 'x86_64');
13
14my $version_dir = "/mnt/BIG/dis/$version";
15-d $version_dir or usage($version);
16
17for my $arch (@ARCH) {
18        system("rsync -avlHPr --delete --exclude media $cooker_dir/$arch /mnt/BIG/dis/$version/");
19        system("rsync -avlHPr --delete $cooker_dir/$arch/media/jpackage /mnt/BIG/dis/$version/$arch/media/") if $arch eq 'i586';
20        system("rsync -avlHPr --delete $cooker_dir/SRPMS/jpackage /mnt/BIG/dis/$version/SRPMS/") if $arch eq 'i586';
21        system("rsync -avlHPr --delete --exclude media.cfg --exclude '*hdlist*' --exclude 'pubkey*' $cooker_dir/$arch/media/media_info/ /mnt/BIG/dis/$version/$arch/media/media_info/");
22}
23my $done;
24foreach my $rpms_dir ("SRPMS/main", "SRPMS/contrib", map { my $path = $_; map { "$_/$path" } @ARCH } ('media/contrib', 'media/main')) {
25        print "Looking at $cooker_dir/$rpms_dir\n";
26        opendir my $VERSION_DIR, "$version_dir/$rpms_dir"; 
27        my %version_rpm;
28        foreach my $rpm (readdir $VERSION_DIR) { $rpm =~ /\.rpm$/ and $version_rpm{$rpm} = 1 }
29        closedir $VERSION_DIR;
30        opendir my $COOKER_DIR, "$cooker_dir/$rpms_dir"; 
31        my %done_rpm;
32        foreach my $rpm (readdir $COOKER_DIR) {
33                $rpm =~ /\.rpm$/ or next;
34                $rpm =~ /mandriva-release/ and next;
35                if (!$version_rpm{$rpm}) {
36                        print "Copying $rpm to $version_dir/$rpms_dir\n";
37                        my $ok = copy "$cooker_dir/$rpms_dir/$rpm", "$version_dir/$rpms_dir/$rpm";
38                        if ($ok) {
39                                print "Resigning $rpm\n";
40                                $done = 1;
41                                my $contrib;
42                                $rpms_dir =~ /contrib/ and $contrib = "_contrib";
43                                system("sudo -H /root/bin/resign$contrib -v $version_dir/$rpms_dir/$rpm");
44                        } else {
45                                print "ERROR: copying $cooker_dir/$rpms_dir/$rpm to $version_dir/$rpms_dir/$rpm failed ($!)\n";
46                        }
47                }
48                $done_rpm{$rpm} = 1
49        }
50        foreach my $rpm (keys %version_rpm) {
51                $rpm =~ /\.rpm$/ or next;
52                $rpm =~ /mandriva-release/ and next;
53                if (!$done_rpm{$rpm}) {
54                        print "Deleting $rpm from $version_dir/$rpms_dir\n";
55                        my $ok = unlink "$version_dir/$rpms_dir/$rpm";
56                        $done = 1;
57                        $ok or print "ERROR: deleting failed ($!)\n"
58                }
59        }
60        closedir $COOKER_DIR
61}
62
63if ($genhdlist) {
64        foreach my $arch (@ARCH) {
65                system(qq(echo "Mandriva Linux $version Official-Download-$arch `date +"%Y%m%d %k:%M"`" > $version_dir/$arch/VERSION));
66                system(qq(TMPDIR=/home/mandrake/tmp/Official/2006.0/$arch/ gendistrib --nochkdep --nobadrpm --noclean --distrib $version_dir/$arch/));
67                # gendistrib should take care of that
68                if (0) {
69                        system(qq(chmod 644 $version_dir/$arch/media/media_info/*hdlist*));
70                        my $media = "$version_dir/$arch/media/";
71                        foreach ('main', 'contrib','jpackage') {
72                                unlink "$media/$_/synthesis.hdlist.cz";
73                                unlink "$media/$_/media_info/synthesis.hdlist.cz";
74                                my $synthesis = "$media/media_info/synthesis.hdlist_$_.cz";
75                                link $synthesis, "$media/$_/synthesis.hdlist.cz" or print "ERROR linking $synthesis to $media/$_/synthesis.hdlist.cz: $!\n";
76                                link $synthesis, "$media/$_/media_info/synthesis.hdlist.cz" or print "ERROR linking $synthesis to $media/$_/media_info/synthesis.hdlist.cz: $!\n";
77                                unlink "$media/$_/hdlist.cz";
78                                unlink "$media/$_/media_info/hdlist.cz";
79                                my $hdlist = "$media/media_info/hdlist_$_.cz";
80                                link $hdlist, "$media/$_/hdlist.cz" or print "ERROR linking $hdlist to $media/$_/hdlist.cz: $!\n";
81                                link $hdlist, "$media/$_/media_info/hdlist.cz" or print "ERROR linking $hdlist to $media/$_/media_info/hdlist.cz: $!\n";
82                        }
83                }
84        }
85} elsif ($done) {
86        foreach my $arch (@ARCH) {
87                system("rsync -avlHPr --delete  $cooker_dir/$arch/media/media_info/*hdlist*.cz /mnt/BIG/dis/$version/$arch/media/media_info/");
88        }
89}
90
91sub usage {
92        $_[0] and print "ERROR: \"$version\" does not appear to be a version\n\n";
93        print "usage:\n\n\t$0 <version>\n\n";
94        exit
95}
Note: See TracBrowser for help on using the repository browser.