From: Ian Jackson Date: Tue, 25 Aug 2009 16:02:23 +0000 (+0100) Subject: Calculate sourcebasedir and datadir each time X-Git-Tag: 3.4~107 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.web-live.git;a=commitdiff_plain;h=376058867c0d8cce6124ca758bab08b54bf59b94 Calculate sourcebasedir and datadir each time --- diff --git a/yarrg/CommodsWeb.pm b/yarrg/CommodsWeb.pm index d5c7700..84ea710 100644 --- a/yarrg/CommodsWeb.pm +++ b/yarrg/CommodsWeb.pm @@ -43,15 +43,12 @@ use JSON; use Commods; use CommodsDatabase; -our $self_url; -our $base_url; - BEGIN { use Exporter (); our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); $VERSION = 1.00; @ISA = qw(Exporter); - @EXPORT = qw(&dbw_connect &ocean_list $sourcebasedir + @EXPORT = qw(&dbw_connect &ocean_list &sourcebasedir &to_json_shim &to_json_protecttags &set_ctype_utf8 &prettyprint_age &meta_prettyprint_age); @@ -60,24 +57,31 @@ BEGIN { @EXPORT_OK = qw(); } -our $datadir='.'; -our $sourcebasedir; - -for my $dir (@INC) { - if ($dir =~ m/\.perl-lib$/) { - $sourcebasedir= "$dir/.."; - if (stat "$dir/DATA") { - $datadir= "$dir/DATA"; - } elsif ($!==&ENOENT) { - $datadir= "$dir"; - } else { - die "stat $dir/DATA $!"; +sub sourcebasedir () { + my $dir; + + for my $dir (@INC) { + if ($dir =~ m/\.perl-lib$/) { + $dir= "$dir/.."; + last; } - last; } + defined $dir or + die "no source base dir in @INC"; + return $dir; +} + +my datadir () { + my $dir= sourcebasedir(); + if (stat "$dir/DATA") { + return "$dir/DATA"; + } elsif ($!==&ENOENT) { + return "$dir"; + } else { + die "stat $dir/DATA $!"; + } + return '.'; } -defined $sourcebasedir or - die "no source base dir in @INC"; my @ocean_list; @@ -101,7 +105,7 @@ sub dbw_connect ($) { my ($ocean) = @_; die "unknown ocean $ocean ?" unless grep { $_ eq $ocean } ocean_list(); - return dbr_connect($datadir, $ocean); + return dbr_connect(datadir(), $ocean); } sub to_json_shim ($) { diff --git a/yarrg/web/source.tar.gz b/yarrg/web/source.tar.gz index 13cd22f..1d92ad8 100755 --- a/yarrg/web/source.tar.gz +++ b/yarrg/web/source.tar.gz @@ -42,7 +42,7 @@ use CommodsWeb; $r->content_type('application/octet-stream'); $m->flush_buffer(); -$ENV{'YPPSC_YARRG_SRCBASE'}= $sourcebasedir; +$ENV{'YPPSC_YARRG_SRCBASE'}= sourcebasedir(); my $pipe= new IO::Pipe or die $!; my $pid= fork(); defined $pid or die $!; if (!$pid) {