On Sun, 2019-11-17 at 11:34 -0600, Bruce Dubbs via blfs-dev wrote:
> On 11/17/19 8:39 AM, Pierre Labastie via blfs-dev wrote:
> > Le 17/11/2019 à 11:45, Wayne Blaszczyk via blfs-dev a écrit :
> > > Hi All,
> > > 
> > > I have just noticed that with all my builds, there are __pycache__ 
> > > directories
> > > being installed all over the place.
> > > As an example, when I installed totem, it created /usr/bin/__pycache__/ 
> > > with a
> > > bunch of files underneath it which are actual not related to totem.
> > > I raised a bug but it was quickly dismissed.
> > > https://gitlab.gnome.org/GNOME/totem/issues/375
> > > I know that totem is not part of BLFS anymore, but there are other 
> > > packages
> > > creating the same sort thing.
> > > Polkit for example has created files under 
> > > /usr/lib/gobject-introspection/giscanner/__pycache__/
> > > Has anyone else come across this? Is this expected?
> > > 
> > 
> > I think it is expected: each time a python program is interpreted, it is
> > actually transformed to an intermediate binary (byte-compiled). Under 
> > certain
> > conditions, this binary is saved into the __pycache__directory, so that the
> > next time it is run, the binary is used, saving the time for byte-compiling.
> > 
> > There is also a python module for byte-compiling all the files in a 
> > directory [1].
> > 
> > As a specific example, gedit has a post_install.py script, which does
> > byte-compile all the python programs in /usr/lib/gedit/plugins. I think it 
> > is
> > the same for totem (although creating __pycache__ directly in /usr/bin 
> > should
> > be avoided, IMO).
> > 
> > Pierre
> > 
> > [1] https://docs.python.org/3/library/compileall.html
> > 
> 
> Checking my system, I find that directory in the following locations.
> 
> /usr/lib/peas-demo
> /usr/lib/gobject-introspection/giscanner
> /usr/lib/gedit/plugins
> /usr/lib/python3.7
> /usr/lib/python3.8
> /usr/share/gdb/python
> /usr/share/gtk-doc/python/gtkdoc
> 
> It's not common, but I wonder what happens if /usr is mounted read only. 
>   You would think that these files would be in a more conventional place 
> line /var/cache.

OK, I've done a comprehensive set of builds for polkit and here are the results.


user="lfs"  make
user="lfs"  DESTDIR=${PWD}/install make install
user="root" chown -R root:root install
user="root" cp -a install/* /

/usr/lib/gobject-introspection/giscanner/__pycache__ not created

user="lfs"  make
user="root" DESTDIR=${PWD}/install make install
user="root" chown -R root:root install
user="root" cp -a install/* /

/usr/lib/gobject-introspection/giscanner/__pycache__ not created

user="root" make
user="root" DESTDIR=${PWD}/install make install
user="root" chown -R root:root install
user="root" cp -a install/* /

/usr/lib/gobject-introspection/giscanner/__pycache__ created with 21 pyc files.

user="root" make
user="root" make install

/usr/lib/gobject-introspection/giscanner/__pycache__ created with 21 pyc files.

user="lfs"  make
user="root" make install

/usr/lib/gobject-introspection/giscanner/__pycache__ not created

So the bottom line, for the polkit build anyway, is to run 'make' as non root
if you don't these cached files.
I'll need to go back and revisit my totem build which I used DESTDIR to 
overcome this.


Regards,

> 
> I did a quick search but couldn't find anything about changing the cache 
> location.  I would think an environment variable or a configuration file 
> could control this.  The only python specific environment variables I 
> could find are PYTHONPATH and PYTHONDONTWRITEBYTECODE.
> 
> I did find these:
> 
> https://stackoverflow.com/questions/3522079/changing-the-directory-where-pyc-files-are-created/57414308#57414308
> 
> https://stackoverflow.com/questions/16869024/what-is-pycache
> 
>    -- Bruce

-- 
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to