testbot: Allow running the scripts using a relative path.

Francois Gouget fgouget at codeweavers.com
Tue Dec 11 05:06:51 CST 2012


Just make sure to turn it into an absolute path before we use it for the Perl module include path and for the $::RootDir variable.
---
 testbot/bin/CheckForWinetestUpdate.pl |    8 +++++++-
 testbot/bin/Engine.pl                 |    8 +++++++-
 testbot/bin/Janitor.pl                |    8 +++++++-
 testbot/bin/PingEngine.pl             |    8 +++++++-
 testbot/bin/RevertVM.pl               |    8 +++++++-
 testbot/bin/WinePatchesMLSubmit.pl    |    8 +++++++-
 testbot/bin/WinePatchesWebGet.pl      |    8 +++++++-
 testbot/bin/WinePatchesWebNotify.pl   |    8 +++++++-
 testbot/bin/WineRunBuild.pl           |    8 +++++++-
 testbot/bin/WineRunReconfig.pl        |    8 +++++++-
 testbot/bin/WineRunTask.pl            |    8 +++++++-
 testbot/bin/WineSendLog.pl            |    8 +++++++-
 testbot/bin/build/Build.pl            |    8 +++++++-
 testbot/bin/build/Reconfig.pl         |    8 +++++++-
 testbot/lib/WineTestBot/Config.pm     |    8 ++++++++
 testbot/scripts/CheckWineTestBot.pl   |    8 +++++++-
 testbot/scripts/TestAgent             |    8 +++++++-
 17 files changed, 120 insertions(+), 16 deletions(-)

diff --git a/testbot/bin/CheckForWinetestUpdate.pl b/testbot/bin/CheckForWinetestUpdate.pl
index 90876f6..c776fe5 100755
--- a/testbot/bin/CheckForWinetestUpdate.pl
+++ b/testbot/bin/CheckForWinetestUpdate.pl
@@ -24,7 +24,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/Engine.pl b/testbot/bin/Engine.pl
index ff6ec26..ff1a586 100755
--- a/testbot/bin/Engine.pl
+++ b/testbot/bin/Engine.pl
@@ -22,7 +22,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/Janitor.pl b/testbot/bin/Janitor.pl
index 57aa172..0c8b77f 100755
--- a/testbot/bin/Janitor.pl
+++ b/testbot/bin/Janitor.pl
@@ -23,7 +23,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/PingEngine.pl b/testbot/bin/PingEngine.pl
index ef43807..2fb1b70 100755
--- a/testbot/bin/PingEngine.pl
+++ b/testbot/bin/PingEngine.pl
@@ -22,7 +22,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/RevertVM.pl b/testbot/bin/RevertVM.pl
index 8fbc22a..2d8bf71 100755
--- a/testbot/bin/RevertVM.pl
+++ b/testbot/bin/RevertVM.pl
@@ -25,7 +25,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/WinePatchesMLSubmit.pl b/testbot/bin/WinePatchesMLSubmit.pl
index 7ee4ecf..ffc65cb 100755
--- a/testbot/bin/WinePatchesMLSubmit.pl
+++ b/testbot/bin/WinePatchesMLSubmit.pl
@@ -24,7 +24,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/WinePatchesWebGet.pl b/testbot/bin/WinePatchesWebGet.pl
index ed84a50..85f7986 100755
--- a/testbot/bin/WinePatchesWebGet.pl
+++ b/testbot/bin/WinePatchesWebGet.pl
@@ -23,7 +23,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/WinePatchesWebNotify.pl b/testbot/bin/WinePatchesWebNotify.pl
index 6940d76..0fd0318 100755
--- a/testbot/bin/WinePatchesWebNotify.pl
+++ b/testbot/bin/WinePatchesWebNotify.pl
@@ -23,7 +23,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/WineRunBuild.pl b/testbot/bin/WineRunBuild.pl
index 40c46e4..9fd23a7 100755
--- a/testbot/bin/WineRunBuild.pl
+++ b/testbot/bin/WineRunBuild.pl
@@ -23,7 +23,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/WineRunReconfig.pl b/testbot/bin/WineRunReconfig.pl
index 67bb07b..47ac72e 100755
--- a/testbot/bin/WineRunReconfig.pl
+++ b/testbot/bin/WineRunReconfig.pl
@@ -23,7 +23,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/WineRunTask.pl b/testbot/bin/WineRunTask.pl
index cf97e9c..177088d 100755
--- a/testbot/bin/WineRunTask.pl
+++ b/testbot/bin/WineRunTask.pl
@@ -22,7 +22,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/WineSendLog.pl b/testbot/bin/WineSendLog.pl
index b039e2e..04e9009 100755
--- a/testbot/bin/WineSendLog.pl
+++ b/testbot/bin/WineSendLog.pl
@@ -23,7 +23,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/build/Build.pl b/testbot/bin/build/Build.pl
index c2e53e6..8ecbd09 100755
--- a/testbot/bin/build/Build.pl
+++ b/testbot/bin/build/Build.pl
@@ -24,7 +24,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/bin/build/Reconfig.pl b/testbot/bin/build/Reconfig.pl
index 89296bc..cc8e76e 100755
--- a/testbot/bin/build/Reconfig.pl
+++ b/testbot/bin/build/Reconfig.pl
@@ -24,7 +24,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/lib/WineTestBot/Config.pm b/testbot/lib/WineTestBot/Config.pm
index 71cf1c6..9a16fe6 100644
--- a/testbot/lib/WineTestBot/Config.pm
+++ b/testbot/lib/WineTestBot/Config.pm
@@ -48,6 +48,14 @@ require Exporter;
              $JobPurgeDays $JobArchiveDays $WebHostName);
 @EXPORT_OK = qw($DbDataSource $DbUsername $DbPassword);
 
+if ($::RootDir !~ m=^/=)
+{
+    require File::Basename;
+    my $name0 = File::Basename::basename($0);
+    print STDERR "$name0:error: \$::RootDir must be set to an absolute path\n";
+    exit 1;
+}
+
 $LogDir = "$::RootDir/var";
 $DataDir = "$::RootDir/var";
 $BinDir = "$::RootDir/bin";
diff --git a/testbot/scripts/CheckWineTestBot.pl b/testbot/scripts/CheckWineTestBot.pl
index b749eff..6415dc3 100755
--- a/testbot/scripts/CheckWineTestBot.pl
+++ b/testbot/scripts/CheckWineTestBot.pl
@@ -22,7 +22,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
diff --git a/testbot/scripts/TestAgent b/testbot/scripts/TestAgent
index db31a3d..b861ba2 100755
--- a/testbot/scripts/TestAgent
+++ b/testbot/scripts/TestAgent
@@ -23,7 +23,13 @@ use strict;
 
 sub BEGIN
 {
-  if ($0 =~ m=^(.*)/[^/]+/[^/]+$=)
+  if ($0 !~ m=^/=)
+  {
+    # Turn $0 into an absolute path so it can safely be used in @INC
+    require Cwd;
+    $0 = Cwd::cwd() . "/$0";
+  }
+  if ($0 =~ m=^(/.*)/[^/]+/[^/]+$=)
   {
     $::RootDir = $1;
     unshift @INC, "$::RootDir/lib";
-- 
1.7.10.4




More information about the wine-patches mailing list