<div dir="ltr">Can you remind me why pyc compilation on post-install has be ruled out ?<div><br></div><div>As I see it, there a not a ton of possibilies, either:</div><div><br></div><div>  1. we rebuild pyc on postinstall of module packages and interpreter package, to be sure that a pyc always exists whatever the module and the interpreter,</div>


<div> </div><div>  2. we ship the pyc in the CSWpy3- packages and we rebuild every python package when we deliver a new version of the python interpreter so that it includes </div><div><br></div><div>
  3. we only care about one specific version of python which we consider our default. Every CSWpy3- package must provide a pyc for this interpreter. When we release a new python interpreter, every package can begin to include the pyc when they are rebuilt. We consider ok that a module package doesn't ship a pyc package for a non default interpreter.</div>


<div>      The day we change the default python interpreter, we have to make sure every package ships a pyc for the new default version.</div><div> </div><div>  4. we use CSWpy33-, CSWpy34- prefixed packages that ship the pyc files and we have to build the new set of CSWpy3X- packages each time there is a new release of the python interpreter.</div>


<div><br></div><div><br></div><div>I think:</div><div>     - 3. should be avoided if possible (why ship module with slower load time if we can do otherwise),</div><div>    -  2 is maybe not so difficult thanks to the gar build system (but beware of package that don't build anymore because the build environment changed),</div>


<div>     - 4 maybe also not be so difficult thanks to gar but it doesn't meet the consensus of having CSWpy3- prefixed package,</div><div>     - 1. seems feasible without so much hassle.</div><div><br></div><div style>

So 1. seems the easiest way, so why don't we go with it ? Is there some drawbacks I missed ?</div><div style><br></div><div style>Yann</div><div><br>
</div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/2 Yann Rouillard <span dir="ltr"><<a href="mailto:yann@pleiades.fr.eu.org" target="_blank">yann@pleiades.fr.eu.org</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">2013/8/2 Maciej (Matchek) Bliziński <span dir="ltr"><<a href="mailto:maciej@opencsw.org" target="_blank">maciej@opencsw.org</a>></span><br>

<div class="gmail_extra"><div class="im"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div>>> There is a mechanism, but the user has no write permissions to the<br>
>> directories where the modules are.<br>
><br>
> I mean in his home directory, ${TMPDIR}, &c.<br>
<br>
</div>I would doubt it works in a general case, e.g. you can't assume that<br>
there is a home directory, and I'm pretty sure Python wouldn't save<br>
bytecode into /tmp.<br></blockquote><div><br></div><div></div></div></div>That's right, a little test show that in only tries the __pycache__ directory:</div><div class="gmail_extra"><br></div><div class="gmail_extra">

<div class="gmail_extra">
$ truss -f python3 test.py  2>&1 | egrep "copy.*pyc"</div><div class="gmail_extra">1395:   open64("/opt/csw/lib/python3.3/__pycache__/copyreg.cpython-33.pyc", O_RDONLY) Err#2 ENOENT</div><div class="gmail_extra">


1395:   open64("/opt/csw/lib/python3.3/__pycache__/copyreg.cpython-33.pyc.4274440288", O_WRONLY|O_CREAT|O_EXCL, 0644) Err#13 EACCES [ALL]</div><div class="gmail_extra">1395:   open64("/opt/csw/lib/python3.3/__pycache__/copy.cpython-33.pyc", O_RDONLY) Err#2 ENOENT</div>


<div class="gmail_extra">1395:   open64("/opt/csw/lib/python3.3/__pycache__/copy.cpython-33.pyc.4271408496", O_WRONLY|O_CREAT|O_EXCL, 0644) Err#13 EACCES [ALL]</div><div><br></div></div><div class="gmail_extra">


and the following document which describes how __pycache__ works doesn't talk about a user writeable directory possibility: <a href="http://www.python.org/dev/peps/pep-3147/" target="_blank">http://www.python.org/dev/peps/pep-3147/</a></div>

<span class="HOEnZb"><font color="#888888">
<div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Yann</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div></font></span></div>


</blockquote></div><br></div>