Skip to content
Snippets Groups Projects
Select Git revision
  • 27b393f5ec967c6a4dc2c0d36903cdfb58c505e6
  • master default protected
  • enxhi_issue460_remove_TOAR-I_access
  • michael_issue459_preprocess_german_stations
  • sh_pollutants
  • develop protected
  • release_v2.4.0
  • michael_issue450_feat_load-ifs-data
  • lukas_issue457_feat_set-config-paths-as-parameter
  • lukas_issue454_feat_use-toar-statistics-api-v2
  • lukas_issue453_refac_advanced-retry-strategy
  • lukas_issue452_bug_update-proj-version
  • lukas_issue449_refac_load-era5-data-from-toar-db
  • lukas_issue451_feat_robust-apriori-estimate-for-short-timeseries
  • lukas_issue448_feat_load-model-from-path
  • lukas_issue447_feat_store-and-load-local-clim-apriori-data
  • lukas_issue445_feat_data-insight-plot-monthly-distribution
  • lukas_issue442_feat_bias-free-evaluation
  • lukas_issue444_feat_choose-interp-method-cams
  • 414-include-crps-analysis-and-other-ens-verif-methods-or-plots
  • lukas_issue384_feat_aqw-data-handler
  • v2.4.0 protected
  • v2.3.0 protected
  • v2.2.0 protected
  • v2.1.0 protected
  • Kleinert_etal_2022_initial_submission
  • v2.0.0 protected
  • v1.5.0 protected
  • v1.4.0 protected
  • v1.3.0 protected
  • v1.2.1 protected
  • v1.2.0 protected
  • v1.1.0 protected
  • IntelliO3-ts-v1.0_R1-submit
  • v1.0.0 protected
  • v0.12.2 protected
  • v0.12.1 protected
  • v0.12.0 protected
  • v0.11.0 protected
  • v0.10.0 protected
  • IntelliO3-ts-v1.0_initial-submit
41 results

model_setup.py

Blame
  • gcc11ize.py 4.96 KiB
    #!/usr/bin/env python3
    """Try to change from GCC10 to GCC11
    
    For it, you need
    
    - Python3
    """
    
    import argparse
    
    releases = {
        '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'],
    }
    
    
    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)