From fd309031cea3bab8d024737375501f2df9c3c2bf Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 18 Sep 2010 02:28:55 -0700 Subject: Bug #337826 - Fix spawn_nofetch() to create the private PORTAGE_TMPDIR before calling doebuild_environment(). --- pym/portage/package/ebuild/_spawn_nofetch.py | 29 +++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/pym/portage/package/ebuild/_spawn_nofetch.py b/pym/portage/package/ebuild/_spawn_nofetch.py index b68c94a54..175d88bd1 100644 --- a/pym/portage/package/ebuild/_spawn_nofetch.py +++ b/pym/portage/package/ebuild/_spawn_nofetch.py @@ -45,19 +45,9 @@ def spawn_nofetch(portdb, ebuild_path, settings=None): if 'PORTAGE_PARALLEL_FETCHONLY' in settings: return - doebuild_environment(ebuild_path, 'nofetch', - settings=settings, db=portdb) - restrict = settings['PORTAGE_RESTRICT'].split() - defined_phases = settings['DEFINED_PHASES'].split() - if not defined_phases: - # When DEFINED_PHASES is undefined, assume all - # phases are defined. - defined_phases = EBUILD_PHASES - - if 'fetch' not in restrict and \ - 'nofetch' not in defined_phases: - return - + # We must create our private PORTAGE_TMPDIR before calling + # doebuild_environment(), since lots of variables such + # as PORTAGE_BUILDDIR refer to paths inside PORTAGE_TMPDIR. portage_tmpdir = settings.get('PORTAGE_TMPDIR') if not portage_tmpdir or not os.access(portage_tmpdir, os.W_OK): portage_tmpdir = None @@ -66,6 +56,19 @@ def spawn_nofetch(portdb, ebuild_path, settings=None): settings.backup_changes('PORTAGE_TMPDIR') try: + doebuild_environment(ebuild_path, 'nofetch', + settings=settings, db=portdb) + restrict = settings['PORTAGE_RESTRICT'].split() + defined_phases = settings['DEFINED_PHASES'].split() + if not defined_phases: + # When DEFINED_PHASES is undefined, assume all + # phases are defined. + defined_phases = EBUILD_PHASES + + if 'fetch' not in restrict and \ + 'nofetch' not in defined_phases: + return + prepare_build_dirs(settings=settings) ebuild_phase = EbuildPhase(background=False, phase='nofetch', scheduler=PollScheduler().sched_iface, -- cgit v1.2.3-1-g7c22