File indexing completed on 2024-04-21 05:38:35

0001 #!/usr/bin/env python
0002 
0003 import sys, os
0004 from shutil import copyfile
0005 
0006 #--------------------------------------------------
0007 # Change here:
0008 CLAZY_VERSION = '1.12'
0009 CANDIDATE_SHA1 = 'v1.12'
0010 PACKAGE_DIR = '/d/clazy-msvc-package/'
0011 PACKAGE_DIR_WIN = 'd:\\clazy-msvc-package\\'
0012 #--------------------------------------------------
0013 
0014 CLAZY_REPO_URL = "https://invent.kde.org/sdk/clazy.git"
0015 MSVC_VERSION = os.getenv('MSVC_VERSION', '')
0016 LLVM_INSTALL_DIR = os.getenv('LLVM_INSTALL_DIR', '')
0017 CLAZY_WORK_DIR = 'work' + MSVC_VERSION
0018 CLAZY_ZIP_WITHOUT_EXTENSION = "clazy_v%s-msvc%s" % (CLAZY_VERSION, MSVC_VERSION)
0019 CLAZY_ZIP = CLAZY_ZIP_WITHOUT_EXTENSION + '.zip'
0020 CLAZY_SRC_ZIP = "clazy_v%s-src.zip" % CLAZY_VERSION
0021 
0022 
0023 def run_command(cmd, abort_on_error = True):
0024     print(cmd)
0025     success = (os.system(cmd) == 0)
0026     if abort_on_error and not success:
0027         sys.exit(1)
0028 
0029     return success
0030 
0031 def copy(src, dest):
0032     run_command('cp %s %s' % (src, dest))
0033 
0034 def check_env():
0035     if MSVC_VERSION not in ['2019']:
0036         print("Error: Set MSVC_VERSION to a proper value. Exiting...")
0037         sys.exit(1)
0038 
0039     if not LLVM_INSTALL_DIR:
0040         print("Error: Set LLVM_INSTALL_DIR to a proper value. Exiting...")
0041         sys.exit(1)
0042 
0043     run_command('rm -rf ' + PACKAGE_DIR)
0044 
0045 def clone_clazy(sha1, work_dir):
0046     if os.path.exists(work_dir):
0047         run_command("rm -rf " + work_dir)
0048     run_command("git clone %s %s" % (CLAZY_REPO_URL, work_dir))
0049     run_command("git checkout " + sha1)
0050 
0051 def build_clazy():
0052     cmd = 'cmake -DCMAKE_INSTALL_PREFIX=%s -DCMAKE_BUILD_TYPE=Release -DCLANG_LIBRARY_IMPORT=%s\lib\clang.lib -G "Ninja" .' % (LLVM_INSTALL_DIR, LLVM_INSTALL_DIR)
0053     run_command(cmd)
0054     run_command('cmake --build .')
0055     run_command('cmake --build . --target install')
0056 
0057 def copy_files(work_dir):
0058 
0059     if not os.path.exists(PACKAGE_DIR_WIN):
0060         os.mkdir(PACKAGE_DIR_WIN)
0061 
0062     os.mkdir(PACKAGE_DIR_WIN + 'clazy')
0063     os.mkdir(PACKAGE_DIR_WIN + 'clazy/share')
0064     os.mkdir(PACKAGE_DIR_WIN + 'clazy/bin')
0065     os.mkdir(PACKAGE_DIR_WIN + 'clazy/bin/clang')
0066 
0067     copy("../windows-package/clazy-cl.bat", PACKAGE_DIR + 'clazy/bin')
0068     copy("../windows-package/clazy.bat", PACKAGE_DIR + 'clazy/bin')
0069     copy("../windows-package/LICENSE-CLAZY.txt", PACKAGE_DIR + 'clazy')
0070     copy("../windows-package/LICENSE-LLVM.TXT", PACKAGE_DIR + 'clazy')
0071     copy("../windows-package/README.txt", PACKAGE_DIR + 'clazy')
0072     copy("../README.md", PACKAGE_DIR + 'clazy/README-CLAZY.md')
0073     copy(LLVM_INSTALL_DIR + '/bin/clang.exe', PACKAGE_DIR + 'clazy/bin/clang/')
0074     copy(LLVM_INSTALL_DIR + '/bin/clang-apply-replacements.exe', PACKAGE_DIR + 'clazy/bin/clang/')
0075     copy(LLVM_INSTALL_DIR + '/bin/clang.exe', PACKAGE_DIR + 'clazy/bin/clang/clang-cl.exe')
0076     copy(LLVM_INSTALL_DIR + '/bin/ClazyPlugin.dll', PACKAGE_DIR + 'clazy/bin/clang/')
0077     copy(LLVM_INSTALL_DIR + '/bin/clazy-standalone.exe', PACKAGE_DIR + 'clazy/bin/clang/')
0078 
0079     run_command("cp -r %s/lib/clang/ %s" % (LLVM_INSTALL_DIR, PACKAGE_DIR + 'clazy/bin/lib/'))
0080     run_command("cp -r %s/share/doc/ %s" %  (LLVM_INSTALL_DIR, PACKAGE_DIR + 'clazy/share/'))
0081     run_command('unix2dos %s' % PACKAGE_DIR + 'clazy/bin/clazy-cl.bat')
0082     run_command('unix2dos %s' % PACKAGE_DIR + 'clazy/bin/clazy.bat')
0083 
0084 def zip_package():
0085     os.chdir(PACKAGE_DIR_WIN)
0086     run_command('zip -r %s clazy/' % (CLAZY_ZIP))
0087     run_command('rm -rf clazy')
0088 
0089     run_command('wget --no-check-certificate https://github.com/KDE/clazy/archive/%s.zip -O %s' % (CANDIDATE_SHA1, CLAZY_SRC_ZIP))
0090     run_command('sha1sum %s > sums.txt' % CLAZY_ZIP)
0091     run_command('sha256sum %s >> sums.txt' % CLAZY_ZIP)
0092     run_command('sha1sum %s >> sums.txt' % CLAZY_SRC_ZIP)
0093     run_command('sha256sum %s >> sums.txt' % CLAZY_SRC_ZIP)
0094 
0095     run_command("unzip %s -d %s" % (CLAZY_ZIP, CLAZY_ZIP_WITHOUT_EXTENSION))
0096     print("Don't forget to delete %s after testing" % CLAZY_ZIP_WITHOUT_EXTENSION)
0097     os.chdir('..')
0098 
0099 check_env()
0100 clone_clazy(CANDIDATE_SHA1, CLAZY_WORK_DIR)
0101 os.chdir(CLAZY_WORK_DIR)
0102 build_clazy()
0103 copy_files(CLAZY_WORK_DIR)
0104 zip_package()