close (MY_BUILD_ID);
}
-sub get_from_git
+sub git_clone
{
my $name = shift @_;
my $ref;
- my $targz = 'tar.gz';
my $cmd = "$GIT clone -s --bare";
my $remote_commit = `$GIT ls-remote --heads $packages{$name}{'git_url'} $packages{$name}{'git_branch'}`;
chomp $remote_commit;
my $remote_commit_id = (split ' ', $remote_commit)[0];
chomp $remote_commit_id;
+
print "get_from_git: name $name\n" if ($verbose);
if ($packages{$name}{'git_reference_dir'} and -d $packages{$name}{'git_reference_dir'}) {
$cmd .= " --reference $packages{$name}{'git_reference_dir'}";
ex "perl -ni -e \"s/(bare = ).*/\${1}false/;print\" .git/config";
- # Set ref
- # TBD: add support for checkout from tag and from commit
- $ref = $packages{$name}{'git_branch'};
+ ex "$GIT checkout $packages{$name}{'git_branch'}";
+
+ $packages{$name}{'release'} = '';
+
+ if ($build_release) {
+ my $rel = 0;
+ if ((split '-',$version)[1]) {
+ $rel = (split '-',$version)[1];
+ }
+ $packages{$name}{'release'} = $rel . '.' if ($rel);
+ }
+
+ $packages{$name}{'release'} .= $build_version;
+ if (not $build_release) {
+ $packages{$name}{'release'} .= '.' . $starttime;
+ }
+ $packages{$name}{'release'} =~ s/-/./g;
+ $packages{$name}{'release'} .= '.g' . substr($remote_commit_id, 0, 7);
+ chomp ($packages{$name}{'release'});
+
if ($name =~ /compat-rdma/) {
- ex "$GIT checkout $ref";
update_build_id($name, "$packages{$name}{'git_url'} $packages{$name}{'git_branch'}\n" . `git log -1 | head -1`);
# Get linux sub-tree
update_build_id($name, "compat:\n$packages{$name}{'compat_git_url'} $packages{$name}{'compat_git_branch'}\n" . `git log -1 | head -1`);
chdir $tmpdir . '/' . $name;
- my $ENV = "GIT_TREE=$tmpdir" . '/' . "linux";
- $ENV .= " GIT_COMPAT_TREE=$tmpdir" . '/' . "compat";
- ex "$ENV ./scripts/admin_rdma.sh -n -p";
-
- if (-f "compat/autogen.sh") {
- ex "cd compat && ./autogen.sh && cd -";
- }
my $compat_remote_commit = `$GIT ls-remote --heads $packages{$name}{'compat_git_url'} $packages{$name}{'compat_git_branch'}`;
chomp $compat_remote_commit;
$packages{$name}{'release'} =~ s/-/./g;
$packages{$name}{'release'} .= '.g' . substr($remote_commit_id, 0, 7);
chomp ($packages{$name}{'release'});
-
- open (IN, "+< compat-rdma.spec");
- my @file = <IN>;
- seek IN,0,0;
- foreach my $line (@file) {
- $line =~ s/\@VERSION@/$packages{$name}{'version'}/g;
- $line =~ s/\@RELEASE@/$packages{$name}{'release'}/g;
- print IN $line;
- }
- close IN;
- ex "/bin/rm -f ofed_scripts/ofa_kernel.spec";
- $targz = 'tgz';
} else {
- ex "$GIT checkout $ref";
update_build_id($name, "$packages{$name}{'git_url'} $packages{$name}{'git_branch'}\n" . `git log -1 | head -1`);
$packages{$name}{'release'} = '';
$packages{$name}{'release'} =~ s/-/./g;
$packages{$name}{'release'} .= '.g' . substr($remote_commit_id, 0, 7);
chomp ($packages{$name}{'release'});
+ }
+}
+
+sub get_srpm_rh_suse
+{
+ my $name = shift @_;
+ my $ref;
+ my $targz = 'tgz';
+
+ git_clone($name);
+
+ chdir $tmpdir;
+
+ if (not $packages{$name}{'version'}) {
+ $packages{$name}{'version'} = `find $name -name $name.spec | head -1 | xargs grep "^Version:" | awk '{print \$NF}'`;
+ chomp $packages{$name}{'version'};
+ }
+
+ if (not $packages{$name}{'version'}) {
+ warn("Failed to get version for $name\n");
+ exit 1;
+ }
+
+ # RHEL
+ rmtree $name-$packages{$name}{'version'};
+ ex "cp -a $name $name-$packages{$name}{'version'}";
+
+ if (not -e "$name-$packages{$name}{'version'}/$name.spec") {
+ if (-e "$name-$packages{$name}{'version'}/redhat/$name.spec") {
+ system("/bin/mv $name-$packages{$name}{'version'}/redhat/$name.spec $name-$packages{$name}{'version'}/$name.spec");
+ }
+ if (-d "$name-$packages{$name}{'version'}/suse") {
+ rmtree "$name-$packages{$name}{'version'}/suse";
+ }
+ }
+
+ ex "tar czvf $name-$packages{$name}{'version'}.$targz --exclude=.git $name-$packages{$name}{'version'}";
+ sleep 1;
+ $packages{$name}{'local_tarball'} = $tmpdir . '/' . "$name-$packages{$name}{'version'}.$targz";
+ get_srpm($name);
+ mkpath "$destdir/SRPMS/RH";
+ move "$packages{$name}{'local_srpm'}", "$destdir/SRPMS/RH";
+ rmtree (["$name-$packages{$name}{'version'}", $tmpdir . '/' . "$name-$packages{$name}{'version'}.$targz"]);
+
+ # SUSE
+ chdir $tmpdir;
+ ex "cp -a $name $name-$packages{$name}{'version'}";
+
+ if (not -e "$name-$packages{$name}{'version'}/$name.spec") {
+ if (-e "$name-$packages{$name}{'version'}/suse/$name.spec") {
+ # W/A for the bug in the spec file
+ system("grep -v baselibs.conf $name-$packages{$name}{'version'}/suse/$name.spec > $name-$packages{$name}{'version'}/$name.spec");
+ system("/bin/rm -f $name-$packages{$name}{'version'}/suse/$name.spec");
+ system("/bin/rm -f $name-$packages{$name}{'version'}/redhat/$name.spec");
+ }
+ }
+
+ if ($name =~ /rdma-core/) {
+ $targz = 'tar.gz';
+ }
+
+ ex "tar czvf $name-$packages{$name}{'version'}.$targz --exclude=.git $name-$packages{$name}{'version'}";
+ sleep 1;
+ $packages{$name}{'local_tarball'} = $tmpdir . '/' . "$name-$packages{$name}{'version'}.$targz";
+ get_srpm($name);
+ rmtree (["$name", "$name-$packages{$name}{'version'}", $tmpdir . '/' . "$name-$packages{$name}{'version'}.$targz"]);
+ mkpath "$destdir/SRPMS/SUSE";
+ move "$packages{$name}{'local_srpm'}", "$destdir/SRPMS/SUSE";
+}
+
+sub get_from_git
+{
+ my $name = shift @_;
+ my $ref;
+ my $targz = 'tar.gz';
+
+ git_clone($name);
+
+ if ($name =~ /compat-rdma/) {
+ my $ENV = "GIT_TREE=$tmpdir" . '/' . "linux";
+ $ENV .= " GIT_COMPAT_TREE=$tmpdir" . '/' . "compat";
+ ex "$ENV ./scripts/admin_rdma.sh -n -p";
+
+ if (-f "compat/autogen.sh") {
+ ex "cd compat && ./autogen.sh && cd -";
+ }
+ open (IN, "+< compat-rdma.spec");
+ my @file = <IN>;
+ seek IN,0,0;
+ foreach my $line (@file) {
+ $line =~ s/\@VERSION@/$packages{$name}{'version'}/g;
+ $line =~ s/\@RELEASE@/$packages{$name}{'release'}/g;
+ print IN $line;
+ }
+ close IN;
+ ex "/bin/rm -f ofed_scripts/ofa_kernel.spec";
+ $targz = 'tgz';
+ } else {
# ofed-scripts and ofed-docs
if ($name =~ /ofed/) {
open (IN, "$destdir/BUILD_ID") or die "Can't open $destdir/BUILD_ID file: $!\n";
seek IN,0,0;
my @file = <IN>;
- my $list_of_packages = 'compat-rdma';
+ my $list_of_packages = 'compat-rdma|libibverbs|rdma|libmlx|srp_daemon|libibcm|libibumad|ibacm|rsocket|iwpmd';
open (OUT, "> ofed_info") or die "Can't open ofed_info file: $!\n";
print OUT "#!/bin/bash\n";
my $firstline = <@file>;
rmtree $name-$packages{$name}{'version'};
move "$name", "$name-$packages{$name}{'version'}";
- if ($name =~ /rdma-core/) {
- $targz = 'tgz';
- }
-
- if (-e "$name-$packages{$package}{'version'}/redhat/rdma-core.spec") {
- system("/bin/rm -f $name-$packages{$package}{'version'}/redhat/rdma-core.spec");
- }
-
ex "tar czvf $name-$packages{$name}{'version'}.$targz --exclude=.git $name-$packages{$name}{'version'}";
sleep 1;
rmtree (["$name", "$name-$packages{$name}{'version'}"]);
if ($packages{$name}{'use_latest'}) {
$packages{$name}{'local_tarball'} .= '/' . `grep -w ^$name-[0-9] "$packages{$name}{'local_tarball'}/latest.txt"`;
chomp $packages{$name}{'local_tarball'};
- update_build_id($package, "$packages{$package}{'local_tarball'}\n");
+ update_build_id($name, "$packages{$name}{'local_tarball'}\n");
}
}
if (not -f $packages{$name}{'local_tarball'}) {
update_build_id($package, "$packages{$package}{'local_srpm'}\n");
} else {
if ($packages{$package}{'getMethod'} =~ /git/) {
+ if ($package =~ /rdma-core/) {
+ get_srpm_rh_suse($package)
+ } else {
+ if (not $packages{$package}{'local_tarball'}) {
+ get_from_git($package);
+ }
- if (not $packages{$package}{'local_tarball'}) {
- get_from_git($package);
+ get_srpm($package);
}
-
- get_srpm($package);
} elsif ($packages{$package}{'getMethod'} =~ /tarball/) {
if (not $packages{$package}{'local_tarball'}) {
get_package($package);
print_red "Unsupported getMethod: $packages{$package}{'getMethod'}";
exit 1;
}
- move "$packages{$package}{'local_srpm'}", "$destdir/SRPMS";
- # ex "rpm -ihv $force_debian --define \"_topdir $destdir\" $packages{$package}{'local_srpm'}";
- # if ($package eq "compat-dapl") {
- # ex "mv $destdir/SPECS/dapl.spec $destdir/SPECS/compat-dapl.spec";
- # }
+
+ if ($package !~ /rdma-core/) {
+ move "$packages{$package}{'local_srpm'}", "$destdir/SRPMS";
+ }
}
# Cleanup
print BUILD_ID "$packages{$package}{'git_url'} $packages{$package}{'git_branch'}\n";
get_from_git($package);
get_srpm($package);
- push (@plist, $package);
move "$packages{$package}{'local_srpm'}", "$destdir/SRPMS";
close BUILD_ID;
}