diff --git a/Custom_EasyBlocks/code_saturne.py b/Custom_EasyBlocks/code_saturne.py new file mode 100644 index 0000000000000000000000000000000000000000..823f17f12496618894eba5a20e942656f3682793 --- /dev/null +++ b/Custom_EasyBlocks/code_saturne.py @@ -0,0 +1,167 @@ +## +# Copyright 2009-2018 Ghent University +# +# This file is part of EasyBuild, +# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en), +# with support of Ghent University (http://ugent.be/hpc), +# the Flemish Supercomputer Centre (VSC) (https://www.vscentrum.be), +# Flemish Research Foundation (FWO) (http://www.fwo.be/en) +# and the Department of Economy, Science and Innovation (EWI) (http://www.ewi-vlaanderen.be/en). +# +# https://github.com/easybuilders/easybuild +# +# EasyBuild is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation v2. +# +# EasyBuild is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with EasyBuild. If not, see <http://www.gnu.org/licenses/>. +## +""" +EasyBuild support for building and installing Code_Saturne, +implemented as an easyblock. + +@author: Metin Cakircali (Juelich Supercomputing Centre, FZJ GmbH) +""" + +import os + +from easybuild.framework.easyblock import EasyBlock +from easybuild.framework.easyconfig.default import CUSTOM +from easybuild.tools.filetools import apply_regex_substitutions +from easybuild.tools.run import run_cmd +from easybuild.tools.systemtools import get_shared_lib_ext + +import easybuild.tools.environment as env + + +class EB_Code_underscore_Saturne(EasyBlock): + """Support for building and installing Code_Saturne.""" + + @staticmethod + def extra_options(extra_vars=None): + """Extra easyconfig parameters specific to Code_Saturne.""" + extra_vars = EasyBlock.extra_options(extra_vars) + + # add some custom easyconfig parameters specific to Code_Saturne + extra_vars.update({ + 'debug': [False, "Build the debug version.", CUSTOM], + 'slurm': [False, "Build for the slurm workload manager.", CUSTOM], + }) + + return extra_vars + + def configure_step(self): + """Configure step for Code_Saturne.""" + + self.log.info("Configuration step is running...") + + # only use the opt flags + env.setvar("CFLAGS", os.environ['OPTFLAGS']) + env.setvar("CXXFLAGS", os.environ['OPTFLAGS']) + env.setvar("FCFLAGS", os.environ['OPTFLAGS']) + + self.log.info("Running ./sbin/bootstrap ...") + cmd = './sbin/bootstrap' + run_cmd(cmd, log_all=True, simple=True, log_output=True) + + cmd = ' '.join([ + self.cfg['preconfigopts'], + './configure', + '--prefix=' + self.installdir, + '--without-modules', + self.cfg['configopts'], + ]) + + if self.cfg['debug']: + cmd = ' '.join([cmd, '--enable-debug']) + + (out, _) = run_cmd(cmd, log_all=True, simple=False, log_output=True) + + return out + + def build_step(self): + """ Build step for Code_Saturne.""" + + paracmd = '' + if self.cfg['parallel']: + paracmd = "-j %s" % self.cfg['parallel'] + + cmd = "%s make %s %s" % (self.cfg['prebuildopts'], + paracmd, self.cfg['buildopts']) + + (out, _) = run_cmd(cmd, log_all=True, simple=False, log_output=True) + + return out + + def install_step(self): + """ Install step for Code_Saturne.""" + + cmd = "%s make install %s" % (self.cfg['preinstallopts'], + self.cfg['installopts']) + + (out, _) = run_cmd(cmd, log_all=True, simple=False, log_output=True) + + return out + + def post_install_step(self): + """Custom post install step for Code_Saturne.""" + super(EB_Code_underscore_Saturne, self).post_install_step() + + # if we are using a SLURM system, we need to change the defaults; + # so, modify the template and rename it to "etc/code_saturne.cfg" + if self.cfg['slurm']: + + self.log.info("Running the post-install SLURM step ...") + + target_path = os.path.join(self.installdir, 'etc/code_saturne.cfg') + from_path = target_path + '.template' + + apply_regex_substitutions( + from_path, + [(r"# batch =", r"batch = SLURM")] + ) + apply_regex_substitutions( + from_path, + [(r"# mpiexec = mpiexec", r"mpiexec = srun")] + ) + apply_regex_substitutions( + from_path, + [(r"# mpiexec_n = ' -n '", r"mpiexec_n = ' -n '")] + ) + apply_regex_substitutions( + from_path, + [(r"# mpiexec_n_per_node =", + r"mpiexec_n_per_node = ' --ntasks-per-node '")] + ) + + os.rename(from_path, target_path) + + def sanity_check_step(self): + """Custom sanity check step for Code_Saturne.""" + + shlib_ext = get_shared_lib_ext() + + custom_paths = { + 'files': ['bin/code_saturne', 'lib/libsaturne.%s' % shlib_ext], + 'dirs': ['bin', 'lib', 'libexec', 'include', 'etc'], + } + + super(EB_Code_underscore_Saturne, self).sanity_check_step( + custom_paths=custom_paths) + + def make_module_extra(self): + """Extra environment variables for Code_Saturne.""" + + txt = super(EB_Code_underscore_Saturne, self).make_module_extra() + + cs_bash_path = os.path.join(self.installdir, 'etc', + 'bash_completion.d', 'code_saturne') + txt += self.module_generator.set_environment('CS_BASH', cs_bash_path) + + return txt diff --git a/Golden_Repo/c/CGNS/CGNS-4.1.1-gpsmpi-2020.eb b/Golden_Repo/c/CGNS/CGNS-4.1.1-gpsmpi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..c3b439f031be2ff4574746675416fee6b253bd18 --- /dev/null +++ b/Golden_Repo/c/CGNS/CGNS-4.1.1-gpsmpi-2020.eb @@ -0,0 +1,36 @@ +# eb for CGNS +easyblock = 'CMakeMake' + +name = 'CGNS' +version = '4.1.1' + +homepage = 'https://cgns.github.io/' +description = """The CGNS system is designed to facilitate the exchange +of data between sites and applications, and to help stabilize the archiving +of aerodynamic data.""" + +site_contacts = 's.koh@fz-juelich.de' + +toolchain = {'name': 'gpsmpi', 'version': '2020'} +toolchainopts = {'optarch': True, 'pic': True, 'usempi': True} + +source_urls = ['https://github.com/CGNS/CGNS/archive/'] +sources = ['v%(version)s.tar.gz'] +checksums = ['055d345c3569df3ae832fb2611cd7e0bc61d56da41b2be1533407e949581e226'] + +dependencies = [ + ('HDF5', '1.10.6'), +] + +builddependencies = [ + ('CMake', '3.18.0'), +] + +sanity_check_paths = { + 'files': ["bin/%s" % x for x in ["cgnscheck", "cgnscompress", + "cgnsconvert", "cgnsdiff", "cgnslist", "cgnsnames", + "cgnsupdate"]], + 'dirs': [], +} + +moduleclass = 'cae' diff --git a/Golden_Repo/c/Code_Saturne/Code_Saturne-6.1.1-gpsmkl-2020.eb b/Golden_Repo/c/Code_Saturne/Code_Saturne-6.1.1-gpsmkl-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..caedcfdbfc8b7f5dae5dca12fc6bf1a996cc1aa7 --- /dev/null +++ b/Golden_Repo/c/Code_Saturne/Code_Saturne-6.1.1-gpsmkl-2020.eb @@ -0,0 +1,54 @@ +# easyconfig file for Code_Saturne +# author: Metin Cakircali (Juelich Supercomputing Centre) +# maintainer since 2020: Seong-Ryong Koh, Alex Strube at Juelich Supercomputing Centre (JSC) +name = 'Code_Saturne' +version = '6.1.1' + +# extra option for the SLURM batch system +slurm = True + +homepage = 'https://www.code-saturne.org' +description = """Code_Saturne solves the Navier-Stokes equations +for 2D, 2D-axisymmetric and 3D flows, steady or unsteady, +laminar or turbulent, incompressible or weakly dilatable, +isothermal or not, with scalars transport if required. + +Code_Saturne %(version)s%(versionsuffix)s is installed in +$EBROOTCODE_SATURNE +""" +site_contacts = 's.koh@fz-juelich.de' + +toolchain = {'name': 'gpsmkl', 'version': '2020'} +toolchainopts = {'optarch': True, 'pic': True, 'usempi': True} + +sources = [{ + 'source_urls': ['https://github.com/code-saturne/code_saturne/archive/'], + 'filename': 'v%(version)s.tar.gz' +}] + +builddependencies = [ + ('Autotools', '20200321'), + ('gettext', '0.20.2'), + ('Bison', '3.6.4'), + ('flex', '2.6.4'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('PyQt5', '5.15.1', '-Python-%(pyver)s'), + ('HDF5', '1.10.6'), + ('MED', '4.0.0'), + ('CGNS', '4.1.1'), + ('ParMETIS', '4.0.3'), + ('SCOTCH', '6.1.0'), + ('ParaView', '5.8.1', '-Python-%(pyver)s', ('gpsmkl', '2020')) +] + +# better to configure these dependents explicitly +configopts = ['--with-med=$EBROOTMED --with-cgns=$EBROOTCGNS --with-metis=$EBROOTPARMETIS --with-scotch=$EBROOTSCOTCH'] + +modloadmsg = "To benefit from shell completion for %(name)s commands and\n" +modloadmsg += "options, you may also source a bash completion file by;\n" +modloadmsg += ". $CS_BASH\n" + +moduleclass = 'cae' diff --git a/Golden_Repo/m/MED/MED-4.0.0-gpsmpi-2020.eb b/Golden_Repo/m/MED/MED-4.0.0-gpsmpi-2020.eb new file mode 100644 index 0000000000000000000000000000000000000000..eb7247f3729154e1ed3782e0762818a94e7b075a --- /dev/null +++ b/Golden_Repo/m/MED/MED-4.0.0-gpsmpi-2020.eb @@ -0,0 +1,34 @@ +# easyconfig file for Med File Library +# author: Metin Cakircali (Juelich Supercomputing Centre) +easyblock = 'ConfigureMake' + +name = 'MED' +version = '4.0.0' + +homepage = 'http://salome-platform.org/' +description = """Initially defined by EDF R&D, +this format has been defined and maintained +through a MED working group comprising members of +EDF R&D and CEA (the Code Saturne team being represented). +""" + +site_contacts = 's.koh@fz-juelich.de' + +toolchain = {'name': 'gpsmpi', 'version': '2020'} +toolchainopts = {'optarch': True, 'pic': True, 'usempi': True} + +sources = [{ + 'source_urls': ['http://files.salome-platform.org/Salome/other/'], + 'filename': 'med-%(version)s.tar.gz' +}] + +dependencies = [ + ('Python', '3.8.5'), + ('SWIG', '4.0.2', '-Python-%(pyver)s'), + ('HDF5', '1.10.6'), +] + +# better to configure these dependents explicitly +configopts = ['--with-f90 --with-hdf5=$EBROOTHDF5 --with-swig=$EBROOTSWIG'] + +moduleclass = 'lib' diff --git a/Golden_Repo/p/PyQt5/PyQt5-5.15.1-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/p/PyQt5/PyQt5-5.15.1-GCCcore-9.3.0-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..ddaa5035a5416cca27ee648d030df5066e3f19ab --- /dev/null +++ b/Golden_Repo/p/PyQt5/PyQt5-5.15.1-GCCcore-9.3.0-Python-3.8.5.eb @@ -0,0 +1,107 @@ +easyblock = 'Bundle' + +name = 'PyQt5' +version = '5.15.1' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'https://www.riverbankcomputing.com/software/pyqt' +description = """PyQt5 is a set of Python bindings for v5 of the Qt application framework from The Qt Company. +This bundle includes PyQtWebEngine, a set of Python bindings for The Qt Company’s Qt WebEngine framework.""" + +site_contacts = 'Sebastian Achilles <s.achilles@fz-juelich.de>' + +toolchain = {'name': 'GCCcore', 'version': '9.3.0'} +toolchainopts = {'cstd': 'c++11'} + +builddependencies = [('binutils', '2.34')] +dependencies = [ + ('Python', '3.8.5'), + ('Qt5', '5.14.2'), +] + +default_easyblock = 'PythonPackage' + +local_pylibdir = '%(installdir)s/lib/python%(pyshortver)s/site-packages' + +local_pyqt5_sip_install = " ".join([ + "sip-install", + "--verbose", + "--confirm-license", + "--target-dir " + local_pylibdir, +]) + +local_pyqtweb_configopts = " ".join([ + "configure.py", + "--verbose", + "--destdir=%s/PyQt5" % local_pylibdir, + "--apidir=%(installdir)s/qsci", + "--pyqt-sipdir=%(builddir)s/PyQt5-%(version)s/sip", + "--no-stubs", + "--no-dist-info", +]) + +local_setup_env = "export PATH=%(installdir)s/bin:$PATH && " +local_setup_env += "export PYTHONPATH=%(installdir)s/lib/python%(pyshortver)s/site-packages:$PYTHONPATH && " +local_sipver = '5.4.0' +components = [ + ('SIP', local_sipver, { + 'source_urls': [PYPI_SOURCE], + 'sources': [SOURCELOWER_TAR_GZ], + 'checksums': ['4282ab45948674f5ef74278a8e70d1302f65c95b519a0af19409002f5715d641'], + 'start_dir': 'sip-%s' % local_sipver, + 'use_pip': True, + 'options': {'modulename': 'PyQt5.sip'}, + }), + ('PyQt-builder', '1.5.0', { + 'source_urls': [PYPI_SOURCE], + 'sources': [SOURCE_TAR_GZ], + 'checksums': ['11bbe26e8e3d5ffec6d2ef2f50596b1670eb2d8b49aee0f859821922d8282841'], + 'start_dir': 'PyQt-builder-%(version)s', + 'use_pip': True, + }), + ('PyQt5_sip', '12.8.1', { + 'source_urls': [PYPI_SOURCE], + 'sources': [SOURCE_TAR_GZ], + 'checksums': ['30e944db9abee9cc757aea16906d4198129558533eb7fadbe48c5da2bd18e0bd'], + 'start_dir': 'PyQt5_sip-%(version)s', + 'use_pip': True, + }), + (name, version, { + 'source_urls': [PYPI_SOURCE], + 'sources': [SOURCE_TAR_GZ], + 'checksums': ['d9a76b850246d08da9863189ecb98f6c2aa9b4d97a3e85e29330a264aed0f9a1'], + 'easyblock': 'Binary', + 'start_dir': '%(name)s-%(version)s', + 'skipsteps': ['configure', 'build'], + 'install_cmd': local_setup_env + local_pyqt5_sip_install, + }), + ('PyQtWebEngine', version, { + 'source_urls': [PYPI_SOURCE], + 'sources': [SOURCE_TAR_GZ], + 'checksums': ['f0ca7915ee206ba5d703168c6ca40b0aad62c67360328fae4af5359cdbcee439'], + 'easyblock': 'ConfigureMakePythonPackage', + 'start_dir': '%(name)s-%(version)s', + 'preconfigopts': local_setup_env, + 'configopts': local_pyqtweb_configopts, + 'options': {'modulename': 'PyQt5.QtWebEngine'}, + }), +] + +sanity_check_paths = { + 'files': ['bin/pyqt-bundle', 'bin/sip-build', 'bin/sip-install', 'bin/sip5'], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +sanity_check_commands = [ + "python -c 'import PyQt5.QtCore'", + "python -c 'import PyQt5.pyrcc'", + "python -c 'import PyQt5.uic'", + "sip5 --help", +] + +modextrapaths = { + 'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages', + 'QT_INSTALL_DATA': 'qsci', +} + +moduleclass = 'vis' diff --git a/Golden_Repo/p/Python/Python-3.8.5-GCCcore-9.3.0.eb b/Golden_Repo/p/Python/Python-3.8.5-GCCcore-9.3.0.eb index 4015c7a6e407d7ecd92151da0ef0db76b09fc83c..be9d62ce1074188ade521dcac233a0a5ba563bbb 100644 --- a/Golden_Repo/p/Python/Python-3.8.5-GCCcore-9.3.0.eb +++ b/Golden_Repo/p/Python/Python-3.8.5-GCCcore-9.3.0.eb @@ -56,6 +56,9 @@ exts_list = [ ('six', '1.15.0', { 'source_urls': ['https://pypi.python.org/packages/source/s/six/'], }), + ('toml', '0.10.1', { + 'source_urls': ['https://pypi.python.org/packages/source/t/toml/'], + }), ('setuptools', '49.2.0', { 'source_tmpl': '%(name)s-%(version)s.zip', 'source_urls': ['https://pypi.python.org/packages/source/s/setuptools/'],