Bug 1513000 - Updates to mozharness openh264 scripts and configs; r=callek

Differential Revision: https://phabricator.services.mozilla.com/D19817

--HG--
extra : rebase_source : 728308f5304ca30a25cc7201e70abb3bd1365b84
This commit is contained in:
Dan Minor 2018-12-14 12:04:58 -05:00
parent e3ac9e1e07
commit 332aa43e29
13 changed files with 221 additions and 196 deletions

View File

@ -15,21 +15,20 @@ config = {
# 'test', # can't run android tests on linux hosts
'package',
'dump-symbols',
'upload',
],
'tooltool_manifest_file': "android.manifest",
'tooltool_cache': "/builds/tooltool_cache",
'exes': {
'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
'python2.7': "/tools/python27/bin/python2.7",
'python2.7': "python2.7",
},
'dump_syms_binary': 'dump_syms',
'arch': 'aarch64',
# https://dxr.mozilla.org/mozilla-central/rev/5322c03f4c8587fe526172d3f87160031faa6d75/mobile/android/config/mozconfigs/android-aarch64/nightly#6
'min_sdk': 21,
'operating_system': 'android',
'partial_env': {
'PATH': '%(abs_work_dir)s/android-sdk-linux/tools:%(PATH)s',
'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
'%(abs_work_dir)s/src/clang/bin/:%(PATH)s'),
},
}

View File

@ -15,21 +15,20 @@ config = {
# 'test', # can't run android tests on linux hosts
'package',
'dump-symbols',
'upload',
],
'tooltool_manifest_file': "android.manifest",
'tooltool_cache': "/builds/tooltool_cache",
'exes': {
'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
'python2.7': "/tools/python27/bin/python2.7",
'python2.7': "python2.7",
},
'dump_syms_binary': 'dump_syms',
'arch': 'arm',
# https://dxr.mozilla.org/mozilla-central/rev/5322c03f4c8587fe526172d3f87160031faa6d75/mobile/android/config/mozconfigs/android-api-15/nightly#6
'min_sdk': 16,
'operating_system': 'android',
'partial_env': {
'PATH': '%(abs_work_dir)s/android-sdk-linux/tools:%(PATH)s',
'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
'%(abs_work_dir)s/src/clang/bin/:%(PATH)s'),
},
}

View File

@ -15,22 +15,21 @@ config = {
# 'test', # can't run android tests on linux hosts
'package',
'dump-symbols',
'upload',
],
'tooltool_manifest_file': "android.manifest",
'tooltool_cache': "/builds/tooltool_cache",
'exes': {
'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
'python2.7': "/tools/python27/bin/python2.7",
'python2.7': "python2.7",
},
'avoid_avx2': True,
'dump_syms_binary': 'dump_syms',
'arch': 'x86',
# https://dxr.mozilla.org/mozilla-central/rev/5322c03f4c8587fe526172d3f87160031faa6d75/mobile/android/config/mozconfigs/android-x86/nightly#4
'min_sdk': 16,
'operating_system': 'android',
'partial_env': {
'PATH': '%(abs_work_dir)s/android-sdk-linux/tools:%(PATH)s',
'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
'%(abs_work_dir)s/src/clang/bin/:%(PATH)s'),
},
}

View File

@ -0,0 +1,35 @@
import os
import mozharness
external_tools_path = os.path.join(
os.path.abspath(os.path.dirname(os.path.dirname(mozharness.__file__))),
'external_tools',
)
config = {
'default_actions': [
'get-tooltool',
'checkout-sources',
'build',
# 'test', # can't run android tests on linux hosts
'package',
'dump-symbols',
],
'tooltool_manifest_file': "android.manifest",
'tooltool_cache': "/builds/tooltool_cache",
'exes': {
'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
'python2.7': "python2.7",
},
'avoid_avx2': True,
'dump_syms_binary': 'dump_syms',
'arch': 'x86_64',
'min_sdk': 16,
'operating_system': 'android',
'partial_env': {
'PATH': ('%(abs_work_dir)s/src/android-sdk-linux/tools:'
'%(abs_work_dir)s/src/clang/bin/:%(PATH)s'),
},
}

View File

@ -12,10 +12,13 @@ config = {
'tooltool_cache': "/builds/tooltool_cache",
'exes': {
'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
'python2.7': "/tools/python27/bin/python2.7",
'python2.7': "python2.7",
},
'dump_syms_binary': 'dump_syms',
'arch': 'x86',
'avoid_avx2': True,
'operating_system': 'linux',
'partial_env': {
'PATH': '%(abs_work_dir)s/src/clang/bin/:%(PATH)s',
},
}

View File

@ -12,10 +12,13 @@ config = {
'tooltool_cache': "/builds/tooltool_cache",
'exes': {
'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
'python2.7': "/tools/python27/bin/python2.7",
'python2.7': "python2.7",
},
'dump_syms_binary': 'dump_syms',
'arch': 'x64',
'avoid_avx2': True,
'operating_system': 'linux',
'partial_env': {
'PATH': '%(abs_work_dir)s/src/clang/bin/:%(PATH)s',
},
}

View File

@ -12,9 +12,24 @@ config = {
'tooltool_cache': "/builds/tooltool_cache",
'exes': {
'gittool.py': [os.path.join(external_tools_path, 'gittool.py')],
'python2.7': "/tools/python27/bin/python2.7",
'python2.7': "python2.7",
},
'dump_syms_binary': 'dump_syms',
'arch': 'x64',
'use_yasm': True,
'operating_system': 'darwin',
'partial_env': {
'CXXFLAGS': ('-target x86_64-apple-darwin11 '
'-B %(abs_work_dir)s/src/cctools/bin '
'-isysroot %(abs_work_dir)s/src/MacOSX10.11.sdk '
'-mmacosx-version-min=10.11'),
'LDFLAGS': ('-target x86_64-apple-darwin11 '
'-B %(abs_work_dir)s/src/cctools/bin '
'-isysroot %(abs_work_dir)s/src/MacOSX10.11.sdk '
'-mmacosx-version-min=10.11 '
'-fuse-ld=%(abs_work_dir)s/src/cctools/bin/x86_64-darwin11-ld'),
'PATH': '%(abs_work_dir)s/src/clang/bin/:%(PATH)s',
},
"tooltool_servers": ['http://relengapi/tooltool/'],
"tooltool_url": 'http://relengapi/tooltool/',
}

View File

@ -1,21 +1,4 @@
[
{
"version": "Android NDK r11c full",
"size": 434664300,
"visibility": "internal",
"digest": "c59a8fe59f52324ccce5ca6563e8e0189c3fb5538b2a435249581eb994bfb89a70b28e366bab102c36a1e11ee50cd657f1e084e40306f660d3cd2d60d09097bf",
"algorithm": "sha512",
"filename": "android-ndk-r11c-linux-x86_64.tar.xz",
"unpack": true
},
{
"size": 735225120,
"visibility": "internal",
"digest": "ec936b87d151fcf0a5920e0954fbfff18fc04595d753f6b11a0582faee3ce60e3429c828a94c1533ae31ff27272a6d0c637d901153b946e51241ea89ce8179b3",
"algorithm": "sha512",
"filename": "android-sdk-linux.tar.xz",
"unpack": true
},
{
"size": 9507240,
"visibility": "public",

View File

@ -5,5 +5,13 @@
"digest": "d705fb149fd7ec6a0833000224f802bd8cbb0f3ecf96efa558010e63db691ff03a95180d9525229e7055e8810c528bf3d7f1a1ab97aecadab3c7c7de8668ab30",
"algorithm": "sha512",
"filename": "dump_syms"
},
{
"size": 34094283,
"visibility": "internal",
"digest": "8811050fe375bcc566c8b85173d86b8a87aa2148edfed93023735c2de44b66a5a28cbaa1cfd396032447fd803e03f308ed941a200c0e2a1ad9fbe16b5606ee7c",
"algorithm": "sha512",
"unpack": true,
"filename": "MacOSX10.11.sdk.tar.xz"
}
]
]

View File

@ -1,17 +1,17 @@
[
{
"version": "Visual Studio 2017 15.4.2 / SDK 10.0.15063.0",
"size": 303146863,
"digest": "18700889e6b5e81613b9cf57ce4e0d46a6ee45bb4c5c33bae2604a5275326128775b8a032a1eb178c5db973746d565340c4e36d98375789e1d5bd836ab16ba58",
"algorithm": "sha512",
"filename": "vs2017_15.4.2.zip",
"unpack": true
},
{
"size": 56832,
"visibility": "public",
"digest": "01e6bd936ef008061b95a94008682869ebf2a29d1c035e49cd6579b1a020d0d195431221577f127eb52b97137337efe30e6de6c5a2f4b6a87ff2a990e9874e8e",
"algorithm": "sha512",
"filename": "dump_syms.exe"
},
{
"version": "Visual Studio 2017 15.8.4 / SDK 10.0.17134.0",
"digest": "ecf1e03f6f98f86775059a43f9e7dc7e326f6643d7c08962d9f614e4f5a65b1ca63fa1cfeb0f1a3c2474bf0d4318dda960b378beb2a44ecf8a91111207f4ece5",
"size": 349626009,
"algorithm": "sha512",
"filename": "vs2017_15.8.4.zip",
"unpack": true
}
]
]

View File

@ -8,51 +8,37 @@ external_tools_path = os.path.join(
'external_tools',
)
VSPATH = '%(abs_work_dir)s/vs2017_15.4.2'
VSPATH = '%(abs_work_dir)s\\src\\vs2017_15.8.4'
config = {
'tooltool_manifest_file': "win.manifest",
'exes': {
'gittool.py': [sys.executable, os.path.join(external_tools_path, 'gittool.py')],
'python2.7': 'c:\\mozilla-build\\python27\\python2.7.exe',
},
'dump_syms_binary': 'dump_syms.exe',
'arch': 'x86',
'use_yasm': True,
'operating_system': 'msvc',
'partial_env': {
'PATH': '%s;%s;%s' % (
(
'{_VSPATH}/VC/bin/Hostx64/x86;'
'{_VSPATH}/VC/bin/Hostx64/x64;'
'{_VSPATH}/SDK/bin/10.0.15063.0/x64;'
'{_VSPATH}/VC/redist/x64/Microsoft.VC141.CRT;'
'{_VSPATH}/SDK/Redist/ucrt/DLLs/x64;'
# 32-bit redist here for our dump_syms.exe
'{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;'
'{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;'
'{_VSPATH}/DIA SDK/bin'
).format(_VSPATH=VSPATH),
os.environ['PATH'],
'C:\\mozilla-build\\Git\\bin',
),
'WIN32_REDIST_DIR': '{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT'.format(_VSPATH=VSPATH),
'WIN_UCRT_REDIST_DIR': '{_VSPATH}/SDK/Redist/ucrt/DLLs/x86'.format(_VSPATH=VSPATH),
'INCLUDE': (
'{_VSPATH}/VC/include;'
'{_VSPATH}/VC/atlmfc/include;'
'{_VSPATH}/SDK/Include/10.0.15063.0/ucrt;'
'{_VSPATH}/SDK/Include/10.0.15063.0/shared;'
'{_VSPATH}/SDK/Include/10.0.15063.0/um;'
'{_VSPATH}/SDK/Include/10.0.15063.0/winrt;'
'{_VSPATH}/DIA SDK/include'
).format(_VSPATH=VSPATH),
'LIB': (
'{_VSPATH}/VC/lib/x86;'
'{_VSPATH}/VC/atlmfc/lib/x86;'
'{_VSPATH}/SDK/lib/10.0.15063.0/ucrt/x86;'
'{_VSPATH}/SDK/lib/10.0.15063.0/um/x86;'
'{_VSPATH}/DIA SDK/lib'
'tooltool_manifest_file': 'win.manifest',
'exes': {
'gittool.py': [sys.executable, os.path.join(external_tools_path, 'gittool.py')],
'python2.7': 'c:\\mozilla-build\\python\\python.exe',
},
'dump_syms_binary': 'dump_syms.exe',
'arch': 'x86',
'use_yasm': True,
'partial_env': {
'PATH': ('%(abs_work_dir)s\\src\\clang\\bin\\;'
'{_VSPATH}\\VC\\bin\\Hostx64\\x64;%(PATH)s'
# 32-bit redist here for our dump_syms.exe
'{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;'
'{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;'
'{_VSPATH}/DIA SDK/bin'
).format(_VSPATH=VSPATH),
'WINDOWSSDKDIR': '{_VSPATH}/SDK'.format(_VSPATH=VSPATH),
},
'INCLUDES': (
'-I{_VSPATH}\\VC\\include '
'-I{_VSPATH}\\VC\\atlmfc\\include '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt '
).format(_VSPATH=VSPATH),
'LIB': (
'{_VSPATH}/VC/lib/x86;'
'{_VSPATH}/VC/atlmfc/lib/x86;'
'{_VSPATH}/SDK/lib/10.0.17134.0/ucrt/x86;'
'{_VSPATH}/SDK/lib/10.0.17134.0/um/x86;'
).format(_VSPATH=VSPATH),
},
}

View File

@ -8,50 +8,37 @@ external_tools_path = os.path.join(
'external_tools',
)
VSPATH = '%(abs_work_dir)s/vs2017_15.4.2'
VSPATH = '%(abs_work_dir)s\\src\\vs2017_15.8.4'
config = {
'tooltool_manifest_file': "win.manifest",
'exes': {
'tooltool_manifest_file': 'win.manifest',
'exes': {
'gittool.py': [sys.executable, os.path.join(external_tools_path, 'gittool.py')],
'python2.7': 'c:\\mozilla-build\\python27\\python2.7.exe',
},
'dump_syms_binary': 'dump_syms.exe',
'arch': 'x64',
'use_yasm': True,
'operating_system': 'msvc',
'partial_env': {
'PATH': '%s;%s;%s' % (
(
'{_VSPATH}/VC/bin/Hostx64/x64;'
'{_VSPATH}/SDK/bin/10.0.15063.0/x64;'
'{_VSPATH}/VC/redist/x64/Microsoft.VC141.CRT;'
'{_VSPATH}/SDK/Redist/ucrt/DLLs/x64;'
# 32-bit redist here for our dump_syms.exe
'{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;'
'{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;'
'{_VSPATH}/DIA SDK/bin'
).format(_VSPATH=VSPATH),
os.environ['PATH'],
'C:\\mozilla-build\\Git\\bin',
),
'WIN32_REDIST_DIR': '{_VSPATH}/VC/redist/x64/Microsoft.VC141.CRT'.format(_VSPATH=VSPATH),
'WIN_UCRT_REDIST_DIR': '{_VSPATH}/SDK/Redist/ucrt/DLLs/x64'.format(_VSPATH=VSPATH),
'INCLUDE': (
'{_VSPATH}/VC/include;'
'{_VSPATH}/VC/atlmfc/include;'
'{_VSPATH}/SDK/Include/10.0.15063.0/ucrt;'
'{_VSPATH}/SDK/Include/10.0.15063.0/shared;'
'{_VSPATH}/SDK/Include/10.0.15063.0/um;'
'{_VSPATH}/SDK/Include/10.0.15063.0/winrt;'
'{_VSPATH}/DIA SDK/include'
).format(_VSPATH=VSPATH),
'LIB': (
'{_VSPATH}/VC/lib/x64;'
'{_VSPATH}/VC/atlmfc/lib/x64;'
'{_VSPATH}/SDK/lib/10.0.15063.0/ucrt/x64;'
'{_VSPATH}/SDK/lib/10.0.15063.0/um/x64;'
'{_VSPATH}/DIA SDK/lib/amd64'
).format(_VSPATH=VSPATH),
'WINDOWSSDKDIR': '{_VSPATH}/SDK'.format(_VSPATH=VSPATH),
},
'python2.7': 'c:\\mozilla-build\\python\\python.exe',
},
'dump_syms_binary': 'dump_syms.exe',
'arch': 'x64',
'use_yasm': True,
'partial_env': {
'PATH': ('%(abs_work_dir)s\\src\\clang\\bin\\;'
'{_VSPATH}\\VC\\bin\\Hostx64\\x64;%(PATH)s;'
# 32-bit redist here for our dump_syms.exe
'{_VSPATH}/VC/redist/x86/Microsoft.VC141.CRT;'
'{_VSPATH}/SDK/Redist/ucrt/DLLs/x86;'
'{_VSPATH}/DIA SDK/bin'
).format(_VSPATH=VSPATH),
'INCLUDES': (
'-I{_VSPATH}\\VC\\include '
'-I{_VSPATH}\\VC\\atlmfc\\include '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\ucrt '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\shared '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\um '
'-I{_VSPATH}\\SDK\\Include\\10.0.17134.0\\winrt '
).format(_VSPATH=VSPATH),
'LIB': (
'{_VSPATH}/VC/lib/x64;'
'{_VSPATH}/VC/atlmfc/lib/x64;'
'{_VSPATH}/SDK/lib/10.0.17134.0/ucrt/x64;'
'{_VSPATH}/SDK/lib/10.0.17134.0/um/x64;'
).format(_VSPATH=VSPATH),
},
}

138
testing/mozharness/scripts/openh264_build.py Normal file → Executable file
View File

@ -34,25 +34,22 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
'build',
'test',
'package',
'dump-symbols',
'upload',
'dump-symbols'
]
default_actions = [
'get-tooltool',
'checkout-sources',
'build',
'test',
'package',
'dump-symbols',
'upload',
'dump-symbols'
]
config_options = [
[["--repo"], {
"dest": "repo",
"help": "OpenH264 repository to use",
"default": "https://github.com/cisco/openh264.git"
"default": "https://github.com/dminor/openh264.git"
}],
[["--rev"], {
"dest": "revision",
@ -83,7 +80,19 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
"help": "Pass HAVE_AVX2='false' through to Make to support older nasm",
"action": "store_true",
"default": False,
}]
}],
[["--scm-level"], {
"dest": "scm_level",
"help": "dummy option",
}],
[["--branch"], {
"dest": "branch",
"help": "dummy option",
}],
[["--build-pool"], {
"dest": "build_pool",
"help": "dummy option",
}],
]
def __init__(self, require_config_file=False, config={},
@ -125,15 +134,15 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
return
dirs = self.query_abs_dirs()
self.mkdir_p(dirs['abs_work_dir'])
manifest = os.path.join(dirs['base_work_dir'],
'scripts', 'configs',
'openh264', 'tooltool-manifests',
manifest = os.path.join(dirs['abs_work_dir'], 'src', 'testing',
'mozharness', 'configs', 'openh264',
'tooltool-manifests',
c['tooltool_manifest_file'])
self.info("Getting tooltool files from manifest (%s)" % manifest)
try:
self.tooltool_fetch(
manifest=manifest,
output_dir=dirs['abs_work_dir'],
output_dir=os.path.join(dirs['abs_work_dir'], 'src'),
cache=c.get('tooltool_cache')
)
except KeyError:
@ -150,6 +159,9 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
if self.config.get('operating_system') == 'android':
return 'openh264-android-{arch}-{version}.zip'.format(
version=version, arch=self.config['arch'])
elif self.config.get('operating_system') == 'darwin':
return 'openh264-macosx{bits}-{version}.zip'.format(
version=version, bits=bits)
else:
return 'openh264-linux{bits}-{version}.zip'.format(version=version, bits=bits)
elif sys.platform == 'darwin':
@ -183,11 +195,27 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
retval.append("ARCH=arm")
retval.append('TARGET=invalid')
retval.append('NDKLEVEL=%s' % self.config['min_sdk'])
retval.append('NDKROOT=%s/android-ndk-r11c' % dirs['abs_work_dir'])
retval.append('NDKROOT=%s/src/android-ndk' % dirs['abs_work_dir'])
retval.append('NDK_TOOLCHAIN_VERSION=clang')
if self.config["operating_system"] == "darwin":
retval.append('OS=darwin')
if self.config['use_yasm']:
retval.append('ASM=yasm')
if self._is_windows():
retval.append('OS=msvc')
retval.append('CC=clang-cl')
retval.append('CXX=clang-cl')
if self.config['arch'] == 'x86':
retval.append("ARCH=x86")
retval.append("CFLAGS=-m32")
else:
retval.append("ARCH=x86_64")
else:
retval.append('CC=clang')
retval.append('CXX=clang++')
return retval
def query_upload_ssh_key(self):
@ -205,7 +233,7 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
def run_make(self, target, capture_output=False):
cmd = ['make', target] + self.query_make_params()
dirs = self.query_abs_dirs()
repo_dir = os.path.join(dirs['abs_work_dir'], 'src')
repo_dir = os.path.join(dirs['abs_work_dir'], 'openh264')
env = None
if self.config.get('partial_env'):
env = self.query_env(self.config['partial_env'])
@ -220,7 +248,22 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
rev = self.config['revision']
dirs = self.query_abs_dirs()
repo_dir = os.path.join(dirs['abs_work_dir'], 'src')
repo_dir = os.path.join(dirs['abs_work_dir'], 'openh264')
if self._is_windows():
# We don't have git on our windows builders, so download a zip
# package instead.
path = repo.replace('.git', '/archive/') + rev + '.zip'
self.download_file(path)
self.unzip(rev + '.zip', dirs['abs_work_dir'])
self.move(os.path.join(dirs['abs_work_dir'], 'openh264-' + rev),
os.path.join(dirs['abs_work_dir'], 'openh264'))
# Retrieve in-tree version of gmp-api
self.copytree(os.path.join(dirs['abs_work_dir'], 'src', 'dom',
'media', 'gmp', 'gmp-api'),
os.path.join(repo_dir, 'gmp-api'))
return 0
repos = [
{'vcs': 'gittool', 'repo': repo, 'dest': repo_dir, 'revision': rev},
@ -261,7 +304,7 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
def package(self):
dirs = self.query_abs_dirs()
srcdir = os.path.join(dirs['abs_work_dir'], 'src')
srcdir = os.path.join(dirs['abs_work_dir'], 'openh264')
package_name = self.query_package_name()
package_file = os.path.join(dirs['abs_work_dir'], package_name)
if os.path.exists(package_file):
@ -281,12 +324,20 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
retval = self.run_command(cmd, cwd=srcdir)
if retval != 0:
self.fatal("couldn't make package")
self.copy_to_upload_dir(package_file)
self.copy_to_upload_dir(package_file,
dest=os.path.join(srcdir, 'artifacts',
package_name))
# Taskcluster expects this path to exist, but we don't use it
# because our builds are private.
path = os.path.join(self.query_abs_dirs()['abs_work_dir'],
'..', 'public', 'build')
self.mkdir_p(path)
def dump_symbols(self):
dirs = self.query_abs_dirs()
c = self.config
srcdir = os.path.join(dirs['abs_work_dir'], 'src')
srcdir = os.path.join(dirs['abs_work_dir'], 'openh264')
package_name = self.run_make('echo-plugin-name', capture_output=True)
if not package_name:
self.fatal("failure running make")
@ -294,13 +345,13 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
if not zip_package_name[-4:] == ".zip":
self.fatal("Unexpected zip_package_name")
symbol_package_name = "{base}.symbols.zip".format(base=zip_package_name[:-4])
symbol_zip_path = os.path.join(dirs['abs_upload_dir'], symbol_package_name)
repo_dir = os.path.join(dirs['abs_work_dir'], 'src')
symbol_zip_path = os.path.join(srcdir, 'artifacts', symbol_package_name)
repo_dir = os.path.join(dirs['abs_work_dir'], 'openh264')
env = None
if self.config.get('partial_env'):
env = self.query_env(self.config['partial_env'])
kwargs = dict(cwd=repo_dir, env=env)
dump_syms = os.path.join(dirs['abs_work_dir'], c['dump_syms_binary'])
dump_syms = os.path.join(dirs['abs_work_dir'], 'src', c['dump_syms_binary'])
self.chmod(dump_syms, 0755)
python = self.query_exe('python2.7')
cmd = [python, os.path.join(external_tools_path, 'packagesymbols.py'),
@ -308,25 +359,13 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
dump_syms, os.path.join(srcdir, package_name)]
self.run_command(cmd, **kwargs)
def upload(self):
dirs = self.query_abs_dirs()
self.scp_upload_directory(
dirs['abs_upload_dir'],
self.query_upload_ssh_key(),
self.query_upload_ssh_user(),
self.query_upload_ssh_host(),
self.query_upload_ssh_path(),
)
def test(self):
retval = self.run_make('test')
if retval != 0:
self.fatal("test failures")
def copy_to_upload_dir(self, target, dest=None, short_desc="unknown",
long_desc="unknown", log_level=DEBUG,
error_level=ERROR, max_backups=None,
compress=False, upload_dir=None):
def copy_to_upload_dir(self, target, dest=None, log_level=DEBUG,
error_level=ERROR, compress=False, upload_dir=None):
"""Copy target file to upload_dir/dest.
Potentially update a manifest in the future if we go that route.
@ -334,9 +373,6 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
Currently only copies a single file; would be nice to allow for
recursive copying; that would probably done by creating a helper
_copy_file_to_upload_dir().
short_desc and long_desc are placeholders for if/when we add
upload_dir manifests.
"""
dest_filename_given = dest is not None
if upload_dir is None:
@ -357,34 +393,6 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
self.log("%s doesn't exist!" % target, level=error_level)
return None
self.mkdir_p(dest_dir)
if os.path.exists(dest):
if os.path.isdir(dest):
self.log("%s exists and is a directory!" % dest, level=error_level)
return -1
if max_backups:
# Probably a better way to do this
oldest_backup = 0
backup_regex = re.compile("^%s\.(\d+)$" % dest_file)
for filename in os.listdir(dest_dir):
r = backup_regex.match(filename)
if r and int(r.groups()[0]) > oldest_backup:
oldest_backup = int(r.groups()[0])
for backup_num in range(oldest_backup, 0, -1):
# TODO more error checking?
if backup_num >= max_backups:
self.rmtree(os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num)),
log_level=log_level)
else:
self.move(os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num)),
os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num + 1)),
log_level=log_level)
if self.move(dest, "%s.1" % dest, log_level=log_level):
self.log("Unable to move %s!" % dest, level=error_level)
return -1
else:
if self.rmtree(dest, log_level=log_level):
self.log("Unable to remove %s!" % dest, level=error_level)
return -1
self.copyfile(target, dest, log_level=log_level, compress=compress)
if os.path.exists(dest):
return dest