Something went wrong on our end
Select Git revision
CITATION.cff
-
Jan Meinke authoredJan Meinke authored
JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.6.eb 4.59 KiB
easyblock = 'Bundle'
name = 'JupyterKernel-Octave'
version = '6.1.0'
local_octavever = '6.1.0'
local_jupyterver = '2020.2.6'
versionsuffix = '-' + local_jupyterver
local_pysuffix = '-Python-%(pyver)s'
homepage = 'https://github.com/Calysto/octave_kernel'
description = """
Native Octave kernel for Jupyter.
Project Jupyter exists to develop open-source software, open-standards, and services
for interactive computing across dozens of programming languages.
"""
site_contacts = 'j.goebbert@fz-juelich.de'
toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
toolchainopts = {'pic': True}
builddependencies = [
('binutils', '2.34'),
('Octave', local_octavever, '-nompi'), # ensure it is available
]
dependencies = [
('Python', '3.8.5'),
('Jupyter', local_jupyterver, local_pysuffix),
# no dependency to Octave as it is loaded in kernel.sh
]
local_jupyter_path = 'share/jupyter'
local_kernel_dir = 'octave'
local_kernel_name = 'Octave-%s' % local_octavever
modextrapaths = {
'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'],
'JUPYTER_PATH': ['share/jupyter'], # add search path for kernelspecs
}
# Ensure that the user-specific $HOME/.local/share/jupyter is always first entry in JUPYTHER_PATH
modluafooter = """
prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter"))
"""
postinstallcmds = [
# Create virtual environment to ensure we install in the correct directory !!!
'python3 -m venv %(installdir)s --system-site-packages',
(
'{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n'
'#!/bin/bash\n'
'source %%(installdir)s/bin/activate\n'
'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:${PYTHONPATH}\n'
'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n'
'EOF'
) % (local_jupyter_path),
# enable use of Octave from production stage Stages/2020
'source %(builddir)s/env.sh && pip3 install ipykernel ',
'rm -rf %(installdir)s/share/jupyter/kernels/', # remove any kernel installed by ipykernel
'source %(builddir)s/env.sh && pip3 install ipyparallel ',
# install Python package octave_kernel
'source %(builddir)s/env.sh && pip3 install octave_kernel==0.32.0 ',
# write kernel.sh
(
'{ cat >> %%(builddir)s/env.sh; } << \'EOF\'\n'
'export KERNEL_DIR=%s\n'
'export KERNEL_NAME=%s\n'
'EOF'
) % (local_kernel_dir, local_kernel_name),
(
'{ source %%(builddir)s/env.sh && '
' cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.sh; } << EOF\n'
'#!/bin/bash \n'
'\n'
'# Load required modules \n'
'module purge \n'
'module use \$OTHERSTAGES \n'
'module load Stages/${STAGE} \n'
'module load GCCcore/.9.3.0 \n'
'\n' \
'module load Python/%%(pyver)s \n'
'module load Jupyter/%s%s \n'
'module load Octave/%s-nompi \n'
'\n'
'export PYTHONPATH=%%(installdir)s/lib/python%%(pyshortver)s/site-packages:\${PYTHONPATH} \n'
'\n'
'exec python \$@\n'
'EOF'
) % (local_kernel_dir, local_jupyterver, local_pysuffix, local_octavever),
'source %(builddir)s/env.sh && chmod +x %(installdir)s/share/jupyter/kernels/${KERNEL_DIR}/kernel.sh',
# write kernel.json
(
'{ source %%(builddir)s/env.sh && '
' cat > %%(installdir)s/share/jupyter/kernels/%s/kernel.json; } << \'EOF\'\n'
'{ \n'
' "argv": [ \n'
' "%%(installdir)s/share/jupyter/kernels/%s/kernel.sh", \n'
' "-m", \n'
' "octave_kernel", \n'
' "-f", \n'
' "{connection_file}" \n'
' ], \n'
' "display_name": "%s", \n'
' "mimetype": "text/x-octave", \n'
' "language": "python", \n'
' "name": "%s" \n'
'}\n'
'EOF'
) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name),
# ensure correct permissions
'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share',
# Ensure we remove the virtuel environment to avoid wrong search path for python packages
'rm %(installdir)s/pyvenv.cfg',
'rm -r %(installdir)s/bin',
]
# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module
# full_sanity_check = True
sanity_check_paths = {
'files': [
'share/jupyter/kernels/%s/kernel.sh' % local_kernel_dir,
'share/jupyter/kernels/%s/kernel.json' % local_kernel_dir,
],
'dirs': [
'lib/python%(pyshortver)s/site-packages',
'share/jupyter/kernels/octave/',
],
}
moduleclass = 'tools'