id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc	lang	patch	platform
2085	Eliminate reliance during build on 'tempdir' in config settings	jkeenan		"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"	bug	new	normal		configure	3.2.0	medium						
