chromium: new package
v6 cover chromium: new package
Changes since v5:
- chromium: config cleanups
- chromium: fix build issues caused by disabled sysroot
- chromium: make cups dependency optional
- chromium: make proprietary codecs optional
- chromium: make pciutils dependency optional
- chromium: make dbus dependency optional
Changes since v4:
- at-spi2-{core,atk}: rework dependencies
- libgtk3: make atk-bridge an optional dependency
- at-spi2-core: convert to meson-package infrastructure
- chromium: define BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTS
- chromium: add host gcc >= 4.9.0 to depends
- lld: convert to host-only package
- fix check-package issues
Changes since v3:
- llvm: add separate TARGETS_TO_BUILD for host only
- chromium: add upstream patch to fix ARM build w/ glibc 2.27
- chromium: disabled v8 snapshotting until the toolchain can be figured out
- chromium: add missing dependencies when use_gtk3=false
- chromium: check-package fixes
Changes since v2:
- patch chromium toolchain config for buildroot
Changes since v1:
- fix some cross compilation issues
- chromium: bump version to 67.0.3396.79
- atk: bump version to 2.28.1
- lld: new package
- chromium: use lld for linking
- minor tweaks to variable naming and quotes
Joseph Kogut (4):
libgtk3: convert atk-bridge to optional dependency
llvm: add config to build backend for host arch
lld: new package
chromium: new package
DEVELOPERS | 2 + package/Config.in | 1 + package/Config.in.host | 2 + ...iler_cpu_abi-for-buildroot-toolchain.patch | 102 ++++++++++++ .../0002-Fix-arm-build-with-glibc-2.27.patch | 28 ++++ package/chromium/Config.in | 64 ++++++++ package/chromium/chromium.hash | 3 + package/chromium/chromium.mk | 146 ++++++++++++++++++ package/chromium/toolchain/BUILD.gn | 71 +++++++++ ...3-convert-atk-bridge-to-optional-dep.patch | 76 +++++++++ package/libgtk3/0003-disable-atk-bridge.patch | 45 ------ package/libgtk3/libgtk3.mk | 4 + package/lld/Config.in.host | 16 ++ package/lld/lld.hash | 3 + package/lld/lld.mk | 15 ++ package/llvm/Config.in.host | 18 +++ package/llvm/llvm.mk | 9 +- 17 files changed, 559 insertions(+), 46 deletions(-) create mode 100644 package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patch create mode 100644 package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch create mode 100644 package/chromium/Config.in create mode 100644 package/chromium/chromium.hash create mode 100644 package/chromium/chromium.mk create mode 100644 package/chromium/toolchain/BUILD.gn create mode 100644 package/libgtk3/0003-convert-atk-bridge-to-optional-dep.patch delete mode 100644 package/libgtk3/0003-disable-atk-bridge.patch create mode 100644 package/lld/Config.in.host create mode 100644 package/lld/lld.hash create mode 100644 package/lld/lld.mk create mode 100644 package/llvm/Config.in.host
Signature · 1 line
2.18.0
PATCH v6 1/4 libgtk3: convert atk-bridge to optional dependency
--- ...3-convert-atk-bridge-to-optional-dep.patch | 76 +++++++++++++++++++ package/libgtk3/0003-disable-atk-bridge.patch | 45 ----------- package/libgtk3/libgtk3.mk | 4 + 3 files changed, 80 insertions(+), 45 deletions(-) create mode 100644 package/libgtk3/0003-convert-atk-bridge-to-optional-dep.patch delete mode 100644 package/libgtk3/0003-disable-atk-bridge.patch
package/libgtk3/0003-convert-atk-bridge-to-optional-dep.patch new file +76 -0
@@ -0,0 +1,76 @@ +From 83aaf47828d40dbafc315c5184ff62fe9914e80a Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <[email protected]> +Date: Thu, 21 Jun 2018 10:55:04 -0700 +Subject: [PATCH] convert atk-bridge to optional dep + +Signed-off-by: Joseph Kogut <[email protected]> +--- + configure | 2 +- + configure.ac | 9 ++++++--- + gtk/a11y/gtkaccessibility.c | 4 ++-- + 3 files changed, 9 insertions(+), 6 deletions(-) + +diff --git a/configure b/configure +index 9a68486..6504451 100755 +--- a/configure ++++ b/configure +@@ -27037,7 +27037,7 @@ $as_echo "yes" >&6; } + fi + + GTK_PACKAGES="atk >= 2.15.1 cairo >= 1.14.0 cairo-gobject >= 1.14.0 gdk-pixbuf-2.0 >= 2.30.0 gio-2.0 >= 2.49.4" +-GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= 1.0" ++GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $ATK_BRIDGE_PACKAGE $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= 1.0" + if test "x$enable_x11_backend" = xyes -o "x$enable_wayland_backend" = xyes; then + GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2" + fi +diff --git a/configure.ac b/configure.ac +index fef0ece..ddb4e04 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1394,15 +1394,18 @@ AC_SUBST(GDK_DEP_CFLAGS) + ######################################## + + if test x$enable_x11_backend = xyes; then +- ATK_PACKAGES="atk atk-bridge-2.0" +-else + ATK_PACKAGES="atk" ++ PKG_CHECK_MODULES(ATK_BRIDGE, atk-bridge-2.0, ++ AC_DEFINE([HAVE_ATK_BRIDGE], [1], [Define to 1 if atk-bridge is available]) ++ ATK_BRIDGE_PACKAGE="atk-bridge-2.0", ++ [] ++ ) + fi + + PKG_CHECK_MODULES(ATK, $ATK_PACKAGES) + + GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version" +-GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= epoxy_required_version" ++GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $ATK_BRIDGE_PACKAGE $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= epoxy_required_version" + if test "x$enable_x11_backend" = xyes -o "x$enable_wayland_backend" = xyes; then + GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2" + fi +diff --git a/gtk/a11y/gtkaccessibility.c b/gtk/a11y/gtkaccessibility.c +index 7f0e520..f2ef2eb 100644 +--- a/gtk/a11y/gtkaccessibility.c ++++ b/gtk/a11y/gtkaccessibility.c +@@ -37,7 +37,7 @@ + #include <gtk/gtktogglebutton.h> + #include <gtk/gtkaccessible.h> + +-#ifdef GDK_WINDOWING_X11 ++#ifdef HAVE_ATK_BRIDGE + #include <atk-bridge.h> + #endif + +@@ -988,7 +988,7 @@ _gtk_accessibility_init (void) + _gtk_accessibility_override_atk_util (); + do_window_event_initialization (); + +-#ifdef GDK_WINDOWING_X11 ++#ifdef HAVE_ATK_BRIDGE + atk_bridge_adaptor_init (NULL, NULL); + #endif + +-- +2.17.1 +
package/libgtk3/0003-disable-atk-bridge.patch deleted +0 -45
45 lines not on this page · raw message
package/libgtk3/libgtk3.mk +4 -0
@@ -31,6 +31,10 @@ LIBGTK3_DEPENDENCIES = host-pkgconf host-libgtk3 atk libglib2 cairo pango gdk-pi ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) LIBGTK3_DEPENDENCIES += fontconfig xlib_libX11 xlib_libXext xlib_libXrender xlib_libXi +ifeq ($(BR2_PACKAGE_AT_SPI2_ATK),y) +LIBGTK3_DEPENDENCIES += at-spi2-atk +endif + LIBGTK3_CONF_OPTS += \ --enable-x11-backend \ --x-includes=$(STAGING_DIR)/usr/include/X11 \
Signature · 1 line
2.18.0
PATCH v6 2/4 llvm: add config to build backend for host arch
In reply to Joseph Kogut--- package/Config.in.host | 1 + package/llvm/Config.in.host | 18 ++++++++++++++++++ package/llvm/llvm.mk | 9 ++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 package/llvm/Config.in.host
package/Config.in.host +1 -0
@@ -30,6 +30,7 @@ menu "Host utilities" source "package/jsmin/Config.in.host" source "package/lpc3250loader/Config.in.host" source "package/lttng-babeltrace/Config.in.host" + source "package/llvm/Config.in.host" source "package/mfgtools/Config.in.host" source "package/mkpasswd/Config.in.host" source "package/mtd/Config.in.host"
package/llvm/Config.in.host new file +18 -0
@@ -0,0 +1,18 @@ +config BR2_PACKAGE_HOST_LLVM + bool "host llvm" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_4_8 + help + The LLVM Project is a collection of modular and reusable + compiler and toolchain technologies. + + http://llvm.org + +config BR2_PACKAGE_HOST_LLVM_HOST_ARCH + string + default "AArch64" if BR2_HOSTARCH="aarch64" + default "X86" if BR2_HOSTARCH = "x86" || BR2_HOSTARCH = "x86_64" + default "ARM" if BR2_HOSTARCH = "arm" + +config BR2_PACKAGE_HOST_LLVM_ENABLE_HOST_ARCH + bool
package/llvm/llvm.mk +8 -1
@@ -39,8 +39,9 @@ LLVM_CONF_OPTS += -DLLVM_BUILD_GLOBAL_ISEL=OFF LLVM_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LLVM_TARGET_ARCH)) # Build backend for target architecture. This include backends like AMDGPU. +HOST_LLVM_TARGETS_TO_BUILD = $(LLVM_TARGET_ARCH) LLVM_TARGETS_TO_BUILD = $(LLVM_TARGET_ARCH) -HOST_LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))" +HOST_LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(HOST_LLVM_TARGETS_TO_BUILD))" LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD="$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))" # LLVM target to use for native code generation. This is required for JIT generation.
@@ -56,9 +57,15 @@ LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH) # output only $(LLVM_TARGET_ARCH) if not, and mesa3d won't build as # it thinks AMDGPU backend is not installed on the target. ifeq ($(BR2_PACKAGE_LLVM_AMDGPU),y) +HOST_LLVM_TARGETS_TO_BUILD += AMDGPU LLVM_TARGETS_TO_BUILD += AMDGPU endif +# Build backend for host architecture +ifeq ($(BR2_PACKAGE_HOST_LLVM_ENABLE_HOST_ARCH),y) +HOST_LLVM_TARGETS_TO_BUILD += $(call qstrip,$(BR2_PACKAGE_HOST_LLVM_HOST_ARCH)) +endif + # Use native llvm-tblgen from host-llvm (needed for cross-compilation) LLVM_CONF_OPTS += -DLLVM_TABLEGEN=$(HOST_DIR)/bin/llvm-tblgen
Signature · 1 line
2.18.0
PATCH v6 3/4 lld: new package
In reply to Joseph Kogut--- DEVELOPERS | 1 + package/Config.in.host | 1 + package/lld/Config.in.host | 16 ++++++++++++++++ package/lld/lld.hash | 3 +++ package/lld/lld.mk | 15 +++++++++++++++ 5 files changed, 36 insertions(+) create mode 100644 package/lld/Config.in.host create mode 100644 package/lld/lld.hash create mode 100644 package/lld/lld.mk
DEVELOPERS +1 -0
@@ -1060,6 +1060,7 @@ F: package/at-spi2-atk/ F: package/at-spi2-core/ F: package/gconf/ F: package/libnss/ +F: package/lld/ F: package/python-cython/ F: package/python-raven/ F: package/python-schedule/
package/Config.in.host +1 -0
@@ -30,6 +30,7 @@ menu "Host utilities" source "package/jsmin/Config.in.host" source "package/lpc3250loader/Config.in.host" source "package/lttng-babeltrace/Config.in.host" + source "package/lld/Config.in.host" source "package/llvm/Config.in.host" source "package/mfgtools/Config.in.host" source "package/mkpasswd/Config.in.host"
package/lld/Config.in.host new file +16 -0
@@ -0,0 +1,16 @@ +config BR2_PACKAGE_HOST_LLD + bool "host lld" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS # llvm + depends on BR2_HOST_GCC_AT_LEAST_4_8 # llvm + select BR2_PACKAGE_HOST_LLVM + help + LLD is a linker from the LLVM project that is a drop-in + replacement for system linkers, and runs much faster than + them. It also provides features that are useful for + toolchain developers. + + https://lld.llvm.org/ + +comment "lld needs a toolchain w/ host gcc >= 4.8" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_HOST_GCC_AT_LEAST_4_8
package/lld/lld.hash new file +3 -0
@@ -0,0 +1,3 @@ +# locally calculated +sha256 6b8c4a833cf30230c0213d78dbac01af21387b298225de90ab56032ca79c0e0b lld-6.0.0.src.tar.xz +sha256 f0502d2d0e19748c534ee95ea486c092273303dbef76404c8b17dc8bf6ca441b LICENSE.TXT
package/lld/lld.mk new file +15 -0
@@ -0,0 +1,15 @@ +################################################################################ +# +# lld +# +################################################################################ + +LLD_VERSION = 6.0.0 +LLD_SITE = https://llvm.org/releases/$(LLD_VERSION) +LLD_SOURCE = lld-$(LLD_VERSION).src.tar.xz +LLD_LICENSE = NCSA +LLD_LICENSE_FILES = LICENSE.TXT +LLD_SUPPORTS_IN_SOURCE_BUILD = NO +HOST_LLD_DEPENDENCIES = host-llvm + +$(eval $(host-cmake-package))
Signature · 1 line
2.18.0
PATCH v6 3/4 lld: new package
Hello Joseph,
Quoted 7 lines · Joseph Kogut
+++
b/package/lld/lld.mkpackage/lld/lld.mk new file +5
-0@@ -0,0 +1,15 @@ +################################################################################ +# +# lld +# +################################################################################
package/lld/lld.mk line 15
Quoted 10 lines
package/lld/lld.mk new file +10
-0+ +LLD_VERSION = 6.0.0 +LLD_SITE = https://llvm.org/releases/$(LLD_VERSION) +LLD_SOURCE = lld-$(LLD_VERSION).src.tar.xz +LLD_LICENSE = NCSA +LLD_LICENSE_FILES = LICENSE.TXT +LLD_SUPPORTS_IN_SOURCE_BUILD = NO +HOST_LLD_DEPENDENCIES = host-llvm + +$(eval $(host-cmake-package))
I've just checked that lld is linking against libLLVM static libs.
I had the same problem with clang, to avoid this:
HOST_LLD_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_DYLIB_COMPONENTS=all
Best regards,
Valentin
PATCH v6 4/4 chromium: new package
In reply to Joseph Kogut--- DEVELOPERS | 1 + package/Config.in | 1 + ...iler_cpu_abi-for-buildroot-toolchain.patch | 102 ++++++++++++ .../0002-Fix-arm-build-with-glibc-2.27.patch | 28 ++++ package/chromium/Config.in | 64 ++++++++ package/chromium/chromium.hash | 3 + package/chromium/chromium.mk | 146 ++++++++++++++++++ package/chromium/toolchain/BUILD.gn | 71 +++++++++ 8 files changed, 416 insertions(+) create mode 100644 package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patch create mode 100644 package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch create mode 100644 package/chromium/Config.in create mode 100644 package/chromium/chromium.hash create mode 100644 package/chromium/chromium.mk create mode 100644 package/chromium/toolchain/BUILD.gn
DEVELOPERS +1 -0
@@ -1058,6 +1058,7 @@ F: package/rabbitmq-c/ N: Joseph Kogut <[email protected]> F: package/at-spi2-atk/ F: package/at-spi2-core/ +F: package/chromium/ F: package/gconf/ F: package/libnss/ F: package/lld/
package/Config.in +1 -0
@@ -14,6 +14,7 @@ menu "Audio and video applications" source "package/aumix/Config.in" source "package/bellagio/Config.in" source "package/bluez-alsa/Config.in" + source "package/chromium/Config.in" source "package/dvblast/Config.in" source "package/dvdauthor/Config.in" source "package/dvdrw-tools/Config.in"
package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patch new file +102 -0
102 lines not on this page · raw message
package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +28 -0
@@ -0,0 +1,28 @@ +From aed4599c18586dfac46139a3c32011f804fdaef6 Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <[email protected]> +Date: Wed, 13 Jun 2018 13:59:24 -0700 +Subject: [PATCH] Fix arm build with glibc 2.27 + +Upstream patch from: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1060155 + +Signed-off-by: Joseph Kogut <[email protected]> +--- + third_party/crashpad/crashpad/compat/linux/sys/ptrace.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h +index 73861576d..e5c95c7cc 100644 +--- a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h ++++ b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h +@@ -34,7 +34,7 @@ static constexpr __ptrace_request PTRACE_GET_THREAD_AREA = + #endif // !PTRACE_GET_THREAD_AREA && !PT_GET_THREAD_AREA && defined(__GLIBC__) + + // https://sourceware.org/bugzilla/show_bug.cgi?id=22433 +-#if !defined(PTRACE_GETVFPREGS) && \ ++#if !defined(PTRACE_GETVFPREGS) && !defined(PT_GETVFPREGS) && \ + defined(__GLIBC__) && (defined(__arm__) || defined(__arm64__)) + static constexpr __ptrace_request PTRACE_GETVFPREGS = + static_cast<__ptrace_request>(27); +-- +2.17.1 +
package/chromium/Config.in new file +64 -0
64 lines not on this page · raw message
package/chromium/chromium.hash new file +3 -0
@@ -0,0 +1,3 @@ +# locally calculated +sha256 f8b1e5319163e378027826b12cf256b97423bb90e10e2013469d96e03bc9db8a chromium-67.0.3396.79.tar.xz +sha256 845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308 LICENSE
package/chromium/chromium.mk new file +146 -0
146 lines not on this page · raw message
package/chromium/toolchain/BUILD.gn new file +71 -0
71 lines not on this page · raw message
Signature · 1 line
2.18.0
PATCH v6 4/4 chromium: new package
Joseph,
Quoted 194 lines · Joseph Kogut
Signed-off-by Joseph Kogut <[email protected]>--- DEVELOPERS | 1 + package/Config.in | 1 + ...iler_cpu_abi-for-buildroot-toolchain.patch | 102 ++++++++++++ .../0002-Fix-arm-build-with-glibc-2.27.patch | 28 ++++ package/chromium/Config.in | 64 ++++++++ package/chromium/chromium.hash | 3 + package/chromium/chromium.mk | 146 ++++++++++++++++++ package/chromium/toolchain/BUILD.gn | 71 +++++++++ 8 files changed, 416 insertions(+) create mode 100644 package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patch create mode 100644 package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch create mode 100644 package/chromium/Config.in create mode 100644 package/chromium/chromium.hash create mode 100644 package/chromium/chromium.mk create mode 100644 package/chromium/toolchain/BUILD.gnDEVELOPERS +1
-0@@ -1058,6 +1058,7 @@ F: package/rabbitmq-c/ N: Joseph Kogut <[email protected]> F: package/at-spi2-atk/ F: package/at-spi2-core/ +F: package/chromium/ F: package/gconf/ F: package/libnss/ F: package/lld/package/Config.in +1
-0@@ -14,6 +14,7 @@ menu "Audio and video applications" source "package/aumix/Config.in" source "package/bellagio/Config.in" source "package/bluez-alsa/Config.in" + source "package/chromium/Config.in" source "package/dvblast/Config.in" source "package/dvdauthor/Config.in" source "package/dvdrw-tools/Config.in"package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patch new file +102
-0@@ -0,0 +1,102 @@ +From 3d5106d1d4720e1be8a4bd977be38743d6fb1f3c Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <[email protected]> +Date: Sun, 10 Jun 2018 09:59:11 -0700 +Subject: [PATCH] modify compiler_cpu_abi for buildroot toolchain + +Signed-off-by: Joseph Kogut <[email protected]> +--- + build/config/compiler/BUILD.gn | 36 +++++++++++++++++++--------------- + 1 file changed, 20 insertions(+), 16 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index 461e62da2..27c9f29ed 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -683,6 +683,10 @@ config("compiler_cpu_abi") { + "-march=x86-64", + ] + ldflags += [ "-m64" ] ++ if (is_clang) { ++ cflags += ["--target=x86_64-buildroot-linux-gnu"] ++ ldflags += ["--target=x86_64-buildroot-linux-gnu"] ++ } + } else if (current_cpu == "x86") { + cflags += [ "-m32" ] + ldflags += [ "-m32" ] +@@ -695,8 +699,8 @@ config("compiler_cpu_abi") { + } + } else if (current_cpu == "arm") { + if (is_clang && !is_android && !is_nacl) { +- cflags += [ "--target=arm-linux-gnueabihf" ] +- ldflags += [ "--target=arm-linux-gnueabihf" ] ++ cflags += [ "--target=arm-buildroot-linux-gnueabihf" ] ++ ldflags += [ "--target=arm-buildroot-linux-gnueabihf" ] + } + if (!is_nacl) { + cflags += [ +@@ -709,18 +713,18 @@ config("compiler_cpu_abi") { + } + } else if (current_cpu == "arm64") { + if (is_clang && !is_android && !is_nacl && !is_fuchsia) { +- cflags += [ "--target=aarch64-linux-gnu" ] +- ldflags += [ "--target=aarch64-linux-gnu" ] ++ cflags += [ "--target=aarch64-buildroot-linux-gnu" ] ++ ldflags += [ "--target=aarch64-buildroot-linux-gnu" ] + } + } else if (current_cpu == "mipsel" && !is_nacl) { + if (custom_toolchain == "") { + if (is_clang) { + if (is_android) { +- cflags += [ "--target=mipsel-linux-android" ] +- ldflags += [ "--target=mipsel-linux-android" ] ++ cflags += [ "--target=mipsel-buildroot-linux-android" ] ++ ldflags += [ "--target=mipsel-buildroot-linux-android" ] + } else { +- cflags += [ "--target=mipsel-linux-gnu" ] +- ldflags += [ "--target=mipsel-linux-gnu" ] ++ cflags += [ "--target=mipsel-buildroot-linux-gnu" ] ++ ldflags += [ "--target=mipsel-buildroot-linux-gnu" ] + } + } else { + cflags += [ "-EL" ] +@@ -799,8 +803,8 @@ config("compiler_cpu_abi") { + } else if (current_cpu == "mips" && !is_nacl) { + if (custom_toolchain == "") { + if (is_clang) { +- cflags += [ "--target=mips-linux-gnu" ] +- ldflags += [ "--target=mips-linux-gnu" ] ++ cflags += [ "--target=mips-buildroot-linux-gnu" ] ++ ldflags += [ "--target=mips-buildroot-linux-gnu" ] + } else { + cflags += [ "-EB" ] + ldflags += [ "-EB" ] +@@ -844,11 +848,11 @@ config("compiler_cpu_abi") { + if (custom_toolchain == "") { + if (is_clang) { + if (is_android) { +- cflags += [ "--target=mips64el-linux-android" ] +- ldflags += [ "--target=mips64el-linux-android" ] ++ cflags += [ "--target=mips64el-buildroot-linux-android" ] ++ ldflags += [ "--target=mips64el-buildroot-linux-android" ] + } else { +- cflags += [ "--target=mips64el-linux-gnuabi64" ] +- ldflags += [ "--target=mips64el-linux-gnuabi64" ] ++ cflags += [ "--target=mips64el-buildroot-linux-gnuabi64" ] ++ ldflags += [ "--target=mips64el-buildroot-linux-gnuabi64" ] + } + } else { + cflags += [ +@@ -905,8 +909,8 @@ config("compiler_cpu_abi") { + } else if (current_cpu == "mips64") { + if (custom_toolchain == "") { + if (is_clang) { +- cflags += [ "--target=mips64-linux-gnuabi64" ] +- ldflags += [ "--target=mips64-linux-gnuabi64" ] ++ cflags += [ "--target=mips64-buildroot-linux-gnuabi64" ] ++ ldflags += [ "--target=mips64-buildroot-linux-gnuabi64" ] + } else { + cflags += [ + "-EB", +-- +2.17.1 +package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +28
-0@@ -0,0 +1,28 @@ +From aed4599c18586dfac46139a3c32011f804fdaef6 Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <[email protected]> +Date: Wed, 13 Jun 2018 13:59:24 -0700 +Subject: [PATCH] Fix arm build with glibc 2.27 + +Upstream patch from: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1060155 + +Signed-off-by: Joseph Kogut <[email protected]> +--- + third_party/crashpad/crashpad/compat/linux/sys/ptrace.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h +index 73861576d..e5c95c7cc 100644 +--- a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h ++++ b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h +@@ -34,7 +34,7 @@ static constexpr __ptrace_request PTRACE_GET_THREAD_AREA = + #endif // !PTRACE_GET_THREAD_AREA && !PT_GET_THREAD_AREA && defined(__GLIBC__) + + // https://sourceware.org/bugzilla/show_bug.cgi?id=22433 +-#if !defined(PTRACE_GETVFPREGS) && \ ++#if !defined(PTRACE_GETVFPREGS) && !defined(PT_GETVFPREGS) && \ + defined(__GLIBC__) && (defined(__arm__) || defined(__arm64__)) + static constexpr __ptrace_request PTRACE_GETVFPREGS = + static_cast<__ptrace_request>(27); +-- +2.17.1 +package/chromium/Config.in new file +4
-0@@ -0,0 +1,64 @@ +config BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_aarch64
package/chromium/Config.in line 14
Quoted 10 lines
package/chromium/Config.in new file +10
-0+ default y if BR2_i386 + default y if BR2_x86_64 + +config BR2_PACKAGE_CHROMIUM_TARGET_ARCH + string + default "arm" if BR2_arm + default "arm64" if BR2_aarch64 + default "x86" if BR2_i386 + default "x64" if BR2_x86_64 +
I tried building for an aarch64 target and it fails with the error
ERROR at //chrome/installer/linux/BUILD.gn:413:7: Assertion failed.
assert(false, "Linux installer not configured for this architecture.")
Looking at chrome/installer/linux/BUILD.gn it seems only i386, x86_64, arm, mipsel and mips64el target architectures are supported. I think you need to remove BR2_aarch64 and add BR2_mipsel and BR2_mips64el
package/chromium/Config.in line 16
Quoted 2 lines
package/chromium/Config.in new file +2
-0+menuconfig BR2_PACKAGE_CHROMIUM + bool "chromium"
BR2_PACKAGE_CHROMIUM should depend on BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTS
Quoted 38 lines
package/chromium/Config.in new file +38
-0+ depends on BR2_HOST_GCC_AT_LEAST_4_9 # gn requires -std=c++14 + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_AT_SPI2_ATK + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_HOST_CLANG + select BR2_PACKAGE_HOST_LLD + select BR2_PACKAGE_HOST_NINJA + select BR2_PACKAGE_HOST_NODEJS + select BR2_PACKAGE_HOST_PYTHON + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBERATION # runtime + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_LIBKRB5 + select BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXI if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER + select BR2_PACKAGE_XLIB_LIBXTST if !BR2_PACKAGE_LIBGTK3_X11 + help + Chromium is an open-source Web browser project started by + Google, to provide the source code for the proprietary + Google Chrome browser. + +if BR2_PACKAGE_CHROMIUM + +config BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS + bool "Enable proprietary codecs" + help + Enables proprietary codecs with additional licensing
package/chromium/Config.in line 64
Quoted 10 lines
package/chromium/Config.in new file +10
-0+ restrictions, such as MP3 and H264 + +endif # BR2_PACKAGE_CHROMIUM + +comment "chromium needs toolchain w/ Glibc, host gcc >= 4.9.0" + depends on !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_HOST_GCC_AT_LEAST_4_9 + +comment "chromium depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL
and the comments should also depend on BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTS
Quoted 15 lines
package/chromium/chromium.hash new file +3
-0@@ -0,0 +1,3 @@ +# locally calculated +sha256 f8b1e5319163e378027826b12cf256b97423bb90e10e2013469d96e03bc9db8a chromium-67.0.3396.79.tar.xz +sha256 845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308 LICENSEpackage/chromium/chromium.mk new file +0
-0
package/chromium/chromium.mk line 7
Quoted 7 lines
package/chromium/chromium.mk new file +7
-0@@ -0,0 +1,146 @@ +################################################################################ +# +# Chromium +# +################################################################################ + +CHROMIUM_VERSION = 67.0.3396.79
The current stable release of chromium is 67.0.3396.99
package/chromium/chromium.mk line 12
Quoted 5 lines
package/chromium/chromium.mk new file +5
-0+CHROMIUM_SITE = https://commondatastorage.googleapis.com/chromium-browser-official +CHROMIUM_SOURCE = chromium-$(CHROMIUM_VERSION).tar.xz +CHROMIUM_LICENSE = BSD-Style +CHROMIUM_LICENSE_FILES = LICENSE +CHROMIUM_DEPENDENCIES = alsa-lib cairo cups dbus freetype harfbuzz \
cups should not be listed in CHROMIUM_DEPENDENCIES because you have it optionally compiled in below
Quoted 47 lines
package/chromium/chromium.mk new file +47
-0+ host-clang host-lld host-ninja host-nodejs host-python \ + jpeg libdrm libglib2 libkrb5 libnss libpng pango \ + xlib_libXcomposite xlib_libXScrnSaver xlib_libXcursor \ + xlib_libXrandr zlib + +CHROMIUM_TOOLCHAIN_CONFIG_PATH = $(shell pwd)/package/chromium/toolchain + +CHROMIUM_OPTS = \ + host_toolchain=\"$(CHROMIUM_TOOLCHAIN_CONFIG_PATH):host\" \ + custom_toolchain=\"$(CHROMIUM_TOOLCHAIN_CONFIG_PATH):target\" \ + use_lld=true \ + is_clang=true \ + clang_use_chrome_plugins=false \ + treat_warnings_as_errors=false \ + use_gnome_keyring=false \ + linux_use_bundled_binutils=false \ + use_sysroot=true \ + target_sysroot=\"$(STAGING_DIR)\" \ + target_cpu=\"$(BR2_PACKAGE_CHROMIUM_TARGET_ARCH)\" \ + enable_nacl=false \ + use_dbus=true \ + use_system_zlib=true \ + use_system_libjpeg=true \ + use_system_libpng=true \ + use_system_libdrm=true \ + use_system_harfbuzz=true \ + use_system_freetype=true + +# tcmalloc has portability issues +CHROMIUM_OPTS += use_allocator=\"none\" + +# V8 snapshots require compiling V8 with the same word size as the target +# architecture, which means the host needs to have that toolchain available. +CHROMIUM_OPTS += v8_use_snapshot=false + +ifeq ($(BR2_ENABLE_DEBUG),y) +CHROMIUM_OPTS += is_debug=true +else +CHROMIUM_OPTS += is_debug=false +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +CHROMIUM_DEPENDENCIES += cups +CHROMIUM_OPTS += use_cups=true +else +CHROMIUM_OPTS += use_cups=false +endif
package/chromium/chromium.mk line 69
Quoted 10 lines
package/chromium/chromium.mk new file +10
-0+ +ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) +CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +CHROMIUM_OPTS += use_dbus=true +else +CHROMIUM_OPTS += use_dbus=false +endif
dbus is included in the CHROMIUM_DEPENDENCIES and the default CHROMIUM_OPTS set use_dbus=true so is dbus really optional? I think you can remove this ifeq ($(BR2_PACKAGE_DBUS),y) section
Quoted 25 lines
package/chromium/chromium.mk new file +25
-0+ +ifeq ($(BR2_PACKAGE_PCIUTILS),y) +CHROMIUM_DEPENDENCIES += pciutils +CHROMIUM_OPTS += use_libpci=true +else +CHROMIUM_OPTS += use_libpci=false +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +CHROMIUM_DEPENDENCIES += pulseaudio +CHROMIUM_OPTS += use_pulseaudio=true +else +CHROMIUM_OPTS += use_pulseaudio=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +CHROMIUM_DEPENDENCIES += libgtk3 +CHROMIUM_OPTS += use_gtk3=true +else +CHROMIUM_DEPENDENCIES += libgtk2 xlib_libXi xlib_libXtst +CHROMIUM_OPTS += use_gtk3=false +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +CHROMIUM_TARGET_LDFLAGS += --gcc-toolchain=$(TOOLCHAIN_EXTERNAL_INSTALL_DIR)
package/chromium/chromium.mk line 104
Quoted 10 lines
package/chromium/chromium.mk new file +10
-0+else +CHROMIUM_TARGET_LDFLAGS += --gcc-toolchain=$(HOST_DIR) +endif + +CHROMIUM_TARGET_CFLAGS += $(CHROMIUM_TARGET_LDFLAGS) +CHROMIUM_TARGET_CXXFLAGS += $(CHROMIUM_TARGET_CFLAGS) + +define CHROMIUM_CONFIGURE_CMDS + mkdir -p $(@D)/third_party/node/linux/node-linux-x64/bin + ln -sf $(HOST_DIR)/bin/node $(@D)/third_party/node/linux/node-linux-x64/bin/
Given this is hard coded to node-linux-x64 does this mean chromium will only build if BR2_HOSTARCH is x86_64 ?
Quoted 122 lines
package/chromium/chromium.mk new file +42
-0+ + ( cd $(@D); \ + $(TARGET_MAKE_ENV) \ + $(HOST_DIR)/bin/python2 tools/gn/bootstrap/bootstrap.py -s --no-clean; \ + HOST_AR="$(HOSTAR)" \ + HOST_NM="$(HOSTNM)" \ + HOST_CC="$(HOSTCC)" \ + HOST_CXX="$(HOSTCXX)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ + HOST_CXXFLAGS="$(HOST_CXXFLAGS)" \ + TARGET_AR="ar" \ + TARGET_NM="nm" \ + TARGET_CC="clang" \ + TARGET_CXX="clang++" \ + TARGET_CFLAGS="$(CHROMIUM_TARGET_CFLAGS)" \ + TARGET_CXXFLAGS="$(CHROMIUM_TARGET_CXXFLAGS)" \ + TARGET_LDFLAGS="$(CHROMIUM_TARGET_LDFLAGS)" \ + out/Release/gn gen out/Release --args="$(CHROMIUM_OPTS)" \ + --script-executable=$(HOST_DIR)/bin/python2 \ + ) +endef + +define CHROMIUM_BUILD_CMDS + ( cd $(@D); \ + $(TARGET_MAKE_ENV) \ + ninja -j$(PARALLEL_JOBS) -C out/Release chrome chrome_sandbox chromedriver \ + ) +endef + +define CHROMIUM_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/out/Release/chrome $(TARGET_DIR)/usr/lib/chromium/chromium + $(INSTALL) -Dm4755 $(@D)/out/Release/chrome_sandbox \ + $(TARGET_DIR)/usr/lib/chromium/chrome-sandbox + cp $(@D)/out/Release/{chrome_{100,200}_percent,resources}.pak \ + $(@D)/out/Release/chromedriver \ + $(TARGET_DIR)/usr/lib/chromium/ + $(INSTALL) -Dm644 -t $(TARGET_DIR)/usr/lib/chromium/locales \ + $(@D)/out/Release/locales/*.pak + cp $(@D)/out/Release/icudtl.dat $(TARGET_DIR)/usr/lib/chromium/ +endef + +$(eval $(generic-package))package/chromium/toolchain/BUILD.gn new file +71
-1@@ -0,0 +1,71 @@ +import("//build/toolchain/gcc_toolchain.gni") +import("//build/config/sysroot.gni") + +gcc_toolchain("host") { + cc = getenv("HOST_CC") + cxx = getenv("HOST_CXX") + ar = getenv("HOST_AR") + nm = getenv("HOST_NM") + ld = cxx + + extra_cflags = getenv("HOST_CFLAGS") + extra_cppflags = getenv("HOST_CPPFLAGS") + extra_cxxflags = getenv("HOST_CXXFLAGS") + extra_ldflags = getenv("HOST_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + current_cpu = host_cpu + current_os = host_os + is_clang = false + use_sysroot = false + use_lld = false + } +} + +gcc_toolchain("target") { + cc = getenv("TARGET_CC") + cxx = getenv("TARGET_CXX") + ar = getenv("TARGET_AR") + nm = getenv("TARGET_NM") + ld = cxx + + extra_cflags = getenv("TARGET_CFLAGS") + extra_cppflags = getenv("TARGET_CPPFLAGS") + extra_cxxflags = getenv("TARGET_CXXFLAGS") + extra_ldflags = getenv("TARGET_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + current_cpu = target_cpu + current_os = target_os + is_clang = is_clang + use_sysroot = use_sysroot + } +} + +gcc_toolchain("v8_snapshot") { + cc = getenv("V8_CC") + cxx = getenv("V8_CXX") + ar = getenv("V8_AR") + nm = getenv("V8_NM") + ld = cxx + + extra_cflags = getenv("V8_CFLAGS") + extra_cppflags = getenv("V8_CPPFLAGS") + extra_cxxflags = getenv("V8_CXXFLAGS") + extra_ldflags = getenv("V8_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + if (target_cpu == "x86" || target_cpu == "arm" || target_cpu == "mipsel") { + current_cpu = "x86" + } else { + current_cpu = "x64" + } + current_os = host_os + is_clang = is_clang + use_sysroot = false + } +} + --2.18.0
Quoted 4 lines
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Thanks
Martin
PATCH v6 4/4 chromium: new package
Hi Martin,
Quoted 1 line · Martin Bark
<snip>
Quoted 10 lines
I tried building for an aarch64 target and it fails with the error
ERROR at //chrome/installer/linux/BUILD.gn:413:7: Assertion failed.
assert(false, "Linux installer not configured for this architecture.")Looking at chrome/installer/linux/BUILD.gn it seems only i386,
x86_64, arm, mipsel and mips64el target architectures are supported. I think you need to removeBR2_aarch64and addBR2_mipselandBR2_mips64el
Can you try adding the argument "enable_linux_installer=false" to CHROMIUM_OPTS in chromium.mk, then reconfiguring and rebuilding?
I believe the "linux installer" target here is simply packaging for Debian and Fedora, which this package doesn't use.
Quoted 16 lines
package/chromium/Config.in line 64
Quoted 6 lines
package/chromium/Config.in new file +6
-0+comment "chromium needs toolchain w/ Glibc, host gcc >= 4.9.0" + depends on !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_HOST_GCC_AT_LEAST_4_9 + +comment "chromium depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGLand the comments should also depend on
BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTSpackage/chromium/chromium.mk line 7
Quoted 2 lines
package/chromium/chromium.mk new file +2
-0+ +CHROMIUM_VERSION = 67.0.3396.79The current stable release of chromium is 67.0.3396.99
Quoted 5 lines
Quoted 1 line
+CHROMIUM_DEPENDENCIES = alsa-lib cairo cups dbus freetype harfbuzz \
cups should not be listed in
CHROMIUM_DEPENDENCIESbecause you have it optionally compiled in below
Thanks for the tips, I'll fix these things in the next release.
Quoted 10 lines
package/chromium/chromium.mk line 69
Quoted 5 lines
package/chromium/chromium.mk new file +5
-0+ifeq ($(BR2_PACKAGE_DBUS),y) +CHROMIUM_OPTS += use_dbus=true +else +CHROMIUM_OPTS += use_dbus=false +endifdbus is included in the
CHROMIUM_DEPENDENCIESand the defaultCHROMIUM_OPTSset use_dbus=true so is dbus really optional? I think you can remove this ifeq ($(BR2_PACKAGE_DBUS),y) section
I have this fixed in my WIP branch for next release.
Quoted 7 lines
package/chromium/chromium.mk line 104
Quoted 3 lines
package/chromium/chromium.mk new file +3
-0+define CHROMIUM_CONFIGURE_CMDS + mkdir -p $(@D)/third_party/node/linux/node-linux-x64/bin + ln -sf $(HOST_DIR)/bin/node $(@D)/third_party/node/linux/node-linux-x64/bin/Given this is hard coded to node-linux-x64 does this mean chromium will only build if
BR2_HOSTARCHisx86_64?
I haven't tried building on a different host arch, but this is likely the case. I'm not aware of any other common processors using other architectures that are fast enough to compile Chromium in a reasonable amount of time. Additionally, compiling Chromium requires a minimum of 4 GiB of memory.
Is it reasonable to depend on BR2_HOSTARCH = x86_64, or is it worth seeing what can be done to fix this?
Thanks,
Joseph
PATCH v6 4/4 chromium: new package
Joseph,
Quoted 16 lines · Joseph Kogut
Hi Martin,
Quoted 1 line · Martin Bark
<snip>
Quoted 10 lines
I tried building for an aarch64 target and it fails with the error
ERROR at //chrome/installer/linux/BUILD.gn:413:7: Assertion failed.
assert(false, "Linux installer not configured for this architecture.")Looking at chrome/installer/linux/BUILD.gn it seems only i386,
x86_64, arm, mipsel and mips64el target architectures are supported. I think you need to removeBR2_aarch64and addBR2_mipselandBR2_mips64el
Quoted 6 lines
Can you try adding the argument "enable_linux_installer=false" to
CHROMIUM_OPTSin chromium.mk, then reconfiguring and rebuilding?I believe the "linux installer" target here is simply packaging for Debian and Fedora, which this package doesn't use.
Thanks, that go the build further. Now it fails with the following error. Any ideas?
ERROR at //build/config/linux/pkg_config.gni:103:17: Script returned non-zero exit code.
pkgresult = exec_script(pkg_config_script, args, "value")
^----------
Current dir: /home/br-user/buildroot/output/build/chromium-67.0.3396.79/out/Release/
Command: /home/br-user/buildroot/output/host/bin/python2 -- /home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py -s /home/br-user/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -a arm64 --system_libdir lib nss -v -lssl3
Returned 1.
stderr:
Traceback (most recent call last):
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 232, in <module>
sys.exit(main())
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 139, in main
prefix = GetPkgConfigPrefixToStrip(options, args)
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 80, in GetPkgConfigPrefixToStrip
"--variable=prefix"] + args, env=os.environ)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 216, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 394, in __init__
errread, errwrite)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 1047, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
See //third_party/nss/BUILD.gn:15:3: whence it was called.
pkg_config("system_nss_no_ssl_config") { ^---------------------------------------
See //crypto/BUILD.gn:221:25: which caused the file to be included.
public_configs += [ "//third_party/nss:system_nss_no_ssl_config" ]
^-------------------------------------------package/pkg-generic.mk:219: recipe for target '/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured' failed
make: *** [/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured] Error 1
Thanks
Martin
Quoted 56 lines
Quoted 16 lines
package/chromium/Config.in line 64
Quoted 6 lines
package/chromium/Config.in new file +6
-0+comment "chromium needs toolchain w/ Glibc, host gcc >= 4.9.0" + depends on !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_HOST_GCC_AT_LEAST_4_9 + +comment "chromium depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGLand the comments should also depend on
BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTSpackage/chromium/chromium.mk line 7
Quoted 2 lines
package/chromium/chromium.mk new file +2
-0+ +CHROMIUM_VERSION = 67.0.3396.79The current stable release of chromium is 67.0.3396.99
Quoted 5 lines
Quoted 1 line
+CHROMIUM_DEPENDENCIES = alsa-lib cairo cups dbus freetype harfbuzz \
cups should not be listed in
CHROMIUM_DEPENDENCIESbecause you have it optionally compiled in belowThanks for the tips, I'll fix these things in the next release.
Quoted 10 lines
package/chromium/chromium.mk line 69
Quoted 5 lines
package/chromium/chromium.mk new file +5
-0+ifeq ($(BR2_PACKAGE_DBUS),y) +CHROMIUM_OPTS += use_dbus=true +else +CHROMIUM_OPTS += use_dbus=false +endifdbus is included in the
CHROMIUM_DEPENDENCIESand the defaultCHROMIUM_OPTSset use_dbus=true so is dbus really optional? I think you can remove this ifeq ($(BR2_PACKAGE_DBUS),y) sectionI have this fixed in my WIP branch for next release.
Quoted 7 lines
package/chromium/chromium.mk line 104
Quoted 3 lines
package/chromium/chromium.mk new file +3
-0+define CHROMIUM_CONFIGURE_CMDS + mkdir -p $(@D)/third_party/node/linux/node-linux-x64/bin + ln -sf $(HOST_DIR)/bin/node $(@D)/third_party/node/linux/node-linux-x64/bin/Given this is hard coded to node-linux-x64 does this mean chromium will only build if
BR2_HOSTARCHisx86_64?I haven't tried building on a different host arch, but this is likely the case. I'm not aware of any other common processors using other architectures that are fast enough to compile Chromium in a reasonable amount of time. Additionally, compiling Chromium requires a minimum of 4 GiB of memory.
Is it reasonable to depend on
BR2_HOSTARCH=x86_64, or is it worth seeing what can be done to fix this?Thanks,
Joseph
PATCH v6 4/4 chromium: new package
Martin,
Quoted 69 lines · Martin Bark
Joseph,
Quoted 16 lines · Joseph Kogut
Hi Martin,
Quoted 1 line · Martin Bark
<snip>
Quoted 10 lines
I tried building for an aarch64 target and it fails with the error
ERROR at //chrome/installer/linux/BUILD.gn:413:7: Assertion failed.
assert(false, "Linux installer not configured for this architecture.")Looking at chrome/installer/linux/BUILD.gn it seems only i386,
x86_64, arm, mipsel and mips64el target architectures are supported. I think you need to removeBR2_aarch64and addBR2_mipselandBR2_mips64elQuoted 6 lines
Can you try adding the argument "enable_linux_installer=false" to
CHROMIUM_OPTSin chromium.mk, then reconfiguring and rebuilding?I believe the "linux installer" target here is simply packaging for Debian and Fedora, which this package doesn't use.
Thanks, that go the build further. Now it fails with the following error. Any ideas?
ERROR at //build/config/linux/pkg_config.gni:103:17: Script returned non-zero exit code.
pkgresult =exec_script(pkg_config_script, args, "value")
^----------
Current dir:/home/br-user/buildroot/output/build/chromium-67.0.3396.79/out/Release/
Command:/home/br-user/buildroot/output/host/bin/python2--/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py(quoted diff) +0
-2-s /home/br-user/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -a arm64 --system_libdir lib nss -v -lssl3Returned 1.
stderr:Traceback (most recent call last):
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 232, in <module>sys.exit(main())File "
/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 139, in main
prefix =GetPkgConfigPrefixToStrip(options, args)
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 80, in GetPkgConfigPrefixToStrip
"--variable=prefix"] + args, env=os.environ)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 216, incheck_output
process =Popen(stdout=PIPE, *popenargs, **kwargs)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 394, in__init__
errread, errwrite)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 1047, in_execute_child
raisechild_exception
OSError: [Errno 2] No such file or directorySee //third_party/nss/BUILD.gn:15:3: whence it was called.
pkg_config("system_nss_no_ssl_config"){ ^---------------------------------------
See //crypto/BUILD.gn:221:25: which caused the file to be included.
Quoted 8 lines
public_configs += [ "//third_party/nss:system_nss_no_ssl_config" ] ^-------------------------------------------
package/pkg-generic.mk:219: recipe for target '/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured' failed
make: *** [/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured] Error 1
I think this issue, along with a few others, have since been resolved in my chromium-v7-wip branch, which you can find at
https://github.com/jakogut/buildroot.
PATCH v6 4/4 chromium: new package
Joseph,
Quoted 68 lines · Joseph Kogut
Martin,
Quoted 65 lines · Martin Bark
Joseph,
Quoted 16 lines · Joseph Kogut
Hi Martin,
Quoted 1 line · Martin Bark
<snip>
Quoted 10 lines
I tried building for an aarch64 target and it fails with the error
ERROR at //chrome/installer/linux/BUILD.gn:413:7: Assertion failed.
assert(false, "Linux installer not configured for this architecture.")Looking at chrome/installer/linux/BUILD.gn it seems only i386,
x86_64, arm, mipsel and mips64el target architectures are supported. I think you need to removeBR2_aarch64and addBR2_mipselandBR2_mips64elQuoted 6 lines
Can you try adding the argument "enable_linux_installer=false" to
CHROMIUM_OPTSin chromium.mk, then reconfiguring and rebuilding?I believe the "linux installer" target here is simply packaging for Debian and Fedora, which this package doesn't use.
Thanks, that go the build further. Now it fails with the following error. Any ideas?
ERROR at //build/config/linux/pkg_config.gni:103:17: Script returned non-zero exit code.
pkgresult =exec_script(pkg_config_script, args, "value")
^----------
Current dir:/home/br-user/buildroot/output/build/chromium-67.0.3396.79/out/Release/
Command:/home/br-user/buildroot/output/host/bin/python2--/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py(quoted diff) +0
-2-s /home/br-user/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -a arm64 --system_libdir lib nss -v -lssl3Returned 1.
stderr:Traceback (most recent call last):
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 232, in <module>sys.exit(main())File "
/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 139, in main
prefix =GetPkgConfigPrefixToStrip(options, args)
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 80, in GetPkgConfigPrefixToStrip
"--variable=prefix"] + args, env=os.environ)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 216, incheck_output
process =Popen(stdout=PIPE, *popenargs, **kwargs)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 394, in__init__
errread, errwrite)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 1047, in_execute_child
raisechild_exception
OSError: [Errno 2] No such file or directory
Quoted 16 lines
Quoted 4 lines
See //third_party/nss/BUILD.gn:15:3: whence it was called.
pkg_config("system_nss_no_ssl_config"){ ^---------------------------------------
See //crypto/BUILD.gn:221:25: which caused the file to be included.Quoted 8 lines
public_configs += [ "//third_party/nss:system_nss_no_ssl_config" ] ^-------------------------------------------
package/pkg-generic.mk:219: recipe for target '/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured' failed
make: *** [/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured] Error 1I think this issue, along with a few others, have since been resolved in my chromium-v7-wip branch, which you can find at
https://github.com/jakogut/buildroot.
I just tried out your chromium-v7-wip branch but unfortunately i get the exact same error. Note i'm building inside the buildroot/base:20180318.1724 docker container.
Also, to get the code to build i had to change select BR2_PACKAGE_JPEG_TURBO into BR2_PACKAGE_JPEG in package/chromium/Config.in. I think you should also change the CHROMIUM_DEPENDENCIES from jpeg-turbo to jpeg and let the jpeg package pick which jpeg library to use for the target.
Thanks
Martin
PATCH v6 4/4 chromium: new package
Quoted 93 lines · Martin Bark
Joseph,
Quoted 68 lines · Joseph Kogut
Martin,
Quoted 65 lines · Martin Bark
Joseph,
Quoted 16 lines · Joseph Kogut
Hi Martin,
Quoted 1 line · Martin Bark
<snip>
Quoted 10 lines
I tried building for an aarch64 target and it fails with the error
ERROR at //chrome/installer/linux/BUILD.gn:413:7: Assertion failed.
assert(false, "Linux installer not configured for this architecture.")Looking at chrome/installer/linux/BUILD.gn it seems only i386,
x86_64, arm, mipsel and mips64el target architectures are supported. I think you need to removeBR2_aarch64and addBR2_mipselandBR2_mips64elQuoted 6 lines
Can you try adding the argument "enable_linux_installer=false" to
CHROMIUM_OPTSin chromium.mk, then reconfiguring and rebuilding?I believe the "linux installer" target here is simply packaging for Debian and Fedora, which this package doesn't use.
Thanks, that go the build further. Now it fails with the following error. Any ideas?
ERROR at //build/config/linux/pkg_config.gni:103:17: Script returned non-zero exit code.
pkgresult =exec_script(pkg_config_script, args, "value")
^----------
Current dir:/home/br-user/buildroot/output/build/chromium-67.0.3396.79/out/Release/
Command:/home/br-user/buildroot/output/host/bin/python2--/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py(quoted diff) +0
-2-s /home/br-user/buildroot/output/host/aarch64-buildroot-linux-gnu/sysroot -a arm64 --system_libdir lib nss -v -lssl3Returned 1.
stderr:Traceback (most recent call last):
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 232, in <module>sys.exit(main())File "
/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 139, in main
prefix =GetPkgConfigPrefixToStrip(options, args)
File "/home/br-user/buildroot/output/build/chromium-67.0.3396.79/build/config/linux/pkg-config.py",
line 80, in GetPkgConfigPrefixToStrip
"--variable=prefix"] + args, env=os.environ)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 216, incheck_output
process =Popen(stdout=PIPE, *popenargs, **kwargs)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 394, in__init__
errread, errwrite)
File "/home/br-user/buildroot/output/host/lib/python2.7/subprocess.py",
line 1047, in_execute_child
raisechild_exception
OSError: [Errno 2] No such file or directoryQuoted 16 lines
Quoted 4 lines
See //third_party/nss/BUILD.gn:15:3: whence it was called.
pkg_config("system_nss_no_ssl_config"){ ^---------------------------------------
See //crypto/BUILD.gn:221:25: which caused the file to be included.Quoted 8 lines
public_configs += [ "//third_party/nss:system_nss_no_ssl_config" ] ^-------------------------------------------
package/pkg-generic.mk:219: recipe for target '/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured' failed
make: *** [/home/br-user/buildroot/output/build/chromium-67.0.3396.79/.stamp_configured] Error 1I think this issue, along with a few others, have since been resolved in my chromium-v7-wip branch, which you can find at
https://github.com/jakogut/buildroot.I just tried out your chromium-v7-wip branch but unfortunately i get the exact same error. Note i'm building inside the buildroot/base:20180318.1724 docker container.
Quoted 6 lines
Also, to get the code to build i had to change select
BR2_PACKAGE_JPEG_TURBOintoBR2_PACKAGE_JPEGin package/chromium/Config.in. I think you should also change theCHROMIUM_DEPENDENCIESfrom jpeg-turbo to jpeg and let the jpeg package pick which jpeg library to use for the target.
Skia depends on libjpeg-turbo, and will fail during linking if it's not selected. Specfically, what build error did you encounter?
PATCH v6 4/4 chromium: new package
In reply to Joseph KogutHello Joseph,
I have applied your v6 patch to the Buildroot 2018.05 and wanted to build the chrome in a x86 arch.
The Target option is like this :
/Target Architecture : i386
Target Architecture Variant i586/
And I have added the following in the lld.mk
HOST_LLD_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_DYLIB_COMPONENTS=all
+ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) +CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif
And finally I have comment the following in the chromium.mk
+ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y)
+ # CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif
But now there is still a problem
/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocation R_386_32 against local symbol in readonly segment; recompile object files with -fPIC
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
defined in obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o) referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a
could you please tell me how to fix this problem?
thank you very much!
Hao
Joseph Kogut wrote
Quoted 548 lines
Signed-off-by Joseph Kogut <joseph.kogut@
>
--- DEVELOPERS | 1 + package/Config.in | 1 + ...iler_cpu_abi-for-buildroot-toolchain.patch | 102 ++++++++++++ .../0002-Fix-arm-build-with-glibc-2.27.patch | 28 ++++ package/chromium/Config.in | 64 ++++++++ package/chromium/chromium.hash | 3 + package/chromium/chromium.mk | 146 ++++++++++++++++++ package/chromium/toolchain/BUILD.gn | 71 +++++++++ 8 files changed, 416 insertions(+) create mode 100644 package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patch create mode 100644 package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch create mode 100644 package/chromium/Config.in create mode 100644 package/chromium/chromium.hash create mode 100644 package/chromium/chromium.mk create mode 100644 package/chromium/toolchain/BUILD.gnDEVELOPERS +0
-0@@ -1058,6 +1058,7 @@ F: package/rabbitmq-c/ N: Joseph Kogut <joseph.kogut@
>
F: package/at-spi2-atk/
F: package/at-spi2-core/DEVELOPERS +1
-0+F: package/chromium/ F: package/gconf/ F: package/libnss/ F: package/lld/package/Config.in +1
-0@@ -14,6 +14,7 @@ menu "Audio and video applications" source "package/aumix/Config.in" source "package/bellagio/Config.in" source "package/bluez-alsa/Config.in" + source "package/chromium/Config.in" source "package/dvblast/Config.in" source "package/dvdauthor/Config.in" source "package/dvdrw-tools/Config.in"diff --git
a/package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patchb/package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patchnew file mode 100644
index 0000000000..1848b0bd14
---/dev/null
+++b/package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patchpackage/Config.in +2
-0@@ -0,0 +1,102 @@ +From 3d5106d1d4720e1be8a4bd977be38743d6fb1f3c Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <joseph.kogut@
>
package/Config.in +4
-0+Date: Sun, 10 Jun 2018 09:59:11 -0700 +Subject: [PATCH] modify compiler_cpu_abi for buildroot toolchain + +Signed-off-by: Joseph Kogut <joseph.kogut@
>
+--- + build/config/compiler/BUILD.gn | 36 +++++++++++++++++++---------------+ 1 file changed, 20 insertions(+), 16 deletions(-)
package/Config.in +2
-0+ +diff --git a/build/config/compiler/BUILD.gnb/build/config/compiler/BUILD.gn
package/Config.in +91
-0+index 461e62da2..27c9f29ed 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -683,6 +683,10 @@ config("compiler_cpu_abi") { + "-march=x86-64", + ] + ldflags += [ "-m64" ] ++ if (is_clang) { ++ cflags += ["--target=x86_64-buildroot-linux-gnu"] ++ ldflags += ["--target=x86_64-buildroot-linux-gnu"] ++ } + } else if (current_cpu == "x86") { + cflags += [ "-m32" ] + ldflags += [ "-m32" ] +@@ -695,8 +699,8 @@ config("compiler_cpu_abi") { + } + } else if (current_cpu == "arm") { + if (is_clang && !is_android && !is_nacl) { +- cflags += [ "--target=arm-linux-gnueabihf" ] +- ldflags += [ "--target=arm-linux-gnueabihf" ] ++ cflags += [ "--target=arm-buildroot-linux-gnueabihf" ] ++ ldflags += [ "--target=arm-buildroot-linux-gnueabihf" ] + } + if (!is_nacl) { + cflags += [ +@@ -709,18 +713,18 @@ config("compiler_cpu_abi") { + } + } else if (current_cpu == "arm64") { + if (is_clang && !is_android && !is_nacl && !is_fuchsia) { +- cflags += [ "--target=aarch64-linux-gnu" ] +- ldflags += [ "--target=aarch64-linux-gnu" ] ++ cflags += [ "--target=aarch64-buildroot-linux-gnu" ] ++ ldflags += [ "--target=aarch64-buildroot-linux-gnu" ] + } + } else if (current_cpu == "mipsel" && !is_nacl) { + if (custom_toolchain == "") { + if (is_clang) { + if (is_android) { +- cflags += [ "--target=mipsel-linux-android" ] +- ldflags += [ "--target=mipsel-linux-android" ] ++ cflags += [ "--target=mipsel-buildroot-linux-android" ] ++ ldflags += [ "--target=mipsel-buildroot-linux-android" ] + } else { +- cflags += [ "--target=mipsel-linux-gnu" ] +- ldflags += [ "--target=mipsel-linux-gnu" ] ++ cflags += [ "--target=mipsel-buildroot-linux-gnu" ] ++ ldflags += [ "--target=mipsel-buildroot-linux-gnu" ] + } + } else { + cflags += [ "-EL" ] +@@ -799,8 +803,8 @@ config("compiler_cpu_abi") { + } else if (current_cpu == "mips" && !is_nacl) { + if (custom_toolchain == "") { + if (is_clang) { +- cflags += [ "--target=mips-linux-gnu" ] +- ldflags += [ "--target=mips-linux-gnu" ] ++ cflags += [ "--target=mips-buildroot-linux-gnu" ] ++ ldflags += [ "--target=mips-buildroot-linux-gnu" ] + } else { + cflags += [ "-EB" ] + ldflags += [ "-EB" ] +@@ -844,11 +848,11 @@ config("compiler_cpu_abi") { + if (custom_toolchain == "") { + if (is_clang) { + if (is_android) { +- cflags += [ "--target=mips64el-linux-android" ] +- ldflags += [ "--target=mips64el-linux-android" ] ++ cflags += [ "--target=mips64el-buildroot-linux-android" ] ++ ldflags += [ "--target=mips64el-buildroot-linux-android" ] + } else { +- cflags += [ "--target=mips64el-linux-gnuabi64" ] +- ldflags += [ "--target=mips64el-linux-gnuabi64" ] ++ cflags += [ "--target=mips64el-buildroot-linux-gnuabi64" ] ++ ldflags += [ "--target=mips64el-buildroot-linux-gnuabi64" ] + } + } else { + cflags += [ +@@ -905,8 +909,8 @@ config("compiler_cpu_abi") { + } else if (current_cpu == "mips64") { + if (custom_toolchain == "") { + if (is_clang) { +- cflags += [ "--target=mips64-linux-gnuabi64" ] +- ldflags += [ "--target=mips64-linux-gnuabi64" ] ++ cflags += [ "--target=mips64-buildroot-linux-gnuabi64" ] ++ ldflags += [ "--target=mips64-buildroot-linux-gnuabi64" ] + } else { + cflags += [ + "-EB", +-- +2.17.1 +package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +2
-0@@ -0,0 +1,28 @@ +From aed4599c18586dfac46139a3c32011f804fdaef6 Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <joseph.kogut@
>
package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +4
-0+Date: Wed, 13 Jun 2018 13:59:24 -0700 +Subject: [PATCH] Fix arm build with glibc 2.27 + +Upstream patch from:https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1060155
package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +2
-0+ +Signed-off-by: Joseph Kogut <joseph.kogut@
>
+--- + third_party/crashpad/crashpad/compat/linux/sys/ptrace.h | 2 +-+ 1 file changed, 1 insertion(+), 1 deletion(-)
package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +2
-0+ +diff --git a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h
b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h+index73861576d..e5c95c7cc100644
+---a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h++++b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h+@@ -34,7 +34,7 @@ static constexpr__ptrace_requestPTRACE_GET_THREAD_AREA=
+ #endif // !PTRACE_GET_THREAD_AREA && !PT_GET_THREAD_AREA &&defined(__GLIBC__)
+
+ // https://sourceware.org/bugzilla/show_bug.cgi?id=22433
+-#if !defined(PTRACE_GETVFPREGS) && \
++#if !defined(PTRACE_GETVFPREGS) && !defined(PT_GETVFPREGS) && \package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +6
-0+ defined(__GLIBC__) && (defined(__arm__) || defined(__arm64__)) + static constexpr __ptrace_request PTRACE_GETVFPREGS = + static_cast<__ptrace_request>(27); +-- +2.17.1 +package/chromium/Config.in new file +64
-0@@ -0,0 +1,64 @@ +config BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_x86_64 + +config BR2_PACKAGE_CHROMIUM_TARGET_ARCH + string + default "arm" if BR2_arm + default "arm64" if BR2_aarch64 + default "x86" if BR2_i386 + default "x64" if BR2_x86_64 + +menuconfig BR2_PACKAGE_CHROMIUM + bool "chromium" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # gn requires -std=c++14 + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_AT_SPI2_ATK + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_HOST_CLANG + select BR2_PACKAGE_HOST_LLD + select BR2_PACKAGE_HOST_NINJA + select BR2_PACKAGE_HOST_NODEJS + select BR2_PACKAGE_HOST_PYTHON + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBERATION # runtime + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_LIBKRB5 + select BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXI if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER + select BR2_PACKAGE_XLIB_LIBXTST if !BR2_PACKAGE_LIBGTK3_X11 + help + Chromium is an open-source Web browser project started by + Google, to provide the source code for the proprietary + Google Chrome browser. + +if BR2_PACKAGE_CHROMIUM + +config BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS + bool "Enable proprietary codecs" + help + Enables proprietary codecs with additional licensing + restrictions, such as MP3 and H264 + +endif # BR2_PACKAGE_CHROMIUM + +comment "chromium needs toolchain w/ Glibc, host gcc >= 4.9.0" + depends on !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_HOST_GCC_AT_LEAST_4_9 + +comment "chromium depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGLpackage/chromium/chromium.hash new file +2
-0@@ -0,0 +1,3 @@ +# locally calculated +sha256 f8b1e5319163e378027826b12cf256b97423bb90e10e2013469d96e03bc9db8achromium-67.0.3396.79.tar.xz
+sha256845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308LICENSEpackage/chromium/chromium.mk new file +8
-0@@ -0,0 +1,146 @@ +################################################################################ +# +# Chromium +# +################################################################################ + +CHROMIUM_VERSION = 67.0.3396.79 +CHROMIUM_SITE =https://commondatastorage.googleapis.com/chromium-browser-official
package/chromium/chromium.mk new file +37
-0+CHROMIUM_SOURCE = chromium-$(CHROMIUM_VERSION).tar.xz +CHROMIUM_LICENSE = BSD-Style +CHROMIUM_LICENSE_FILES = LICENSE +CHROMIUM_DEPENDENCIES = alsa-lib cairo cups dbus freetype harfbuzz \ + host-clang host-lld host-ninja host-nodejs host-python \ + jpeg libdrm libglib2 libkrb5 libnss libpng pango \ + xlib_libXcomposite xlib_libXScrnSaver xlib_libXcursor \ + xlib_libXrandr zlib + +CHROMIUM_TOOLCHAIN_CONFIG_PATH = $(shell pwd)/package/chromium/toolchain + +CHROMIUM_OPTS = \ + host_toolchain=\"$(CHROMIUM_TOOLCHAIN_CONFIG_PATH):host\" \ + custom_toolchain=\"$(CHROMIUM_TOOLCHAIN_CONFIG_PATH):target\" \ + use_lld=true \ + is_clang=true \ + clang_use_chrome_plugins=false \ + treat_warnings_as_errors=false \ + use_gnome_keyring=false \ + linux_use_bundled_binutils=false \ + use_sysroot=true \ + target_sysroot=\"$(STAGING_DIR)\" \ + target_cpu=\"$(BR2_PACKAGE_CHROMIUM_TARGET_ARCH)\" \ + enable_nacl=false \ + use_dbus=true \ + use_system_zlib=true \ + use_system_libjpeg=true \ + use_system_libpng=true \ + use_system_libdrm=true \ + use_system_harfbuzz=true \ + use_system_freetype=true + +# tcmalloc has portability issues +CHROMIUM_OPTS += use_allocator=\"none\" + +# V8 snapshots require compiling V8 with the same word size as the target +# architecture, which means the host needs to have that toolchainavailable.
package/chromium/chromium.mk new file +59
-1+CHROMIUM_OPTS += v8_use_snapshot=false + +ifeq ($(BR2_ENABLE_DEBUG),y) +CHROMIUM_OPTS += is_debug=true +else +CHROMIUM_OPTS += is_debug=false +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +CHROMIUM_DEPENDENCIES += cups +CHROMIUM_OPTS += use_cups=true +else +CHROMIUM_OPTS += use_cups=false +endif + +ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) +CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +CHROMIUM_OPTS += use_dbus=true +else +CHROMIUM_OPTS += use_dbus=false +endif + +ifeq ($(BR2_PACKAGE_PCIUTILS),y) +CHROMIUM_DEPENDENCIES += pciutils +CHROMIUM_OPTS += use_libpci=true +else +CHROMIUM_OPTS += use_libpci=false +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +CHROMIUM_DEPENDENCIES += pulseaudio +CHROMIUM_OPTS += use_pulseaudio=true +else +CHROMIUM_OPTS += use_pulseaudio=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +CHROMIUM_DEPENDENCIES += libgtk3 +CHROMIUM_OPTS += use_gtk3=true +else +CHROMIUM_DEPENDENCIES += libgtk2 xlib_libXi xlib_libXtst +CHROMIUM_OPTS += use_gtk3=false +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +CHROMIUM_TARGET_LDFLAGS += --gcc-toolchain=$(TOOLCHAIN_EXTERNAL_INSTALL_DIR) +else +CHROMIUM_TARGET_LDFLAGS += --gcc-toolchain=$(HOST_DIR) +endif + +CHROMIUM_TARGET_CFLAGS += $(CHROMIUM_TARGET_LDFLAGS) +CHROMIUM_TARGET_CXXFLAGS += $(CHROMIUM_TARGET_CFLAGS) + +define CHROMIUM_CONFIGURE_CMDS + mkdir -p $(@D)/third_party/node/linux/node-linux-x64/bin + ln -sf $(HOST_DIR)/bin/node$(@D)/third_party/node/linux/node-linux-x64/bin/
package/chromium/chromium.mk new file +4
-0+ + ( cd $(@D); \ + $(TARGET_MAKE_ENV) \ + $(HOST_DIR)/bin/python2 tools/gn/bootstrap/bootstrap.py -s --no-clean;\
package/chromium/chromium.mk new file +22
-0+ HOST_AR="$(HOSTAR)" \ + HOST_NM="$(HOSTNM)" \ + HOST_CC="$(HOSTCC)" \ + HOST_CXX="$(HOSTCXX)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ + HOST_CXXFLAGS="$(HOST_CXXFLAGS)" \ + TARGET_AR="ar" \ + TARGET_NM="nm" \ + TARGET_CC="clang" \ + TARGET_CXX="clang++" \ + TARGET_CFLAGS="$(CHROMIUM_TARGET_CFLAGS)" \ + TARGET_CXXFLAGS="$(CHROMIUM_TARGET_CXXFLAGS)" \ + TARGET_LDFLAGS="$(CHROMIUM_TARGET_LDFLAGS)" \ + out/Release/gn gen out/Release --args="$(CHROMIUM_OPTS)" \ + --script-executable=$(HOST_DIR)/bin/python2 \ + ) +endef + +define CHROMIUM_BUILD_CMDS + ( cd $(@D); \ + $(TARGET_MAKE_ENV) \ + ninja -j$(PARALLEL_JOBS) -C out/Release chrome chrome_sandboxchromedriver \
package/chromium/chromium.mk new file +5
-0+ ) +endef + +define CHROMIUM_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/out/Release/chrome$(TARGET_DIR)/usr/lib/chromium/chromium
package/chromium/chromium.mk new file +11
-0+ $(INSTALL) -Dm4755 $(@D)/out/Release/chrome_sandbox \ + $(TARGET_DIR)/usr/lib/chromium/chrome-sandbox + cp $(@D)/out/Release/{chrome_{100,200}_percent,resources}.pak \ + $(@D)/out/Release/chromedriver \ + $(TARGET_DIR)/usr/lib/chromium/ + $(INSTALL) -Dm644 -t $(TARGET_DIR)/usr/lib/chromium/locales \ + $(@D)/out/Release/locales/*.pak + cp $(@D)/out/Release/icudtl.dat $(TARGET_DIR)/usr/lib/chromium/ +endef + +$(eval $(generic-package))package/chromium/toolchain/BUILD.gn new file +61
-0@@ -0,0 +1,71 @@ +import("//build/toolchain/gcc_toolchain.gni") +import("//build/config/sysroot.gni") + +gcc_toolchain("host") { + cc = getenv("HOST_CC") + cxx = getenv("HOST_CXX") + ar = getenv("HOST_AR") + nm = getenv("HOST_NM") + ld = cxx + + extra_cflags = getenv("HOST_CFLAGS") + extra_cppflags = getenv("HOST_CPPFLAGS") + extra_cxxflags = getenv("HOST_CXXFLAGS") + extra_ldflags = getenv("HOST_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + current_cpu = host_cpu + current_os = host_os + is_clang = false + use_sysroot = false + use_lld = false + } +} + +gcc_toolchain("target") { + cc = getenv("TARGET_CC") + cxx = getenv("TARGET_CXX") + ar = getenv("TARGET_AR") + nm = getenv("TARGET_NM") + ld = cxx + + extra_cflags = getenv("TARGET_CFLAGS") + extra_cppflags = getenv("TARGET_CPPFLAGS") + extra_cxxflags = getenv("TARGET_CXXFLAGS") + extra_ldflags = getenv("TARGET_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + current_cpu = target_cpu + current_os = target_os + is_clang = is_clang + use_sysroot = use_sysroot + } +} + +gcc_toolchain("v8_snapshot") { + cc = getenv("V8_CC") + cxx = getenv("V8_CXX") + ar = getenv("V8_AR") + nm = getenv("V8_NM") + ld = cxx + + extra_cflags = getenv("V8_CFLAGS") + extra_cppflags = getenv("V8_CPPFLAGS") + extra_cxxflags = getenv("V8_CXXFLAGS") + extra_ldflags = getenv("V8_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + if (target_cpu == "x86" || target_cpu == "arm" || target_cpu =="mipsel") {
package/chromium/toolchain/BUILD.gn new file +10
-0+ current_cpu = "x86" + } else { + current_cpu = "x64" + } + current_os = host_os + is_clang = is_clang + use_sysroot = false + } +} +Signature · 8 lines
2.18.0 _______________________________________________ buildroot mailing list buildroot@ http://lists.busybox.net/mailman/listinfo/buildroot
Joseph Kogut wrote
Quoted 548 lines
Signed-off-by Joseph Kogut <joseph.kogut@
>
--- DEVELOPERS | 1 + package/Config.in | 1 + ...iler_cpu_abi-for-buildroot-toolchain.patch | 102 ++++++++++++ .../0002-Fix-arm-build-with-glibc-2.27.patch | 28 ++++ package/chromium/Config.in | 64 ++++++++ package/chromium/chromium.hash | 3 + package/chromium/chromium.mk | 146 ++++++++++++++++++ package/chromium/toolchain/BUILD.gn | 71 +++++++++ 8 files changed, 416 insertions(+) create mode 100644 package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patch create mode 100644 package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch create mode 100644 package/chromium/Config.in create mode 100644 package/chromium/chromium.hash create mode 100644 package/chromium/chromium.mk create mode 100644 package/chromium/toolchain/BUILD.gnDEVELOPERS +0
-0@@ -1058,6 +1058,7 @@ F: package/rabbitmq-c/ N: Joseph Kogut <joseph.kogut@
>
F: package/at-spi2-atk/
F: package/at-spi2-core/DEVELOPERS +1
-0+F: package/chromium/ F: package/gconf/ F: package/libnss/ F: package/lld/package/Config.in +1
-0@@ -14,6 +14,7 @@ menu "Audio and video applications" source "package/aumix/Config.in" source "package/bellagio/Config.in" source "package/bluez-alsa/Config.in" + source "package/chromium/Config.in" source "package/dvblast/Config.in" source "package/dvdauthor/Config.in" source "package/dvdrw-tools/Config.in"diff --git
a/package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patchb/package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patchnew file mode 100644
index 0000000000..1848b0bd14
---/dev/null
+++b/package/chromium/0001-modify-compiler_cpu_abi-for-buildroot-toolchain.patchpackage/Config.in +2
-0@@ -0,0 +1,102 @@ +From 3d5106d1d4720e1be8a4bd977be38743d6fb1f3c Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <joseph.kogut@
>
package/Config.in +4
-0+Date: Sun, 10 Jun 2018 09:59:11 -0700 +Subject: [PATCH] modify compiler_cpu_abi for buildroot toolchain + +Signed-off-by: Joseph Kogut <joseph.kogut@
>
+--- + build/config/compiler/BUILD.gn | 36 +++++++++++++++++++---------------+ 1 file changed, 20 insertions(+), 16 deletions(-)
package/Config.in +2
-0+ +diff --git a/build/config/compiler/BUILD.gnb/build/config/compiler/BUILD.gn
package/Config.in +91
-0+index 461e62da2..27c9f29ed 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -683,6 +683,10 @@ config("compiler_cpu_abi") { + "-march=x86-64", + ] + ldflags += [ "-m64" ] ++ if (is_clang) { ++ cflags += ["--target=x86_64-buildroot-linux-gnu"] ++ ldflags += ["--target=x86_64-buildroot-linux-gnu"] ++ } + } else if (current_cpu == "x86") { + cflags += [ "-m32" ] + ldflags += [ "-m32" ] +@@ -695,8 +699,8 @@ config("compiler_cpu_abi") { + } + } else if (current_cpu == "arm") { + if (is_clang && !is_android && !is_nacl) { +- cflags += [ "--target=arm-linux-gnueabihf" ] +- ldflags += [ "--target=arm-linux-gnueabihf" ] ++ cflags += [ "--target=arm-buildroot-linux-gnueabihf" ] ++ ldflags += [ "--target=arm-buildroot-linux-gnueabihf" ] + } + if (!is_nacl) { + cflags += [ +@@ -709,18 +713,18 @@ config("compiler_cpu_abi") { + } + } else if (current_cpu == "arm64") { + if (is_clang && !is_android && !is_nacl && !is_fuchsia) { +- cflags += [ "--target=aarch64-linux-gnu" ] +- ldflags += [ "--target=aarch64-linux-gnu" ] ++ cflags += [ "--target=aarch64-buildroot-linux-gnu" ] ++ ldflags += [ "--target=aarch64-buildroot-linux-gnu" ] + } + } else if (current_cpu == "mipsel" && !is_nacl) { + if (custom_toolchain == "") { + if (is_clang) { + if (is_android) { +- cflags += [ "--target=mipsel-linux-android" ] +- ldflags += [ "--target=mipsel-linux-android" ] ++ cflags += [ "--target=mipsel-buildroot-linux-android" ] ++ ldflags += [ "--target=mipsel-buildroot-linux-android" ] + } else { +- cflags += [ "--target=mipsel-linux-gnu" ] +- ldflags += [ "--target=mipsel-linux-gnu" ] ++ cflags += [ "--target=mipsel-buildroot-linux-gnu" ] ++ ldflags += [ "--target=mipsel-buildroot-linux-gnu" ] + } + } else { + cflags += [ "-EL" ] +@@ -799,8 +803,8 @@ config("compiler_cpu_abi") { + } else if (current_cpu == "mips" && !is_nacl) { + if (custom_toolchain == "") { + if (is_clang) { +- cflags += [ "--target=mips-linux-gnu" ] +- ldflags += [ "--target=mips-linux-gnu" ] ++ cflags += [ "--target=mips-buildroot-linux-gnu" ] ++ ldflags += [ "--target=mips-buildroot-linux-gnu" ] + } else { + cflags += [ "-EB" ] + ldflags += [ "-EB" ] +@@ -844,11 +848,11 @@ config("compiler_cpu_abi") { + if (custom_toolchain == "") { + if (is_clang) { + if (is_android) { +- cflags += [ "--target=mips64el-linux-android" ] +- ldflags += [ "--target=mips64el-linux-android" ] ++ cflags += [ "--target=mips64el-buildroot-linux-android" ] ++ ldflags += [ "--target=mips64el-buildroot-linux-android" ] + } else { +- cflags += [ "--target=mips64el-linux-gnuabi64" ] +- ldflags += [ "--target=mips64el-linux-gnuabi64" ] ++ cflags += [ "--target=mips64el-buildroot-linux-gnuabi64" ] ++ ldflags += [ "--target=mips64el-buildroot-linux-gnuabi64" ] + } + } else { + cflags += [ +@@ -905,8 +909,8 @@ config("compiler_cpu_abi") { + } else if (current_cpu == "mips64") { + if (custom_toolchain == "") { + if (is_clang) { +- cflags += [ "--target=mips64-linux-gnuabi64" ] +- ldflags += [ "--target=mips64-linux-gnuabi64" ] ++ cflags += [ "--target=mips64-buildroot-linux-gnuabi64" ] ++ ldflags += [ "--target=mips64-buildroot-linux-gnuabi64" ] + } else { + cflags += [ + "-EB", +-- +2.17.1 +package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +2
-0@@ -0,0 +1,28 @@ +From aed4599c18586dfac46139a3c32011f804fdaef6 Mon Sep 17 00:00:00 2001 +From: Joseph Kogut <joseph.kogut@
>
package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +4
-0+Date: Wed, 13 Jun 2018 13:59:24 -0700 +Subject: [PATCH] Fix arm build with glibc 2.27 + +Upstream patch from:https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1060155
package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +2
-0+ +Signed-off-by: Joseph Kogut <joseph.kogut@
>
+--- + third_party/crashpad/crashpad/compat/linux/sys/ptrace.h | 2 +-+ 1 file changed, 1 insertion(+), 1 deletion(-)
package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +2
-0+ +diff --git a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h
b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h+index73861576d..e5c95c7cc100644
+---a/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h++++b/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h+@@ -34,7 +34,7 @@ static constexpr__ptrace_requestPTRACE_GET_THREAD_AREA=
+ #endif // !PTRACE_GET_THREAD_AREA && !PT_GET_THREAD_AREA &&defined(__GLIBC__)
+
+ // https://sourceware.org/bugzilla/show_bug.cgi?id=22433
+-#if !defined(PTRACE_GETVFPREGS) && \
++#if !defined(PTRACE_GETVFPREGS) && !defined(PT_GETVFPREGS) && \package/chromium/0002-Fix-arm-build-with-glibc-2.27.patch new file +6
-0+ defined(__GLIBC__) && (defined(__arm__) || defined(__arm64__)) + static constexpr __ptrace_request PTRACE_GETVFPREGS = + static_cast<__ptrace_request>(27); +-- +2.17.1 +package/chromium/Config.in new file +64
-0@@ -0,0 +1,64 @@ +config BR2_PACKAGE_CHROMIUM_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_x86_64 + +config BR2_PACKAGE_CHROMIUM_TARGET_ARCH + string + default "arm" if BR2_arm + default "arm64" if BR2_aarch64 + default "x86" if BR2_i386 + default "x64" if BR2_x86_64 + +menuconfig BR2_PACKAGE_CHROMIUM + bool "chromium" + depends on BR2_HOST_GCC_AT_LEAST_4_9 # gn requires -std=c++14 + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_AT_SPI2_ATK + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_HOST_CLANG + select BR2_PACKAGE_HOST_LLD + select BR2_PACKAGE_HOST_NINJA + select BR2_PACKAGE_HOST_NODEJS + select BR2_PACKAGE_HOST_PYTHON + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBERATION # runtime + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_LIBKRB5 + select BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXI if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER + select BR2_PACKAGE_XLIB_LIBXTST if !BR2_PACKAGE_LIBGTK3_X11 + help + Chromium is an open-source Web browser project started by + Google, to provide the source code for the proprietary + Google Chrome browser. + +if BR2_PACKAGE_CHROMIUM + +config BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS + bool "Enable proprietary codecs" + help + Enables proprietary codecs with additional licensing + restrictions, such as MP3 and H264 + +endif # BR2_PACKAGE_CHROMIUM + +comment "chromium needs toolchain w/ Glibc, host gcc >= 4.9.0" + depends on !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_HOST_GCC_AT_LEAST_4_9 + +comment "chromium depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGLpackage/chromium/chromium.hash new file +2
-0@@ -0,0 +1,3 @@ +# locally calculated +sha256 f8b1e5319163e378027826b12cf256b97423bb90e10e2013469d96e03bc9db8achromium-67.0.3396.79.tar.xz
+sha256845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308LICENSEpackage/chromium/chromium.mk new file +8
-0@@ -0,0 +1,146 @@ +################################################################################ +# +# Chromium +# +################################################################################ + +CHROMIUM_VERSION = 67.0.3396.79 +CHROMIUM_SITE =https://commondatastorage.googleapis.com/chromium-browser-official
package/chromium/chromium.mk new file +37
-0+CHROMIUM_SOURCE = chromium-$(CHROMIUM_VERSION).tar.xz +CHROMIUM_LICENSE = BSD-Style +CHROMIUM_LICENSE_FILES = LICENSE +CHROMIUM_DEPENDENCIES = alsa-lib cairo cups dbus freetype harfbuzz \ + host-clang host-lld host-ninja host-nodejs host-python \ + jpeg libdrm libglib2 libkrb5 libnss libpng pango \ + xlib_libXcomposite xlib_libXScrnSaver xlib_libXcursor \ + xlib_libXrandr zlib + +CHROMIUM_TOOLCHAIN_CONFIG_PATH = $(shell pwd)/package/chromium/toolchain + +CHROMIUM_OPTS = \ + host_toolchain=\"$(CHROMIUM_TOOLCHAIN_CONFIG_PATH):host\" \ + custom_toolchain=\"$(CHROMIUM_TOOLCHAIN_CONFIG_PATH):target\" \ + use_lld=true \ + is_clang=true \ + clang_use_chrome_plugins=false \ + treat_warnings_as_errors=false \ + use_gnome_keyring=false \ + linux_use_bundled_binutils=false \ + use_sysroot=true \ + target_sysroot=\"$(STAGING_DIR)\" \ + target_cpu=\"$(BR2_PACKAGE_CHROMIUM_TARGET_ARCH)\" \ + enable_nacl=false \ + use_dbus=true \ + use_system_zlib=true \ + use_system_libjpeg=true \ + use_system_libpng=true \ + use_system_libdrm=true \ + use_system_harfbuzz=true \ + use_system_freetype=true + +# tcmalloc has portability issues +CHROMIUM_OPTS += use_allocator=\"none\" + +# V8 snapshots require compiling V8 with the same word size as the target +# architecture, which means the host needs to have that toolchainavailable.
package/chromium/chromium.mk new file +59
-1+CHROMIUM_OPTS += v8_use_snapshot=false + +ifeq ($(BR2_ENABLE_DEBUG),y) +CHROMIUM_OPTS += is_debug=true +else +CHROMIUM_OPTS += is_debug=false +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +CHROMIUM_DEPENDENCIES += cups +CHROMIUM_OPTS += use_cups=true +else +CHROMIUM_OPTS += use_cups=false +endif + +ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) +CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +CHROMIUM_OPTS += use_dbus=true +else +CHROMIUM_OPTS += use_dbus=false +endif + +ifeq ($(BR2_PACKAGE_PCIUTILS),y) +CHROMIUM_DEPENDENCIES += pciutils +CHROMIUM_OPTS += use_libpci=true +else +CHROMIUM_OPTS += use_libpci=false +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +CHROMIUM_DEPENDENCIES += pulseaudio +CHROMIUM_OPTS += use_pulseaudio=true +else +CHROMIUM_OPTS += use_pulseaudio=false +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +CHROMIUM_DEPENDENCIES += libgtk3 +CHROMIUM_OPTS += use_gtk3=true +else +CHROMIUM_DEPENDENCIES += libgtk2 xlib_libXi xlib_libXtst +CHROMIUM_OPTS += use_gtk3=false +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +CHROMIUM_TARGET_LDFLAGS += --gcc-toolchain=$(TOOLCHAIN_EXTERNAL_INSTALL_DIR) +else +CHROMIUM_TARGET_LDFLAGS += --gcc-toolchain=$(HOST_DIR) +endif + +CHROMIUM_TARGET_CFLAGS += $(CHROMIUM_TARGET_LDFLAGS) +CHROMIUM_TARGET_CXXFLAGS += $(CHROMIUM_TARGET_CFLAGS) + +define CHROMIUM_CONFIGURE_CMDS + mkdir -p $(@D)/third_party/node/linux/node-linux-x64/bin + ln -sf $(HOST_DIR)/bin/node$(@D)/third_party/node/linux/node-linux-x64/bin/
package/chromium/chromium.mk new file +4
-0+ + ( cd $(@D); \ + $(TARGET_MAKE_ENV) \ + $(HOST_DIR)/bin/python2 tools/gn/bootstrap/bootstrap.py -s --no-clean;\
package/chromium/chromium.mk new file +22
-0+ HOST_AR="$(HOSTAR)" \ + HOST_NM="$(HOSTNM)" \ + HOST_CC="$(HOSTCC)" \ + HOST_CXX="$(HOSTCXX)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ + HOST_CXXFLAGS="$(HOST_CXXFLAGS)" \ + TARGET_AR="ar" \ + TARGET_NM="nm" \ + TARGET_CC="clang" \ + TARGET_CXX="clang++" \ + TARGET_CFLAGS="$(CHROMIUM_TARGET_CFLAGS)" \ + TARGET_CXXFLAGS="$(CHROMIUM_TARGET_CXXFLAGS)" \ + TARGET_LDFLAGS="$(CHROMIUM_TARGET_LDFLAGS)" \ + out/Release/gn gen out/Release --args="$(CHROMIUM_OPTS)" \ + --script-executable=$(HOST_DIR)/bin/python2 \ + ) +endef + +define CHROMIUM_BUILD_CMDS + ( cd $(@D); \ + $(TARGET_MAKE_ENV) \ + ninja -j$(PARALLEL_JOBS) -C out/Release chrome chrome_sandboxchromedriver \
package/chromium/chromium.mk new file +5
-0+ ) +endef + +define CHROMIUM_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/out/Release/chrome$(TARGET_DIR)/usr/lib/chromium/chromium
package/chromium/chromium.mk new file +11
-0+ $(INSTALL) -Dm4755 $(@D)/out/Release/chrome_sandbox \ + $(TARGET_DIR)/usr/lib/chromium/chrome-sandbox + cp $(@D)/out/Release/{chrome_{100,200}_percent,resources}.pak \ + $(@D)/out/Release/chromedriver \ + $(TARGET_DIR)/usr/lib/chromium/ + $(INSTALL) -Dm644 -t $(TARGET_DIR)/usr/lib/chromium/locales \ + $(@D)/out/Release/locales/*.pak + cp $(@D)/out/Release/icudtl.dat $(TARGET_DIR)/usr/lib/chromium/ +endef + +$(eval $(generic-package))package/chromium/toolchain/BUILD.gn new file +61
-0@@ -0,0 +1,71 @@ +import("//build/toolchain/gcc_toolchain.gni") +import("//build/config/sysroot.gni") + +gcc_toolchain("host") { + cc = getenv("HOST_CC") + cxx = getenv("HOST_CXX") + ar = getenv("HOST_AR") + nm = getenv("HOST_NM") + ld = cxx + + extra_cflags = getenv("HOST_CFLAGS") + extra_cppflags = getenv("HOST_CPPFLAGS") + extra_cxxflags = getenv("HOST_CXXFLAGS") + extra_ldflags = getenv("HOST_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + current_cpu = host_cpu + current_os = host_os + is_clang = false + use_sysroot = false + use_lld = false + } +} + +gcc_toolchain("target") { + cc = getenv("TARGET_CC") + cxx = getenv("TARGET_CXX") + ar = getenv("TARGET_AR") + nm = getenv("TARGET_NM") + ld = cxx + + extra_cflags = getenv("TARGET_CFLAGS") + extra_cppflags = getenv("TARGET_CPPFLAGS") + extra_cxxflags = getenv("TARGET_CXXFLAGS") + extra_ldflags = getenv("TARGET_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + current_cpu = target_cpu + current_os = target_os + is_clang = is_clang + use_sysroot = use_sysroot + } +} + +gcc_toolchain("v8_snapshot") { + cc = getenv("V8_CC") + cxx = getenv("V8_CXX") + ar = getenv("V8_AR") + nm = getenv("V8_NM") + ld = cxx + + extra_cflags = getenv("V8_CFLAGS") + extra_cppflags = getenv("V8_CPPFLAGS") + extra_cxxflags = getenv("V8_CXXFLAGS") + extra_ldflags = getenv("V8_LDFLAGS") + + toolchain_args = { + cc_wrapper = "" + if (target_cpu == "x86" || target_cpu == "arm" || target_cpu =="mipsel") {
package/chromium/toolchain/BUILD.gn new file +10
-0+ current_cpu = "x86" + } else { + current_cpu = "x64" + } + current_os = host_os + is_clang = is_clang + use_sysroot = false + } +} +Signature · 8 lines
2.18.0 _______________________________________________ buildroot mailing list buildroot@ http://lists.busybox.net/mailman/listinfo/buildroot
--
Sent from: http://buildroot-busybox.2317881.n4.nabble.com/
PATCH v6 4/4 chromium: new package
Hi Hao,
Quoted 22 lines · Hao HU
Hello Joseph,
I have applied your v6 patch to the Buildroot 2018.05 and wanted to build the chrome in a x86 arch.
The Target option is like this :
/Target Architecture : i386
Target Architecture Variant i586/And I have added the following in the lld.mk
HOST_LLD_CONF_OPTS+= -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_DYLIB_COMPONENTS=allpackage/chromium/chromium.mk new file +3
-0+ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) +CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endifAnd finally I have comment the following in the chromium.mk
package/chromium/chromium.mk line 63
Quoted 3 lines
package/chromium/chromium.mk new file +3
-0+ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) + # CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif
I'm not sure what the intent is here. Chromium codec options belong in the Chromium makefile, not the LLD makefile. Were you encountering a build error related to enabling Chromium proprietary codecs?
Quoted 10 lines
But now there is still a problem
/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocationR_386_32against local symbol in readonly segment; recompile object files with -fPICQuoted 4 lines
Quoted 4 lines
Quoted 4 lines
defined in obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o) referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a
I've encountered the same issue, and I'm still working on a solution, which is why I haven't submitted v7 of this patchset. Apparently the Chromium team compiles i386 builds with GNU gold instead of LLD. LLD is more strict, and by default errors out when trying to dynamically relocate symbols in read only segments.
Consequently, the upstream build is broken on i386 when linking with LLD.
Quoted 2 lines
could you please tell me how to fix this problem?
I'm testing a couple of solutions. In the mean time, try setting use_gold=false in CHROMIUM_OPTS, and let me know if that helps.
PATCH v6 4/4 chromium: new package
Hi Joseph,
Joseph Kogut wrote
Quoted 34 lines
Hi Hao,
On Thu, Jul 26, 2018 at 6:37 AM Hao HU <
huhao526200@
Quoted 26 lines · >
Hello Joseph,
I have applied your v6 patch to the Buildroot 2018.05 and wanted to build the chrome in a x86 arch.
The Target option is like this :
/Target Architecture : i386
Target Architecture Variant i586/And I have added the following in the lld.mk
HOST_LLD_CONF_OPTS+= -DLLVM_LINK_LLVM_DYLIB=ONpackage/chromium/chromium.mk new file +3
-1-DLLVM_DYLIB_COMPONENTS=all +ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) +CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endifAnd finally I have comment the following in the chromium.mk
package/chromium/chromium.mk new file +3
-0+ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) + # CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif
Quoted 6 lines
Quoted 3 lines
I'm not sure what the intent is here. Chromium codec options belong in the Chromium makefile, not the LLD makefile. Were you encountering a build error related to enabling Chromium proprietary codecs?
I was encountering the build error like this when I build the object files of chromium:
/
Quoted 128 lines
In file included from
../../third_party/ffmpeg/libavcodec/h264_cabac.c:36:
In file included from../../third_party/ffmpeg/libavcodec/cabac_functions.h:46:../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than availableBRANCHLESS_GET_CABAC("%0", "%q0", "(%4)", "%1", "%w1", ^ ../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC' "movzbl "statep" , "ret" \n\t"\ ^error: register allocation failed: maximum depth for recoloring reached. Use -fexhaustive-register-search to skip cutoffs
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^error: register allocation failed: maximum depth for recoloring reached. Use -fexhaustive-register-search to skip cutoffs
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"\n\t"\ ^
Quoted 13 lines
fatal error: too many errors emitted, stopping now [-ferror-limit=]
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 6.0.0 (tags/RELEASE_600/final)
Target: i586-buildroot-linux-gnu
Thread model: posix
InstalledDir:/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin
clang: note: diagnostic msg: PLEASE submit a bug report to and include the crash backtrace, preprocessed source, and associated run script.
clang: note: diagnostic msg:
********************
/
Quoted 1 line
/
Quoted 5 lines
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg:/tmp/h264_cabac-e9fdc6.c
clang: note: diagnostic msg:/tmp/h264_cabac-e9fdc6.sh
clang: note: diagnostic msg:
/
Quoted 4 lines
So I have added the comment #
CHROMIUM_OPTS+= proprietary_codecs=true ffmpeg_branding=\"Chrome\" in the chromium.mk , which means removing the
/
Quoted 2 lines
proprietary_codecs=true
ffmpeg_branding=\"Chrome\"
/
Quoted 26 lines
in the args.gn of the chromium
And it worked and until it finished building all the .o files of chromium
Quoted 19 lines
But now there is still a problem
/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocationR_386_32against local symbol in readonly segment; recompile object files with -fPICQuoted 1 line
Quoted 1 line
Quoted 1 line
defined in
obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o)
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a
I've encountered the same issue, and I'm still working on a solution, which is why I haven't submitted v7 of this patchset. Apparently the Chromium team compiles i386 builds with GNU gold instead of LLD. LLD is more strict, and by default errors out when trying to dynamically relocate symbols in read only segments.
Consequently, the upstream build is broken on i386 when linking with LLD.
Quoted 8 lines
Quoted 5 lines
could you please tell me how to fix this problem?
I'm testing a couple of solutions. In the mean time, try setting use_gold=false in
CHROMIUM_OPTS, and let me know if that helps.But when it link to the chrome it still had the problem
/
Quoted 8 lines
/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocationR_386_32against local symbol in readonly segment; recompile object files with -fPICQuoted 1 line
Quoted 1 line
Quoted 1 line
defined in
obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o)
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a
/
Quoted 2 lines
So I tried to add the following statement in the lld.mk
/
Quoted 2 lines
HOST_LLD_CONF_OPTS+= -DLLVM_LINK_LLVM_DYLIB=ON
-DLLVM_DYLIB_COMPONENTS=all
/
Quoted 14 lines
But it still not worked.
And I will try to setting
use_gold=false inCHROMIUM_OPTSAnd I will tell you the result.
If you fix the problem, please tell me as soon as possible, because I am in a hurry to finish my project.
Thank you very much.
Quoted 7 lines
Hao
_______________________________________________
buildroot mailing listbuildroot@
--
Sent from: http://buildroot-busybox.2317881.n4.nabble.com/
PATCH v6 4/4 chromium: new package
In reply to Joseph KogutHi Joseph,
Quoted 31 lines
Hi Hao,
On Thu, Jul 26, 2018 at 6:37 AM Hao HU <[hidden email]> wrote:
Hello Joseph,
I have applied your v6 patch to the Buildroot 2018.05 and wanted to build the chrome in a x86 arch.
The Target option is like this :
/Target Architecture : i386
Target Architecture Variant i586/And I have added the following in the lld.mk
HOST_LLD_CONF_OPTS+= -DLLVM_LINK_LLVM_DYLIB=ONpackage/chromium/chromium.mk new file +3
-1-DLLVM_DYLIB_COMPONENTS=all +ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) +CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endifAnd finally I have comment the following in the chromium.mk
package/chromium/chromium.mk new file +3
-0+ifeq ($(BR2_PACKAGE_CHROMIUM_PROPRIETARY_CODECS),y) + # CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" +endif
Quoted 3 lines
I'm not sure what the intent is here. Chromium codec options belong in the Chromium makefile, not the LLD makefile. Were you encountering a build error related to enabling Chromium proprietary codecs?
I was encountering the build error like this when I build the object files of chromium:
/ In file included from ../../third_party/ffmpeg/libavcodec/h264_cabac.c:36:
In file included from
../../third_party/ffmpeg/libavcodec/cabac_functions.h:46:../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available
BRANCHLESS_GET_CABAC("%0", "%q0", "(%4)", "%1", "%w1",
^
./../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from
macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^error: register allocation failed: maximum depth for recoloring reached. Use -fexhaustive-register-search to skip cutoffs
../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available ../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^ ../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^ ../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline
assembly requires more registers than available
../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available
../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from
macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^ ../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from
macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^ error: register allocation failed: maximum depth for recoloring
reached.
Use -fexhaustive-register-search to skip cutoffs../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline
assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^ ../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^../../third_party/ffmpeg/libavcodec/x86/cabac.h:193:9: error: inline
assembly requires more registers than available../../third_party/ffmpeg/libavcodec/x86/cabac.h:143:9: note: expanded from
macro 'BRANCHLESS_GET_CABAC'
"movzbl "statep" , "ret"
\n\t"\
^ fatal error: too many errors emitted, stopping now [-ferror-limit=]
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 6.0.0 (tags/RELEASE_600/final)
Target: i586-buildroot-linux-gnu
Thread model: posix
InstalledDir:/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin
clang: note: diagnostic msg: PLEASE submit a bug report to and include the crash backtrace, preprocessed source, and associated run script.
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/h264_cabac-e9fdc6.c
clang: note: diagnostic msg: /tmp/h264_cabac-e9fdc6.sh
clang: note: diagnostic msg:/
So I have added the comment # CHROMIUM_OPTS += proprietary_codecs=true ffmpeg_branding=\"Chrome\" in the chromium.mk , which means removing the
proprietary_codecs=true
ffmpeg_branding=\"Chrome\"
in the args.gn of the chromium
And it worked and until it finished building all the .o files of chromium
Quoted 18 lines
But now there is still a problem
/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocationR_386_32against local symbol in readonly segment; recompile object files with -fPICQuoted 1 line
Quoted 1 line
Quoted 1 line
defined in
obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o)
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a
I've encountered the same issue, and I'm still working on a solution, which is why I haven't submitted v7 of this patchset. Apparently the Chromium team compiles i386 builds with GNU gold instead of LLD. LLD is more strict, and by default errors out when trying to dynamically relocate symbols in read only segments.
Quoted 7 lines
Consequently, the upstream build is broken on i386 when linking with LLD.
could you please tell me how to fix this problem?
I'm testing a couple of solutions. In the mean time, try setting use_gold=false in
CHROMIUM_OPTS, and let me know if that helps.
But when it link to the chrome it still had the problem
/home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocation R_386_32 against local symbol in readonly segment; recompile object files with -fPIC
Quoted 1 line
Quoted 1 line
Quoted 1 line
defined in
obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o)
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a
So I tried to add the following statement in the lld.mk
HOST_LLD_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON
-DLLVM_DYLIB_COMPONENTS=all
But it still not worked.
And I will try to setting
use_gold=false in CHROMIUM_OPTS
And I will tell you the result.
If you fix the problem, please tell me as soon as possible, because I am in a hurry to finish my project.
Thank you very much.
Hao
--
Sent from: http://buildroot-busybox.2317881.n4.nabble.com/
PATCH v6 4/4 chromium: new package
In reply to Joseph KogutHi Joseph,
Today I tried to set use_gold=false in CHROMIUM_OPTS in chromium.mk.
But it did't work. The same problem as following still exists.
//home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocation R_386_32 against local symbol in readonly segment; recompile object files with -fPIC
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
defined in obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o) referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a /
Best regards,
Hao
--
Sent from: http://buildroot-busybox.2317881.n4.nabble.com/
PATCH v6 4/4 chromium: new package
Quoted 15 lines · Hao HU
Hi Joseph,
Today I tried to set use_gold=false in
CHROMIUM_OPTSin chromium.mk.But it did't work. The same problem as following still exists.
//home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocationR_386_32against local symbol in readonly segment; recompile object files with -fPICQuoted 4 lines
Quoted 4 lines
Quoted 4 lines
defined in obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o) referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a /
Did you allow the Chromium package to reconfigure, i.e., by deleting .stamp_configured, or running 'make chromium-dirclean all'?
PATCH v6 4/4 chromium: new package
Joseph Kogut wrote
Quoted 22 lines
On Fri, Jul 27, 2018 at 7:03 AM Hao HU <
huhao526200@
Quoted 16 lines · >
Hi Joseph,
Today I tried to set use_gold=false in
CHROMIUM_OPTSin chromium.mk.But it did't work. The same problem as following still exists.
//home/as_huhao/eolane/x2m/buildroot-2018.05-IHMI/output/host/bin/ld.lld:
error: can't create dynamic relocationR_386_32against local symbol in readonly segment; recompile object files with -fPICQuoted 1 line
Quoted 1 line
Quoted 1 line
defined in
obj/third_party/ffmpeg/libffmpeg_yasm.a(ffmpeg_yasm/dct32.o)
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
referenced by ../../third_party/ffmpeg/libavcodec/x86/dct32.asm
ffmpeg_yasm/dct32.o:(ff_dct32_float_sse) in archiveobj/third_party/ffmpeg/libffmpeg_yasm.a /
Quoted 5 lines
Quoted 2 lines
Did you allow the Chromium package to reconfigure, i.e., by deleting .stamp_configured, or running 'make chromium-dirclean all'?
Before I tested if the use_gold=false worked or not, firstly I deleted the folder
/
Quoted 1 line
/ouput/build/chromium--67.0.3396.79
/
Quoted 9 lines
then I run $ make
Is that right or not?
_______________________________________________
buildroot mailing listbuildroot@
--
Sent from: http://buildroot-busybox.2317881.n4.nabble.com/
PATCH v6 4/4 chromium: new package
Hi Hao,
Quoted 11 lines · Hao HU
Quoted 5 lines
Quoted 2 lines
Did you allow the Chromium package to reconfigure, i.e., by deleting .stamp_configured, or running 'make chromium-dirclean all'?
Before I tested if the use_gold=false worked or not, firstly I deleted the folder
/
Quoted 1 line
/ouput/build/chromium--67.0.3396.79
/
Quoted 3 lines
then I run $ make
Is that right or not?
That will repeat the configure step, which is what you want. If recompiling with use_lld=false doesn't work, the i386 build is still broken, and needs fixed.
Can you switch the target architecture to x86_64? That build works properly.
PATCH v6 4/4 chromium: new package
Hi Joseph,
Quoted 12 lines
Hi Hao,
Quoted 4 lines · Hao HU
Quoted 2 lines
Did you allow the Chromium package to reconfigure, i.e., by deleting .stamp_configured, or running 'make chromium-dirclean all'?
Before I tested if the use_gold=false worked or not, firstly I deleted
the
Quoted 1 line
folder
/
Quoted 1 line
/ouput/build/chromium--67.0.3396.79
Quoted 8 lines
/
Quoted 3 lines
then I run $ make
Is that right or not?
That will repeat the configure step, which is what you want. If recompiling with use_lld=false doesn't work, the i386 build is still broken, and needs fixed.
Do you mean recompiling with use_gold=false? Or I should try setting use_lld=false?
Quoted 1 line
Can you switch the target architecture to
x86_64? That build works properl
I have tested the x86_64, it worked, but my project needs to build on a i386 arch.
Best regards,
Hao
--
Sent from: http://buildroot-busybox.2317881.n4.nabble.com/
PATCH v6 4/4 chromium: new package
Quoted 4 lines · Hao HU
Do you mean recompiling with use_gold=false? Or I should try setting use_lld=false?
The problem is stricter defaults with LLD, so you want to disable LLD for an i386 build, which means the proper flag is use_lld=false. I haven't tried this, so it may not fix your problem.
Quoted 5 lines
Quoted 1 line
Can you switch the target architecture to
x86_64? That build works properlI have tested the
x86_64, it worked, but my project needs to build on a i386 arch.
If that's the case, the only solution is to link without LLD. The Chromium team informed me that they still compile with Gold on i386.
Also, this is unrelated, but when you reply you're only addressing the mailing list, so your messages are skipping my inbox and I only notice when I check messages sent to the mailing list. Make sure to address your messages to the correct recipient and CC the mailing list.
PATCH v6 4/4 chromium: new package
Hi Hao,
I just finished an i386 build that linked Chromium successfully with GN option use_lld=false. This was the main issue holding back the next version of this patchset, so you can expect it to be posted to the mailing list soon.
Thanks for testing!
Best,
Joseph