diff piecrust/processing/less.py @ 414:c4b3a7fd2f87

bake: Make pipeline processing multi-process. Not many changes here, as it's pretty straightforward, but an API change for processors so they know if they're being initialized/disposed from the main process or from one of the workers. This makes it possible to do global stuff that has side-effects (e.g. create a directory) vs. doing in-memory stuff.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 20 Jun 2015 19:20:30 -0700
parents c1d4e86a3918
children 35d4c172e5a6
line wrap: on
line diff
--- a/piecrust/processing/less.py	Sat Jun 20 19:16:38 2015 -0700
+++ b/piecrust/processing/less.py	Sat Jun 20 19:20:30 2015 -0700
@@ -24,7 +24,8 @@
 
     def onPipelineStart(self, pipeline):
         self._map_dir = os.path.join(pipeline.tmp_dir, 'less')
-        if not os.path.isdir(self._map_dir):
+        if (pipeline.is_first_worker and
+                not os.path.isdir(self._map_dir)):
             os.makedirs(self._map_dir)
 
     def getDependencies(self, path):
@@ -42,6 +43,7 @@
             # Get the sources, but make all paths absolute.
             sources = dep_map.get('sources')
             path_dir = os.path.dirname(path)
+
             def _makeAbs(p):
                 return os.path.join(path_dir, p)
             deps = list(map(_makeAbs, sources))