mirror of
https://gitlab.com/ita1024/waf.git
synced 2025-01-26 18:20:22 +01:00
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
#! /usr/bin/env python
|
|
# encoding: utf-8
|
|
# Thomas Nagy, 2012
|
|
|
|
"""
|
|
A simple cache layer to enable the redistribution of precompiled cython files
|
|
"""
|
|
|
|
from waflib.Task import ASK_LATER
|
|
from waflib.extras.cython import cython as cython_base
|
|
|
|
class cython(cython_base):
|
|
|
|
def runnable_status(self):
|
|
ret = cython_base.runnable_status(self)
|
|
if ret != ASK_LATER:
|
|
# we can create Node objects since we are in the main thread
|
|
bld = self.generator.bld
|
|
cache = bld.srcnode.make_node('cython_cache')
|
|
if self.env.CYTHON: # write to the cache directory
|
|
self.cython_cache_outputs = [cache.make_node(x.path_from(bld.bldnode)) for x in self.outputs]
|
|
else: # use the files in the cache directory
|
|
self.cython_cache_outputs = [cache.find_node(x.path_from(bld.bldnode)) for x in self.outputs]
|
|
return ret
|
|
|
|
def run(self):
|
|
if self.env.CYTHON:
|
|
ret = cython_base.run(self)
|
|
if not ret:
|
|
for (x, y) in zip(self.outputs, self.cython_cache_outputs):
|
|
y.parent.mkdir()
|
|
y.write(x.read('rb'), 'wb')
|
|
return ret
|
|
else:
|
|
for (x, y) in zip(self.outputs, self.cython_cache_outputs):
|
|
x.write(y.read('rb'), 'wb')
|
|
|