-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WiP] Draft for Gentoo configuration #611
base: master
Are you sure you want to change the base?
Conversation
@yarikoptic I can't find any sort of Containerfile in this repo... any idea how/what I should adapt? |
this is a tool which produces Containerfile's (based on such templates etc), it doesn't contain them. What do you need it for? in any case -- just try to follow what you see done (tests etc) for e.g. neurodebian -- just |
Ok, I'll do some more digging in the actual code, but:
neurodebian is only mentioned in that file and Basically what needs to be done for Gentoo images, is for this container file I wrote to be loaded, and on the last line whatever packages the user wants should get concatenated. |
@TheChymera - dockerfiles are rendered here: neurodocker/neurodocker/reproenv/renderers.py Line 450 in f61d0e2
and singularity files are rendered here: neurodocker/neurodocker/reproenv/renderers.py Line 595 in f61d0e2
the templates in |
# Instructions to add NeuroDebian repositories. | ||
|
||
name: gentoo | ||
url: https://www.gentoo.org/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there is nothing gentoo below yet, misleading commit message etc. Please squash it with whatever actually gentoo specific changes you place into this PR
@kaczmarj any idea where the YAML is loaded? I can't find either “.yaml”, or “neurodebian”, or “templates/” anywhere in that module. I assume this somehow happens dynamically, and I tried to look for tests... but I couldn't find the relevant test exemplifying this.
With a traceback that's mainly Basically what I'd like to do is just give it a series of commands to concatenate... but I see no analogous lines to what I have in the Containerfile in |
didn't check but quite often to do such "where is it loaded" I "break" the medium -- make file not readable, or break json or yaml formatting -- that causes failure to occur and I see in the traceback where is it happening. |
ha -- now read fully and saw that you thought alike ;) ok, will look inside now |
for me breaking yaml resulted in following tracebackneurodocker/__init__.py:17: in <module>
reproenv.register_template(template_path)
neurodocker/reproenv/state.py:103: in register
template = yaml.load(f, Loader=SafeLoader)
venvs/dev3/lib/python3.11/site-packages/yaml/__init__.py:81: in load
return loader.get_single_data()
venvs/dev3/lib/python3.11/site-packages/yaml/constructor.py:49: in get_single_data
node = self.get_single_node()
yaml/_yaml.pyx:673: in yaml._yaml.CParser.get_single_node
???
yaml/_yaml.pyx:687: in yaml._yaml.CParser._compose_document
???
yaml/_yaml.pyx:731: in yaml._yaml.CParser._compose_node
???
yaml/_yaml.pyx:845: in yaml._yaml.CParser._compose_mapping_node
???
yaml/_yaml.pyx:729: in yaml._yaml.CParser._compose_node
???
yaml/_yaml.pyx:808: in yaml._yaml.CParser._compose_sequence_node
???
yaml/_yaml.pyx:860: in yaml._yaml.CParser._parse_next_event
???
E yaml.parser.ParserError: while parsing a block collection
E in "/home/yoh/proj/repronim/neurodocker/neurodocker/templates/neurodebian.yaml", line 6, column 3
E did not find expected '-' indicator
E in "/home/yoh/proj/repronim/neurodocker/neurodocker/templates/neurodebian.yaml", line 18, column 3
so points to https://github.com/ReproNim/neurodocker/blob/HEAD/neurodocker/__init__.py#L16 -- that registers templates. And then all jinja templating happens in https://github.com/ReproNim/neurodocker/blob/HEAD/neurodocker/reproenv/renderers.py |
Ok, so I think I finally found a test I think I could work off of. Basically I'm looking for some test that shows how a neurodebian Containerfile is generated, and then determine how/what to change to get my gentoo Containerfile instead. Sadly I get the following:
Any idea why this is happening? The command works if I run it from bash — I got it from here → https://www.repronim.org/neurodocker/user_guide/quickstart.html |
make it not |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
initial review with some TODOs etc
|
||
name: gentoo | ||
url: https://www.gentoo.org/ | ||
binaries: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
binaries: | |
binaries: | |
arguments: | |
required: | |
- portage_version | |
- stage3_version | |
optional: | |
- gentoo_hash | |
- science_hash |
TODO: defaults somehow -- may be just straight in the code as {{ self.get("portage_version", "20240324") }}
neurodocker/templates/gentoo.yaml
Outdated
RUN emerge -v --noreplace dev-vcs/git | ||
RUN emerge -v1u portage | ||
# Pinned commits for the dependency tree state | ||
ARG gentoo_hash=2d25617a1d085316761b06c17a93ec972f172fc6 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this needs to use {%- if this.gentoo_hash %}
... {% endif %}
neurodocker/templates/gentoo.yaml
Outdated
ARG FEATURES="-ipc-sandbox -network-sandbox -pid-sandbox" | ||
# This will be bound, and contents available outside of container | ||
RUN mkdir /outputs | ||
COPY .gentoo/portage/ /etc/portage/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO: copy from https://github.com/TheChymera/neurodocker_g/tree/master
but in the future some might also want to become templates
neurodocker/templates/gentoo.yaml
Outdated
mkdir -p /var/db/repos/science && pushd /var/db/repos/science && git init . && \ | ||
git remote add origin ${REPO_URL} && \ | ||
git fetch --filter="blob:none" origin $science_hash && \ | ||
git reset --hard $science_hash && rm .git -rf && popd |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
all the "freezing" might make sense to move into a script. this would allow for better reuse...
also note that apparently for neurodebian -- freezing is done somewhere else than this template
neurodocker/templates/gentoo.yaml
Outdated
### Emerge cool stuff here | ||
### Autounmask-continue enables all features on dependencies which the top level packages require | ||
### By default this needs user confirmation which would interrupt the build. | ||
RUN emerge --autounmask-continue afni fsl |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RUN emerge --autounmask-continue afni fsl | |
# RUN emerge --autounmask-continue afni fsl |
cmd
|
new command, works better:
Ongoing issues:
@yarikoptic thanks for your help yesterday, I think I can navigate this better now, but feedback on the above would still be helpful :) |
IMHO worth filing a dedicated issue or PR to address that
sorry - already forgot what would be that resource link, but may be it is something to template in the
I see it only accesible/used in the tests... so most likely it is only for internal use atm❯ git grep '\.from_('
neurodocker/reproenv/tests/test_build_images_from_registered_templates.py: r.from_(base_image)
neurodocker/reproenv/tests/test_build_images_simple.py: r.from_("debian:buster-slim", as_="builder")
neurodocker/reproenv/tests/test_build_images_simple.py: r.from_("debian:buster-slim")
neurodocker/reproenv/tests/test_renderers.py: # r: _Renderer = renderer("apt").from_("my_base_image").run("echo foobar")
neurodocker/reproenv/tests/test_renderers.py: r = renderer_cls("apt").from_("my_base_image").run("echo foobar")
neurodocker/reproenv/tests/test_renderers.py: r2: _Renderer = renderer_cls("apt").from_("my_base_image").run("echo foobar")
neurodocker/reproenv/tests/test_renderers.py: r.from_("baseimage")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("alpine", as_="builder")
neurodocker/reproenv/tests/test_renderers_docker.py: d.from_("debian:buster-slim")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("alpine")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("alpine")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("alpine")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("alpine")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("alpine")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("alpine")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("alpine")
neurodocker/reproenv/tests/test_renderers_singularity.py: s.from_("debian:buster-slim") |
FWIW -- here is an example of a target use case - nimh-dsst/dsst-defacing-pipeline#41 a dirty script with invocation of neurodocker(dev3) (zarr-manifests) yoh@typhon:~/proj/repronim/dsst-defacing-pipeline$ cat ./generate_container.sh
#!/bin/bash
set -eu
generate() {
# more details might come on https://github.com/ReproNim/neurodocker/issues/330
[ "$1" == singularity ] && add_entry=' "$@"' || add_entry=''
#neurodocker generate "$1" \
#ndversion=0.9.5
#ndversion=master
#docker run --rm repronim/neurodocker:$ndversion \
# ATM needs devel version of neurodocker for a fix to AFNI recipe
#--base-image neurodebian:bookworm \
#--ndfreeze date=20240320 \
dest=/opt/dsst-defacing-pipeline
neurodocker \
generate "$1" \
--pkg-manager portage \
--base-image "docker.io/gentoo/portage:20240324 as portage" \
--base-image "docker.io/gentoo/stage3:20240318" \
--gentoo gentoo_hash=2d25617a1d085316761b06c17a93ec972f172fc6 \
--install afni fsl \
--copy environment.yml /opt/environment.yml \
--copy src "$dest" \
--miniconda \
version=latest \
env_name=dsstdeface \
env_exists=false \
yaml_file=/opt/environment.yml \
--user=dsst \
--entrypoint "$dest/run.py"
#--run "curl -sL https://deb.nodesource.com/setup_16.x | bash - " \
#--install nodejs npm \
#--run "npm install -g [email protected]" \
#--fsl version=6.0.7.1 \
}
generate docker > Dockerfile
# generate singularity > Singularity
The Dockerfile it produced# Generated by Neurodocker and Reproenv.
FROM docker.io/gentoo/portage:20240324 as portage
FROM docker.io/gentoo/stage3:20240318
RUN COPY --from=portage /var/db/repos/gentoo /var/db/repos/gentoo \
&& RUN emerge -v --noreplace dev-vcs/git \
&& RUN emerge -v1u portage \
# Pinned commits for the dependency tree state
&& ARG gentoo_hash=2d25617a1d085316761b06c17a93ec972f172fc6 \
&& ARG science_hash=73916dd3680ffd92e5bd3d32b262e5d78c86a448 \
&& ARG FEATURES="-ipc-sandbox -network-sandbox -pid-sandbox" \
# This will be bound, and contents available outside of container
&& RUN mkdir /outputs \
&& COPY gentoo-portage/ /etc/portage/ \
# Moving gentoo repo from default rsync to git
&& RUN rm /var/db/repos/gentoo -rf \
# Cloning manually to prevent vdb update, pinning state via git
# Allegedly it's better to chain everything in one command, something with container layers 🤔
&& RUN \
REPO_URL=$(grep "^sync-uri" /etc/portage/repos.conf/gentoo | sed -e "s/sync-uri *= *//g") && \
mkdir -p /var/db/repos/gentoo && pushd /var/db/repos/gentoo && git init . && \
git remote add origin ${REPO_URL} && \
git fetch --filter="blob:none" origin $gentoo_hash && \
git reset --hard $gentoo_hash && rm .git -rf && popd && \
REPO_URL=$(grep "^sync-uri" /etc/portage/repos.conf/science | sed -e "s/sync-uri *= *//g") && \
mkdir -p /var/db/repos/science && pushd /var/db/repos/science && git init . && \
git remote add origin ${REPO_URL} && \
git fetch --filter="blob:none" origin $science_hash && \
git reset --hard $science_hash && rm .git -rf && popd \
# Old Christian: Remove sync-uri to not accidentally re-sync if we work with the package management interactively
# Christian from the future: Maybe we want the option to re-sync if we're debugging it interactively...
#RUN sed -i /etc/portage/repos.conf/{gentoo,science} -e "s/sync-type *= *git/sync-type =/g"
#RUN sed -i /etc/portage/repos.conf/{gentoo,science} -e "/sync-uri/d"
#RUN sed -i /etc/portage/repos.conf/{gentoo,science} -e "/sync-git-verify-commit-signature/d"
# Make sure all CPU flags supported by the hardware are whitelisted
# This only affects packages with handwritten assembly language optimizations, e.g. ffmpeg.
# Removing it is safe, software will just not take full advantage of processor capabilities.
#RUN emerge cpuid2cpuflags
#RUN echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
### Emerge cool stuff here
### Autounmask-continue enables all features on dependencies which the top level packages require
### By default this needs user confirmation which would interrupt the build.
RUN emerge --autounmask-continue \
afni \
fsl \
&& rm -rf /var/tmp/portage/*
COPY ["environment.yml", \
"/opt/environment.yml"]
COPY ["src", \
"/opt/dsst-defacing-pipeline"]
ENV CONDA_DIR="/opt/miniconda-latest" \
PATH="/opt/miniconda-latest/bin:$PATH"
RUN \
# Install dependencies.
&& export PATH="/opt/miniconda-latest/bin:$PATH" \
&& echo "Downloading Miniconda installer ..." \
&& conda_installer="/tmp/miniconda.sh" \
&& curl -fsSL -o "$conda_installer" https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& bash "$conda_installer" -b -p /opt/miniconda-latest \
&& rm -f "$conda_installer" \
&& conda update -yq -nbase conda \
# Prefer packages in conda-forge
&& conda config --system --prepend channels conda-forge \
# Packages in lower-priority channels not considered if a package with the same
# name exists in a higher priority channel. Can dramatically speed up installations.
# Conda recommends this as a default
# https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-channels.html
&& conda config --set channel_priority strict \
&& conda config --system --set auto_update_conda false \
&& conda config --system --set show_channel_urls true \
# Enable `conda activate`
&& conda init bash \
&& conda env create --name dsstdeface --file /opt/environment.yml \
# Clean up
&& sync && conda clean --all --yes && sync \
&& rm -rf ~/.cache/pip/*
RUN test "$(getent passwd dsst)" \
|| useradd --no-user-group --create-home --shell /bin/bash dsst
USER dsst
ENTRYPOINT ["/opt/dsst-defacing-pipeline/run.py"]
# Save specification to JSON.
USER root
RUN printf '{ \
"pkg_manager": "portage", \
"existing_users": [ \
"root" \
], \
"instructions": [ \
{ \
"name": "from_", \
"kwds": { \
"base_image": "docker.io/gentoo/portage:20240324 as portage" \
} \
}, \
{ \
"name": "from_", \
"kwds": { \
"base_image": "docker.io/gentoo/stage3:20240318" \
} \
}, \
{ \
"name": "run", \
"kwds": { \
"command": "COPY --from=portage /var/db/repos/gentoo /var/db/repos/gentoo\\nRUN emerge -v --noreplace dev-vcs/git\\nRUN emerge -v1u portage\\n# Pinned commits for the dependency tree state\\nARG gentoo_hash=2d25617a1d085316761b06c17a93ec972f172fc6\\nARG science_hash=73916dd3680ffd92e5bd3d32b262e5d78c86a448\\nARG FEATURES=\\"-ipc-sandbox -network-sandbox -pid-sandbox\\"\\n# This will be bound, and contents available outside of container\\nRUN mkdir /outputs\\nCOPY gentoo-portage/ /etc/portage/\\n# Moving gentoo repo from default rsync to git\\nRUN rm /var/db/repos/gentoo -rf\\n# Cloning manually to prevent vdb update, pinning state via git\\n# Allegedly it'"'"'s better to chain everything in one command, something with container layers \\ud83e\\udd14\\nRUN \\\\\\n REPO_URL=$\(grep \\"^sync-uri\\" /etc/portage/repos.conf/gentoo | sed -e \\"s/sync-uri *= *//g\\"\) && \\\\\\n mkdir -p /var/db/repos/gentoo && pushd /var/db/repos/gentoo && git init . && \\\\\\n git remote add origin ${REPO_URL} && \\\\\\n git fetch --filter=\\"blob:none\\" origin $gentoo_hash && \\\\\\n git reset --hard $gentoo_hash && rm .git -rf && popd && \\\\\\n REPO_URL=$\(grep \\"^sync-uri\\" /etc/portage/repos.conf/science | sed -e \\"s/sync-uri *= *//g\\"\) && \\\\\\n mkdir -p /var/db/repos/science && pushd /var/db/repos/science && git init . && \\\\\\n git remote add origin ${REPO_URL} && \\\\\\n git fetch --filter=\\"blob:none\\" origin $science_hash && \\\\\\n git reset --hard $science_hash && rm .git -rf && popd\\n# Old Christian: Remove sync-uri to not accidentally re-sync if we work with the package management interactively\\n# Christian from the future: Maybe we want the option to re-sync if we'"'"'re debugging it interactively...\\n#RUN sed -i /etc/portage/repos.conf/{gentoo,science} -e \\"s/sync-type *= *git/sync-type =/g\\"\\n#RUN sed -i /etc/portage/repos.conf/{gentoo,science} -e \\"/sync-uri/d\\"\\n#RUN sed -i /etc/portage/repos.conf/{gentoo,science} -e \\"/sync-git-verify-commit-signature/d\\"\\n# Make sure all CPU flags supported by the hardware are whitelisted\\n# This only affects packages with handwritten assembly language optimizations, e.g. ffmpeg.\\n# Removing it is safe, software will just not take full advantage of processor capabilities.\\n#RUN emerge cpuid2cpuflags\\n#RUN echo \\"*/* $\(cpuid2cpuflags\)\\" > /etc/portage/package.use/00cpu-flags\\n### Emerge cool stuff here\\n### Autounmask-continue enables all features on dependencies which the top level packages require\\n### By default this needs user confirmation which would interrupt the build." \
} \
}, \
{ \
"name": "install", \
"kwds": { \
"pkgs": [ \
"afni", \
"fsl" \
], \
"opts": null \
} \
}, \
{ \
"name": "run", \
"kwds": { \
"command": "emerge --autounmask-continue \\\\\\n afni \\\\\\n fsl \\\\\\n && rm -rf /var/tmp/portage/*" \
} \
}, \
{ \
"name": "copy", \
"kwds": { \
"source": [ \
"environment.yml", \
"/opt/environment.yml" \
], \
"destination": "/opt/environment.yml" \
} \
}, \
{ \
"name": "copy", \
"kwds": { \
"source": [ \
"src", \
"/opt/dsst-defacing-pipeline" \
], \
"destination": "/opt/dsst-defacing-pipeline" \
} \
}, \
{ \
"name": "env", \
"kwds": { \
"CONDA_DIR": "/opt/miniconda-latest", \
"PATH": "/opt/miniconda-latest/bin:$PATH" \
} \
}, \
{ \
"name": "run", \
"kwds": { \
"command": "\\n# Install dependencies.\\nexport PATH=\\"/opt/miniconda-latest/bin:$PATH\\"\\necho \\"Downloading Miniconda installer ...\\"\\nconda_installer=\\"/tmp/miniconda.sh\\"\\ncurl -fsSL -o \\"$conda_installer\\" https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh\\nbash \\"$conda_installer\\" -b -p /opt/miniconda-latest\\nrm -f \\"$conda_installer\\"\\nconda update -yq -nbase conda\\n# Prefer packages in conda-forge\\nconda config --system --prepend channels conda-forge\\n# Packages in lower-priority channels not considered if a package with the same\\n# name exists in a higher priority channel. Can dramatically speed up installations.\\n# Conda recommends this as a default\\n# https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-channels.html\\nconda config --set channel_priority strict\\nconda config --system --set auto_update_conda false\\nconda config --system --set show_channel_urls true\\n# Enable `conda activate`\\nconda init bash\\nconda env create --name dsstdeface --file /opt/environment.yml\\n# Clean up\\nsync && conda clean --all --yes && sync\\nrm -rf ~/.cache/pip/*" \
} \
}, \
{ \
"name": "user", \
"kwds": { \
"user": "dsst" \
} \
}, \
{ \
"name": "entrypoint", \
"kwds": { \
"args": [ \
"/opt/dsst-defacing-pipeline/run.py" \
] \
} \
} \
] \
}' > /.reproenv.json
USER dsst
# End saving to specification to JSON.
Manual changes I had to do to the Dockerfile to make it legit -- so you can see that many COPY command should be pulled out, then gentoo-portage -- should not be COPYied, but rather commands to populate those files since they will not present in that repository--- /tmp/Dockerfile 2024-05-07 11:39:41.592262915 -0400
+++ Dockerfile 2024-05-07 11:51:53.162785867 -0400
@@ -2,21 +2,19 @@
FROM docker.io/gentoo/portage:20240324 as portage
FROM docker.io/gentoo/stage3:20240318
-RUN COPY --from=portage /var/db/repos/gentoo /var/db/repos/gentoo \
- && RUN emerge -v --noreplace dev-vcs/git \
- && RUN emerge -v1u portage \
- # Pinned commits for the dependency tree state
- && ARG gentoo_hash=2d25617a1d085316761b06c17a93ec972f172fc6 \
- && ARG science_hash=73916dd3680ffd92e5bd3d32b262e5d78c86a448 \
- && ARG FEATURES="-ipc-sandbox -network-sandbox -pid-sandbox" \
- # This will be bound, and contents available outside of container
- && RUN mkdir /outputs \
- && COPY gentoo-portage/ /etc/portage/ \
- # Moving gentoo repo from default rsync to git
- && RUN rm /var/db/repos/gentoo -rf \
- # Cloning manually to prevent vdb update, pinning state via git
- # Allegedly it's better to chain everything in one command, something with container layers 🤔
- && RUN \
+
+COPY --from=portage /var/db/repos/gentoo /var/db/repos/gentoo
+COPY gentoo-portage/ /etc/portage/
+
+ARG gentoo_hash=2d25617a1d085316761b06c17a93ec972f172fc6 \
+ARG science_hash=73916dd3680ffd92e5bd3d32b262e5d78c86a448 \
+ARG FEATURES="-ipc-sandbox -network-sandbox -pid-sandbox" \
+
+RUN emerge -v --noreplace dev-vcs/git \
+ && emerge -v1u portage \
+ && mkdir /outputs \
+ && rm /var/db/repos/gentoo -rf \
+ && \
REPO_URL=$(grep "^sync-uri" /etc/portage/repos.conf/gentoo | sed -e "s/sync-uri *= *//g") && \
mkdir -p /var/db/repos/gentoo && pushd /var/db/repos/gentoo && git init . && \
git remote add origin ${REPO_URL} && \
@@ -52,7 +50,7 @@
PATH="/opt/miniconda-latest/bin:$PATH"
RUN \
# Install dependencies.
- && export PATH="/opt/miniconda-latest/bin:$PATH" \
+ export PATH="/opt/miniconda-latest/bin:$PATH" \
&& echo "Downloading Miniconda installer ..." \
&& conda_installer="/tmp/miniconda.sh" \
&& curl -fsSL -o "$conda_installer" https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \ |
It is based on WIP done in ReproNim/neurodocker#611 to add support for Gentoo. But it is just a dirty draft so produced docker file is not good.
This can be used to add the COPY line, but it does so at the beginning of the container file This adds the COPY line after the RUN line from
Not sure how to control the position |
We did not figure out good way to do all of that like reacting to specific date. Might need some dedicated handling or option like ndfreeze. Also to figure out how to make it work without specifyin any optional argument
this is the command we ended up testing with
|
works with
|
any progress here to bring PR into the general usability and "ready for review" state @TheChymera ? |
@@ -0,0 +1,6 @@ | |||
[gentoo] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
all the files should be produced by the Dockerfile script, not required to be copied since will need then a copy etc... mess. See https://github.com/nimh-dsst/dsst-defacing-pipeline/pull/41/files
@yarikoptic for the pre-commit, do you know what these errors could be about?
For the actual CI testing, any idea where I can see an error log for this? I see |
re pre-commit quick google leads to a number of hits suggesting to avoid For the other, I don't know what you really see... in that "rendered interface" everything is black for me for awhile... if I open "View raw logs", then there is lots of dumps etc, e.g.
is that what you need? |
@TheChymera pre-commit has been fixed remember to pull first |
work in progress... from here.