summaryrefslogtreecommitdiff
path: root/scripts/contrib/python
diff options
context:
space:
mode:
authorDominic Sacré <dominic.sacre@gmx.de>2016-10-25 19:20:17 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-11-30 15:47:09 +0000
commitbb4d689769703177dbb0df0935e15016b879f42b (patch)
tree32fdf1e2b06cb8054e9f242f9449f1e2ac0b4cbd /scripts/contrib/python
parent6a56ff7885f43abdb3b9bfeb733be6fee1de237c (diff)
downloadopenembedded-core-bb4d689769703177dbb0df0935e15016b879f42b.tar.gz
openembedded-core-bb4d689769703177dbb0df0935e15016b879f42b.tar.bz2
openembedded-core-bb4d689769703177dbb0df0935e15016b879f42b.zip
python3: Build and package precompiled modules
Remove the patch that was applied in the python3 and python3-native recipes to skip compilation of python modules. Modify generate-manifest-3.5.py to match '__pycache__' directories in FILES_*. This is necessary because Python3 puts .pyc files in '__pycache__' subdirectories one level below the corresponding .py files, whereas in Python2 they used to be right next to the sources. This change significantly reduces the startup overhead of Python3 scripts. For example, on a Cortex-A9, "python3 -c pass" took 0.40s before, and 0.19s after. Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de> Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts/contrib/python')
-rwxr-xr-xscripts/contrib/python/generate-manifest-3.5.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/scripts/contrib/python/generate-manifest-3.5.py b/scripts/contrib/python/generate-manifest-3.5.py
index 2906cc66d0..897768fbaa 100755
--- a/scripts/contrib/python/generate-manifest-3.5.py
+++ b/scripts/contrib/python/generate-manifest-3.5.py
@@ -59,10 +59,20 @@ class MakefileMaker:
for filename in filenames:
if filename[0] != "$":
fullFilenames.append( "%s%s" % ( self.targetPrefix, filename ) )
+ fullFilenames.append( "%s%s" % ( self.targetPrefix,
+ self.pycachePath( filename ) ) )
else:
fullFilenames.append( filename )
self.packages[name] = description, dependencies, fullFilenames
+ def pycachePath( self, filename ):
+ dirname = os.path.dirname( filename )
+ basename = os.path.basename( filename )
+ if '.' in basename:
+ return os.path.join( dirname, '__pycache__', basename )
+ else:
+ return os.path.join( dirname, basename, '__pycache__' )
+
def doBody( self ):
"""generate body of Makefile"""