Select Git revision
gcc11ize.py
Alexandre Strube authored
gcc11ize.py 6.03 KiB
#!/usr/bin/env python3
"""Try to change from GCC10 to GCC11
For it, you need
- Python3
"""
import argparse
releases = {
'Autotools': ['20200321', '20210726'],
'Coreutils': ['8.32', '9.0'],
'GCC': ['10.3.0', '11.2.0'],
'CMake': ['3.18.0', '3.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'],
'zlib': ['1.2.11', '1.2.11'],
'Meson': ['0.55.0', '0.58.2'],
'pkg-config': ['0.29.2', '0.29.2'],
'flex': ['2.6.4', '2.6.4'],
'libffi': ['3.3', '3.4.2'],
'GObject-Introspection': ['1.64.1', '1.68.0'],
'cairo': ['1.17.2', '1.16.0'],
'ATK': ['2.36.0', '2.36.0'],
'AT-SPI2-core': ['2.36.0', '2.40.3'],
'AT-SPI2-ATK': ['2.34.2', '2.38.0'],
'intltool': ['0.51.0', '0.51.0'],
'GTK+': ['3.24.17', '3.24.23'],
}
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)
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):
"""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)
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
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)