зеркало из https://github.com/electron/electron.git
build: build ffmpeg and native_mksnapshot for GN release builds (#14240)
* build ffmpeg and native_mksnapshot for GN release builds * Test ffmpeg via verify-ffmpeg.py * remove sccache from Windows builds
This commit is contained in:
Родитель
a2a7c6b062
Коммит
5a72441b2a
|
@ -122,7 +122,7 @@ build-steps: &build-steps
|
||||||
script/verify-ffmpeg.py
|
script/verify-ffmpeg.py
|
||||||
else
|
else
|
||||||
echo 'Verifying ffmpeg on release build'
|
echo 'Verifying ffmpeg on release build'
|
||||||
script/verify-ffmpeg.py -R
|
script/verify-ffmpeg.py -c R
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo 'Skipping tests due to configuration'
|
echo 'Skipping tests due to configuration'
|
||||||
|
@ -191,6 +191,34 @@ gn-build-steps: &gn-build-steps
|
||||||
command: |
|
command: |
|
||||||
cd src
|
cd src
|
||||||
ninja -C out/Default electron:electron_app
|
ninja -C out/Default electron:electron_app
|
||||||
|
- run:
|
||||||
|
name: ffmpeg GN gen
|
||||||
|
command: |
|
||||||
|
if [ "$BUILD_FFMPEG" == "true" ]; then
|
||||||
|
cd src
|
||||||
|
gn gen out/ffmpeg --args='import("//electron/build/args/ffmpeg.gn") cc_wrapper="'"$SCCACHE_PATH"'"'" $GN_EXTRA_ARGS"
|
||||||
|
fi
|
||||||
|
- run:
|
||||||
|
name: Non proprietary ffmpeg build
|
||||||
|
command: |
|
||||||
|
if [ "$BUILD_FFMPEG" == "true" ]; then
|
||||||
|
cd src
|
||||||
|
ninja -C out/ffmpeg third_party/ffmpeg
|
||||||
|
fi
|
||||||
|
- run:
|
||||||
|
name: native mksnapshot GN gen
|
||||||
|
command: |
|
||||||
|
if [ "$BUILD_NATIVE_MKSNAPSHOT" == "true" ]; then
|
||||||
|
cd src
|
||||||
|
gn gen out/native_mksnapshot --args='import("//electron/build/args/native_mksnapshot.gn") cc_wrapper="'"$SCCACHE_PATH"'" v8_snapshot_toolchain="'"$MKSNAPSHOT_TOOLCHAIN"'"'" $GN_EXTRA_ARGS"
|
||||||
|
fi
|
||||||
|
- run:
|
||||||
|
name: native mksnapshot (arm/arm64) build
|
||||||
|
command: |
|
||||||
|
if [ "$BUILD_NATIVE_MKSNAPSHOT" == "true" ]; then
|
||||||
|
cd src
|
||||||
|
ninja -C out/native_mksnapshot v8:mksnapshot
|
||||||
|
fi
|
||||||
- run:
|
- run:
|
||||||
name: Build dist.zip
|
name: Build dist.zip
|
||||||
command: |
|
command: |
|
||||||
|
@ -203,6 +231,12 @@ gn-build-steps: &gn-build-steps
|
||||||
name: Setup for headless testing
|
name: Setup for headless testing
|
||||||
command: |
|
command: |
|
||||||
sh -e /etc/init.d/xvfb start
|
sh -e /etc/init.d/xvfb start
|
||||||
|
- run:
|
||||||
|
name: Verify ffmpeg
|
||||||
|
command: |
|
||||||
|
if [ "$RUN_TESTS" != "false" ] && [ "$BUILD_FFMPEG" == "true" ]; then
|
||||||
|
python src/electron/script/verify-ffmpeg.py -c Default --source-root "$PWD/src" --ffmpeg-path "$PWD/src/out/ffmpeg"
|
||||||
|
fi
|
||||||
- run:
|
- run:
|
||||||
name: Test
|
name: Test
|
||||||
environment:
|
environment:
|
||||||
|
@ -223,6 +257,12 @@ gn-build-steps: &gn-build-steps
|
||||||
path: src/junit
|
path: src/junit
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: src/out/Default/dist.zip
|
path: src/out/Default/dist.zip
|
||||||
|
- store_artifacts:
|
||||||
|
path: src/out/ffmpeg/libffmpeg.dylib
|
||||||
|
- store_artifacts:
|
||||||
|
path: src/out/ffmpeg/libffmpeg.so
|
||||||
|
- store_artifacts:
|
||||||
|
path: src/out/native_mksnapshot/mksnapshot
|
||||||
|
|
||||||
gn-mac-build-steps: &gn-mac-build-steps
|
gn-mac-build-steps: &gn-mac-build-steps
|
||||||
steps:
|
steps:
|
||||||
|
@ -482,6 +522,7 @@ jobs:
|
||||||
environment:
|
environment:
|
||||||
DISPLAY: ':99.0'
|
DISPLAY: ':99.0'
|
||||||
GN_CONFIG: //electron/build/args/testing.gn
|
GN_CONFIG: //electron/build/args/testing.gn
|
||||||
|
BUILD_FFMPEG: true
|
||||||
<<: *gn-linux-build-machine
|
<<: *gn-linux-build-machine
|
||||||
<<: *gn-build-steps
|
<<: *gn-build-steps
|
||||||
|
|
||||||
|
@ -489,6 +530,7 @@ jobs:
|
||||||
environment:
|
environment:
|
||||||
DISPLAY: ':99.0'
|
DISPLAY: ':99.0'
|
||||||
GN_CONFIG: //electron/build/args/release.gn
|
GN_CONFIG: //electron/build/args/release.gn
|
||||||
|
BUILD_FFMPEG: true
|
||||||
<<: *gn-linux-build-machine
|
<<: *gn-linux-build-machine
|
||||||
<<: *gn-build-steps
|
<<: *gn-build-steps
|
||||||
|
|
||||||
|
@ -508,6 +550,7 @@ jobs:
|
||||||
GN_CONFIG: //electron/build/args/testing.gn
|
GN_CONFIG: //electron/build/args/testing.gn
|
||||||
GN_EXTRA_ARGS: 'target_cpu = "x86"'
|
GN_EXTRA_ARGS: 'target_cpu = "x86"'
|
||||||
NPM_CONFIG_ARCH: ia32
|
NPM_CONFIG_ARCH: ia32
|
||||||
|
BUILD_FFMPEG: true
|
||||||
<<: *gn-linux-build-machine
|
<<: *gn-linux-build-machine
|
||||||
<<: *gn-build-steps
|
<<: *gn-build-steps
|
||||||
|
|
||||||
|
@ -517,6 +560,7 @@ jobs:
|
||||||
GN_CONFIG: //electron/build/args/release.gn
|
GN_CONFIG: //electron/build/args/release.gn
|
||||||
GN_EXTRA_ARGS: 'target_cpu = "x86"'
|
GN_EXTRA_ARGS: 'target_cpu = "x86"'
|
||||||
NPM_CONFIG_ARCH: ia32
|
NPM_CONFIG_ARCH: ia32
|
||||||
|
BUILD_FFMPEG: true
|
||||||
<<: *gn-linux-build-machine
|
<<: *gn-linux-build-machine
|
||||||
<<: *gn-build-steps
|
<<: *gn-build-steps
|
||||||
|
|
||||||
|
@ -544,6 +588,9 @@ jobs:
|
||||||
GN_EXTRA_ARGS: 'target_cpu = "arm"'
|
GN_EXTRA_ARGS: 'target_cpu = "arm"'
|
||||||
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True'
|
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True'
|
||||||
RUN_TESTS: false
|
RUN_TESTS: false
|
||||||
|
BUILD_FFMPEG: true
|
||||||
|
BUILD_NATIVE_MKSNAPSHOT: true
|
||||||
|
MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm
|
||||||
<<: *gn-linux-build-machine
|
<<: *gn-linux-build-machine
|
||||||
<<: *gn-build-steps
|
<<: *gn-build-steps
|
||||||
|
|
||||||
|
@ -571,6 +618,9 @@ jobs:
|
||||||
GN_EXTRA_ARGS: 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
|
GN_EXTRA_ARGS: 'target_cpu = "arm64" fatal_linker_warnings = false enable_linux_installer = false'
|
||||||
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm64=True'
|
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm64=True'
|
||||||
RUN_TESTS: false
|
RUN_TESTS: false
|
||||||
|
BUILD_FFMPEG: true
|
||||||
|
BUILD_NATIVE_MKSNAPSHOT: true
|
||||||
|
MKSNAPSHOT_TOOLCHAIN: //build/toolchain/linux:clang_arm64
|
||||||
<<: *gn-linux-build-machine
|
<<: *gn-linux-build-machine
|
||||||
<<: *gn-build-steps
|
<<: *gn-build-steps
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ build_script:
|
||||||
- md src
|
- md src
|
||||||
- ps: Move-Item $env:APPVEYOR_BUILD_FOLDER -Destination src\electron
|
- ps: Move-Item $env:APPVEYOR_BUILD_FOLDER -Destination src\electron
|
||||||
- ps: $env:CHROMIUM_BUILDTOOLS_PATH="$pwd\src\buildtools"
|
- ps: $env:CHROMIUM_BUILDTOOLS_PATH="$pwd\src\buildtools"
|
||||||
- ps: $env:SCCACHE_PATH="$pwd\src\electron\external_binaries\sccache\sccache.exe"
|
- ps: $env:SCCACHE_PATH="$pwd\src\electron\external_binaries\sccache.exe"
|
||||||
- >-
|
- >-
|
||||||
gclient config
|
gclient config
|
||||||
--name "src\electron"
|
--name "src\electron"
|
||||||
|
@ -29,13 +29,11 @@ build_script:
|
||||||
"https://github.com/electron/electron"
|
"https://github.com/electron/electron"
|
||||||
- gclient sync --with_branch_heads --with_tags
|
- gclient sync --with_branch_heads --with_tags
|
||||||
- cd src
|
- cd src
|
||||||
- >-
|
- gn gen out/Default "--args=import(\"//electron/build/args/%gn_args%.gn\")"
|
||||||
%SCCACHE_PATH% -s
|
|
||||||
- gn gen out/Default "--args=import(\"//electron/build/args/%gn_args%.gn\") cc_wrapper=\"%CC_WRAPPER%\" "
|
|
||||||
- ninja -C out/Default electron:electron_app
|
- ninja -C out/Default electron:electron_app
|
||||||
|
- gn gen out/ffmpeg "--args=import(\"//electron/build/args/ffmpeg.gn\")"
|
||||||
|
- ninja -C out/ffmpeg third_party/ffmpeg
|
||||||
- ninja -C out/Default electron:electron_dist_zip
|
- ninja -C out/Default electron:electron_dist_zip
|
||||||
- >-
|
|
||||||
%SCCACHE_PATH% -s
|
|
||||||
test_script:
|
test_script:
|
||||||
- ninja -C out/Default electron/build/node:headers
|
- ninja -C out/Default electron/build/node:headers
|
||||||
- ps: $env:npm_config_nodedir="$pwd/out/Default/gen/node_headers"
|
- ps: $env:npm_config_nodedir="$pwd/out/Default/gen/node_headers"
|
||||||
|
@ -44,7 +42,7 @@ test_script:
|
||||||
- npm install
|
- npm install
|
||||||
- ps: Pop-Location
|
- ps: Pop-Location
|
||||||
- ./out/Default/electron.exe electron/spec --ci
|
- ./out/Default/electron.exe electron/spec --ci
|
||||||
# TODO(nornagon): verify-ffmpeg step
|
- python src\electron\verify-ffmpeg.py -c Default --source-root "%pwd%\src" --ffmpeg-path "%pwd%\src\out\ffmpeg"
|
||||||
artifacts:
|
artifacts:
|
||||||
- path: test-results.xml
|
- path: test-results.xml
|
||||||
name: test-results.xml
|
name: test-results.xml
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
import("release.gn")
|
||||||
|
proprietary_codecs = false
|
||||||
|
ffmpeg_branding = "Chromium"
|
|
@ -0,0 +1,2 @@
|
||||||
|
import("release.gn")
|
||||||
|
v8_enable_i18n_support = false
|
|
@ -1,6 +1,7 @@
|
||||||
import("all.gn")
|
import("all.gn")
|
||||||
is_debug = false
|
is_debug = false
|
||||||
is_component_build = false
|
is_component_build = false
|
||||||
|
is_component_ffmpeg = true
|
||||||
is_official_build = false
|
is_official_build = false
|
||||||
dcheck_always_on = true
|
dcheck_always_on = true
|
||||||
symbol_level = 1
|
symbol_level = 1
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
import argparse
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -17,14 +17,10 @@ PRODUCT_NAME = electron_gyp()['product_name%']
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
os.chdir(SOURCE_ROOT)
|
args = parse_args()
|
||||||
|
os.chdir(args.source_root)
|
||||||
|
|
||||||
if len(sys.argv) == 2 and sys.argv[1] == '-R':
|
app_path = create_app_copy(args)
|
||||||
config = 'R'
|
|
||||||
else:
|
|
||||||
config = 'D'
|
|
||||||
|
|
||||||
app_path = create_app_copy(config)
|
|
||||||
|
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
electron = os.path.join(app_path, 'Contents', 'MacOS', PRODUCT_NAME)
|
electron = os.path.join(app_path, 'Contents', 'MacOS', PRODUCT_NAME)
|
||||||
|
@ -42,11 +38,12 @@ def main():
|
||||||
ffmpeg_name = 'libffmpeg.so'
|
ffmpeg_name = 'libffmpeg.so'
|
||||||
|
|
||||||
# Copy ffmpeg without proprietary codecs into app
|
# Copy ffmpeg without proprietary codecs into app
|
||||||
shutil.copy(os.path.join(FFMPEG_LIBCC_PATH, ffmpeg_name), ffmpeg_app_path)
|
shutil.copy(os.path.join(args.ffmpeg_path, ffmpeg_name), ffmpeg_app_path)
|
||||||
|
|
||||||
returncode = 0
|
returncode = 0
|
||||||
try:
|
try:
|
||||||
test_path = os.path.join('spec', 'fixtures', 'no-proprietary-codecs.js')
|
test_path = os.path.join(SOURCE_ROOT, 'spec', 'fixtures',
|
||||||
|
'no-proprietary-codecs.js')
|
||||||
subprocess.check_call([electron, test_path] + sys.argv[1:])
|
subprocess.check_call([electron, test_path] + sys.argv[1:])
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
returncode = e.returncode
|
returncode = e.returncode
|
||||||
|
@ -57,9 +54,10 @@ def main():
|
||||||
|
|
||||||
|
|
||||||
# Create copy of app to install ffmpeg library without proprietary codecs into
|
# Create copy of app to install ffmpeg library without proprietary codecs into
|
||||||
def create_app_copy(config):
|
def create_app_copy(args):
|
||||||
initial_app_path = os.path.join(SOURCE_ROOT, 'out', config)
|
initial_app_path = os.path.join(args.source_root, 'out', args.config)
|
||||||
app_path = os.path.join(SOURCE_ROOT, 'out', config + '-no-proprietary-codecs')
|
app_path = os.path.join(args.source_root, 'out',
|
||||||
|
args.config + '-no-proprietary-codecs')
|
||||||
|
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
app_name = '{0}.app'.format(PRODUCT_NAME)
|
app_name = '{0}.app'.format(PRODUCT_NAME)
|
||||||
|
@ -70,6 +68,19 @@ def create_app_copy(config):
|
||||||
shutil.copytree(initial_app_path, app_path, symlinks=True)
|
shutil.copytree(initial_app_path, app_path, symlinks=True)
|
||||||
return app_path
|
return app_path
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser(description='Test non-proprietary ffmpeg')
|
||||||
|
parser.add_argument('-c', '--config',
|
||||||
|
help='Test with Release or Debug configuration',
|
||||||
|
default='D',
|
||||||
|
required=False)
|
||||||
|
parser.add_argument('--source-root',
|
||||||
|
default=SOURCE_ROOT,
|
||||||
|
required=False)
|
||||||
|
parser.add_argument('--ffmpeg-path',
|
||||||
|
default=FFMPEG_LIBCC_PATH,
|
||||||
|
required=False)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.exit(main())
|
sys.exit(main())
|
||||||
|
|
2
vsts.yml
2
vsts.yml
|
@ -59,7 +59,7 @@ steps:
|
||||||
- bash: |
|
- bash: |
|
||||||
echo 'Verifying ffmpeg on build'
|
echo 'Verifying ffmpeg on build'
|
||||||
if [ "$ELECTRON_RELEASE" == "1" ]; then
|
if [ "$ELECTRON_RELEASE" == "1" ]; then
|
||||||
script/verify-ffmpeg.py -R
|
script/verify-ffmpeg.py -c R
|
||||||
else
|
else
|
||||||
script/verify-ffmpeg.py
|
script/verify-ffmpeg.py
|
||||||
fi
|
fi
|
||||||
|
|
Загрузка…
Ссылка в новой задаче