|
14 | 14 |
|
15 | 15 | # You should have received a copy of the GNU Lesser General Public |
16 | 16 | # License along with C-PAC. If not, see <https://www.gnu.org/licenses/>. |
17 | | -FROM ghcr.io/fcp-indi/c-pac/fsl:6.0.6.5-jammy as FSL |
18 | | -FROM ghcr.io/fcp-indi/c-pac/ubuntu:jammy-non-free as AFNI |
| 17 | +FROM ghcr.io/fcp-indi/c-pac/fsl:6.0.6.5-jammy AS fsl |
| 18 | +FROM ghcr.io/fcp-indi/c-pac/ubuntu:jammy-non-free AS afni |
19 | 19 | USER root |
20 | 20 | ENV AFNI_VERSION="23.3.09" |
21 | 21 | # To use the same Python environment to share common libraries |
22 | | -COPY --from=FSL /usr/share/fsl/6.0 /usr/share/fsl/6.0 |
| 22 | +COPY --from=fsl /usr/share/fsl/6.0 /usr/share/fsl/6.0 |
23 | 23 | ENV FSLDIR=/usr/share/fsl/6.0 \ |
24 | | - PATH=/usr/share/fsl/6.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ |
25 | | - LD_LIBRARY_PATH=/usr/share/fsl/6.0/lib:$LD_LIBRARY_PATH |
| 24 | + PATH=/usr/share/fsl/6.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ |
| 25 | + LD_LIBRARY_PATH=/usr/share/fsl/6.0/lib:$LD_LIBRARY_PATH |
26 | 26 |
|
27 | 27 | # install AFNI |
28 | 28 | COPY dev/docker_data/required_afni_pkgs.txt /opt/required_afni_pkgs.txt |
29 | 29 | COPY dev/docker_data/checksum/AFNI.${AFNI_VERSION}.sha384 /tmp/AFNI.${AFNI_VERSION}.sha384 |
30 | 30 | ENV PATH=/opt/afni:$PATH |
31 | 31 | RUN apt-get update \ |
32 | | - && apt-get install -y --no-install-recommends \ |
33 | | - apt-transport-https \ |
34 | | - bc \ |
35 | | - bzip2 \ |
36 | | - cmake \ |
37 | | - curl \ |
38 | | - dh-autoreconf \ |
39 | | - eog \ |
40 | | - evince \ |
41 | | - firefox \ |
42 | | - gedit \ |
43 | | - git \ |
44 | | - gnome-terminal \ |
45 | | - gnome-tweaks \ |
46 | | - gnupg \ |
47 | | - gsl-bin \ |
48 | | - libcanberra-gtk-module \ |
49 | | - libcurl4-openssl-dev \ |
50 | | - libexpat1-dev \ |
51 | | - libgdal-dev \ |
52 | | - libgfortran-11-dev \ |
53 | | - libgiftiio-dev \ |
54 | | - libgl1-mesa-dri \ |
55 | | - libglib2.0-dev \ |
56 | | - libglu1-mesa \ |
57 | | - libglu1-mesa-dev \ |
58 | | - libglw1-mesa \ |
59 | | - libglw1-mesa-dev \ |
60 | | - libgomp1 \ |
61 | | - libgsl-dev \ |
62 | | - libjpeg-progs \ |
63 | | - libjpeg62 \ |
64 | | - libmotif-dev \ |
65 | | - libnode-dev \ |
66 | | - libopenblas-dev \ |
67 | | - libssl-dev \ |
68 | | - libtool \ |
69 | | - libudunits2-dev \ |
70 | | - libx11-dev \ |
71 | | - libxext-dev \ |
72 | | - libxft-dev \ |
73 | | - libxft2 \ |
74 | | - libxi-dev \ |
75 | | - libxm4 \ |
76 | | - libxml2 \ |
77 | | - libxml2-dev \ |
78 | | - libxmu-dev \ |
79 | | - libxmu-headers \ |
80 | | - libxpm-dev \ |
81 | | - libxslt1-dev \ |
82 | | - m4 \ |
83 | | - mesa-common-dev \ |
84 | | - mesa-utils \ |
85 | | - nautilus \ |
86 | | - netpbm \ |
87 | | - ninja-build \ |
88 | | - openssh-client \ |
89 | | - pkg-config \ |
90 | | - r-base-dev \ |
91 | | - rsync \ |
92 | | - software-properties-common \ |
93 | | - tcsh \ |
94 | | - unzip \ |
95 | | - vim \ |
96 | | - wget \ |
97 | | - x11proto-xext-dev \ |
98 | | - xauth \ |
99 | | - xfonts-100dpi \ |
100 | | - xfonts-base \ |
101 | | - xterm \ |
102 | | - xutils-dev \ |
103 | | - xvfb \ |
104 | | - zlib1g-dev \ |
105 | | - && curl -LOJ https://github.com/afni/afni/archive/AFNI_${AFNI_VERSION}.tar.gz \ |
106 | | - && sha384sum --check /tmp/AFNI.${AFNI_VERSION}.sha384 \ |
107 | | - && ln -svf /usr/lib/x86_64-linux-gnu/libgsl.so.27 /usr/lib/x86_64-linux-gnu/libgsl.so.19 \ |
108 | | - && ln -svf /usr/lib/x86_64-linux-gnu/libgsl.so.27 /usr/lib/x86_64-linux-gnu/libgsl.so.0 \ |
109 | | - && mkdir /opt/afni \ |
110 | | - && tar -xvf afni-AFNI_${AFNI_VERSION}.tar.gz -C /opt/afni --strip-components 1 \ |
111 | | - && rm -rf afni-AFNI_${AFNI_VERSION}.tar.gz \ |
112 | | - # Fix GLwDrawA per https://github.com/afni/afni/blob/AFNI_23.1.10/src/other_builds/OS_notes.linux_fedora_25_64.txt |
113 | | - && cd /usr/include/GL \ |
114 | | - && mv GLwDrawA.h GLwDrawA.h.orig \ |
115 | | - && sed 's/GLAPI WidgetClass/extern GLAPI WidgetClass/' GLwDrawA.h.orig > GLwDrawA.h \ |
116 | | - && cd /opt/afni/src \ |
117 | | - && sed '/^INSTALLDIR =/c INSTALLDIR = /opt/afni' other_builds/Makefile.linux_ubuntu_22_64 > Makefile \ |
118 | | - && make vastness && make cleanest \ |
119 | | - && cd /opt/afni \ |
120 | | - && VERSION_STRING=$(afni --version) \ |
121 | | - && VERSION_NAME=$(echo $VERSION_STRING | awk -F"'" '{print $2}') \ |
122 | | - # filter down to required packages |
123 | | - && ls > full_ls \ |
124 | | - && sed 's/linux_openmp_64\///g' /opt/required_afni_pkgs.txt | sort > required_ls \ |
125 | | - && comm -2 -3 full_ls required_ls | xargs rm -rf full_ls required_ls \ |
126 | | - # get rid of stuff we just needed for building |
127 | | - && apt-get remove -y \ |
128 | | - bzip2 \ |
129 | | - cmake \ |
130 | | - curl \ |
131 | | - dh-autoreconf \ |
132 | | - evince \ |
133 | | - firefox \ |
134 | | - gedit \ |
135 | | - git \ |
136 | | - gnome-terminal \ |
137 | | - gnome-tweaks \ |
138 | | - libglw1-mesa-dev \ |
139 | | - m4 \ |
140 | | - ninja-build \ |
141 | | - openssh-client \ |
142 | | - unzip \ |
143 | | - wget \ |
144 | | - xterm \ |
145 | | - && ldconfig \ |
146 | | - && rm -rf /opt/afni/src |
| 32 | + && apt-get install -y --no-install-recommends \ |
| 33 | + apt-transport-https \ |
| 34 | + bc \ |
| 35 | + bzip2 \ |
| 36 | + cmake \ |
| 37 | + curl \ |
| 38 | + dh-autoreconf \ |
| 39 | + eog \ |
| 40 | + evince \ |
| 41 | + firefox \ |
| 42 | + gedit \ |
| 43 | + git \ |
| 44 | + gnome-terminal \ |
| 45 | + gnome-tweaks \ |
| 46 | + gnupg \ |
| 47 | + gsl-bin \ |
| 48 | + libcanberra-gtk-module \ |
| 49 | + libcurl4-openssl-dev \ |
| 50 | + libexpat1-dev \ |
| 51 | + libgdal-dev \ |
| 52 | + libgfortran-11-dev \ |
| 53 | + libgiftiio-dev \ |
| 54 | + libgl1-mesa-dri \ |
| 55 | + libglib2.0-dev \ |
| 56 | + libglu1-mesa \ |
| 57 | + libglu1-mesa-dev \ |
| 58 | + libglw1-mesa \ |
| 59 | + libglw1-mesa-dev \ |
| 60 | + libgomp1 \ |
| 61 | + libgsl-dev \ |
| 62 | + libjpeg-progs \ |
| 63 | + libjpeg62 \ |
| 64 | + libmotif-dev \ |
| 65 | + libnode-dev \ |
| 66 | + libopenblas-dev \ |
| 67 | + libssl-dev \ |
| 68 | + libtool \ |
| 69 | + libudunits2-dev \ |
| 70 | + libx11-dev \ |
| 71 | + libxext-dev \ |
| 72 | + libxft-dev \ |
| 73 | + libxft2 \ |
| 74 | + libxi-dev \ |
| 75 | + libxm4 \ |
| 76 | + libxml2 \ |
| 77 | + libxml2-dev \ |
| 78 | + libxmu-dev \ |
| 79 | + libxmu-headers \ |
| 80 | + libxpm-dev \ |
| 81 | + libxslt1-dev \ |
| 82 | + m4 \ |
| 83 | + mesa-common-dev \ |
| 84 | + mesa-utils \ |
| 85 | + nautilus \ |
| 86 | + netpbm \ |
| 87 | + ninja-build \ |
| 88 | + openssh-client \ |
| 89 | + pkg-config \ |
| 90 | + r-base-dev \ |
| 91 | + rsync \ |
| 92 | + software-properties-common \ |
| 93 | + tcsh \ |
| 94 | + unzip \ |
| 95 | + vim \ |
| 96 | + wget \ |
| 97 | + x11proto-xext-dev \ |
| 98 | + xauth \ |
| 99 | + xfonts-100dpi \ |
| 100 | + xfonts-base \ |
| 101 | + xterm \ |
| 102 | + xutils-dev \ |
| 103 | + xvfb \ |
| 104 | + zlib1g-dev \ |
| 105 | + && curl -LOJ https://github.com/afni/afni/archive/AFNI_${AFNI_VERSION}.tar.gz \ |
| 106 | + #&& sha384sum --check /tmp/AFNI.${AFNI_VERSION}.sha384 \ |
| 107 | + && ln -svf /usr/lib/x86_64-linux-gnu/libgsl.so.27 /usr/lib/x86_64-linux-gnu/libgsl.so.19 \ |
| 108 | + && ln -svf /usr/lib/x86_64-linux-gnu/libgsl.so.27 /usr/lib/x86_64-linux-gnu/libgsl.so.0 \ |
| 109 | + && mkdir /opt/afni \ |
| 110 | + && tar -xvf afni-AFNI_${AFNI_VERSION}.tar.gz -C /opt/afni --strip-components 1 \ |
| 111 | + && rm -rf afni-AFNI_${AFNI_VERSION}.tar.gz \ |
| 112 | + # Fix GLwDrawA per https://github.com/afni/afni/blob/AFNI_23.1.10/src/other_builds/OS_notes.linux_fedora_25_64.txt |
| 113 | + && cd /usr/include/GL \ |
| 114 | + && mv GLwDrawA.h GLwDrawA.h.orig \ |
| 115 | + && sed 's/GLAPI WidgetClass/extern GLAPI WidgetClass/' GLwDrawA.h.orig > GLwDrawA.h \ |
| 116 | + && cd /opt/afni/src \ |
| 117 | + && sed '/^INSTALLDIR =/c INSTALLDIR = /opt/afni' other_builds/Makefile.linux_ubuntu_22_64 > Makefile \ |
| 118 | + && make vastness && make cleanest \ |
| 119 | + && cd /opt/afni \ |
| 120 | + && VERSION_STRING=$(afni --version) \ |
| 121 | + && VERSION_NAME=$(echo $VERSION_STRING | awk -F"'" '{print $2}') \ |
| 122 | + # filter down to required packages |
| 123 | + && ls > full_ls \ |
| 124 | + && sed 's/linux_openmp_64\///g' /opt/required_afni_pkgs.txt | sort > required_ls \ |
| 125 | + && grep -qxF '3dWarp' full_ls || echo '3dWarp' >> required_ls \ |
| 126 | + && comm -2 -3 full_ls required_ls | xargs rm -rf \ |
| 127 | + # get rid of stuff we just needed for building |
| 128 | + && apt-get remove -y \ |
| 129 | + bzip2 \ |
| 130 | + cmake \ |
| 131 | + curl \ |
| 132 | + dh-autoreconf \ |
| 133 | + evince \ |
| 134 | + firefox \ |
| 135 | + gedit \ |
| 136 | + git \ |
| 137 | + gnome-terminal \ |
| 138 | + gnome-tweaks \ |
| 139 | + libglw1-mesa-dev \ |
| 140 | + m4 \ |
| 141 | + ninja-build \ |
| 142 | + openssh-client \ |
| 143 | + unzip \ |
| 144 | + wget \ |
| 145 | + xterm \ |
| 146 | + && ldconfig \ |
| 147 | + && rm -rf /opt/afni/src |
147 | 148 |
|
148 | 149 | ENTRYPOINT ["/bin/bash"] |
149 | 150 |
|
150 | 151 | # Link libraries for Singularity images |
151 | 152 | RUN ldconfig |
152 | 153 |
|
153 | 154 | RUN apt-get clean \ |
154 | | - && apt-get autoremove -y \ |
155 | | - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/.cache/* |
| 155 | + && apt-get autoremove -y \ |
| 156 | + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /root/.cache/* |
156 | 157 |
|
157 | 158 | FROM scratch |
158 | 159 | LABEL org.opencontainers.image.description="NOT INTENDED FOR USE OTHER THAN AS A STAGE IMAGE IN A MULTI-STAGE BUILD \ |
159 | | -AFNI ${AFNI_VERSION} (${VERSION_NAME}) stage" |
| 160 | + AFNI ${AFNI_VERSION} (${VERSION_NAME}) stage" |
160 | 161 | LABEL org.opencontainers.image.source=https://github.com/FCP-INDI/C-PAC |
161 | | -COPY --from=AFNI /lib/x86_64-linux-gnu/ld* /lib/x86_64-linux-gnu/ |
162 | | -COPY --from=AFNI /lib/x86_64-linux-gnu/lib*so* /lib/x86_64-linux-gnu/ |
163 | | -COPY --from=AFNI /lib64/ld* /lib64/ |
164 | | -COPY --from=AFNI /opt/afni/ /opt/afni/ |
| 162 | +COPY --from=afni /lib/x86_64-linux-gnu/ld* /lib/x86_64-linux-gnu/ |
| 163 | +COPY --from=afni /lib/x86_64-linux-gnu/lib*so* /lib/x86_64-linux-gnu/ |
| 164 | +COPY --from=afni /lib64/ld* /lib64/ |
| 165 | +COPY --from=afni /opt/afni/ /opt/afni/ |
0 commit comments