Select Git revision
gcd_w_concepts.cc
gcc11ize.py 21.52 KiB
#!/usr/bin/env python3
"""Try to change from GCC11.2 to GCC11.3
For it, you need
- Python3
"""
import argparse
releases = {
'ABINIT': ['9.6.2', '9.6.2'],
'ACTC': ['1.1', '1.1'],
'ADIOS2': ['2.7.1', '2.7.1'],
'Advisor': ['2021.4.0', '2021.4.0'],
'AMBER': ['20', '20'],
'ant-java': ['1.10.12', '1.10.12'],
'ANTLR': ['2.7.7', '2.7.7'],
'AOCC': ['3.1.0', '3.1.0'],
'AOCC': ['3.2.0', '3.2.0'],
'Apptainer-Tools': ['2022', '2022'],
'APR': ['1.7.0', '1.7.0'],
'APR-util': ['1.6.1', '1.6.1'],
'archspec': ['0.1.3', '0.1.3'],
'ARMForge': ['21.1.2', '21.1.2'],
'ARPACK-NG': ['3.8.0', '3.8.0'],
'ASE': ['3.22.0', '3.22.0'],
'ATK': ['2.36.0', '2.36.0'],
'AT-SPI2-ATK': ['2.38.0', '2.38.0'],
'AT-SPI2-core': ['2.40.3', '2.40.3'],
'Autoconf': ['2.71', '2.71'],
'Automake': ['1.16.4', '1.16.5'],
'Autotools': ['20210726', '20220317'],
'archspec': ['0.1.3', '0.1.4'],
'Bazel': ['3.7.2', '3.7.2'],
'BeautifulSoup': ['4.10.0', '4.10.0'],
'binutils': ['2.37', '2.38'],
'Biopython': ['1.79', '1.79'],
'Bison': ['3.6.4', '3.7.6'],
'Blender': ['3.1.2', '3.1.2'],
'BLIS': ['0.8.1', '0.9.0'],
'Blosc': ['1.21.1', '1.21.1'],
'bokeh': ['2.4.1', '2.4.1'],
'Boost': ['1.78.0', '1.78.0'],
'Boost.Python': ['1.78.0', '1.78.0'],
'Brotli': ['1.0.9', '1.0.9'],
'bzip2': ['1.0.8', '1.0.8'],
'cairo': ['1.16.0', '1.16.0'],
'Cartopy': ['0.20.0', '0.20.0'],
'ccache': ['4.3', '4.3'],
'CDO': ['2.0.2', '2.0.2'],
'ceres-solver': ['2.0.0', '2.0.0'],
'CFITSIO': ['4.0.0', '4.0.0'],
'CGAL': ['5.2', '5.2'],
'CGNS': ['4.2.0', '4.2.0'],
'Cirq': ['0.13.1', '0.14.1'],
'Cirq': ['0.14.1', '0.14.1'],
'Clang': ['13.0.1', '13.0.1'],
'Cling': ['0.9', '0.9'],
'CMake': ['3.23.1', '3.23.1'],
'Code_Saturne': ['7.0.2', '7.0.2'],
'Colmap': ['3.7', '3.7'],
'CoordgenLibs': ['3.0.1', '3.0.1'],
'Coreutils': ['9.0', '9.0'],
'CP2K': ['9.1.0', '9.1.0'],
'CPMD': ['4.3', '4.3'],
'cppcheck': ['2.6', '2.6'],
'cppy': ['1.1.0', '1.1.0'],
'CUDA': ['11.5', '11.7.0'],
'cuDNN': ['8.3.1.22', '8.6.0.163'],
'cURL': ['7.78.0', '7.78.0'],
'cuTENSOR': ['1.4.0.6', '1.4.0.6'],
'CVS': ['1.11.23', '1.11.23'],
'CVXOPT': ['1.2.7', '1.2.7'],
'darshan-runtime': ['3.4.0', '3.4.0'],
'darshan-util': ['3.4.0', '3.4.0'],
'dask': ['2021.9.1', '2021.9.1'],
'DB': ['18.1.40', '18.1.40'],
'DBus': ['1.13.18', '1.14.0'],
'distributed': ['2.30.1', '2.30.1'],
'double-conversion': ['3.1.6', '3.1.6'],
'Doxygen': ['1.9.1', '1.9.1'],
'DWave': ['4.2.0', '4.2.0'],
'ecCodes': ['2.22.1', '2.22.1'],
'Eigen': ['3.3.9', '3.4.0'],
'elfutils': ['0.185', '0.185'],
'ELPA': ['2021.11.001', '2021.11.001'],
'Emacs': ['27.1', '27.1'],
'Embree': ['3.13.2', '3.13.2'],
'ESMF': ['8.2.0', '8.2.0'],
'eudev': ['3.2.9', '3.2.9'],
'Exiv2': ['0.27.5', '0.27.5'],
'expat': ['2.4.1', '2.4.1'],
'expecttest': ['0.1.3', '0.1.3'],
'Extrae': ['3.8.3', '3.8.3'],
'FFmpeg': ['4.4.1', '4.4.2'],
'FFTW': ['3.3.10', '3.3.10'],
'Fiona': ['1.8.20', '1.8.20'],
'Flask': ['2.0.2', '2.0.2'],
'flatbuffers': ['2.0.0', '2.0.0'],
'flatbuffers-python': ['2.0', '2.0'],
'flex': ['2.6.4', '2.6.4'],
'FLINT': ['2.7.1', '2.7.1'],
'FLTK': ['1.3.7', '1.3.7'],
'fmt': ['8.1.1', '8.1.1'],
'fontconfig': ['2.13.94', '2.13.94'],
'freeglut': ['3.2.1', '3.2.1'],
'FreeImage': ['3.18.0', '3.18.0'],
'FreeSurfer': ['7.1.1', '7.1.1'],
'freetype': ['2.11.0', '2.11.0'],
'FriBidi': ['1.0.10', '1.0.12'],
'g2clib': ['1.6.3', '1.6.3'],
'g2lib': ['3.2.0', '3.2.0'],
'gc': ['8.2.0', '8.2.0'],
'GCC': ['11.2.0', '11.3.0'],
'GDAL': ['3.3.2', '3.3.2'],
'GDB': ['11.1', '11.1'],
'Gdk-Pixbuf': ['2.42.6', '2.42.6'],
'GEOS': ['3.9.1', '3.9.1'],
'gettext': ['0.21', '0.21'],
'gflags': ['2.2.2', '2.2.2'],
'Ghostscript': ['9.54.0', '9.54.0'],
'giflib': ['5.2.1', '5.2.1'],
'git': ['2.33.1', '2.33.1'],
'git-lfs': ['2.11.0', '2.11.0'],
'GL2PS': ['1.4.2', '1.4.2'],
'GLib': ['2.69.1', '2.69.1'],
'GLM': ['0.9.9.8', '0.9.9.8'],
'glog': ['0.5.0', '0.5.0'],
'GLPK': ['5.0', '5.0'],
'GMP': ['6.2.1', '6.2.1'],
'gmpy2': ['2.1.0b5', '2.1.0b5'],
'gnuplot': ['5.4.2', '5.4.2'],
'GObject-Introspection': ['1.68-0', '1.68-0'],
'Go': ['1.17.3', '1.17.3'],
'gomkl': ['2021b', '2021b'],
'gompi': ['2021b', '2021b'],
'GPAW': ['21.6.0', '21.6.0'],
'GPAW-setups': ['0.9.9672', '0.9.9672'],
'gperf': ['3.1', '3.1'],
'GPicView': ['0.2.5', '0.2.5'],
'gpsmkl': ['2021b', '2021b'],
'gpsmpi': ['2021b', '2021b'],
'Grace': ['5.1.25', '5.1.25'],
'GraphicsMagick': ['1.3.36', '1.3.36'],
'Graphviz': ['2.49.3', '2.49.3'],
'groff': ['1.22.4', '1.22.4'],
'GROMACS': ['2021.4', '2021.4'],
'gsettings-desktop-schemas': ['3.34.0', '3.34.0'],
'GSL': ['2.7', '2.7'],
'GStreamer': ['1.18.6', '1.18.6'],
'GTK+': ['3.24.23', '3.24.23'],
'GtkSourceView': ['4.4.0', '4.4.0'],
'GTS': ['0.7.6', '0.7.6'],
'guile': ['2.0.14', '2.0.14'],
'guile': ['3.0.7', '3.0.7'],
'gzip': ['1.10', '1.12'],
'h5py': ['3.5.0', '3.5.0'],
'HarfBuzz': ['2.8.2', '2.8.2'],
'Harminv': ['1.4.1', '1.4.1'],
'HDF5': ['1.12.1', '1.12.1'],
'HDF': ['4.2.15', '4.2.15'],
'HDFView': ['3.1.3', '3.1.3'],
'help2man': ['1.48.3', '1.48.3'],
'Horovod': ['0.24.3', '0.24.3'],
'Horovod': ['0.25.0', '0.25.0'],
'HTSlib': ['1.14', '1.14'],
'hwloc': ['2.5.0', '2.5.0'],
'hypothesis': ['6.14.6', '6.46.7'],
'Hypre': ['2.23.0', '2.23.0'],
'Hypre': ['2.25.0', '2.25.0'],
'ICU': ['70.1', '70.1'],
'iimpi': ['2021b', '2021b'],
'ImageMagick': ['7.1.0-13', '7.1.0-13'],
'imkl': ['2021.4.0', '2021.4.0'],
'impi': ['2021.4.0', '2021.4.0'],
'Inspector': ['2022.0.0', '2022.0.0'],
'intel-compilers': ['2021.4.0', '2021.4.0'],
'intel': ['2021b', '2021b'],
'intel-para': ['2021b', '2021b'],
'intltool': ['0.51.0', '0.51.0'],
'iomkl': ['2021b', '2021b'],
'iompi': ['2021b', '2021b'],
'ipp': ['2021.5.1', '2021.5.1'],
'ipsmpi': ['2021b', '2021b'],
'IRkernel': ['1.3', '1.3'],
'ISL': ['0.24', '0.24'],
'ispc': ['1.16.1', '1.16.1'],
'itac': ['2021.5.0', '2021.5.0'],
'ITK': ['5.2.1', '5.2.1'],
'ITSTool': ['2.0.7', '2.0.7'],
'Java': ['15', '15'],
'jax': ['0.3.14', '0.3.14'],
'jbigkit': ['2.1', '2.1'],
'jemalloc': ['5.2.1', '5.2.1'],
'JsonCpp': ['1.9.4', '1.9.4'],
'Julia': ['1.7.1', '1.7.1'],
'kim-api': ['2.2.1', '2.2.1'],
'LAME': ['3.100', '3.100'],
'LAMMPS': ['7Jan2022', '7Jan2022'],
'LCov': ['1.15', '1.15'],
'libaec': ['1.0.6', '1.0.6'],
'libaio': ['0.3.112', '0.3.112'],
'libarchive': ['3.5.1', '3.5.1'],
'libcerf': ['1.17', '1.17'],
'libcint': ['4.4.0', '4.4.0'],
'libcroco': ['0.6.13', '0.6.13'],
'libctl': ['4.5.1', '4.5.1'],
'libdap': ['3.20.8', '3.20.8'],
'libdeflate': ['1.10', '1.10'],
'libdrm': ['2.4.108', '2.4.108'],
'libdwarf': ['20210528', '20210528'],
'libelf': ['0.8.13', '0.8.13'],
'libepoxy': ['1.5.9', '1.5.9'],
'libevent': ['2.1.12', '2.1.12'],
'libffi': ['3.4.2', '3.4.2'],
'libgd': ['2.3.1', '2.3.1'],
'libGDSII': ['0.21', '0.21'],
'libgeotiff': ['1.7.0', '1.7.0'],
'libgit2': ['1.1.1', '1.1.1'],
'libglvnd': ['1.3.3', '1.3.3'],
'libiconv': ['1.16', '1.16'],
'Libint': ['2.7.0-beta.6', '2.7.0-beta.6'],
'libjpeg-turbo': ['2.1.1', '2.1.3'],
'libreadline': ['8.0', '8.1'],
'librsvg': ['2.48.8', '2.51.2'],
'LibTIFF': ['4.3.0', '4.3.0'],
'libunwind': ['1.4,0', '1.5.0'],
'libxc': ['5.1.5', '5.1.6'],
'libxml2': ['2.9.10', '2.9.13'],
'libyaml': ['0.2.5', '0.2.5'],
'LAME': ['3.100', '3.100'],
'LLVM': ['10.0.1', '13.0.0'],
'lz4': ['1.9.3', '1.9.3'],
'M4': ['1.4.18', '1.4.19'],
'magma': ['2.6.1', '2.6.2'],
'Mako': ['1.1.3', '1.1.4'],
'matplotlib': ['3.4.2', '3.4.3'],
'Meson': ['0.55.0', '0.58.2'],
'MPFR': ['4.1.0', '4.1.0'],
'NASM': ['2.15.03', '2.15.05'],
'NSS': ['3.51', '3.69'],
'netCDF': ['4.7.4', '4.8.1'],
'numactl': ['2.0.14', '2.0.15'],
'OpenEXR': ['2.5.2', '3.1.1'],
'OpenGL': ['2020', '2021b'],
'Pango': ['1.44.7', '1.48.8'],
'parallel': ['20201122', '20210722'],
'PCRE2': ['10.34', '10.37'],
'PCRE': ['8.44', '8.45'],
'Perl': ['5.32.0', '5.34.0'],
'pkg-config': ['0.29.2', '0.29.2'],
'pkgconfig': ['1.5.4', '1.5.5'],
'Pillow-SIMD': ['9.0.1', '9.2.0'],
'PROJ': ['7.1.0', '8.1.0'],
'PLUMED': ['2.6.1', '2.7.2'],
'protobuf': ['3.17.3', '3.19.4'],
'protobuf-python': ['3.17.3', '3.19.4'],
'psmpi': ['5.4.9-1', '5.5.0-1'],
'pybind11': ['2.7.1', '2.9.2'],
'pyproj': ['2.6.1.post1', '3.3.0'],
'Python': ['3.8.5', '3.9.6'],
'PyTorch': ['1.8.1', '1.11'],
'PyYAML': ['5.4.1', '6.0'],
'Qhull': ['2020.1', '2020.2'],
'Qt5': ['5.14.2', '5.15.2'],
'RDFlib': ['5.0.0', '6.0.2'],
're2c': ['1.3', '2.2'],
'Rust': ['1.47.0', '1.54.0'],
'scikit': ['2021', '2022'],
'SciPy-Stack': ['2021', '2021b'],
'SciPy-bundle': ['2021.10', '22.05'],
'Shapely': ['1.7.1', '1.8.0'],
'SuiteSparse': ['5.7.1', '5.10.1'],
'snappy': ['1.1.8', '1.1.9'],
'SQLite': ['3.32.3', '3.36'],
'Tcl': ['8.6.10', '8.6.11'],
'texinfo': ['6.7', '6.8'],
'texlive': ['20200406', '20200406'],
'torchvision': ['0.9.1', '0.12.0'],
'tqdm': ['4.62.3', '4.62.3'],
'trimesh': ['3.8.11', '3.9.36'],
'UDUNITS': ['2.2.26', '2.2.28'],
'uftp': ['1.4.1', '1.4.2'],
'X11': ['20200222', '20210802'],
'x264': ['20210613', '20220620'],
'x265': ['3.4', '3.5'],
'XServer': ['1.20.9', '1.20.13'],
'zlib': ['1.2.11', '1.2.12'],
'zstd': ['1.5.0', '1.5.2'],
}
def parse_arguments():
"""Receives command line input"""
parser = argparse.ArgumentParser(description='Command line options.')
parser.add_argument('-i', metavar='INPUT', default="", type=str,
help='Input File')
parser.add_argument('-o', metavar='OLDRELEASE', default="", type=str,
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')
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(releases['GCC'][0], releases['GCC'][1], 1)
if 'gcccoremkl' in fileName:
fileName = fileName.replace(
releases['imkl'][0], releases['imkl'][1], 1)
elif 'gomkl' in fileName:
fileName = fileName.replace(
releases['gomkl'][0], releases['gomkl'][1], 1)
elif 'gpsmpi' in fileName:
fileName = fileName.replace(
releases['gpsmpi'][0], releases['gpsmpi'][1], 1)
elif 'gpsmkl' in fileName:
fileName = fileName.replace(
releases['gpsmkl'][0], releases['gpsmkl'][1], 1)
elif 'ipsmpi' in fileName:
fileName = fileName.replace(
releases['ipsmpi'][0], releases['ipsmpi'][1], 1)
elif 'intel-para' in fileName:
fileName = fileName.replace(
releases['intel-para'][0], releases['intel-para'][1], 1)
fileName = fileName.replace(
'-Python-3.8.5', '', 1)
return fileName
def updateFile(oldName, newName, current, latest):
versionSuffixIsPython = False
"""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:
for line in file:
if current and latest:
if line.startswith('version'):
print("Changing package version...")
line = line.replace(current, latest, 1)
if line.startswith('toolchain'):
print("Fixing toolchain...")
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)
line = line.replace(
releases['ipsmpi'][0], releases['ipsmpi'][1], 1)
line = line.replace(
releases['intel-para'][0], releases['intel-para'][1], 1)
line = line.replace(
releases['gcccoremkl'][0], releases['gcccoremkl'][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)
if line.startswith("versionsuffix = '-Python"):
print("Removing python version suffix")
versionSuffixIsPython = True
line = ''
if versionSuffixIsPython:
line = line.replace(', versionsuffix', '', 1)
newFile.write(line)
newFile.close()
return True
else:
print("Files are the same")
return False
if __name__ == "__main__":
args = parse_arguments()
newFile = updateFileName(args.i, args.o, 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)