diff --git a/repo2docker/buildpacks/base.py b/repo2docker/buildpacks/base.py index 796710b9..8a78a6be 100644 --- a/repo2docker/buildpacks/base.py +++ b/repo2docker/buildpacks/base.py @@ -222,9 +222,8 @@ class BuildPack(LoggingConfigurable): """ return [] - assemble_scripts = List( - [], - help=""" + def get_assemble_scripts(self): + """ Ordered list of shell script snippets to build the repo into the image. A list of tuples, where the first item is a username & the @@ -247,7 +246,7 @@ class BuildPack(LoggingConfigurable): You can use environment variable substitutions in both the username and the execution script. """ - ) + return [] post_build_scripts = List( [], @@ -295,9 +294,8 @@ class BuildPack(LoggingConfigurable): result.get_labels = lambda: _merge_dicts(self.get_labels(), other.get_labels()) result.get_build_script_files = lambda: _merge_dicts(self.get_build_script_files(), other.get_build_script_files()) result.get_build_scripts = lambda: self.get_build_scripts() + other.get_build_scripts() + result.get_assemble_scripts = lambda: self.get_assemble_scripts() + other.get_assemble_scripts() - result.assemble_scripts = (self.assemble_scripts + - other.assemble_scripts) result.post_build_scripts = (self.post_build_scripts + other.post_build_scripts) @@ -335,7 +333,7 @@ class BuildPack(LoggingConfigurable): assemble_script_directives = [] last_user = 'root' - for user, script in self.assemble_scripts: + for user, script in self.get_assemble_scripts(): if last_user != user: assemble_script_directives.append("USER {}".format(user)) last_user = user diff --git a/repo2docker/buildpacks/conda/__init__.py b/repo2docker/buildpacks/conda/__init__.py index 59703d01..c46d0b12 100644 --- a/repo2docker/buildpacks/conda/__init__.py +++ b/repo2docker/buildpacks/conda/__init__.py @@ -108,8 +108,7 @@ class CondaBuildPack(BuildPack): """Am I building a Python 2 kernel environment?""" return self.python_version and self.python_version.split('.')[0] == '2' - #@default('assemble_scripts') - def setup_assembly(self): + def get_assemble_scripts(self): assembly_scripts = [] environment_yml = self.binder_path('environment.yml') env_name = 'kernel' if self.py2 else 'root' diff --git a/repo2docker/buildpacks/julia.py b/repo2docker/buildpacks/julia.py index 021398ef..51226196 100644 --- a/repo2docker/buildpacks/julia.py +++ b/repo2docker/buildpacks/julia.py @@ -49,8 +49,7 @@ class JuliaBuildPack(BuildPack): ) ] - @default('assemble_scripts') - def setup_assembly(self): + def get_assemble_scripts(self): require = self.binder_path('REQUIRE') return [( "${NB_USER}", diff --git a/repo2docker/buildpacks/python/__init__.py b/repo2docker/buildpacks/python/__init__.py index 561593ad..1fdffc92 100644 --- a/repo2docker/buildpacks/python/__init__.py +++ b/repo2docker/buildpacks/python/__init__.py @@ -60,8 +60,7 @@ class PythonBuildPack(BuildPack): ) ] - @default('assemble_scripts') - def setup_assembly(self): + def get_assemble_scripts(self): # If we have a runtime.txt & that's set to python-2.7, # we will *not* install requirements.txt but will find & # install a requirements3.txt file if it exists. @@ -140,8 +139,7 @@ class Python2BuildPack(BuildPack): ) ] - @default('assemble_scripts') - def setup_assembly(self): + def get_assemble_scripts(self): return [ ( '${NB_USER}',