pkgsrc/pkgtools/tinderbox-dragonfly/patches/patch-as
marino 51a37cca54 pkgtools/tinderbox-dragonfly: Update to version 3.4.1
Besides syncing with FreeBSD Tinderbox 3.4.1, the following updates were
included:
1) Creating bulkbuild handling script
2) Created postPortBuild hook script to support bulk builds
3) Fixed fake "wrong arch" error due to funky licenses
4) Deviated "mark_failed()" from Tinderbox-FreeBSD to fire postPortBuild
   hook for ports marked failed due to failed dependency
5) Added tc_command.pl patch that should have gone in previous update to
   support pkgsrc scan bulk script
2011-11-20 16:20:24 +00:00

232 lines
10 KiB
Text

$NetBSD: patch-as,v 1.3 2011/11/20 16:20:24 marino Exp $
--- ../FreeBSD/lib/tc_command.pl 2011-11-20 13:05:28.355724000 +0000
+++ lib/tc_command.pl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!/usr/pkg/bin/perl
#-
# Copyright (c) 2004-2008 FreeBSD GNOME Team <freebsd-gnome@FreeBSD.org>
# All rights reserved.
@@ -188,15 +188,15 @@ my $ds = new Tinderbox::TinderboxDS();
help =>
"Add a jail to the datastore (do NOT call this directly; use createJail instead)",
usage =>
- "-j <jail name> -u CSUP|CVSUP|LFTP|SVN|USER|NONE -t <jail tag> [-d <jail description>] [-m <src mount source>] [-a <arch>]",
+ "-j <jail name> -u GIT|RELEASE|SNAPSHOT|USER|NONE -t <jail tag> [-d <jail description>] [-m <src mount source>] [-a <arch>]",
optstr => 'm:j:t:u:d:a:',
},
"addPortsTree" => {
func => \&addPortsTree,
help => "Add a portstree to the datastore",
usage =>
- "-p <portstree name> -u CSUP|CVSUP|SVN|USER|NONE [-d <portstree description>] [-m <ports mount source>] [-w <CVSweb URL>]",
- optstr => 'm:p:u:d:w:',
+ "-p <portstree name> [-t <cvs tag>] [-d <portstree description>] [-m <ports mount source>] [-w <CVSweb URL>]",
+ optstr => 'm:p:u:t:d:w:',
},
"addPort" => {
help => "Add a port to the datastore",
@@ -240,9 +240,16 @@ my $ds = new Tinderbox::TinderboxDS();
func => \&getDependenciesForPort,
help => "Get stored dependencies for a given port and build",
usage =>
- "-b <build name> -d <port directory> [-t EXTRACT_DEPENDS|PATCH_DEPENDS|FETCH_DEPENDS|BUILD_DEPENDS|LIB_DEPENDS|RUN_DEPENDS|TEST_DEPENDS]",
+ "-b <build name> -d <port directory> [-t EXTRACT_DEPENDS|PATCH_DEPENDS|FETCH_DEPENDS|BUILD_DEPENDS|LIB_DEPENDS|RUN_DEPENDS|TEST_DEPENDS|DEPENDS]",
optstr => 'b:d:t:',
},
+ "getDependencyCascades" => {
+ func => \&getDependencyCascades,
+ help => "Get unique dependencies of port's dependencies, recursively",
+ usage =>
+ "-b <build name> -d <port directory>",
+ optstr => 'b:d:',
+ },
"listHooks" => {
func => \&listHooks,
help =>
@@ -560,15 +567,15 @@ my $ds = new Tinderbox::TinderboxDS();
"createJail" => {
help => "Create a new jail",
usage =>
- "-j <jailname> -u CSUP|CVSUP|LFTP|SVN|USER|NONE [-t <tag>] [-d <description>] [-C] [-P <protocol>] [-H <updatehost>] [-D <updatehostdirectory>] [-m <mountsrc>] [-I] [-a <arch>]",
- optstr => 'j:t:d:CP:H:D:m:u:Ia:',
+ "-j <jailname> -u GIT|RELEASE|SNAPSHOT|USER|NONE -t <tag> [-d <description>] [-H <updatehost>] [-m <mountsrc>] [-I]",
+ optstr => 'j:t:d:H:m:u:I:',
},
"createPortsTree" => {
help => "Create a new portstree",
usage =>
- "-p <portstreename> -u CSUP|CVSUP|SVN|USER|NONE [-d <description>] [-C] [-P <protocol>] [-H <updatehost>] [-D <updatehostdirectory>] [-m <mountsrc>] [-w <cvsweburl>] [-I]",
- optstr => 'p:d:CP:H:Im:u:w:',
+ "-p <portstreename> [-t <cvs tag>] [-d <description>] [-C] [-H <updatehost>] [-m <mountsrc>] [-w <cvsweburl>] [-I]",
+ optstr => 'p:t:d:CH:Im:u:w:',
},
"createBuild" => {
@@ -592,21 +599,21 @@ my $ds = new Tinderbox::TinderboxDS();
"resetBuild" => {
help => "Cleanup and reset a Build environment",
- usage => "-b <buildname> [-n]",
- optstr => 'b:n',
+ usage => "-b <buildname>",
+ optstr => 'b:',
},
"tinderbuild" => {
help => "Generate packages from an installed Build",
usage =>
- "-b <build name> [-init] [-cleanpackages] [-updateports] [-skipmake] [-noclean] [-noduds] [-plistcheck] [-nullfs] [-cleandistfiles] [-fetch-original] [-onceonly] [portdir/portname [...]]",
+ "-b <build name> [-init] [-cleanpackages] [-updateports] [-skipmake] [-noclean] [-noduds] [-plistcheck] [-cleandistfiles] [-fetch-original] [-onceonly] [portdir/portname [...]]",
optstr => 'b:',
},
"updatePortsTree" => {
help => "Update an existing ports tree",
usage => "-p <portstreename>",
- optstr => 'p',
+ optstr => 'p:',
},
"copyBuild" => {
@@ -1489,8 +1496,18 @@ sub addPortsTree {
sub addPortToOneBuild {
my $build = $ds->getBuildByName($opts->{'b'});
my $makecache =
- new Tinderbox::MakeCache($ENV{'PORTSDIR'}, $ENV{'PKGSUFFIX'});
+ new Tinderbox::MakeCache($ENV{'PORTSDIR'}, $ENV{'OPTNFILE'});
my @bports = ();
+ my %oper_hash = (
+ EXTRACT_DEPENDS => 'ExtractDepends',
+ PATCH_DEPENDS => 'PatchDepends',
+ FETCH_DEPENDS => 'FetchDepends',
+ BUILD_DEPENDS => 'BuildDepends',
+ LIB_DEPENDS => 'LibDepends',
+ RUN_DEPENDS => 'RunDepends',
+ TEST_DEPENDS => 'TestDepends',
+ DEPENDS => 'Buildlink3Depends',
+ );
if (!$opts->{'d'}) {
foreach my $port ($ds->getPortsForBuild($build)) {
@@ -1502,7 +1519,25 @@ sub addPortToOneBuild {
if ($opts->{'R'}) {
foreach my $pdir (@bports) {
- addPorts($pdir, $build, $makecache, undef);
+ my $pCls = addPorts($pdir, $build, $makecache, undef);
+ $ds->clearDependenciesForPort($pCls, $build, undef);
+ foreach my $deptype (keys %oper_hash) {
+ my $oper = $oper_hash{$deptype};
+ foreach my $dn ($makecache->$oper($pdir)) {
+ my $dep = $ds->getPortByDirectory($dn);
+ next if (!defined($dep));
+ if (
+ !$ds->addDependencyForPort(
+ $pCls, $build,
+ $deptype, $dep
+ )
+ )
+ {
+ warn "WARN: Failed to add $deptype entry for $pdir: "
+ . $ds->getError() . "\n";
+ }
+ }
+ }
}
} else {
my @deps = @bports;
@@ -1516,15 +1551,6 @@ sub addPortToOneBuild {
}
foreach my $port (keys %seen) {
my $pCls = $seen{$port};
- my %oper_hash = (
- EXTRACT_DEPENDS => 'ExtractDepends',
- PATCH_DEPENDS => 'PatchDepends',
- FETCH_DEPENDS => 'FetchDepends',
- BUILD_DEPENDS => 'BuildDepends',
- LIB_DEPENDS => 'LibDepends',
- RUN_DEPENDS => 'RunDepends',
- TEST_DEPENDS => 'TestDepends',
- );
$ds->clearDependenciesForPort($pCls, $build, undef);
@@ -1548,7 +1574,6 @@ sub addPortToOneBuild {
}
}
}
-
}
}
@@ -1600,7 +1625,7 @@ sub addBuildPortsQueueEntry {
$ds->addBuildPortsQueueEntry($build, $portdir, $priority,
$user_id);
if (!$rc) {
- warn( "Failed to add port "
+ warn( "Failed to add port "
. $portdir
. " to the datastore: "
. $ds->getError()
@@ -1720,6 +1745,7 @@ sub getDependenciesForPort {
LIB_DEPENDS => 4,
RUN_DEPENDS => 5,
TEST_DEPEND => 6,
+ DEPENDS => 7,
);
if (!$opts->{'b'} || !$opts->{'d'}) {
@@ -1773,6 +1799,50 @@ sub getDependenciesForPort {
);
}
}
+
+sub getDependencyCascades {
+ if (!$opts->{'b'} || !$opts->{'d'}) {
+ usage("getDependencyCascades");
+ }
+
+ my $port = $ds->getPortByDirectory($opts->{'d'});
+ if (!defined($port)) {
+ cleanup($ds, 1,
+ "Port, "
+ . $opts->{'d'}
+ . " is not in the datastore.\n");
+ }
+
+ if (!$ds->isValidBuild($opts->{'b'})) {
+ cleanup($ds, 1, "Unknown build, " . $opts->{'b'} . "\n");
+ }
+
+ my $build = $ds->getBuildByName($opts->{'b'});
+
+ if (!$ds->isPortForBuild($port, $build)) {
+ cleanup($ds, 1,
+ "Port, "
+ . $opts->{'d'}
+ . " is not a valid port for build, "
+ . $opts->{'b'}
+ . "\n");
+ }
+
+ my @deps = $ds->getDependencyCascades($port, $build);
+
+ if (@deps) {
+ map { print $_->getDirectory() . "\n" } @deps;
+ } elsif (defined($ds->getError())) {
+ cleanup($ds, 1,
+ "Failed to get cascading dependencies for this port from the datastore: "
+ . $ds->getError()
+ . "\n");
+ } else {
+ cleanup($ds, 0,
+ "There are no cascading dependencies for this port in the datastore.\n"
+ );
+ }
+}
sub listBuildPortsQueue {
my $build_filter;