2019-12-13 16:09:43 +03:00
|
|
|
# This Python file uses the following encoding: utf-8
|
|
|
|
|
|
|
|
import BuildBotLib.basemodule as base
|
|
|
|
from buildbot.plugins import util, steps
|
|
|
|
import os
|
2019-12-17 18:35:28 +03:00
|
|
|
from pathlib import Path
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-13 17:05:49 +03:00
|
|
|
LAST_FORMAT = [""]
|
|
|
|
|
2019-12-17 18:35:28 +03:00
|
|
|
AndroidBaseDir = str(Path.home()) + "/Android"
|
2019-12-17 10:37:56 +03:00
|
|
|
|
|
|
|
|
|
|
|
def isInit(step):
|
|
|
|
return step.getProperty('module') == 'init'
|
|
|
|
|
2019-12-13 16:09:43 +03:00
|
|
|
|
|
|
|
@util.renderer
|
2019-12-16 15:48:24 +03:00
|
|
|
def RemoveOldData(props):
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-18 09:42:47 +03:00
|
|
|
res = "mkdir -p " + AndroidBaseDir
|
2019-12-16 15:48:24 +03:00
|
|
|
|
2019-12-17 10:37:56 +03:00
|
|
|
if os.path.exists(AndroidBaseDir):
|
2019-12-18 09:42:47 +03:00
|
|
|
res = "rm -rdf" + AndroidBaseDir
|
|
|
|
res += " & mkdir -p", AndroidBaseDir
|
2019-12-16 15:48:24 +03:00
|
|
|
|
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
|
|
@util.renderer
|
|
|
|
def NDKDownloadCMD(props):
|
|
|
|
link = props.getProperty("link")
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-13 17:00:59 +03:00
|
|
|
format = link[link.rfind('.'):].lower()
|
2019-12-13 17:05:49 +03:00
|
|
|
LAST_FORMAT[0] = format
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-18 09:42:47 +03:00
|
|
|
return "curl " + link + " --output " + AndroidBaseDir + "/temp" + format
|
2019-12-13 16:09:43 +03:00
|
|
|
|
|
|
|
|
|
|
|
@util.renderer
|
|
|
|
def ExtractCMD(props):
|
|
|
|
|
2019-12-13 17:05:49 +03:00
|
|
|
format = LAST_FORMAT[0]
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-18 09:42:47 +03:00
|
|
|
res = "echo format '" + format + "' not supported"
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-13 16:48:52 +03:00
|
|
|
if format == ".zip":
|
2019-12-18 09:42:47 +03:00
|
|
|
res = "unzip " + AndroidBaseDir + "/temp" + format
|
|
|
|
+ " -d " + AndroidBaseDir
|
2019-12-13 16:39:15 +03:00
|
|
|
|
2019-12-16 15:11:58 +03:00
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
|
|
@util.renderer
|
|
|
|
def ConfigureCMD(props):
|
|
|
|
|
|
|
|
module = props.getProperty("module")
|
2019-12-17 10:37:56 +03:00
|
|
|
version = props.getProperty("version")
|
|
|
|
|
2019-12-18 09:42:47 +03:00
|
|
|
res = "sdkmanager "
|
2019-12-17 10:37:56 +03:00
|
|
|
|
|
|
|
unit_to_multiplier = {
|
2019-12-18 09:42:47 +03:00
|
|
|
'SDK': '"platforms;android-'+version+'"',
|
|
|
|
'NDK': '"ndk-bundle"',
|
|
|
|
'buildTools': '"platform-tools;tools;build-tools'+version+'"'
|
2019-12-17 10:37:56 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
return res + unit_to_multiplier[module]
|
|
|
|
|
|
|
|
|
|
|
|
@util.renderer
|
|
|
|
def InstallCMD(props):
|
2019-12-16 15:11:58 +03:00
|
|
|
|
2019-12-17 10:37:56 +03:00
|
|
|
format = LAST_FORMAT[0]
|
|
|
|
|
2019-12-18 09:42:47 +03:00
|
|
|
res = "echo Configure failed"
|
2019-12-16 15:11:58 +03:00
|
|
|
|
|
|
|
if format == ".zip":
|
2019-12-16 14:49:30 +03:00
|
|
|
|
2019-12-17 10:37:56 +03:00
|
|
|
all_subdirs = base.allSubdirsOf(AndroidBaseDir)
|
2019-12-13 18:08:57 +03:00
|
|
|
latest_subdir = max(all_subdirs, key=os.path.getmtime)
|
2019-12-18 09:42:47 +03:00
|
|
|
res = "mv " + latest_subdir + " " + AndroidBaseDir + "/tools"
|
|
|
|
+ " & ln -sf " + AndroidBaseDir + "/tools/bin/sdkmanager "
|
|
|
|
+ str(Path.home()) + "/.local/bin/sdkmanager"
|
2019-12-16 15:11:58 +03:00
|
|
|
|
2019-12-13 16:09:43 +03:00
|
|
|
return res
|
|
|
|
|
|
|
|
|
|
|
|
def getFactory():
|
2019-12-13 17:46:43 +03:00
|
|
|
factory = base.getFactory()
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-16 15:48:24 +03:00
|
|
|
factory.addStep(
|
2019-12-17 19:01:01 +03:00
|
|
|
steps.ShellCommand(
|
2019-12-16 15:48:24 +03:00
|
|
|
command=RemoveOldData,
|
|
|
|
name='rm old item',
|
2019-12-17 10:37:56 +03:00
|
|
|
doStepIf=isInit,
|
2019-12-16 15:48:24 +03:00
|
|
|
description='rm old',
|
2019-12-16 15:54:35 +03:00
|
|
|
haltOnFailure=True,
|
2019-12-16 15:48:24 +03:00
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2019-12-13 16:09:43 +03:00
|
|
|
factory.addStep(
|
2019-12-17 19:01:01 +03:00
|
|
|
steps.ShellCommand(
|
2019-12-13 17:46:43 +03:00
|
|
|
command=NDKDownloadCMD,
|
|
|
|
name='download new item',
|
2019-12-17 10:37:56 +03:00
|
|
|
doStepIf=isInit,
|
2019-12-13 17:46:43 +03:00
|
|
|
description='download new item',
|
2019-12-16 15:54:35 +03:00
|
|
|
haltOnFailure=True,
|
2019-12-13 16:09:43 +03:00
|
|
|
)
|
2019-12-13 17:46:43 +03:00
|
|
|
)
|
2019-12-13 16:09:43 +03:00
|
|
|
|
|
|
|
factory.addStep(
|
2019-12-17 19:01:01 +03:00
|
|
|
steps.ShellCommand(
|
2019-12-13 17:46:43 +03:00
|
|
|
command=ExtractCMD,
|
|
|
|
name='extract new item',
|
2019-12-17 10:37:56 +03:00
|
|
|
doStepIf=isInit,
|
2019-12-13 17:46:43 +03:00
|
|
|
description='extract new item',
|
2019-12-16 15:54:35 +03:00
|
|
|
haltOnFailure=True,
|
2019-12-13 16:09:43 +03:00
|
|
|
)
|
2019-12-13 17:46:43 +03:00
|
|
|
)
|
2019-12-13 16:09:43 +03:00
|
|
|
|
2019-12-16 15:11:58 +03:00
|
|
|
factory.addStep(
|
2019-12-17 19:01:01 +03:00
|
|
|
steps.ShellCommand(
|
2019-12-16 15:11:58 +03:00
|
|
|
command=ConfigureCMD,
|
|
|
|
name='configure new item',
|
2019-12-17 10:37:56 +03:00
|
|
|
doStepIf=isInit,
|
|
|
|
description='configure new item',
|
|
|
|
haltOnFailure=True,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
factory.addStep(
|
2019-12-17 19:01:01 +03:00
|
|
|
steps.ShellCommand(
|
2019-12-17 10:37:56 +03:00
|
|
|
command=InstallCMD,
|
|
|
|
name='install module',
|
|
|
|
doStepIf=lambda step: not isInit(step),
|
2019-12-16 15:11:58 +03:00
|
|
|
description='configure new item',
|
2019-12-16 15:54:35 +03:00
|
|
|
haltOnFailure=True,
|
2019-12-16 15:11:58 +03:00
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2019-12-13 16:09:43 +03:00
|
|
|
return factory
|
|
|
|
|
|
|
|
|
|
|
|
def getRepo():
|
2019-12-13 17:46:43 +03:00
|
|
|
return ""
|
2019-12-13 16:09:43 +03:00
|
|
|
|
|
|
|
|
|
|
|
def getPropertyes():
|
|
|
|
return [
|
|
|
|
util.ChoiceStringParameter(
|
2019-12-13 17:46:43 +03:00
|
|
|
name='module',
|
2019-12-17 10:37:56 +03:00
|
|
|
choices=["init", "SDK", "NDK", "buildTools"],
|
|
|
|
default="init"
|
2019-12-13 17:46:43 +03:00
|
|
|
),
|
|
|
|
|
|
|
|
util.StringParameter(
|
|
|
|
name='link',
|
|
|
|
label="url to download item",
|
|
|
|
default=""
|
2019-12-13 16:09:43 +03:00
|
|
|
),
|
2019-12-17 10:37:56 +03:00
|
|
|
util.StringParameter(
|
|
|
|
name='version',
|
|
|
|
label="Version",
|
|
|
|
default=""
|
|
|
|
),
|
2019-12-13 16:09:43 +03:00
|
|
|
]
|