electron/libchromiumcontent

ARM 64 Build Problems

groundwater opened this issue · 5 comments

Following the build instructions for arm64.
Building in Docker with Dockerfile

# builds libcc
FROM ubuntu

RUN apt-get update
RUN apt-get install -y build-essential
RUN apt-get install -y python
RUN apt-get install -y git
RUN apt-get install -y wget
RUN apt-get install -y pkg-config

Running in Docker via

$ docker run -v $(pwd):/libcc -w /libcc -it libcc
# ./script/update -t arm64
ERROR at //build/config/linux/pkg_config.gni:85:17: Script returned non-zero exit code.
    pkgresult = exec_script(pkg_config_script, args, "value")
                ^----------
Current dir: /libcc/src/out-arm64/static_library/
Command: python -- /libcc/src/build/config/linux/pkg-config.py -s /libcc/src/build/linux/debian_jessie_arm64-sysroot -a arm64 gmodule-2.0 gtk+-3.0 gthread-2.0
Returned 1.
stderr:

Package xkbcommon was not found in the pkg-config search path.
Perhaps you should add the directory containing `xkbcommon.pc'
to the PKG_CONFIG_PATH environment variable
Package 'xkbcommon', required by 'gdk-3.0', not found
Could not run pkg-config.

See //build/config/linux/gtk3/BUILD.gn:14:1: whence it was called.
pkg_config("gtk3_internal_config") {
^-----------------------------------
See //chrome/browser/ui/libgtkui/BUILD.gn:146:12: which caused the file to be included.
           "//build/config/linux/gtk3:gtkprint3",
           ^------------------------------------
ERROR at //build/config/linux/pkg_config.gni:85:17: Script returned non-zero exit code.
    pkgresult = exec_script(pkg_config_script, args, "value")
                ^----------
Current dir: /libcc/src/out-arm64/shared_library/
Command: python -- /libcc/src/build/config/linux/pkg-config.py -s /libcc/src/build/linux/debian_jessie_arm64-sysroot -a arm64 gmodule-2.0 gtk+-3.0 gthread-2.0
Returned 1.
stderr:

Package xkbcommon was not found in the pkg-config search path.
Perhaps you should add the directory containing `xkbcommon.pc'
to the PKG_CONFIG_PATH environment variable
Package 'xkbcommon', required by 'gdk-3.0', not found
Could not run pkg-config.

See //build/config/linux/gtk3/BUILD.gn:14:1: whence it was called.
pkg_config("gtk3_internal_config") {
^-----------------------------------
See //chrome/browser/ui/libgtkui/BUILD.gn:145:12: which caused the file to be included.
           "//build/config/linux/gtk3",
           ^--------------------------
ERROR at //build/config/linux/pkg_config.gni:85:17: Script returned non-zero exit code.
    pkgresult = exec_script(pkg_config_script, args, "value")
                ^----------
Current dir: /libcc/src/out-arm64/ffmpeg/
Command: python -- /libcc/src/build/config/linux/pkg-config.py -s /libcc/src/build/linux/debian_jessie_arm64-sysroot -a arm64 gmodule-2.0 gtk+-3.0 gthread-2.0
Returned 1.
stderr:

Package xkbcommon was not found in the pkg-config search path.
Perhaps you should add the directory containing `xkbcommon.pc'
to the PKG_CONFIG_PATH environment variable
Package 'xkbcommon', required by 'gdk-3.0', not found
Could not run pkg-config.

See //build/config/linux/gtk3/BUILD.gn:14:1: whence it was called.
pkg_config("gtk3_internal_config") {
^-----------------------------------
See //chrome/browser/ui/libgtkui/BUILD.gn:145:12: which caused the file to be included.
           "//build/config/linux/gtk3",
           ^--------------------------

I have verified that ./script/update -t arm builds it's targets just fine.

From what I understand about this, it looks like pkg-config is searching the arm64 sysroot for relevant packages enumerated here:

root@c620086eb06e:/libcc# find /libcc/src/build/linux/debian_jessie_arm64-sysroot -name \*.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/alsa.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/atk.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/bluez.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-fc.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-ft.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-gobject.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-pdf.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-png.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-ps.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-script.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-svg.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-tee.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-xcb-shm.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-xcb.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-xlib-xrender.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo-xlib.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/cairo.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/com_err.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/dbus-1.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/dri.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/egl.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/expat.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/fontconfig.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/freetype2.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gconf-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-broadway-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-pixbuf-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-pixbuf-xlib-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-wayland-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-x11-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gdk-x11-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gio-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gio-unix-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gl.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/glib-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gmodule-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gmodule-export-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gmodule-no-export-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gnome-keyring-1.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gnutls.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gobject-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gssrpc.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gthread-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-broadway-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-unix-print-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-unix-print-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-wayland-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-x11-2.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/gtk+-x11-3.0.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/harfbuzz-gobject.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/harfbuzz-icu.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/harfbuzz.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/kadm-client.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/kadm-server.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/kdb.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/krb5-gssapi.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/krb5.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libcap.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libcrypto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libdrm.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libdrm_nouveau.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libdrm_radeon.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libffi.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpci.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpcre.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpcrecpp.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpcreposix.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpng.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpng12.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpulse-mainloop-glib.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpulse-simple.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libpulse.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libssl.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/libudev.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5/gssrpc.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5/kadm-client.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5/kadm-server.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5/kdb.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5/krb5-gssapi.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5/krb5.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5-gssapi.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/mit-krb5.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/nspr.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/nss.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/openssl.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/pango.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/pangocairo.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/pangoft2.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/pangoxft.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/pixman-1.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/pthread-stubs.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/speech-dispatcher.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/wayland-client.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/wayland-cursor.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/wayland-egl.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/wayland-scanner.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/wayland-server.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/x11-xcb.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/x11.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xau.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xcb-render.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xcb-shm.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xcb.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xcomposite.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xcursor.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xdamage.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xdmcp.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xext.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xfixes.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xi.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xinerama.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xrandr.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xrender.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xscrnsaver.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xt.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xtst.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xulrunner-nspr.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/xulrunner-nss.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/lib/pkgconfig/zlib.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/compositeproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/damageproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/fixesproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/inputproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/kbproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/randrproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/recordproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/renderproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/scrnsaverproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/xextproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/xineramaproto.pc
/libcc/src/build/linux/debian_jessie_arm64-sysroot/usr/share/pkgconfig/xproto.pc

You can see, the ones it's requesting do not exist.

I removed libcc, did a fresh checkout, and ./script/update -t arm64 worked. Trying to build now!

FWIW apparently even QtWebEngine (Chromium) doesn't work on RPi3 and aarch64 upstream.

If you manage to build it I'd be happy to test it for you. Thanks

I gave up on Docker. I was using it through MacOS and would get "Bad File Descriptor" errors. I imagine something about the shared directory between the two system was causing problems.

Building on Ubuntu 16.x VM right now. I got libcc building. Working on getting Electron building now.