close (CONF);
}
+sub update_build_id
+{
+ my $name = shift @_;
+ my $msg = shift @_;
+ my $file = "$TOPDIR/BUILD_ID/$name";
+
+ open (MY_BUILD_ID, ">$file") or die "Can't open $file file: $!\n";
+ print MY_BUILD_ID "$name" . ":\n";
+ print MY_BUILD_ID "$msg\n";
+ close (MY_BUILD_ID);
+}
+
sub get_from_git
{
my $name = shift @_;
if ($name =~ /ofa_kernel/) {
ex "$GIT checkout $ref ofed_scripts/ofed_checkout.sh";
ex "ofed_scripts/ofed_checkout.sh $ref";
- print BUILD_ID `git log -1 | head -1` . "\n";
+ update_build_id($name, "$packages{$package}{'git_url'} $packages{$name}{'git_branch'}\n" . `git log -1 | head -1`);
$packages{$name}{'version'} = (split '-',$version)[0];
if ($build_release) {
$packages{$name}{'release'} = $release;
+ $packages{$name}{'release'} =~ s/-internal//;
} else {
$packages{$name}{'release'} = '1' . `setlocalversion`;
}
}
close IN;
ex "ln -s ofed_scripts/ofa_kernel.spec";
+ ex "/bin/rm -f ofed_scripts/compat-rdma.spec";
$targz = 'tgz';
- } elsif ($name =~ /mlnx-ofc/) {
- ex "$GIT checkout $ref scripts/mlxfc_checkout.sh";
- ex "scripts/mlxfc_checkout.sh $ref";
- print BUILD_ID `git log -1 | head -1` . "\n";
-
- ex "ln -snf scripts/makefile.mlnx_ofc makefile";
- ex "ln -snf scripts/Makefile.mlnx_ofc Makefile";
-
- if ($build_release) {
- $packages{$name}{'release'} = $release;
- } else {
- $packages{$name}{'release'} = '1' . `setlocalversion`;
- }
- ex "ln -s scripts/mlxfc.spec $name.spec";
-
} else {
ex "$GIT checkout $ref";
- print BUILD_ID `git log -1 | head -1` . "\n";
+ update_build_id($name, "$packages{$package}{'git_url'} $packages{$name}{'git_branch'}\n" . `git log -1 | head -1`);
if ($build_release) {
$packages{$name}{'release'} = $release;
+ $packages{$name}{'release'} =~ s/-internal//;
} else {
$packages{$name}{'release'} = '1' . `setlocalversion`;
}
if ($packages{$name}{'use_latest'}) {
$url .= '/latest.txt';
ex "scp $url .";
- $packages{$name}{$method} = `grep $name latest.txt`;
+ $packages{$name}{$method} = `grep -w ^$name-[0-9] latest.txt`;
chomp $packages{$name}{$method};
$url = $packages{$name}{'URL'} . '/' . $packages{$name}{$method};
$packages{$package}{'URL'} = $url;
if ($packages{$name}{'use_latest'}) {
$url .= '/latest.txt';
ex "$WGET $url";
- $packages{$name}{$method} = `grep $name latest.txt`;
+ $packages{$name}{$method} = `grep -w ^$name-[0-9] latest.txt`;
chomp $packages{$name}{$method};
$url = $packages{$name}{'URL'} . '/' . $packages{$name}{$method};
$packages{$package}{'URL'} = $url;
if (-d $packages{$name}{'local_tarball'}) {
if ($packages{$name}{'use_latest'}) {
- $packages{$name}{'local_tarball'} .= '/' . `grep $name "$packages{$name}{'local_tarball'}/latest.txt"`;
+ $packages{$name}{'local_tarball'} .= '/' . `grep -w ^$name-[0-9] "$packages{$name}{'local_tarball'}/latest.txt"`;
chomp $packages{$name}{'local_tarball'};
- print BUILD_ID "$package:\n";
- print BUILD_ID "$packages{$package}{'local_tarball'}\n\n";
+ update_build_id($package, "$packages{$package}{'local_tarball'}\n");
}
}
if (not -f $packages{$name}{'local_tarball'}) {
if ($build_release) {
$release = $distribution .
- '.' . (split '-',$version)[0] .
- '.' . (split '-',$version)[1];
+ '.' . (split '-',$version)[0];
+ if ((split '-',$version)[1]) {
+ $release .= '.' . (split '-',$version)[1];
+ }
+ $release =~ s/-internal//g;
+ $release =~ s/-/./g;
} elsif ($build_daily) {
$version .= '-' . $starttime;
} else {
mkpath([$destdir . '/RPMS', $destdir . '/SRPMS']);
rmtree($TOPDIR);
-mkpath([$TOPDIR . '/BUILD' ,$TOPDIR . '/RPMS',$TOPDIR . '/SOURCES',$TOPDIR . '/SPECS',$TOPDIR . '/SRPMS']);
+mkpath([$TOPDIR . '/BUILD' ,$TOPDIR . '/RPMS',$TOPDIR . '/SOURCES',$TOPDIR . '/SPECS',$TOPDIR . '/SRPMS', $TOPDIR . '/BUILD_ID']);
open (BUILD_ID, "+> $destdir/BUILD_ID") or die "Can't open $destdir/BUILD_ID file: $!\n";
print BUILD_ID "$distribution-$version:\n\n";
+my %info;
+
for my $conf (<$CWD/$packages_dir/*.conf>) {
$package = basename($conf);
$package =~ s/.conf//;
next;
}
- if ($packages{$package}{'local_srpm'}) {
- if (-d $packages{$package}{'local_srpm'}) {
- if ($packages{$package}{'use_latest'}) {
- $packages{$package}{'local_srpm'} .= '/' . `grep $package "$packages{$package}{'local_srpm'}/latest.txt"`;
- chomp $packages{$package}{'local_srpm'};
+ my $mypid = fork();
+ die "Failed to fork: $!" if not defined $mypid;
+
+ $info{$package}{pid} = $mypid;
+
+ if ( not $mypid ) {
+ if ($packages{$package}{'local_srpm'}) {
+ if (-d $packages{$package}{'local_srpm'}) {
+ if ($packages{$package}{'use_latest'}) {
+ $packages{$package}{'local_srpm'} .= '/' . `grep -w ^$package-[0-9] "$packages{$package}{'local_srpm'}/latest.txt"`;
+ chomp $packages{$package}{'local_srpm'};
+ }
}
- }
- if (not -f $packages{$package}{'local_srpm'}) {
- print_red "File $packages{$package}{'local_srpm'} does not exist";
- exit 1;
- }
- print_and_log "Using local copy: $packages{$package}{'local_srpm'}";
- copy "$packages{$package}{'local_srpm'}", "$destdir/SRPMS";
- print BUILD_ID "$package:\n";
- print BUILD_ID "$packages{$package}{'local_srpm'}\n\n";
- } else {
- if ($packages{$package}{'getMethod'} =~ /git/) {
- print BUILD_ID "$package:\n";
- print BUILD_ID "$packages{$package}{'git_url'} $packages{$package}{'git_branch'}\n";
-
- if (not $packages{$package}{'local_tarball'}) {
- get_from_git($package);
+ if (not -f $packages{$package}{'local_srpm'}) {
+ print_red "File $packages{$package}{'local_srpm'} does not exist";
+ exit 1;
}
- get_srpm($package);
- } elsif ($packages{$package}{'getMethod'} =~ /tarball/) {
- if (not $packages{$package}{'local_tarball'}) {
- get_package($package);
- print BUILD_ID "$package:\n";
- print BUILD_ID "$packages{$package}{'URL'}\n\n";
- }
- get_srpm($package);
- } elsif ($packages{$package}{'getMethod'} =~ /srpm/) {
- get_package($package);
- print BUILD_ID "$package:\n";
- print BUILD_ID "$packages{$package}{'URL'}\n\n";
+ print_and_log "Using local copy: $packages{$package}{'local_srpm'}";
+ copy "$packages{$package}{'local_srpm'}", "$destdir/SRPMS";
+ update_build_id($package, "$packages{$package}{'local_srpm'}\n");
} else {
- print_red "Unsupported getMethod: $packages{$package}{'getMethod'}";
- exit 1;
+ if ($packages{$package}{'getMethod'} =~ /git/) {
+
+ if (not $packages{$package}{'local_tarball'}) {
+ get_from_git($package);
+ }
+
+ get_srpm($package);
+ } elsif ($packages{$package}{'getMethod'} =~ /tarball/) {
+ if (not $packages{$package}{'local_tarball'}) {
+ get_package($package);
+ update_build_id($package, "$packages{$package}{'URL'}\n");
+ }
+ get_srpm($package);
+ } elsif ($packages{$package}{'getMethod'} =~ /srpm/) {
+ get_package($package);
+ update_build_id($package, "$packages{$package}{'URL'}\n");
+ } else {
+ print_red "Unsupported getMethod: $packages{$package}{'getMethod'}";
+ exit 1;
+ }
+ move "$packages{$package}{'local_srpm'}", "$destdir/SRPMS";
}
- move "$packages{$package}{'local_srpm'}", "$destdir/SRPMS";
- }
- # Cleanup
- chdir $tmpdir;
- for my $file (<$tmpdir/$package*>) {
- rmtree $file;
+ # Cleanup
+ chdir $tmpdir;
+ for my $file (<$tmpdir/$package*>) {
+ rmtree $file;
+ }
+
+ exit 0;
}
+
+ print "Child launched: package=$package child=$mypid\n" if ( $verbose );
+
push (@plist, $package);
}
+my $ret = 0;
+
+for $package ( @plist ) {
+ my $res = 0;
+ my $sig = 0;
+
+ print "waiting for: package=$package child=$info{$package}{pid}\n" if ( $verbose );
+ waitpid ( $info{$package}{pid}, 0 );
+
+ $res = $? >> 8;
+ $sig = $? & 127;
+ if ($sig or $res) {
+ $ret ++;
+ print_red "Failed to build $package";
+ } else {
+ print_green "Created $package source RPM" if ( $verbose );
+ }
+}
+
+exit $ret if ( $ret );
+
+for $package ( @plist ) {
+
+ my $fname = "$TOPDIR/BUILD_ID/$package";
+ system ("cat $fname >> $destdir/BUILD_ID");
+}
+
if ($build_scripts) {
$package = 'ofed-scripts';
print BUILD_ID "$package:\n";