do not reuse BuildPack instances

rather than instantiating all buildpacks ahead of time, only instantiate as needed.

Makes it clear that a given BuildPack should only perform a single build
and a new BuildPack should be created for a subsequent build.
pull/228/head
Min RK 2018-02-09 13:14:34 +01:00
rodzic e0f726dbe0
commit 1ffec7ded6
1 zmienionych plików z 12 dodań i 10 usunięć

Wyświetl plik

@ -60,13 +60,13 @@ class Repo2Docker(Application):
buildpacks = List( buildpacks = List(
[ [
LegacyBinderDockerBuildPack(), LegacyBinderDockerBuildPack,
DockerBuildPack(), DockerBuildPack,
JuliaBuildPack(), JuliaBuildPack,
CondaBuildPack(), CondaBuildPack,
Python2BuildPack(), Python2BuildPack,
RBuildPack(), RBuildPack,
PythonBuildPack() PythonBuildPack,
], ],
config=True, config=True,
help=""" help="""
@ -75,7 +75,7 @@ class Repo2Docker(Application):
) )
default_buildpack = Any( default_buildpack = Any(
PythonBuildPack(), PythonBuildPack,
config=True, config=True,
help=""" help="""
The build pack to use when no buildpacks are found The build pack to use when no buildpacks are found
@ -547,12 +547,14 @@ class Repo2Docker(Application):
) )
os.chdir(checkout_path) os.chdir(checkout_path)
picked_buildpack = self.default_buildpack
for bp in self.buildpacks: for BP in self.buildpacks:
bp = BP()
if bp.detect(): if bp.detect():
picked_buildpack = bp picked_buildpack = bp
break break
else:
picked_buildpack = self.default_buildpack()
self.log.debug(picked_buildpack.render(), self.log.debug(picked_buildpack.render(),
extra=dict(phase='building')) extra=dict(phase='building'))