diff --git a/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb index 213c01ad8ff911f480f2ecc0e510968d77524b93..ee3ab68467797446a6bae0c3278ff2f2c11bbc0a 100644 --- a/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb +++ b/Golden_Repo/a/ANTLR/ANTLR-2.7.7-GCCcore-9.3.0-Python-3.8.5.eb @@ -25,7 +25,7 @@ builddependencies = [ ] dependencies = [ - ('Java', '1.8', '', True), + ('Java', '1.8', '', SYSTEM), ('Python', '3.8.5'), ] diff --git a/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb b/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb index 30786b3f7a2f1341cfef22b6241b3a0b55fb2c6c..0801b3b3e9789ea0f80f72f017509934c18b24fb 100644 --- a/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb +++ b/Golden_Repo/g/GPAW/GPAW-20.1.0-gpsmkl-2020-Python-3.8.5.eb @@ -35,7 +35,7 @@ dependencies = [ ('HDF5', '1.10.6'), ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')), ('libvdwxc', '0.4.0'), - ('GPAW-setups', '0.9.20000', '', True), + ('GPAW-setups', '0.9.20000', '', SYSTEM), ] preconfigopts = 'export MKL_ROOT=$MKLROOT && ' diff --git a/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb index 78e0e5ebffd41e5d70075fe1d944895f0dade8eb..3e66180645f0ffc436de682571f484d7f0f54e7b 100644 --- a/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb +++ b/Golden_Repo/g/GROMACS/GROMACS-2020.4-gpsmkl-2020.eb @@ -48,7 +48,7 @@ builddependencies = [ # Removed ('hwloc', '2.0.3') from dependencies due to runtime failures. dependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ] configopts = '-DCMAKE_PREFIX_PATH=$EBROOTHWLOC -DMPIEXEC_MAX_NUMPROCS="24" ' diff --git a/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb b/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb index 60a7ecd70b79c667cc4ed992596c8104c8486a74..f8f204c652c3acc104ad549907e3fc8ce50f8abd 100644 --- a/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb +++ b/Golden_Repo/g/GROMACS/GROMACS-2020.4-intel-para-2020.eb @@ -47,7 +47,7 @@ builddependencies = [ # Removed ('hwloc', '2.0.3') from dependencies due to runtime failures. dependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ] configopts = '-DCMAKE_PREFIX_PATH=$EBROOTHWLOC -DMPIEXEC_MAX_NUMPROCS="24"' diff --git a/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb b/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb index 10741d030f3611b43505166f1910ed4083a6f54b..973ed942e553d3b8bcc8366b05b7a1e938921277 100644 --- a/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb +++ b/Golden_Repo/g/Graphviz/Graphviz-2.44.1-GCCcore-9.3.0.eb @@ -37,7 +37,7 @@ dependencies = [ ('Ghostscript', '9.52'), ('GLib', '2.64.4'), ('GTS', '0.7.6'), - ('Java', '1.8', '', True), + ('Java', '1.8', '', SYSTEM), ('libpng', '1.6.37'), ('librsvg', '2.48.8'), ('Pango', '1.44.7'), diff --git a/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb b/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb index 4901086ff29cb198c3dedc7b9c47fc410b8bb1bd..8a73818e9690d6b87797922e0cd3fba7d7d3708c 100644 --- a/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb +++ b/Golden_Repo/g/gcccoremkl/gcccoremkl-9.3.0-2020.2.254.eb @@ -19,9 +19,9 @@ local_comp = (local_comp_name, local_comp_version) dependencies = [ local_comp, ('binutils', '2.34', '', local_comp), - ('imkl', local_mklver, '', True), + ('imkl', local_mklver, '', SYSTEM), ] -hiddendependencies = [('imkl', local_mklver, '', True)] +hiddendependencies = [('imkl', local_mklver, '', SYSTEM)] moduleclass = 'toolchain' diff --git a/Golden_Repo/hidden_deps.txt b/Golden_Repo/hidden_deps.txt index 3a45b6bcafcf5486d586b98afa8db444c934be51..74c6b3e597f0de59005ed1b80327342ce36c69c5 100644 --- a/Golden_Repo/hidden_deps.txt +++ b/Golden_Repo/hidden_deps.txt @@ -85,6 +85,15 @@ JSON-C JSON-GLib JsonCpp JUnit +JupyterKernel-Bash +JupyterKernel-Cling +JupyterKernel-JavaScript +JupyterKernel-Julia +JupyterKernel-Octave +JupyterKernel-PyParaView +JupyterKernel-R +JupyterKernel-Ruby +JupyterProxy-XpraHTML5 kbproto LAME LevelDB diff --git a/Golden_Repo/i/ITK/ITK-5.1.2-GCCcore-9.3.0-nompi-Python-3.6.8.eb b/Golden_Repo/i/ITK/ITK-5.1.2-GCCcore-9.3.0-nompi-Python-3.8.5.eb similarity index 100% rename from Golden_Repo/i/ITK/ITK-5.1.2-GCCcore-9.3.0-nompi-Python-3.6.8.eb rename to Golden_Repo/i/ITK/ITK-5.1.2-GCCcore-9.3.0-nompi-Python-3.8.5.eb diff --git a/Golden_Repo/i/ITK/ITK-5.1.2-gompi-2020-Python-3.6.8.eb b/Golden_Repo/i/ITK/ITK-5.1.2-gompi-2020-Python-3.8.5.eb similarity index 100% rename from Golden_Repo/i/ITK/ITK-5.1.2-gompi-2020-Python-3.6.8.eb rename to Golden_Repo/i/ITK/ITK-5.1.2-gompi-2020-Python-3.8.5.eb diff --git a/Golden_Repo/i/ITK/ITK-5.1.2-gpsmpi-2020-Python-3.6.8.eb b/Golden_Repo/i/ITK/ITK-5.1.2-gpsmpi-2020-Python-3.8.5.eb similarity index 100% rename from Golden_Repo/i/ITK/ITK-5.1.2-gpsmpi-2020-Python-3.6.8.eb rename to Golden_Repo/i/ITK/ITK-5.1.2-gpsmpi-2020-Python-3.8.5.eb diff --git a/Golden_Repo/j/Jupyter/401html.patch b/Golden_Repo/j/Jupyter/401html.patch new file mode 100644 index 0000000000000000000000000000000000000000..c3e71a800541a396377737132022c67a077d7564 --- /dev/null +++ b/Golden_Repo/j/Jupyter/401html.patch @@ -0,0 +1,135 @@ +diff -Naur jupyterlab-2.2.9.orig/401.html jupyterlab-2.2.9/401.html +--- jupyterlab-2.2.9.orig/401.html 1970-01-01 01:00:00.000000000 +0100 ++++ jupyterlab-2.2.9/401.html 2020-12-11 23:24:45.301738818 +0100 +@@ -0,0 +1,131 @@ ++<!DOCTYPE html> ++<html><head> ++ <meta http-equiv="Refresh" content="0; url=https://jupyter-jsc.fz-juelich.de/hub/logout?stopall=false&alldevices=false" /> ++ ++ <meta http-equiv="content-type" content="text/html; charset=UTF-8"> ++ <meta charset="utf-8"> ++ ++ <title>jupyter-jsc</title> ++ <meta http-equiv="X-UA-Compatible" content="chrome=1"> ++ <meta property="og:image" content="/hub/static/images/mini_website.jpg"> ++ <meta property="og:locale" content="en_US"> ++ <meta property="og:site_name" content="jupyter-jsc"> ++ <meta property="og:title" content="jupyter-jsc"> ++ <meta property="og:type" content="website"> ++ <meta property="og:url" content="https://jupyter-jsc.fz-juelich.de/"> ++ ++ <link rel="stylesheet" href="/hub/static/css/style.min.css" type="text/css"> ++ <link rel="stylesheet" href="/hub/static/css/j4j_font.min.htm" type="text/css"> ++ <link rel="stylesheet" href="/hub/static/css/j4j_base.min.css" type="text/css"> ++ <link rel="stylesheet" href="/hub/static/css/j4j_base_header.min.css" type="text/css"> ++ <link rel="stylesheet" href="/hub/static/css/j4j_base_footer.min.css" type="text/css"> ++ <link rel="icon" href="/hub//static/images/favicon.svg" type="jpg/png"> ++ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.css"> ++ <link rel="stylesheet" href="/hub/static/css/j4j_page_home.min.css" type="text/css"> ++ <link rel="stylesheet" href="/hub/static/css/spawn_style.css" type="text/css"> ++ ++<body> ++ ++<div id="container"> ++ ++ <div id="header-background"> ++ <div id="header"> ++ <nav class="navbar navbar-default"> ++ <div class="container-fluid"> ++ <div class="navbar-header"> ++ <span id="jupyterhub-logo" class="pull-left"><a href="https://www.fz-juelich.de/jsc" target="_blank"><img src="/hub/static/images/jsc.png" alt="JupyterHub" class="jpy-logo" title="Home"></a></span> ++ </div> ++ ++ <div id="thenavbar"> ++ <ul class="nav navbar-nav"> ++ ++ <li><a href="https://jupyter-jsc.fz-juelich.de/hub/start">Start</a></li> ++ ++ <li id="navbarbtn-links" class="main-menu-btn menu-btn"><a>Links</a> ++ <div id="navbarmenu-links" class="menu-box"> ++ <ul> ++ <li id="navbarbtn-links-1" class="menu-btn"><a>jupyter-jsc</a> ++ <div id="navbarmenu-links-1" class="menu-box menu-sub-box show-sub-header" style=""> ++ <ul> ++ <li class=""><a href="https://jupyter-jsc.fz-juelich.de/nbviewer/github/kreuzert/Jupyter-JSC/blob/master/Extensions.ipynb">Extensions at jupyter-jsc</a></li> ++ <li class=""><a href="https://jupyter-jsc.fz-juelich.de/nbviewer/github/kreuzert/Jupyter-JSC/blob/master/FAQ.ipynb">HDFCloud FAQ</a></li> ++ <li class=""><a href="https://jupyter-jsc.fz-juelich.de/static/files/projects.html">Link Projects to Home</a></li> ++ <li class=""><a href="https://jupyter-jsc.fz-juelich.de/static/files/kernel.html">Setup your own kernel</a></li> ++ <li class=""><a target="_blank" href="https://www.unicore.eu/about-unicore/case-studies/jupyter-at-jsc/">jupyter-jsc at unicore.eu</a></li> ++ </ul> ++ </div> ++ </li> ++ <li id="navbarbtn-links-2" class="menu-btn"><a>Jupyter</a> ++ <div id="navbarmenu-links-2" class="menu-box menu-sub-box show-sub-header" style=""> ++ <ul> ++ <li class=""><a target="_blank" href="https://www-jupyter.org/">Home</a></li> ++ <li class=""><a target="_blank" href="https://newsletter.jupyter.org/">Newsletter</a></li> ++ <li class=""><a target="_blank" href="https://www.youtube.com/watch?v=HW29067qVWk">Introduction Video</a></li> ++ <li class=""><a target="_blank" href="https://blog.jupyter.org/">Blog</a></li> ++ <li class=""><a target="_blank" href="https://jupyter.org/documentation.html">Documentation</a></li> ++ <li class=""><a target="_blank" href="https://www.oreilly.com/topics/jupyter">O'Reilly on Jupyter</a></li> ++ <li class=""><a target="_blank" href="https://twitter.com/projectjupyter">Twitter</a></li> ++ <li class=""><a target="_blank" href="https://github.com/trending/jupyter-notebook">Jupyter-Notebooks</a></li> ++ </ul> ++ </div> ++ </li> ++ <li id="navbarbtn-links-3" class="menu-btn"><a>JSC</a> ++ <div id="navbarmenu-links-3" class="menu-box menu-sub-box show-sub-header" style=""> ++ <ul> ++ <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JUWELS/JUWELS_node.html">JUWELS</a></li> ++ <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JURECA/JURECA_node.html">JURECA</a></li> ++ <li class=""><a target="_blank" href="https://hbp-hpc-platform.fz-juelich.de/?page_id=1073">JURON</a></li> ++ <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/News/Newsletter/newsletter_node.html">Newsletter</a></li> ++ <li class=""><a target="_blank" href="https://www.fz-juelich.de/ias/jsc/EN/News/Events/events_node.html">Events</a></li> ++ <li class=""><a target="_blank" href="https://twitter.com/fzj_jsc">Twitter</a></li> ++ </ul> ++ </div> ++ </li> ++ </ul> ++ </div> ++ </li> ++ ++ </ul> ++ </div> ++ </div> ++ </nav> ++ </div> ++ </div> ++ ++<div id="body"> ++<div class="background-wrapper"> ++ <div class="content" id="JupyterLabs-div"> ++ ++ <!--<center><h2 style="color:red">jupyter-jsc maintenance: 25-02-2020 - 26-02-2020</h2></center>--> ++ <h2> ++ The access token of your browser session to the running JupyterLab has expired. ++ </h2> ++ <p> ++ Unfortunately you have to log out and log in again from the Jupyter-JSC to regain access permission.<br> ++ <a href="https://jupyter-jsc.fz-juelich.de/hub/logout?stopall=false&alldevices=false"> Logout now </a> ++ </p> ++ ++ </div> ++</div> ++</div> ++ ++<div class="footer"> ++ <div class="footer-top-background"> ++ </div> ++ <div class="footer-bottom-background"> ++ <div class="footer-bottom"> ++ <div class="footer-links"> ++ <span>© Forschungszentrum Jülich</span> ++ <a href="https://jupyter-jsc.fz-juelich.de/hub/imprint">Imprint</a> ++ <a href="https://jupyter-jsc.fz-juelich.de/hub/privacy">Privacy Policy</a> ++ <a href="mailto:ds-support@fz-juelich.de?subject=jupyter-jsc Support&body=Please describe your problem here. (english or german)">Support</a> ++ <a href="https://jupyter-jsc.fz-juelich.de/hub/terms">Terms of Service</a> ++ </div> ++ <a href="https://www.helmholtz.de/en/" target="_blank"><img class="helmholtz-logo" src="/hub/static/images/helmholtz.png"></a> ++ </div> ++ </div> ++</div> ++ ++</div> <!-- container --> ++ ++</body></html> diff --git a/Golden_Repo/j/Jupyter/Jupyter-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/j/Jupyter/Jupyter-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..b5b826ec34b3b8385af35bf77c3ea82903fc14c2 --- /dev/null +++ b/Golden_Repo/j/Jupyter/Jupyter-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb @@ -0,0 +1,1317 @@ +easyblock = 'Bundle' + +name = 'Jupyter' +version = '2020.2.5' +versionsuffix = '-Python-%(pyver)s' + +local_jlab_version = '2.2.9' + +homepage = 'http://www.jupyter.org' +description = """ +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'), + ('unzip', '6.0'), + ('Autotools', '20200321'), + ('pkg-config', '0.29.2'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('libyaml', '0.2.5'), + ('Pandoc', '2.11.0.4', '', SYSTEM), # For doc-generation + ('texlive', '20200406'), + ('ITK', '5.1.2', '-nompi' + versionsuffix), + ('HDF5', '1.10.6', '-serial'), + ('netcdf4-python', '1.5.4', '-serial' + versionsuffix), + ('FFmpeg', '4.3.1'), # for pydub + ('LLVM', '10.0.1'), # llvmlite + ('git', '2.28.0'), # for jupyterlab-git (req. >=2.0) + ('SciPy-Stack', '2020', versionsuffix), +] + +osdependencies = [('openssl'), ('git')] + +local_common_opts = { + 'req_py_majver': '3', + 'req_py_minver': '0' +} + +# this is a bundle of Python packages +exts_defaultclass = 'PythonPackage' +exts_default_options = { + 'filter': ('python -c "import %(ext_name)s"', ''), + 'download_dep_fail': True, + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, + 'sanity_pip_check': True, + 'use_pip_for_deps': False, +} + +components = [ + ('nodejs', '14.15.3', { + 'easyblock': 'ConfigureMake', + 'source_urls': ['http://nodejs.org/dist/v%(version)s/'], + 'sources': ['node-v%(version)s.tar.gz'], + 'start_dir': 'node-v%(version)s', + }), +] + +exts_list = [ + ('distro', '1.5.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92')]), + ])), + ('scikit-build', '0.11.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'da40dfd69b2456fad1349a894b90180b43712152b8a85d2a00f4ae2ce8ac9a5c')]), + ('modulename', 'skbuild'), + ])), + ('ptvsd', '4.3.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'ptvsd-4.3.2.zip'), + ('checksums', [('sha256', '3b05c06018fdbce5943c50fb0baac695b5c11326f9e21a5266c854306bda28ab')]), + ])), + # ('cryptography', '2.8', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '3cda1f0ed8747339bbdf71b9f38ca74c7b592f24f65cdb3ab3765e4b02871651')]), + # ])), # part of Python module + ('pyOpenSSL', '19.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507')]), + ('modulename', 'OpenSSL'), + ])), + ('entrypoints', '0.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451')]), + ('use_pip', False), + ])), + ('async_generator', '1.10', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144')]), + ])), + ('nest_asyncio', '1.4.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'eaa09ef1353ebefae19162ad423eef7a12166bcc63866f8bff8f3635353cd9fa')]), + ])), + ('absl-py', '0.8.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd9129186431e150d7fe455f1cb1ecbb92bb5dba9da9bc3ef7b012d98c4db2526')]), + ('modulename', 'absl'), + ])), + ('websockify', '0.9.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c35b5b79ebc517d3b784dacfb993be413a93cda5222c6f382443ce29c1a6cada')]), + ])), + ('typing_extensions', '3.7.4.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '79ee589a3caca649a9bfd2a8de4709837400dfa00b6cc81962a1e6a1815969ae')]), + ])), + # General Python packages + ('tornado', '6.0.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9')]), + ])), + ('bokeh', '2.0.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd9248bdb0156797abf6d04b5eac581dcb121f5d1db7acbc13282b0609314893a')]), + ])), + ('seaborn', '0.9.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '76c83f794ca320fb6b23a7c6192d5e185a5fcf4758966a0c0a54baee46d41e2f')]), + ])), + ('nbformat', '5.0.8', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f545b22138865bfbcc6b1ffe89ed5a2b8e2dc5d4fe876f2ca60d8e6f702a30f8')]), + ])), + ('param', '1.9.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '8370d41616e257b8ed2e242ec531e0340b8c954bea414b791fa0ef6235959981')]), + ])), + # Jupyter-core and dependencies + ('alabaster', '0.7.12', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02')]), + ])), + ('Babel', '2.7.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28')]), + ('modulename', 'babel'), + ])), + ('snowballstemmer', '2.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52')]), + ])), + ('docutils', '0.15.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99')]), + ])), + ('imagesize', '1.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5')]), + ])), + ('sphinxcontrib-websupport', '1.1.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1501befb0fdf1d1c29a800fdbf4ef5dc5369377300ddbdd16d2cd40e54c6eefc')]), + ('modulename', 'sphinxcontrib'), + ])), + ('Sphinx', '1.8.5', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c7658aab75c920288a8cf6f09f244c6cfdae30d82d803ac1634d9f223a80ca08')]), + ('modulename', 'sphinx'), + ])), + # ('pexpect', '4.7.0', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '9e2c1fd0e6ee3a49b28f95d4b33bc389c89b20af6a1255906e90ff1262ce62eb')]), + # ])), # part of Python module, but in version 4.6.0 (sanity check fails if package used from Python dependency) + ('ipython', '7.9.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'dfd303b270b7b5232b3d08bd30ec6fd685d8a58cabd54055e3d69d8f029f7280')]), + ('modulename', 'IPython'), + ])), # part of Python module, but in version 7.4.0 (sanity check fails if package used from Python dependency) + ('ipynb', '0.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '8d834c777ca3885289938728cc382f081c86a58e92961e86f0aba60c96938ce5')]), + ])), + ('jupyter_core', '4.7.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'aa1f9496ab3abe72da4efe0daab0cb2233997914581f9a071e07498c6add8ed3')]), + ])), + ('retrying', '1.3.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '08c039560a6da2fe4f2c426d0766e284d3b736e355f8dd24b37367b0bb41973b')]), + ])), + ('plotly', '4.12.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '9ec2c9f4cceac7c595ebb77c98cbeb6566a97bef777508584d9bb7d9bcb8854c')]), + ])), + ('tikzplotlib', '0.8.4', dict(list(local_common_opts.items()) + [ # renamed to matplotlib2tikz with version 0.8.0 + ('checksums', [('sha256', '284e70915fc6994472abd2fa47af947e7606085e9957898fc645f0dd9b44da8c')]), + ])), + # Jupyter client + ('jupyter_client', '6.1.7', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '49e390b36fe4b4226724704ea28d9fb903f1a3601b6882ce3105221cd09377a1')]), + ])), + ('pynvml', '8.0.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c8d4eadc648c7e12a3c9182a9750afd8481b76412f83747bcc01e2aa829cde5d')]), + ])), + # Jupyter notebook and dependencies + # ('traitlets', '4.3.3', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', 'd023ee369ddd2763310e4c3eae1ff649689440d4ae59d7485eb4cfbbe3e359f7')]), + # ])), # part of Python module (sanity check fails if package used from Python dependency) + ('pyzmq', '18.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '93f44739db69234c013a16990e43db1aa0af3cf5a4b8b377d028ff24515fbeb3')]), + ('modulename', 'zmq'), + ])), + ('singledispatch', '3.4.0.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c')]), + ])), + ('ipyparallel', '6.2.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '76c7b028962b0ba762e4e45b450ee3a4353e7221526a8af812e817d7ef6ac065')]), + ])), + ('ipykernel', '5.1.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'b368ad13edb71fa2db367a01e755a925d7f75ed5e09fbd3f06c85e7a8ef108a8')]), + ])), + ('terminado', '0.8.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '4804a774f802306a7d9af7322193c5390f1da0abb429e082a10ef1d46e6fb2c2')]), + ('use_pip', False), + ])), + ('bleach', '3.1.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'aa8b870d0f46965bac2c073a93444636b0e1ca74e9777e34f03dd494b8a59d48')]), + ])), + ('mistune', '0.8.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e')]), + ])), + ('pandocfilters', '1.4.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'b3dd70e169bb5449e6bc6ff96aea89c5eea8c5f6ab5e207fc2f521a2cf4a0da9')]), + ])), + ('testpath', '0.4.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '60e0a3261c149755f4399a1fff7d37523179a70fdc3abdf78de9fc2604aeec7e')]), + ('use_pip', False), + ])), + ('nbconvert', '6.0.7', dict(list(local_common_opts.items()) + [ # convert Jupyter notebooks to: HTML, Latex, etc. + # !!! nbconvert will try to read from all paths in <jupyter-config-path> the file nbconvert/templates/conf.json + # ensure it has permissions (https://github.com/jupyter/nbconvert/issues/1430) + ('checksums', [('sha256', 'cbbc13a86dfbd4d1b5dee106539de0795b4db156c894c2c5dc382062bbc29002')]), + # 6.0.7 - patch for jupyter_contrib_nbextensions needed: + # https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532 + ])), + # ('ipython_genutils', '0.2.0', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', 'eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8')]), + # ])), # part of Python module (sanity check fails if package used from Python dependency) + ('Send2Trash', '1.5.0', dict(list(local_common_opts.items()) + [ # req. by widgetsnbextension + ('checksums', [('sha256', '60001cc07d707fe247c94f74ca6ac0d3255aabcb930529690897ca2a39db28b2')]), + ('modulename', 'send2trash'), + ])), + ('argon2-cffi', '20.1.0', dict(list(local_common_opts.items()) + [ # req. for notebook >= 6.1 + ('checksums', [('sha256', 'd8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d')]), + ('modulename', 'argon2'), + ])), + ('notebook', '6.1.5', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3db37ae834c5f3b6378381229d0e5dfcbfb558d08c8ce646b1ad355147f5e91d')]), + ('patches', ['notebook-6.0.3_jsc.patch']), # allow others to read/write in .ipynb_checkpoints + ])), + ('version_information', '1.0.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '811b9cea4b376aa62a77dc729a937ce8e2844573b8686b5c1840147054fb938d')]), + ])), + ('lesscpy', '0.13.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f3c6d0b544c5bcdadcd3d8319feccb4128d06676d4117c6c9396ab39c25372ad')]), + ])), + ('prometheus_client', '0.7.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '71cd24a2b3eb335cb800c7159f423df1bd4dcd5171b234be15e3f31ec9f622da')]), + ])), + ('jupyterthemes', '0.20.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '2a8ebc0c84b212ab99b9f1757fc0582a3f53930d3a75b2492d91a7c8b36ab41e')]), + ])), + # Jupyter Lab and dependencies + ('zipp', '0.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e')]), + ])), + ('jupyter-packaging', '0.4.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd89134d2df88c30098bce0f8d8fb07b988ef0f616775dbd4b82dac9562b5cae6')]), + ])), + ('importlib_metadata', '0.23', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26')]), + ])), + ('jsonschema', '3.1.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f')]), + ])), # part of Python module in version 3.0.1 (sanity check fails if package used from Python dependency) + ('jupyterlab_launcher', '0.13.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f880eada0b8b1f524d5951dc6fcae0d13b169897fc8a247d75fb5beadd69c5f0')]), + ])), + ('sphinx_rtd_theme', '0.4.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '728607e34d60456d736cc7991fd236afb828b21b82f956c5ea75f94c8414040a')]), + ])), + ('future', '0.18.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '858e38522e8fd0d3ce8f0c1feaf0603358e366d5403209674c7b617fa0c24093')]), + ])), + ('commonmark', '0.9.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60')]), + ])), + ('recommonmark', '0.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '29cd4faeb6c5268c633634f2d69aef9431e0f4d347f90659fd0aab20e541efeb')]), + ])), + ('jupyterlab', local_jlab_version, dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3be8f8edea173753dd838c1b6d3bbcb6f5c801121f824a477025c1b6a1d33dc6')]), + ('patches', [('401html.patch', 1)]) + ])), + ('json5', '0.8.5', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '124b0f0da1ed2ff3bfe3a3e9b8630abd3c650852465cb52c15ef60b8e82a73b0')]), + ])), + ('jupyterlab_server', '1.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c')]), + ])), + ('jupyter_kernel_gateway', '2.4.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '6424a9f118e757ef18e9bed7784ca05ad9e633945df328ac4d8810eadc6f6ccd')]), + ('modulename', 'kernel_gateway'), + ])), + ('nbclient', '0.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '01e2d726d16eaf2cde6db74a87e2451453547e8832d142f73f72fddcd4fe0250')]), + ])), + # Jupyter Kernel and dependencies + ('ptyprocess', '0.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '923f299cc5ad920c68f2bc0bc98b75b9f838b93b599941a6b63ddbc2476394c0')]), + ('use_pip', False), + ])), + # Jupyter Widgets and dependencies + ('defusedxml', '0.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5')]), + ])), + ('widgetsnbextension', '3.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7')]), + ])), + ('ipywidgets', '7.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'e945f6e02854a74994c596d9db83444a1850c01648f1574adf144fbbabe05c97')]), + ])), + # ('ipyscales', '0.5.0', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '')]), + # ])), + ('ipydatawidgets', '4.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd9f94828c11e3b40350fb14a02e027f42670a7c372bcb30db18d552dcfab7c01')]), + ])), + ('traittypes', '0.2.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'be6fa26294733e7489822ded4ae25da5b4824a8a7a0e0c2dccfde596e3489bd6')]), + ])), + ('bqplot', '0.12.17', dict(list(local_common_opts.items()) + [ # 2-D plotting with d3.js + ('checksums', [('sha256', 'f103d82e7c05ec29e2c4c2357cb207acb99cf5fedbad55f26e04d8bbdb3248ad')]), + ])), + ('jupyter_bokeh', '2.0.2', dict(list(local_common_opts.items()) + [ # ipywidget for bokeh + ('checksums', [('sha256', '8dc63198833e478c3231ba5a1c5492bac859f875b1dc4e8190ce308276aa01fc')]), + ])), + ('pythreejs', '2.2.0', dict(list(local_common_opts.items()) + [ # 3-D scene visualization with three.js + ('checksums', [('sha256', 'c05f52932efd58ff18beb333a6b2bb80341e980718a313b74821c4a5c8640721')]), + ])), + ('PyWavelets', '1.1.1', dict(list(local_common_opts.items()) + [ # for a nice threejs example notebook + ('checksums', [('sha256', '1a64b40f6acb4ffbaccce0545d7fc641744f95351f62e4c6aaa40549326008c9')]), + ('modulename', 'pywt'), + ])), + ('imageio', '2.6.1', dict(list(local_common_opts.items()) + [ # for a nice threejs example notebook + ('checksums', [('sha256', 'f44eb231b9df485874f2ffd22dfd0c3c711e7de076516b9374edea5c65bc67ae')]), + ])), + ('networkx', '2.3', dict(list(local_common_opts.items()) + [ # for a nice threejs example notebook + ('source_tmpl', 'networkx-2.3.zip'), + ('checksums', [('sha256', '8311ddef63cf5c5c5e7c1d0212dd141d9a1fe3f474915281b73597ed5f1d4e3d')]), + ])), + ('scikit-image', '0.16.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'dd7fbd32da74d4e9967dc15845f731f16e7966cee61f5dc0e12e2abb1305068c')]), + ('modulename', 'skimage'), + ])), + ('ipywebrtc', '0.5.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '4db2be7d0bfcbd142b2f9f9e8303b926832a632ed4a3bc5681b319a5f226285a')]), + ])), + ('ipyvolume', '0.6.0a6', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1a71c681dd39b514db966c4812bbbd1347ce082ee7a7bcc53f494e0546bf37ff')]), + ])), + ('branca', '0.3.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3e762c9bdf40725f3d05ea1fda8fae9b470bfada6474e43a1242c8204a7bb15e')]), + ])), + ('ipyleaflet', '0.13.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c05f138327926bc81f29a629588bd656be5ff76dd8785c1e7eac5445b1d5a432')]), + ])), + ('ipympl', '0.4.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c33243047166fbedf3729af116186ae1894ee45db71cbc6632bf057a913ae010')]), + ])), + # ('PyYAML', '5.1.2', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4')]), + # ('modulename', 'yaml'), + # ])), # part of Python module (sanity check fails if package used from Python dependency) + # Jupyter Notebook Extensions + ('jupyter_nbextensions_configurator', '0.4.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'e5e86b5d9d898e1ffb30ebb08e4ad8696999f798fef3ff3262d7b999076e4e83')]), + ])), + ('jupyter_latex_envs', '1.4.6', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '070a31eb2dc488bba983915879a7c2939247bf5c3b669b398bdb36a9b5343872')]), + ('patches', ['jupyter_latex_envs-template_paths.patch']), + # support for nbconvert>=6.x -> https://github.com/jfbercher/jupyter_latex_envs/pull/58 + ('modulename', 'latex_envs'), + ])), + ('jupyter_highlight_selected_word', '0.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '9fa740424859a807950ca08d2bfd28a35154cd32dd6d50ac4e0950022adc0e7b')]), + ])), + ('prompt_toolkit', '2.0.10', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f15af68f66e664eaa559d4ac8a928111eebd5feda0c11738b5998045224829db')]), + ])), + ('jupyter_contrib_core', '0.3.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'e65bc0e932ff31801003cef160a4665f2812efe26a53801925a634735e9a5794')]), + ])), + ('jupyter_contrib_nbextensions', '0.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'eecd28ecc2fc410226c0a3d4932ed2fac4860ccf8d9e9b1b29548835a35b22ab')]), + ('patches', ['jupyter_contrib_nbextensions-template_paths.patch']), + # support for nbconvert>=6.x -> https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532 + ])), + ('rise', '5.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '2be45c3dbe27e63aae047c6a90be19798b6e17e9b6b0e25408b3c4f645658e26')]), + ])), + ('idna-ssl', '1.1.0', dict(list(local_common_opts.items()) + [ # indirect dep of jupyter-server-proxy + ('checksums', [('sha256', 'a933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c')]), + ])), + ('multidict', '4.7.5', dict(list(local_common_opts.items()) + [ # indirect dep of jupyter-server-proxy + ('checksums', [('sha256', 'aee283c49601fa4c13adc64c09c978838a7e812f85377ae130a24d7198c0331e')]), + ])), + ('yarl', '1.4.2', dict(list(local_common_opts.items()) + [ # indirect dep of jupyter-server-proxy + ('checksums', [('sha256', '58cd9c469eced558cd81aa3f484b2924e8897049e06889e8ff2510435b7ef74b')]), + ])), + ('async-timeout', '3.0.1', dict(list(local_common_opts.items()) + [ # indirect dep of jupyter-server-proxy + ('checksums', [('sha256', '0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f')]), + ])), + ('aiohttp', '3.6.2', dict(list(local_common_opts.items()) + [ # indirect dep of jupyter-server-proxy + ('checksums', [('sha256', '259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326')]), + ])), + ('simpervisor', '0.3', dict(list(local_common_opts.items()) + [ # indirect dep of jupyter-server-proxy + ('checksums', [('sha256', 'd82e4527ae326747551e4bdfa632ff4ebef275ce721f80886c747adfdbf41c2e')]), + ])), + ('jupyter_server', '1.0.7', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'b0b3185975b32a03520aa577d90145bc288a3a12124e0e80306ec6216c9b8634')]), + ])), + ('jupyter-server-proxy', '1.5.2', dict(list(local_common_opts.items()) + [ + ('source_urls', ['https://github.com/jupyterhub/jupyter-server-proxy/archive/']), + ('source_tmpl', 'v%(version)s.tar.gz'), + ('checksums', [('sha256', '140bd642c511519ddd2acc5f70e0b46a40bbc673c888dcb3b19981005286853b')]), + ('patches', ['jupyterserverproxy-urlfile.patch']), + ])), + # Jupyter Lab Extensions + ('jupyterlab_github', '2.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1f560a91711b779d08118161af044caff44159e315cb80ae830d3dfbded7bac9')]), + # do not use pypi for download -> we need to patch drive.json + ('source_urls', ['https://github.com/jupyterlab/jupyterlab-github/archive']), + ('source_tmpl', 'v%(version)s.tar.gz'), + ('patches', ['jupyterlab_github-%(version)s_jsc.patch']), + ])), + ('jupyterlab-gitlab', '2.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '31d3fbd9b139aca7704dd13967ac22c81e372b50c4db730f342ab7800db7a5c6')]), + # do not use pypi for download -> we need to patch drive.json + ('source_urls', ['https://gitlab.com/beenje/jupyterlab-gitlab/-/archive/%(version)s']), + ('source_tmpl', 'jupyterlab-gitlab-%(version)s.tar.gz'), + ('patches', ['jupyterlab-gitlab-%(version)s_jsc.patch']), + ])), + ('jupyterlab-quickopen', '0.5.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('90cba3a7e6ff8d2b3eaf2594079c25f82e2c158d2ec63ebd951e4042a7445f8e')]), + ])), + ('zstandard', '0.12.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a110fb3ad1db344fbb563942d314ec5f0f3bdfd6753ec6331dded03ad6c2affb')]), + ])), + + # https://blog.kitware.com/itk-is-on-pypi-pip-install-itk-is-here/ + ('itk_core', '5.1.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'itk_core-5.1.2-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', '1f0254f0f134b709e6df3601dc38ccc45c2d5d5576fc10e1a0313d1fe8aefa84')]), + ('unpack_sources', False), + ('modulename', 'itk'), + ])), + ('itk_filtering', '5.1.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'itk_filtering-5.1.2-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', 'f4a1256c8c684329780b9f4326fb571023af1d96fbda7cb7b513b4a395a9cd42')]), + ('unpack_sources', False), + ('modulename', 'itk'), + ])), + ('itk_segmentation', '5.1.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'itk_segmentation-5.1.2-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', 'f81ba4881f7802eb5b911c4e1eac4706220647196ebda68477318630542db226')]), + ('unpack_sources', False), + ('modulename', 'itk'), + ])), + ('itk_numerics', '5.1.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'itk_numerics-5.1.2-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', '6ac84a6386cd51692ed9605b6daefcc6230ec976f93161c9c5d89cfdfe042eba')]), + ('unpack_sources', False), + ('modulename', 'itk'), + ])), + ('itk_registration', '5.1.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'itk_registration-5.1.2-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', 'd25b578ffb859f07cbad6987d1adb507e357d91f82863faeae337d8645b9d29d')]), + ('unpack_sources', False), + ('modulename', 'itk'), + ])), + ('itk_io', '5.1.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'itk_io-5.1.2-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', '6ecc528ce4ae42b6d14c972d51055856f130a13474463ba4bf187ed2afdb04b1')]), + ('unpack_sources', False), + ('modulename', 'itk'), + ])), + ('itk_meshtopolydata', '0.6.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'itk_meshtopolydata-0.6.2-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', '486e418808c27ccc76619737219fa57fcd1de2da5fcd0325ee8c4395965deb39')]), + ('unpack_sources', False), + ('modulename', 'itk'), + ])), + ('pyct', '0.4.6', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'df7b2d29f874cabdbc22e4f8cba2ceb895c48aa33da4e0fe679e89873e0a4c6e')]), + ])), + ('colorcet', '2.0.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '514813790a74b578c3eaff76b2102274c2ba8b0239c9504586df685223007dee')]), + ])), + ('itkwidgets', '0.32.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '11ee93007cf354405e01bf9a28fb1eb2fb0a5d139e1cdded1a07b47f7ee76972')]), + ])), + ('ujson', '3.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'abb1996ba1c1d2faf5b1e38efa97da7f64e5373a31f705b96fe0587f5f778db4')]), + ])), + # ('jupyterlab_iframe', '0.2.2', dict(list(local_common_opts.items()) + [ # open HTML URLs in Jupyter-Tabs + # ('checksums', [('sha256', '7c26cddc5f29f0b5ac6ba4707ce811f9787282549d22098b691bcdcc6692238c')]), + # ('use_pip', False), + # ])), + ('python-dotenv', '0.10.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f157d71d5fec9d4bd5f51c82746b6344dffa680ee85217c123f4a0c8117c4544')]), + ('modulename', 'dotenv'), + ])), + # ('ipyauth', '0.2.5', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '189db0e9fd48cf52f333ef8ac1a71b9e3a9eec6561f5085e3d7239ca2588ba87')]), + # ])), + ('jupyterlab_latex', '2.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '722558144e6ce71abe4fba0fb01c13c37271fa2497881bfebe9b6422d1fc795b')]), + ])), + # ('jupyterlab_slurm', '1.0.5', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', 'f7c6a54efe529cc47194cb4a7cbf1225fc0b0668d4dfe118405b68bde805c061')]), + # ])), + ('jupyterlmod', '2.0.2', dict(list(local_common_opts.items()) + [ + ('source_urls', ['https://github.com/cmd-ntrf/jupyter-lmod/archive/']), + ('source_tmpl', '%(version)s.tar.gz'), + ('checksums', [('sha256', 'f547432afb30cb87c8dabf78fd4cc4c35ff4b6d2aafbae19c249b7d596015c6a')]), + ('patches', [ + 'jupyterlmod-urlfile.patch', + 'jupyterlmod-packagejson.patch', + ]), + ])), + ('nbresuse', '0.3.6', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '5ba19dd0b08ff19470aeb34cda2f07276a3fb1cd750bc53f3a3e06322664e98e')]), + ])), + ('colorama', '0.4.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d')]), + ])), + ('nbdime', '2.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '4e3efdcfda31c3074cb565cd8e76e2e5421b1c4560c3a00c56f8679dd15590e5')]), + ])), + ('smmap2', '2.0.5', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '29a9ffa0497e7f2be94ca0ed1ca1aa3cd4cf25a1f6b4f5f87f74b46ed91d609a')]), + ('modulename', 'smmap'), + ])), + ('gitdb2', '2.0.6', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1b6df1433567a51a4a9c1a5a0de977aa351a405cc56d7d35f3388bad1f630350')]), + ('modulename', 'gitdb'), + ])), + ('GitPython', '3.0.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3237caca1139d0a7aa072f6735f5fd2520de52195e0fa1d8b83a9b212a2498b2')]), + ('modulename', 'git'), + ])), + ('jupyterlab_git', '0.23.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3c709c33df0b838e50f76fa2e7e0302bd3c32ec24e161ee0e8f436a3844e8b16')]), + ])), + ('sidecar', '0.4.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3e79de269ddd2c0eff1cb26025cb9f434cf9914b777cf03eeab8347f6de7160e')]), + ])), + ('pycodestyle', '2.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e')]), + ])), + ('autopep8', '1.4.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '4d8eec30cc81bc5617dbf1218201d770dc35629363547f17577c61683ccfb3ee')]), + ])), + ('yapf', '0.28.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '6f94b6a176a7c114cfa6bad86d40f259bbe0f10cf2fa7f2f4b3596fc5802a41b')]), + ])), + ('isort', '4.3.21', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1')]), + ])), + ('toml', '0.10.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c')]), + ])), + ('pathspec', '0.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'e285ccc8b0785beadd4c18e5708b12bb8fcf529a1e61215b3feff1d1e559ea5c')]), + ])), + ('typed_ast', '1.4.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34')]), + ])), + ('regex', '2019.11.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '720e34a539a76a1fedcebe4397290604cc2bdf6f81eca44adb9fb2ea071c0c69')]), + ])), + ('black', '19.3b0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c')]), + ])), + ('jupyterlab_code_formatter', '1.3.8', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '7c415caff528e55027e82c96b60dcab0537aa5cda168997f03a4964c51e2b7b5')]), + ])), + ############### + # extras + ('mccabe', '0.6.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f')]), + ])), + ('pyflakes', '2.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8')]), + ])), + ('flake8', '3.8.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f04b9fcbac03b0a3e58c0ab3a0ecc462e023a9faf046d57794184028123aa208')]), + ])), + ('pydocstyle', '5.0.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f4f5d210610c2d153fae39093d44224c17429e2ad7da12a8b419aba5c2f614b5')]), + ])), + ('rope', '0.16.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd2830142c2e046f5fc26a022fe680675b6f48f81c7fc1f03a950706e746e9dfe')]), + ])), + # base for python language server + ('parso', '0.7.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '908e9fae2144a076d72ae4e25539143d40b8e3eafbaeae03c1bfe226f4cdf12c')]), + ])), + ('jedi', '0.17.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '86ed7d9b750603e4ba582ea8edc678657fb4007894a12bcf6f4bb97892f31d20')]), + ])), + ('python-jsonrpc-server', '0.4.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '62c543e541f101ec5b57dc654efc212d2c2e3ea47ff6f54b2e7dcb36ecf20595')]), + ('modulename', 'pyls_jsonrpc'), + ])), + ('pluggy', '0.13.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0')]), + ])), + # test + ('versioneer', '0.18', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'ead1f78168150011189521b479d3a0dd2f55c94f5b07747b484fd693c3fbf335')]), + ])), + ('lazy-object-proxy', '1.4.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0')]), + ])), + ('wrapt', '1.11.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1')]), + ])), + ('astroid', '2.3.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a')]), + ])), + ('wrapt', '1.11.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1')]), + ])), + ('lazy-object-proxy', '1.4.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0')]), + ])), + ('typed_ast', '1.4.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34')]), + ])), + ('six', '1.12.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73')]), + ])), + ('pylint', '2.4.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '3db5468ad013380e987410a8d6956226963aed94ecb5f9d3a28acca6d9ac36cd')]), + ])), + ('pytest', '5.4.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970')]), + ])), + ('mock', '4.0.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'dd33eb70232b6118298d516bbcecd26704689c386594f0f3c4f13867b2c56f72')]), + ])), + ('pytest-cov', '2.8.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b')]), + ])), + ('pytest-xprocess', '0.13.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '779aeca517cd9c996d1544bdc510cb3cff40c48136d94bbce6148e27f30a93ff')]), + ])), + ('coverage', '5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f90bfc4ad18450c80b024036eaf91e4a246ae287701aaa88eaebebf150868052')]), + ])), + # python language server + ('python-language-server', '0.36.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '9984c84a67ee2c5102c8e703215f407fcfa5e62b0ae86c9572d0ada8c4b417b0')]), + ('modulename', 'pyls'), + ])), + ('jupyter-lsp', '0.9.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '73b5cb47fbe672bee6c02ddc4f2fbe728dc3bff589b5741835ebb80a862163af')]), + ])), + + #################### + # Jupyter Hub + # ('SQLAlchemy', '1.3.10', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '0f0768b5db594517e1f5e1572c73d14cf295140756431270d89496dc13d5e46c')]), + # ])), # part of Python module in version 1.3.1 + # ('python-oauth2', '1.1.1', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', 'd7a8544927ac18215ba5317edd8f640a5f1f0593921bcf3ce862178312c8c9a4')]), + # ('modulename', 'oauth2'), + # ])), # part of Python module + ('pamela', '1.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '65c9389bef7d1bb0b168813b6be21964df32016923aac7515bdf05366acbab6c')]), + ])), + # ('alembic', '1.2.1', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '9f907d7e8b286a1cfb22db9084f9ce4fde7ad7956bb496dc7c952e10ac90e36a')]), + # ])), # part of Python module in version 1.0.8 + ('certipy', '0.1.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '695704b7716b033375c9a1324d0d30f27110a28895c40151a90ec07ff1032859')]), + ])), + ('oauthlib', '3.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889')]), + ])), + ('ruamel.yaml', '0.16.5', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '412a6f5cfdc0525dee6a27c08f5415c7fd832a7afcb7a0ed7319628aed23d408')]), + ])), + ('ruamel.yaml.clib', '0.1.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'cee86ecc893a6a8ecaa7c6a9c2d06f75f614176210d78a5f155f8e78d6989509')]), + ('modulename', 'ruamel.yaml'), + ])), + ('python-json-logger', '0.1.11', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'b7a31162f2a01965a5efb94453ce69230ed208468b0bbc7fdfc56e6d8df2e281')]), + ('modulename', 'pythonjsonlogger'), + ])), + ('Jinja2', '2.11.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '93187ffbc7808079673ef52771baa950426fd664d3aad1d0fa3e95644360e250')]), + ])), + ('jupyter_telemetry', '0.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '445c613ae3df70d255fe3de202f936bba8b77b4055c43207edf22468ac875314')]), + ])), + ('jupyterhub', '1.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '852a70225a03abd631b36a207f3ffdf69326a0db4cef539825fde39ec1b713d7')]), + ('patches', ['jupyterhub-1.1.0_logoutcookie-2.0.patch']), + # copy 401.html -> <jupyter-install-dir>/share/jupyter/lab/static/ + ])), + ('appmode', '0.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'deac99adaa95e28fa8a56c072be653603cffa49dc06469701ac9c014b690e7c4')]), + ])), + ('HeapDict', '1.0.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '8495f57b3e03d8e46d5f1b2cc62ca881aca392fd5cc048dc0aa2e1a6d23ecdb6')]), + ])), + ('zict', '1.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'e34dd25ea97def518fb4c77f2c27078f3a7d6c965b0a3ac8fe5bdb0a8011a310')]), + ])), + ('tblib', '1.5.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1735ff8fd6217446384b5afabead3b142cf1a52d242cfe6cab4240029d6d131a')]), + ])), + ('sortedcontainers', '2.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '974e9a32f56b17c1bac2aebd9dcf197f3eb9cd30553c5852a3187ad162e1a03a')]), + ])), + ('msgpack', '0.6.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'ea3c2f859346fcd55fc46e96885301d9c2f7a36d453f5d8f2967840efa1e1830')]), + ])), + ('dask', '2.30.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a1669022e25de99b227c3d83da4801f032415962dac431099bf0534648e41a54')]), + ])), + ('cloudpickle', '1.4.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '0b6258a20a143603d53b037a20983016d4e978f554ec4f36b3d0895b947099ae')]), + ])), + ('distributed', '2.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '30b0ca195ace1e39bdd278bf1ad257f7674b3e2b8e7a2a37ce7e2ade4aecccf3')]), + ])), + ('dask-jobqueue', '0.7.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd32ddf3e3c7db29ace102037fa5f61c8db2d945176454dc316a6ffdb8bbfe88b')]), + ])), + ('dask_labextension', '3.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c613f5c76b8fce4fae167eeab3377e0706e5045a27da1200b3b173025a94d94b')]), + ])), + ('Automat', '0.8.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '269a09dfb063a3b078983f4976d83f0a0d3e6e7aaf8e27d8df1095e09dc4a484')]), + ])), + ('PyHamcrest', '1.9.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '8ffaa0a53da57e89de14ced7185ac746227a8894dbd5a3c718bf05ddbd1d56cd')]), + ('modulename', 'hamcrest'), + ])), + ('pyasn1', '0.4.8', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba')]), + ])), + ('pyasn1-modules', '0.2.8', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e')]), + ])), + ('service_identity', '18.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '0858a54aabc5b459d1aafa8a518ed2081a285087f349fe3e55197989232e2e2d')]), + ])), + ('Twisted', '19.7.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd5db93026568f60cacdc0615fcd21d46f694a6bfad0ef3ff53cde2b4bb85a39d')]), + ('source_tmpl', '%(name)s-%(version)s.tar.bz2'), + ])), + ('autobahn', '19.10.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '734385b00547448b3f30a752cbfd2900d15924d77dc4a1699b8bce1ea8899f39')]), + ])), + ('constantly', '15.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35')]), + ])), + ('hyperlink', '19.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '4288e34705da077fada1111a24a0aa08bb1e76699c9ce49876af722441845654')]), + ])), + ('incremental', '17.5.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3')]), + ])), + ('txaio', '18.8.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '67e360ac73b12c52058219bb5f8b3ed4105d2636707a36a7cdafb56fe06db7fe')]), + ])), + ('zope.interface', '4.7.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'fd1101bd3fcb4f4cf3485bb20d6cb0b56909b94d3bd2a53a6cb9d381c3da3365')]), + ])), + # ('backcall', '0.1.0', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4')]), + # ])), # part of Python module (sanity check fails if package used from Python dependency) + ('wslink', '0.1.13', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '6983114e978717a2681815b1ef4b8a0fa2c80c89c6ed09b9554a36c5869cf935')]), + ])), + ('jupyterlab_pygments', '0.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '31deda75bd11b014190764c79f6199aa04ef2d4cf35c1c94270fc2e19c23a5c5')]), + ])), + # ('jupyterlab-nvdashboard', '0.2.1', dict(list(local_common_opts.items()) + [ + # # throughs too many errors if nvtools or driver are not installed + # ('checksums', [('sha256', '2f69a1c3b35250cda252fe6bc684c0e99c3eac87e012843d7fc52f204ab3d0c6')]), + # ])), + ('ipyvue', '1.4.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '5b59cf92a1eb7fbef4f2d02be49ac562a721a6cf34f991ac963222cf4c8885a1')]), + ])), + ('ipyvuetify', '1.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '593f5d6761e304cbb78bca967030485d8835e8d310ef7d83ac1b0e6a13e4911c')]), + ])), + ('voila', '0.2.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '332725b88fb026ad421db90fdad53d7e8de2ffd03a8584a55d9940465932ede8')]), + ])), + ('voila-material', '0.4.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '0827a27f0f23ca87bd8f565c4c227c754516d2a120ffce0f7ab1ee12fdec959f')]), + ('modulename', 'voila'), # fake module name to trick the sanity check + ])), + ('voila-gridstack', '0.0.11', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '851dafe1912199ba36ad5544fb0f624bcb1421d2d31c0f1d03fcdcbf6d626dee')]), + ('modulename', 'voila'), + ])), + ('voila-vuetify', '0.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '522f4ec91eb3912a21215b6b04ad58070d1675809d7d4289ca8e42b577fde100')]), + ('modulename', 'voila'), + ])), + ('pydicom', '1.4.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '9488495a9f3e202d1219f7cb165aee0de31efd512d938c0226d34147ce860391')]), + ])), + ('dicom_upload', '0.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'd03f309bbae2094d3db75ffaa9753cca5982d2096ec55720a1f54343cc4a6877')]), + ])), + ('jsfileupload', '0.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '245cd74a3c2ed4356df9a33d0072d8ab295b60b6fdfd69c6795396d455fc8a77')]), + ])), + ('pvlink', '0.3.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a2d5f2c204e0e779a5b865742019b4646b8592d76de87cac724dc84f64eaf80f')]), + ])), + + ('textwrap3', '0.9.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'textwrap3-0.9.2.zip'), + ('checksums', [('sha256', '5008eeebdb236f6303dcd68f18b856d355f6197511d952ba74bc75e40e0c3414')]), + ('use_pip', True), + ])), + ('ansiwrap', '0.8.4', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'ansiwrap-0.8.4.zip'), + ('checksums', [('sha256', 'ca0c740734cde59bf919f8ff2c386f74f9a369818cdc60efe94893d01ea8d9b7')]), + ])), + ('backports.weakref', '1.0.post1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'bc4170a29915f8b22c9e7c4939701859650f2eb84184aee80da329ac0b9825c2')]), + ])), + ('backports.tempfile', '1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1c648c452e8770d759bdc5a5e2431209be70d25484e1be24876cf2168722c762')]), + ])), + ('tqdm', '4.41.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '166a82cdea964ae45528e0cc89436255ff2be73dc848bdf239f13c501cae5dc7')]), + ])), + ('tenacity', '6.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '72f397c2bb1887e048726603f3f629ea16f88cb3e61e4ed3c57e98582b8e3571')]), + ])), + ('papermill', '2.2.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1c452b1c5a9ab52b94c99d8b7705ae7173f6aa88a3d28a5d30cffba48a46f5b6')]), + ])), + ('pyviz_comms', '0.7.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '712df4cca33dda351de754742b24361eee8e4b7c1cfb0e24f50dcb802fa25624')]), + ])), + ('Markdown', '3.2.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1fafe3f1ecabfb514a5285fca634a53c1b32a81cb0feb154264d55bf2ff22c17')]), + ('modulename', 'markdown'), + ])), + ('panel', '0.9.5', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '53340615f30f67f3182793695ebe52bf25e7bbb0751aba6f29763244350d0f42')]), + ])), + ('holoviews', '1.13.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'cf2dd426cdc08bf2ca669268ca0432634574429e5b143314ee06ad88c5382802')]), + ])), + + # PythonPackages for Tutorials + ('xarray', '0.16.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '38e8439d6c91bcd5b7c0fca349daf8e0643ac68850c987262d53526e9d7d01e4')]), + ])), + ('patsy', '0.5.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f115cec4201e1465cd58b9866b0b0e7b941caafec129869057405bfe5b5e3991')]), + ])), + ('statsmodels', '0.10.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '9cd2194c6642a8754e85f9a6e6912cdf996bebf6ff715d3cc67f65dadfd37cc9')]), + ])), + ('cftime', '1.0.4.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1ac64f8f9066ea756ea27d67cedaf064e7c866275218fa7c84684066a5890f70')]), + ])), + ('vega_datasets', '0.8.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'db8883dab72b6f414e1fafdbf1e8db7543bba6ed77912a4e0c197d74fcfa1c20')]), + ])), + ('Theano', '1.0.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '35c9bbef56b61ffa299265a42a4e8f8cb5a07b2997dabaef0f8830b397086913')]), + ('modulename', 'theano'), + ])), + ('altair', '3.3.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '9f7c521239ac5a207c3cffc29c5bdde0854fff0dec0b5f91f086ba8e5f1de8a9')]), + ])), + ('cssselect', '1.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc')]), + ])), + ('smopy', '0.0.7', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '578b5bc2502176d210f176ab94e77974f43b32c95cd0768fb817ea2499199592')]), + ])), + ('joblib', '0.14.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '0630eea4f5664c463f23fbf5dcfc54a2bc6168902719fa8e19daf033022786c8')]), + ])), + ('scikit-learn', '0.22', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '314abf60c073c48a1e95feaae9f3ca47a2139bd77cebb5b877c23a45c9e03012')]), + ('modulename', 'sklearn'), + ])), + ('memory_profiler', '0.55.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '5fa47b274c929dd2cbcd9190afb62fec110701251d2ac2d301caaf545c81afc1')]), + ])), + ('h5py', '2.10.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '84412798925dc870ffd7107f045d7659e60f5d46d1c70c700375248bf6bf512d')]), + ])), + ('line_profiler', '3.1.0', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '7218ad6bd81f8649b211974bf108933910f016d66b49651effe7bbf63667d141')]), + # ('use_pip', False), # no pip ! uses PEP 517 + ('source_tmpl', 'line_profiler-3.1.0-cp38-cp38-manylinux1_x86_64.whl'), + ('checksums', [('sha256', 'a66e089e6d98ab8a70b5f89c0367c6780abad0f0b1d624dbe5edd8f0083986c7')]), + ('unpack_sources', False), # whl package instead of tar.gz because building with skbuild->cmake fails + ])), + ('llvmlite', '0.35.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '80e51d5aa02ad72da9870e89d21f9b152b0220ca551b4596a6c0614bcde336fc')]), + ])), + ('numba', '0.52.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '44661c5bd85e3d3619be0a40eedee34e397e9ccb3d4c458b70e10bf95d1ce933')]), + ])), + ('arviz', '0.10.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'dc1f08ce02459989dd4f41fa6012e736cf2ba00ee44b29bebe0a451c58a68e42')]), + ])), + ('pymc3', '3.8', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1bb2915e4a29877c681ead13932b0b7d276f7f496e9c3f09ba96b977c99caf00')]), + ])), + ('numexpr', '2.7.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'b0d239d9827e1bcee08344fd05835823bc60aff97232e35a928214d03ff802b1')]), + ])), + ('ipythonblocks', '1.9.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'ba923cb7a003bddee755b5a7ac9e046ffc093a04b0bdede8a0a51ef900aed0ba')]), + ])), + ('pydub', '0.23.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'c362fa02da1eebd1d08bd47aa9b0102582dff7ca2269dbe9e043d228a0c1ea93')]), + ])), + ('multipledispatch', '0.6.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a7ab1451fd0bf9b92cab3edbd7b205622fb767aeefb4fb536c2e3de9e0a38bea')]), + ])), + ('partd', '1.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '6e258bf0810701407ad1410d63d1a15cfd7b773fd9efe555dac6bb82cc8832b0')]), + ])), + ('locket', '0.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1fee63c1153db602b50154684f5725564e63a0f6d09366a1cb13dffcec179fb4')]), + ])), + ('fsspec', '0.6.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'ffd7cd5ac32f36698097c3d78c2c433d4c12f7e4bce3a3a4036fd3491188046d')]), + ])), + ('datashape', '0.5.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '2356ea690c3cf003c1468a243a9063144235de45b080b3652de4f3d44e57d783')]), + ])), + ('datashader', '0.11.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'b1f80415f72f92ccb660aaea7b2881ddd35d07254f7c44101709d42e819d6be6')]), + ])), + ('selenium', '3.141.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d')]), + ])), + ('graphviz', '0.13.2', dict(list(local_common_opts.items()) + [ + ('source_tmpl', 'graphviz-0.13.2.zip'), + ('checksums', [('sha256', '60acbeee346e8c14555821eab57dbf68a169e6c10bce40e83c1bf44f63a62a01')]), + ])), + ('vincent', '0.4.4', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '5765bcd360140d2304e52728ad1d4382f3f919ea259a13932828680f2d84fcd3')]), + ])), + ('tailer', '0.4.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '78d60f23a1b8a2d32f400b3c8c06b01142ac7841b75d8a1efcb33515877ba531')]), + ])), + # Dash + ('Flask', '1.1.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '13f9f196f330c7c2c5d7a5cf91af894110ca0215ac051b5844701f2bfd934d52')]), + ])), + ('Flask-Compress', '1.4.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '468693f4ddd11ac6a41bca4eb5f94b071b763256d54136f77957cfee635badb3')]), + ])), + ('Werkzeug', '1.0.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c')]), + ])), + ('hiredis', '1.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '996021ef33e0f50b97ff2d6b5f422a0fe5577de21a8873b58a779a5ddd1c3132')]), + ])), + ('redis', '3.5.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2')]), + ])), + ('Flask-Caching', '1.9.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a0356ad868b1d8ec2d0e675a6fe891c41303128f8904d5d79e180d8b3f952aff')]), + ])), + ('dash', '1.16.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'fdfe2a16c4041c7769e06e4e0eaaeb65cfd8351797ed4b37efe001384637b6c7')]), + ])), + ('dash_renderer', '1.8.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '736f8e0dcce244699457b54a2ee262a04baf389db1a8f54e98c949bb3e7e487f')]), + ])), + ('dash_core_components', '1.12.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '803b54d01ca48b90f3fc1652f7be9f818ed2882da8975a51b99fc2d77dd2727e')]), + ])), + ('dash_html_components', '1.1.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '2c662e640528c890aaa0fa23d48e51c4d13ce69a97841d856ddcaaf2c6a47be3')]), + ])), + ('dash_table', '4.10.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '1aa02180faef13434364286b60404d26164d1ce2779c765c9c52e6935991a4e9')]), + ])), + ('dash-bootstrap-components', '0.10.5', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '40500e692f59648dbc024b9e921a1e1410ee0bc97cfa963990e54e42523679b4')]), + ])), + ('dash_daq', '0.5.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a1d85b6799f7b885652fbc44aebdb58c41254616a8d350b943beeb42ade4256a')]), + ])), + ('dash_player', '0.0.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '46114910b497f35f1aa496ed8b9ff1457d07c96171227961b671ba4164c537a0')]), + ])), + ('dash_canvas', '0.1.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '72fcfb37e1c0f68c08f6fa6cf0b5be67ecc66fcfb5253231ffc450957b640b31')]), + ])), + ('dash_bio', '0.4.8', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'a6f480b060488ab9be26129562a7bcb491ef40ae0ffae46f499fb7d5997de06c')]), + ])), + ('dash_cytoscape', '0.2.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '0669c79c197e4b150a5db7a278d1c7acebc947f3f5cbad5274835ebb44f712cd')]), + ])), + ('ansi2html', '1.5.2', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '96ae85ae7b26b7da674d87de2870ba4d1964bca733ae4614587080b6358c3ba9')]), + ])), + ('jupyter-dash', '0.3.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'e41d68aa85a7dd53480cc33feae04f4cfd7ac2ace8089c1e1630a2342e8bd8aa')]), + ])), + # more + ('fastcore', '1.3.6', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '550c201f6a0f7001994898260588e3df310968165c43ecc4fa3062dd6eee5956')]), + ])), + ('fastscript', '1.0.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '67d2315a508ffd0499af590fffaa63d276ce6eaff73ffbd60eb3315ba38d08fa')]), + ])), + # ('nbdev', '1.1.5', dict(list(local_common_opts.items()) + [ + # # nbdev < 2 needs nbconvert < 6, will change with nbdev >= 2 + # ('checksums', [('sha256', '0ce349625514e2865bbc023db597d791c45b572a7bbc8a49b320a327b9e7b721')]), + # ])), + ('PyJWT', '1.7.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96')]), + ('modulename', 'jwt'), + ])), + ('pyunicore', '0.9.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '09cd91562feb7677c8bd9cbbe02e1b0d27d1b5817e12ef5bf4701619cac77d9b')]), + ])), + + # misc + # ('rpy2', '3.2.4', dict(list(local_common_opts.items()) + [ + # ('checksums', [('sha256', '3daf1a4b28c4e354ef989093f03b066908bf6e5082a6f4af72cc3fd928a28dc6')]), + # ])), +] + +local_jupyter_config_path = 'etc/jupyter' +local_jupyter_path = 'share/jupyter' +local_jupyterlab_dir = 'share/jupyter/lab' + +modextrapaths = { + 'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'], + # search path to find installable data files, such as kernelspecs and notebook extensions + 'JUPYTER_PATH': [local_jupyter_path], + 'JUPYTERLAB_DIR': [local_jupyterlab_dir], + # do NOT set JUPYTER_CONFIG_DIR: if not set, if will be ${HOME}/.jupyter, which is just right + 'JUPYTER_CONFIG_PATH': [local_jupyter_config_path] # config dir at install time. + # ATTENTION: not config dir at runtime, because this is fixed to {sys.prefix}/etc/jupyter/ +} + +modextravars = { + 'JUPYTER': '%(installdir)s/bin/jupyter', + 'MKL_THREADING_LAYER': 'GNU', # https://github.com/Theano/Theano/issues/6568 +} + +# Ensure that the user-specific $HOME/.local/share/jupyter is fist entry in JUPYTHER_PATH and JUPYTER_DATA_DIR +# https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html#envvar-JUPYTER_PATH +modluafooter = """ +prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter")) +prepend_path("JUPYTER_DATA_DIR", pathJoin(os.getenv("HOME"),".local/share/jupyter")) +""" + +postinstallcmds = [ + # ensure we install in the correct directory !!! + 'python3 -m venv %(installdir)s --system-site-packages', + + 'echo "#!/bin/bash" > %(builddir)s/env.sh', + 'echo "source %(installdir)s/bin/activate" >> %(builddir)s/env.sh', + ( + 'echo "export PYTHONPATH=' + '%(installdir)s/lib/python3.8/site-packages:${EBROOTPYTHON}/lib/python3.8/site-packages:${PYTHONPATH}"' + ' >> %(builddir)s/env.sh' + ), + # Jupyter Paths - http://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html + 'echo "export JUPYTER=%(installdir)s/bin/jupyter" >> %(builddir)s/env.sh', + 'echo "export JUPYTER_PATH=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path, + 'echo "export JUPYTERLAB_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyterlab_dir, + # Config dir at install time. ATTENTION: not config dir at runtime. This is picked up by JUPYTER_CONFIG_PATH + 'echo "export JUPYTER_CONFIG_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_config_path, + # jupyter will use $JUPYTER_CONFIG_DIR with "--user" + 'echo "export JUPYTER_DATA_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path, + 'echo "export PATH=%(installdir)s/bin:${PATH}" >> %(builddir)s/env.sh', + + # NodeJS packages + 'source %(builddir)s/env.sh && npm install -g phantomjs-prebuilt@2.1.16', # req. export_png/export_svg of bokeh + + # Jupyter Notebook Extensions + 'source %(builddir)s/env.sh && jupyter contrib nbextension install --user', + 'source %(builddir)s/env.sh && jupyter nbextensions_configurator enable --user', + 'source %(builddir)s/env.sh && jupyter nbextension enable codefolding/main --user', + + ('source %(builddir)s/env.sh && ' + ' jupyter nbextension install widgetsnbextension --py --nbextensions=${JUPYTER_PATH}/nbextensions'), + 'source %(builddir)s/env.sh && jupyter nbextension enable widgetsnbextension --py --user', + + 'source %(builddir)s/env.sh && jupyter nbextension enable ipyvuetify --py --user', + + 'source %(builddir)s/env.sh && jupyter nbextension install rise --py --nbextensions=${JUPYTER_PATH}/nbextensions', + 'source %(builddir)s/env.sh && jupyter nbextension enable rise --py --user', + + 'source %(builddir)s/env.sh && jupyter nbextension enable appmode --py --user', + 'source %(builddir)s/env.sh && jupyter serverextension enable appmode --py', + + # Jupyter Notebook Extensions + 'source %(builddir)s/env.sh && jupyter labextension install @jupyter-widgets/jupyterlab-manager@2.0.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install @jupyter-widgets/jupyterlab-sidecar@0.5.0 --no-build', + + # 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/server-proxy@2.1.1 --no-build', + ('source %(builddir)s/env.sh && ' + ' cd %(builddir)s/jupyterserverproxy/jupyter-server-proxy-1.5.2/jupyterlab-server-proxy/ && ' + ' npm install && ' # install npm package dependencies incurrent directory + ' npm run build && ' # optional build step if using TypeScript, babel, etc. + ' jupyter labextension install --no-build'), # install the current directory as an extension' + # 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/github@2.0.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/latex@2.0.1 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/git@0.23.1 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install @jupyterlab/toc@4.0.0 --no-build', + + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-datawidgets@6.3.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-plotly@4.8.1 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-gitlab@2.0.0 --no-build', + # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab_iframe@0.2.2 --no-build', + + # this might interfer with Xpra-icon: https://github.com/cmd-ntrf/jupyter-lmod/issues/30 + ('source %(builddir)s/env.sh && ' + ' cd %(builddir)s/jupyterlmod/jupyter-lmod-2.0.2/jupyterlab/ && ' + ' npm install && ' # install npm package dependencies incurrent directory + ' npm run build && ' # optional build step if using TypeScript, babel, etc. + ' jupyter labextension install --no-build'), # install the current directory as an extension + # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-nvdashboard@0.3.1 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-dash@0.3.0 --no-build', + + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-topbar-extension@0.5.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-system-monitor@0.6.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-theme-toggle@0.5.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-control@1.1.1 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-favorites@2.0.0 --no-build', + # store default in ../share/jupyter/lab/schemas/jupyterlab-favorites/favorites.json + # 'source %(builddir)s/env.sh && jupyter labextension install jupyterlab-tour@2.1.1 --no-build', + # tour-state on/off is saved in workspace-file in ~/.jupyter/lab/workspaces/ + + 'source %(builddir)s/env.sh && jupyter labextension install jupyter-matplotlib@0.7.4 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyter-leaflet@0.13.2 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyter-threejs@2.2.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jupyter-vuetify@1.5.1 --no-build', + + 'source %(builddir)s/env.sh && jupyter labextension install nbdime-jupyterlab@2.0.1 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install dask-labextension@3.0.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install ipyvolume@0.6.0-alpha.5 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install plotlywidget@4.12.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install bqplot@0.5.17 --no-build', + + 'source %(builddir)s/env.sh && jupyter labextension install dicom-upload@0.2.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install jsfileupload@0.2.0 --no-build', + + 'source %(builddir)s/env.sh && jupyter labextension install @pyviz/jupyterlab_pyviz@1.0.4 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install @bokeh/jupyter_bokeh@2.0.2 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install @jupyter-voila/jupyterlab-preview@1.1.0 --no-build', + + 'source %(builddir)s/env.sh && jupyter labextension install @parente/jupyterlab-quickopen@0.5.0 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install @ryantam626/jupyterlab_code_formatter@1.3.8 --no-build', + ('source %(builddir)s/env.sh && ' + ' jupyter labextension install @krassowski/jupyterlab_go_to_definition@1.0.0 --no-build'), + 'source %(builddir)s/env.sh && jupyter labextension install @krassowski/jupyterlab-lsp@2.1.2 --no-build', + + 'source %(builddir)s/env.sh && jupyter labextension install pvlink@0.3.1 --no-build', + 'source %(builddir)s/env.sh && jupyter labextension install itkwidgets@0.32.0 --no-build', + + # build JupyterLab app directory for all previous installed extensions in one go + 'source %(builddir)s/env.sh && jupyter lab build --dev-build=False', # --minimize=False + + # jupyterlab server extensions + 'source %(builddir)s/env.sh && jupyter serverextension enable jupyter_server_proxy --py', + 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_code_formatter --py', + # 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_sql --py', + # 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_iframe --py', + 'source %(builddir)s/env.sh && jupyter serverextension enable jupyterlab_git --py', + 'source %(builddir)s/env.sh && jupyter serverextension enable jupyter_lsp --py', + 'source %(builddir)s/env.sh && jupyter serverextension enable dask_labextension --py', + + # configure jupyterlab extensions + + # Send2Trash + # disable + ( + '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n' + 'c.FileContentsManager.delete_to_trash = False\n' + 'EOF' + ), + + # GitLab-extension + # for security reasons access-token must be set in the server extension: + ( + '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n' + '# no username+password needed, if repo is public or we have the token for a specific URL\n' + '# c.GitLabConfig.access_token = "<API-TOKEN>" # give api-access of user "jupyter.jsc@fz-juelich.de"\n' + 'c.GitLabConfig.allow_client_side_access_token = False\n' + 'c.GitLabConfig.url = "https://gitlab.version.fz-juelich.de"\n' + 'c.GitLabConfig.validate_cert = False\n' + 'EOF' + ), + + # GitHub-extension + # for security reasons access-token must be set in the server extension: + ( + '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n' + '# no username+password needed, if repo is public or we have the token for a specific URL\n' + '# c.GitHubConfig.access_token = "<API-TOKEN>"\n' + 'c.GitHubConfig.allow_client_side_access_token = False\n' + 'c.GitHubConfig.url = "https://github.com"\n' + 'c.GitHubConfig.validate_cert = False\n' + 'EOF' + ), + + # iframe-extension + ( + '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n' + '# c.JupyterLabIFrame.iframes = [\'list\', \'of\', \'sites\']\n' + 'c.JupyterLabIFrame.welcome = "http://www.fz-juelich.de/jsc"\n' + 'EOF' + ), + + # define .ipynb_checkpoints permissions + ( + '{ cat >> %(installdir)s/etc/jupyter/jupyter_notebook_config.py; } << \'EOF\'\n' + 'c.FileCheckpoints.checkpoint_permissions = 0o664\n' + 'c.FileCheckpoints.restore_permissions = 0o644\n' + 'c.FileCheckpoints.checkpoint_dir_umask = 0o002\n' + 'EOF' + ), + + # modify the installation files, which would be overwritten if done before (must be last commands to run) + ( + 'cp %(builddir)s/jupyterlabgitlab/jupyterlab-gitlab-2.0.0/schema/drive.json' + ' %(installdir)s/share/jupyter/lab/schemas/jupyterlab-gitlab/drive.json' + ), + + # Add the overrides file + ( + '{ cat > %(builddir)s/file_jupyter-overrides_jsc.patch; } << \'EOF\'\n' + 'diff -Naur share.orig/jupyter/lab/settings/overrides.json share/jupyter/lab/settings/overrides.json\n' + '--- share.orig/jupyter/lab/settings/overrides.json 1970-01-01 01:00:00.000000000 +0100\n' + '+++ share/jupyter/lab/settings/overrides.json 2019-11-26 13:40:46.560731000 +0100\n' + '@@ -0,0 +1,8 @@\n' + '+{\n' + '+ "jupyterlab-gitlab:drive": {\n' + '+ "baseUrl": "https://gitlab.version.fz-juelich.de"\n' + '+ },\n' + '+ "@parente/jupyterlab-quickopen:plugin": {\n' + '+ "relativeSearch": true\n' + '+ }\n' + '+}\n' + 'EOF' + ), + 'patch -p0 -d %(installdir)s < %(builddir)s/file_jupyter-overrides_jsc.patch', + + # add webpage, which leads back to https://jupyter-jsc.fz-juelich.de + 'cp %%(builddir)s/jupyterlab/jupyterlab-%s/401.html %%(installdir)s/share/jupyter/lab/static/' % local_jlab_version, + + # ################################################### + # IMPORTANT: + # start JupyterLab once (for 60 seconds) to allow some cleanup at first start + # ################################################### + ( + 'source %(builddir)s/env.sh && ' + '{(jupyter lab --no-browser) & } && JLAB_PID=$! && ' + 'sleep 60 && ' + 'jupyter notebook list --json | grep $JLAB_PID | ' + 'awk \'{for(i=1;i<=NF;i++)if($i=="\\"port\\":")print $(i+1)}\' | sed \'s/,*$//g\' | ' + 'xargs -i jupyter notebook stop {}' + ), + + # Ensure Jupyter does not want to build anything on startup + # The build_config.json file is used to track the local directories that have been installed + # using jupyter labextension install <directory>, as well as core extensions that have been explicitly uninstalled. + # 'if [ -e %(installdir)s/share/jupyter/lab/settings/build_config.json ]; then exit 1; fi ', + ( + '{ cat > %(installdir)s/share/jupyter/lab/settings/build_config.json; } << \'EOF\'\n' + '{\n' + ' "local_extensions": {}\n' + '}\n' + 'EOF' + ), + + # Ensure we remove the virtuel environment to avoid wrong search path for python packages + 'rm %(installdir)s/pyvenv.cfg', + 'rm %(installdir)s/bin/python', + 'rm %(installdir)s/bin/python3', + 'rm %(installdir)s/bin/activate', + 'rm %(installdir)s/bin/activate*', + 'rm %(installdir)s/bin/easy_install*', + 'rm %(installdir)s/bin/pip*', + + # Compile Python files to byte-code to speedup execution + # ERROR: returns with exit code 1, because some files cannot be compiled for different reasons + # ################################################### + # Disable possible, because sanity check will # + # force the compile of all python packages anyway# + # ################################################### + # 'source %(builddir)s/env.sh && python -m compileall %(installdir)s', + + # ################################################### + # IMPORTANT: must be done manual after eb-install: # + # ################################################### + # 'chmod -R g-w %(installdir)s ', # software-group must not modify the installation on accident + # 'chmod -R ugo-w %(installdir)s/share ', # Noone should add files/configs to the global share after install + # 'chmod -R ug-w ...../2020/software/Python/3.8.5-GCCcore-9.3.0/share ', # Python module, too +] + +# specify that Bundle easyblock should run a full sanity check, rather than just trying to load the module +# full_sanity_check = True # would result in sanity-errors about yaml,ipython_genutils,IPython,traitlets +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/Jupyter/jupyter_contrib_nbextensions-template_paths.patch b/Golden_Repo/j/Jupyter/jupyter_contrib_nbextensions-template_paths.patch new file mode 100644 index 0000000000000000000000000000000000000000..c51dfd38ddbf859c8282aa48875224addaf60f38 --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyter_contrib_nbextensions-template_paths.patch @@ -0,0 +1,121 @@ +diff -Naur jupyter_contrib_nbextensions.orig/CHANGELOG.md jupyter_contrib_nbextensions/CHANGELOG.md +--- jupyter_contrib_nbextensions.orig/CHANGELOG.md 2020-11-22 12:43:10.086824740 +0100 ++++ jupyter_contrib_nbextensions/CHANGELOG.md 2020-11-22 12:47:11.839564000 +0100 +@@ -21,6 +21,9 @@ + This is where each new PR to the project should add a summary of its changes, + which makes it much easier to fill in each release's changelog :) + ++- Replace `template_path` with `template_paths` [#1532](https://github.com/ipython-contrib/jupyter_contrib_nbextensions/pull/1532). Nbconvert 6.0 replaced `template_path` with `template_paths` (see https://nbconvert.readthedocs.io/en/latest/changelog.html#significant-changes). This change in Nbconvert 6.0 causes errors in jupyter_latex_envs and in jupyter_contrib_nbextensions (see [#1529](https://github.com/ipython-contrib/jupyter_contrib_nbextensions/issues/1529). ++- Update `install_requires` list in `setup.py` with 'nbconvert >=6.0' ++ + 0.5.1 + ----- + +diff -Naur jupyter_contrib_nbextensions.orig/setup.py jupyter_contrib_nbextensions/setup.py +--- jupyter_contrib_nbextensions.orig/setup.py 2020-11-22 12:43:10.325780000 +0100 ++++ jupyter_contrib_nbextensions/setup.py 2020-11-22 12:47:11.842264000 +0100 +@@ -67,7 +67,7 @@ + 'jupyter_highlight_selected_word >=0.1.1', + 'jupyter_latex_envs >=1.3.8', + 'jupyter_nbextensions_configurator >=0.4.0', +- 'nbconvert >=4.2', ++ 'nbconvert >=6.0', + 'notebook >=4.0', + 'pyyaml', + 'tornado', +@@ -81,7 +81,7 @@ + 'pip', + 'requests', + ], +- 'test:python_version == "2.7"': [ ++ 'test:python_version == "3.8"': [ + 'mock', + ], + }, +diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py +--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py 2020-11-22 12:43:10.330209000 +0100 ++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_html_cfg.py 2020-11-22 12:47:11.799365000 +0100 +@@ -7,7 +7,7 @@ + + c = get_config() # noqa + c.NbConvertApp.export_format = "html" +-c.Exporter.template_path = [ ++c.Exporter.template_paths = [ + '.', + jupyter_contrib_nbextensions.nbconvert_support.templates_directory(), + os.path.join(jcnbe_dir, 'nbextensions', 'highlighter') +diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py +--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py 2020-11-22 12:43:10.331124000 +0100 ++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/config_scripts/highlight_latex_cfg.py 2020-11-22 12:47:11.801863000 +0100 +@@ -7,7 +7,7 @@ + + c = get_config() # noqa + c.NbConvertApp.export_format = "latex" +-c.Exporter.template_path = [ ++c.Exporter.template_paths = [ + '.', + jupyter_contrib_nbextensions.nbconvert_support.templates_directory(), + os.path.join(jcnbe_dir, 'nbextensions', 'highlighter') +diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/install.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/install.py +--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/install.py 2020-11-22 12:43:10.332127000 +0100 ++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/install.py 2020-11-22 12:47:11.804683000 +0100 +@@ -124,7 +124,7 @@ + if logger: + logger.info('-- Configuring nbconvert template path') + # our templates directory +- _update_config_list(config, 'Exporter.template_path', [ ++ _update_config_list(config, 'Exporter.template_paths', [ + '.', + jupyter_contrib_nbextensions.nbconvert_support.templates_directory(), + ], install) +diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/migrate.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/migrate.py +--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/migrate.py 2020-11-22 12:43:10.333126000 +0100 ++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/migrate.py 2020-11-22 12:47:11.807881000 +0100 +@@ -128,7 +128,7 @@ + config = Config(cm.get(config_basename)) + if config and logger: + logger.info('- Removing old config values from {}'.format(config_path)) +- _update_config_list(config, 'Exporter.template_path', [ ++ _update_config_list(config, 'Exporter.template_paths', [ + '.', os.path.join(jupyter_data_dir(), 'templates'), + ], False) + _update_config_list(config, 'Exporter.preprocessors', [ +diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py +--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py 2020-11-22 12:43:10.337543000 +0100 ++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/exporter_inliner.py 2020-11-22 12:47:11.811491000 +0100 +@@ -39,8 +39,8 @@ + templates_directory) + contrib_templates_dir = templates_directory() + +- template_path = c.TemplateExporter.setdefault('template_path', []) +- if contrib_templates_dir not in template_path: +- template_path.append(contrib_templates_dir) ++ template_paths = c.TemplateExporter.setdefault('template_paths', []) ++ if contrib_templates_dir not in template_paths: ++ template_paths.append(contrib_templates_dir) + + return c +diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py +--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py 2020-11-22 12:45:58.854592000 +0100 ++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbconvert_support/toc2.py 2020-11-22 12:47:11.814530000 +0100 +@@ -52,7 +52,7 @@ + templates_directory) + c.merge(super(TocExporter, self).default_config) + +- c.TemplateExporter.template_path = [ ++ c.TemplateExporter.template_paths = [ + '.', + templates_directory(), + ] +diff -Naur jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md +--- jupyter_contrib_nbextensions.orig/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md 2020-11-22 12:43:10.871469000 +0100 ++++ jupyter_contrib_nbextensions/src/jupyter_contrib_nbextensions/nbextensions/runtools/readme.md 2020-11-22 12:47:11.816660000 +0100 +@@ -78,7 +78,7 @@ + ``` + + The template needs to be in a path where nbconvert can find it. This can be your local path or specified in +-`jupyter_nbconvert_config` or `jupyter_notebook_config` as `c.Exporter.template_path`, see [Jupyter docs](https://jupyter-notebook.readthedocs.io/en/latest/config.html). ++`jupyter_nbconvert_config` or `jupyter_notebook_config` as `c.Exporter.template_paths`, see [Jupyter docs](https://jupyter-notebook.readthedocs.io/en/latest/config.html). + + For HTML export a template is provided as `nbextensions.tpl` in the `jupyter_contrib_nbextensions` templates directory. Alternatively you can create your own template: + ``` diff --git a/Golden_Repo/j/Jupyter/jupyter_latex_envs-template_paths.patch b/Golden_Repo/j/Jupyter/jupyter_latex_envs-template_paths.patch new file mode 100644 index 0000000000000000000000000000000000000000..451f439ae2cb32668895a3c8b77a58896b8e8040 --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyter_latex_envs-template_paths.patch @@ -0,0 +1,48 @@ +diff -Naur jupyter_latex_envs.orig/src/latex_envs/latex_envs.py jupyter_latex_envs/src/latex_envs/latex_envs.py +--- jupyter_latex_envs.orig/src/latex_envs/latex_envs.py 2020-11-22 17:04:43.617982112 +0100 ++++ jupyter_latex_envs/src/latex_envs/latex_envs.py 2020-11-22 17:05:35.063217000 +0100 +@@ -301,12 +301,12 @@ + ) + c.merge(super(LenvsHTMLExporter, self).default_config) + if os.path.isdir(os.path.join(os.path.dirname(__file__), 'templates')): +- c.TemplateExporter.template_path = ['.', ++ c.TemplateExporter.template_paths = ['.', + os.path.join(os.path.dirname(__file__), 'templates')] + else: + from jupyter_contrib_nbextensions.nbconvert_support import ( + templates_directory) +- c.TemplateExporter.template_path = ['.', templates_directory()] ++ c.TemplateExporter.template_paths = ['.', templates_directory()] + + return c + +@@ -364,12 +364,12 @@ + ) + c.merge(super(LenvsSlidesExporter, self).default_config) + if os.path.isdir(os.path.join(os.path.dirname(__file__), 'templates')): +- c.TemplateExporter.template_path = ['.', ++ c.TemplateExporter.template_paths = ['.', + os.path.join(os.path.dirname(__file__), 'templates')] + else: + from jupyter_contrib_nbextensions.nbconvert_support import ( + templates_directory) +- c.TemplateExporter.template_path = ['.', templates_directory()] ++ c.TemplateExporter.template_paths = ['.', templates_directory()] + + return c + +@@ -483,12 +483,12 @@ + c.merge(super(LenvsLatexExporter, self).default_config) + + if os.path.isdir(os.path.join(os.path.dirname(__file__), 'templates')): +- c.TemplateExporter.template_path = ['.', ++ c.TemplateExporter.template_paths = ['.', + os.path.join(os.path.dirname(__file__), 'templates')] + else: + from jupyter_contrib_nbextensions.nbconvert_support import ( + templates_directory) +- c.TemplateExporter.template_path = ['.', templates_directory()] ++ c.TemplateExporter.template_paths = ['.', templates_directory()] + return c + + def tocrefrm(self, text): diff --git a/Golden_Repo/j/Jupyter/jupyterhub-1.1.0_logoutcookie-2.0.patch b/Golden_Repo/j/Jupyter/jupyterhub-1.1.0_logoutcookie-2.0.patch new file mode 100644 index 0000000000000000000000000000000000000000..dc420a9b2607b58f666925f4cb608a94298e7c15 --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyterhub-1.1.0_logoutcookie-2.0.patch @@ -0,0 +1,123 @@ +diff -Naur jupyterhub-1.1.0.orig/jupyterhub/services/auth.py jupyterhub-1.1.0/jupyterhub/services/auth.py +--- jupyterhub-1.1.0.orig/jupyterhub/services/auth.py 2019-12-03 10:13:48.000000000 +0100 ++++ jupyterhub-1.1.0/jupyterhub/services/auth.py 2020-12-23 08:24:38.868452725 +0100 +@@ -28,6 +28,7 @@ + from tornado.log import app_log + from tornado.web import HTTPError + from tornado.web import RequestHandler ++from traitlets import Bool + from traitlets import default + from traitlets import Dict + from traitlets import Instance +@@ -191,6 +192,29 @@ + """, + ).tag(config=True) + ++ session_id_required = Bool( ++ os.getenv('JUPYTERHUB_SESSION_ID_REQUIRED', 'false').lower()=="true", ++ help=""" ++ Blocks any requests, if there's no jupyterhub-session-id cookie. ++ """, ++ ).tag(config=True) ++ ++ session_id_required_user = Bool( ++ os.getenv('JUPYTERHUB_SESSION_ID_REQUIRED_USER', 'false').lower()=="true", ++ help=""" ++ Blocks any requests to /user, if there's no jupyterhub-session-id cookie. ++ """, ++ ).tag(config=True) ++ ++ last_session_id_validation = 0 ++ last_session_id_validation_result = None ++ ++ last_session_id_validation_cache_time = Integer( ++ int(os.getenv('JUPYTERHUB_SESSION_ID_CACHE_TIME', "10")), ++ help="""The maximum time (in seconds) to cache the Hub's responses for session_id verification. Default is 10. ++ """, ++ ).tag(config=True) ++ + hub_prefix = Unicode( + '/hub/', + help="""The URL prefix for the Hub itself. +@@ -461,6 +485,18 @@ + """ + return handler.get_cookie('jupyterhub-session-id', '') + ++ def validate_session_id(self, username, session_id): ++ if time.time() - self.last_session_id_validation > self.last_session_id_validation_cache_time: ++ self.last_session_id_validation = int(time.time()) ++ url = url_path_join( ++ self.api_url, "authorizations/sessionid", quote(username, safe=''), ++ ) ++ headers = {"sessionid": session_id} ++ self.last_session_id_validation_result = self._api_request( ++ 'GET', url, allow_404=True, headers=headers ++ ) ++ return self.last_session_id_validation_result ++ + def get_user(self, handler): + """Get the Hub user for a given tornado handler. + +@@ -484,16 +520,33 @@ + handler._cached_hub_user = user_model = None + session_id = self.get_session_id(handler) + +- # check token first +- token = self.get_token(handler) +- if token: +- user_model = self.user_for_token(token, session_id=session_id) ++ if self.session_id_required and not session_id: ++ app_log.info("Unauthorized access. Only users with a session id are allowed.") ++ return {'name': '<session_id_required>', 'kind': 'User'} ++ elif self.session_id_required_user and not session_id and handler.request.uri.startswith('/user'): ++ app_log.info("Unauthorized access. Only users with a session id are allowed to access /user.") ++ return {'name': '<session_id_required>', 'kind': 'User'} ++ elif self.session_id_required or ( self.session_id_required_user and handler.request.uri.startswith('/user')): ++ token = self.get_token(handler) ++ if token: ++ user_model = self.user_for_token(token) ++ if user_model: ++ handler._token_authenticated = True ++ if user_model is None: ++ user_model = self._get_user_cookie(handler) + if user_model: +- handler._token_authenticated = True ++ user_model = self.validate_session_id(user_model.get('name', ''), session_id) ++ else: ++ # check token first ++ token = self.get_token(handler) ++ if token: ++ user_model = self.user_for_token(token, session_id=session_id) ++ if user_model: ++ handler._token_authenticated = True + +- # no token, check cookie +- if user_model is None: +- user_model = self._get_user_cookie(handler) ++ # no token, check cookie ++ if user_model is None: ++ user_model = self._get_user_cookie(handler) + + # cache result + handler._cached_hub_user = user_model +@@ -904,10 +957,16 @@ + # tries to redirect to login URL, 403 will be raised instead. + # This is not the best, but avoids problems that can be caused + # when get_current_user is allowed to raise. +- def raise_on_redirect(*args, **kwargs): +- raise HTTPError( +- 403, "{kind} {name} is not allowed.".format(**user_model) +- ) ++ if user_model.get('name', '') == '<session_id_required>': ++ def raise_on_redirect(*args, **kwargs): ++ raise HTTPError( ++ 401, "Please login to proceed." ++ ) ++ else: ++ def raise_on_redirect(*args, **kwargs): ++ raise HTTPError( ++ 403, "{kind} {name} is not allowed.".format(**user_model) ++ ) + + self.redirect = raise_on_redirect + return diff --git a/Golden_Repo/j/Jupyter/jupyterlab-gitlab-2.0.0_jsc.patch b/Golden_Repo/j/Jupyter/jupyterlab-gitlab-2.0.0_jsc.patch new file mode 100644 index 0000000000000000000000000000000000000000..a382b73c04e2bd356a7a1ce4813ab80d7cf9591d --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyterlab-gitlab-2.0.0_jsc.patch @@ -0,0 +1,23 @@ +diff +--- jupyterlab-gitlab-2.0.0.orig/schema/drive.json 2019-05-02 08:22:45.219143000 +0200 ++++ jupyterlab-gitlab-2.0.0/schema/drive.json 2019-05-02 08:25:15.392631000 +0200 +@@ -6,8 +6,8 @@ + "properties": { + "baseUrl": { + "type": "string", +- "title": "The GitLab Base URL", +- "default": "https://gitlab.com" ++ "title": "JSC GitLab Base URL", ++ "default": "https://gitlab.version.fz-juelich.de" + }, + "accessToken": { + "type": "string", +@@ -18,7 +18,7 @@ + "defaultRepo": { + "type": "string", + "title": "Default Repository", +- "default": "" ++ "default": "jupyter4jsc/j4j_notebooks" + } + }, + "type": "object" diff --git a/Golden_Repo/j/Jupyter/jupyterlab_github-2.0.0_jsc.patch b/Golden_Repo/j/Jupyter/jupyterlab_github-2.0.0_jsc.patch new file mode 100644 index 0000000000000000000000000000000000000000..ebee87027b2ee62abbf2c08f58506edd7b898f35 --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyterlab_github-2.0.0_jsc.patch @@ -0,0 +1,13 @@ +diff +--- jupyterlab-github-2.0.0.orig/schema/drive.json 2018-10-10 21:14:53.986184891 +0200 ++++ jupyterlab_github-2.0.0/schema/drive.json 2018-10-11 00:28:34.846777384 +0200 +@@ -18,7 +18,7 @@ + "defaultRepo": { + "type": "string", + "title": "Default Repository", +- "default": "" ++ "default": "FZJ-JSC/jupyter-jsc-notebooks" + } + }, + "type": "object" + diff --git a/Golden_Repo/j/Jupyter/jupyterlmod-packagejson.patch b/Golden_Repo/j/Jupyter/jupyterlmod-packagejson.patch new file mode 100644 index 0000000000000000000000000000000000000000..0d166fec22bceb14c1f704b3ee57d04831efe8c8 --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyterlmod-packagejson.patch @@ -0,0 +1,17 @@ +diff -Naur jupyter-lmod-2.0.2.orig/jupyterlab/package.json jupyter-lmod-2.0.2/jupyterlab/package.json +--- jupyter-lmod-2.0.2.orig/jupyterlab/package.json 2020-11-25 16:19:57.000000000 +0100 ++++ jupyter-lmod-2.0.2/jupyterlab/package.json 2020-12-29 16:50:58.803504000 +0100 +@@ -31,10 +31,12 @@ + "prepare": "npm run clean && npm run build" + }, + "dependencies": { +- "@jupyterlab/application": ">=2.0.0", ++ "@jupyterlab/application": "^2.0.0", ++ "@jupyterlab/apputils": "^2.1.0", + "@jupyterlab/launcher": "^2.1.0" + }, + "devDependencies": { ++ "@types/react": "^16.9.16", + "rimraf": "~2.6.2", + "typescript": "~3.7.3" + }, diff --git a/Golden_Repo/j/Jupyter/jupyterlmod-urlfile.patch b/Golden_Repo/j/Jupyter/jupyterlmod-urlfile.patch new file mode 100644 index 0000000000000000000000000000000000000000..0b56aa3e3705f48801d287a08eaad4505016c81f --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyterlmod-urlfile.patch @@ -0,0 +1,37 @@ +diff -Naur jupyter-lmod-2.0.1/jupyterlab/src/index.ts jupyter-lmod-2.0.1_devel/jupyterlab/src/index.ts +--- jupyter-lmod-2.0.1/jupyterlab/src/index.ts 2020-10-05 17:08:01.000000000 +0200 ++++ jupyter-lmod-2.0.1_devel/jupyterlab/src/index.ts 2020-11-25 11:55:24.000000000 +0100 +@@ -244,7 +244,13 @@ + const namespace = 'server-proxy'; + const command = namespace + ':' + 'open'; + for (let server_process of data.server_processes) { +- const url = PageConfig.getBaseUrl() + server_process.name + '/'; ++ ++ let urlfile = ''; ++ if (server_process.launcher_entry.urlfile) { ++ urlfile = server_process.launcher_entry.urlfile; ++ } ++ const url = PageConfig.getBaseUrl() + server_process.name + '/' + urlfile; ++ + const title = server_process.launcher_entry.title; + const newBrowserTab = server_process.new_browser_tab; + const id = namespace + ':' + server_process.name; +diff -Naur jupyter-lmod-2.0.1/jupyterlmod/static/main.js jupyter-lmod-2.0.1_devel/jupyterlmod/static/main.js +--- jupyter-lmod-2.0.1/jupyterlmod/static/main.js 2020-10-05 17:08:01.000000000 +0200 ++++ jupyter-lmod-2.0.1_devel/jupyterlmod/static/main.js 2020-11-25 11:55:24.000000000 +0100 +@@ -316,10 +316,14 @@ + .addClass('new-' + server_process.name); + + /* create our list item's link */ ++ let urlfile = ''; ++ if (server_process.launcher_entry.urlfile) { ++ urlfile = server_process.launcher_entry.urlfile; ++ } + let entry_link = $('<a>') + .attr('role', 'menuitem') + .attr('tabindex', '-1') +- .attr('href', base_url + server_process.name + '/') ++ .attr('href', base_url + server_process.name + '/' + urlfile) + .attr('target', '_blank') + .text(server_process.launcher_entry.title); + diff --git a/Golden_Repo/j/Jupyter/jupyterserverproxy-urlfile.patch b/Golden_Repo/j/Jupyter/jupyterserverproxy-urlfile.patch new file mode 100644 index 0000000000000000000000000000000000000000..de883561447a477f8ad6286b61d0b93c07d0265a --- /dev/null +++ b/Golden_Repo/j/Jupyter/jupyterserverproxy-urlfile.patch @@ -0,0 +1,82 @@ +diff -Naur jupyter-server-proxy.orig/jupyterlab-server-proxy/src/index.ts jupyter-server-proxy/jupyterlab-server-proxy/src/index.ts +--- jupyter-server-proxy.orig/jupyterlab-server-proxy/src/index.ts 2020-11-19 06:40:34.521630000 +0100 ++++ jupyter-server-proxy/jupyterlab-server-proxy/src/index.ts 2020-11-19 06:41:35.023864000 +0100 +@@ -79,8 +79,11 @@ + if (!server_process.launcher_entry.enabled) { + continue; + } +- +- const url = PageConfig.getBaseUrl() + server_process.name + '/'; ++ var urlfile = ''; ++ if (server_process.launcher_entry.urlfile) { ++ urlfile = server_process.launcher_entry.urlfile; ++ } ++ const url = PageConfig.getBaseUrl() + server_process.name + '/' + urlfile; + const title = server_process.launcher_entry.title; + const newBrowserTab = server_process.new_browser_tab; + const id = namespace + ':' + server_process.name; +diff -Naur jupyter-server-proxy.orig/jupyter_server_proxy/api.py jupyter-server-proxy/jupyter_server_proxy/api.py +--- jupyter-server-proxy.orig/jupyter_server_proxy/api.py 2020-11-19 06:40:34.516286000 +0100 ++++ jupyter-server-proxy/jupyter_server_proxy/api.py 2020-11-19 06:41:35.015090000 +0100 +@@ -19,7 +19,8 @@ + 'name': sp.name, + 'launcher_entry': { + 'enabled': sp.launcher_entry.enabled, +- 'title': sp.launcher_entry.title ++ 'title': sp.launcher_entry.title, ++ 'urlfile': sp.launcher_entry.urlfile, + }, + 'new_browser_tab' : sp.new_browser_tab + } +diff -Naur jupyter-server-proxy.orig/jupyter_server_proxy/config.py jupyter-server-proxy/jupyter_server_proxy/config.py +--- jupyter-server-proxy.orig/jupyter_server_proxy/config.py 2020-11-19 06:40:34.516753000 +0100 ++++ jupyter-server-proxy/jupyter_server_proxy/config.py 2020-11-19 06:41:35.016181000 +0100 +@@ -99,7 +99,7 @@ + )) + return handlers + +-LauncherEntry = namedtuple('LauncherEntry', ['enabled', 'icon_path', 'title']) ++LauncherEntry = namedtuple('LauncherEntry', ['enabled', 'icon_path', 'title', 'urlfile']) + ServerProcess = namedtuple('ServerProcess', [ + 'name', 'command', 'environment', 'timeout', 'absolute_url', 'port', 'mappath', 'launcher_entry', 'new_browser_tab']) + +@@ -116,7 +116,8 @@ + launcher_entry=LauncherEntry( + enabled=le.get('enabled', True), + icon_path=le.get('icon_path'), +- title=le.get('title', name) ++ title=le.get('title', name), ++ urlfile=le.get('urlfile', ''), + ), + new_browser_tab=server_process_config.get('new_browser_tab', True) + ) +@@ -175,6 +176,10 @@ + title + Title to be used for the launcher entry. Defaults to the name of the server if missing. + ++ urlfile ++ URL file name and URL parameters to be added to the base URL of the launcher entry. ++ Default is none. ++ + new_browser_tab + Set to True (default) to make the proxied server interface opened as a new browser tab. Set to False + to have it open a new JupyterLab tab. This has no effect in classic notebook. +diff -Naur jupyter-server-proxy.orig/jupyter_server_proxy/static/tree.js jupyter-server-proxy/jupyter_server_proxy/static/tree.js +--- jupyter-server-proxy.orig/jupyter_server_proxy/static/tree.js 2020-11-19 06:40:34.519694000 +0100 ++++ jupyter-server-proxy/jupyter_server_proxy/static/tree.js 2020-11-19 06:41:35.020051000 +0100 +@@ -33,10 +33,14 @@ + .addClass('new-' + server_process.name); + + /* create our list item's link */ ++ var urlfile = ''; ++ if (server_process.launcher_entry.urlfile) { ++ urlfile = server_process.launcher_entry.urlfile; ++ } + var $entry_link = $('<a>') + .attr('role', 'menuitem') + .attr('tabindex', '-1') +- .attr('href', base_url + server_process.name + '/') ++ .attr('href', base_url + server_process.name + '/' + urlfile) + .attr('target', '_blank') + .text(server_process.launcher_entry.title); + diff --git a/Golden_Repo/j/Jupyter/notebook-6.0.3_jsc.patch b/Golden_Repo/j/Jupyter/notebook-6.0.3_jsc.patch new file mode 100644 index 0000000000000000000000000000000000000000..d7a9bb20d7d6eea484462bd8bf68c8e018546b4e --- /dev/null +++ b/Golden_Repo/j/Jupyter/notebook-6.0.3_jsc.patch @@ -0,0 +1,143 @@ +diff +--- notebook-6.0.3.orig/notebook/services/contents/filecheckpoints.py 2020-04-28 06:26:51.384296390 +0200 ++++ notebook-6.0.3/notebook/services/contents/filecheckpoints.py 2020-04-28 06:30:55.139342947 +0200 +@@ -14,7 +14,7 @@ + + from jupyter_core.utils import ensure_dir_exists + from ipython_genutils.py3compat import getcwd +-from traitlets import Unicode ++from traitlets import Unicode, Integer + + from notebook import _tz as tz + +@@ -28,6 +28,35 @@ + you want file-based checkpoints with another ContentsManager. + """ + ++ checkpoint_permissions = Integer( ++ 0o644, ++ config=True, ++ help="""The permission of your checkpoint files. ++ ++ By default, it is 0o644 ++ """, ++ ) ++ ++ restore_permissions = Integer( ++ 0o644, ++ config=True, ++ help="""The permission of a restored checkpoint. ++ ++ By default, it is 0o644 ++ """, ++ ) ++ ++ checkpoint_dir_umask = Integer( ++ 0o022, ++ config=True, ++ help="""The umask for the checkpoint directory. ++ ++ Keep in mind that it depends on your system umask, too. ++ ++ By default, it is 0o022 ++ """, ++ ) ++ + checkpoint_dir = Unicode( + '.ipynb_checkpoints', + config=True, +@@ -50,21 +79,29 @@ + # ContentsManager-dependent checkpoint API + def create_checkpoint(self, contents_mgr, path): + """Create a checkpoint.""" ++ original_umask = os.umask(self.checkpoint_dir_umask) + checkpoint_id = u'checkpoint' + src_path = contents_mgr._get_os_path(path) + dest_path = self.checkpoint_path(checkpoint_id, path) + self._copy(src_path, dest_path) +- return self.checkpoint_model(checkpoint_id, dest_path) ++ os.chmod(dest_path, self.checkpoint_permissions) ++ ret = self.checkpoint_model(checkpoint_id, dest_path) ++ os.umask(original_umask) ++ return ret + + def restore_checkpoint(self, contents_mgr, checkpoint_id, path): + """Restore a checkpoint.""" ++ original_umask = os.umask(self.checkpoint_dir_umask) + src_path = self.checkpoint_path(checkpoint_id, path) + dest_path = contents_mgr._get_os_path(path) + self._copy(src_path, dest_path) ++ os.chmod(dest_path, self.restore_permissions) ++ os.umask(original_umask) + + # ContentsManager-independent checkpoint API + def rename_checkpoint(self, checkpoint_id, old_path, new_path): + """Rename a checkpoint from old_path to new_path.""" ++ original_umask = os.umask(self.checkpoint_dir_umask) + old_cp_path = self.checkpoint_path(checkpoint_id, old_path) + new_cp_path = self.checkpoint_path(checkpoint_id, new_path) + if os.path.isfile(old_cp_path): +@@ -75,9 +112,11 @@ + ) + with self.perm_to_403(): + shutil.move(old_cp_path, new_cp_path) ++ os.umask(original_umask) + + def delete_checkpoint(self, checkpoint_id, path): + """delete a file's checkpoint""" ++ original_umask = os.umask(self.checkpoint_dir_umask) + path = path.strip('/') + cp_path = self.checkpoint_path(checkpoint_id, path) + if not os.path.isfile(cp_path): +@@ -86,23 +125,29 @@ + self.log.debug("unlinking %s", cp_path) + with self.perm_to_403(): + os.unlink(cp_path) ++ os.umask(original_umask) + + def list_checkpoints(self, path): + """list the checkpoints for a given file + + This contents manager currently only supports one checkpoint per file. + """ ++ original_umask = os.umask(self.checkpoint_dir_umask) + path = path.strip('/') + checkpoint_id = "checkpoint" + os_path = self.checkpoint_path(checkpoint_id, path) + if not os.path.isfile(os_path): ++ os.umask(original_umask) + return [] + else: +- return [self.checkpoint_model(checkpoint_id, os_path)] ++ ret = self.checkpoint_model(checkpoint_id, os_path) ++ os.umask(original_umask) ++ return [ret] + + # Checkpoint-related utilities + def checkpoint_path(self, checkpoint_id, path): + """find the path to a checkpoint""" ++ original_umask = os.umask(self.checkpoint_dir_umask) + path = path.strip('/') + parent, name = ('/' + path).rsplit('/', 1) + parent = parent.strip('/') +@@ -117,16 +162,19 @@ + with self.perm_to_403(): + ensure_dir_exists(cp_dir) + cp_path = os.path.join(cp_dir, filename) ++ os.umask(original_umask) + return cp_path + + def checkpoint_model(self, checkpoint_id, os_path): + """construct the info dict for a given checkpoint""" ++ original_umask = os.umask(self.checkpoint_dir_umask) + stats = os.stat(os_path) + last_modified = tz.utcfromtimestamp(stats.st_mtime) + info = dict( + id=checkpoint_id, + last_modified=last_modified, + ) ++ os.umask(original_umask) + return info + + # Error Handling + diff --git a/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..3c95d6f138d593c2b7672401e04b22170c4fc4d9 --- /dev/null +++ b/Golden_Repo/j/JupyterCollection/JupyterCollection-2020.2.5-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb @@ -0,0 +1,33 @@ +easyblock = 'Bundle' + +name = 'JupyterCollection' +version = '2020.2.5' + +local_pysuffix = '-Python-3.8.5' + +homepage = 'http://www.jupyter.org' +description = """ +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'} + +dependencies = [ + ('JupyterKernel-Bash', '0.7.1', '-' + version), + ('JupyterKernel-Cling', '0.7', '-' + version), + ('JupyterKernel-JavaScript', '5.2.0', '-' + version), + ('JupyterKernel-Julia', '1.5.2', '-' + version), + ('JupyterKernel-Octave', '6.1.0', '-' + version), + ('JupyterKernel-PyParaView', '5.8.1', '-' + version), + # ('JupyterKernel-PyQuantum', '1.1', '-' + version), + ('JupyterKernel-R', '4.0.2', '-' + version), + ('JupyterKernel-Ruby', '2.7.1', '-' + version), + ('JupyterProxy-XpraHTML5', '0.3.0', '-' + version), + ('Jupyter', version, local_pysuffix), +] + +skipsteps = ['configure', 'build', 'install', 'sanity_check'] + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..65d3c8c014f31e4058e31c0235782028857441e8 --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-Bash/JupyterKernel-Bash-0.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,98 @@ +easyblock = 'Bundle' + +name = 'JupyterKernel-Bash' +version = '0.7.1' +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +local_pysuffix = '-Python-%(pyver)s' + +homepage = 'https://github.com/takluyver/bash_kernel' +description = """ +Native Bash 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'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('Jupyter', local_jupyterver, local_pysuffix), +] + +local_common_opts = { + 'req_py_majver': '3', + 'req_py_minver': '0' +} + +exts_defaultclass = 'PythonPackage' +exts_filter = ('python -c "import %(ext_name)s"', '') +exts_default_options = { + 'download_dep_fail': True, + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, +} + +exts_list = [ + # 0.7.2 fails with BackendUnavailable. Might be fixable --no-use-pep517 + ('bash_kernel', '0.7.1', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', '29f895819e076e3f225e37034b70b5265a559e2964e020c942024f51ea6153e8')]), + ('use_pip', True), + ])), +] + +local_jupyter_path = 'share/jupyter' + +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), + + # Jupyter Kernel: Bash - https://github.com/takluyver/bash_kernel + # installs bash_kernel in $JUPYTER_DATA_DIR/kernels + 'source %(builddir)s/env.sh && ${EBROOTPYTHON}/bin/python3 -m bash_kernel.install --user', + '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/bash/kernel.json', + ], + 'dirs': [ + 'lib/python%(pyshortver)s/site-packages', + 'share/jupyter/kernels/bash/', + ], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..8de48fc00e6eafc78dd98cda09d2bc72fde8d6cb --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-Cling/JupyterKernel-Cling-0.7-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,93 @@ +easyblock = 'Bundle' + +name = 'JupyterKernel-Cling' +version = '0.7' +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +local_pysuffix = '-Python-%(pyver)s' + +homepage = 'https://github.com/root-project/cling' +description = """ +Native C 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'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('Jupyter', local_jupyterver, local_pysuffix), + ('Cling', version), +] + +local_jupyter_path = 'share/jupyter' + +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), + + # Jupyter Kernel: Cling (C++) + 'source %(builddir)s/env.sh && pip3 install ${EBROOTCLING}/share/cling/Jupyter/kernel', + ( + 'source %(builddir)s/env.sh && ' + ' jupyter-kernelspec install --prefix=%(installdir)s ${EBROOTCLING}/share/cling/Jupyter/kernel/cling-cpp17' + ), + + # correct shebang to correct python binary + ( + 'source %(builddir)s/env.sh && ' + ' abs2python="#! ${EBROOTPYTHON}/bin/python" && ' + ' sed "1s@^.*@$abs2python@g" -i %(installdir)s/bin/jupyter-cling-kernel' + ), + '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 %(installdir)s/bin/python', + 'rm %(installdir)s/bin/python3', + 'rm %(installdir)s/bin/activate', + 'rm %(installdir)s/bin/activate*', + 'rm %(installdir)s/bin/easy_install*', + 'rm %(installdir)s/bin/pip*', +] + +# 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/cling-cpp17/kernel.json', + ], + 'dirs': [ + # 'lib/python%(pyshortver)s/site-packages', + 'share/jupyter/kernels/cling-cpp17/', + ], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..63f3f746f56cbc0dc82f569bf0ad6eff20181df8 --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-JavaScript/JupyterKernel-JavaScript-5.2.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,71 @@ +easyblock = 'Bundle' + +name = 'JupyterKernel-JavaScript' +version = '5.2.0' +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +local_pysuffix = '-Python-3.8.5' + +homepage = 'https://www.npmjs.com/package/ijavascript' +description = """ +Native JavaScript 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'), +] + +dependencies = [ + ('Jupyter', local_jupyterver, local_pysuffix), +] + +local_jupyter_path = 'share/jupyter' + +modextrapaths = { + 'PATH': ['bin'], + 'NODE_PATH': ['lib/node_modules'], # npm´s search path to extra modules + '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 = [ + ( + '{ cat > %%(builddir)s/env.sh; } << \'EOF\'\n' + '#!/bin/bash\n' + 'export PATH=%%(installdir)s/bin:${PATH}\n' + 'export NODE_PATH=%%(installdir)s/lib/node_modules\n' + 'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n' + 'EOF' + ) % (local_jupyter_path), + + 'source %(builddir)s/env.sh && npm install ijavascript@5.2.0 -g --prefix %(installdir)s', + # installs ijavascript in $JUPYTER_DATA_DIR/kernels + 'source %(builddir)s/env.sh && ijsinstall --install=local', + 'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share', +] + +# 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/javascript/kernel.json', + ], + 'dirs': [ + 'lib/node_modules/', + 'share/jupyter/kernels/javascript/', + ], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..735b3cd4ce2e2a3e87d92493c03d91c7d5347ef9 --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-Julia/JupyterKernel-Julia-1.5.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,117 @@ +easyblock = 'Bundle' + +name = 'JupyterKernel-Julia' +version = '1.5.2' +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +local_pysuffix = '-Python-%(pyver)s' + +homepage = 'https://github.com/IRkernel/IRkernel' +description = """ +Native R 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'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('Jupyter', local_jupyterver, local_pysuffix), + ('Julia', version), +] + +local_common_opts = { + 'req_py_majver': '3', + 'req_py_minver': '0' +} + +exts_defaultclass = 'PythonPackage' +exts_filter = ('python -c "import %(ext_name)s"', '') +exts_default_options = { + 'download_dep_fail': True, + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, +} + +exts_list = [ + ('julia', '0.5.3', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'b13207125709fdba069a25c4e54ff366f0bc308807b2aa0f3b66924101799c58')]), + ('use_pip', True), + ])), +] + +local_jupyter_path = 'share/jupyter' +local_julia_depot_path = "%(installdir)s/share/julia/site/" # for Julia packages needed for Jupyter + +modextrapaths = { + 'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'], + 'JUPYTER_PATH': ['share/jupyter'], # add search path for kernelspecs +} + +modextravars = { + 'JULIA_DEPOT_PATH': local_julia_depot_path, +} + +# 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 JULIA_DEPOT_PATH=%s\n' + 'export JUPYTER_DATA_DIR=%%(installdir)s/%s\n' + 'EOF' + ) % (local_julia_depot_path, local_jupyter_path), + + # installs ijulia in JULIA_DEPOT_PATH and kernel in $JUPYTER_DATA_DIR/kernels + 'source %(builddir)s/env.sh && julia -e \'using Pkg; Pkg.add("IJulia"); Pkg.build("IJulia")\'', + + # to trigger the precompilation + 'source %(builddir)s/env.sh && julia -e \'using IJulia\'', + + # adjust permissions of precompiled files + 'for i in $(find %s); do chmod +r $i; done' % local_julia_depot_path, + + # configure Python<->Julia bridge (of python package julia) + 'source %(builddir)s/env.sh && python -c "import julia; julia.install()"', + + # Ensure we remove the virtuel environment to avoid wrong search path for python packages + 'rm %(installdir)s/pyvenv.cfg', + 'rm %(installdir)s/bin/python', + 'rm %(installdir)s/bin/python3', + 'rm %(installdir)s/bin/activate', + 'rm %(installdir)s/bin/activate*', + 'rm %(installdir)s/bin/easy_install*', + 'rm %(installdir)s/bin/pip*', +] + +# 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/julia-%(version_major_minor)s/kernel.json', + ], + 'dirs': [ + 'lib/python%(pyshortver)s/site-packages', + 'share/jupyter/kernels/julia-%(version_major_minor)s/', + ], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..c712e30c7783628b321266ffa1c3e9b35d38f66e --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-Octave/JupyterKernel-Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,137 @@ +easyblock = 'Bundle' + +name = 'JupyterKernel-Octave' +version = '6.1.0' +local_octavever = '6.1.0' +local_jupyterver = '2020.2.5' +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 load Stages/2020 \n' + 'module load GCC/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' diff --git a/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..02ad2914a3351aa6ab1ef393d1bc817069fdb2e4 --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-PyParaView/JupyterKernel-PyParaView-5.8.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,130 @@ +easyblock = 'Binary' + +name = 'JupyterKernel-PyParaView' +version = '5.8.1' +local_paraviewver = '5.8.1' +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +local_pysuffix = '-Python-%(pyver)s' + +homepage = 'https://www.paraview.org' +description = """ +Special ParaView 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} + +sources = [ + ('logo-128x128.png'), + ('logo-32x32.png'), + ('logo-64x64.png'), +] + +builddependencies = [ + ('binutils', '2.34'), + # ('ParaView', local_paraviewver, '-EGL' + local_pysuffix, ('gpsmkl', '2020')), # ensure it is available +] + +dependencies = [ + ('Python', '3.8.5'), + ('Jupyter', local_jupyterver, local_pysuffix), +] + +local_kernel_dir = 'pyparaview' +local_kernel_name = 'PyParaView-%s' % local_paraviewver + +modextrapaths = { + 'JUPYTER_PATH': ['share/jupyter'], # add search path for kernelspecs +} + +# Ensure that the user-specific $HOME/.local/share/jupyter is first entry in JUPYTHER_PATH +modluafooter = """ +prepend_path("JUPYTER_PATH", pathJoin(os.getenv("HOME"), ".local/share/jupyter")) +""" + +postinstallcmds = [ + ( + '{ 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 && python -m ipykernel install --name=%s --prefix=%%(installdir)s' % local_kernel_dir, + + # write logo image + ( + 'source %%(builddir)s/env.sh && ' + ' cp %%(builddir)s/logo-32x32.png %%(installdir)s/share/jupyter/kernels/%s/logo-32x32.png' + ) % (local_kernel_dir), + ( + 'source %%(builddir)s/env.sh && ' + ' cp %%(builddir)s/logo-64x64.png %%(installdir)s/share/jupyter/kernels/%s/logo-64x64.png' + ) % (local_kernel_dir), + ( + 'source %%(builddir)s/env.sh && ' + ' cp %%(builddir)s/logo-128x128.png %%(installdir)s/share/jupyter/kernels/%s/logo-128x128.png' + ) % (local_kernel_dir), + + # write kernel.sh + ( + '{ 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/2020 \n' + 'module load GCC/9.3.0 \n' + 'module load ParaStationMPI \n' + 'module load Python/%%(pyver)s \n' + 'module load Jupyter/%s%s \n' + '\n' + 'module load ParaView/%s-EGL%s \n' + 'module unload VTK \n' + '\n' + 'exec python -m ipykernel $@\n' + 'EOF' + ) % (local_kernel_dir, + local_jupyterver, local_pysuffix, + local_paraviewver, local_pysuffix), + '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' + ' "ipykernel_launcher", \n' + ' "-f", \n' + ' "{connection_file}" \n' + ' ], \n' + ' "display_name": "%s", \n' + ' "language": "python", \n' + ' "name": "%s" \n' + '}\n' + 'EOF' + ) % (local_kernel_dir, local_kernel_dir, local_kernel_name, local_kernel_name), +] + +# 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': [ + 'share/jupyter/kernels/', + ], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..ee02c803106fcea641d1bd70912d2ad3052aa32e --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-R/JupyterKernel-R-4.0.2-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,61 @@ +easyblock = 'Bundle' + +name = 'JupyterKernel-R' +version = '4.0.2' +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +local_pysuffix = '-Python-3.8.5' + +homepage = 'https://github.com/IRkernel/IRkernel' +description = """ +Native R 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'), +] + +dependencies = [ + ('Jupyter', local_jupyterver, local_pysuffix), + ('R', '4.0.2', '-nompi'), +] + +modextrapaths = { + '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 = [ + # Jupyter Kernel: R - https://github.com/IRkernel/IRkernel + # installs R kernel in $EBROOTJUPYTER/share/jupyter/kernels + 'R -e \'IRkernel::installspec(name="ir40", displayname="R 4.0", prefix="%(installdir)s")\'', + + # force options(bitmapType='cairo') -> https://github.com/IRkernel/IRkernel/issues/388 + ( + 'sed -i "s#IRkernel::main()#options(bitmapType=\'cairo\') ; IRkernel::main()#g" ' + ' %(installdir)s/share/jupyter/kernels/ir40/kernel.json' + ), +] + +sanity_check_paths = { + 'files': [ + 'share/jupyter/kernels/ir40/kernel.json', + ], + 'dirs': [ + 'share/jupyter/kernels/ir40/', + ], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..a88416c91842db501138d1430faf784f9e915615 --- /dev/null +++ b/Golden_Repo/j/JupyterKernel-Ruby/JupyterKernel-Ruby-2.7.1-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,65 @@ +easyblock = 'Bundle' + +name = 'JupyterKernel-Ruby' +version = '2.7.1' +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +local_pysuffix = '-Python-3.8.5' + +homepage = 'https://github.com/SciRuby/iruby' +description = """ +Native Ruby 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'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('Jupyter', local_jupyterver, local_pysuffix), + ('Ruby', '2.7.1'), +] + +local_jupyter_path = 'share/jupyter' + +modextrapaths = { + '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 = [ + 'echo "#!/bin/bash" > %(builddir)s/env.sh', + 'echo "export JUPYTER_DATA_DIR=%%(installdir)s/%s" >> %%(builddir)s/env.sh' % local_jupyter_path, + + # install Ruby kernel in $JUPYTHER_PATH + 'source %(builddir)s/env.sh && iruby register --force ', + + # ensure correct permissions + 'source %(builddir)s/env.sh && chmod -R o+x %(installdir)s/share', +] + +# 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/ruby/kernel.json', + ], + 'dirs': [ + 'share/jupyter/kernels/ruby/', + ], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb new file mode 100644 index 0000000000000000000000000000000000000000..8fde03a92d49c001e80d348d9bd7c8bc68a240b3 --- /dev/null +++ b/Golden_Repo/j/JupyterProxy-XpraHTML5/JupyterProxy-XpraHTML5-0.3.0-gcccoremkl-9.3.0-2020.2.254-2020.2.5.eb @@ -0,0 +1,57 @@ +easyblock = 'PythonBundle' + +name = 'JupyterProxy-XpraHTML5' +version = '0.3.0' + +local_jupyterver = '2020.2.5' +versionsuffix = '-' + local_jupyterver + +homepage = 'https://xpra.org' +description = """ +Jupyter proxy for Xpra HTML5 sessions. +Xpra is an open-source multi-platform persistent remote display server and client +for forwarding applications and desktop screens. +""" + +site_contacts = 'j.goebbert@fz-juelich.de' + +toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'} +toolchainopts = {'pic': True} + +builddependencies = [ + ('binutils', '2.34'), +] + +dependencies = [ + ('Python', '3.8.5'), + ('Jupyter', local_jupyterver, '-Python-%(pyver)s'), +] + +exts_defaultclass = 'PythonPackage' +exts_default_options = { + 'download_dep_fail': True, + 'source_urls': [PYPI_SOURCE], + 'use_pip': True, +} + +local_common_opts = { + 'req_py_majver': '3', + 'req_py_minver': '0' +} + +exts_list = [ + ('jupyter-xprahtml5-proxy', '0.3.0', dict(list(local_common_opts.items()) + [ + ('checksums', [('sha256', 'db852682e8e366091e6a3984b60ac3d2e6b3197be2ef074440c11cb09e23b80b')]), + ('source_urls', ['https://github.com/FZJ-JSC/jupyter-xprahtml5-proxy/archive/']), + ('source_tmpl', 'v0.3.0_devel.tar.gz'), + ('patches', ['jupyter_xprahtml5_proxy-launch_xpra.patch']), + ('modulename', 'jupyter_xprahtml5_proxy'), + ])), +] + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages'], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/j/JupyterProxy-XpraHTML5/jupyter_xprahtml5_proxy-launch_xpra.patch b/Golden_Repo/j/JupyterProxy-XpraHTML5/jupyter_xprahtml5_proxy-launch_xpra.patch new file mode 100644 index 0000000000000000000000000000000000000000..329d2ac2728fc42991d54a2f7a74e9c081fc50b0 --- /dev/null +++ b/Golden_Repo/j/JupyterProxy-XpraHTML5/jupyter_xprahtml5_proxy-launch_xpra.patch @@ -0,0 +1,27 @@ +diff -Naur jupyter-xprahtml5-proxy.orig/jupyter_xprahtml5_proxy/share/launch_xpra.sh jupyter-xprahtml5-proxy/jupyter_xprahtml5_proxy/share/launch_xpra.sh +--- jupyter-xprahtml5-proxy.orig/jupyter_xprahtml5_proxy/share/launch_xpra.sh 2020-11-19 00:13:39.000000000 +0100 ++++ jupyter-xprahtml5-proxy/jupyter_xprahtml5_proxy/share/launch_xpra.sh 2020-11-20 18:49:09.557792000 +0100 +@@ -5,10 +5,17 @@ + # Do it here. + + # example +-# module purge > /dev/null +-# module use $OTHERSTAGES > /dev/null +-# module load Stages/2020 > /dev/null +-# module load GCCcore/.9.3.0 > /dev/null +-# module load xpra/4.0.4-Python-3.8.5 > /dev/null ++module purge ++module use $OTHERSTAGES ++module load Stages/2020 ++module load GCCcore/.9.3.0 ++module load xpra/4.0.4-Python-3.8.5 ++module load jsc-xdg-menu/.2020.3 ++ ++if ! command -v xterm &> /dev/null ++then ++ echo "xterm not found - trying to load the xterm-module" ++ module load xterm ++fi + + xpra "$@" + diff --git a/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb b/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb index ddee966f3e5b79e371d41631ff7432683350fd79..7210f37bc48a792d042c384051407ef0e62e7057 100644 --- a/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb +++ b/Golden_Repo/jurecadc_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb @@ -36,7 +36,7 @@ builddependencies = [ ('archspec', '0.1.0', '-Python-%(pyver)s'), ] dependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('Python', '3.8.5'), ('libpng', '1.6.37'), ('libjpeg-turbo', '2.0.5'), diff --git a/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb b/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb index ddee966f3e5b79e371d41631ff7432683350fd79..7210f37bc48a792d042c384051407ef0e62e7057 100644 --- a/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb +++ b/Golden_Repo/juwelsbooster_overlay/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb @@ -36,7 +36,7 @@ builddependencies = [ ('archspec', '0.1.0', '-Python-%(pyver)s'), ] dependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('Python', '3.8.5'), ('libpng', '1.6.37'), ('libjpeg-turbo', '2.0.5'), diff --git a/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb b/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb index b7411d242a805cb6bf5f3f11ae0e693ba31e223b..3a53f84ceb7dd4b9f45a5bdd24bf46daaac26f6c 100644 --- a/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb +++ b/Golden_Repo/l/LAMMPS/LAMMPS-29Oct2020-gpsmkl-2020-CUDA.eb @@ -36,7 +36,7 @@ builddependencies = [ ('archspec', '0.1.0', '-Python-%(pyver)s'), ] dependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('Python', '3.8.5'), ('libpng', '1.6.37'), ('libjpeg-turbo', '2.0.5'), diff --git a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb index fa00a133155d8ad92ca38b7c9140c67c8f9e6db0..89152e411f290f6a40395301a61b0b8e813ecd14 100644 --- a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb +++ b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-GCC-9.3.0.eb @@ -15,7 +15,7 @@ sources = ['%(version)s.tar.gz'] source_urls = ['https://github.com/hfp/libxsmm/archive/'] dependencies = [ - ('imkl', '2020.2.254', '', True), + ('imkl', '2020.2.254', '', SYSTEM), ] # install both static and dynamic version diff --git a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb index c46b09870e6687143d89f2af3f793fa669214f83..e424c8064e7b6844838cacdf2ad6b43828fb3615 100644 --- a/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb +++ b/Golden_Repo/l/libxsmm/libxsmm-1.16.1-iccifort-2020.2.254-GCC-9.3.0.eb @@ -15,7 +15,7 @@ sources = ['%(version)s.tar.gz'] source_urls = ['https://github.com/hfp/libxsmm/archive/'] dependencies = [ - ('imkl', '2020.2.254', '', True), + ('imkl', '2020.2.254', '', SYSTEM), ] # install both static and dynamic version diff --git a/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb b/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb index 53c0ff98cae3078e56396775c7795f3713bafc30..f4def944cc3a11eb0bd00343ed7a9211df35b8b0 100644 --- a/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb +++ b/Golden_Repo/m/magma/magma-2.5.4-gcccoremkl-9.3.0-2020.2.254.eb @@ -22,7 +22,7 @@ builddependencies = [ ] dependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ] # make sure both static and shared libs are built diff --git a/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb index d64db9edde4b14e101edbeb7216fa4bf4718b5b6..7ba5b3411e29ac03d42f3a0faa7d8a941d06661a 100644 --- a/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb +++ b/Golden_Repo/o/Octave/Octave-5.2.0-gpsmkl-2020.eb @@ -35,7 +35,7 @@ dependencies = [ ('GLPK', '4.65'), ('GL2PS', '1.4.2'), ('gnuplot', '5.2.8'), - ('Java', '1.8', '', True), + ('Java', '1.8', '', SYSTEM), ('OpenGL', '2020'), ('freeglut', '3.2.1'), ('zlib', '1.2.11'), diff --git a/Golden_Repo/o/Octave/Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb b/Golden_Repo/o/Octave/Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb index 9b1e57e406f10ea2d54eec8bd9673f8d97323a2d..dff7022148519d11b831f92623c453785bc3ee76 100644 --- a/Golden_Repo/o/Octave/Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb +++ b/Golden_Repo/o/Octave/Octave-6.1.0-gcccoremkl-9.3.0-2020.2.254-nompi.eb @@ -37,7 +37,7 @@ dependencies = [ ('GLPK', '4.65'), ('GL2PS', '1.4.2'), ('gnuplot', '5.2.8'), - ('Java', '15', '', True), + ('Java', '15', '', SYSTEM), ('OpenGL', '2020'), ('freeglut', '3.2.1'), ('zlib', '1.2.11'), diff --git a/Golden_Repo/o/Octave/Octave-6.1.0-gpsmkl-2020.eb b/Golden_Repo/o/Octave/Octave-6.1.0-gpsmkl-2020.eb index 1db0c937247bbfd9b96ec7f0ecffb8be60ad2b7a..c18bec08905494c893b7a97af80a1976f818a7ed 100644 --- a/Golden_Repo/o/Octave/Octave-6.1.0-gpsmkl-2020.eb +++ b/Golden_Repo/o/Octave/Octave-6.1.0-gpsmkl-2020.eb @@ -35,7 +35,7 @@ dependencies = [ ('GLPK', '4.65'), ('GL2PS', '1.4.2'), ('gnuplot', '5.2.8'), - ('Java', '15', '', True), + ('Java', '15', '', SYSTEM), ('OpenGL', '2020'), ('freeglut', '3.2.1'), ('zlib', '1.2.11'), diff --git a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb index e18f87f8d34dd5f804eeca69be97bacf47e6a11c..a869d62bf93773a4b99e88d4f7efd384b7c0bad5 100644 --- a/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb +++ b/Golden_Repo/p/PostgreSQL/PostgreSQL-12.3-GCCcore-9.3.0.eb @@ -25,7 +25,7 @@ toolchain = {'name': 'GCCcore', 'version': '9.3.0'} osdependencies = [('openssl-devel', 'libssl-dev')] dependencies = [ - ('Java', '1.8', '', True), + ('Java', '1.8', '', SYSTEM), ('libreadline', '8.0'), ('zlib', '1.2.11'), ] diff --git a/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb index 16deb6cba847a0e0272cdbfa8b4c0ad828b19fde..865f39655e9398c84edee37ca14e3b146642ac9d 100644 --- a/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb +++ b/Golden_Repo/p/PyTorch/PyTorch-1.7.0-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb @@ -25,9 +25,9 @@ dependencies = [ ('SciPy-Stack', '2020', versionsuffix, ('gcccoremkl', '9.3.0-2020.2.254')), ('MPFR', '4.1.0'), ('GMP', '6.2.0'), - ('numactl', '2.0.13', '', True), + ('numactl', '2.0.13', '', SYSTEM), ('FFmpeg', '4.3.1'), - ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, True), + ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, SYSTEM), ('magma', '2.5.4'), ('NCCL', '2.8.3-1', '-CUDA-%s' % local_cudaver), ('LLVM', '10.0.1'), diff --git a/Golden_Repo/r/R/R-4.0.2-gcccoremkl-9.3.0-2020.2.254-nompi.eb b/Golden_Repo/r/R/R-4.0.2-gcccoremkl-9.3.0-2020.2.254-nompi.eb index a2ac129162ab0f541358b29a82a50ac5c8cb9b2a..719838a272dd976c03dd31536459a7af69cde72a 100644 --- a/Golden_Repo/r/R/R-4.0.2-gcccoremkl-9.3.0-2020.2.254-nompi.eb +++ b/Golden_Repo/r/R/R-4.0.2-gcccoremkl-9.3.0-2020.2.254-nompi.eb @@ -31,7 +31,7 @@ dependencies = [ ('libpng', '1.6.37'), # for plotting in R ('libjpeg-turbo', '2.0.5'), # for plottting in R ('LibTIFF', '4.1.0'), - ('Java', '1.8', '', True), + ('Java', '1.8', '', SYSTEM), ('Tk', '8.6.10'), # for tcltk ('cURL', '7.71.1'), # for RCurl ('libxml2', '2.9.10'), # for XML diff --git a/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb b/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb index 47ff4f94197ff73e675297a6359688e30b60bf7b..fb9b2a4ee5787a8c8ed54519573aaa64ad78aa1a 100644 --- a/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb +++ b/Golden_Repo/r/R/R-4.0.2-gpsmkl-2020.eb @@ -30,7 +30,7 @@ dependencies = [ ('libpng', '1.6.37'), # for plotting in R ('libjpeg-turbo', '2.0.5'), # for plottting in R ('LibTIFF', '4.1.0'), - ('Java', '1.8', '', True), + ('Java', '1.8', '', SYSTEM), ('Tk', '8.6.10'), # for tcltk ('cURL', '7.71.1'), # for RCurl ('libxml2', '2.9.10'), # for XML diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb index bb1380f27880d1b901e537c791faebbe506bc8d3..7037c78bff8437068491567a8832a1878eb47879 100644 --- a/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb +++ b/Golden_Repo/s/Score-P/Score-P-6.0-gompi-2020.eb @@ -33,7 +33,7 @@ patches = [ ] builddependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('CubeLib', '4.5'), ('CubeWriter', '4.5'), # Unwinding/sampling support (optional): diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb index 30b2e861dff7a9dcee4fe4bfc79de7ef2ac7132a..a654979fef2bcd3fbb7b26bbc8e18c5d916e231a 100644 --- a/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb +++ b/Golden_Repo/s/Score-P/Score-P-6.0-gpsmpi-2020.eb @@ -33,7 +33,7 @@ patches = [ ] builddependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('CubeLib', '4.5'), ('CubeWriter', '4.5'), # Unwinding/sampling support (optional): diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb index 807d8fed2ffd9dd1dd569760feb0d5600dabfda8..1dd32b425e26a853984b4c775d2176860f59cbd1 100644 --- a/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb +++ b/Golden_Repo/s/Score-P/Score-P-6.0-iimpi-2020.eb @@ -33,7 +33,7 @@ patches = [ ] builddependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('CubeLib', '4.5'), ('CubeWriter', '4.5'), # Unwinding/sampling support (optional): diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb index 56fbb9367c43e92f4409311c0133a28dc96459b9..79c00c01536bd236ca672c9a78aeebb827ad6f59 100644 --- a/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb +++ b/Golden_Repo/s/Score-P/Score-P-6.0-ipsmpi-2020.eb @@ -33,7 +33,7 @@ patches = [ ] builddependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('CubeLib', '4.5'), ('CubeWriter', '4.5'), # Unwinding/sampling support (optional): diff --git a/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb b/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb index bee2e759d062b0d5683cd65cfef67800217b5dbf..eb958fb47f5ac34bbe54a24869875ab2e0970bf2 100644 --- a/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb +++ b/Golden_Repo/s/Score-P/Score-P-6.0-npsmpic-2020.eb @@ -33,7 +33,7 @@ patches = [ ] builddependencies = [ - ('CUDA', '11.0', '', True), + ('CUDA', '11.0', '', SYSTEM), ('CubeLib', '4.5'), ('CubeWriter', '4.5'), # Unwinding/sampling support (optional): diff --git a/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb index 1a2b43f795219d5f7a1783c3a6c6b583d4a594a6..9a55c28c37c3eafc4ca9b2049a1237e2c1823d32 100644 --- a/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb +++ b/Golden_Repo/t/TensorFlow/TensorFlow-2.3.1-gcccoremkl-9.3.0-2020.2.254-Python-3.8.5.eb @@ -24,8 +24,8 @@ builddependencies = [ ('pybind11', '2.5.0', versionsuffix), ] dependencies = [ - ('CUDA', local_cudaver, '', True), - ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, True), + ('CUDA', local_cudaver, '', SYSTEM), + ('cuDNN', '8.0.2.39', '-CUDA-%s' % local_cudaver, SYSTEM), ('NCCL', '2.8.3-1', '-CUDA-%s' % local_cudaver), ('Python', '3.8.5'), ('h5py', '2.10.0', '-serial%s' % versionsuffix), diff --git a/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb index da015d63ed316562930d1cec1ebdc2e926c6f4c1..585047becdcc0b838c0c31fa9351e8b38c505587 100644 --- a/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb +++ b/Golden_Repo/y/yuicompressor/yuicompressor-2.4.8-GCCcore-9.3.0-Python-3.8.5.eb @@ -22,7 +22,7 @@ builddependencies = [ dependencies = [ ('Python', '3.8.5'), - ('Java', '1.8', '', True), + ('Java', '1.8', '', SYSTEM), ] use_pip = True