QuasarAppCI/BuildBotLib/basemodule.py
2020-02-04 16:40:15 +03:00

96 lines
2.0 KiB
Python

import os
from buildbot.plugins import util
import multiprocessing
import glob
import shutil
from pathlib import Path
class BaseModule:
P_Windows = 'Windows'
P_Linux = 'Linux'
P_Android = 'Android'
def __init__(self, platform):
self.MULTIPLE_SH_COMMAND = ["/bin/bash", "-c"]
self.home = str(Path.home())
self.platform = platform
def isWin(self, step):
return self.platform == BaseModule.P_Windows
def isLinux(self, step):
return self.platform == BaseModule.P_Linux
def isAndroid(self, step):
return self.platform == BaseModule.P_Android
def generateCmd(self, bashString):
if isinstance(bashString, list):
return bashString
return self.MULTIPLE_SH_COMMAND + [bashString]
def getFactory(self):
return util.BuildFactory()
def getRepo(self):
return ""
def getWraper(self, object):
@util.renderer
def cmdWraper(step):
if not callable(object):
return self.generateCmd(object)
return object(step)
return cmdWraper
def getPropertyes(self):
return [
]
def copyRegExp(self, source, dist):
res = []
for file in glob.glob(source):
res.append(file)
shutil.copy(file, dist)
return res
def allSubdirsOf(self, b='.'):
result = []
for d in os.listdir(b):
bd = os.path.join(b, d)
if os.path.isdir(bd):
result.append(bd)
return result
def make(self):
if self.platform == BaseModule.P_Windows:
return 'mingw32-make'
return 'make'
def makeTarget(self, target):
command = [self.make()]
return command + [target]
def makeCommand(self, props):
command = [self.make()]
cpus = multiprocessing.cpu_count()
if cpus:
command.extend(['-j', str(cpus)])
else:
command.extend(['-j', '1'])
return command