aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
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:48:05 +0000
commit3f2ab3f7cc1bf1646f2acfcace9b9cf546cc3a5d (patch)
tree647d48774d646fb29cb45f644b55f5f81c226f74 /scripts
parentbef4e00bdadcd912574f73fde93e58d3943b18b5 (diff)
downloadopenembedded-core-contrib-3f2ab3f7cc1bf1646f2acfcace9b9cf546cc3a5d.tar.gz
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. (From OE-Core rev: bb4d689769703177dbb0df0935e15016b879f42b) Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-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"""