Added Symbian test configurator
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2405 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
parent
0b262934c6
commit
fee946baa1
|
@ -3,4 +3,5 @@
|
||||||
@rem set EPOCROOT=\Symbian\9.1\S60_3rd_MR_2\
|
@rem set EPOCROOT=\Symbian\9.1\S60_3rd_MR_2\
|
||||||
@rem set EPOCROOT=\Symbian\UIQ3SDK\
|
@rem set EPOCROOT=\Symbian\UIQ3SDK\
|
||||||
@rem set EPOCROOT=\symbian\UIQ3.1\
|
@rem set EPOCROOT=\symbian\UIQ3.1\
|
||||||
|
@rem set EPOCROOT=\symbian\9.2\S60_3rd_FP1\
|
||||||
bldmake bldfiles
|
bldmake bldfiles
|
||||||
|
|
|
@ -336,14 +336,16 @@ class GNUTestBuilder(TestBuilder):
|
||||||
class MSVCTestBuilder(TestBuilder):
|
class MSVCTestBuilder(TestBuilder):
|
||||||
"""\
|
"""\
|
||||||
This class creates list of tests suitable for Visual Studio builds.
|
This class creates list of tests suitable for Visual Studio builds.
|
||||||
|
You need to set the MSVC environment variables (typically by calling
|
||||||
|
vcvars32.bat) prior to running this class.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def __init__(self, config, vs_config="Release|Win32", build_config_name="",
|
def __init__(self, config, target="Release|Win32", build_config_name="",
|
||||||
config_site="", exclude=[], not_exclude=[]):
|
config_site="", exclude=[], not_exclude=[]):
|
||||||
"""\
|
"""\
|
||||||
Parameters:
|
Parameters:
|
||||||
config - BaseConfig instance
|
config - BaseConfig instance
|
||||||
vs_config - Visual Studio build configuration to build.
|
target - Visual Studio build configuration to build.
|
||||||
Sample: "Debug|Win32", "Release|Win32".
|
Sample: "Debug|Win32", "Release|Win32".
|
||||||
build_config_name - Optional name to be added as suffix to the build
|
build_config_name - Optional name to be added as suffix to the build
|
||||||
name. Sample: "Debug", "Release", "IPv6", etc.
|
name. Sample: "Debug", "Release", "IPv6", etc.
|
||||||
|
@ -358,11 +360,11 @@ class MSVCTestBuilder(TestBuilder):
|
||||||
TestBuilder.__init__(self, config, build_config_name=build_config_name,
|
TestBuilder.__init__(self, config, build_config_name=build_config_name,
|
||||||
config_site=config_site, exclude=exclude,
|
config_site=config_site, exclude=exclude,
|
||||||
not_exclude=not_exclude)
|
not_exclude=not_exclude)
|
||||||
self.vs_config = vs_config.lower()
|
self.target = target.lower()
|
||||||
|
|
||||||
def build_tests(self):
|
def build_tests(self):
|
||||||
|
|
||||||
(vsbuild,sys) = self.vs_config.split("|",2)
|
(vsbuild,sys) = self.target.split("|",2)
|
||||||
|
|
||||||
build_name = sys + "-" + vs_get_version() + "-" + vsbuild
|
build_name = sys + "-" + vs_get_version() + "-" + vsbuild
|
||||||
|
|
||||||
|
@ -370,7 +372,7 @@ class MSVCTestBuilder(TestBuilder):
|
||||||
build_name = build_name + "-" + self.build_config_name
|
build_name = build_name + "-" + self.build_config_name
|
||||||
|
|
||||||
vccmd = "vcbuild.exe /nologo /nohtmllog /nocolor /rebuild " + \
|
vccmd = "vcbuild.exe /nologo /nohtmllog /nocolor /rebuild " + \
|
||||||
"pjproject-vs8.sln " + " \"" + self.vs_config + "\""
|
"pjproject-vs8.sln " + " \"" + self.target + "\""
|
||||||
|
|
||||||
suffix = "-i386-win32-vc8-" + vsbuild
|
suffix = "-i386-win32-vc8-" + vsbuild
|
||||||
pjsua = "pjsua_vc8"
|
pjsua = "pjsua_vc8"
|
||||||
|
@ -396,3 +398,89 @@ class MSVCTestBuilder(TestBuilder):
|
||||||
self.ccdash_args.append(args)
|
self.ccdash_args.append(args)
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Symbian test configurator
|
||||||
|
#
|
||||||
|
class SymbianTestBuilder(TestBuilder):
|
||||||
|
"""\
|
||||||
|
This class creates list of tests suitable for Symbian builds. You need to
|
||||||
|
set the command line build settings prior to running this class (typically
|
||||||
|
that involves setting the EPOCROOT variable and current device).
|
||||||
|
|
||||||
|
"""
|
||||||
|
def __init__(self, config, target="gcce urel", build_config_name="",
|
||||||
|
config_site="", exclude=[], not_exclude=[]):
|
||||||
|
"""\
|
||||||
|
Parameters:
|
||||||
|
config - BaseConfig instance
|
||||||
|
target - Symbian target to build. Default is "gcce urel".
|
||||||
|
build_config_name - Optional name to be added as suffix to the build
|
||||||
|
name. Sample: "APS", "VAS", etc.
|
||||||
|
config_site - Contents to be put on config_site.h
|
||||||
|
exclude - List of regular expression patterns for tests
|
||||||
|
that will be excluded from the run
|
||||||
|
not_exclude - List of regular expression patterns for tests
|
||||||
|
that will be run regardless of whether they
|
||||||
|
match the excluded pattern.
|
||||||
|
|
||||||
|
"""
|
||||||
|
TestBuilder.__init__(self, config, build_config_name=build_config_name,
|
||||||
|
config_site=config_site, exclude=exclude,
|
||||||
|
not_exclude=not_exclude)
|
||||||
|
self.target = target.lower()
|
||||||
|
|
||||||
|
def build_tests(self):
|
||||||
|
|
||||||
|
# Check that EPOCROOT is set
|
||||||
|
if not "EPOCROOT" in os.environ:
|
||||||
|
print "Error: EPOCROOT environment variable is not set"
|
||||||
|
sys.exit(1)
|
||||||
|
epocroot = os.environ["EPOCROOT"]
|
||||||
|
# EPOCROOT must have trailing backslash
|
||||||
|
if epocroot[-1] != "\\":
|
||||||
|
epocroot = epocroot + "\\"
|
||||||
|
os.environ["EPOCROOT"] = epocroot
|
||||||
|
sdk1 = epocroot.split("\\")[-2]
|
||||||
|
|
||||||
|
# Check that correct device is set
|
||||||
|
proc = subprocess.Popen("devices", stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.STDOUT, shell=True)
|
||||||
|
sdk2 = ""
|
||||||
|
while True:
|
||||||
|
line = proc.stdout.readline()
|
||||||
|
if line.find("- default") > 0:
|
||||||
|
sdk2 = line.split(":",1)[0]
|
||||||
|
break
|
||||||
|
proc.wait()
|
||||||
|
|
||||||
|
if sdk1 != sdk2:
|
||||||
|
print "Error: default SDK in device doesn't match EPOCROOT"
|
||||||
|
print "Default device SDK =", sdk2
|
||||||
|
print "EPOCROOT SDK =", sdk1
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
build_name = sdk2.replace("_", "-") + "-" + \
|
||||||
|
self.target.replace(" ", "-")
|
||||||
|
|
||||||
|
if self.build_config_name:
|
||||||
|
build_name = build_name + "-" + self.build_config_name
|
||||||
|
|
||||||
|
cmdline = "cmd /C \"cd build.symbian && bldmake bldfiles && abld build %s\"" % (self.target)
|
||||||
|
|
||||||
|
cmds = []
|
||||||
|
cmds.extend(update_ops)
|
||||||
|
cmds.extend([Operation(Operation.BUILD, cmdline)])
|
||||||
|
|
||||||
|
self.ccdash_args = []
|
||||||
|
suffix = ""
|
||||||
|
for c in cmds:
|
||||||
|
c.cmdline = c.cmdline.replace("$SUFFIX", suffix)
|
||||||
|
args = c.encode(self.config.base_dir)
|
||||||
|
args.extend(["-U", self.config.url,
|
||||||
|
"-S", self.config.site,
|
||||||
|
"-T", self.stamp(),
|
||||||
|
"-B", build_name,
|
||||||
|
"-G", self.config.group])
|
||||||
|
args.extend(self.config.options)
|
||||||
|
self.ccdash_args.append(args)
|
||||||
|
|
||||||
|
|
|
@ -23,19 +23,36 @@ import sys
|
||||||
|
|
||||||
# Each configurator must export this function
|
# Each configurator must export this function
|
||||||
def create_builder(args):
|
def create_builder(args):
|
||||||
|
usage = """\
|
||||||
|
Usage:
|
||||||
|
main.py cfg_gnu [-h|--help] [cfg_site]
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
cfg_site: site configuration module. If not specified, "cfg_site"
|
||||||
|
is implied
|
||||||
|
-h, --help Show this help screen
|
||||||
|
|
||||||
|
"""
|
||||||
# (optional) args format:
|
# (optional) args format:
|
||||||
# site configuration module. If not specified, "cfg_site" is implied
|
# site configuration module. If not specified, "cfg_site" is implied
|
||||||
|
|
||||||
if len(args)>0:
|
cfg_site = "cfg_site"
|
||||||
file = args[0]
|
|
||||||
else:
|
|
||||||
file = "cfg_site"
|
|
||||||
|
|
||||||
if os.access(file+".py", os.F_OK) == False:
|
for arg in args:
|
||||||
print "Error: file '%s.py' doesn't exist." % (file)
|
if arg=="-h" or arg=="--help":
|
||||||
|
print usage
|
||||||
|
sys.exit(0)
|
||||||
|
elif arg[0]=="-":
|
||||||
|
print usage
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
cfg_site = arg
|
||||||
|
|
||||||
|
if os.access(cfg_site+".py", os.F_OK) == False:
|
||||||
|
print "Error: file '%s.py' doesn't exist." % (cfg_site)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
cfg_site = __import__(file)
|
cfg_site = __import__(cfg_site)
|
||||||
test_cfg = builder.BaseConfig(cfg_site.BASE_DIR, \
|
test_cfg = builder.BaseConfig(cfg_site.BASE_DIR, \
|
||||||
cfg_site.URL, \
|
cfg_site.URL, \
|
||||||
cfg_site.SITE_NAME, \
|
cfg_site.SITE_NAME, \
|
||||||
|
|
|
@ -23,25 +23,35 @@ import sys
|
||||||
|
|
||||||
# Each configurator must export this function
|
# Each configurator must export this function
|
||||||
def create_builder(args):
|
def create_builder(args):
|
||||||
# (optional) args format:
|
usage = """\
|
||||||
# [cfg_site] [--vs-config VSCFG]
|
Usage:
|
||||||
#
|
main.py cfg_msvc [-h|--help] [-t|--target TARGET] [cfg_site]
|
||||||
# cfg_site: site configuration module. If not specified, "cfg_site"
|
|
||||||
# is implied
|
Arguments:
|
||||||
# VSCFG: Visual Studio build configuration to build. Sample values:
|
cfg_site: site configuration module. If not specified, "cfg_site"
|
||||||
# "Debug|Win32", "Release|Win32". If not specified then
|
is implied
|
||||||
# "Release|Win32" is assumed
|
-t,--target TARGET: Visual Studio build configuration to build. Default is
|
||||||
|
"Release|Win32". Sample values: "Debug|Win32"
|
||||||
|
-h, --help Show this help screen
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
cfg_site = "cfg_site"
|
cfg_site = "cfg_site"
|
||||||
vs_cfg = "Release|Win32"
|
target = "Release|Win32"
|
||||||
in_option = ""
|
in_option = ""
|
||||||
|
|
||||||
for arg in args:
|
for arg in args:
|
||||||
if in_option=="--vs-config":
|
if in_option=="-t":
|
||||||
vs_cfg = arg
|
target = arg
|
||||||
in_option = ""
|
in_option = ""
|
||||||
elif arg=="--vs-config":
|
elif arg=="--target" or arg=="-t":
|
||||||
in_option = arg
|
in_option = "-t"
|
||||||
|
elif arg=="-h" or arg=="--help":
|
||||||
|
print usage
|
||||||
|
sys.exit(0)
|
||||||
|
elif arg[0]=="-":
|
||||||
|
print usage
|
||||||
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
cfg_site = arg
|
cfg_site = arg
|
||||||
|
|
||||||
|
@ -58,7 +68,7 @@ def create_builder(args):
|
||||||
|
|
||||||
builders = [
|
builders = [
|
||||||
builder.MSVCTestBuilder(test_cfg,
|
builder.MSVCTestBuilder(test_cfg,
|
||||||
vs_config=vs_cfg,
|
target=target,
|
||||||
build_config_name="default",
|
build_config_name="default",
|
||||||
config_site="#define PJ_TODO(x)\n",
|
config_site="#define PJ_TODO(x)\n",
|
||||||
exclude=cfg_site.EXCLUDE,
|
exclude=cfg_site.EXCLUDE,
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
#
|
||||||
|
# cfg_symbian.py - Symbian target configurator
|
||||||
|
#
|
||||||
|
# Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
import builder
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Each configurator must export this function
|
||||||
|
def create_builder(args):
|
||||||
|
usage = """\
|
||||||
|
Usage:
|
||||||
|
main.py cfg_symbian [-h|--help] [-t|--target TARGET] [cfg_site]
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
cfg_site: site configuration module. If not specified, "cfg_site"
|
||||||
|
is implied
|
||||||
|
-t,--target TARGET: Symbian target to build. Default is "gcce urel".
|
||||||
|
Other values:
|
||||||
|
"winscw udeb", "gcce udeb", etc.
|
||||||
|
-h, --help Show this help screen
|
||||||
|
"""
|
||||||
|
|
||||||
|
cfg_site = "cfg_site"
|
||||||
|
target = "gcce urel"
|
||||||
|
in_option = ""
|
||||||
|
|
||||||
|
for arg in args:
|
||||||
|
if in_option=="-t":
|
||||||
|
target = arg
|
||||||
|
in_option = ""
|
||||||
|
elif arg=="--target" or arg=="-t":
|
||||||
|
in_option = "-t"
|
||||||
|
elif arg=="--help" or arg=="-h":
|
||||||
|
print usage
|
||||||
|
sys.exit(0)
|
||||||
|
elif arg[0]=="-":
|
||||||
|
print usage
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
cfg_site = arg
|
||||||
|
|
||||||
|
if os.access(cfg_site+".py", os.F_OK) == False:
|
||||||
|
print "Error: file '%s.py' doesn't exist." % (cfg_site)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
cfg_site = __import__(cfg_site)
|
||||||
|
test_cfg = builder.BaseConfig(cfg_site.BASE_DIR, \
|
||||||
|
cfg_site.URL, \
|
||||||
|
cfg_site.SITE_NAME, \
|
||||||
|
cfg_site.GROUP, \
|
||||||
|
cfg_site.OPTIONS)
|
||||||
|
config_site1 = """\
|
||||||
|
#define PJ_TODO(x)
|
||||||
|
#include <pj/config_site_sample.h>
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
builders = [
|
||||||
|
builder.SymbianTestBuilder(test_cfg,
|
||||||
|
target=target,
|
||||||
|
build_config_name="default",
|
||||||
|
config_site=config_site1,
|
||||||
|
exclude=cfg_site.EXCLUDE,
|
||||||
|
not_exclude=cfg_site.NOT_EXCLUDE)
|
||||||
|
]
|
||||||
|
|
||||||
|
return builders
|
||||||
|
|
Loading…
Reference in New Issue