build-gnome2
author dermotm
Wed, 01 Sep 2004 13:42:01 +0000
changeset 3811 722e9d4e61c0
parent 3628 cf6118e136d2
child 4027 91a01db89bb9
permissions -rwxr-xr-x
new apoc tarballs for 17b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     1
#!/usr/bin/perl
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     2
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     3
use strict;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     4
use warnings;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     5
use Getopt::Long qw(:config gnu_getopt no_auto_abbrev);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     6
use rpm_spec;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     7
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
     8
# --------- defaults -------------------------------------------------------
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
     9
my $default_spec_dir = `dirname $0`;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    10
$default_spec_dir =~ s/\s//g;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    11
3811
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
    12
# use "rpmbuild" (RPM v4) if present or "rpm -ba" (RPM v3) if not
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
    13
my $RPM_BUILD = 'rpmbuild';
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
    14
my $cmd_found = `which rpmbuild | wc -l`;
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
    15
if ($cmd_found == 0) {
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
    16
	$RPM_BUILD = 'rpm';
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
    17
}
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
    18
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    19
my $default_log_dir = '/tmp';
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    20
my $default_tarball_dir = "/sgnome/pkgs/gnome-2.2/misc/tarballs";
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
    21
my $default_source_dirs = $default_spec_dir . "/ext-sources" .
1255
62113bcc823d add all man dirs
laca
parents: 1241
diff changeset
    22
			":" . $default_spec_dir . "/manpages/man1" .
62113bcc823d add all man dirs
laca
parents: 1241
diff changeset
    23
			":" . $default_spec_dir . "/manpages/man3" .
62113bcc823d add all man dirs
laca
parents: 1241
diff changeset
    24
			":" . $default_spec_dir . "/manpages/man4" .
2798
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
    25
			":" . $default_spec_dir . "/manpages/man5" .
2801
40dd48aa8dcf add missing "
laca
parents: 2798
diff changeset
    26
                        ":" . "/sgnome/tarballs/moz-evo";
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    27
my $default_patch_dir = $default_spec_dir . "/patches";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    28
my $default_sys_rpm_dir = "/usr/src/packages";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    29
my $default_nightly_date_format = '%y%m%d';
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    30
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    31
# --------- global vars ----------------------------------------------------
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    32
# config settings
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    33
my $the_spec_dir = $default_spec_dir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    34
my $the_log_dir = $default_log_dir;
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    35
my $the_summary_log;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    36
my $the_summary_title;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    37
my $the_logdir_url;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    38
my $the_rpm_url;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    39
my $the_srpm_url;
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
    40
my $the_source_dirs = $default_source_dirs;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
    41
my @the_source_dirlist;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    42
my $the_tarball_dir = $default_tarball_dir;
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
    43
my $the_good_build_dir;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
    44
my $the_good_rpms_copy_dir;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    45
my $the_patch_dir = $default_patch_dir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    46
my $the_sys_rpm_dir = $default_sys_rpm_dir;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    47
my $rpm_target;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    48
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    49
my $check_deps = 1;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    50
my $live_summary = 0;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    51
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    52
my $build_command;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    53
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    54
my $exit_val = 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    55
my $verbose = 1;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    56
my $debug_level = 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    57
my $full_path = 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    58
my $halt_on_errors = 0;
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
    59
my $mail_errors_file;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
    60
my $mail_errors_to;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
    61
my $mail_errors_cc;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
    62
my $prodname = "unnamed";
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    63
my $is_nightly = 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    64
my $the_nightly_date_format = $default_nightly_date_format;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    65
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    66
# counter used as an id for the spec files
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    67
my $spec_id = 0;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    68
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    69
# array of spec objects
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    70
my @specs_to_build = ();
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    71
my @build_status;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    72
my @status_details;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    73
my @remove_list = ();
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    74
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    75
my %provider;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    76
my %warned_about;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    77
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    78
# --------- utility functions ----------------------------------------------
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    79
our $opt_specdir = $default_spec_dir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
    80
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    81
# return the name of the log file given the id of the spec file
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    82
sub get_log_name ($) {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    83
    my $spec_id = shift;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    84
    my $spec = $specs_to_build[$spec_id];
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    85
    my $spec_file = $spec->get_param ('file_name');
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    86
    my $base_name = $spec_file;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    87
    $base_name =~ s/^.*\/([^\/]+)/$1/;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    88
    my $log_name = "$base_name";
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    89
    $log_name =~ s/(\.spec|)$/.log/;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    90
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    91
    return $log_name;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    92
}
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    93
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    94
my $current_log;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    95
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    96
sub open_log ($) {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    97
    my $log_filename = shift;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
    98
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
    99
    if (not defined ($log_filename)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   100
	return;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   101
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   102
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   103
    if (defined ($current_log)) {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   104
	if ($current_log ne $log_filename) {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   105
	    close LOG_FILE;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   106
	}
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   107
    }
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   108
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   109
    $current_log = undef;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   110
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   111
    if (! open LOG_FILE, ">>$log_filename") {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   112
	msg_warning (0, "Failed to open log file $log_filename");
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   113
	return;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   114
    }
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   115
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   116
    $current_log = $log_filename;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   117
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   118
    msg_log ("--- log starts --- " . `date`);
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   119
}
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   120
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   121
sub close_log () {
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   122
    msg_log ("--- log ends --- " . `date`);
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   123
    close LOG_FILE;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   124
    $current_log = undef;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   125
}
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   126
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   127
sub print_message ($$) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   128
    my $min_verbose = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   129
    my $message = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   130
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   131
    chomp $message;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   132
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   133
    if ($verbose > $min_verbose) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   134
	print "$message\n";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   135
    }
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   136
    if (defined ($current_log)) {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   137
	print LOG_FILE "$message\n";
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   138
    }
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   139
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   140
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   141
sub msg_error ($) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   142
    my $message = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   143
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   144
    print_message (0, "ERROR: $message");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   145
    if ($halt_on_errors > 0) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   146
	print "ERROR: Exiting...\n";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   147
	exit (255);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   148
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   149
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   150
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   151
sub msg_warning ($$) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   152
    my $min_verbose = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   153
    my $message = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   154
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   155
    print_message ($min_verbose, "WARNING: $message");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   156
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   157
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   158
sub msg_info ($$) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   159
    my $min_verbose = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   160
    my $message = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   161
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   162
    print_message ($min_verbose, "INFO: $message");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   163
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   164
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   165
sub msg_debug ($$) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   166
    my $min_debug = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   167
    my $message = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   168
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   169
    if ($debug_level > $min_debug) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   170
	print "DEBUG: $message\n";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   171
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   172
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   173
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   174
sub msg_log ($) {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   175
    my $message = shift;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   176
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   177
    if (defined ($current_log)) {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   178
	print LOG_FILE "$message\n";
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   179
    }
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   180
}
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   181
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   182
sub find_file ($) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   183
    my $glob = shift;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   184
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   185
    my @files = `find $glob 2>&1`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   186
    if ($? == 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   187
	my $file = $files[$#files];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   188
	chomp $file;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   189
	return ($file);
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   190
    }
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   191
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   192
    return (undef);
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   193
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   194
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   195
sub mail_log ($) {
1059
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   196
    my $spec_id = shift;
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   197
    my $address;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   198
    my $cc;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   199
    my $log_name = get_log_name ($spec_id);
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   200
    my $spec_name = $specs_to_build[$spec_id]->{name};
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   201
    my $base_name = $log_name;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   202
    $log_name =~ s/\.log$//;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   203
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   204
    if (defined ($mail_errors_file)) {
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   205
	$address = get_address_from_file ($mail_errors_file, $base_name);
2747
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   206
    }
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   207
    
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   208
    if (not defined ($address)) {
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   209
	$address = $mail_errors_to;
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   210
    }
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   211
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   212
    if (not defined ($address)) {
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   213
	$address = $mail_errors_cc;
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   214
    } else {
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   215
	$cc = $mail_errors_cc;
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   216
    }
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   217
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   218
    if (not defined ($address)) {
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   219
	return;
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   220
    }
1059
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   221
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   222
    my $log_file = get_log_name ($spec_id);
2369
f48652db5085 2004-04-02 Laszlo Peter <[email protected]>
laca
parents: 1741
diff changeset
   223
    msg_info (1, "mailing the build log to $address");
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   224
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   225
    my $subject;
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   226
2747
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   227
    my $log_pointer;
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   228
    if (defined ($the_logdir_url)) {
2815
3339cb1a0e3d 2004-05-20 Laszlo Peter <[email protected]>
laca
parents: 2801
diff changeset
   229
	$log_pointer = "$the_logdir_url/${log_name}.log";
2747
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   230
    } else {
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   231
	$log_pointer = "$the_log_dir/$log_file";
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   232
    }
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   233
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   234
    if (defined ($prodname)) {
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   235
	$subject = "BUILD FAILED ($prodname): $spec_name";
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   236
    } else {
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   237
	$subject = "BUILD FAILED: $spec_name";	
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   238
    }
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   239
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   240
    if (defined ($cc)) {
2747
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   241
	`( echo "Full log: $log_pointer" ; echo; echo "--- tail of the log follows ---"; echo; tail -100 $the_log_dir/$log_file ) | mailx -s "$subject" -c "$cc" $address`;
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   242
    } else {
2747
5eaa1cc670a0 2004-05-14 Laszlo Peter <[email protected]>
laca
parents: 2424
diff changeset
   243
	`( echo "Full log: $log_pointer" ; echo; echo "--- tail of the log follows ---"; echo; tail -100 $the_log_dir/$log_file ) | mailx -s "$subject" $address`;
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   244
    }
1059
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   245
}
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   246
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   247
sub get_address_from_file ($$) {
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   248
    my $fname = shift;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   249
    my $pkg = shift;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   250
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   251
    $pkg =~ s/\.spec$//;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   252
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   253
    if (! open ADDR_FILE, "<$fname") {
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   254
        msg_warning (0, "Could not open file $fname");
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   255
	return undef;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   256
    }
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   257
    my @lines = <ADDR_FILE>;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   258
    my @addresses = grep /^$pkg:/, @lines;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   259
    my $address = $addresses[0];
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   260
    if (not defined ($address)) {
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   261
	return undef;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   262
    }
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   263
    $address =~ s/^$pkg://;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   264
    $address =~ s/\s//g;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   265
    close ADDR_FILE;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   266
    return $address;
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   267
}
8415b42f1053 added support for mailing the maintainer if the build breaks
laca
parents: 1058
diff changeset
   268
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   269
# --------- functions to process the command line args ---------------------
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   270
sub add_spec ($) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   271
    my $spec_name = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   272
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   273
    my $spec;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   274
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   275
    if (-f $spec_name) {
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   276
	$spec = rpm_spec->new ($spec_name, $rpm_target);
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   277
    } else {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   278
	if (not $spec_name =~ /\.spec$/) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   279
	    $spec_name = "${opt_specdir}/${spec_name}.spec";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   280
	}
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   281
	$spec = rpm_spec->new ("$spec_name", $rpm_target);
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   282
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   283
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   284
    if (not defined ($spec)) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   285
	msg_error ("$spec_name not found\n");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   286
    } else {
2798
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   287
	if ($is_nightly) {
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   288
	    $spec->add_define ("nightly", "1");
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   289
	}
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   290
	my $this_spec_id = $spec_id ++;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   291
	$specs_to_build[$this_spec_id] = $spec;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   292
	my @packages = $spec->get_param_array ('packages');
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   293
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   294
	$build_status[$this_spec_id] = 'NOT_BUILT';
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   295
	$status_details[$this_spec_id] = '';
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   296
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   297
	foreach my $pkg (@packages) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   298
	    my @provides = $spec->get_pkg_param_array ($pkg, 'provides');
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   299
	    foreach my $prov (@provides) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   300
		if (not defined $prov) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   301
		    next;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   302
		}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   303
		$prov =~ s/ .*//;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   304
		$provider{$prov} = $this_spec_id;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   305
	    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   306
	}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   307
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   308
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   309
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   310
sub set_quiet {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   311
    $verbose = 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   312
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   313
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   314
sub process_args {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   315
    my $arg = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   316
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   317
    if (not defined ($build_command)) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   318
	if (($arg ne "build") and ($arg ne "build-order") and
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   319
	    ($arg ne "uninstall-pkgs") and
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   320
	    ($arg ne "install-order")) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   321
	    msg_error ("unknown command: $arg");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   322
	    usage (1);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   323
	}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   324
	$build_command = $arg;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   325
    } else {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   326
	add_spec ($arg);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   327
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   328
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   329
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   330
sub process_options {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   331
    
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   332
  Getopt::Long::Configure ("bundling");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   333
    
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   334
    our $opt_logdir = $default_log_dir;
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   335
    our $opt_sourcedirs = $default_source_dirs;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   336
    our $opt_tarballdir = $default_tarball_dir;
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   337
    our $opt_good_build_dir;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   338
    our $opt_good_rpms_copy_dir;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   339
    our $opt_patchdir = $default_patch_dir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   340
    our $opt_rpmdir = $default_sys_rpm_dir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   341
    our $opt_deps = 1;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   342
    our $opt_live_summary = 0;
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   343
    our $opt_summary_log;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   344
    our $opt_summary_title;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   345
    our $opt_logdir_url;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   346
    our $opt_rpm_url;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   347
    our $opt_srpm_url;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   348
    our $opt_date = $default_nightly_date_format;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   349
    
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   350
    GetOptions ('v|verbose+' => \$verbose,
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   351
		'debug=n' => \$debug_level,
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   352
		'q|quiet' => \&set_quiet,
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   353
		'specdir|spec|S=s',
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   354
		'halt-on-errors!', \$halt_on_errors,
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   355
		'mail-errors-to=s' => \$mail_errors_to,
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   356
		'mail-errors-cc=s' => \$mail_errors_cc,
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   357
		'mail-errors-file=s' => \$mail_errors_file,
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
   358
		'prodname=s' => \$prodname,
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   359
		'sourcedirs|sourcedir|src|srcdirs|srcdir|sources|source|s=s',
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   360
		'logdir|log|l=s',
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   361
		'summary-log=s',
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   362
		'live-summary|live!',
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   363
		'summary-title=s',
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   364
		'logdir-url=s',
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   365
		'rpm-url=s',
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   366
		'srpm-url=s',
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   367
		'target=s' => \$rpm_target,
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   368
		'deps!',
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   369
		'tarballdir|tar|tarball|tardir|t=s',
787
3714008768f6 *** empty log message ***
laca
parents: 786
diff changeset
   370
		'good-build-dir=s',
3714008768f6 *** empty log message ***
laca
parents: 786
diff changeset
   371
		'good-rpms-copy-dir=s',
2798
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   372
		'nightly!' => \$is_nightly,
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   373
		'date|date-format|nightly-date-format=s',
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   374
		'patchdir|patch|p=s',
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   375
		'rpmdir|rpm|r=s',
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   376
		'full-path' => \$full_path,
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   377
		'help' => \&usage,
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   378
		'<>' => \&process_args);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   379
    
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   380
    $the_spec_dir = $opt_specdir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   381
    $the_log_dir = $opt_logdir;
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   382
    $the_summary_log = $opt_summary_log;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   383
    $the_summary_title = $opt_summary_title;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   384
    $the_logdir_url = $opt_logdir_url;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   385
    $the_rpm_url = $opt_rpm_url;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   386
    $the_srpm_url = $opt_srpm_url;
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   387
    $the_source_dirs = $opt_sourcedirs;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   388
    $the_tarball_dir = $opt_tarballdir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   389
    $the_patch_dir = $opt_patchdir;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   390
    $the_sys_rpm_dir = $opt_rpmdir;
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   391
    $the_good_build_dir = $opt_good_build_dir;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   392
    $the_good_rpms_copy_dir = $opt_good_rpms_copy_dir;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   393
    $check_deps = $opt_deps;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   394
    $live_summary = $opt_live_summary;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   395
    $the_nightly_date_format = $opt_date;
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   396
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   397
    @the_source_dirlist = split /:/, $the_source_dirs;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   398
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   399
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   400
sub usage (;$) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   401
    my $retval = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   402
    if (not defined ($retval)) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   403
	$retval = 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   404
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   405
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   406
    print << "EOF";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   407
build-gnome2 [options] [command] specs...
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   408
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   409
Options:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   410
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   411
    -v|--verbose:    
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   412
                  Increase verbosity: the more -v's the more diag messages
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   413
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   414
    -q|--quiet:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   415
                  Silent operation.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   416
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   417
    --specdir=dir, --spec=dir:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   418
                  Use dir as the default directory for spec files.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   419
                  Default: $default_spec_dir
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   420
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   421
    --tarballdir=dir, --tardir=dir, --tar=dir:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   422
                  Search for source tarballs in dir.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   423
                  Default: $default_tarball_dir
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   424
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   425
    --sourcedir=dir, --srcdir=dir, --src=dir:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   426
                  Location of the additional sources referenced in the spec
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   427
                  files. Default: $default_spec_dir
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   428
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   429
    --patchdir=dir, --patch=dir:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   430
                  Look for the patches referenced in the spec files in dir.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   431
                  Default: $default_patch_dir
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   432
 
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   433
    --rpmdir=dir --rpm=dir:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   434
                  Use dir as the rpm base directory (where the SPECS,
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   435
                  SOURCES, RPMS, SRPMS, BUILD directories are found).
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   436
                  Default: $default_sys_rpm_dir
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   437
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   438
    --logdir=dir, --log=dir:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   439
                  Write build logs to dir. Default: $default_log_dir
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   440
                  
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   441
    --nodeps, --deps:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   442
                  Ignore/verify dependencies before building a component.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   443
                  Default: --deps
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   444
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   445
    --target=arch
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   446
		  If used, the same option will be passed to rpm when
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   447
		  building the package(s)
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   448
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   449
    --halt-on-errors:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   450
                  Halt on the first build error, do not attempt to continue.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   451
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   452
    --full-path:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   453
                  Print the full path to the rpm when running install-order.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   454
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   455
    --nightly, --nonightly:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   456
                  Suffix/Don't suffix the rpm Release with the current date.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   457
                  Default: --nonightly;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   458
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   459
    --date-format=format, --date=format:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   460
                  Use "date +format" to generate the date suffix for
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   461
                  the nightly builds. Default: $default_nightly_date_format
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   462
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   463
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   464
Commands:
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   465
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   466
    build          Build the specs specified on the command line
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   467
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   468
    build-order    Print the build order of the specs specified on the
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   469
	           command line.
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   470
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   471
    install-order  Print the rpms in the order they should be installed
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   472
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   473
    uninstall-pkgs Remove all rpms defined in the spec files specified
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   474
		   on the command line. (runs rpm --erase --nodeps)
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   475
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   476
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   477
specs...
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   478
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   479
    List of spec files to build. Either full path names or names of spec
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   480
    files in the default spec directory (with or without the .spec suffix).
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   481
EOF
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   482
    exit $retval;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   483
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   484
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   485
# --------- print reports --------------------------------------------------
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   486
# plain text report on stdout and
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   487
# html report if summary log file name
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   488
# was specified on the command line
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   489
sub print_status {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   490
    print_status_text ();
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   491
    print_status_html ();
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   492
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   493
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   494
sub print_live_status {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   495
    if ($live_summary) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   496
	print_status_html ();
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   497
    }
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   498
}
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   499
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   500
sub print_status_text {
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   501
    my $spec_name;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   502
    print "\nSummary:\n\n";
531
3b6df7968fe8 summary formatting fix
laca
parents: 482
diff changeset
   503
    printf "%20s | %10s | %s\n", "package", "status", "details";
3b6df7968fe8 summary formatting fix
laca
parents: 482
diff changeset
   504
    print "---------------------+------------+------------------------------------------\n";
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   505
    for (my $i = 0; $i <= $#specs_to_build; $i++) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   506
	$spec_name=$specs_to_build[$i]->{name};
531
3b6df7968fe8 summary formatting fix
laca
parents: 482
diff changeset
   507
	printf "%20s | %10s | %s\n", $spec_name, $build_status[$i], 
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   508
		$status_details[$i];
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   509
    }
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   510
}
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   511
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   512
sub print_status_html {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   513
    my $spec_name;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   514
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   515
    if (not defined ($the_summary_log)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   516
	return;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   517
    }
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   518
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   519
    if (! open SUM_LOG, ">$the_summary_log") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   520
	msg_warning (0, "Failed to open file $the_summary_log for writing");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   521
	return;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   522
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   523
	
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   524
    print SUM_LOG "<HTML>\n<HEAD>\n<TITLE>Build report</TITLE>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   525
    print SUM_LOG "</HEAD>\n<BODY BGCOLOR=#FFFFFF>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   526
    if (defined ($the_summary_title)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   527
	print SUM_LOG "<P><H3>$the_summary_title</H3><P>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   528
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   529
    print SUM_LOG "<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=5 WIDTH=90%>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   530
    print SUM_LOG " <TR>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   531
    print SUM_LOG "  <TD BGCOLOR=#666699><B>package</B></TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   532
    print SUM_LOG "  <TD BGCOLOR=#666699><B>version</B></TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   533
    print SUM_LOG "  <TD BGCOLOR=#666699><B>release</B></TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   534
    print SUM_LOG "  <TD BGCOLOR=#666699><B>status</B></TD>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   535
    print SUM_LOG "  <TD BGCOLOR=#666699><B>details</B></TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   536
    print SUM_LOG " </TR>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   537
    for (my $i = 0; $i <= $#specs_to_build; $i++) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   538
	my $log_name = get_log_name ($i);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   539
	$spec_name=$specs_to_build[$i]->{name};
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   540
	my $version = $specs_to_build[$i]->{version};
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   541
	my $release = $specs_to_build[$i]->{release};
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   542
	print SUM_LOG " <TR>\n";
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   543
	if (defined ($the_srpm_url)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   544
	    if (($build_status[$i] eq "PASSED") and defined ($the_srpm_url)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   545
		print SUM_LOG "  <TD><A HREF=\"$the_srpm_url/$spec_name-$version-$release.src.rpm\">$spec_name</A></TD>\n";
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   546
	    } else {
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   547
		print SUM_LOG "  <TD>$spec_name</TD>\n";
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   548
	    }
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   549
	} else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   550
	    print SUM_LOG "  <TD>$spec_name</TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   551
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   552
	print SUM_LOG "  <TD>", $version, "</TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   553
	print SUM_LOG "  <TD>", $release, "</TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   554
	my $color_start = "";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   555
	my $color_end = "";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   556
	if ($build_status[$i] eq "PASSED") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   557
	    $color_start = "<FONT COLOR=#11AA11>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   558
	    $color_end = "</FONT>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   559
	} elsif ($build_status[$i] eq "BEING_BUILT") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   560
	    $color_start = "<FONT COLOR=#FFA500>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   561
	    $color_end = "</FONT>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   562
	} elsif ($build_status[$i] eq "DEP") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   563
	    $color_start = "<FONT COLOR=#FFA500>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   564
	    $color_end = "</FONT>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   565
	} elsif ($build_status[$i] eq "NOT_BUILT") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   566
	    $color_start = "";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   567
	    $color_end = "";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   568
	} else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   569
	    $color_start = "<FONT COLOR=#CC1111>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   570
	    $color_end = "</FONT>";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   571
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   572
	if (defined ($the_logdir_url) and ($build_status[$i] ne "NOT_BUILT")) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   573
	    print SUM_LOG "  <TD><A HREF=\"$the_logdir_url/$log_name\">",
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   574
	    $color_start, $build_status[$i], $color_end,
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   575
	    "</A></TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   576
	} else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   577
	    print SUM_LOG "  <TD>", 
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   578
	    $color_start, $build_status[$i], $color_end,
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   579
	    "</A></TD>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   580
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   581
	if ($build_status[$i] eq "PASSED") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   582
	    if (defined ($the_rpm_url)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   583
		print SUM_LOG "  <TD>RPMS: \n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   584
		my @rpms = $specs_to_build[$i]-> get_param_array ('rpms');
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   585
		my $ctr = 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   586
		for my $rpm (@rpms) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   587
		    print SUM_LOG "    <A HREF=\"$the_rpm_url/$rpm\">[$ctr]</a> \n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   588
		    $ctr++;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   589
		}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   590
		print SUM_LOG "  </TD>\n";
609
b705c778bcb2 build report fixes
laca
parents: 606
diff changeset
   591
	    } else {
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   592
		print SUM_LOG "  <TD>&nbsp;</TD>\n";
609
b705c778bcb2 build report fixes
laca
parents: 606
diff changeset
   593
	    }
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   594
	} else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   595
	    print SUM_LOG "  <TD><PRE>", $status_details[$i], "</PRE></TD>\n";
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   596
	}
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   597
	print SUM_LOG " </TR>\n";
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
   598
    }
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   599
    print SUM_LOG "</TABLE><P>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   600
    print SUM_LOG "<SMALL>", `date`, "</SMALL>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   601
    print SUM_LOG "</BODY>\n</HTML>\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   602
    close SUM_LOG;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   603
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   604
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   605
# --------- rpm utility functions ------------------------------------------
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   606
sub is_provided ($) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   607
    my $capability = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   608
610
ef8e419e17f3 *** empty log message ***
laca
parents: 609
diff changeset
   609
    $capability =~ s/\s.*//;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   610
    `sh -c "rpm -q --whatprovides $capability" >/dev/null 2>&1`;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   611
    my $result = (! $?);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   612
    `sh -c "rpm -q $capability" >/dev/null 2>&1`;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   613
    $result = ($result or (! $?));
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   614
    
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   615
    return ($result);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   616
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   617
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   618
sub what_provides ($) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   619
    my $capability = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   620
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   621
    $capability =~ s/ .*//;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   622
    my $rpm=`sh -c "rpm -q --whatprovides $capability" 2>&1`;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   623
    if ($?) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   624
	$rpm=`sh -c "rpm -q $capability" 2>&1`;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   625
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   626
    chomp $rpm;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   627
    return ($rpm);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   628
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   629
1741
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   630
sub spec_id_of ($) {
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   631
    my $name = shift;
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   632
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   633
    for (my $i = 0; $i <= $#specs_to_build; $i++) {
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   634
	if ($specs_to_build[$i]->{name} eq $name) {
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   635
	    return $i;
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   636
	}
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   637
    }
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   638
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   639
    return undef;
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   640
}
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
   641
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   642
sub install_good_rpms ($) {
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   643
    my $spec_id = shift;
2798
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   644
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   645
    return if not defined($spec_id);
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   646
    my $spec = $specs_to_build[$spec_id];
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   647
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   648
    my @rpms =  $spec->get_param_array ('rpms');
789
6c06955e700c *** empty log message ***
laca
parents: 788
diff changeset
   649
    map $_ =~ s/$spec->{version}-$spec->{release}.$spec->{buildarchitecture}.rpm/[0-9]*-[0-9]*.*.rpm/, @rpms;
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   650
    map $_ =~ s/^/$the_good_build_dir\//, @rpms;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   651
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   652
    for (my $i = 0; $i <= $#rpms; $i++) {
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   653
	my $current_rpm = $rpms[$i];
789
6c06955e700c *** empty log message ***
laca
parents: 788
diff changeset
   654
	msg_info (1, "Looking for last known good rpm as $current_rpm");
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   655
	$rpms[$i] = find_file ($current_rpm);
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   656
	if (not defined ($rpms[$i])) {
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   657
	    msg_error ("No file matches $current_rpm");
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   658
	    return 0;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   659
	} else {
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   660
	    msg_info (1, "Found $rpms[$i]");
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   661
	}
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   662
    }
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   663
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   664
    my $command = "rpm --upgrade -v @rpms";
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   665
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   666
    if ($verbose > 0) {
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   667
	map msg_info (0, "Installing last known good rpm: $_\n"), @rpms;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   668
    }
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   669
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   670
    my $msg=`$command 2>&1`;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   671
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   672
    if ($? > 0) {
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   673
	msg_error "failed to install last known good rpm: $msg";
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   674
	$status_details[$spec_id] = $status_details[$spec_id] . 
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   675
	    "; Failed to install last known good rpm: " . $msg;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   676
	return 0;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   677
    }
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   678
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   679
    if (defined ($the_good_rpms_copy_dir)) {
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   680
	`mkdir -p $the_good_rpms_copy_dir`;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   681
	`cp @rpms $the_good_rpms_copy_dir`;
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   682
    }
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   683
790
507b4577d2c7 *** empty log message ***
laca
parents: 789
diff changeset
   684
    return 1;
786
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   685
}
164d94045f68 added support for using known good rpms when a component fails to build.
laca
parents: 785
diff changeset
   686
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   687
sub install_rpms ($) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   688
    my $spec_id = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   689
    my $spec = $specs_to_build[$spec_id];
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   690
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   691
    my @rpms =  $spec->get_param_array ('rpm_paths');
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   692
    map $_ =~ s/^/$the_sys_rpm_dir\//, @rpms;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   693
    my $command = "rpm --upgrade -v @rpms";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   694
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   695
    if ($verbose > 0) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   696
	map msg_info (0, "Installing $_\n"), @rpms;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   697
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   698
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   699
    my $msg=`$command 2>&1`;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   700
    if ($? > 0) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   701
	msg_error "failed to install rpm: $msg";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   702
	$build_status[$spec_id] = 'FAILED';
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   703
	$status_details[$spec_id] = $msg;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   704
	return 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   705
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   706
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   707
    return 1;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   708
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   709
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   710
sub print_rpms ($) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   711
    my $spec_id = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   712
    my $spec = $specs_to_build[$spec_id];
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   713
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   714
    if ($full_path) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   715
	my @rpms =  $spec->get_param_array ('rpm_paths');
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   716
	map print("$the_sys_rpm_dir\/$_\n"), @rpms;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   717
    } else {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   718
	my @rpms =  $spec->get_param_array ('rpms');
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   719
	map print("$_\n"), @rpms;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   720
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   721
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   722
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   723
sub print_spec ($) {
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   724
    my $spec_id = shift;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   725
    my $spec = $specs_to_build[$spec_id];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   726
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   727
    print "$spec->{file_name}\n";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   728
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   729
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   730
sub push_to_remove_list ($) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   731
    my $spec_id = shift;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   732
    my $spec = $specs_to_build[$spec_id];
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   733
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
   734
    my @rpms =  $spec->get_param_array ('packages');
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   735
    map unshift (@remove_list, $_), @rpms;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   736
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   737
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   738
# --------- dependency checking code ---------------------------------------
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   739
sub warn_always ($$$) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   740
    my $spec_name = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   741
    my $dep = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   742
    my $reason = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   743
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   744
    if ($reason eq "DEP_FAILED") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   745
	msg_warning (1, "$spec_name requires $dep");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   746
	msg_warning (1, "but that failed to build");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   747
	msg_warning (1, "Can't build $spec_name");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   748
    } elsif ($reason eq "NOT_FOUND") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   749
	msg_warning (0, "no spec file or installed package provides $dep");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   750
	msg_warning (0, "can't build $spec_name");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   751
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   752
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   753
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   754
sub warn_once ($$$) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   755
    my $spec_name = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   756
    my $dep = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   757
    my $reason = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   758
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   759
    if ($reason eq "DEP_FAILED") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   760
	# should not happen
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   761
	msg_error ("assertion failed: warn_once / DEP_FAILED");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   762
    } elsif ($reason eq "NOT_FOUND") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   763
	if (not defined ($warned_about{$dep})) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   764
	    msg_warning (1, "$dep is required but not found");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   765
	    $warned_about{$dep}=1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   766
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   767
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   768
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   769
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   770
sub get_dependencies ($@) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   771
    my $spec_id = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   772
    my @packages = @_;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   773
    my $spec = $specs_to_build[$spec_id];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   774
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   775
    my @dependencies = ();
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   776
    my @this_pkg_requires;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   777
    foreach my $pkg (@packages) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   778
	@this_pkg_requires = $spec->get_pkg_param_array ($pkg, 'requires');
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   779
	msg_debug (3, "adding \"@this_pkg_requires\" to the dependencies of $spec->{name}");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   780
	push (@dependencies, @this_pkg_requires);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   781
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   782
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   783
    return @dependencies;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   784
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   785
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   786
sub check_dependency ($$&&@) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   787
    my $spec_id = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   788
    my $capability = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   789
    my $recursive_callback = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   790
    my $warning_callback = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   791
    my @rec_cb_opts = @_;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   792
    my $spec_name = $specs_to_build[$spec_id]->{name};
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   793
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   794
    my $result = 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   795
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   796
    if (not defined ($capability)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   797
	return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   798
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   799
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   800
    if ((defined ($provider{$capability})) and
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   801
	($provider{$capability} == $spec_id)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   802
	return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   803
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   804
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   805
    if (defined $provider{$capability}) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   806
	if ($build_status[$provider{$capability}] eq "PASSED") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   807
	    return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   808
	} elsif ($build_status[$provider{$capability}] ne "NOT_BUILT") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   809
	    if (!is_provided ($capability)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   810
		&$warning_callback ($spec_name, $capability, "DEP_FAILED");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   811
		return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   812
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   813
	    return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   814
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   815
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   816
	msg_info (1, "need to build $capability first");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   817
	my $save_log_name = $current_log;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   818
	my $result = &$recursive_callback ($provider{$capability}, @rec_cb_opts);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   819
	open_log ($save_log_name);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   820
	return $result;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   821
    } elsif (!is_provided ($capability)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   822
	&$warning_callback ($spec_name, $capability, "NOT_FOUND");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   823
	return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   824
    } else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   825
	return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   826
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   827
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   828
    # should not happen
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   829
    msg_error("Assertion failed: check_dependency: return 0");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   830
    return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   831
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   832
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   833
# --------- copy build spec files, tarballs, patches -----------------------
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   834
sub copy_spec ($) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   835
    my $spec_id = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   836
    my $spec = $specs_to_build[$spec_id];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   837
    my $spec_file = $spec->get_param ('file_name');
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   838
    my $base_name = $spec_file;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   839
    $base_name =~ s/^.*\/([^\/]+)/$1/;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   840
    my $target = "$the_sys_rpm_dir/SPECS/$base_name";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   841
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   842
    msg_info (1, "copying spec file $base_name to the SPECS dir");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   843
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   844
    if ($is_nightly) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   845
	my $the_nightly_date = `date "+$the_nightly_date_format"`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   846
	if ($? > 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   847
	    msg_error ("incorrect date format: $the_nightly_date_format");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   848
	    $build_status[$spec_id] = 'ERROR';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   849
	    $status_details[$spec_id] = "incorrect nightly date format: $the_nightly_date";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   850
	    return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   851
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   852
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   853
	open SPEC_OUT, ">$target";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   854
	my $msg=`cp $spec_file /tmp/.gnome_build.tmp.$$ 2>&1`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   855
	if ($? > 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   856
	    msg_error ("failed to copy $spec_file");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   857
	    msg_error ("can't continue with $spec->{name}");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   858
	    $build_status[$spec_id] = 'FAILED';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   859
	    $status_details[$spec_id] = "cound not copy spec file: $msg";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   860
	    return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   861
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   862
	open SPEC_IN, "</tmp/.gnome_build.tmp.$$";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   863
	my $line;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   864
	while (1) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   865
	    $line = <SPEC_IN>;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   866
	    if (not defined ($line)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   867
		last;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   868
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   869
	    if ($line =~ /^Release\s*:/) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   870
		$line =~ s/\s*$/.$the_nightly_date/;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   871
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   872
	    print SPEC_OUT $line;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   873
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   874
	close SPEC_OUT;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   875
	close SPEC_IN;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   876
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   877
	`rm -f /tmp/.gnome_build.tmp.$$`;
2798
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   878
	my $s = rpm_spec->new ($target, $rpm_target);
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   879
	$specs_to_build[$spec_id] = $s;
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
   880
	$s->add_define ("nightly", "1");
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   881
    } else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   882
	`cmp -s $spec_file $target`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   883
	if ($? != 0) {  # the files differ
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   884
	    my $msg=`cp $spec_file $target 2>&1`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   885
	    if ($? > 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   886
		msg_error "failed to copy $spec_file";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   887
		$build_status[$spec_id] = 'FAILED';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   888
		$status_details[$spec_id] = "failed to copy spec file: $msg";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   889
		return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   890
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   891
	} else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   892
	    msg_info (3, "   $spec_file and");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   893
	    msg_info (3, "   $target");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   894
	    msg_info (3, "   are the same; not copying");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   895
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   896
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   897
    
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   898
    return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   899
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   900
1268
f94fb1ac56fd *** empty log message ***
laca
parents: 1255
diff changeset
   901
sub find_source ($$) {
f94fb1ac56fd *** empty log message ***
laca
parents: 1255
diff changeset
   902
    my $spec_id = shift;
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   903
    my $src = shift;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   904
    my $is_tarball = 0;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   905
    my $src_path;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   906
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   907
    if ($src =~ /\.(tar\.gz|tgz|tar\.bz2|tar\.bzip2)$/) {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   908
	$is_tarball = 1;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   909
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   910
	$src_path = "$the_tarball_dir/$src";
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   911
	if (! -f "$src_path") {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   912
	    msg_info (3, "   $src not found in $the_tarball_dir");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   913
	} else {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   914
	    msg_info (3, "   found in $the_tarball_dir");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   915
	    return $src_path;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   916
	}
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   917
    }
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   918
    foreach my $extsrcdir (@the_source_dirlist) {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   919
	$src_path = "$extsrcdir/$src";
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   920
	if (! -f "$src_path") {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   921
	    msg_info (3, "   $src not found in $extsrcdir");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   922
	} else {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   923
	    msg_info (3, "   found in $extsrcdir");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   924
	    return "$src_path";
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   925
	}
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   926
    }
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   927
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   928
    if (!$is_tarball) {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   929
	$src_path = "$the_tarball_dir/$src";
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   930
	if (! -f "$src_path") {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   931
	    msg_info (3, "   trying the tarball directory");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   932
	    msg_info (3, "   $src not found in $the_tarball_dir");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   933
	} else {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   934
	    msg_info (3, "   found in $the_tarball_dir");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   935
	    msg_warning (1, "$src is not expected to be in the tarball dir");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   936
	    return $src_path;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   937
	}
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   938
    }
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   939
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   940
    $build_status[$spec_id] = 'FAILED';
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   941
    $status_details[$spec_id] = "Source $src not found";
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   942
    msg_error ("Source file $src not found");
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   943
    return undef;
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   944
}
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   945
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   946
sub copy_sources ($) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   947
    my $spec_id = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   948
    my $spec = $specs_to_build[$spec_id];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   949
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   950
    my @sources = $spec->get_param_array ('sources');
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   951
    my $src_path;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   952
    my $target;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   953
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   954
    msg_info (1, "copying sources to $the_sys_rpm_dir/SOURCES");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   955
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   956
    foreach my $src (@sources) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   957
	if (not defined ($src)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   958
	    next;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   959
	}
1268
f94fb1ac56fd *** empty log message ***
laca
parents: 1255
diff changeset
   960
        $src_path = find_source ($spec_id, $src);
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   961
	if (not defined ($src_path)) {
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   962
	    return 0;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   963
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   964
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
   965
	msg_info (2, "   copying $src");
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   966
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   967
	$target = "$the_sys_rpm_dir/SOURCES/$src";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   968
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   969
	`cmp -s $src_path $target`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   970
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   971
	if ($? != 0) {  # the files differ
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   972
	    my $msg=`cp $src_path $target 2>&1`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   973
	    if ($? > 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   974
		msg_error ("failed to copy $src_path");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   975
		$build_status[$spec_id] = 'ERROR';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   976
		$status_details[$spec_id] = $msg;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   977
		return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   978
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   979
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   980
    
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   981
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   982
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   983
    return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   984
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   985
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   986
sub copy_patches ($) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   987
    my $spec_id = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   988
    my $spec = $specs_to_build[$spec_id];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   989
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   990
    my @patches = $spec->get_param_array ('patches');
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   991
    my $patch_path;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   992
    my $target;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   993
    foreach my $patch (@patches) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   994
	if (not defined ($patch)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   995
	    next;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   996
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   997
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   998
	msg_info (2, "copying patch $patch");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
   999
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1000
	$patch_path = "$the_patch_dir/$patch";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1001
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1002
	if (! -f "$patch_path") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1003
	    $build_status[$spec_id] = 'ERROR';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1004
	    $status_details[$spec_id] = "Patch $patch_path not found";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1005
	    msg_error ("Patch $patch_path not found");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1006
	    return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1007
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1008
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1009
	$target = "$the_sys_rpm_dir/SOURCES/$patch";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1010
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1011
	`cmp -s $patch_path $target`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1012
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1013
	if ($? != 0) {  # the files differ
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1014
	    my $msg=`cp $patch_path $target 2>&1`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1015
	    if ($? > 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1016
		msg_error "failed to copy $patch_path";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1017
		$build_status[$spec_id] = 'ERROR';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1018
		$status_details[$spec_id] = $msg;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1019
		return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1020
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1021
	} else {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1022
	    msg_info (3, "   $patch and");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1023
	    msg_info (3, "   $the_sys_rpm_dir/SOURCES/$patch");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1024
	    msg_info (3, "   are the same; not copying");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1025
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1026
    
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1027
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1028
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1029
    return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1030
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1031
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1032
# --------- build command --------------------------------------------------
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1033
sub do_build () {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1034
    print_live_status;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1035
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1036
    for (my $i = 0; $i <= $#specs_to_build; $i++) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1037
	if ($build_status[$i] eq "NOT_BUILT") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1038
	    if (! build_spec ($i)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1039
		if (defined ($the_good_build_dir)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1040
		    msg_info (0, "Attempting to use a known good rpm");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1041
		    install_good_rpms ($i);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1042
		}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1043
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1044
	    print_live_status;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1045
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1046
	if ($build_status[$i] ne "PASSED") {
1418
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
  1047
	    if ($build_status[$i] ne "DEP_FAILED") {
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
  1048
		mail_log ($i);
d6ff07e7887d 2003-11-18 Laszlo Peter <[email protected]>
laca
parents: 1287
diff changeset
  1049
	    }
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1050
	    $exit_val++;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1051
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1052
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1053
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1054
    if ($verbose > 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1055
	print_status;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1056
    }
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1057
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1058
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1059
sub build_spec ($) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1060
    my $spec_id = shift;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1061
    my $spec = $specs_to_build[$spec_id];
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
  1062
    my $logname = $the_log_dir . "/" . get_log_name ($spec_id);
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1063
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1064
    msg_debug (0, "Trying to build $spec->{name}");
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
  1065
    open_log ($logname);
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1066
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1067
    if ($build_status[$spec_id] ne "NOT_BUILT") {
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1068
	if ($build_status[$spec_id] eq "DEP") {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1069
	    $build_status[$spec_id]="ERROR";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1070
	    $status_details[$spec_id]="Circular dependency detected";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1071
	    msg_error ("Circular dependency detected " .
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1072
		"while trying to build $spec->{name}");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1073
	}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1074
	return 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1075
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1076
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1077
    my @packages = $spec->get_param_array ('packages');
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1078
    msg_debug (3, "packages: $spec->{file_name} defines: @packages");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1079
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1080
    foreach my $pkg (@packages) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1081
	if (not defined ($pkg)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1082
	    next;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1083
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1084
	msg_info (2, "Checking if $pkg is installed");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1085
	if (is_provided ($pkg) and $check_deps) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1086
	    my $provider = what_provides ($pkg);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1087
	    msg_warning (0, "$pkg is already provided by $provider");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1088
	    msg_warning (0, "not building $pkg");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1089
	    $build_status[$spec_id]='SKIPPED';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1090
	    $status_details[$spec_id]="$pkg already installed";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1091
	    
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1092
	    return 0;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1093
	}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1094
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1095
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1096
    if ($check_deps) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1097
	my @dependencies = get_dependencies ($spec_id, @packages);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1098
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1099
	my $this_result;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1100
	my $result = 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1101
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1102
	$build_status[$spec_id] = "DEP";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1103
	$status_details[$spec_id] = "building dependencies first";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1104
	
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1105
	msg_info (1, "Checking dependencies of $spec->{name}");
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1106
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1107
	foreach my $dep (@dependencies) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1108
	    $dep =~ s/ .*//;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1109
	    
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1110
	    $this_result = check_dependency ($spec_id, $dep,
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1111
					     \&build_spec, \&warn_always, ());
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1112
	    if (!$this_result) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1113
		if (defined ($the_good_build_dir)) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1114
		    msg_info (0, "Attempting to use a known good rpm");
1741
b1f564a7fc6e forward port a fix from mercury-se branch
laca
parents: 1418
diff changeset
  1115
		    $this_result = install_good_rpms (spec_id_of ($dep));
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1116
		}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1117
		if (! $this_result) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1118
		    msg_warning (1, "$spec->{name} requires $dep");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1119
		}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1120
	    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1121
	    $result = ($this_result and $result);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1122
	}
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1123
	
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1124
	if (! $result) {
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1125
	    $build_status[$spec_id]="DEP_FAILED";
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1126
	    $status_details[$spec_id]="Dependency check failed";
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1127
		
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1128
	    msg_warning (0, "Dependency check for $spec->{name} failed");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1129
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1130
	    return 0;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1131
	}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1132
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1133
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1134
    copy_spec ($spec_id) || return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1135
    copy_sources ($spec_id) || return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1136
    copy_patches ($spec_id) || return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1137
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1138
    if ($live_summary) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1139
	$build_status[$spec_id] = 'BEING_BUILT';
3811
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
  1140
	$status_details[$spec_id] = "$RPM_BUILD -ba running";
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1141
	print_live_status;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1142
    }
3628
cf6118e136d2 Merged from cinnabar-suse91 branch back into HEAD
mattk
parents: 2815
diff changeset
  1143
    run_rpmbuild_ba ($spec_id) || return 0;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1144
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1145
    install_rpms ($spec_id) || return 0;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1146
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1147
    $build_status[$spec_id] = "PASSED";
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1148
    $status_details[$spec_id] = "";
606
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
  1149
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
  1150
    close_log;
53d75f521e46 added some command line options to the build script for use in the nightly builds.
laca
parents: 581
diff changeset
  1151
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1152
    return 1;
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1153
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1154
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1155
3628
cf6118e136d2 Merged from cinnabar-suse91 branch back into HEAD
mattk
parents: 2815
diff changeset
  1156
sub run_rpmbuild_ba ($) {
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1157
    my $spec_id = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1158
    my $spec = $specs_to_build[$spec_id];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1159
    my $spec_file = $spec->get_param ('file_name');
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1160
    my $base_name = $spec_file;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1161
    $base_name =~ s/^.*\/([^\/]+)/$1/;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1162
    my $log_name = "$base_name";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1163
    $log_name = get_log_name ($spec_id);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1164
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1165
    msg_info (0, "Running rpm build of $spec->{name} ($base_name)");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1166
    msg_info (1, "Log file: $the_log_dir/$log_name");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1167
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1168
    my $save_log_name = $current_log;
3811
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
  1169
    msg_log ("INFO: Starting $RPM_BUILD -ba at " . `date`);
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1170
    close_log;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1171
    my $tempfile = "/tmp/rpm.out.$$";
2798
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
  1172
    my $defnightly = "";
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
  1173
    if ($is_nightly) {
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
  1174
	$defnightly = " --define \"nightly 1\""
6d1ab05f1d49 2004-05-19 Laszlo Peter <[email protected]>
laca
parents: 2747
diff changeset
  1175
    }
2424
31c5b94a664a 2004-04-08 Laszlo Peter <[email protected]>
laca
parents: 2369
diff changeset
  1176
    if (defined($rpm_target) and ($rpm_target eq $spec->{buildarchitecture})) {
3811
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
  1177
        system ("$RPM_BUILD --target $rpm_target -ba $the_sys_rpm_dir/SPECS/$base_name $defnightly > $tempfile 2>&1");
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1178
    } else {
3811
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
  1179
        system ("$RPM_BUILD -ba $the_sys_rpm_dir/SPECS/$base_name $defnightly > $tempfile 2>&1");
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1180
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1181
    my $rpm_result = $?;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1182
    system ("sed -e 's/^/RPM: /' $tempfile >> $the_log_dir/$log_name 2>&1; rm -f $tempfile");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1183
    open_log ($save_log_name);
3811
722e9d4e61c0 new apoc tarballs for 17b
dermotm
parents: 3628
diff changeset
  1184
    msg_log ("INFO: $RPM_BUILD -ba finished at " . `date`);
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1185
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1186
    if ($rpm_result) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1187
	msg_error ("Build of $spec->{name} FAILED");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1188
	$build_status[$spec_id] = "FAILED";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1189
	$status_details[$spec_id] = 'RPM build failed';
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1190
	return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1191
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1192
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1193
    msg_info (0, "$spec->{name} PASSED");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1194
    return 1;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1195
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1196
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1197
# --------- build-order and install-order commands -------------------------
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1198
sub do_build_order () {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1199
    for (my $i = 0; $i <= $#specs_to_build; $i++) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1200
	print_order ($i, \&print_spec);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1201
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1202
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1203
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1204
sub do_install_order () {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1205
    for (my $i = 0; $i <= $#specs_to_build; $i++) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1206
	print_order ($i, \&print_rpms);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1207
    }
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1208
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1209
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1210
sub print_order ($&) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1211
    my $spec_id = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1212
    my $print_command = shift;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1213
    my $spec = $specs_to_build[$spec_id];
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1214
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1215
    if ($build_status[$spec_id] ne "NOT_BUILT") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1216
	if ($build_status[$spec_id] eq "DEP") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1217
	    $build_status[$spec_id]="ERROR";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1218
	    $status_details[$spec_id]="Circular dependency detected";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1219
	    msg_error ("Circular dependency detected " .
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1220
		"while checking dependencies of $spec->{name}");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1221
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1222
	return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1223
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1224
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1225
    if ($check_deps) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1226
	my @packages = $spec->get_param_array ('packages');
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1227
	my @dependencies = get_dependencies ($spec_id, @packages);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1228
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1229
	$build_status[$spec_id] = "DEP";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1230
	
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1231
	msg_info (1, "Checking dependencies of $spec->{name}");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1232
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1233
	foreach my $dep (@dependencies) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1234
	    $dep =~ s/ .*//;	
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1235
    
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1236
	    check_dependency ($spec_id, $dep, \&print_order, \&warn_once, ($print_command));	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1237
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1238
    
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1239
    copy_spec ($spec_id) || return 0;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1240
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1241
    $build_status[$spec_id] = "PASSED";
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1242
    &$print_command ($spec_id);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1243
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1244
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1245
# --------- uninstall-pkgs command -----------------------------------------
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1246
sub do_uninstall_pkgs () {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1247
    for (my $i = 0; $i <= $#specs_to_build; $i++) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1248
	print_order ($i, \&push_to_remove_list);
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1249
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1250
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1251
    foreach my $pkg_to_remove (@remove_list) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1252
	msg_info (0, "Removing $pkg_to_remove");
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1253
	my $cmd_out = `rpm -v --erase --nodeps $pkg_to_remove 2>&1`;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1254
	if ($? > 0) {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1255
	    $exit_val++;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1256
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1257
	$cmd_out =~ s/^/INFO: rpm: /;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1258
	if ($verbose > 0) {
1241
2610ab6fd775 implement searchin multiple ext source directories for the source files
laca
parents: 1059
diff changeset
  1259
	    print $cmd_out . "\n";
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1260
	}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1261
    }
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1262
}
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1263
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1264
# --------- main program ---------------------------------------------------
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1265
sub main {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1266
    process_options;
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1267
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1268
    if (not defined ($build_command)) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1269
	usage (1);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1270
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1271
    
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1272
    if (not defined ($specs_to_build[0])) {
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1273
	msg_info (0, "Nothing to do.");
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1274
	exit (0);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1275
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1276
1058
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1277
    if ($build_command eq "build") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1278
	do_build;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1279
    } elsif ($build_command eq "uninstall-pkgs") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1280
	do_uninstall_pkgs;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1281
    } elsif ($build_command eq "build-order") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1282
	do_build_order;
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1283
    } elsif ($build_command eq "install-order") {
219c9b3fae9f 2003-08-14 Laszlo Peter <[email protected]>
laca
parents: 790
diff changeset
  1284
	do_install_order;
482
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1285
    }
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1286
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1287
    exit ($exit_val);
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1288
}
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1289
0b7e38d38dac added laca's build scripts
laca
parents:
diff changeset
  1290
main;