diff --git a/Compiler/openmpi/build b/Compiler/openmpi/build index 58dfcd0..ba72c49 100755 --- a/Compiler/openmpi/build +++ b/Compiler/openmpi/build @@ -1,9 +1,6 @@ #!/usr/bin/env modbuild pbuild::pre_configure() { - pbuild::add_configure_args "--enable-shared" - pbuild::add_configure_args "--enable-static" - if (( V_MAJOR < 5 )); then pbuild::add_configure_args "--enable-mpi-cxx" pbuild::add_configure_args "--enable-mpi-cxx-seek" @@ -27,12 +24,17 @@ pbuild::pre_configure() { fi if (( V_MAJOR >= 4 )); then pbuild::add_configure_args "--enable-mpi-fortran" + fi + if (( V_MAJOR == 4 )); then pbuild::add_configure_args "--without-verbs" fi if [[ -v CUDA_VERSION ]]; then std::info "Enabling CUDA ${CUDA_VERSION}." pbuild::add_configure_args "--with-cuda=${CUDA_HOME}" + if (( V_MAJOR >= 5 )); then + pbuild::add_configure_args "--with-cuda-libdir=${CUDA_HOME}/lib64/stubs" + fi fi if [[ -v HWLOC_VERSION ]]; then @@ -77,7 +79,9 @@ pbuild::pre_configure() { pbuild::add_configure_args "FC=ifort" pbuild::add_configure_args "F90=ifort" pbuild::add_configure_args "F77=ifort" - pbuild::add_configure_args "LDFLAGS=-Wc,-static-intel,-O0" + # -O0 was probably added for enabling debugging: + # pbuild::add_configure_args "LDFLAGS=-Wc,-static-intel,-O0" + pbuild::add_configure_args "LDFLAGS=-Wc,-static-intel" fi if pbuild::use_flag slurm || \ @@ -118,7 +122,14 @@ pbuild::post_install_no_slurm() { pbuild::post_install() { if [[ -v CUDA_VERSION ]]; then - echo "opal_warn_on_missing_libcuda = 0" >> ${PREFIX}/etc/openmpi-mca-params.conf + grep -qxF "opal_warn_on_missing_libcuda = 0" ${PREFIX}/etc/openmpi-mca-params.conf || \ + echo "opal_warn_on_missing_libcuda = 0" >> ${PREFIX}/etc/openmpi-mca-params.conf + if (( V_MAJOR == 5 )); then + grep -qxF "mca_base_component_show_load_errors = '^accelerator,rcache,btl/smcuda'" ${PREFIX}/etc/openmpi-mca-params.conf || \ + echo "mca_base_component_show_load_errors = '^accelerator,rcache,btl/smcuda'" >> ${PREFIX}/etc/openmpi-mca-params.conf + grep -qxF "mca_base_component_show_load_errors = '^accelerator,rcache,btl/smcuda'" ${PREFIX}/etc/prte-mca-params.conf || \ + echo "mca_base_component_show_load_errors = '^accelerator,rcache,btl/smcuda'" >> ${PREFIX}/etc/prte-mca-params.conf + fi fi local fname='' diff --git a/Compiler/openmpi/files/config.yaml b/Compiler/openmpi/files/config.yaml index 23f697f..a0e6909 100644 --- a/Compiler/openmpi/files/config.yaml +++ b/Compiler/openmpi/files/config.yaml @@ -8,7 +8,6 @@ openmpi: relstage: stable configure_args: - --enable-shared - - --enable-static docfiles: [AUTHORS, LICENSE, NEWS, README] urls: - url: https://download.open-mpi.org/release/open-mpi/v${V_MAJOR}.${V_MINOR}/openmpi-${V_PKG}.tar.bz2 @@ -58,22 +57,46 @@ openmpi: openmpi-5.0.5.tar.bz2: 6588d57c0a4bd299a24103f4e196051b29e8b55fbda49e11d5b3d32030a32776 versions: + # 5.0.6: + # config: + # configure_args+: + # - --enable-mpi1-compatibility + # - --enable-static=no + # variants: + # - systems: [.*.merlin7.psi.ch] + # relstage: unstable + # overlay: Alps + # use_overlays: [PSI, Alps] + # group_deps: + # compiler: {gcc: [14.2.0,12.3.0,8.5.0], intelcc: [22.2]} + # build_requires: [hwloc/2.11.1, patchelf/0.14.5] + # runtime_deps: [cuda/12.2.0, libfabric/1.15.2.0, pmix/5.0.4] + # configure_args+: + # - --with-cxi + # - --with-lustre + # - --with-slingshot + # use_flags: [merlin7, slurm] + 5.0.5: + config: + configure_args+: + - --enable-mpi1-compatibility + - --enable-static=no variants: - systems: [.*.merlin7.psi.ch] - relstage: unstable + relstage: stable overlay: Alps - use_overlays: [PSI] - use_flags: [merlin7] + use_overlays: [PSI, Alps] group_deps: - compiler: {gcc: [12.3.0], intelcc: [22.2]} - build_requires: [pmix/5.0.3, hwloc/2.11.1, libfabric/1.15.2.0, patchelf/0.14.5] - runtime_deps: [cuda/12.2.0] + compiler: {gcc: [14.2.0, 12.3.0, 8.5.0], + intelcc: [22.2]} + build_requires: [hwloc/2.11.1, patchelf/0.14.5] + runtime_deps: [cuda/12.2.0, libfabric/1.15.2.0, pmix/5.0.3] configure_args+: - - --enable-mpi1-compatibility - --with-cxi - --with-lustre - --with-slingshot + use_flags: [merlin7, slurm] 4.1.6: config: @@ -82,7 +105,7 @@ openmpi: - systems: [merlin-.*] suffix: _slurm use_flags: [merlin6, gpfs] - relstage: unstable + relstage: stable overlay: base group_deps: compiler: {gcc: [9.5.0, 10.4.0, 11.4.0, 12.3.0, 12.4.0, 13.1.0, 13.2.0, 14.2.0]} @@ -98,6 +121,7 @@ openmpi: - LDFLAGS=-g - --with-gpfs=/usr/lpp/mmfs - --with-pmi=/usr + - --enable-static - systems: [ra-.*] suffix: _ra @@ -109,16 +133,18 @@ openmpi: configure_args+: - --with-gpfs=/usr/lpp/mmfs - --with-pmi=/usr + - --enable-static - systems: [.*.merlin7.psi.ch] - relstage: unstable + relstage: stable overlay: Alps group_deps: - compiler: {gcc: [12.3.0], intelcc: [22.2]} - build_requires: [pmix/4.2.9, hwloc/2.11.1, libfabric/1.15.2.0, patchelf/0.14.5] - runtime_deps: [cuda/12.2.0] + compiler: {gcc: [12.3.0, 13.3.0, 14.2.0], intelcc: [22.2]} + build_requires: [hwloc/2.11.1, patchelf/0.14.5] + runtime_deps: [cuda/12.2.0, libfabric/1.15.2.0, pmix/4.2.9] configure_args+: - --enable-mpi1-compatibility + - --enable-static=no - --with-lustre use_overlays: [PSI, Alps] use_flags: [merlin7, slurm] diff --git a/Compiler/openmpi/modulefile b/Compiler/openmpi/modulefile index d67d904..56befdc 100644 --- a/Compiler/openmpi/modulefile +++ b/Compiler/openmpi/modulefile @@ -44,3 +44,12 @@ if { $libcuda eq "" } { prepend-path LD_LIBRARY_PATH $PREFIX/lib/fallback/cuda } } + +if {[info exists ::env(PMIX_VERSION)]} { + set pmix_major_version [lindex [split $::env(PMIX_VERSION) "."] 0] + setenv SLURM_MPI_TYPE "pmix_v$pmix_major_version" +} + +if { $V_MAJOR >= 5 } { + setenv OMPI_MCA_mca_base_component_show_load_errors = '^accelerator,rcache,btl/smcuda' +} diff --git a/EM/DeepEMhancer/build b/EM/DeepEMhancer/build new file mode 100755 index 0000000..cbf5ff7 --- /dev/null +++ b/EM/DeepEMhancer/build @@ -0,0 +1,34 @@ +#!/usr/bin/env modbuild + + +pbuild::configure() { + #MINICONDA INSTALL + mkdir -p "$PREFIX/miniconda" + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O "$PREFIX/miniconda/miniconda.sh" + bash "$PREFIX/miniconda/miniconda.sh" -b -u -p "$PREFIX/miniconda/" + + + #CREATE ENV + "$PREFIX/miniconda/condabin/conda" env create --name "${P}_${V}" -f "$BUILDBLOCK_DIR/environment.yaml" + + + #activate env and download deep learning models + mkdir -p "$PREFIX/deepmodels" + source "$PREFIX/miniconda/etc/profile.d/conda.sh" + conda activate "${P}_${V}" + deepemhancer --download "$PREFIX/deepmodels" + conda deactivate +} + +#DO NOTHING +pbuild::compile(){ + : +} + +pbuild::install(){ + : +} + + + + diff --git a/EM/DeepEMhancer/environment.yaml b/EM/DeepEMhancer/environment.yaml new file mode 100644 index 0000000..9a2d1d9 --- /dev/null +++ b/EM/DeepEMhancer/environment.yaml @@ -0,0 +1,7 @@ +channels: + - rsanchez1369 + - anaconda + - conda-forge +dependencies: + - python=3.10 + - deepEMhancer diff --git a/EM/DeepEMhancer/files/config.yaml b/EM/DeepEMhancer/files/config.yaml new file mode 100644 index 0000000..5b4312b --- /dev/null +++ b/EM/DeepEMhancer/files/config.yaml @@ -0,0 +1,13 @@ +--- +format: 1 +DeepEMhancer: + defaults: + group: EM + overlay: base + relstage: unstable + versions: + 0.16: + variants: + - overlay: Alps + systems: [.*.merlin7.psi.ch] + relstage: unstable diff --git a/EM/DeepEMhancer/modulefile b/EM/DeepEMhancer/modulefile new file mode 100644 index 0000000..657d101 --- /dev/null +++ b/EM/DeepEMhancer/modulefile @@ -0,0 +1,34 @@ +#%Module + +module-whatis "Deep cryo-EM Map Enhancer (DeepEMhancer) " +module-url "https://github.com/rsanchezgarc/deepEMhancer" +module-license "Apache-2.0 License" +module-maintainer "Greta Assmann " + +module-help "DeepEMhancer is a python package designed to perform post-processing of cryo-EM maps as described in DeepEMhancer: a deep learning solution for cryo-EM volume post-processing, by Sanchez-Garcia et al, 2021." + +# Check for supported shell types +set shelltype [module-info shelltype] +switch -- $shelltype { + "sh" { + puts stdout "conda(){ :; };" + puts stdout "set +u" + puts stdout "source \"${PREFIX}\"/miniconda/etc/profile.d/conda.sh;\n" + } + default { + puts stderr "Shells of type '$shelltype' are NOT supported!" + } +} + + +switch [module-info mode] { + "load" { + # Relies on the anaconda module being loaded since we need to update the path + puts stdout "conda activate ${P}_${V};\n" + } + "unload" - + "remove" { + puts stdout "conda deactivate;\n" + } +} + diff --git a/EM/EMAN/README.md b/EM/EMAN/README.md new file mode 100644 index 0000000..5636bcb --- /dev/null +++ b/EM/EMAN/README.md @@ -0,0 +1,10 @@ +# EMAN + +From version 2.99.53 (Oct. 23) EMAN is built as a conda package. + +Current installation on Merlin7 (Nov 24) is 2.99.66 + + +### Hints + +conda installation on A100 GPU diff --git a/EM/EMAN/build b/EM/EMAN/build index e72e4e4..789c7bd 100755 --- a/EM/EMAN/build +++ b/EM/EMAN/build @@ -1,23 +1,27 @@ #!/usr/bin/env modbuild -pbuild::add_to_group 'EM' - -pbuild::prep() { - local EMAN2DL="${PMODULES_TMPDIR:-/tmp}/eman${V}_sphire1.4_sparx.linux64.sh" - - if ! [ -f "$EMAN2DL" ]; then - wget -O "$EMAN2DL" "https://cryoem.bcm.edu/cryoem/static/software/release-${V}/eman${V}_sphire1.4_sparx.linux64.sh" - fi -} pbuild::configure() { + #MINICONDA INSTALL + mkdir -p "$PREFIX/miniconda" + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O "$PREFIX/miniconda/miniconda.sh" + bash "$PREFIX/miniconda/miniconda.sh" -b -u -p "$PREFIX/miniconda/" + + + #CREATE ENV , make sure to source the "correct" conda.sh + "$PREFIX/miniconda/condabin/conda" env create --name "${P}_${V}" -f "$BUILDBLOCK_DIR/environment.yaml" + +} + +#DO NOTHING +pbuild::compile(){ : } -pbuild::install() { +pbuild::install(){ : } -pbuild::compile() { - bash ${PMODULES_TMPDIR:-/tmp}/eman${V}_sphire1.4_sparx.linux64.sh -u -b -p $PREFIX -} + + + diff --git a/EM/EMAN/environment.yaml b/EM/EMAN/environment.yaml new file mode 100644 index 0000000..ad410e6 --- /dev/null +++ b/EM/EMAN/environment.yaml @@ -0,0 +1,5 @@ +channels: + - cryoem + - conda-forge +dependencies: + - eman-dev diff --git a/EM/EMAN/files/config.yaml b/EM/EMAN/files/config.yaml new file mode 100644 index 0000000..0fce05e --- /dev/null +++ b/EM/EMAN/files/config.yaml @@ -0,0 +1,13 @@ +--- +format: 1 +EMAN: + defaults: + group: EM + overlay: base + relstage: unstable + versions: + 2.99.66: + variants: + - overlay: Alps + systems: [.*.merlin7.psi.ch] + relstage: unstable diff --git a/EM/EMAN/files/variants b/EM/EMAN/files/variants deleted file mode 100644 index f50340f..0000000 --- a/EM/EMAN/files/variants +++ /dev/null @@ -1,2 +0,0 @@ -EMAN/2.99.47 unstable cuda/11.2.2 -EMAN/2.2 stable diff --git a/EM/EMAN/modulefile b/EM/EMAN/modulefile index ae15052..a664602 100644 --- a/EM/EMAN/modulefile +++ b/EM/EMAN/modulefile @@ -1,37 +1,34 @@ -#%Module1.0 +#%Module -set dont-setenv {LD_LIBRARY_PATH} +module-whatis "EMAN2 is a broadly based greyscale scientific image processing suite with a primary focus on processing data from transmission electron microscopes " +module-url "https://blake.bcm.edu/emanwiki/EMAN2" +module-license "GNU gerneral public license: GPLv2" +module-maintainer "Greta Assmann " -module-whatis "EMAN(2) is a broadly based greyscale scientific image processing suite with a primary focus on processing data from transmission electron microscopes" -module-url "https://blake.bcm.edu/emanwiki/EMAN2" -module-license "GPL license" -module-maintainer "Elsa Germann " +module-help "EMAN2 is a broadly based greyscale scientific image processing suite with a primary focus on processing data from transmission electron microscopes. EMAN's original purpose was performing single particle reconstructions (3-D volumetric models from 2-D cryo-EM images) at the highest possible resolution, but the suite now also offers support for single particle cryo-ET, and tools useful in many other subdisciplines such as helical reconstruction, 2-D crystallography and whole-cell tomography. EMAN2 is capable of processing large data sets (>100,000 particle) very efficiently" -module-help "EMAN2 is a broadly based greyscale scientific image processing suite with a primary focus on processing data from transmission electron microscopes. EMAN's original purpose was performing single particle reconstructions (3-D volumetric models from 2-D cryo-EM images) at the highest possible resolution, but the suite now also offers support for single particle cryo-ET, and tools useful in many other subdisciplines such as helical reconstruction, 2-D crystallography and whole-cell tomography. EMAN2 is capable of processing large data sets (>100,000 particle) very efficiently. +# Check for supported shell types +set shelltype [module-info shelltype] +switch -- $shelltype { + "sh" { + puts stdout "conda(){ :; };" + puts stdout "set +u" + puts stdout "source \"${PREFIX}\"/miniconda/etc/profile.d/conda.sh;\n" + } + default { + puts stderr "Shells of type '$shelltype' are NOT supported!" + } +} -Please also note that this is not the (related) EMEN2 electronic notebook, but is EMAN2, a scientific image processing suite. -Please Cite (and read) +switch [module-info mode] { + "load" { + # Relies on the anaconda module being loaded since we need to update the path + puts stdout "conda activate ${P}_${V};\n" + } + "unload" - + "remove" { + puts stdout "conda deactivate;\n" + } +} -EMAN is free software, supported by NIH Grants. It is critical that you cite EMAN2 when you use it in a publication in any significant way, to help us document usage when trying to renew our funding. Feel free to cite any of these: - - Primary EMAN2 paper: - - G. Tang, L. Peng, P.R. Baldwin, D.S. Mann, W. Jiang, I. Rees & S.J. Ludtke. (2007) EMAN2: an extensible image processing suite for electron microscopy. J Struct Biol. 157, 38-46. PMID: 16859925 - - Subnanometer resolution subtomogram averaging using PPPT methods: - Chen M, Bell JM, Shi X, Sun SY, Wang Z, Ludtke SJ. Nat Methods. (2019) A complete data processing workflow for cryo-ET and subtomogram averaging, Nat. Methods, 16(11):1161-1168, PMC31611690 - - Neural Network Based Tomogram Segmentation - Chen M, Dai W, Sun SY, Jonasch D, He CY, Schmid MF, et al. (2017). Convolutional neural networks for automated annotation of cellular cryo-electron tomograms. Nat. Methods, 14(10), 983–5. PMCID: PMC5623144 - - Neural Network Particle Picker - Bell JM, Chen M, Durmaz T, Fluty AC, Ludtke SJ. (2018). New software tools in EMAN2 inspired by EMDatabank map challenge. J. Struct. Biol. Elsevier;, 204(2), 283–90. - - EMAN2 high resolution refinement methods: - - J.M. Bell, M. Chen, P.R. Baldwin & S.J. Ludtke. (2016) High Resolution Single Particle Refinement in EMAN2.1. Methods. 100, 25-34. PMC4848122 - - Methods for analysis of conformational and compositional variability: - Ludtke, S. J. \"Single-Particle Refinement and Variability Analysis in EMAN2.1.\" in Methods Enzymol 579159-189 (Elsevier, United States, 2016). PMC5101015 -" diff --git a/EM/IMOD/README.md b/EM/IMOD/README.md index 034c88d..452197b 100644 --- a/EM/IMOD/README.md +++ b/EM/IMOD/README.md @@ -12,3 +12,7 @@ The installation includes environment scripts which install into `$IMOD_DIR/profile.d`. These are sourced in the modulefile. This means that the module cannot be unloaded cleanly (eg IMOD remains in the PATH after unloading). + +TODO solution: re-write the .sh script that is sourced in the modulefile into the +modulefile directly. Variables and Path extensions will then automatically be +"unset" when unloding. diff --git a/EM/IMOD/build b/EM/IMOD/build index f4fdc4d..2a4b937 100755 --- a/EM/IMOD/build +++ b/EM/IMOD/build @@ -1,18 +1,16 @@ #!/usr/bin/env modbuild -set -e -pbuild::add_to_group 'EM' pbuild::prep() { : ${CUDA_VERSION:?No CUDA_VERSION set} + #local cuda="${CUDA_VERSION%.*}" IF the cua version matches the cuda version in the filename local cuda="${CUDA_VERSION%.*}" - local filename="imod_${V_PKG}_RHEL7-64_CUDA${cuda}.sh" - if [[ $V_RELEASE == *beta* ]]; then - local url="https://bio3d.colorado.edu/ftp/latestIMOD/RHEL7-64_CUDA${cuda}/$filename" - else - local url="https://bio3d.colorado.edu/imod/AMD64-RHEL5/$filename" - fi + #otherwise: + local cuda="12.0" + local filename="imod_${V_PKG}_RHEL8-64_CUDA${cuda}.sh" + # beta release link for Merlin7 ( RH8 for Opensuse) + local url="https://bio3d.colorado.edu/ftp/latestIMOD/RHEL8-64_CUDA${cuda}/$filename" local dst="$PMODULES_DISTFILESDIR/${filename}" if [ -f "$dst" ]; then echo "Found cached $dst" >&2 @@ -35,8 +33,11 @@ pbuild::compile() { pbuild::install() { : ${CUDA_VERSION:?No CUDA_VERSION set} - local cuda="${CUDA_VERSION%.*}" - local filename="imod_${V_PKG}_RHEL7-64_CUDA${cuda}.sh" + #local cuda="${CUDA_VERSION%.*}" + #(if cuda version matches the file name) if not: + local cuda="12.0" + + local filename="imod_${V_PKG}_RHEL8-64_CUDA${cuda}.sh" local dst="$PMODULES_DISTFILESDIR/${filename}" mkdir -p "$PREFIX/profile.d" diff --git a/EM/IMOD/files/config.yaml b/EM/IMOD/files/config.yaml new file mode 100644 index 0000000..c62c171 --- /dev/null +++ b/EM/IMOD/files/config.yaml @@ -0,0 +1,15 @@ +--- +format: 1 +IMOD: + defaults: + group: EM + overlay: base + relstage: unstable + versions: + 5.0.0: + variants: + - overlay: Alps + systems: [.*.merlin7.psi.ch] + relstage: unstable + runtime_deps: + - cuda/12.2.0 diff --git a/EM/IMOD/files/variants b/EM/IMOD/files/variants deleted file mode 100644 index 2c4368a..0000000 --- a/EM/IMOD/files/variants +++ /dev/null @@ -1,4 +0,0 @@ -IMOD/4.9.5 stable -IMOD/4.11.20 stable cuda/10.1.105 -IMOD/4.11.24 unstable cuda/10.1.105 -IMOD/4.12.50-beta unstable cuda/10.1.105 diff --git a/EM/IMOD/modulefile b/EM/IMOD/modulefile index d19b9e2..e3f1302 100644 --- a/EM/IMOD/modulefile +++ b/EM/IMOD/modulefile @@ -3,7 +3,7 @@ module-whatis "IMOD is a set of image processing, modeling and display programs used for tomographic reconstruction and for 3D reconstruction of EM serial sections and optical sections." module-url "http://bio3d.colorado.edu/imod/" module-license "mostly GPLv2.0, with the exceptions, see http://bio3d.colorado.edu/imod/COPYRIGHT.txt" -module-maintainer "Spencer Bliven / Dmitry Ozerov " +module-maintainer "Greta Assmann - greta.assmann@psi.ch" module-help " IMOD is a set of image processing, modeling and display programs used for tomographic @@ -34,6 +34,11 @@ For tomographic reconstruction, see also: > tomographic reconstruction in IMOD. J. Struct. Biol. 197:102-113. " +# TO DO : rewrite IMOD-linx.sh script directly into the following section instead of sourcing the script + +#this is needed to NOT set the default IMOD_DIR by pmodules, as this is set later in the IMOD-linux.sh +set dont-setenv { IMOD_DIR } + switch [module-info mode] { "load" { puts stdout "source $PREFIX/profile.d/IMOD-linux.sh" diff --git a/EM/PEET/README.md b/EM/PEET/README.md index 9828d75..fb5b585 100644 --- a/EM/PEET/README.md +++ b/EM/PEET/README.md @@ -6,9 +6,7 @@ PEET is shipped as a self-expanding installation script. Run `./build` to install. - -An experimental config.yaml files is included using Pmodules/1.1.10 syntax. -This should probably not be used until yaml support in modbuild stabilizes. +This module is usually used in combination with IMOD (etomo GUI). ## Testing @@ -16,12 +14,17 @@ This should probably not be used until yaml support in modbuild stabilizes. ## Build notes -Building was successful with Pmodules 1.1.8 but not 1.1.9 or 1.1.10. Linking the binary is a bit of a pain. It requires gcc to be loaded to provide relatively recent versions of libstdc++.so.6. I didn't fine what exact version Matlab MCR expects, but 9.5.0 seemed to work. MCR is linked dynamically at runtime through LD_LIBRARY_PATH. This is not set in the modulefile as expected, but rather in wrapper scripts which source particle.cfg. Sed commands in -pbuild::install update this file so that it reads the loaded modules correctly. +pbuild::install update this file so that it reads the loaded modules correctly. +(Remark Nov. 2024: still true for version 1.17.0) +## Versions + +According to the website (INSTALL.TXT) the following Matlab is needed : + +-1.17.0 : 2022b (Merlin7, automatically loads matlab) diff --git a/EM/PEET/build b/EM/PEET/build index 27d7f66..caceb01 100755 --- a/EM/PEET/build +++ b/EM/PEET/build @@ -1,6 +1,5 @@ #!/usr/bin/env modbuild -pbuild::add_to_group 'EM' pbuild::prep() { @@ -13,6 +12,7 @@ pbuild::prep() { --fail \ --output "$dst" \ "https://bio3d.colorado.edu/ftp/PEET/linux/Particle_${V_PKG}_linux.sh" + --no-check-certificate fi } diff --git a/EM/PEET/files/_config.yaml.disable b/EM/PEET/files/_config.yaml.disable deleted file mode 100644 index 64da532..0000000 --- a/EM/PEET/files/_config.yaml.disable +++ /dev/null @@ -1,8 +0,0 @@ -overlay: base -relstage: stable -group: EM -shasums: - PEET/1.15.1a: de4e9104f90b9379502a34b58be33eafd5514d554002a94efe2adba6f44785e6 - -PEET/1.15.1a: - - relstage: unstable diff --git a/EM/PEET/files/config.yaml b/EM/PEET/files/config.yaml new file mode 100644 index 0000000..5470687 --- /dev/null +++ b/EM/PEET/files/config.yaml @@ -0,0 +1,16 @@ +--- +format: 1 +PEET: + defaults: + group: EM + overlay: base + relstage: unstable + versions: + 1.17.0: + variants: + - overlay: Alps + systems: [.*.merlin7.psi.ch] + relstage: unstable + runtime_deps: + - gcc/12.3.0 + - matlab/2022b diff --git a/EM/PEET/files/variants b/EM/PEET/files/variants deleted file mode 100644 index 05b2b61..0000000 --- a/EM/PEET/files/variants +++ /dev/null @@ -1,2 +0,0 @@ -PEET/1.15.1a stable gcc/9.5.0 matlab/2020b -PEET/1.16.0 stable gcc/9.5.0 matlab/2021b diff --git a/EM/PEET/modulefile b/EM/PEET/modulefile index 7510133..f95a274 100644 --- a/EM/PEET/modulefile +++ b/EM/PEET/modulefile @@ -3,7 +3,7 @@ module-whatis "PEET (Particle Estimation for Electron Tomography) is an open-source package for aligning and averaging particles in 3-D subvolumes extracted from tomograms." module-url "https://bio3d.colorado.edu/PEET/" module-license "GPLv2 license" -module-maintainer "Spencer Bliven " +module-maintainer "Greta Assmann " module-help " PEET (Particle Estimation for Electron Tomography) is an open-source package diff --git a/EM/crYOLO/README.md b/EM/crYOLO/README.md index 9845306..0af8110 100644 --- a/EM/crYOLO/README.md +++ b/EM/crYOLO/README.md @@ -1,14 +1,15 @@ # crYOLO crYOLO/1.2.3 was built as a miniconda independent environment. -Subsequent versions are deployed as central conda environments. -This significantly changed the build process. +Subsequent versions (up to 1.6.1) are deployed as central conda environments + +crYOLO/1.9.9 (Merlin7, oct 2024) is installed with an independent miniconda setup again. + +From crYOLO/1.9.9 crYOLO exists as two different conda envs, one crYOLO (code itself) env, one napari (visualization) env. +The installation notes recommend to link one into another, on Merlin7 simply two different modules and envs exist. +Users need to load one env in one terminal ( crYOLO itself) and another for visualization (napari). ## Adding New Versions -To add a new version, first create the conda environment, as described in -../../Programming/anaconda/2019.07/conda-env-defs/cryolo/. - -Next, update files/variants with the new version and run `./build ` to -install the modulefile +Adding new versions: change the environment file in the build folder accordingly (and the config.yaml file) and run the build script. diff --git a/EM/crYOLO/build b/EM/crYOLO/build index 6f1766a..789c7bd 100755 --- a/EM/crYOLO/build +++ b/EM/crYOLO/build @@ -1,20 +1,27 @@ #!/usr/bin/env modbuild -pbuild::add_to_group 'EM' -pbuild::prep() { - : -} - pbuild::configure() { + #MINICONDA INSTALL + mkdir -p "$PREFIX/miniconda" + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O "$PREFIX/miniconda/miniconda.sh" + bash "$PREFIX/miniconda/miniconda.sh" -b -u -p "$PREFIX/miniconda/" + + + #CREATE ENV , make sure to source the "correct" conda.sh + "$PREFIX/miniconda/condabin/conda" env create --name "${P}_${V}" -f "$BUILDBLOCK_DIR/environment.yaml" + +} + +#DO NOTHING +pbuild::compile(){ : } -pbuild::compile() { +pbuild::install(){ : } -pbuild::install() { - : -} + + diff --git a/EM/crYOLO/files/config-1.2.3.sh b/EM/crYOLO/files/config-1.2.3.sh deleted file mode 100644 index 319d977..0000000 --- a/EM/crYOLO/files/config-1.2.3.sh +++ /dev/null @@ -1,10 +0,0 @@ -# crYOLO configuration variables - -# Miniconda installer filename. Defaults to 'latest' -MINICONDA_VERSION='Miniconda2-4.5.12-Linux-x86_64.sh' - -# cryoloBM download url -CRYOLOBM_URL='ftp://ftp.gwdg.de/pub/misc/sphire/crYOLO_BM_V1_1_1/cryoloBM-1.1.1.tar.gz' -# cryolo download url. Default: -#CRYOLO_URL='ftp://ftp.gwdg.de/pub/misc/sphire/crYOLO_V1_2_3/cryolo-1.2.3.tar.gz' - diff --git a/EM/crYOLO/files/config.yaml b/EM/crYOLO/files/config.yaml new file mode 100644 index 0000000..8b6b49a --- /dev/null +++ b/EM/crYOLO/files/config.yaml @@ -0,0 +1,13 @@ +--- +format: 1 +crYOLO: + defaults: + group: EM + overlay: base + relstage: unstable + versions: + 1.9.9: + variants: + - overlay: Alps + systems: [.*.merlin7.psi.ch] + relstage: unstable diff --git a/EM/crYOLO/files/variants b/EM/crYOLO/files/variants deleted file mode 100644 index 3248392..0000000 --- a/EM/crYOLO/files/variants +++ /dev/null @@ -1,5 +0,0 @@ -crYOLO/1.2.3 deprecated cuda/9.0.176 -crYOLO/1.5.6_gpu stable anaconda/2019.07 -crYOLO/1.6.1_gpu stable anaconda/2019.07 -crYOLO/1.6.1_cpu stable anaconda/2019.07 - diff --git a/EM/crYOLO/modulefile b/EM/crYOLO/modulefile index 41cf27a..4a9df37 100644 --- a/EM/crYOLO/modulefile +++ b/EM/crYOLO/modulefile @@ -3,7 +3,7 @@ module-whatis "crYOLO is a fast and accurate particle picking procedure for electron microscopy" module-url "http://sphire.mpg.de/wiki/doku.php?id=pipeline:window:cryolo" module-license "SPHIRE-crYOLO Complimentary Science Software License (http://sphire.mpg.de/wiki/doku.php?id=cryolo_license). Non-commercial academic and research purposes only" -module-maintainer "Spencer Bliven " +module-maintainer "Greta Assmann " module-help " CrYOLO is a fast and accurate particle picking procedure. It's based on @@ -26,28 +26,20 @@ convolutional neural networks and utilizes the popular You Only Look Once set shelltype [module-info shelltype] switch -- $shelltype { "sh" { - puts stdout "source \"\${ANACONDA_PREFIX}\"/admintools/conda_setup.sh;\n" + puts stdout "conda(){ :; };" + puts stdout "set +u" + puts stdout "source \"${PREFIX}\"/miniconda/etc/profile.d/conda.sh;\n" } default { puts stderr "Shells of type '$shelltype' are NOT supported!" } } -# Determine useflags and construct conda env name -set list [split $V "_"] -set version [lindex ${list} 0] -set useflags [lrange ${list} 1 end] -set flavour [lindex $useflags 0] -set env_to_activate [string tolower ${P}]-${version}-${flavour} - -#puts stderr "P/V: $P/$V" -#puts stderr "USEFLAG: [lindex $useflags 0]" -#puts stderr "$env_to_activate" switch [module-info mode] { "load" { # Relies on the anaconda module being loaded since we need to update the path - puts stdout "conda activate $env_to_activate;\n" + puts stdout "conda activate ${P}_${V};\n" } "unload" - "remove" { diff --git a/EM/napari/README.md b/EM/napari/README.md new file mode 100644 index 0000000..0c1b1b0 --- /dev/null +++ b/EM/napari/README.md @@ -0,0 +1,12 @@ +# napari-boxmanager + +The napari module is built in combination with the crYOLO module : + +From crYOLO/1.9.9 crYOLO exists as two different conda envs, one crYOLO (code itself) env, one napari (visualization) env. +The installation notes recommend to link one into another, on Merlin7 simply two different modules and envs exist. +Users need to load one env in one terminal ( crYOLO itself) and another for visualization (napari). + +## Adding New Versions + +Adding new versions: change the environment file in the build folder accordingly (and the config.yaml file) and run the build script. + diff --git a/EM/napari/build b/EM/napari/build new file mode 100755 index 0000000..789c7bd --- /dev/null +++ b/EM/napari/build @@ -0,0 +1,27 @@ +#!/usr/bin/env modbuild + + +pbuild::configure() { + #MINICONDA INSTALL + mkdir -p "$PREFIX/miniconda" + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O "$PREFIX/miniconda/miniconda.sh" + bash "$PREFIX/miniconda/miniconda.sh" -b -u -p "$PREFIX/miniconda/" + + + #CREATE ENV , make sure to source the "correct" conda.sh + "$PREFIX/miniconda/condabin/conda" env create --name "${P}_${V}" -f "$BUILDBLOCK_DIR/environment.yaml" + +} + +#DO NOTHING +pbuild::compile(){ + : +} + +pbuild::install(){ + : +} + + + + diff --git a/EM/napari/environment.yaml b/EM/napari/environment.yaml new file mode 100644 index 0000000..422be97 --- /dev/null +++ b/EM/napari/environment.yaml @@ -0,0 +1,11 @@ +channels: + - conda-forge + - anaconda +dependencies: + - python=3.10 + - pyqt + - napari=0.4.17 + - pip + - pip: + - napari-boxmanager + diff --git a/EM/napari/files/config.yaml b/EM/napari/files/config.yaml new file mode 100644 index 0000000..7b4c0ed --- /dev/null +++ b/EM/napari/files/config.yaml @@ -0,0 +1,13 @@ +--- +format: 1 +napari: + defaults: + group: EM + overlay: base + relstage: unstable + versions: + 0.4.17: + variants: + - overlay: Alps + systems: [.*.merlin7.psi.ch] + relstage: unstable diff --git a/EM/napari/modulefile b/EM/napari/modulefile new file mode 100644 index 0000000..4855327 --- /dev/null +++ b/EM/napari/modulefile @@ -0,0 +1,34 @@ +#%Module + +module-whatis "Particle selection tool for cryo-em (crYOLO) " +module-url "https://cryolo.readthedocs.io/en/stable/installation.html#install-napari-and-the-boxmanager-plugin" +module-license "SPHIRE-crYOLO Complimentary Science Software License (http://sphire.mpg.de/wiki/doku.php?id=cryolo_license). Non-commercial academic and research purposes only" +module-maintainer "Greta Assmann " + +module-help "Napari-Boxmanager is a tool to use in combination with crYOLO (visualization for particle picking) " + +# Check for supported shell types +set shelltype [module-info shelltype] +switch -- $shelltype { + "sh" { + puts stdout "conda(){ :; };" + puts stdout "set +u" + puts stdout "source \"${PREFIX}\"/miniconda/etc/profile.d/conda.sh;\n" + } + default { + puts stderr "Shells of type '$shelltype' are NOT supported!" + } +} + + +switch [module-info mode] { + "load" { + # Relies on the anaconda module being loaded since we need to update the path + puts stdout "conda activate ${P}_${V};\n" + } + "unload" - + "remove" { + puts stdout "conda deactivate;\n" + } +} + diff --git a/EM/relion/.build.swn b/EM/relion/.build.swn deleted file mode 100644 index e69de29..0000000 diff --git a/EM/relion/README.md b/EM/relion/README.md index 095d00f..f1c1701 100644 --- a/EM/relion/README.md +++ b/EM/relion/README.md @@ -12,4 +12,46 @@ and MKL, but this would require additional openmpi variants. After running ./build, install relion scripts from the repository at https://git.psi.ch/lsm-hpce/relion-scripts -From version 5.0-beta on, a conda env is required. conda env is build in the folder $SRC\_DIR/conda\_envs. Also, weights for BLUSH, MODEL-ANGELO and CLASS-RANKER are downloaded in the installation step. +## Important info per version! + +### 5.0-beta (OLD, Merlin6) +- From version 5.0-beta on, a conda env is required (done with central anaconda module, needs to be done on pmod7 because of AFS hardlinks) +- the conda env is build in the folder $SRC\_DIR/conda\_envs. Also, weights for BLUSH, MODEL-ANGELO and CLASS-RANKER are downloaded in the installation step. + +### 5.0-1beta (OLD, Merlin6) +- the conda env is made with a miniconda installation, and because of upgrading to Pmodules/1.1.21 , the variants file was dropped and changed into the config.yaml file. +- The build script was also updated accordingly +- Also, cryocare is now available in a wrapper from relion, the cryocare installation executables need to be provided (seperate cryocare module). It is crucial to add the cryocare lib path (from the cryocare conda env) to the LD_LIBRARY_PATH when loading the relion module +- tiff module no longer required, as this conflicts with the system shared tiff libs (not 100% sure why this canged from previous installations though) + +### 5.0-2beta (ON MERLIN7) +- no fetching of weights with ftp possible, so cp from other machines into BUILD DIR and using the -DFETCH\_WEIGHTS=OFF option +- link : ftp://ftp.mrc-lmb.cam.ac.uk/pub/scheres/fltk-1.3.5-source.tar.gz +- link : ftp://ftp.mrc-lmb.cam.ac.uk/pub/dari/classranker\_v1.0.ckpt.gz + +### 5.0.0 A100 +- same as 5.0-2beta (especially when it comes to the weights...) +- copy the fltk and the classranker file into the BUILD Directory. The build script assumes that these two files are in the BUILD\_DIR. +- sha256 errors occured during installation: +```text +ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them. + unknown package: + Expected sha256 20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf + Got e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +``` +- The download of some packages (.whl files) was blocked by the merlin7 firewall. Google the shasum and find the package name. Try to manually download with curl. If this fails, this is a strong indication for network/firewall issues that need to be adressed by the networking team. .whl files from conda +pip installations are ususally stored in the env in lib/pythonXXX. +- Also, to not clean up build directories: +```text +--no-clean +Don't clean up build directories. +(environment variable: PIP_NO_CLEAN) + +``` +- adding flags to activate more aggressive compiler optimsations (affixing to `x86-64-v3` which is fully support on all EPYC nodes on Merlin7) + +### 5.0.0 for GH + +no successful installation so far - failing for conda env. Elsa G. build some hacky hack that works kind of.. +needs to be investigated further. + +- will attempt to build with more aggressive compiler optimisations as proscribed in: diff --git a/EM/relion/build b/EM/relion/build index 6e3c435..d66be30 100755 --- a/EM/relion/build +++ b/EM/relion/build @@ -1,7 +1,6 @@ #!/usr/bin/env modbuild -pbuild::add_to_group 'EM' -pbuild::use_cmake +PERFORMANCE="yes" PROFILE="no" SP="no" @@ -10,85 +9,131 @@ pbuild::prep() { local BRANCH if [[ "$V" =~ beta$ ]]; then BRANCH="ver${V_MAJOR}.${V_MINOR}" - elif [[ "$V" =~ profile$ ]]; then BRANCH="${V_PKG}" PROFILE="yes" - elif [[ "$V" =~ sp$ ]]; then BRANCH="ver${V_MAJOR}.${V_MINOR}" SP="yes" - else BRANCH="${V_PKG}" fi - git clone --depth=1 -b "$BRANCH" https://github.com/3dem/relion.git "$SRC_DIR" || return $? + if [[ -d "$SRC_DIR/.git" ]]; then + cd "$SRC_DIR" + git pull + else + git clone --depth=1 -b "$BRANCH" https://github.com/3dem/relion.git "$SRC_DIR" || return $? + fi } -pbuild::pre_configure() { +pbuild::pre_configure() { # Section will be switched on for -profile version #----------------------------------------------------------- if [[ "$PROFILE" == "yes" ]]; then - pbuild::add_configure_args "-DCMAKE_BUILD_TYPE=BENCHMARKING" + # this needs to go into the config.yml file for >5.0-1beta + if [[ "$V_MAJOR" -lt "5" ]]; then + : pbuild::add_configure_args "-DCMAKE_BUILD_TYPE=BENCHMARKING" + fi fi #------------------------------------------------------------ - # Section will be switched on for single-precision version # Safe memory usage for multibody refinements #------------------------------------------------------------ if [[ "$SP" == "yes" ]]; then - pbuild::add_configure_args "-DDoublePrec_CPU=OFF" + # this needs to go into the config.yml file for >5.0-1beta + if [[ "$V_MAJOR" -lt "5" ]]; then + : pbuild::add_configure_args "-DDoublePrec_CPU=OFF" + fi fi #------------------------------------------------------------ + # Set performance oriented compiler flags, specific for a given + # architecture. + # ------------------------------------------------------------- + if [[ "$PERFORMANCE" == "yes" && "$PROFILE" == "no" ]]; then + # set compiler flags per arch + echo "> setting performance system compiler flags" + case "$(uname -m)" in + "aarch64") + export CC=gcc + export CFLAGS='-mcpu=neoverse-v2 -O3 -pipe -Wno-error' + export CXX=g++ + export CXXFLAGS='-mcpu=neoverse-v2 -O3 -pipe -Wno-error' + export FCFLAGS='-mcpu=neoverse-v2 -O3 -pipe' + export FFLAGS='-mcpu=neoverse-v2 -O3 -pipe' + export LDFLAGS='-Wl,--as-needed' + ;; + "x86_64") + export CC=gcc + export CFLAGS='-march=x86-64-v3 -mtune=znver1 -O3 -pipe -Wno-error' + export CXX=g++ + export CXXFLAGS='-march=x86-64-v3 -mtune=znver1 -O3 -pipe -Wno-error' + export FCFLAGS='-march=x86-64-v3 -mtune=znver1 -O3 -pipe' + export FFLAGS='-march=x86-64-v3 -mtune=znver1 -O3 -pipe' + export LDFLAGS='-Wl,--as-needed' + ;; + *) + echo ">> Unknown system arch found $(uname -m)! Using basic flags only!" + export CC=gcc + export CFLAGS='-O3 -pipe -Wno-error' + export CXX=g++ + export CXXFLAGS='-O3 -pipe -Wno-error' + export FCFLAGS='-O3 -pipe' + export FFLAGS='-O3 -pipe' + export LDFLAGS='-Wl,--as-needed' + ;; + esac + echo ">> ${CC} ${CFLAGS}" + echo ">> ${CXX} ${CXXFLAGS}" + fi + # ------------------------------------------------------------- # The following section will only work for versions >= 5.0-beta # ------------------------------------------------------------- if [[ "$V_MAJOR" -ge "5" ]]; then - - #download blush weights - wget ftp://ftp.mrc-lmb.cam.ac.uk/pub/dari/blush_v1.0.ckpt.gz -P "$PREFIX/torch/hub/checkpoints/relion_blush" \ + #download blush weights, from zenodo + echo "> downloading blush weights" + mkdir -p "$PREFIX/torch/hub/checkpoints/relion_blush" + wget -q https://zenodo.org/records/10072731/files/blush_v1.0.ckpt.gz -P "$PREFIX/torch/hub/checkpoints/relion_blush" \ && gunzip "$PREFIX/torch/hub/checkpoints/relion_blush/blush_v1.0.ckpt.gz" mv "$PREFIX/torch/hub/checkpoints/relion_blush/blush_v1.0.ckpt" "$PREFIX/torch/hub/checkpoints/relion_blush/v1.0.ckpt" touch "$PREFIX/torch/hub/checkpoints/relion_blush/v1.0_installed.txt" + + #cp classranker that was downloaded on another machine before from BUILDBLOCK_DIR + echo "> downloading classranker" + mkdir -p "$PREFIX/torch/hub/checkpoints/relion_class_ranker" + wget -q ftp://ftp.mrc-lmb.cam.ac.uk/pub/dari/classranker_v1.0.ckpt.gz -P "$PREFIX/torch/hub/checkpoints/relion_class_ranker" \ + && gunzip "$PREFIX/torch/hub/checkpoints/relion_class_ranker/classranker_v1.0.ckpt.gz" + mv "$PREFIX/torch/hub/checkpoints/relion_class_ranker/classranker_v1.0.ckpt" "$PREFIX/torch/hub/checkpoints/relion_class_ranker/v1.0.ckpt" + touch "$PREFIX/torch/hub/checkpoints/relion_class_ranker/v1.0_installed.txt" + + # fltk stuff + echo "> downloading FLTK" + mkdir -p "$SRC_DIR/external/fltk" + wget -q ftp://ftp.mrc-lmb.cam.ac.uk/pub/scheres/fltk-1.3.5-source.tar.gz -P "$SRC_DIR/external/fltk/" - #Set Torch Home - pbuild::add_configure_args "-DTORCH_HOME_PATH=$PREFIX/torch" + # Install Miniconda + echo "> installing miniconda" + mkdir -p "$PREFIX/miniconda" + if [[ "$(uname -m)" =~ "aarch64" ]]; then + wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -O "$PREFIX/miniconda/miniconda.sh" + else + wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O "$PREFIX/miniconda/miniconda.sh" + fi + bash "$PREFIX/miniconda/miniconda.sh" -b -u -p "$PREFIX/miniconda/" - #Conda - conda env create -f "$SRC_DIR/environment.yml" -p "$PREFIX/conda_env/$P_$V" - pbuild::add_configure_args "-DPYTHON_EXE_PATH=$PREFIX/conda_env/$P_$V/bin/python" + # Setup conda env; switch into relion repo directory to capture local + # `.[vis]` pip package dependencies + echo "> building conda env" + pushd "$SRC_DIR" + "$PREFIX/miniconda/condabin/conda" env create -q -f environment.yml + "$PREFIX/miniconda/condabin/conda" env list + popd fi - - #--------------------------------------------------------------- - - - # CMake-based build - - pbuild::add_configure_args "-DFORCE_OWN_FFTW=ON" - pbuild::add_configure_args "-DFORCE_OWN_FLTK=ON" - pbuild::add_configure_args "-DFORCE_OWN_TBB=ON" - - # CUDA related (set lowest CC to 6.1 for 1080 compatibility) - pbuild::add_configure_args "-DCUDA=ON" - pbuild::add_configure_args "-DCUDA_ARCH=61" - pbuild::add_configure_args "-DCudaTexture=ON" - # Since ver3.0 relion cannot have ALTCPU and CUDA activated - # at the same time. Otherwise the configuration exits with - # an error. - if [[ "$V_MAJOR" -le "3" ]]; then - pbuild::add_configure_args "-DALTCPU=ON" - fi - - if [[ -n "$INTEL_VERSION" ]]; then - # Requires intel compiler - pbuild::add_configure_args "-DMKLFFT=ON" - fi + #--------------------------------------------------------------- } - -# vim: ts=4 sw=4 et diff --git a/EM/relion/files/config.yaml b/EM/relion/files/config.yaml new file mode 100644 index 0000000..e0242f6 --- /dev/null +++ b/EM/relion/files/config.yaml @@ -0,0 +1,162 @@ +--- +format: 1 +relion: + defaults: + group: EM + overlay: base + relstage: unstable + build_variants: first_match + versions: + 5.0.0-perf: + variants: + - overlay: Alps + target_cpus: [x86_64] + systems: [.*.merlin7.psi.ch] + build_requires: + - cmake/3.23.2 + - git/2.37.0 + - gcc/12.3.0 + - cuda/12.2.0 + - openmpi/5.0.5 + relstage: stable + runtime_deps: + - gcc/12.3.0 + - cuda/12.2.0 + - openmpi/5.0.5 + configure_with: cmake + configure_args: + - "-DCMAKE_BUILD_TYPE=RELEASE" + - "-DCMAKE_CXX_FLAGS=${CXXFLAGS} -DNDEBUG" + - "-DCMAKE_C_FLAGS=${CFLAGS} -DNDEBUG" + - "-DTORCH_HOME_PATH=${PREFIX}/torch" + - "-DPYTHON_EXE_PATH=${PREFIX}/miniconda/envs/relion-5.0/bin/python" + - "-DFORCE_OWN_FFTW=ON" + - "-DFORCE_OWN_FLTK=ON" + - "-DCUDA=ON" + - "-DCUDA_ARCH=80" # dep on the cuda arch of the oldest GPU + - "-DFETCH_WEIGHTS=OFF" + # does not work yet- just an idea... + - overlay: Alps + target_cpus: [aarch64] + systems: [gpu0.*.merlin7.psi.ch] + build_requires: + #- cmake/3.23.2 + #- git/2.37.0 + - openmpi/5.0.5 + - gcc/12.3.0 + - cuda/12.2.0 + relstage: unstable + runtime_deps: + - gcc/12.3.0 + - cuda/12.2.0 + - openmpi/5.0.5 + configure_with: cmake + configure_args: + - "-DCMAKE_BUILD_TYPE=RELEASE" + - "-DCMAKE_CXX_FLAGS=${CXXFLAGS} -DNDEBUG" + - "-DCMAKE_C_FLAGS=${CFLAGS} -DNDEBUG" + - "-DTORCH_HOME_PATH=${PREFIX}/torch" + - "-DPYTHON_EXE_PATH=${PREFIX}/miniconda/envs/relion-5.0/bin/python" + - "-DFORCE_OWN_FFTW=ON" + - "-DFORCE_OWN_FLTK=ON" + - "-DCUDA=ON" + - "-DCUDA_ARCH=90" # dep on the cuda arch of the oldest GPU + - "-DFETCH_WEIGHTS=OFF" + 5.0.0: + variants: + - overlay: Alps + target_cpus: [x86_64] + systems: [.*.merlin7.psi.ch] + build_requires: + - cmake/3.23.2 + - git/2.37.0 + - gcc/12.3.0 + - cuda/12.2.0 + - openmpi/5.0.5 + relstage: unstable + runtime_deps: + - gcc/12.3.0 + - cuda/12.2.0 + - openmpi/5.0.5 + configure_with: cmake + configure_args: + - "-DTORCH_HOME_PATH=${PREFIX}/torch" + - "-DPYTHON_EXE_PATH=${PREFIX}/miniconda/envs/relion-5.0/bin/python" + - "-DFORCE_OWN_FFTW=ON" + - "-DFORCE_OWN_FLTK=ON" + - "-DCUDA=ON" + - "-DCUDA_ARCH=80" # dep on the cuda arch of the oldest GPU + - "-DFETCH_WEIGHTS=OFF" + # does not work yet- just an idea... + - overlay: Alps + target_cpus: [aarch64] + systems: [gpu0.*.merlin7.psi.ch] + build_requires: + #- cmake/3.23.2 + #- git/2.37.0 + - openmpi/5.0.5 + - gcc/12.3.0 + - cuda/12.2.0 + relstage: unstable + runtime_deps: + - gcc/12.3.0 + - cuda/12.2.0 + - openmpi/5.0.5 + configure_with: cmake + configure_args: + - "-DTORCH_HOME_PATH=${PREFIX}/torch" + - "-DPYTHON_EXE_PATH=${PREFIX}/miniconda/envs/relion-5.0/bin/python" + - "-DFORCE_OWN_FFTW=ON" + - "-DFORCE_OWN_FLTK=ON" + - "-DCUDA=ON" + - "-DCUDA_ARCH=90" # dep on the cuda arch of the oldest GPU + - "-DFETCH_WEIGHTS=OFF" + #MERLIN7 old (cray) + 5.0-2beta: + variants: + - overlay: Alps + systems: [gpu.*.merlin7.psi.ch] + build_requires: + - cmake/3.23.2 + - git/2.37.0 + - libfabric/1.22.0 + relstage: unstable + runtime_deps: + - gcc/12.3.0 + # - cudatoolkit/23.9_12.2 + - cuda/12.2.0 + configure_with: cmake + configure_args: + - "-DTORCH_HOME_PATH=${PREFIX}/torch" + - "-DPYTHON_EXE_PATH=${PREFIX}/miniconda/envs/relion-5.0/bin/python" + - "-DFORCE_OWN_FFTW=ON" + - "-DFORCE_OWN_FLTK=ON" + - "-DCUDA=ON" + - "-DCUDA_ARCH=80" # dep on the cuda arch of the oldest GPU + #- "-DCudaTexture=ON" + - "-DFETCH_WEIGHTS=OFF" + #MERLIN6 + 5.0-1beta: + variants: + - systems: [merlin-.*.psi.ch] + build_requires: + - gcc/10.4.0 + - openmpi/4.1.4_slurm + - cuda/11.5.1 + - cmake/3.23.2 + - git/2.37.0 + relstage: unstable + runtime_deps: + - cuda/11.5.1 + - gcc/10.4.0 + - openmpi/4.1.4_slurm + configure_with: cmake + configure_args: + - "-DTORCH_HOME_PATH=${PREFIX}/torch" + - "-DPYTHON_EXE_PATH=${PREFIX}/miniconda/envs/relion-5.0/bin/python" + - "-DFORCE_OWN_FFTW=ON" + - "-DFORCE_OWN_FLTK=ON" + - "-DCUDA=ON" + - "-DCUDA_ARCH=61" # dep on the cuda arch of the oldest GPU + - "-DCudaTexture=ON" + diff --git a/EM/relion/files/variants b/EM/relion/files/variants deleted file mode 100644 index bbe791e..0000000 --- a/EM/relion/files/variants +++ /dev/null @@ -1,18 +0,0 @@ -relion/2.1.b1 deprecated gcc/4.9.4 openmpi/2.0.1 cuda/8.0.44 -relion/2.1 deprecated gcc/9.3.0 openmpi/4.0.4_slurm cuda/11.0.3 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/3.0_beta deprecated gcc/4.9.4 openmpi/2.0.1 cuda/8.0.44 -relion/3.0.8 deprecated gcc/7.4.0 openmpi/3.1.4_merlin6 cuda/9.2.148 b:cmake/3.14.0 b:tiff/4.0.9 -relion/3.0.8-1 stable gcc/9.2.0 openmpi/4.0.5_slurm cuda/11.0.3 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/3.1-beta deprecated gcc/7.4.0 openmpi/3.1.4_merlin6 cuda/9.2.148 b:cmake/3.14.0 b:tiff/4.0.9 -relion/3.1.0 deprecated gcc/7.5.0 openmpi/4.0.4_slurm cuda/10.0.130 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/3.1.0-1 deprecated gcc/7.5.0 openmpi/4.0.4_slurm cuda/10.1.105 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/3.1.1 deprecated gcc/9.3.0 openmpi/4.0.4_slurm cuda/11.0.3 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/3.1.1-1 stable gcc/9.2.0 openmpi/4.0.5_slurm cuda/11.0.3 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/3.1.2 stable gcc/9.2.0 openmpi/4.0.5_slurm cuda/11.0.3 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/3.1.3 stable gcc/9.2.0 openmpi/4.0.5_slurm cuda/11.0.3 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/4.0-beta deprecated gcc/9.2.0 openmpi/4.0.5_slurm cuda/11.0.3 b:cmake/3.15.5 b:tiff/4.0.9 b:git/2.22.0 -relion/4.0.0 unstable gcc/11.2.0 openmpi/4.1.3_slurm cuda/11.5.1 b:cmake/3.23.2 b:tiff/4.3.0 b:git/2.37.0 -relion/4.0.1 unstable gcc/10.4.0 openmpi/4.1.4_slurm cuda/11.5.1 b:cmake/3.23.2 b:tiff/4.3.0 b:git/2.37.0 -relion/4.0.1-profile unstable gcc/10.4.0 openmpi/4.1.4_slurm cuda/11.5.1 b:cmake/3.23.2 b:tiff/4.3.0 b:git/2.37.0 -relion/5.0-beta unstable gcc/10.4.0 openmpi/4.1.4_slurm cuda/11.5.1 b:cmake/3.23.2 b:tiff/4.3.0 b:git/2.37.0 anaconda/2019.07 -relion/5.0-sp unstable gcc/10.4.0 openmpi/4.1.4_slurm cuda/11.5.1 b:cmake/3.23.2 b:tiff/4.3.0 b:git/2.37.0 anaconda/2019.07 diff --git a/EM/relion/modulefile b/EM/relion/modulefile index ed09173..53760e2 100644 --- a/EM/relion/modulefile +++ b/EM/relion/modulefile @@ -25,10 +25,10 @@ Scheres(2012) JSB http://www.sciencedirect.com/science/article/pii/S104784771200 " setenv RELION_QUEUE_USE yes -setenv RELION_QUEUE_NAME gpu +setenv RELION_QUEUE_NAME general-x64 setenv RELION_QSUB_COMMAND sbatch setenv RELION_THREAD_MAX 44 -setenv RELION_QSUB_EXTRA_COUNT 2 +setenv RELION_QSUB_EXTRA_COUNT 4 setenv RELION_QSUB_EXTRA1 "Max Time" setenv RELION_QSUB_EXTRA1_DEFAULT "1-00:00:00" setenv RELION_QSUB_EXTRA1_HELP "Maximum time before the job is killed by slurm. Default: 1-00:00:00" @@ -36,32 +36,15 @@ setenv RELION_QSUB_EXTRA2 "Extra Slurm Args" setenv RELION_QSUB_EXTRA2_DEFAULT "" setenv RELION_QSUB_EXTRA2_HELP "Any additional arguments to pass to slurm" setenv RELION_SCRATCH_DIR /scratch -setenv RELION_UNBLUR_EXECUTABLE /opt/psi/EM/Unblur/1.0.2/bin/unblur_openmp_7_17_15.exe -setenv RELION_SUMMOVIE_EXECUTABLE /opt/psi/EM/Summovie/1.0.2/bin/sum_movie_openmp_7_17_15.exe setenv RELION_CTFFIND_EXECUTABLE /opt/psi/EM/ctffind4/4.1.8/bin/ctffind -setenv RELION_GCTF_EXECUTABLE /opt/psi/EM/Gctf/1.06/bin/Gctf +#also has internal version, depending on what users want... dont know if it works setenv RELION_RESMAP_EXECUTABLE /opt/psi/EM/ResMap/1.1.4/bin/ResMap -setenv RELION_TOPAZ_EXECUTABLE /opt/psi/EM/relion/5.0-sp/conda_env/5.0-beta/bin/topaz -setenv RELION_PYTHON_EXECUTABLE /opt/psi/EM/relion/5.0-sp/conda_env/5.0-beta/bin/python -setenv RELION_TORCH_HOME_PATH /opt/psi/EM/relion/5.0-sp/torch # Version-specific variables -setenv RELION_QSUB_TEMPLATE /opt/psi/EM/relion/$V/scripts/multi_gpu.sh +setenv RELION_QSUB_TEMPLATE /opt/psi/overlays/Alps/EM/relion/$V/scripts/multi_gpu.sh -# See MC2 compatibility matrix: https://intranet.psi.ch/en/bio/motioncor2 -if {[string match "8.0*" $env(CUDA_VERSION)]} { - setenv RELION_MOTIONCOR2_EXECUTABLE "/opt/psi/EM/MotionCor2/1.3.2/bin/MotionCor2_1.3.2-Cuda80" -} elseif {[string match "11.0*" $env(CUDA_VERSION)]} { - setenv RELION_MOTIONCOR2_EXECUTABLE "/opt/psi/EM/MotionCor2/1.4.0/bin/MotionCor2" -} else { - setenv RELION_MOTIONCOR2_EXECUTABLE "/opt/psi/EM/MotionCor2/1.6.4/bin/MotionCor2" -} +setenv RELION_MOTIONCOR2_EXECUTABLE "/opt/psi/EM/MotionCor2/1.6.4/bin/MotionCor2" -# relion 5 features -if {[file exists /opt/psi/EM/relion/$V/conda_env/$V]} { - setenv RELION_TOPAZ_EXECUTABLE /opt/psi/EM/relion/$V/conda_env/$V/bin/topaz - setenv RELION_PYTHON_EXECUTABLE /opt/psi/EM/relion/$V/conda_env/$V/bin/python -} -if {[file exists /opt/psi/EM/relion/$V/torch]} { - setenv RELION_TORCH_HOME_PATH /opt/psi/EM/relion/$V/torch -} +setenv RELION_TOPAZ_EXECUTABLE /opt/psi/overlays/Alps/EM/relion/$V/miniconda/envs/relion-5.0/bin/topaz +setenv RELION_PYTHON_EXECUTABLE /opt/psi/overlays/Alps/EM/relion/$V/miniconda/envs/relion-5.0/bin/python +setenv RELION_TORCH_HOME_PATH /opt/psi/overlays/Alps/EM/relion/$V/torch/ diff --git a/EM/topaz/README.md b/EM/topaz/README.md new file mode 100644 index 0000000..7b5063d --- /dev/null +++ b/EM/topaz/README.md @@ -0,0 +1,34 @@ +# TOPAZ + +The topaz module is build for using it with the cryosparc software. An executable path to the topaz binary needs to be provided in cryosparc. + +## Adding New Versions + +Adding new versions: change the environment file in the build folder accordingly (and the config.yaml file) and run the build script. +IMPORTANT: Build it on the GPU node , otherwise the pytorch installation will not enable GPU support. + +## HINTS + +Current successful environment.yaml file: + +channels: + - tbepler + - pytorch +dependencies: + - python=3.6 + - cudatoolkit + - topaz + - pytorch + +- specifing cudatoolkit version of 11.8 failed for GPU support (see below) +- specifing higher python/cudatoolkit versions lead to higher pytorch versions, which again failed for topaz to run successful (https://discuss.cryosparc.com/t/topaz-train-typeerror-concat-takes-1-positional-argument-but-2-were-given/11240/18) + +## Versions + +Nov. 2024: 0.2.5 (TOPAZ) with +``` +python3.6 +cudatoolkit 11.3.1 h2bc3f7f_2 +pytorch 1.10.2 py3.6_cuda11.3_cudnn8.2.0_0 +pytorch-mutex 1.0 cuda +``` diff --git a/EM/topaz/build b/EM/topaz/build new file mode 100755 index 0000000..789c7bd --- /dev/null +++ b/EM/topaz/build @@ -0,0 +1,27 @@ +#!/usr/bin/env modbuild + + +pbuild::configure() { + #MINICONDA INSTALL + mkdir -p "$PREFIX/miniconda" + wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O "$PREFIX/miniconda/miniconda.sh" + bash "$PREFIX/miniconda/miniconda.sh" -b -u -p "$PREFIX/miniconda/" + + + #CREATE ENV , make sure to source the "correct" conda.sh + "$PREFIX/miniconda/condabin/conda" env create --name "${P}_${V}" -f "$BUILDBLOCK_DIR/environment.yaml" + +} + +#DO NOTHING +pbuild::compile(){ + : +} + +pbuild::install(){ + : +} + + + + diff --git a/EM/topaz/environment.yaml b/EM/topaz/environment.yaml new file mode 100644 index 0000000..8f19db7 --- /dev/null +++ b/EM/topaz/environment.yaml @@ -0,0 +1,8 @@ +channels: + - tbepler + - pytorch +dependencies: + - python=3.6 + - cudatoolkit + - topaz + - pytorch diff --git a/EM/topaz/files/config.yaml b/EM/topaz/files/config.yaml new file mode 100644 index 0000000..6841a46 --- /dev/null +++ b/EM/topaz/files/config.yaml @@ -0,0 +1,13 @@ +--- +format: 1 +topaz: + defaults: + group: EM + overlay: base + relstage: unstable + versions: + 0.2.5: + variants: + - overlay: Alps + systems: [.*.merlin7.psi.ch] + relstage: unstable diff --git a/EM/topaz/modulefile b/EM/topaz/modulefile new file mode 100644 index 0000000..4527b50 --- /dev/null +++ b/EM/topaz/modulefile @@ -0,0 +1,34 @@ +#%Module + +module-whatis "A pipeline for particle detection in cryo-electron microscopy images using convolutional neural networks trained from positive and unlabeled examples. Topaz also includes methods for micrograph and tomogram denoising using deep denoising models." +module-url "https://github.com/tbepler/topaz" +module-license "https://github.com/tbepler/topaz/blob/master/LICENSE" +module-maintainer "Greta Assmann " + +module-help "Particle Picker for CryoEM. Used with Cryosparc" + +# Check for supported shell types +set shelltype [module-info shelltype] +switch -- $shelltype { + "sh" { + puts stdout "conda(){ :; };" + puts stdout "set +u" + puts stdout "source \"${PREFIX}\"/miniconda/etc/profile.d/conda.sh;\n" + } + default { + puts stderr "Shells of type '$shelltype' are NOT supported!" + } +} + + +switch [module-info mode] { + "load" { + # Relies on the anaconda module being loaded since we need to update the path + puts stdout "conda activate ${P}_${V};\n" + } + "unload" - + "remove" { + puts stdout "conda deactivate;\n" + } +} + diff --git a/Libraries/libevent/files/config.yaml b/Libraries/libevent/files/config.yaml index 23af643..009dd39 100644 --- a/Libraries/libevent/files/config.yaml +++ b/Libraries/libevent/files/config.yaml @@ -22,7 +22,7 @@ libevent: overlay: Alps use_overlays: [PSI] build_requires: [] - relstage: unstable + relstage: stable - systems: [rhel.*] build_requires: [openssl/1.1.1k] 2.1.8: diff --git a/Libraries/libpsl/build b/Libraries/libpsl/build new file mode 100755 index 0000000..6e021f3 --- /dev/null +++ b/Libraries/libpsl/build @@ -0,0 +1,2 @@ +#!/usr/bin/env modbuild + diff --git a/Libraries/libpsl/files/config.yaml b/Libraries/libpsl/files/config.yaml new file mode 100644 index 0000000..30532b8 --- /dev/null +++ b/Libraries/libpsl/files/config.yaml @@ -0,0 +1,16 @@ +format: 1 +libpsl: + defaults: + group: Libraries + overlay: base + relstage: stable + docfiles: [] + urls: + - url: https://github.com/rockdaboot/$P/releases/download/${V_PKG}/$P-${V_PKG}.tar.gz + + shasums: + + versions: + 0.21.5: + config: + diff --git a/Libraries/libpsl/modulefile b/Libraries/libpsl/modulefile new file mode 100644 index 0000000..2bff60b --- /dev/null +++ b/Libraries/libpsl/modulefile @@ -0,0 +1,16 @@ +#%Module1.0 + +module-whatis "C library to handle the Public Suffix List" +module-url "https://github.com/rockdaboot/libpsl" +module-license "See https://github.com/rockdaboot/libpsl/blob/master/LICENSE" +module-maintainer "Achim Gsell " + +module-help " +A Public Suffix List is a collection of Top Level Domains (TLDs) suffixes. +TLDs include Global Top Level Domains (gTLDs) like .com and .net; Country +Top Level Domains (ccTLDs) like .de and .cn; and Brand Top Level Domains +like .apple and .google. Brand TLDs allows users to register their own +top level domain that exist at the same level as ICANN's gTLDs. Brand TLDs +are sometimes referred to as Vanity Domains. +" + diff --git a/Libraries/pmix/files/config.yaml b/Libraries/pmix/files/config.yaml index 14db2dc..e5c3cf5 100644 --- a/Libraries/pmix/files/config.yaml +++ b/Libraries/pmix/files/config.yaml @@ -6,7 +6,6 @@ pmix: compile_in_sourcetree: true configure_args: - --enable-shared - - --enable-static docfiles: - AUTHORS - README.md @@ -30,6 +29,8 @@ pmix: 1.2.5: config: relstage: removed + configure_args+: + - --enable-static docfiles: - README - LICENSE @@ -38,6 +39,8 @@ pmix: 2.2.5;3.2.3: config: relstage: unstable + configure_args+: + - --enable-static runtime_deps: [libevent/2.1.12] build_requires: [gcc/12.3.0, hwloc/2.11.1] variants: @@ -48,6 +51,8 @@ pmix: 3.2.5: config: relstage: unstable + configure_args+: + - --enable-static runtime_deps: [libevent/2.1.12] build_requires: [gcc/12.3.0, hwloc/2.11.1] variants: @@ -57,21 +62,29 @@ pmix: 4.1.2: config: relstage: stable + configure_args+: + - --enable-static runtime_deps: [libevent/2.1.12] build_requires: [hwloc/2.7.1] 4.2.3: config: relstage: stable + configure_args+: + - --enable-static runtime_deps: [libevent/2.1.12] build_requires: [hwloc/2.9.1] 4.2.4: config: relstage: stable + configure_args+: + - --enable-static runtime_deps: [libevent/2.1.12] build_requires: [gcc/10.4.0, hwloc/2.9.1] 4.2.9: config: - relstage: unstable + relstage: stable + configure_args+: + - --enable-static runtime_deps: [libevent/2.1.12] build_requires: [gcc/12.3.0, hwloc/2.11.1] variants: @@ -80,7 +93,9 @@ pmix: use_overlays: [PSI] 5.0.3: config: - relstage: unstable + relstage: stable + configure_args+: + - --enable-static=no runtime_deps: [libevent/2.1.12] build_requires: [gcc/12.3.0, hwloc/2.11.1] variants: @@ -95,3 +110,23 @@ pmix: # - --with-jansson # - --with-curl - systems: [rhel.*] + # 5.0.4: + # config: + # relstage: unstable + # configure_args+: + # - --enable-static=no + # runtime_deps: [libevent/2.1.12] + # build_requires: [gcc/12.3.0, hwloc/2.11.1] + # variants: + # - systems: [.*.merlin7.psi.ch] + # overlay: Alps + # use_overlays: [PSI] + # configure_args+: + # - --with-lustre + # - --with-cxi + # - --with-cxi-libdir=/opt/cray/libfabric/1.15.2.0/include + # - --with-slingshot + # - --with-zlib + # # - --with-jansson + # # - --with-curl + # - systems: [rhel.*] diff --git a/Programming/Python/build b/Programming/Python/build index bace901..6940835 100755 --- a/Programming/Python/build +++ b/Programming/Python/build @@ -1,19 +1,5 @@ #!/usr/bin/env modbuild -pbuild::set_download_url "https://www.python.org/ftp/python/${V_PKG}/$P-${V_PKG}.tgz" - -pbuild::set_sha256sum 'Python-3.7.3.tgz:d62e3015f2f89c970ac52343976b406694931742fbde2fed8d1ce8ebb4e1f8ff' -pbuild::set_sha256sum 'Python-2.7.12.tgz:3cb522d17463dfa69a155ab18cffa399b358c966c0363d6c8b5b3bf1384da4b6' -pbuild::set_sha256sum 'Python-2.7.14.tgz:304c9b202ea6fbd0a4a8e0ad3733715fbd4749f2204a9173a58ec53c32ea73e8' -pbuild::set_sha256sum 'Python-2.7.16.tgz:01da813a3600876f03f46db11cc5c408175e99f03af2ba942ef324389a83bad5' -pbuild::set_sha256sum 'Python-3.6.3.tgz:ab6193af1921b30f587b302fe385268510e80187ca83ca82d2bfe7ab544c6f91' -pbuild::set_sha256sum 'Python-3.7.3.tgz:d62e3015f2f89c970ac52343976b406694931742fbde2fed8d1ce8ebb4e1f8ff' -pbuild::set_sha256sum 'Python-3.7.4.tgz:d63e63e14e6d29e17490abbe6f7d17afb3db182dbd801229f14e55f4157c4ba3' - -pbuild::add_to_group 'Programming' - -pbuild::compile_in_sourcetree - pbuild::pre_configure() { local -a cflags=() local -a ldflags=() @@ -74,7 +60,7 @@ pbuild::post_install() { std::info "Building scipy\n" pip${V_MAJOR} install scipy - std::info "Building matplotlub\n" + std::info "Building matplotlib\n" pip${V_MAJOR} install matplotlib std::info "Building ipython\n" @@ -95,8 +81,8 @@ pbuild::post_install() { std::info "Building virtualenv\n" pip${V_MAJOR} install virtualenv - std::info "Building virtualenv\n" - pip${V_MAJOR} install ansible ansible-core==2.15.4 + #std::info "Building ansible\n" + #pip${V_MAJOR} install ansible ansible-core==2.15.4 } diff --git a/Programming/Python/build-xml b/Programming/Python/build-legacy similarity index 68% rename from Programming/Python/build-xml rename to Programming/Python/build-legacy index fcd556e..bace901 100755 --- a/Programming/Python/build-xml +++ b/Programming/Python/build-legacy @@ -1,5 +1,19 @@ #!/usr/bin/env modbuild +pbuild::set_download_url "https://www.python.org/ftp/python/${V_PKG}/$P-${V_PKG}.tgz" + +pbuild::set_sha256sum 'Python-3.7.3.tgz:d62e3015f2f89c970ac52343976b406694931742fbde2fed8d1ce8ebb4e1f8ff' +pbuild::set_sha256sum 'Python-2.7.12.tgz:3cb522d17463dfa69a155ab18cffa399b358c966c0363d6c8b5b3bf1384da4b6' +pbuild::set_sha256sum 'Python-2.7.14.tgz:304c9b202ea6fbd0a4a8e0ad3733715fbd4749f2204a9173a58ec53c32ea73e8' +pbuild::set_sha256sum 'Python-2.7.16.tgz:01da813a3600876f03f46db11cc5c408175e99f03af2ba942ef324389a83bad5' +pbuild::set_sha256sum 'Python-3.6.3.tgz:ab6193af1921b30f587b302fe385268510e80187ca83ca82d2bfe7ab544c6f91' +pbuild::set_sha256sum 'Python-3.7.3.tgz:d62e3015f2f89c970ac52343976b406694931742fbde2fed8d1ce8ebb4e1f8ff' +pbuild::set_sha256sum 'Python-3.7.4.tgz:d63e63e14e6d29e17490abbe6f7d17afb3db182dbd801229f14e55f4157c4ba3' + +pbuild::add_to_group 'Programming' + +pbuild::compile_in_sourcetree + pbuild::pre_configure() { local -a cflags=() local -a ldflags=() @@ -60,7 +74,7 @@ pbuild::post_install() { std::info "Building scipy\n" pip${V_MAJOR} install scipy - std::info "Building matplotlib\n" + std::info "Building matplotlub\n" pip${V_MAJOR} install matplotlib std::info "Building ipython\n" @@ -78,11 +92,11 @@ pbuild::post_install() { std::info "Building pandas\n" pip${V_MAJOR} install pandas - #std::info "Building virtualenv\n" - #pip${V_MAJOR} install virtualenv + std::info "Building virtualenv\n" + pip${V_MAJOR} install virtualenv - #std::info "Building ansible\n" - #pip${V_MAJOR} install ansible ansible-core==2.15.4 + std::info "Building virtualenv\n" + pip${V_MAJOR} install ansible ansible-core==2.15.4 } diff --git a/Programming/Python/files/config.yaml b/Programming/Python/files/config.yaml index 4041769..37ec1dd 100644 --- a/Programming/Python/files/config.yaml +++ b/Programming/Python/files/config.yaml @@ -8,34 +8,37 @@ Python: - url: https://www.python.org/ftp/python/${V_PKG}/$P-${V_PKG}.tgz shasums: - Python-2.7.12.tgz: 3cb522d17463dfa69a155ab18cffa399b358c966c0363d6c8b5b3bf1384da4b6 - Python-2.7.14.tgz: 304c9b202ea6fbd0a4a8e0ad3733715fbd4749f2204a9173a58ec53c32ea73e8 - Python-2.7.16.tgz: 01da813a3600876f03f46db11cc5c408175e99f03af2ba942ef324389a83bad5 - Python-2.7.17.tgz: f22059d09cdf9625e0a7284d24a13062044f5bf59d93a7f3382190dfa94cecde - Python-2.7.18.tgz: da3080e3b488f648a3d7a4560ddee895284c3380b11d6de75edb986526b9a814 - Python-3.6.11.tgz: 96621902f89746fffc22f39749c07da7c2917b232e72352e6837d41850f7b90c - Python-3.6.3.tgz: ab6193af1921b30f587b302fe385268510e80187ca83ca82d2bfe7ab544c6f91 - Python-3.7.3.tgz: d62e3015f2f89c970ac52343976b406694931742fbde2fed8d1ce8ebb4e1f8ff - Python-3.7.4.tgz: d63e63e14e6d29e17490abbe6f7d17afb3db182dbd801229f14e55f4157c4ba3 - Python-3.7.8.tgz: 0e25835614dc221e3ecea5831b38fa90788b5389b99b675a751414c858789ab0 - Python-3.8.12.tgz: 316aa33f3b7707d041e73f246efedb297a70898c4b91f127f66dc8d80c596f1a - Python-3.8.4.tgz: 32c4d9817ef11793da4d0d95b3191c4db81d2e45544614e8449255ca9ae3cc18 - Python-3.8.8.tgz: 76c0763f048e4f9b861d24da76b7dd5c7a3ba7ec086f40caedeea359263276f7 - Python-3.9.10.tgz: 1aa9c0702edbae8f6a2c95f70a49da8420aaa76b7889d3419c186bfc8c0e571e - Python-3.9.17.tgz: 8ead58f669f7e19d777c3556b62fae29a81d7f06a7122ff9bc57f7dd82d7e014 + Python-3.13.2.tgz: b8d79530e3b7c96a5cb2d40d431ddb512af4a563e863728d8713039aa50203f9 + Python-3.12.9.tgz: 45313e4c5f0e8acdec9580161d565cf5fea578e3eabf25df7cc6355bf4afa1ee + Python-3.11.11.tgz: f2e22ed965a93cfeb642378ed6e6cdbc127682664b24123679f3d013fafe9cd0 + Python-3.10.16.tgz: f2e22ed965a93cfeb642378ed6e6cdbc127682664b24123679f3d013fafe9cd0 + Python-3.9.21.tgz: 667c3ba2ca98d39ead1162f6548c3475768582e2ff89e0821d25eb956ac09944 Python-3.9.18.tgz: 504ce8cfd59addc04c22f590377c6be454ae7406cb1ebf6f5a350149225a9354 + Python-3.9.17.tgz: 8ead58f669f7e19d777c3556b62fae29a81d7f06a7122ff9bc57f7dd82d7e014 + Python-3.9.10.tgz: 1aa9c0702edbae8f6a2c95f70a49da8420aaa76b7889d3419c186bfc8c0e571e + Python-3.8.8.tgz: 76c0763f048e4f9b861d24da76b7dd5c7a3ba7ec086f40caedeea359263276f7 + Python-3.8.4.tgz: 32c4d9817ef11793da4d0d95b3191c4db81d2e45544614e8449255ca9ae3cc18 + Python-3.8.12.tgz: 316aa33f3b7707d041e73f246efedb297a70898c4b91f127f66dc8d80c596f1a + Python-3.7.8.tgz: 0e25835614dc221e3ecea5831b38fa90788b5389b99b675a751414c858789ab0 + Python-3.7.4.tgz: d63e63e14e6d29e17490abbe6f7d17afb3db182dbd801229f14e55f4157c4ba3 + Python-3.7.3.tgz: d62e3015f2f89c970ac52343976b406694931742fbde2fed8d1ce8ebb4e1f8ff + Python-3.6.3.tgz: ab6193af1921b30f587b302fe385268510e80187ca83ca82d2bfe7ab544c6f91 + Python-3.6.11.tgz: 96621902f89746fffc22f39749c07da7c2917b232e72352e6837d41850f7b90c + Python-2.7.18.tgz: da3080e3b488f648a3d7a4560ddee895284c3380b11d6de75edb986526b9a814 + Python-2.7.17.tgz: f22059d09cdf9625e0a7284d24a13062044f5bf59d93a7f3382190dfa94cecde + Python-2.7.16.tgz: 01da813a3600876f03f46db11cc5c408175e99f03af2ba942ef324389a83bad5 + Python-2.7.14.tgz: 304c9b202ea6fbd0a4a8e0ad3733715fbd4749f2204a9173a58ec53c32ea73e8 + Python-2.7.12.tgz: 3cb522d17463dfa69a155ab18cffa399b358c966c0363d6c8b5b3bf1384da4b6 versions: - 3.9.18-1: + 3.13.2: config: - relstage: unstable - build_requires: [openssl/1.1.1w, TclTk/8.6.9, xz/5.2.4] - 3.9.18: + build_requires: [openssl/3.4.1, TclTk/8.6.16, xz/5.8.0] + 3.9.18;3.9.21;3.10.16;3.11.11;3.12.9: config: - relstage: unstable - build_requires: [openssl/1.1.1w, TclTk/8.6.9, xz/5.2.4] + runtime_deps: [openssl/3.4.1, TclTk/8.6.16, xz/5.8.0] 3.9.17: config: - relstage: unstable + relstage: deprecated build_requires: [openssl/1.1.1v, TclTk/8.6.9, xz/5.2.4] 3.9.10: 3.8.12: diff --git a/Programming/TclTk/build b/Programming/TclTk/build index d7fb54a..4b8359e 100755 --- a/Programming/TclTk/build +++ b/Programming/TclTk/build @@ -1,4 +1,32 @@ -#!/bin/bash +#!/usr/bin/env modbuild -./build_Tcl "$@" ||exit $? -./build_Tk -f "$@" +#pbuild::install_docfiles 'license.terms' 'README' + +pbuild::configure_Darwin() { + export CXX=/usr/bin/clang++ + export CC=/usr/bin/clang + PATH+=":/opt/X11/bin" + export PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:$PKG_CONFIG_PATH" + "${SRC_DIR}/macosx/configure" \ + --prefix="${PREFIX}" \ + --enable-threads \ + --disable-symbols \ + || exit 1 +} + +pbuild::configure() { + "${SRC_DIR}/unix/configure" \ + --prefix="${PREFIX}" \ + || exit 1 +} + +pbuild::post_install() { + { cd "${PREFIX}"/bin && rm -f tclsh && ln -fs tclsh${V%.*} tclsh; }; +} + +pbuild::post_install_Darwin() { + local -r libtcl="libtcl${V_MAJOR}.${V_MINOR}.dylib" + install_name_tool \ + -id @executable_path/../lib/${libtcl} \ + "${PREFIX}/lib/${libtcl}" +} diff --git a/Programming/TclTk/build_Tk b/Programming/TclTk/build-Tk similarity index 73% rename from Programming/TclTk/build_Tk rename to Programming/TclTk/build-Tk index d85ff18..5d3d1c0 100755 --- a/Programming/TclTk/build_Tk +++ b/Programming/TclTk/build-Tk @@ -1,14 +1,20 @@ #!/usr/bin/env modbuild -pbuild::set_download_url "ftp://ftp.tcl.tk/pub/tcl/tk${V_MAJOR}_${V_MINOR}/tk${V_PKG}-src.tar.gz" - -pbuild::add_to_group 'Programming' - export PATH="${PREFIX}/bin:$PATH" -export C_INCLUDE_PATH="${PREFIX}/include:${C_INCLUDE_PATH}" -export LIBRARY_PATH="${PREFIX}/lib:${LIBRARY_PATH}" +if [[ -v C_INCLUDE_PATH ]]; then + C_INCLUDE_PATH="${PREFIX}/include:${C_INCLUDE_PATH}" +else + C_INCLUDE_PATH="${PREFIX}/include" +fi +export C_INCLUDE_PATH +if [[ -v LIBRARY_PATH ]]; then + LIBRARY_PATH="${PREFIX}/lib:${LIBRARY_PATH}" +else + LIBRARY_PATH="${PREFIX}/lib" +fi +export LIBRARY_PATH -pbuild::configure_Darwin() { +pbuil:d:configure_Darwin() { PATH+=":/opt/X11/bin" export CXX=/usr/bin/clang++ export CC=/usr/bin/clang @@ -24,7 +30,7 @@ pbuild::configure_Darwin() { || exit 1 } -pbuild::configure_Linux() { +pbuild::configure() { "${SRC_DIR}/unix/configure" \ --prefix="${PREFIX}" \ --with-tcl="${PREFIX}/lib" \ diff --git a/Programming/TclTk/build_Tcl b/Programming/TclTk/build_Tcl deleted file mode 100755 index e2a8eda..0000000 --- a/Programming/TclTk/build_Tcl +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env modbuild - -pbuild::set_download_url "ftp://ftp.tcl.tk/pub/tcl/tcl8_6/tcl${V_PKG}-src.tar.gz" - -pbuild::add_to_group 'Programming' -pbuild::install_docfiles 'license.terms' 'README' - -pbuild::configure_Darwin() { - export CXX=/usr/bin/clang++ - export CC=/usr/bin/clang - PATH+=":/opt/X11/bin" - export PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:$PKG_CONFIG_PATH" - "${SRC_DIR}/macosx/configure" \ - --prefix="${PREFIX}" \ - --enable-threads \ - --disable-symbols \ - || exit 1 -} - -pbuild::configure_Linux() { - "${SRC_DIR}/unix/configure" \ - --prefix="${PREFIX}" \ - || exit 1 -} - -pbuild::post_install() { - { cd "${PREFIX}"/bin && rm -f tclsh && ln -fs tclsh${V%.*} tclsh; }; -} - -pbuild::post_install_Darwin() { - local -r libtcl="libtcl${V_MAJOR}.${V_MINOR}.dylib" - install_name_tool \ - -id @executable_path/../lib/${libtcl} \ - "${PREFIX}/lib/${libtcl}" -} diff --git a/Programming/TclTk/files/config.yaml b/Programming/TclTk/files/config.yaml new file mode 100644 index 0000000..5d192cb --- /dev/null +++ b/Programming/TclTk/files/config.yaml @@ -0,0 +1,32 @@ +format: 1 +TclTk: + defaults: + group: Programming + overlay: base + relstage: stable + urls: + - url: http://prdownloads.sourceforge.net/tcl/tcl${V_PKG}-src.tar.gz + shasums: + versions: + 8.6.16: + config: + sub_packages: + - name: Tk + version: 8.6.16 + build_args: + 8.6.9: + config: + sub_packages: + - name: Tk + version: 8.6.9 + build_args: + +Tk: + type: sub_package + defaults: + urls: + - url: http://prdownloads.sourceforge.net/tcl/tk${V_PKG}-src.tar.gz + versions: + 8.6.16: + 8.6.9: + diff --git a/Programming/TclTk/files/variants.macos10.14 b/Programming/TclTk/files/variants.macos10.14 deleted file mode 100644 index a4f9b5b..0000000 --- a/Programming/TclTk/files/variants.macos10.14 +++ /dev/null @@ -1 +0,0 @@ -TclTk/8.6.9 stable diff --git a/Programming/TclTk/files/variants.rhel6 b/Programming/TclTk/files/variants.rhel6 deleted file mode 100644 index a4f9b5b..0000000 --- a/Programming/TclTk/files/variants.rhel6 +++ /dev/null @@ -1 +0,0 @@ -TclTk/8.6.9 stable diff --git a/Programming/anaconda/files/config.yaml b/Programming/anaconda/files/config.yaml index 8784b66..463c9c1 100644 --- a/Programming/anaconda/files/config.yaml +++ b/Programming/anaconda/files/config.yaml @@ -12,4 +12,4 @@ anaconda: - url: https://repo.anaconda.com/miniconda/Miniconda3-py39_24.5.0-0-Linux-x86_64.sh name: miniconda-2024.08.sh unpacker: none - relstage: unstable + relstage: stable diff --git a/Programming/cuda/build b/Programming/cuda/build index 417baa6..9684585 100755 --- a/Programming/cuda/build +++ b/Programming/cuda/build @@ -1,29 +1,14 @@ #!/usr/bin/env modbuild -pbuild::add_to_group 'Programming' - -pbuild::prep() { - : -} - -pbuild::configure() { - : -} - -pbuild::compile() { - : -} - -pbuild::install() { - : -} - +# install with +# bash ./cuda_12.8.1_570.124.06_linux.run --silent --toolkit --installpath=/opt/psi/Programming/cuda/12.8.1/ --no-opengl-libs --no-man-page +# pbuild::post_install() { - if [ -f "/opt/psi/Programming/cuda/${V_PKG}/lib64/stubs/libnvidia-ml.so" ] - then - if [ ! -f "/opt/psi/Programming/cuda/${V_PKG}/lib64/stubs/libnvidia-ml.so.1" ] - then - ln -s /opt/psi/Programming/cuda/$V/lib64/stubs/libnvidia-ml.so /opt/psi/Programming/cuda/${V_PKG}/lib64/stubs/libnvidia-ml.so.1 - fi - fi + cd "${PREFIX}/lib64/stubs" + for lib in lib*; do + local soname="$(patchelf --print-soname "${lib}" 2>/dev/null)" || continue + if [[ ! -e "${soname}" ]]; then + ln -s "${lib}" "${soname}" + fi + done } diff --git a/Programming/cuda/files/config.yaml b/Programming/cuda/files/config.yaml new file mode 100644 index 0000000..8e03246 --- /dev/null +++ b/Programming/cuda/files/config.yaml @@ -0,0 +1,119 @@ +--- +format: 1 +cuda: + defaults: + group: Programming + overlay: base + relstage: stable + build_variants: first_match + build_functions: + configure: [] + compile: [] + install: [pbuild::post_install] + urls: + - &cuda-12_8_1-aarch64 + url: https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux_sbsa.run + unpacker: none + - &cuda-12_8_1-x86_64 + url: https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux.run + unpacker: none + - &cuda-12_2_2-aarch64 + url: https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux_sbsa.run + unpacker: none + - &cuda-12_2_2-x86_64 + url: https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run + unpacker: none + - &cuda-12_2_0-aarch64 + url: https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux_sbsa.run + unpacker: none + - &cuda-12_2_0-x86_64 + url: https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run + unpacker: none + - &cuda-12_1_1-aarch64 + url: https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux_sbsa.run + unpacker: none + - &cuda-12_1_1-x86_64 + url: https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run + unpacker: none + + shasums: + cuda_12.8.1_570.124.06_linux.run: 228f6bcaf5b7618d032939f431914fc92d0e5ed39ebe37098a24502f26a19797 + cuda_12.8.1_570.124.06_linux_sbsa.run: 353cbab1b57282a1001071796efd95c1e40ec27a3375e854d12637eaa1c6107c + cuda_12.2.2_535.104.05_linux.run: 2b39aae3e7618d9f59a3c8fa1f1bc61f29c0b0e0df75fb05076badb352952ef2 + cuda_12.2.2_535.104.05_linux_sbsa.run: 4113a15e6b27a02638c72edeb5f89de4c9ea312febba12fc4cefff2edc882268 + cuda_12.2.0_535.54.03_linux.run: ecf3d2afadcbac029f0f4505785810d52d006e4b87ba79ff3f984336a2bbf518 + cuda_12.2.0_535.54.03_linux_sbsa.run: 9c90d79bb63952cd30f1f57f9f8fe11e7a8967bba6f824df45d3464b5d37e5d8 + cuda_12.1.1_530.30.02_linux.run: d74022d41d80105319dfa21beea39b77a5b9919539c0487a05caaf2446d6a70e + cuda_12.1.1_530.30.02_linux_sbsa.run: 45ea4cd860f0a26d3db8ce032530f2ee0b55abdd587545213d395a73623b4278 + + versions: + 12.8.1: + variants: + - target_cpus: [aarch64] + systems: [gpu.*.merlin7.psi.ch] + relstage: unstable + overlay: PSI + urls: + - *cuda-12_8_1-aarch64 + - target_cpus: [x86_64] + systems: [.*.merlin7.psi.ch] + relstage: unstable + overlay: PSI + urls: + - *cuda-12_8_1-x86_64 + - target_cpus: [x86_64] + relstage: stable + urls: + - *cuda-12_8_1-x86_64 + 12.2.2: + variants: + - target_cpus: [aarch64] + systems: [gpu.*.merlin7.psi.ch] + relstage: stable + overlay: PSI + urls: + - *cuda-12_2_2-aarch64 + - target_cpus: [x86_64] + systems: [.*.merlin7.psi.ch] + relstage: stable + overlay: PSI + urls: + - *cuda-12_2_2-x86_64 + - target_cpus: [x86_64] + relstage: stable + urls: + - *cuda-12_2_2-x86_64 + + 12.2.0: + variants: + - target_cpus: [aarch64] + systems: [gpu.*.merlin7.psi.ch] + urls: + - *cuda-12_2_0-aarch64 + - target_cpus: [x86_64] + systems: [.*.merlin7.psi.ch] + overlay: PSI + urls: + - *cuda-12_2_0-x86_64 + - target_cpus: [x86_64] + urls: + - *cuda-12_2_0-x86_64 + + 12.1.1: + variants: + - target_cpus: [aarch64] + systems: [gpu.*.merlin7.psi.ch] + overlay: PSI + relstage: unstable + urls: + - *cuda-12_1_1-aarch64 + + - target_cpus: [x86_64] + systems: [.*.merlin7.psi.ch] + overlay: PSI + urls: + - *cuda-12_1_1-x86_64 + + - target_cpus: [x86_64] + urls: + - *cuda-12_1_1-x86_64 diff --git a/Programming/cuda/files/variants.rhel7 b/Programming/cuda/files/variants.rhel7 index f9ac67e..75b1509 100644 --- a/Programming/cuda/files/variants.rhel7 +++ b/Programming/cuda/files/variants.rhel7 @@ -13,4 +13,4 @@ cuda/11.4.3 stable cuda/11.5.1 stable cuda/11.8.0 stable cuda/12.1.1 stable -cuda/12.2.0 unstable +cuda/12.2.0 stable diff --git a/Programming/cuda/modulefile b/Programming/cuda/modulefile index b626491..69c68ce 100644 --- a/Programming/cuda/modulefile +++ b/Programming/cuda/modulefile @@ -13,15 +13,12 @@ harnessing the power of the graphics processing unit (GPU). prepend-path CUDA_PATH "$PREFIX" -# libnvidia-ml.so in GDK package is a stub library that is attached only for build purposes -prepend-path LIBRARY_PATH "$PREFIX/lib64/stubs" -prepend-path LIBRARY_PATH "$PREFIX/targets/x86_64-linux/lib/stubs" +if {[catch {exec /usr/sbin/modinfo -d nvidia} result]} { + # add if the module is *not* loaded => we are on a system without GPU + prepend-path LIBRARY_PATH "$PREFIX/lib64/stubs" + prepend-path LD_LIBRARY_PATH "$PREFIX/lib/stubs" +} prepend-path C_INCLUDE_PATH "$PREFIX/targets/x86_64-linux/include" prepend-path CPLUS_INCLUDE_PATH "$PREFIX/targets/x86_64-linux/include" -# We should always run with libnvidia-ml.so that is installed with your NVIDIA Display Driver. -# By default it's installed in /usr/lib and /usr/lib64. -# Therefore, LD_LIBRARY_PATH must not contain any libnvidia-ml.so reference in the GDK package -# prepend-path LD_LIBRARY_PATH "$PREFIX/lib/stubs" -# prepend-path LD_LIBRARY_PATH "$PREFIX/targets/x86_64-linux/lib/stubs" diff --git a/Programming/gcc/files/config.yaml b/Programming/gcc/files/config.yaml index 7630e47..0d4e8db 100644 --- a/Programming/gcc/files/config.yaml +++ b/Programming/gcc/files/config.yaml @@ -86,6 +86,7 @@ gcc: systems: [rhel.*] - overlay: PSI systems: [login.*.merlin7.psi.ch, cn.*.merlin7.psi.ch, gpu.*.merlin7.psi.ch] + modulefile: modulefile-alps - overlay: base systems: [rhel.*] @@ -168,6 +169,16 @@ gcc: - overlay: base systems: [rhel.*] + 8.5.0: + config: + relstage: stable + build_requires: [gmp/6.3.0, mpfr/4.2.1, mpc/1.3.1-1] + configure_args+: + - --enable-languages=c,c++,objc,obj-c++,lto,fortran,go + variants: + - overlay: PSI + systems: [login.*.merlin7.psi.ch, cn.*.merlin7.psi.ch, gpu.*.merlin7.psi.ch] + 8.4.0: config: restage: stable diff --git a/Programming/gcc/modulefile-alps b/Programming/gcc/modulefile-alps new file mode 100644 index 0000000..a1f7b84 --- /dev/null +++ b/Programming/gcc/modulefile-alps @@ -0,0 +1,28 @@ +#%Module1.0 + +module-whatis "GNU Compiler Collection" +module-url "http://gcc.gnu.org/" +module-license "GNU GPL v2/v3" +module-maintainer "Achim Gsell " + +module-help " +The GNU Compiler Collection includes front ends for C, C++, Objective-C, +Fortran, Java, Ada, and Go, as well as libraries for these languages +(libstdc++, libgcj,...). GCC was originally written as the compiler for +the GNU operating system. + +This module includes compilers for +- C/C++ +- Objective-C/Objective-C++ +- Fortran +" + +module-addgroup "Compiler" + +setenv CC $PREFIX/bin/gcc +setenv CXX $PREFIX/bin/g++ +setenv F77 $PREFIX/bin/gfortran +setenv F90 $PREFIX/bin/gfortran +setenv FC $PREFIX/bin/gfortran +setenv FORTRAN $PREFIX/bin/gfortran + diff --git a/System/patchelf/build b/System/patchelf/build index 37dad10..bd8e687 100755 --- a/System/patchelf/build +++ b/System/patchelf/build @@ -1,11 +1,5 @@ #!/usr/bin/env modbuild -# :FIXME: needs review - -pbuild::set_download_url "https://github.com/NixOS/$P/archive/$V.tar.gz" "$P-$V.tar.gz" - -pbuild::add_to_group 'System' - pbuild::post_prep() { cd "${SRC_DIR}" ./bootstrap.sh diff --git a/System/patchelf/build-xml b/System/patchelf/build-xml deleted file mode 100755 index bd8e687..0000000 --- a/System/patchelf/build-xml +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env modbuild - -pbuild::post_prep() { - cd "${SRC_DIR}" - ./bootstrap.sh -} diff --git a/System/patchelf/files/config.yaml b/System/patchelf/files/config.yaml index 8a4dab5..523990d 100644 --- a/System/patchelf/files/config.yaml +++ b/System/patchelf/files/config.yaml @@ -11,12 +11,12 @@ patchelf: patchelf-0.8.1.tar.bz2: 12367e9ce9c315a26e14f11db8542e2e0f3a877aff52590912111268cb775bef7ce713368eb3759df6823f457a7b6d0419fd02c231d40db5dd0b853f41caf254 patchelf-0.11.tar.gz: b156bad513d5bac33aaf61d5f04d5a78efc81abf8c0ccb851f605e1137c21e671b4933263a47543daf5064db5e83c9afa836b1aea143fca7d8e6a18ebf96beb8 patchelf-0.12.tar.gz: 2563a5b22b90392d5755d9a08022daf8570fa1b741becbbca92548d0a2f82f7ee21175a2c34816a4653c89c2219bf59b1440304b0fa2d49842e398ab18b9923c - patchelf-0.14.5.tar.gz: 1b7eca84f6fe2d6f6d4469ca1ccdf35dc920d2052ba94b7daeba6c8cb41fdaff20b1e5bac7c8a7650ff12bf4156da87f84d32e75b09958636dc992a1b7b1a59d + patchelf-0.14.5.tar.gz: ca6ef65d53842a0e38f43aeb0a476a537c29c8528a5f613bb1ef16e08f6756d9 + patchelf-0.18.0.tar.gz: 1451d01ee3a21100340aed867d0b799f46f0b1749680028d38c3f5d0128fb8a7 versions: 0.8.1;0.11;0.12;0.14.5: 0.18.0: config: - relstage: unstable build_requires: [gcc/12.3.0] diff --git a/Tools/ANSYS/build b/Tools/ANSYS/build index b961793..595506c 100755 --- a/Tools/ANSYS/build +++ b/Tools/ANSYS/build @@ -1,7 +1,5 @@ #!/usr/bin/env modbuild -pbuild::add_to_group 'Tools' - pbuild::prep() { : } diff --git a/Tools/ANSYS/files/config.yaml b/Tools/ANSYS/files/config.yaml new file mode 100644 index 0000000..7daa5fb --- /dev/null +++ b/Tools/ANSYS/files/config.yaml @@ -0,0 +1,28 @@ +format: 1 +ANSYS: + defaults: + group: Tools + relstage: stable + shasums: + versions: + 2024R2: + variants: + - systems: [.*.merlin7.psi.ch] + relstage: stable + overlay: merlin + use_overlays: [PSI] + use_flags: [merlin7] + 2023R2: + variants: + - systems: [.*.merlin7.psi.ch] + relstage: unstable + overlay: merlin + use_overlays: [PSI] + use_flags: [merlin7] + 2022R2: + variants: + - systems: [.*.merlin7.psi.ch] + relstage: stable + overlay: merlin + use_overlays: [PSI] + use_flags: [merlin7] diff --git a/Tools/ANSYS/files/variants.overlay_alps b/Tools/ANSYS/files/variants.overlay_alps index 8852d90..3353250 100644 --- a/Tools/ANSYS/files/variants.overlay_alps +++ b/Tools/ANSYS/files/variants.overlay_alps @@ -1 +1,2 @@ ANSYS/2022R2 stable +ANSYS/2024R1 stable diff --git a/Tools/ANSYS/files/variants.overlay_merlin b/Tools/ANSYS/files/variants.overlay_merlin index c7ad54d..3b872ee 100644 --- a/Tools/ANSYS/files/variants.overlay_merlin +++ b/Tools/ANSYS/files/variants.overlay_merlin @@ -3,5 +3,5 @@ ANSYS/2020R2 stable ANSYS/2021R1 stable ANSYS/2021R2 stable ANSYS/2022R1 stable -ANSYS/2022R2 unstable -ANSYS/2023R2 unstable +ANSYS/2022R2 stable +ANSYS/2023R2 stable diff --git a/Tools/VSCode/build b/Tools/VSCode/build new file mode 100755 index 0000000..89c436d --- /dev/null +++ b/Tools/VSCode/build @@ -0,0 +1,12 @@ +#!/usr/bin/env modbuild + +pbuild::install() { + : + cd "${PREFIX}" + tar --strip-components=1 -xvf "${PMODULES_DISTFILESDIR}/VSCode-${V_PKG}.tar.gz" +} +# Local Variables: +# mode: sh +# sh-basic-offset: 8 +# tab-width: 8 +# End: diff --git a/Tools/VSCode/files/config.yaml b/Tools/VSCode/files/config.yaml new file mode 100644 index 0000000..aeaa30c --- /dev/null +++ b/Tools/VSCode/files/config.yaml @@ -0,0 +1,27 @@ +--- +format: 1 +VSCode: + defaults: + group: Tools + overlay: base + relstage: stable + systems: [.*] + build_functions: + configure: [] + compile: [] + urls: + - url: https://update.code.visualstudio.com/${V_PKG}/linux-x64/stable + name: VSCode-${V_PKG}.tar.gz + unpacker: none + shasums: + VSCode-1.100.2.tar.gz: 5c2cbbeaa08b92340dce899a78d66be8d92c09b4d75313bfdfc46fb3bddca5c0 + versions: + 1.100.2: + config: + relstage: unstable + 1.87.0: + config: + relstage: stable + 1.38.1_rhel7;1.73.1: + config: + relstage: deprecated diff --git a/Tools/VSCode/modulefile b/Tools/VSCode/modulefile new file mode 100644 index 0000000..e3b9bf6 --- /dev/null +++ b/Tools/VSCode/modulefile @@ -0,0 +1,16 @@ +#%Module1.0 + +module-whatis "lightweight but powerful source code editor" +module-url "https://code.visualstudio.com/docs" +module-license "See: https://code.visualstudio.com/license" +module-maintainer "Achim Gsell " + +module-help " +Visual Studio Code is a lightweight but powerful source code editor +which runs on your desktop and is available for Windows, macOS and +Linux. It comes with built-in support for JavaScript, TypeScript +and Node.js and has a rich ecosystem of extensions for other languages +(such as C++, C#, Java, Python, PHP, Go) and runtimes (such as .NET +and Unity). Begin your journey with VS Code with these introductory +videos: https://code.visualstudio.com/docs/introvideos/overview +" diff --git a/Tools/gnuplot/build-yaml b/Tools/curl/build similarity index 100% rename from Tools/gnuplot/build-yaml rename to Tools/curl/build diff --git a/Tools/curl/files/config.yaml b/Tools/curl/files/config.yaml new file mode 100644 index 0000000..a31b6f7 --- /dev/null +++ b/Tools/curl/files/config.yaml @@ -0,0 +1,21 @@ +--- +format: 1 +curl: + defaults: + group: Tools + overlay: base + relstage: stable + configure_args: + - --with-openssl + docfiles: [] + urls: + - url: https://curl.se/download/$P-${V_PKG}.tar.gz + shasums: + + versions: + 8.13.0: + config: + build_requires: [libpsl/0.21.5, openssl/3.4.1] + 8.11.0: + config: + build_requires: [libpsl/0.21.5, openssl/1.1.1w] diff --git a/Tools/curl/modulefile b/Tools/curl/modulefile new file mode 100644 index 0000000..4dafa22 --- /dev/null +++ b/Tools/curl/modulefile @@ -0,0 +1,15 @@ +#%Pmodule + +module-whatis "command line tool and library for transferring data with URLs" +module-url "https://curl.se" +module-license "See \$PREFIX/share/doc/curl/curl.txt" +module-maintainer "Achim Gsell " + +module-help " +curl is used in command lines or scripts to transfer data. curl is also +libcurl, used in cars, television sets, routers, printers, audio equipment, +mobile phones, tablets, medical devices, settop boxes, computer games, +media players and is the Internet transfer engine for countless software +applications in over twenty billion installations. +" + diff --git a/Tools/fpart/build b/Tools/fpart/build new file mode 100755 index 0000000..916ff80 --- /dev/null +++ b/Tools/fpart/build @@ -0,0 +1,6 @@ +#!/usr/bin/env modbuild + +# we need to generate the configure file +pbuild::post_prep() { + autoreconf -i +} diff --git a/Tools/fpart/files/config.yaml b/Tools/fpart/files/config.yaml new file mode 100644 index 0000000..9b2535a --- /dev/null +++ b/Tools/fpart/files/config.yaml @@ -0,0 +1,18 @@ +--- +format: 1 +fpart: + defaults: + group: Tools + overlay: base + relstage: stable + configure_with: autotools + build_variants: first_match + target_cpus: [x86_64] + systems: [rhel8] + docfiles: [COPYING, README.md, Changelog.md] + urls: + - url: https://github.com/martymac/$P/archive/refs/tags/$P-${V_PKG}.tar.gz + shasums: + fpart-1.7.0.tar.gz: e5f82dd90001ed53200b2383bcfd520b1d8ee06d6a2a75b39d37d68daef20c88 + versions: + 1.7.0: diff --git a/Tools/fpart/modulefile b/Tools/fpart/modulefile new file mode 100644 index 0000000..0c23a00 --- /dev/null +++ b/Tools/fpart/modulefile @@ -0,0 +1,12 @@ +#%Module1.0 + +module-whatis "Fpart is a Filesystem partitioner" +module-url "https://www.fpart.org/" +module-license "BSD 2 Clause" +module-maintainer "Hans-Nikolai Viessmann