chromium: Restructure the code

This should make it a little bit easier to read. The (native) build
inputs and options now have a consistent order, defaultDependencies and
yasm aren't required anymore, and this adds some brief comments.
Note: The third_party/node/linux/node-linux-x64/bin/node change causes
rebuilds.

(cherry picked from commit 4a5b36725919c002751228515d518f23772f988e)
This commit is contained in:
Michael Weiss 2021-08-09 11:57:15 +02:00
parent c803b6f93a
commit 4c19443f54
No known key found for this signature in database
GPG Key ID: 5BE487C4D4771D83

View File

@ -1,40 +1,49 @@
{ stdenv, lib, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, fetchurl { stdenv, lib, fetchurl, fetchpatch
# Channel data:
, channel, upstream-info
# default dependencies # Native build inputs:
, gnutar, bzip2, flac, speex, libopus , ninja, pkg-config
, python2, python3, perl
, gnutar, which
, llvmPackages
# postPatch:
, pkgsBuildHost
# configurePhase:
, gnChromium
# Build inputs:
, libpng
, bzip2, flac, speex, libopus
, libevent, expat, libjpeg, snappy , libevent, expat, libjpeg, snappy
, libpng, libcap , libcap
, xdg-utils, yasm, nasm, minizip, libwebp , xdg-utils, minizip, libwebp
, libusb1, pciutils, nss, re2 , libusb1, re2
, ffmpeg, libxslt, libxml2
, python2, python3, perl, pkg-config , nasm
, nspr, systemd, libkrb5 , nspr, nss, systemd
, util-linux, alsa-lib , util-linux, alsa-lib
, bison, gperf , bison, gperf, libkrb5
, glib, gtk3, dbus-glib , glib, gtk3, dbus-glib
, glibc
, libXScrnSaver, libXcursor, libXtst, libxshmfence, libGLU, libGL , libXScrnSaver, libXcursor, libXtst, libxshmfence, libGLU, libGL
, protobuf, speechd, libXdamage, cups , mesa
, ffmpeg, libxslt, libxml2, at-spi2-core , pciutils, protobuf, speechd, libXdamage, at-spi2-core
, jre8
, pipewire , pipewire
, libva , libva
, libdrm, wayland, mesa, libxkbcommon # Ozone , libdrm, wayland, libxkbcommon # Ozone
, curl , curl
# postPatch:
, glibc # gconv + locale
# optional dependencies # Package customization:
, libgcrypt ? null # gnomeSupport || cupsSupport
# package customization
, gnomeSupport ? false, gnome2 ? null , gnomeSupport ? false, gnome2 ? null
, gnomeKeyringSupport ? false, libgnome-keyring3 ? null , gnomeKeyringSupport ? false, libgnome-keyring3 ? null
, cupsSupport ? true, cups ? null
, proprietaryCodecs ? true , proprietaryCodecs ? true
, cupsSupport ? true
, pulseSupport ? false, libpulseaudio ? null , pulseSupport ? false, libpulseaudio ? null
, ungoogled ? false, ungoogled-chromium , ungoogled ? false, ungoogled-chromium
# Optional dependencies:
, channel , libgcrypt ? null # gnomeSupport || cupsSupport
, upstream-info
}: }:
buildFun: buildFun:
@ -91,17 +100,6 @@ let
withCustomModes = true; withCustomModes = true;
}; };
defaultDependencies = [
(libpng.override { apngSupport = false; }) # https://bugs.chromium.org/p/chromium/issues/detail?id=752403
bzip2 flac speex opusWithCustomModes
libevent expat libjpeg snappy
libcap
xdg-utils minizip libwebp
libusb1 re2
ffmpeg libxslt libxml2
nasm
];
# build paths and release info # build paths and release info
packageName = extraAttrs.packageName or extraAttrs.name; packageName = extraAttrs.packageName or extraAttrs.name;
buildType = "Release"; buildType = "Release";
@ -136,12 +134,20 @@ let
nativeBuildInputs = [ nativeBuildInputs = [
ninja pkg-config ninja pkg-config
python2WithPackages python3WithPackages perl nodejs python2WithPackages python3WithPackages perl
gnutar which gnutar which
llvmPackages.bintools llvmPackages.bintools
]; ];
buildInputs = defaultDependencies ++ [ buildInputs = [
(libpng.override { apngSupport = false; }) # https://bugs.chromium.org/p/chromium/issues/detail?id=752403
bzip2 flac speex opusWithCustomModes
libevent expat libjpeg snappy
libcap
xdg-utils minizip libwebp
libusb1 re2
ffmpeg libxslt libxml2
nasm
nspr nss systemd nspr nss systemd
util-linux alsa-lib util-linux alsa-lib
bison gperf libkrb5 bison gperf libkrb5
@ -153,14 +159,16 @@ let
libva libva
libdrm wayland mesa.drivers libxkbcommon libdrm wayland mesa.drivers libxkbcommon
curl curl
] ++ optional gnomeKeyringSupport libgnome-keyring3 ] ++ optionals gnomeSupport [ gnome2.GConf libgcrypt ]
++ optionals gnomeSupport [ gnome2.GConf libgcrypt ] ++ optional gnomeKeyringSupport libgnome-keyring3
++ optionals cupsSupport [ libgcrypt cups ] ++ optionals cupsSupport [ libgcrypt cups ]
++ optional pulseSupport libpulseaudio; ++ optional pulseSupport libpulseaudio;
patches = [ patches = [
./patches/no-build-timestamps.patch # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed) # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed):
./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags ./patches/no-build-timestamps.patch
# For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags:
./patches/widevine-79.patch
# Fix the build by adding a missing dependency (s. https://crbug.com/1197837): # Fix the build by adding a missing dependency (s. https://crbug.com/1197837):
./patches/fix-missing-atspi2-dependency.patch ./patches/fix-missing-atspi2-dependency.patch
] ++ lib.optionals (chromiumVersionAtLeast "93") [ ] ++ lib.optionals (chromiumVersionAtLeast "93") [
@ -226,8 +234,8 @@ let
patchShebangs . patchShebangs .
# Link to our own Node.js and Java (required during the build): # Link to our own Node.js and Java (required during the build):
mkdir -p third_party/node/linux/node-linux-x64/bin mkdir -p third_party/node/linux/node-linux-x64/bin
ln -s "$(command -v node)" third_party/node/linux/node-linux-x64/bin/node ln -s "${pkgsBuildHost.nodejs}/bin/node" third_party/node/linux/node-linux-x64/bin/node
ln -s "${jre8}/bin/java" third_party/jdk/current/bin/ ln -s "${pkgsBuildHost.jre8}/bin/java" third_party/jdk/current/bin/
# Allow building against system libraries in official builds # Allow building against system libraries in official builds
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py
@ -259,9 +267,9 @@ let
google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI"; google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
# Optional features: # Optional features:
use_cups = cupsSupport;
use_gio = gnomeSupport; use_gio = gnomeSupport;
use_gnome_keyring = gnomeKeyringSupport; use_gnome_keyring = gnomeKeyringSupport;
use_cups = cupsSupport;
# Feature overrides: # Feature overrides:
# Native Client support was deprecated in 2020 and support will end in June 2021: # Native Client support was deprecated in 2020 and support will end in June 2021: