From 2be7bf4b407e5d56e9be62ee65764e4d03e2019a Mon Sep 17 00:00:00 2001 From: Jakub Kaczmarzyk Date: Wed, 19 Sep 2018 13:49:04 -0400 Subject: [PATCH 1/6] use neurodocker 0.4.1 + apt install afni --- docker/generate_dockerfiles.sh | 113 +++++++++++++++------------------ 1 file changed, 52 insertions(+), 61 deletions(-) diff --git a/docker/generate_dockerfiles.sh b/docker/generate_dockerfiles.sh index bd1fcb637e..61da6f63c7 100755 --- a/docker/generate_dockerfiles.sh +++ b/docker/generate_dockerfiles.sh @@ -52,77 +52,68 @@ do esac done - -# neurodocker version 0.3.1-22-gb0ee069 -NEURODOCKER_IMAGE="kaczmarj/neurodocker@sha256:f15ca90803f4b89acfca55cd1c7269bf2ec2dfd95b3de1118b08afa34b87d9d1" - -# neurodebian:stretch-non-free pulled on November 3, 2017 -BASE_IMAGE="neurodebian@sha256:7590552afd0e7a481a33314724ae27f76ccedd05ffd7ac06ec38638872427b9b" +NEURODOCKER_IMAGE="kaczmarj/neurodocker:0.4.1" +# neurodebian:stretch-non-free pulled on September 19, 2018 +BASE_IMAGE="neurodebian@sha256:7cd978427d7ad215834fee221d0536ed7825b3cddebc481eba2d792dfc2f7332" NIPYPE_BASE_IMAGE="nipype/nipype:base" PKG_MANAGER="apt" DIR="$(dirname "$0")" function generate_base_dockerfile() { - docker run --rm "$NEURODOCKER_IMAGE" generate \ - --base "$BASE_IMAGE" --pkg-manager "$PKG_MANAGER" \ - --label maintainer="The nipype developers https://github.com/nipy/nipype" \ - --spm version=12 matlab_version=R2017a \ - --afni version=latest install_python2=true \ - --freesurfer version=6.0.0 min=true \ - --run 'echo "cHJpbnRmICJrcnp5c3p0b2YuZ29yZ29sZXdza2lAZ21haWwuY29tXG41MTcyXG4gKkN2dW12RVYzelRmZ1xuRlM1Si8yYzFhZ2c0RVxuIiA+IC9vcHQvZnJlZXN1cmZlci9saWNlbnNlLnR4dAo=" | base64 -d | sh' \ - --install ants apt-utils bzip2 convert3d file fsl-core fsl-mni152-templates \ - fusefat g++ git graphviz make ruby unzip xvfb \ - --add-to-entrypoint "source /etc/fsl/fsl.sh" \ - --env ANTSPATH='/usr/lib/ants' PATH='/usr/lib/ants:$PATH' \ - --run "gem install fakes3" \ - --no-check-urls > "$DIR/Dockerfile.base" + docker run --rm "$NEURODOCKER_IMAGE" generate docker \ + --base "$BASE_IMAGE" --pkg-manager "$PKG_MANAGER" \ + --label maintainer="The nipype developers https://github.com/nipy/nipype" \ + --spm12 version=r7219 \ + --freesurfer version=6.0.0-min \ + --run 'echo "cHJpbnRmICJrcnp5c3p0b2YuZ29yZ29sZXdza2lAZ21haWwuY29tXG41MTcyXG4gKkN2dW12RVYzelRmZ1xuRlM1Si8yYzFhZ2c0RVxuIiA+IC9vcHQvZnJlZXN1cmZlci9saWNlbnNlLnR4dAo=" | base64 -d | sh' \ + --install afni ants apt-utils bzip2 convert3d file fsl-core \ + fsl-mni152-templates fusefat g++ git graphviz make python ruby \ + unzip xvfb \ + --add-to-entrypoint "source /etc/fsl/fsl.sh && source /etc/afni/afni.sh" \ + --env ANTSPATH='/usr/lib/ants' \ + PATH='/usr/lib/ants:$PATH' \ + --run "gem install fakes3" \ + > "$DIR/Dockerfile.base" } function generate_main_dockerfile() { - docker run --rm "$NEURODOCKER_IMAGE" generate \ - --base "$NIPYPE_BASE_IMAGE" --pkg-manager "$PKG_MANAGER" \ - --label maintainer="The nipype developers https://github.com/nipy/nipype" \ - --env MKL_NUM_THREADS=1 OMP_NUM_THREADS=1 \ - --user neuro \ - --miniconda env_name=neuro \ - activate=true \ - --copy docker/files/run_builddocs.sh docker/files/run_examples.sh \ - docker/files/run_pytests.sh nipype/external/fsl_imglob.py /usr/bin/ \ - --copy . /src/nipype \ - --user root \ - --run 'chown -R neuro /src -&& chmod +x /usr/bin/fsl_imglob.py /usr/bin/run_*.sh -&& . /etc/fsl/fsl.sh -&& ln -sf /usr/bin/fsl_imglob.py ${FSLDIR}/bin/imglob -&& mkdir /work -&& chown neuro /work' \ - --user neuro \ - --arg PYTHON_VERSION_MAJOR=3 PYTHON_VERSION_MINOR=6 BUILD_DATE VCS_REF VERSION \ - --miniconda env_name=neuro \ - conda_install='python=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} - icu=58.1 libxml2 libxslt matplotlib mkl numpy paramiko - pandas psutil scikit-learn scipy traits=4.6.0' \ - pip_opts="-e" \ - pip_install="/src/nipype[all]" \ - --miniconda env_name=neuro \ - pip_install="grabbit==0.1.2" \ - --run-bash "mkdir -p /src/pybids - && curl -sSL --retry 5 https://github.com/INCF/pybids/tarball/0.5.1 - | tar -xz -C /src/pybids --strip-components 1 - && source activate neuro - && pip install --no-cache-dir -e /src/pybids" \ - --workdir /work \ - --label org.label-schema.build-date='$BUILD_DATE' \ - org.label-schema.name="NIPYPE" \ - org.label-schema.description="NIPYPE - Neuroimaging in Python: Pipelines and Interfaces" \ - org.label-schema.url="http://nipype.readthedocs.io" \ - org.label-schema.vcs-ref='$VCS_REF' \ - org.label-schema.vcs-url="https://github.com/nipy/nipype" \ - org.label-schema.version='$VERSION' \ - org.label-schema.schema-version="1.0" \ - --no-check-urls + docker run --rm "$NEURODOCKER_IMAGE" generate docker \ + --base "$NIPYPE_BASE_IMAGE" --pkg-manager "$PKG_MANAGER" \ + --label maintainer="The nipype developers https://github.com/nipy/nipype" \ + --env MKL_NUM_THREADS=1 \ + OMP_NUM_THREADS=1 \ + --arg PYTHON_VERSION_MAJOR=3 PYTHON_VERSION_MINOR=6 BUILD_DATE VCS_REF VERSION \ + --user neuro \ + --miniconda create_env=neuro \ + conda_install='python=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} + icu=58.1 libxml2 libxslt matplotlib mkl numpy paramiko + pandas psutil scikit-learn scipy traits=4.6.0' \ + pip_install="grabbit==0.1.2 https://github.com/INCF/pybids/tarball/0.5.1" \ + --copy docker/files/run_builddocs.sh docker/files/run_examples.sh \ + docker/files/run_pytests.sh nipype/external/fsl_imglob.py /usr/bin/ \ + --copy . /src/nipype \ + --user root \ + --run 'chown -R neuro /src + && chmod +x /usr/bin/fsl_imglob.py /usr/bin/run_*.sh + && . /etc/fsl/fsl.sh + && ln -sf /usr/bin/fsl_imglob.py ${FSLDIR}/bin/imglob + && mkdir /work + && chown neuro /work' \ + --user neuro \ + --miniconda use_env=neuro \ + pip_opts="-e" \ + pip_install="/src/nipype[all]" \ + --workdir /work \ + --label org.label-schema.build-date='$BUILD_DATE' \ + org.label-schema.name="NIPYPE" \ + org.label-schema.description="NIPYPE - Neuroimaging in Python: Pipelines and Interfaces" \ + org.label-schema.url="http://nipype.readthedocs.io" \ + org.label-schema.vcs-ref='$VCS_REF' \ + org.label-schema.vcs-url="https://github.com/nipy/nipype" \ + org.label-schema.version='$VERSION' \ + org.label-schema.schema-version="1.0" } From 32c2f42e75f4b73ad473af7e7a475d433501370b Mon Sep 17 00:00:00 2001 From: Jakub Kaczmarzyk Date: Wed, 19 Sep 2018 14:05:49 -0400 Subject: [PATCH 2/6] fix: put license in /opt/freesurfer-6.0.0-min/ --- docker/generate_dockerfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/generate_dockerfiles.sh b/docker/generate_dockerfiles.sh index 61da6f63c7..5bf3140606 100755 --- a/docker/generate_dockerfiles.sh +++ b/docker/generate_dockerfiles.sh @@ -66,7 +66,7 @@ function generate_base_dockerfile() { --label maintainer="The nipype developers https://github.com/nipy/nipype" \ --spm12 version=r7219 \ --freesurfer version=6.0.0-min \ - --run 'echo "cHJpbnRmICJrcnp5c3p0b2YuZ29yZ29sZXdza2lAZ21haWwuY29tXG41MTcyXG4gKkN2dW12RVYzelRmZ1xuRlM1Si8yYzFhZ2c0RVxuIiA+IC9vcHQvZnJlZXN1cmZlci9saWNlbnNlLnR4dAo=" | base64 -d | sh' \ + --run 'echo "cHJpbnRmICJrcnp5c3p0b2YuZ29yZ29sZXdza2lAZ21haWwuY29tCjUxNzIKICpDdnVtdkVWM3pUZmcKRlM1Si8yYzFhZ2c0RQoiID4gL29wdC9mcmVlc3VyZmVyLTYuMC4wLW1pbi9saWNlbnNlLnR4dA==" | base64 -d | sh' \ --install afni ants apt-utils bzip2 convert3d file fsl-core \ fsl-mni152-templates fusefat g++ git graphviz make python ruby \ unzip xvfb \ From da2fab0a116c7b2e6ab8db5e9baa4c9ea22df2de Mon Sep 17 00:00:00 2001 From: Jakub Kaczmarzyk Date: Wed, 19 Sep 2018 16:47:40 -0400 Subject: [PATCH 3/6] use most recent neurodocker + activate conda env --- docker/generate_dockerfiles.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/generate_dockerfiles.sh b/docker/generate_dockerfiles.sh index 5bf3140606..f3a77a76ad 100755 --- a/docker/generate_dockerfiles.sh +++ b/docker/generate_dockerfiles.sh @@ -52,7 +52,7 @@ do esac done -NEURODOCKER_IMAGE="kaczmarj/neurodocker:0.4.1" +NEURODOCKER_IMAGE="kaczmarj/neurodocker:master@sha256:dd868878266e615335a911f4682e7a3e1b7c72fc3684c5b57f1da5122a40ee96" # neurodebian:stretch-non-free pulled on September 19, 2018 BASE_IMAGE="neurodebian@sha256:7cd978427d7ad215834fee221d0536ed7825b3cddebc481eba2d792dfc2f7332" @@ -91,6 +91,7 @@ function generate_main_dockerfile() { icu=58.1 libxml2 libxslt matplotlib mkl numpy paramiko pandas psutil scikit-learn scipy traits=4.6.0' \ pip_install="grabbit==0.1.2 https://github.com/INCF/pybids/tarball/0.5.1" \ + activate=true \ --copy docker/files/run_builddocs.sh docker/files/run_examples.sh \ docker/files/run_pytests.sh nipype/external/fsl_imglob.py /usr/bin/ \ --copy . /src/nipype \ From 4c5e76f994065c9a89d45b5eea53b5c05524bb2c Mon Sep 17 00:00:00 2001 From: Jakub Kaczmarzyk Date: Wed, 10 Oct 2018 09:09:39 -0400 Subject: [PATCH 4/6] use newer neurodocker and neurodebian stretch --- docker/generate_dockerfiles.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/generate_dockerfiles.sh b/docker/generate_dockerfiles.sh index f3a77a76ad..34712c3ca2 100755 --- a/docker/generate_dockerfiles.sh +++ b/docker/generate_dockerfiles.sh @@ -52,9 +52,10 @@ do esac done -NEURODOCKER_IMAGE="kaczmarj/neurodocker:master@sha256:dd868878266e615335a911f4682e7a3e1b7c72fc3684c5b57f1da5122a40ee96" +# neurodocker version 0.4.1-22-g7c44e01 +NEURODOCKER_IMAGE="kaczmarj/neurodocker:master@sha256:858632a7533cac100f70932749b4cfc77fc40f667f41fca208f406215cff8a27" # neurodebian:stretch-non-free pulled on September 19, 2018 -BASE_IMAGE="neurodebian@sha256:7cd978427d7ad215834fee221d0536ed7825b3cddebc481eba2d792dfc2f7332" +BASE_IMAGE="neurodebian:stretch-non-free@sha256:7cd978427d7ad215834fee221d0536ed7825b3cddebc481eba2d792dfc2f7332" NIPYPE_BASE_IMAGE="nipype/nipype:base" PKG_MANAGER="apt" From 4a29a2a14b6e0d0edd5447941e357d39f0830942 Mon Sep 17 00:00:00 2001 From: Jakub Kaczmarzyk Date: Wed, 10 Oct 2018 09:13:55 -0400 Subject: [PATCH 5/6] upgrade pybids to 0.6.5 from 0.5.1 --- docker/generate_dockerfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/generate_dockerfiles.sh b/docker/generate_dockerfiles.sh index 34712c3ca2..9027639942 100755 --- a/docker/generate_dockerfiles.sh +++ b/docker/generate_dockerfiles.sh @@ -91,7 +91,7 @@ function generate_main_dockerfile() { conda_install='python=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} icu=58.1 libxml2 libxslt matplotlib mkl numpy paramiko pandas psutil scikit-learn scipy traits=4.6.0' \ - pip_install="grabbit==0.1.2 https://github.com/INCF/pybids/tarball/0.5.1" \ + pip_install="grabbit==0.1.2 https://github.com/INCF/pybids/tarball/0.6.5" \ activate=true \ --copy docker/files/run_builddocs.sh docker/files/run_examples.sh \ docker/files/run_pytests.sh nipype/external/fsl_imglob.py /usr/bin/ \ From 23e63575beccc0298ada0c2adca154405fba7818 Mon Sep 17 00:00:00 2001 From: Jakub Kaczmarzyk Date: Wed, 31 Oct 2018 10:25:54 -0400 Subject: [PATCH 6/6] fix: prepend system libraries to LD_LIBRARY_PATH The libraries for Matlab compiler runtime 2010a are being found before the system libraries, and flameo was linking to one of matlab's libraries. This commit prepends the system libraries to LD_LIBRARY_PATH so that flameo (and other binaries) do not link to Matlab's libraries. --- docker/generate_dockerfiles.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/generate_dockerfiles.sh b/docker/generate_dockerfiles.sh index 9027639942..9c281f8bbc 100755 --- a/docker/generate_dockerfiles.sh +++ b/docker/generate_dockerfiles.sh @@ -66,6 +66,7 @@ function generate_base_dockerfile() { --base "$BASE_IMAGE" --pkg-manager "$PKG_MANAGER" \ --label maintainer="The nipype developers https://github.com/nipy/nipype" \ --spm12 version=r7219 \ + --env 'LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH' \ --freesurfer version=6.0.0-min \ --run 'echo "cHJpbnRmICJrcnp5c3p0b2YuZ29yZ29sZXdza2lAZ21haWwuY29tCjUxNzIKICpDdnVtdkVWM3pUZmcKRlM1Si8yYzFhZ2c0RQoiID4gL29wdC9mcmVlc3VyZmVyLTYuMC4wLW1pbi9saWNlbnNlLnR4dA==" | base64 -d | sh' \ --install afni ants apt-utils bzip2 convert3d file fsl-core \