#2085: Eliminate reliance on any 'tempdir' based on Perl 5's setting
-----------------------+----------------------------------------------------
Reporter: jkeenan | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: configure | Version: 3.2.0
Severity: medium | Keywords:
Lang: | Patch:
Platform: |
-----------------------+----------------------------------------------------
This ticket addresses an issue which came to dominate discussion in TT
#1544 and supersedes that ticket.
As noted by Benabik and Coke 12 months ago, the value for `tempdir` in
''config_lib.pir'' and ''lib/Parrot/Config/Generated.pm'' can be
dramatically different on different OSes and on different versions on the
same OS. For example, on my older Mac OS X 10.4.11, the results are
straightforward and very Unix-ish:
{{{
$ grep -n tempdir config_lib.pir lib/Parrot/Config/Generated.pm
config_lib.pir:272: set $P0["tempdir"], "/tmp"
lib/Parrot/Config/Generated.pm:371: 'tempdir' => '/tmp',
}}}
But on later versions of Mac OS X, it can appear as something much more,
errrm, clever:
{{{
set P0["tempdir"], "/var/folders/Bh/BhrBssnnHYqX6SDI8N3S1U+++TM/-Tmp-"
}}}
As Coke put it in TT #1544, it "like it's intended to be a one-time use
tempdir, not something that we can save and reuse elsewhere." Benabik
speculated that "I'm guessing ''launchd'' creates a new per-user temp dir
at login. The problem here is that we're caching `TMPDIR` and there's no
guarantee that it will be stable.''
In each case, `tempdir` is simply picked up from Perl 5 early in the
configuration process:
{{{
$ grep -n tempdir config/init/defaults.pm
255: tempdir => File::Spec->tmpdir,
}}}
No magic there, but it suggests that it is the '''environment''' in which
Perl 5 is built on different OS versions that controls what Perl 5 gets
and what, in turn, Parrot gets.
Two courses of action are conceivable: One is to find some clever,
Parrot-specific way of populating `tempdir`. The other is simply to
extirpate any instance where `tempdir` is used in our build or test
systems.
A bit of data on the latter option: Here are the locations in our source
code where I can see something what the problem is:
{{{
$ find . -type f | xargs grep -n 'config.*tempdir'
./runtime/parrot/library/ProfTest/PIRProfile.nqp:66:
my $tmp_pir := %config<tempdir> ~ %config<slash> ~ 'test.pir';
./runtime/parrot/library/ProfTest/PIRProfile.nqp:67:
my $tmp_pprof := %config<tempdir> ~ %config<slash> ~ 'test.pprof';
}}}
Another datum: We have functions `tempdir()` and `tmpdir()` in ''
./runtime/parrot/library/osutils.pir''. Would they be of any use?
Thank you very much.
kid51
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/2085>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets