commit 121de1ca7cbee29f34f99753a7948c7447e38965 Author: David Fifield david@bamsoftware.com Date: Mon Mar 20 16:20:37 2017 -0400
Build webrtc-linux with GN instead of GYP.
* Bump webrtc to branch-heads/58
* Also, bumps go-webrtc and snowflake to the latest.
* Removes the need to re-run ninja for FakeAudioCaptureModule since "pc_test_utils" includes it.
* Update to the new default bridge --- Bundle-Data/PTConfigs/bridge_prefs.js | 2 +- .../linux/gitian-pluggable-transports.yml | 5 +- gitian/descriptors/linux/gitian-webrtc.yml | 54 +++++++++++----------- gitian/fetch-inputs.sh | 3 -- gitian/patches/webrtc-linux.patch | 25 ++++++++++ gitian/versions | 6 +-- gitian/versions.alpha | 6 +-- gitian/versions.beta | 6 +-- gitian/versions.nightly | 2 +- 9 files changed, 68 insertions(+), 41 deletions(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js index 61e2a9e..64b7f23 100644 --- a/Bundle-Data/PTConfigs/bridge_prefs.js +++ b/Bundle-Data/PTConfigs/bridge_prefs.js @@ -37,4 +37,4 @@ pref("extensions.torlauncher.default_bridge.obfs4.20", "obfs4 85.17.30.79:443 FC pref("extensions.torlauncher.default_bridge.meek-amazon.1", "meek 0.0.2.0:2 B9E7141C594AF25699E0079C1F0146F409495296 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com"); pref("extensions.torlauncher.default_bridge.meek-azure.1", "meek 0.0.2.0:3 97700DFE9F483596DDA6264C4D7DF7641E1E39CE url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com");
-pref("extensions.torlauncher.default_bridge.snowflake.1", "snowflake 0.0.3.0:1 B05EC36590AC0374F0E4D36DDA77908FD59D97F3"); +pref("extensions.torlauncher.default_bridge.snowflake.1", "snowflake 0.0.3.0:1 2B280B23E1107BB62ABFC40DDCC8824814F80A72"); diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml index ecf49de..cd936d5 100644 --- a/gitian/descriptors/linux/gitian-pluggable-transports.yml +++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml @@ -113,6 +113,8 @@ script: | ln -sf hardened-cc c++ cd ~/build export PATH=$INSTDIR/gcc/bin:$INSTDIR/binutils/bin:$PATH + # GN needs libatomic.so.1 here. + export LD_LIBRARY_PATH=$INSTDIR/gcc/lib ARCH="" if [ $GBUILD_BITS == "64" ]; then @@ -309,7 +311,8 @@ script: | # the prebuilt libwebrtc-magic.a libraries. Since we build our own # libwebrtc-magic.a with the C++11 ABI, we have to undo that setting here, # using CGO_CXXFLAGS. - CGO_CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=1 go install github.com/keroserene/go-webrtc + # __STDC_FORMAT_MACROS is needed for a definition of PRIxPTR from inttypes.h. + CGO_CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=1 -D__STDC_FORMAT_MACROS=1" CGO_LDFLAGS=-latomic go install github.com/keroserene/go-webrtc cd ..
# Building snowflake diff --git a/gitian/descriptors/linux/gitian-webrtc.yml b/gitian/descriptors/linux/gitian-webrtc.yml index cab2430..0622fee 100644 --- a/gitian/descriptors/linux/gitian-webrtc.yml +++ b/gitian/descriptors/linux/gitian-webrtc.yml @@ -12,12 +12,13 @@ packages: - "hardening-wrapper" - "libasound2-dev" - "libexpat1-dev" +- "libglib2.0-dev" +- "libgtk2.0-dev" - "libudev-dev" - "libx11-dev" - "libxext-dev" - "libxrandr-dev" -- "default-jre-headless" -- "default-jdk" +- "pkg-config" reference_datetime: "2000-01-01 00:00:00" remotes: - "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git" @@ -29,6 +30,7 @@ files: - "gcc-linux32-utils.zip" - "gcc-linux64-utils.zip" - "webrtc.tar.gz" +- "webrtc-linux.patch" script: | INSTDIR="$HOME/install" export REFERENCE_DATETIME @@ -85,6 +87,7 @@ script: | # Building webrtc tar xaf webrtc.tar.gz cd webrtc/src + patch -p1 < ../../webrtc-linux.patch
# First, build a copy of GN, rather than use the prebuilt copy in buildtools/linux64. cd tools/gn @@ -94,32 +97,31 @@ script: | # This is where bootstrap.py stashes the built gn. GN="$PWD/out_bootstrap/gn"
- export GYP_CROSSCOMPILE=1 - export GYP_DEFINES="OS=linux target_arch=$(if [ $GBUILD_BITS = 32 ]; then echo ia32; else echo x64; fi)" + export GN_ARGS="" + # For a list of all possible GN args, do "gn gen out/Release; gn args --list out/Release". + # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/cross_... + GN_ARGS+=" target_os="linux" target_cpu="$(if [ $GBUILD_BITS = 32 ]; then echo x86; else echo x64; fi)"" + # Not debug. + GN_ARGS+=" is_debug=false" + # There are warnings from unused returns. + GN_ARGS+=" treat_warnings_as_errors=false" + # Build static libraries. + GN_ARGS+=" is_component_build=false" # Do not use bundled utilities. - GYP_DEFINES+=" clang=0 host_clang=0 use_sysroot=0" - GYP_DEFINES+=" linux_use_bundled_gold=0 linux_use_gold_flags=0 linux_use_bundled_binutils=0" - # Avoid some dependencies. Some of these don't seem to work fully; for - # example even with use_alsa=0 we need libasound2-dev. - GYP_DEFINES+=" use_x11=0 use_gtk=0 use_gconf=0 use_alsa=0 use_pulseaudio=0 use_libpci=0 include_internal_audio_device=0 enabled_libjingle_device_manager=0" - # examples and tests also bring in dependencies. - GYP_DEFINES+=" include_examples=0 include_tests=0" - # embedded=1 is supposed to turn of various features; see - # https://bugs.chromium.org/p/chromium/issues/detail?id=318413. - GYP_DEFINES+=" embedded=1" - GYP_DEFINES+=" werror=" - JAVA_HOME=/usr/lib/jvm/default-java webrtc/build/gyp_webrtc.py - ninja -C out/Release - # Run ninja once more, without include_tests=0, in order to build just the - # FakeAudioCaptureModule that go-webrtc uses. - GYP_DEFINES="$(echo "$GYP_DEFINES" | sed -e 's/include_tests=0//g')" - JAVA_HOME=/usr/lib/jvm/default-java webrtc/build/gyp_webrtc.py - ninja -C out/Release obj/webrtc/api/test/peerconnection_unittests.fakeaudiocapturemodule.o + GN_ARGS+=" is_clang=false use_sysroot=false" + GN_ARGS+=" gold_path="$INSTDIR/binutils/bin"" + # Make extra sure we don't use bundled binutils. + rm -rf third_party/binutils/Linux_* + # Avoid some dependencies. + GN_ARGS+=" use_ozone=true use_gconf=false" + GN_ARGS+=" rtc_include_opus=false rtc_include_ilbc=false rtc_include_internal_audio_device=false rtc_include_pulse_audio=false" + # Included for "field_trial" below. Maybe "fieldtrial_testing_like_official_build" could help here? + #GN_ARGS+=" rtc_include_tests=false" + rm -rf out/Release + "$GN" gen out/Release --args="$GN_ARGS" + ninja -C out/Release webrtc field_trial metrics_default pc_test_utils # https://github.com/keroserene/go-webrtc/issues/23#issuecomment-175312648 - # dump_syms_regtest.o is actually an executable, not an object file. If not - # excluded, it results in the error: - # libwebrtc-linux-386-magic.a(dump_syms_regtest.o): unsupported ELF file type 2 - ar crs libwebrtc-magic.a $(find . -name '*.o' -not -name '*.main.o' -not -name 'dump_syms_regtest.o' | sort) + ar crs libwebrtc-magic.a $(find . -name '*.o' -not -name '*.main.o' | sort) cd ../..
# Grabbing the result diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh index b97a577..f141381 100755 --- a/gitian/fetch-inputs.sh +++ b/gitian/fetch-inputs.sh @@ -314,10 +314,7 @@ cd .. # depot_tools must have been downloaded before running this code. dir=webrtc PATH="$PATH:$PWD/depot_tools" -# GYP_CROSSCOMPILE=1 and GYP_DEFINES="use_x11=0" prevent probing for certain dependencies. # Use --no-history because the whole checkout with history is about 12 GB. -export GYP_CROSSCOMPILE=1 -export GYP_DEFINES="use_x11=0" # JAVA_HOME is needed in a hook for libjingle. The readlink line tries to find the current JRE. # default-java comes from the package default-jdk-headless. export JAVA_HOME=/usr/lib/jvm/default-java diff --git a/gitian/patches/webrtc-linux.patch b/gitian/patches/webrtc-linux.patch new file mode 100644 index 0000000..b1efb7a --- /dev/null +++ b/gitian/patches/webrtc-linux.patch @@ -0,0 +1,25 @@ +From ebc1773a92884bec7d93274b2d729ccf76050197 Mon Sep 17 00:00:00 2001 +From: David Fifield fifield@eecs.berkeley.edu +Date: Wed, 22 Mar 2017 09:53:07 -0400 +Subject: [PATCH] Disable some settings in build_overrides. + +--- + build_overrides/build.gni | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build_overrides/build.gni b/build_overrides/build.gni +index af4924d4c..ffaafdebc 100644 +--- a/build_overrides/build.gni ++++ b/build_overrides/build.gni +@@ -14,7 +14,7 @@ mac_sdk_min_build_override = "10.11" + enable_java_templates = true + + # Some non-Chromium builds don't use Chromium's third_party/binutils. +-linux_use_bundled_binutils_override = true ++linux_use_bundled_binutils_override = false + + # Variable that can be used to support multiple build scenarios, like having + # Chromium specific targets in a client project's GN file etc. +-- +2.12.1 + diff --git a/gitian/versions b/gitian/versions index 91bea14..69abeb3 100755 --- a/gitian/versions +++ b/gitian/versions @@ -42,9 +42,9 @@ GO_X_NET_TAG=7dbad50ab5b31073856416cdcfeb2796d682f844 OBFS4_TAG=obfs4proxy-0.0.5 NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2 DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b -WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52 -GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557 -SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d +WEBRTC_TAG=c279861207c5b15fc51069e96595782350e0ac12 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/58 +GO_WEBRTC_TAG=ab1b64862e0c4b4182010699911c2c5818f0a101 +SNOWFLAKE_TAG=9f2e9a6ecb696149708716ca06ce842df03cf492 UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-4-1 diff --git a/gitian/versions.alpha b/gitian/versions.alpha index 6c06648..3539d59 100755 --- a/gitian/versions.alpha +++ b/gitian/versions.alpha @@ -45,9 +45,9 @@ ERRORS_TAG=248dadf4e9068a0b3e79f02ed0a610d935de5302 GB_TAG=06cc925cce6592e922dcc4839a8b44feb384e71e SANDBOX_TAG=sandboxed-tor-browser-0.0.3 DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b -WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52 -GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557 -SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d +WEBRTC_TAG=c279861207c5b15fc51069e96595782350e0ac12 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/58 +GO_WEBRTC_TAG=ab1b64862e0c4b4182010699911c2c5818f0a101 +SNOWFLAKE_TAG=9f2e9a6ecb696149708716ca06ce842df03cf492 UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-4-2 diff --git a/gitian/versions.beta b/gitian/versions.beta index b1342b9..d7db1fd 100755 --- a/gitian/versions.beta +++ b/gitian/versions.beta @@ -30,9 +30,9 @@ GOPTLIB_TAG=0.2 MEEK_TAG=0.25 NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2 DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b -WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52 -GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557 -SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d +WEBRTC_TAG=c279861207c5b15fc51069e96595782350e0ac12 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/58 +GO_WEBRTC_TAG=ab1b64862e0c4b4182010699911c2c5818f0a101 +SNOWFLAKE_TAG=9f2e9a6ecb696149708716ca06ce842df03cf492 UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-3.x-6 diff --git a/gitian/versions.nightly b/gitian/versions.nightly index b9779e2..2045034 100755 --- a/gitian/versions.nightly +++ b/gitian/versions.nightly @@ -52,7 +52,7 @@ ERRORS_TAG=248dadf4e9068a0b3e79f02ed0a610d935de5302 GB_TAG=06cc925cce6592e922dcc4839a8b44feb384e71e SANDBOX_TAG=master DEPOT_TOOLS_TAG=master -WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52 +WEBRTC_TAG=c279861207c5b15fc51069e96595782350e0ac12 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/58 GO_WEBRTC_TAG=master SNOWFLAKE_TAG=master UNIURI_TAG=master
tbb-commits@lists.torproject.org