1 |
On Sat, Mar 18, 2017 at 12:57 PM, Zac Medico <zmedico@g.o> wrote: |
2 |
> On Sat, Mar 18, 2017 at 12:04 PM, Michał Górny <mgorny@g.o> wrote: |
3 |
>> Ensure that DISTDIR is always defined to the path to the shadow |
4 |
>> directory. This ensures that PMS rules for consistent value are |
5 |
>> followed, and that no global scope calls should be able to access |
6 |
>> the distfile directory. This also ensures that global-scope assignments |
7 |
>> (e.g. in PATCHES) do not work around the shadow directory. |
8 |
>> --- |
9 |
>> pym/portage/package/ebuild/doebuild.py | 9 +++++---- |
10 |
>> pym/portage/package/ebuild/prepare_build_dirs.py | 6 ++---- |
11 |
>> 2 files changed, 7 insertions(+), 8 deletions(-) |
12 |
>> |
13 |
>> diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py |
14 |
>> index 15e4abb48..8efc08334 100644 |
15 |
>> --- a/pym/portage/package/ebuild/doebuild.py |
16 |
>> +++ b/pym/portage/package/ebuild/doebuild.py |
17 |
>> @@ -348,7 +348,8 @@ def doebuild_environment(myebuild, mydo, myroot=None, settings=None, |
18 |
>> |
19 |
>> mysettings["PORTDIR"] = os.path.realpath(mysettings["PORTDIR"]) |
20 |
>> mysettings.pop("PORTDIR_OVERLAY", None) |
21 |
>> - mysettings["DISTDIR"] = os.path.realpath(mysettings["DISTDIR"]) |
22 |
>> + if "PORTAGE_ACTUAL_DISTDIR" not in mysettings: |
23 |
>> + mysettings["PORTAGE_ACTUAL_DISTDIR"] = os.path.realpath(mysettings["DISTDIR"]) |
24 |
>> mysettings["RPMDIR"] = os.path.realpath(mysettings["RPMDIR"]) |
25 |
>> |
26 |
>> mysettings["ECLASSDIR"] = mysettings["PORTDIR"]+"/eclass" |
27 |
>> @@ -390,6 +391,7 @@ def doebuild_environment(myebuild, mydo, myroot=None, settings=None, |
28 |
>> mysettings["WORKDIR"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "work") |
29 |
>> mysettings["D"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "image") + os.sep |
30 |
>> mysettings["T"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "temp") |
31 |
>> + mysettings["DISTDIR"] = os.path.join(settings["PORTAGE_BUILDDIR"], "distdir") |
32 |
>> mysettings["FILESDIR"] = os.path.join(settings["PORTAGE_BUILDDIR"], "files") |
33 |
> |
34 |
> The EbuildFetcher already_fetched and _prefetch_size_ok methods use |
35 |
> DISTDIR after doebuild_environment has been called, so they need to be |
36 |
> updated to use PORTAGE_ACTUAL_DISTDIR. |
37 |
|
38 |
Also, this code in doebuild uses DISTDIR before _prepare_fake_distdir |
39 |
gets called called: |
40 |
|
41 |
for x in alist: |
42 |
writemsg_stdout(">>> Checking %s's mtime...\n" % x) |
43 |
try: |
44 |
x_st = os.stat(os.path.join( |
45 |
mysettings["DISTDIR"], x)) |
46 |
|
47 |
Also, bin/ebuild calls doebuild_environment before doebuild, which |
48 |
means that this doebuild code also needs to use PORTAGE_ACTUAL_DISTDIR |
49 |
if it's in mysettings: |
50 |
|
51 |
mf = repo_config.load_manifest(pkgdir, mysettings["DISTDIR"]) |
52 |
-- |
53 |
Thanks, |
54 |
Zac |