From 045ef9a71545d2a57d79aba1cabf0a9ae5540788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Fri, 24 Aug 2018 21:07:50 +0200 Subject: [PATCH] Donate CPU: More updates. Run both 1.84 and head. --- tools/donate-cpu-server.py | 2 +- tools/donate-cpu.py | 52 +++++++++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/tools/donate-cpu-server.py b/tools/donate-cpu-server.py index e530dfb15..1caf33519 100644 --- a/tools/donate-cpu-server.py +++ b/tools/donate-cpu-server.py @@ -65,7 +65,7 @@ while True: f.write(strDateTime() + '\n' + data[pos+1:]) f.close() else: - print('[' + strDateTime() + '] invalid cmd') + print('[' + strDateTime() + '] invalid command: ' + cmd) finally: connection.close() diff --git a/tools/donate-cpu.py b/tools/donate-cpu.py index ee3f50f62..69cfb6c78 100644 --- a/tools/donate-cpu.py +++ b/tools/donate-cpu.py @@ -43,6 +43,21 @@ def getCppcheck(cppcheckPath): return True +def compile_version(workPath, version): + if os.path.isfile(workPath + '/' + version + '/cppcheck'): + return + os.chdir(workPath + '/cppcheck') + subprocess.call(['git', 'checkout', version]) + subprocess.call(['make', 'clean']) + subprocess.call(['make', 'SRCDIR=build', 'CXXFLAGS=-O2']) + if os.path.isfile(workPath + '/cppcheck/cppcheck'): + os.mkdir(workpath + '/' + version) + destPath = workpath + '/' + version + '/' + subprocess.call(['cp', '-R', workPath + '/cppcheck/cfg', destPath]) + subprocess.call(['cp', 'cppcheck', destPath]) + subprocess.call(['git', 'checkout', 'master']) + + def compile(cppcheckPath): print('Compiling Cppcheck..') try: @@ -69,6 +84,7 @@ def getPackage(): def wget(url, destfile): + subprocess.call(['rm', '-f', destfile]) subprocess.call( ['wget', '--tries=10', '--timeout=300', '-O', destfile, url]) if os.path.isfile(destfile): @@ -77,21 +93,30 @@ def wget(url, destfile): time.sleep(10) return False -def scanPackage(workPath, package): + +def downloadPackage(workPath, package): print('Download package ' + package) destfile = workPath + '/temp.tgz' - tempPath = workPath + '/temp' - subprocess.call(['rm', '-rf', tempPath, destfile]) if not wget(package, destfile): if not wget(package, destfile): return None + return destfile + + +def unpackPackage(workPath, tgz): print('Unpacking..') + tempPath = workPath + '/temp' + subprocess.call(['rm', '-rf', tempPath]) os.mkdir(tempPath) os.chdir(tempPath) - subprocess.call(['tar', 'xzvf', destfile]) + subprocess.call(['tar', 'xzvf', tgz]) os.chdir(workPath) + + +def scanPackage(workPath, cppcheck): print('Analyze..') - cmd = 'nice ' + workPath + '/cppcheck/cppcheck -D__GCC__ --enable=style --library=posix --platform=unix64 --template=daca2 -rp=temp temp' + os.chdir(workPath) + cmd = 'nice ' + cppcheck + ' -D__GCC__ --enable=style --library=posix --platform=unix64 --template=daca2 -rp=temp temp' print(cmd) p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE) comm = p.communicate() @@ -106,6 +131,7 @@ def scanPackage(workPath, package): print('Number of issues: ' + str(count)) return errout + def uploadResults(package, results): print('Uploading results..') sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -131,12 +157,26 @@ while True: if not getCppcheck(cppcheckPath): print('Failed to clone Cppcheck, retry later') sys.exit(1) + compile_version(workpath, '1.84') if compile(cppcheckPath) == False: print('Failed to compile Cppcheck, retry later') sys.exit(1) package = getPackage() - results = scanPackage(workpath, package) + tgz = downloadPackage(workpath, package) + unpackPackage(workpath, tgz) + results = None + for cppcheck in ['cppcheck/cppcheck', '1.84/cppcheck']: + cmd = workpath + '/' + cppcheck + if not os.path.isfile(cmd): + continue + res = scanPackage(workpath, cmd) + if res: + if results is None: + results = '' + results += 'cppcheck:' + cppcheck + '\n' + res if results is None: print('No results to upload') else: uploadResults(package, results) + print('Results are uploaded') + time.sleep(2)