diff --git a/Golden_Repo/b/Bazel/Bazel-3.4.1-fix-grpc-protoc.patch b/Golden_Repo/b/Bazel/Bazel-3.4.1-fix-grpc-protoc.patch new file mode 100644 index 0000000000000000000000000000000000000000..ecc4021a049801f6f37470d71e7e635a314bbb09 --- /dev/null +++ b/Golden_Repo/b/Bazel/Bazel-3.4.1-fix-grpc-protoc.patch @@ -0,0 +1,27 @@ +From cd3c41eb5a29ca475b7bafc42aa71e94363d46df Mon Sep 17 00:00:00 2001 +From: Alexander Grund <alexander.grund@tu-dresden.de> +Date: Tue, 28 Jul 2020 19:51:13 +0200 +Subject: [PATCH] Fix environment for protobuf compilation in grpc + +Add use_default_shell_env = True to protoc invocation for grpc to mirror +what the protobuf cc_proto_library & co are doing +Fixes a failure in invocing protoc when it is build in a non-default +environment (e.g. with a custom LD_LIBRARY_PATH) + +Fixes #11852, fixes #11855 +--- + third_party/grpc/bazel/generate_cc.bzl | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/third_party/grpc/bazel/generate_cc.bzl b/third_party/grpc/bazel/generate_cc.bzl +index 38a5b460f90..d5a4e27bc88 100644 +--- a/third_party/grpc/bazel/generate_cc.bzl ++++ b/third_party/grpc/bazel/generate_cc.bzl +@@ -123,6 +123,7 @@ def generate_cc_impl(ctx): + outputs = out_files, + executable = ctx.executable.protoc, + arguments = arguments, ++ use_default_shell_env = True, + ) + + return struct(files = depset(out_files)) diff --git a/Golden_Repo/b/Bazel/Bazel-3.7.1_fix-protobuf-env.patch b/Golden_Repo/b/Bazel/Bazel-3.7.1_fix-protobuf-env.patch new file mode 100644 index 0000000000000000000000000000000000000000..0e110a6723ddfcdf2db6035627a65baeda6535fd --- /dev/null +++ b/Golden_Repo/b/Bazel/Bazel-3.7.1_fix-protobuf-env.patch @@ -0,0 +1,20 @@ +diff --git a/third_party/protobuf/3.13.0.patch b/third_party/protobuf/3.13.0.patch +index bde8684b82..3336ef4024 100644 +--- a/third_party/protobuf/3.13.0.patch ++++ b/third_party/protobuf/3.13.0.patch +@@ -38,3 +38,15 @@ index cfdb28e2e..3705fdbe3 100644 + + "@io_bazel//third_party:gson", + ], + ) ++diff --git a/protobuf.bzl b/protobuf.bzl ++index 050eafc54..12d3edb94 100644 ++--- a/protobuf.bzl +++++ b/protobuf.bzl ++@@ -352,6 +352,7 @@ def _internal_gen_well_known_protos_java_impl(ctx): ++ inputs = descriptors, ++ outputs = [srcjar], ++ arguments = [args], +++ use_default_shell_env = True, ++ ) ++ ++ return [ diff --git a/Golden_Repo/b/Bazel/Bazel-3.7.2-GCCcore-11.2.0.eb b/Golden_Repo/b/Bazel/Bazel-3.7.2-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..405a1849b9574df36e8d6d0e6086de37ed617a62 --- /dev/null +++ b/Golden_Repo/b/Bazel/Bazel-3.7.2-GCCcore-11.2.0.eb @@ -0,0 +1,32 @@ +name = 'Bazel' +version = '3.7.2' + +homepage = 'https://bazel.io/' +description = """Bazel is a build tool that builds code quickly and reliably. +It is used to build the majority of Google's software.""" + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [ + 'https://github.com/bazelbuild/%(namelower)s/releases/download/%(version)s'] +sources = ['%(namelower)s-%(version)s-dist.zip'] +patches = [ + '%(name)s-3.4.1-fix-grpc-protoc.patch', + 'java15.patch', + '%(name)s-3.7.1_fix-protobuf-env.patch', + 'gcc11-bazel-3.7.2.patch', + 'gcc11-2-bazel-3.7.2.patch', + +] + +builddependencies = [ + ('binutils', '2.37'), + ('Python', '3.9.6'), + ('Zip', '3.0'), +] + +prebuildopts = "export BAZEL_LINKOPTS=-static-libstdc++:-static-libgcc BAZEL_LINKLIBS=-l%:libstdc++.a:-lm && " +configopts = "--host_jvm_args=--illegal-access=permit" +dependencies = [('Java', '15', '', True)] + +moduleclass = 'devel' diff --git a/Golden_Repo/b/Bazel/gcc11-2-bazel-3.7.2.patch b/Golden_Repo/b/Bazel/gcc11-2-bazel-3.7.2.patch new file mode 100644 index 0000000000000000000000000000000000000000..c7ceaa8431896ef16be2ba07dd1872bd236229ca --- /dev/null +++ b/Golden_Repo/b/Bazel/gcc11-2-bazel-3.7.2.patch @@ -0,0 +1,10 @@ +--- src/third_party/ijar/mapped_file.h.orig 2021-11-05 15:56:24.654184777 +0100 ++++ src/third_party/ijar/mapped_file.h 2021-11-05 15:56:33.879015290 +0100 +@@ -16,6 +16,7 @@ + #define INCLUDED_THIRD_PARTY_IJAR_MAPPED_FILE_H + + #include "third_party/ijar/common.h" ++#include <limits> + + namespace devtools_ijar { + diff --git a/Golden_Repo/b/Bazel/gcc11-bazel-3.7.2.patch b/Golden_Repo/b/Bazel/gcc11-bazel-3.7.2.patch new file mode 100644 index 0000000000000000000000000000000000000000..b46eda7383680741f1b2a497704de3b7c303a602 --- /dev/null +++ b/Golden_Repo/b/Bazel/gcc11-bazel-3.7.2.patch @@ -0,0 +1,10 @@ +--- src/third_party/ijar/zlib_client.h.orig 2021-11-05 15:39:58.061336981 +0100 ++++ src/third_party/ijar/zlib_client.h 2021-11-05 15:40:22.650877105 +0100 +@@ -16,6 +16,7 @@ + #define THIRD_PARTY_IJAR_ZLIB_CLIENT_H_ + + #include <limits.h> ++#include <limits> + + #include "third_party/ijar/common.h" + diff --git a/Golden_Repo/b/Bazel/java15.patch b/Golden_Repo/b/Bazel/java15.patch new file mode 100644 index 0000000000000000000000000000000000000000..6fc6a95634e69a17caa9e08ba524079bedc13c6f --- /dev/null +++ b/Golden_Repo/b/Bazel/java15.patch @@ -0,0 +1,29 @@ +From 0216ee54417fa1f2fef14f6eb14cbc1e8f595821 Mon Sep 17 00:00:00 2001 +From: philwo <philwo@google.com> +Date: Mon, 8 Feb 2021 10:45:50 -0800 +Subject: [PATCH] Fix Bazel #10214: JDK 13 introduced a source compatibility + issue. + +Quote from the Java release notes: + +The addition of newFileSystem(Path, Map<String, ?>) creates a source (but not binary) compatibility issue for code that has been using the existing 2-arg newFileSystem(Path, ClassLoader) and specifying the class loader as null. [...] To avoid the ambiguous reference, this code needs to be modified to cast the second parameter to java.lang.ClassLoader. + +RELNOTES: +PiperOrigin-RevId: 356301318 +--- + .../com/google/devtools/build/buildjar/VanillaJavaBuilder.java | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java +index 327017362626..5edf9ba0cf23 100644 +--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java ++++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/VanillaJavaBuilder.java +@@ -77,7 +77,7 @@ + private FileSystem getJarFileSystem(Path sourceJar) throws IOException { + FileSystem fs = filesystems.get(sourceJar); + if (fs == null) { +- filesystems.put(sourceJar, fs = FileSystems.newFileSystem(sourceJar, null)); ++ filesystems.put(sourceJar, fs = FileSystems.newFileSystem(sourceJar, (ClassLoader) null)); + } + return fs; + } \ No newline at end of file diff --git a/Golden_Repo/c/CFITSIO/CFITSIO-4.0.0-GCCcore-11.2.0.eb b/Golden_Repo/c/CFITSIO/CFITSIO-4.0.0-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..418a7ab9b3c36952b3b012c0182e57a0841ee65a --- /dev/null +++ b/Golden_Repo/c/CFITSIO/CFITSIO-4.0.0-GCCcore-11.2.0.eb @@ -0,0 +1,38 @@ +easyblock = 'ConfigureMake' + +name = 'CFITSIO' +version = '4.0.0' + +homepage = 'http://heasarc.gsfc.nasa.gov/fitsio/' +description = """CFITSIO is a library of C and Fortran subroutines for reading and writing data files in +FITS (Flexible Image Transport System) data format. +""" + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/'] +sources = ['%%(namelower)s-%s.tar.gz' % version] +patches = ['CFITSIO-4.0.0_install_test_data.patch'] + +dependencies = [('cURL', '7.78.0')] + + +builddependencies = [ + ('binutils', '2.37'), +] + +# make would create just static libcfitsio.a. +# Let's create dynamic lib and testprog too. +buildopts = '&& make shared && make testprog' + +sanity_check_paths = { + 'files': ['lib/libcfitsio.a', 'lib/libcfitsio.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +sanity_check_commands = [ + ('cd %(installdir)s/share && testprog'), +] + +moduleclass = 'lib' diff --git a/Golden_Repo/c/CFITSIO/CFITSIO-4.0.0_install_test_data.patch b/Golden_Repo/c/CFITSIO/CFITSIO-4.0.0_install_test_data.patch new file mode 100644 index 0000000000000000000000000000000000000000..7437760d4d28a784837d940a78eafd5b0a5d8077 --- /dev/null +++ b/Golden_Repo/c/CFITSIO/CFITSIO-4.0.0_install_test_data.patch @@ -0,0 +1,13 @@ +--- Makefile.in.orig 2021-11-05 17:08:01.927879000 +0100 ++++ Makefile.in 2021-11-05 17:08:42.545401000 +0100 +@@ -31,8 +31,9 @@ + CFITSIO_BIN = ${DESTDIR}@bindir@ + CFITSIO_LIB = ${DESTDIR}@libdir@ + CFITSIO_INCLUDE = ${DESTDIR}@includedir@ +-INSTALL_DIRS = ${DESTDIR}@INSTALL_ROOT@ ${CFITSIO_INCLUDE} ${CFITSIO_LIB} ${CFITSIO_LIB}/pkgconfig ++CFITSIO_DATADIR = ${DESTDIR}@datadir@ + ++INSTALL_DIRS = ${DESTDIR}@INSTALL_ROOT@ ${CFITSIO_INCLUDE} ${CFITSIO_LIB} ${CFITSIO_LIB}/pkgconfig ${CFITSIO_DATADIR} + + SHELL = /bin/sh + ARCHIVE = @ARCHIVE@ diff --git a/Golden_Repo/l/libelf/libelf-0.8.13-GCCcore-11.2.0.eb b/Golden_Repo/l/libelf/libelf-0.8.13-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..27e93f02b05ad70002405aeadbcfdf4cfcb22360 --- /dev/null +++ b/Golden_Repo/l/libelf/libelf-0.8.13-GCCcore-11.2.0.eb @@ -0,0 +1,33 @@ +easyblock = 'ConfigureMake' + +name = 'libelf' +version = '0.8.13' + +homepage = 'https://web.archive.org/web/20190223180146/http://www.mr511.de/software/english.html' +# The original existed here http://www.mr511.de/software/english.html' +# The only available source code is for an earlier version at https://github.com/WolfgangSt/libelf +description = """libelf is a free ELF object file access library +""" + + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [ + # source is actually a tar named as tar.gz, will fail. Download the source and gzip it + 'https://web.archive.org/web/20170808201535/http://www.mr511.de/software/', + 'https://fossies.org/linux/misc/old/' +] +sources = [SOURCE_TAR_GZ] + +builddependencies = [ + ('binutils', '2.37') +] + +modextrapaths = {'CPATH': 'include/libelf'} + +sanity_check_paths = { + 'files': ['lib/libelf.a', 'lib/libelf.%s' % SHLIB_EXT, 'lib/libelf.so.0', 'include/libelf/libelf.h'], + 'dirs': ['lib/pkgconfig'] +} + +moduleclass = 'devel' diff --git a/Golden_Repo/l/libgd/libgd-2.3.1-GCCcore-11.2.0.eb b/Golden_Repo/l/libgd/libgd-2.3.1-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..764d8744e3b76711a698c13374a19304a6c4a67b --- /dev/null +++ b/Golden_Repo/l/libgd/libgd-2.3.1-GCCcore-11.2.0.eb @@ -0,0 +1,34 @@ +easyblock = 'ConfigureMake' + +name = 'libgd' +version = '2.3.1' + +homepage = 'https://github.com/libgd' +description = """GD is an open source code library for the dynamic creation of +images by programmers. +""" + + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [ + 'https://github.com/libgd/libgd/releases/download/gd-%(version)s/'] +sources = [SOURCELOWER_TAR_GZ] + +builddependencies = [ + ('binutils', '2.37'), +] + +dependencies = [ + ('X11', '20210802'), + ('libjpeg-turbo', '2.0.6'), + ('libpng', '1.6.37'), + ('zlib', '1.2.11'), +] + +sanity_check_paths = { + 'files': ["lib/libgd.a", "lib/libgd.%s" % SHLIB_EXT], + 'dirs': ["bin", "include"], +} + +moduleclass = 'lib' diff --git a/Golden_Repo/l/libgeotiff/libgeotiff-1.7.0-GCCcore-11.2.0.eb b/Golden_Repo/l/libgeotiff/libgeotiff-1.7.0-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..47812a7eb351167b1c9a8fae3b4ce763ac46d44a --- /dev/null +++ b/Golden_Repo/l/libgeotiff/libgeotiff-1.7.0-GCCcore-11.2.0.eb @@ -0,0 +1,40 @@ +easyblock = 'ConfigureMake' + +name = 'libgeotiff' +version = '1.7.0' + +homepage = 'https://trac.osgeo.org/geotiff/' +description = """Library for reading and writing coordinate system information + from/to GeoTIFF files""" + + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = ['https://download.osgeo.org/geotiff/libgeotiff'] +sources = [SOURCE_TAR_GZ] + +builddependencies = [ + ('binutils', '2.37'), +] + +dependencies = [ + ('PROJ', '8.1.0'), + ('libjpeg-turbo', '2.0.6'), + ('zlib', '1.2.11'), + ('SQLite', '3.36'), + ('LibTIFF', '4.3.0'), + ('cURL', '7.78.0'), +] + +configopts = '--with-libtiff=$EBROOTLIBTIFF' +configopts += ' --with-proj=$EBROOTPROJ ' +configopts += ' --with-zlib=$EBROOTZLIB' +configopts += ' --with-jpeg=$EBROOTLIBJPEGMINTURBO' + +sanity_check_paths = { + 'files': ['bin/listgeo', 'lib/libgeotiff.a', + 'lib/libgeotiff.%s' % SHLIB_EXT], + 'dirs': ['include', 'share'], +} + +moduleclass = 'lib' diff --git a/Golden_Repo/l/libsndfile/libsndfile-1.0.31-GCCcore-11.2.0.eb b/Golden_Repo/l/libsndfile/libsndfile-1.0.31-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..c4d4764785d7392ef3de3756fb2dbd74d8fc7332 --- /dev/null +++ b/Golden_Repo/l/libsndfile/libsndfile-1.0.31-GCCcore-11.2.0.eb @@ -0,0 +1,29 @@ +easyblock = 'ConfigureMake' + +name = 'libsndfile' +version = '1.0.31' + +homepage = 'http://www.mega-nerd.com/libsndfile' +description = """Libsndfile is a C library for reading and writing files +containing sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) +through one standard library interface.""" + + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} + +source_urls = [ + 'https://github.com/libsndfile/libsndfile/releases/download/%(version)s/'] +sources = [SOURCE_TAR_BZ2] +checksums = ['a8cfb1c09ea6e90eff4ca87322d4168cdbe5035cb48717b40bf77e751cc02163'] + +builddependencies = [('binutils', '2.37')] + +configopts = '--enable-octave=no' + +sanity_check_paths = { + 'files': ['include/sndfile.h', 'include/sndfile.hh', 'lib/libsndfile.a', + 'lib/libsndfile.%s' % SHLIB_EXT], + 'dirs': ['bin'], +} + +moduleclass = 'lib' diff --git a/Golden_Repo/m/Mercurial/Mercurial-5.8-GCCcore-11.2.0-Python-3.9.6.eb b/Golden_Repo/m/Mercurial/Mercurial-5.8-GCCcore-11.2.0-Python-3.9.6.eb new file mode 100644 index 0000000000000000000000000000000000000000..fe24d0faf313fd48337b164b90fc88b73845a926 --- /dev/null +++ b/Golden_Repo/m/Mercurial/Mercurial-5.8-GCCcore-11.2.0-Python-3.9.6.eb @@ -0,0 +1,30 @@ +easyblock = "PythonPackage" + +name = 'Mercurial' +version = '5.8' +versionsuffix = "-Python-%(pyver)s" + +homepage = 'http://mercurial.selenic.com/' +description = """Mercurial is a free, distributed source control management tool. It efficiently handles projects +of any size and offers an easy and intuitive interface. +""" + + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +source_urls = ['http://mercurial-scm.org/release/'] +sources = [SOURCELOWER_TAR_GZ] + +download_dep_fail = True + +builddependencies = [('binutils', '2.37')] + +dependencies = [ + ('Python', '3.9.6') +] + +sanity_check_paths = { + 'files': ['bin/hg'], + 'dirs': ['lib/python%(pyshortver)s/site-packages/mercurial'], +} + +moduleclass = 'tools' diff --git a/Golden_Repo/p/PROJ/PROJ-8.1.0-GCCcore-11.2.0.eb b/Golden_Repo/p/PROJ/PROJ-8.1.0-GCCcore-11.2.0.eb new file mode 100644 index 0000000000000000000000000000000000000000..aa4bca327cc2a839d97c439859befe5c6921ffab --- /dev/null +++ b/Golden_Repo/p/PROJ/PROJ-8.1.0-GCCcore-11.2.0.eb @@ -0,0 +1,40 @@ +## +# This file is an EasyBuild reciPY as per https://github.com/hpcugent/easybuild +# +# Copyright:: Copyright 2014-2015 The Cyprus Institute +# Authors:: Thekla Loizou <t.loizou@cyi.ac.cy> +# License:: MIT/GPL +# +## +easyblock = 'ConfigureMake' + +name = 'PROJ' +version = '8.1.0' + +homepage = 'http://trac.osgeo.org/proj/' +description = """Program proj is a standard Unix filter function which converts +geographic longitude and latitude coordinates into cartesian coordinates +""" + + +toolchain = {'name': 'GCCcore', 'version': '11.2.0'} +toolchainopts = {'pic': True} + +source_urls = ['http://download.osgeo.org/proj/'] +sources = [SOURCELOWER_TAR_GZ] + +builddependencies = [ + ('binutils', '2.37'), + ('SQLite', '3.36'), + ('LibTIFF', '4.3.0'), + ('cURL', '7.78.0'), + ('pkg-config', '0.29.2'), +] + +sanity_check_paths = { + 'files': ['bin/cct', 'bin/cs2cs', 'bin/geod', 'bin/gie', 'bin/proj', + 'bin/projinfo', 'lib/libproj.a', 'lib/libproj.%s' % SHLIB_EXT], + 'dirs': ['include'], +} + +moduleclass = 'lib' diff --git a/bin/gcc11ize.py b/bin/gcc11ize.py index e51b52587daee3897e8a973a6fb540a6c57e5225..1c69f734ad463fb700e4634719b9e557d5e68870 100755 --- a/bin/gcc11ize.py +++ b/bin/gcc11ize.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Try to change from GCC9 to GCC10 +"""Try to change from GCC10 to GCC11 For it, you need @@ -7,38 +7,43 @@ For it, you need """ import argparse -oldGCC = '10.3.0' -newGCC = '11.2.0' -oldMKL = '2021.2.0' -newMKL = '2021.4.0' -oldgomkl = '2021' -newgomkl = '2022' -oldgpsmpi = '2021' -newgpsmpi = '2022' -oldBinutils = '2.36.1' -newBinutils = '2.37' -oldBison = '3.7.6' -newBison = '3.7.6' -oldLibDRM = '2.4.106' -newLibDRM = '2.4.107' -oldJava = '15' -newJava = '15' -oldCMake = "('CMake', '3.18.0')" -newCMake = "('CMake', '3.21.1', '', SYSTEM)" -oldCUDA = '11.3' -newCUDA = '11.5' -oldcuDNN = '8.2.1.32' -newcuDNN = '8.2.2.26' -oldScikit = '2021' -newScikit = '2022' -oldSciPy = '2021' -newSciPy = '2022' -oldprotobuf = '3.14.0' -newprotobuf = '3.17.3' -oldLibxc = '5.1.5' -newLibxc = '5.1.6' -oldPython = '3.8.5' -newPython = '3.9.6' + +releases = { + 'GCC': ['10.3.0', '11.2.0'], + 'CMake': ['3.18.0', '31.21.1'], + 'imkl': ['2021.2.0', '2021.4.0'], + 'gomkl': ['2021', '2022'], + 'gpsmpi': ['2021', '2022'], + 'binutils': ['2.36.1', '2.37'], + 'Bison': ['3.7.6', '3.7.6'], + 'libdrm': ['2.4.106', '2.4.107'], + 'Java': ['15', '15'], + 'CUDA': ['11.3', '11.5'], + 'cuDNN': ['8.2.1.32', '8.2.2.26'], + 'Scikit': ['2021', '2022'], + 'SciPy': ['2021', '2022'], + 'protobuf': ['3.14.0', '3.17.3'], + 'libxc': ['5.1.5', '5.1.6'], + 'Python': ['3.8.5', '3.9.6'], + 'cURL': ['7.71.1', '7.78.0'], + 'PCRE': ['8.44', '8.45'], + 'PCRE2': ['10.34', '10.37'], + 'Qt5': ['5.14.2', '5.15.2'], + 'Ninja': ['1.10.0', '1.10.2'], + 're2c': ['1.3', '2.2'], + 'GLib': ['2.64.4', '2.69.1'], + 'X11': ['20200222', '20210802'], + 'fontconfig': ['2.13.92', '2.13.94'], + 'DBus': ['1.12.20', '1.13.18'], + 'libjpeg-turbo': ['2.0.5', '2.0.6'], + 'NSS': ['3.51', '3.69'], + 'JasPer': ['2.0.19', '2.0.33'], + 'snappy': ['1.1.8', '1.1.9'], + 'PROJ': ['7.1.0', '8.1.0'], + 'SQLite': ['3.32.3', '3.36'], + 'LibTIFF': ['4.1.0', '4.3.0'], + 'libgd': ['2.3.0', '2.3.1'], +} def parse_arguments(): @@ -50,24 +55,29 @@ def parse_arguments(): help='Current version of given software to be replaced') parser.add_argument('-n', metavar='LATESTRELEASE', default="", type=str, help='Most recent version of given software') - parser.add_argument('-s', metavar='SITECONTACTS', default="", type=str, - help='Update site contacts') return parser.parse_args() def updateFileName(fileName, current, latest): + """Tries to bring filename automatically to the latest toolchain""" if current and latest: fileName = fileName.replace(current, latest, 1) if fileName: - fileName = fileName.replace(oldGCC, newGCC, 1) - fileName = fileName.replace(oldMKL, newMKL, 1) - fileName = fileName.replace(oldgomkl, newgomkl, 1) - fileName = fileName.replace(oldgpsmpi, newgpsmpi, 1) + fileName = fileName.replace(releases['GCC'][0], releases['GCC'][1], 1) + fileName = fileName.replace( + releases['imkl'][0], releases['imkl'][1], 1) + fileName = fileName.replace( + releases['gomkl'][0], releases['gomkl'][1], 1) + fileName = fileName.replace( + releases['gpsmpi'][0], releases['gpsmpi'][1], 1) + fileName = fileName.replace( + releases['Python'][0], releases['Python'][1], 1) return fileName -def updateFile(oldName, newName, current, latest, siteContact): +def updateFile(oldName, newName, current, latest): + """Replaces toolchain, cleans up site_contacts and goes through the list of releases with the new one""" if newName is not oldName: newFile = open(newName, 'w') with open(oldName) as file: @@ -78,53 +88,23 @@ def updateFile(oldName, newName, current, latest, siteContact): line = line.replace(current, latest, 1) if line.startswith('toolchain'): print("Fixing toolchain...") - line = line.replace(oldGCC, newGCC, 1) - line = line.replace(oldMKL, newMKL, 1) - line = line.replace(oldgomkl, newgomkl, 1) - if siteContact: - if line.startswith('site_contacts'): - print("Replacing site contacts...") - line = "site_contacts = '%s'" % siteContact - if "binutils" in line: - print("Fixing binutils...") - line = line.replace(oldBinutils, newBinutils) - if "Bison" in line: - print("Fixing Bison...") - line = line.replace(oldBison, newBison) - if "libdrm" in line: - print("Fixing libdrm...") - line = line.replace(oldLibDRM, newLibDRM) - if "Java" in line: - print("Fixing Java...") - line = line.replace(oldJava, newJava) - if "CMake" in line: - print("Fixing Cmake...") - line = line.replace(oldCMake, newCMake) - if "cuda" in line.lower(): # There's cudaver, etc - print("Fixing CUDA...") - line = line.replace(oldCUDA, newCUDA) - if "cuDNN" in line: - print("Fixing cuDNN...") - line = line.replace(oldcuDNN, newcuDNN) - if "scikit" in line: - print("Fixing scikit...") - line = line.replace(oldScikit, newScikit) - if "gcccoremkl" in line: - print("Fixing gcccoremkl") - line = line.replace(oldGCC, newGCC) - line = line.replace(oldMKL, newMKL) - if "SciPy-Stack" in line: - print("Fixing SciPy-Stack") - line = line.replace(oldSciPy, newSciPy) - if "protobuf" in line: - print("Fixing protobuf") - line = line.replace(oldprotobuf, newprotobuf) - if "libxc" in line: - print("Fixing libxc") - line = line.replace(oldLibxc, newLibxc) - if "Python" in line: - print("Fixing Python") - line = line.replace(oldPython, newPython) + line = line.replace( + releases['GCC'][0], releases['GCC'][1], 1) + line = line.replace( + releases['imkl'][0], releases['imkl'][1], 1) + line = line.replace( + releases['gomkl'][0], releases['gomkl'][1], 1) + line = line.replace( + releases['gpsmpi'][0], releases['gpsmpi'][1], 1) + if line.startswith('site_contacts'): + print("Removing site_contacts") + line = "" + for key in releases: + if key in line: + print("Changing", key, "from", + releases[key][0], "to", releases[key][1]) + line = line.replace( + releases[key][0], releases[key][1], 1) newFile.write(line) newFile.close() return True @@ -136,6 +116,7 @@ def updateFile(oldName, newName, current, latest, siteContact): if __name__ == "__main__": args = parse_arguments() newFile = updateFileName(args.i, args.o, args.n) - if updateFile(args.i, newFile, args.o, args.n, args.s): - print("Updated", args.i, ' to GCC', newGCC, 'and to version', args.n) + if updateFile(args.i, newFile, args.o, args.n): + print("Updated", args.i, ' to GCC', + releases['GCC'][1], 'and to version', args.n) print("Run: \n\neb -l %s" % newFile)