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