Merge pull request #102666 from squalus/ungoogled-20201103
ungoogled-chromium: 85.0.4183.102-1 -> 86.0.4240.111-1
This commit is contained in:
commit
0e64b04afc
@ -13,7 +13,7 @@ mkChromiumDerivation (base: rec {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p "$libExecPath"
|
mkdir -p "$libExecPath"
|
||||||
cp -v "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
|
cp -v "$buildPath/"*.so "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
|
||||||
cp -v "$buildPath/icudtl.dat" "$libExecPath/"
|
cp -v "$buildPath/icudtl.dat" "$libExecPath/"
|
||||||
cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
|
cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
|
||||||
cp -v "$buildPath/chrome" "$libExecPath/$packageName"
|
cp -v "$buildPath/chrome" "$libExecPath/$packageName"
|
||||||
@ -78,17 +78,10 @@ mkChromiumDerivation (base: rec {
|
|||||||
'';
|
'';
|
||||||
homepage = "https://github.com/Eloston/ungoogled-chromium";
|
homepage = "https://github.com/Eloston/ungoogled-chromium";
|
||||||
maintainers = with maintainers; [ squalus ];
|
maintainers = with maintainers; [ squalus ];
|
||||||
# Overview of the maintainer roles:
|
|
||||||
# nixos-unstable:
|
|
||||||
# - TODO: Need a new maintainer for x86_64 [0]
|
|
||||||
# - @thefloweringash: aarch64
|
|
||||||
# - @primeos: Provisional maintainer (x86_64)
|
|
||||||
# Stable channel:
|
|
||||||
# - TODO (need someone to test backports [0])
|
|
||||||
# [0]: https://github.com/NixOS/nixpkgs/issues/78450
|
|
||||||
license = if enableWideVine then licenses.unfree else licenses.bsd3;
|
license = if enableWideVine then licenses.unfree else licenses.bsd3;
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
|
hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
|
||||||
timeout = 172800; # 48 hours
|
timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
|
||||||
|
broken = channel == "dev"; # Blocked on https://bugs.chromium.org/p/chromium/issues/detail?id=1141896
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
, libevent, expat, libjpeg, snappy
|
, libevent, expat, libjpeg, snappy
|
||||||
, libpng, libcap
|
, libpng, libcap
|
||||||
, xdg_utils, yasm, nasm, minizip, libwebp
|
, xdg_utils, yasm, nasm, minizip, libwebp
|
||||||
, libusb1, pciutils, nss, re2, zlib
|
, libusb1, pciutils, nss, re2
|
||||||
|
|
||||||
, python2Packages, perl, pkgconfig
|
, python2Packages, perl, pkgconfig
|
||||||
, nspr, systemd, kerberos
|
, nspr, systemd, kerberos
|
||||||
@ -13,10 +13,9 @@
|
|||||||
, bison, gperf
|
, bison, gperf
|
||||||
, glib, gtk3, dbus-glib
|
, glib, gtk3, dbus-glib
|
||||||
, glibc
|
, glibc
|
||||||
, xorg
|
|
||||||
, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
|
, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
|
||||||
, protobuf, speechd, libXdamage, cups
|
, protobuf, speechd, libXdamage, cups
|
||||||
, ffmpeg_3, libxslt, libxml2, at-spi2-core
|
, ffmpeg, libxslt, libxml2, at-spi2-core
|
||||||
, jre8
|
, jre8
|
||||||
, pipewire_0_2
|
, pipewire_0_2
|
||||||
|
|
||||||
@ -49,8 +48,6 @@ buildFun:
|
|||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html
|
|
||||||
|
|
||||||
let
|
let
|
||||||
jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
|
||||||
|
|
||||||
@ -66,7 +63,7 @@ let
|
|||||||
mkGnFlags =
|
mkGnFlags =
|
||||||
let
|
let
|
||||||
# Serialize Nix types into GN types according to this document:
|
# Serialize Nix types into GN types according to this document:
|
||||||
# https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/language.md
|
# https://source.chromium.org/gn/gn/+/master:docs/language.md
|
||||||
mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\"";
|
mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\"";
|
||||||
sanitize = value:
|
sanitize = value:
|
||||||
if value == true then "true"
|
if value == true then "true"
|
||||||
@ -78,14 +75,17 @@ let
|
|||||||
toFlag = key: value: "${key}=${sanitize value}";
|
toFlag = key: value: "${key}=${sanitize value}";
|
||||||
in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
|
in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
|
||||||
|
|
||||||
|
# https://source.chromium.org/chromium/chromium/src/+/master:build/linux/unbundle/replace_gn_files.py
|
||||||
gnSystemLibraries = [
|
gnSystemLibraries = [
|
||||||
"flac" "libwebp" "libxslt" "opus" "snappy" "libpng"
|
"ffmpeg"
|
||||||
# "zlib" # version 77 reports unresolved dependency on //third_party/zlib:zlib_config
|
"flac"
|
||||||
# "libjpeg" # fails with multiple undefined references to chromium_jpeg_*
|
"libjpeg"
|
||||||
# "re2" # fails with linker errors
|
"libpng"
|
||||||
# "ffmpeg" # https://crbug.com/731766
|
"libwebp"
|
||||||
# "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
|
"libxslt"
|
||||||
# so we can't build with one from system and other from source
|
"opus"
|
||||||
|
"snappy"
|
||||||
|
"zlib"
|
||||||
];
|
];
|
||||||
|
|
||||||
opusWithCustomModes = libopus.override {
|
opusWithCustomModes = libopus.override {
|
||||||
@ -97,11 +97,9 @@ let
|
|||||||
libevent expat libjpeg snappy
|
libevent expat libjpeg snappy
|
||||||
libpng libcap
|
libpng libcap
|
||||||
xdg_utils minizip libwebp
|
xdg_utils minizip libwebp
|
||||||
libusb1 re2 zlib
|
libusb1 re2
|
||||||
ffmpeg_3 libxslt libxml2
|
ffmpeg libxslt libxml2
|
||||||
nasm
|
nasm
|
||||||
# harfbuzz # in versions over 63 harfbuzz and freetype are being built together
|
|
||||||
# so we can't build with one from system and other from source
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# build paths and release info
|
# build paths and release info
|
||||||
@ -135,10 +133,10 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
llvmPackages.lldClang.bintools
|
||||||
ninja which python2Packages.python perl pkgconfig
|
ninja which python2Packages.python perl pkgconfig
|
||||||
python2Packages.ply python2Packages.jinja2 nodejs
|
python2Packages.ply python2Packages.jinja2 nodejs
|
||||||
gnutar python2Packages.setuptools
|
gnutar python2Packages.setuptools
|
||||||
(xorg.xcbproto.override { python = python2Packages.python; })
|
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = defaultDependencies ++ [
|
buildInputs = defaultDependencies ++ [
|
||||||
@ -157,34 +155,35 @@ let
|
|||||||
++ optional pulseSupport libpulseaudio
|
++ optional pulseSupport libpulseaudio
|
||||||
++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ];
|
++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ];
|
||||||
|
|
||||||
patches = optionals (versionRange "68" "86") [
|
patches = [
|
||||||
./patches/nix_plugin_paths_68.patch
|
./patches/no-build-timestamps.patch # 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/remove-webp-include-69.patch
|
|
||||||
./patches/no-build-timestamps.patch
|
|
||||||
./patches/widevine-79.patch
|
|
||||||
./patches/dont-use-ANGLE-by-default.patch
|
|
||||||
# Unfortunately, chromium regularly breaks on major updates and
|
|
||||||
# then needs various patches backported in order to be compiled with GCC.
|
|
||||||
# Good sources for such patches and other hints:
|
|
||||||
# - https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/
|
|
||||||
# - https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/chromium
|
|
||||||
# - https://github.com/chromium/chromium/search?q=GCC&s=committer-date&type=Commits
|
|
||||||
#
|
|
||||||
# ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ]
|
|
||||||
# ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
|
# ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
|
||||||
] ++ optionals (useVaapi && versionRange "68" "86") [ # Improvements for the VA-API build:
|
] ++ optionals (useVaapi && versionRange "86" "87") [
|
||||||
./patches/enable-vdpau-support-for-nvidia.patch # https://aur.archlinux.org/cgit/aur.git/tree/vdpau-support.patch?h=chromium-vaapi
|
# Check for enable-accelerated-video-decode on Linux:
|
||||||
./patches/enable-video-acceleration-on-linux.patch # Can be controlled at runtime (i.e. without rebuilding Chromium)
|
(githubPatch "54deb9811ca9bd2327def5c05ba6987b8c7a0897" "11jvxjlkzz1hm0pvfyr88j7z3zbwzplyl5idkx92l2lzv4459c8d")
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = optionalString (!versionRange "0" "86") ''
|
postPatch = ''
|
||||||
|
# remove unused third-party
|
||||||
|
for lib in ${toString gnSystemLibraries}; do
|
||||||
|
if [ -d "third_party/$lib" ]; then
|
||||||
|
find "third_party/$lib" -type f \
|
||||||
|
\! -path "third_party/$lib/chromium/*" \
|
||||||
|
\! -path "third_party/$lib/google/*" \
|
||||||
|
\! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
|
||||||
|
\! -regex '.*\.\(gn\|gni\|isolate\)' \
|
||||||
|
-delete
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.):
|
# Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.):
|
||||||
substituteInPlace native_client/SConstruct \
|
substituteInPlace native_client/SConstruct --replace "#! -*- python -*-" ""
|
||||||
--replace "#! -*- python -*-" ""
|
if [ -e third_party/harfbuzz-ng/src/src/update-unicode-tables.make ]; then
|
||||||
substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \
|
substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \
|
||||||
--replace "/usr/bin/env -S make -f" "/usr/bin/make -f"
|
--replace "/usr/bin/env -S make -f" "/usr/bin/make -f"
|
||||||
'' + ''
|
fi
|
||||||
|
|
||||||
# We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
|
# We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
|
||||||
substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
|
substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
|
||||||
--replace \
|
--replace \
|
||||||
@ -202,11 +201,6 @@ let
|
|||||||
'/usr/share/locale/' \
|
'/usr/share/locale/' \
|
||||||
'${glibc}/share/locale/'
|
'${glibc}/share/locale/'
|
||||||
|
|
||||||
substituteInPlace ui/gfx/x/BUILD.gn \
|
|
||||||
--replace \
|
|
||||||
'/usr/share/xcb' \
|
|
||||||
'${xorg.xcbproto}/share/xcb/'
|
|
||||||
|
|
||||||
sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
|
sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
|
||||||
chrome/browser/shell_integration_linux.cc
|
chrome/browser/shell_integration_linux.cc
|
||||||
|
|
||||||
@ -216,42 +210,20 @@ let
|
|||||||
sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
|
sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
|
||||||
gpu/config/gpu_info_collector_linux.cc
|
gpu/config/gpu_info_collector_linux.cc
|
||||||
|
|
||||||
sed -i -re 's/([^:])\<(isnan *\()/\1std::\2/g' \
|
|
||||||
chrome/browser/ui/webui/engagement/site_engagement_ui.cc
|
|
||||||
|
|
||||||
sed -i -e '/#include/ {
|
|
||||||
i #include <algorithm>
|
|
||||||
:l; n; bl
|
|
||||||
}' gpu/config/gpu_control_list.cc
|
|
||||||
|
|
||||||
# Allow to put extensions into the system-path.
|
# Allow to put extensions into the system-path.
|
||||||
sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc
|
sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc
|
||||||
|
|
||||||
patchShebangs .
|
patchShebangs .
|
||||||
# use our own nodejs
|
# use our own nodejs
|
||||||
mkdir -p third_party/node/linux/node-linux-x64/bin
|
mkdir -p third_party/node/linux/node-linux-x64/bin
|
||||||
ln -s $(which node) third_party/node/linux/node-linux-x64/bin/node
|
ln -s "$(command -v node)" third_party/node/linux/node-linux-x64/bin/node
|
||||||
|
|
||||||
|
# Allow building against system libraries in official builds
|
||||||
|
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py
|
||||||
|
|
||||||
# remove unused third-party
|
|
||||||
# in third_party/crashpad third_party/zlib contains just a header-adapter
|
|
||||||
for lib in ${toString gnSystemLibraries}; do
|
|
||||||
find -type f -path "*third_party/$lib/*" \
|
|
||||||
\! -path "*third_party/crashpad/crashpad/third_party/zlib/*" \
|
|
||||||
\! -path "*third_party/$lib/chromium/*" \
|
|
||||||
\! -path "*third_party/$lib/google/*" \
|
|
||||||
\! -path "*base/third_party/icu/*" \
|
|
||||||
\! -path "*base/third_party/libevent/*" \
|
|
||||||
\! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
|
|
||||||
-delete
|
|
||||||
done
|
|
||||||
'' + optionalString stdenv.isAarch64 ''
|
'' + optionalString stdenv.isAarch64 ''
|
||||||
substituteInPlace build/toolchain/linux/BUILD.gn \
|
substituteInPlace build/toolchain/linux/BUILD.gn \
|
||||||
--replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
|
--replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
|
||||||
'' + optionalString stdenv.cc.isClang ''
|
|
||||||
mkdir -p third_party/llvm-build/Release+Asserts/bin
|
|
||||||
ln -s ${stdenv.cc}/bin/clang third_party/llvm-build/Release+Asserts/bin/clang
|
|
||||||
ln -s ${stdenv.cc}/bin/clang++ third_party/llvm-build/Release+Asserts/bin/clang++
|
|
||||||
ln -s ${llvmPackages.llvm}/bin/llvm-ar third_party/llvm-build/Release+Asserts/bin/llvm-ar
|
|
||||||
'' + optionalString ungoogled ''
|
'' + optionalString ungoogled ''
|
||||||
${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors"
|
${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors"
|
||||||
${ungoogler}/utils/patches.py . ${ungoogler}/patches
|
${ungoogler}/utils/patches.py . ${ungoogler}/patches
|
||||||
@ -259,9 +231,9 @@ let
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
gnFlags = mkGnFlags ({
|
gnFlags = mkGnFlags ({
|
||||||
use_lld = false;
|
custom_toolchain = "//build/toolchain/linux/unbundle:default";
|
||||||
use_gold = true;
|
host_toolchain = "//build/toolchain/linux/unbundle:default";
|
||||||
gold_path = "${stdenv.cc}/bin";
|
is_official_build = true;
|
||||||
is_debug = false;
|
is_debug = false;
|
||||||
|
|
||||||
proprietary_codecs = false;
|
proprietary_codecs = false;
|
||||||
@ -283,6 +255,7 @@ let
|
|||||||
is_clang = stdenv.cc.isClang;
|
is_clang = stdenv.cc.isClang;
|
||||||
clang_use_chrome_plugins = false;
|
clang_use_chrome_plugins = false;
|
||||||
blink_symbol_level = 0;
|
blink_symbol_level = 0;
|
||||||
|
symbol_level = 0;
|
||||||
fieldtrial_testing_like_official_build = true;
|
fieldtrial_testing_like_official_build = true;
|
||||||
|
|
||||||
# Google API keys, see:
|
# Google API keys, see:
|
||||||
@ -336,8 +309,7 @@ let
|
|||||||
|
|
||||||
# This is to ensure expansion of $out.
|
# This is to ensure expansion of $out.
|
||||||
libExecPath="${libExecPath}"
|
libExecPath="${libExecPath}"
|
||||||
python build/linux/unbundle/replace_gn_files.py \
|
python build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries}
|
||||||
--system-libraries ${toString gnSystemLibraries}
|
|
||||||
${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
|
${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
|
||||||
|
|
||||||
# Fail if `gn gen` contains a WARNING.
|
# Fail if `gn gen` contains a WARNING.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ newScope, config, stdenv, fetchurl, makeWrapper
|
{ newScope, config, stdenv, fetchurl, makeWrapper
|
||||||
, llvmPackages_10, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils
|
, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils
|
||||||
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
|
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
|
||||||
, libva ? null
|
, libva ? null
|
||||||
, pipewire_0_2
|
, pipewire_0_2
|
||||||
@ -14,8 +14,7 @@
|
|||||||
, proprietaryCodecs ? true
|
, proprietaryCodecs ? true
|
||||||
, enablePepperFlash ? false
|
, enablePepperFlash ? false
|
||||||
, enableWideVine ? false
|
, enableWideVine ? false
|
||||||
, useVaapi ? false # Deprecated, use enableVaapi instead!
|
, enableVaapi ? false # Disabled by default due to unofficial support
|
||||||
, enableVaapi ? false # Disabled by default due to unofficial support and issues on radeon
|
|
||||||
, ungoogled ? true
|
, ungoogled ? true
|
||||||
, useOzone ? false
|
, useOzone ? false
|
||||||
, cupsSupport ? true
|
, cupsSupport ? true
|
||||||
@ -24,7 +23,7 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
llvmPackages = llvmPackages_10;
|
llvmPackages = llvmPackages_11;
|
||||||
stdenv = llvmPackages.stdenv;
|
stdenv = llvmPackages.stdenv;
|
||||||
|
|
||||||
callPackage = newScope chromium;
|
callPackage = newScope chromium;
|
||||||
@ -39,16 +38,6 @@ let
|
|||||||
cupsSupport pulseSupport useOzone;
|
cupsSupport pulseSupport useOzone;
|
||||||
inherit ungoogled;
|
inherit ungoogled;
|
||||||
# TODO: Remove after we can update gn for the stable channel (backward incompatible changes):
|
# TODO: Remove after we can update gn for the stable channel (backward incompatible changes):
|
||||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
|
||||||
version = "2020-05-19";
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://gn.googlesource.com/gn";
|
|
||||||
rev = "d0a6f072070988e7b038496c4e7d6c562b649732";
|
|
||||||
sha256 = "0197msabskgfbxvhzq73gc3wlr3n9cr4bzrhy5z5irbvy05lxk17";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
} // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "86") {
|
|
||||||
llvmPackages = llvmPackages_11;
|
|
||||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||||
version = "2020-07-20";
|
version = "2020-07-20";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
@ -58,8 +47,8 @@ let
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
} // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "87") {
|
} // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "87") {
|
||||||
llvmPackages = llvmPackages_11;
|
|
||||||
useOzone = true; # YAY: https://chromium-review.googlesource.com/c/chromium/src/+/2382834 \o/
|
useOzone = true; # YAY: https://chromium-review.googlesource.com/c/chromium/src/+/2382834 \o/
|
||||||
|
useVaapi = !stdenv.isAarch64; # TODO: Might be best to not set use_vaapi anymore (default is fine)
|
||||||
gnChromium = gn.overrideAttrs (oldAttrs: {
|
gnChromium = gn.overrideAttrs (oldAttrs: {
|
||||||
version = "2020-08-17";
|
version = "2020-08-17";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
@ -162,13 +151,6 @@ let
|
|||||||
''
|
''
|
||||||
else browser;
|
else browser;
|
||||||
|
|
||||||
optionalVaapiFlags = if useVaapi # TODO: Remove after 20.09:
|
|
||||||
then throw ''
|
|
||||||
Chromium's useVaapi was replaced by enableVaapi and you don't need to pass
|
|
||||||
"--ignore-gpu-blacklist" anymore (also no rebuilds are required anymore).
|
|
||||||
'' else lib.optionalString
|
|
||||||
(!enableVaapi)
|
|
||||||
"--add-flags --disable-accelerated-video-decode --add-flags --disable-accelerated-video-encode";
|
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation {
|
||||||
name = "ungoogled-chromium${suffix}-${version}";
|
name = "ungoogled-chromium${suffix}-${version}";
|
||||||
inherit version;
|
inherit version;
|
||||||
@ -195,7 +177,7 @@ in stdenv.mkDerivation {
|
|||||||
|
|
||||||
eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
|
eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
|
||||||
--add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \
|
--add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \
|
||||||
${optionalVaapiFlags} \
|
${lib.optionalString enableVaapi "--add-flags --enable-accelerated-video-decode"} \
|
||||||
${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
|
${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
|
||||||
|
|
||||||
ed -v -s "$out/bin/chromium" << EOF
|
ed -v -s "$out/bin/chromium" << EOF
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
A field trial currently enables the passthrough command decoder, which causes
|
|
||||||
gl_factory.cc to try kGLImplementationEGLANGLE first, which causes Chromium to fail
|
|
||||||
to load libGLESv2.so on NixOS. It somehow does not try kGLImplementationDesktopGL,
|
|
||||||
and so there is no GL support at all.
|
|
||||||
|
|
||||||
Revert to using the validating command decoder, which prevents gl_factory.cc
|
|
||||||
from touching allowed_impls, allowing it to successfully use kGLImplementationDesktopGL.
|
|
||||||
|
|
||||||
diff --git a/ui/gl/gl_utils.cc b/ui/gl/gl_utils.cc
|
|
||||||
index 697cbed5fe2d..8419bdb21a2f 100644
|
|
||||||
--- a/ui/gl/gl_utils.cc
|
|
||||||
+++ b/ui/gl/gl_utils.cc
|
|
||||||
@@ -71,9 +71,10 @@ bool UsePassthroughCommandDecoder(const base::CommandLine* command_line) {
|
|
||||||
} else if (switch_value == kCmdDecoderValidatingName) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
- // Unrecognized or missing switch, use the default.
|
|
||||||
- return base::FeatureList::IsEnabled(
|
|
||||||
- features::kDefaultPassthroughCommandDecoder);
|
|
||||||
+ // Ignore the field trial that enables it; disable it until
|
|
||||||
+ // gl_factory.cc kGLImplementationEGLANGLE issues are sorted
|
|
||||||
+ // out on NixOS.
|
|
||||||
+ return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
|
|
||||||
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
|
|
||||||
@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
|
|
||||||
// |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's
|
|
||||||
// internal decoded frame.
|
|
||||||
if (buffer_allocation_mode_ != BufferAllocationMode::kNone &&
|
|
||||||
+ buffer_allocation_mode_ != BufferAllocationMode::kWrapVdpau &&
|
|
||||||
!vpp_vaapi_wrapper_) {
|
|
||||||
vpp_vaapi_wrapper_ = VaapiWrapper::Create(
|
|
||||||
VaapiWrapper::kVideoProcess, VAProfileNone,
|
|
||||||
@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers(
|
|
||||||
PictureBuffer buffer = buffers[i];
|
|
||||||
buffer.set_size(requested_pic_size_);
|
|
||||||
std::unique_ptr<VaapiPicture> picture = vaapi_picture_factory_->Create(
|
|
||||||
- (buffer_allocation_mode_ == BufferAllocationMode::kNone)
|
|
||||||
+ ((buffer_allocation_mode_ == BufferAllocationMode::kNone) ||
|
|
||||||
+ (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau))
|
|
||||||
? vaapi_wrapper_
|
|
||||||
: vpp_vaapi_wrapper_,
|
|
||||||
make_context_current_cb_, bind_image_cb_, buffer);
|
|
||||||
@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
|
|
||||||
|
|
||||||
VaapiVideoDecodeAccelerator::BufferAllocationMode
|
|
||||||
VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
|
|
||||||
+ // NVIDIA blobs use VDPAU
|
|
||||||
+ if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) {
|
|
||||||
+ LOG(INFO) << "VA-API driver on VDPAU backend";
|
|
||||||
+ return BufferAllocationMode::kWrapVdpau;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
// TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT
|
|
||||||
// |output_mode_| as well.
|
|
||||||
if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT)
|
|
||||||
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
|
||||||
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
|
|
||||||
@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator
|
|
||||||
// Using |client_|s provided PictureBuffers and as many internally
|
|
||||||
// allocated.
|
|
||||||
kNormal,
|
|
||||||
+ kWrapVdpau,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Decides the concrete buffer allocation mode, depending on the hardware
|
|
||||||
--- a/media/gpu/vaapi/vaapi_wrapper.cc
|
|
||||||
+++ b/media/gpu/vaapi/vaapi_wrapper.cc
|
|
||||||
@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType(
|
|
||||||
} else if (base::StartsWith(va_vendor_string, "Intel iHD driver",
|
|
||||||
base::CompareCase::SENSITIVE)) {
|
|
||||||
return media::VAImplementation::kIntelIHD;
|
|
||||||
+ } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU",
|
|
||||||
+ base::CompareCase::SENSITIVE)) {
|
|
||||||
+ return media::VAImplementation::kNVIDIAVDPAU;
|
|
||||||
}
|
|
||||||
return media::VAImplementation::kOther;
|
|
||||||
}
|
|
||||||
--- a/media/gpu/vaapi/vaapi_wrapper.h
|
|
||||||
+++ b/media/gpu/vaapi/vaapi_wrapper.h
|
|
||||||
@@ -79,6 +79,7 @@ enum class VAImplementation {
|
|
||||||
kIntelIHD,
|
|
||||||
kOther,
|
|
||||||
kInvalid,
|
|
||||||
+ kNVIDIAVDPAU,
|
|
||||||
};
|
|
||||||
|
|
||||||
// This class handles VA-API calls and ensures proper locking of VA-API calls
|
|
@ -1,48 +0,0 @@
|
|||||||
From b2144fd28e09cd52e7a88a62a9d9b54cf9922f9f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michael Weiss <dev.primeos@gmail.com>
|
|
||||||
Date: Tue, 14 Apr 2020 14:16:10 +0200
|
|
||||||
Subject: [PATCH] Enable accelerated video decode on Linux
|
|
||||||
|
|
||||||
This will enable accelerated video decode on Linux by default (i.e.
|
|
||||||
without "--ignore-gpu-blacklist"), but on NixOS we'll provide
|
|
||||||
"--disable-accelerated-video-decode" and
|
|
||||||
"--disable-accelerated-video-encode" by default to avoid regressions
|
|
||||||
(e.g. VA-API doesn't work properly for some radeon drivers).
|
|
||||||
|
|
||||||
Video acceleration can then be enabled via:
|
|
||||||
chromium.override { enableVaapi = true; }
|
|
||||||
without rebuilding Chromium.
|
|
||||||
---
|
|
||||||
gpu/config/software_rendering_list.json | 16 ----------------
|
|
||||||
1 file changed, 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
|
|
||||||
index 22712bdbf38f..a06dd19a50e4 100644
|
|
||||||
--- a/gpu/config/software_rendering_list.json
|
|
||||||
+++ b/gpu/config/software_rendering_list.json
|
|
||||||
@@ -336,22 +336,6 @@
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
- "id": 48,
|
|
||||||
- "description": "Accelerated video decode is unavailable on Linux",
|
|
||||||
- "cr_bugs": [137247, 1032907],
|
|
||||||
- "os": {
|
|
||||||
- "type": "linux"
|
|
||||||
- },
|
|
||||||
- "exceptions": [
|
|
||||||
- {
|
|
||||||
- "machine_model_name": ["Chromecast"]
|
|
||||||
- }
|
|
||||||
- ],
|
|
||||||
- "features": [
|
|
||||||
- "accelerated_video_decode"
|
|
||||||
- ]
|
|
||||||
- },
|
|
||||||
- {
|
|
||||||
"id": 50,
|
|
||||||
"description": "Disable VMware software renderer on older Mesa",
|
|
||||||
"cr_bugs": [145531, 332596, 571899, 629434],
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
|||||||
diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
|
|
||||||
index f4e119d..d9775bd 100644
|
|
||||||
--- a/chrome/common/chrome_paths.cc
|
|
||||||
+++ b/chrome/common/chrome_paths.cc
|
|
||||||
@@ -68,21 +68,14 @@ static base::LazyInstance<base::FilePath>
|
|
||||||
g_invalid_specified_user_data_dir = LAZY_INSTANCE_INITIALIZER;
|
|
||||||
|
|
||||||
// Gets the path for internal plugins.
|
|
||||||
-bool GetInternalPluginsDirectory(base::FilePath* result) {
|
|
||||||
-#if defined(OS_MACOSX)
|
|
||||||
- // If called from Chrome, get internal plugins from a subdirectory of the
|
|
||||||
- // framework.
|
|
||||||
- if (base::mac::AmIBundled()) {
|
|
||||||
- *result = chrome::GetFrameworkBundlePath();
|
|
||||||
- DCHECK(!result->empty());
|
|
||||||
- *result = result->Append("Internet Plug-Ins");
|
|
||||||
- return true;
|
|
||||||
- }
|
|
||||||
- // In tests, just look in the module directory (below).
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
- // The rest of the world expects plugins in the module directory.
|
|
||||||
- return base::PathService::Get(base::DIR_MODULE, result);
|
|
||||||
+bool GetInternalPluginsDirectory(base::FilePath* result,
|
|
||||||
+ const std::string& ident) {
|
|
||||||
+ std::string full_env = std::string("NIX_CHROMIUM_PLUGIN_PATH_") + ident;
|
|
||||||
+ const char* value = getenv(full_env.c_str());
|
|
||||||
+ if (value == NULL)
|
|
||||||
+ return base::PathService::Get(base::DIR_MODULE, result);
|
|
||||||
+ else
|
|
||||||
+ *result = base::FilePath(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gets the path for bundled implementations of components. Note that these
|
|
||||||
@@ -272,7 +265,7 @@ bool PathProvider(int key, base::FilePath* result) {
|
|
||||||
create_dir = true;
|
|
||||||
break;
|
|
||||||
case chrome::DIR_INTERNAL_PLUGINS:
|
|
||||||
- if (!GetInternalPluginsDirectory(&cur))
|
|
||||||
+ if (!GetInternalPluginsDirectory(&cur, "ALL"))
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case chrome::DIR_COMPONENTS:
|
|
||||||
@@ -280,7 +273,7 @@ bool PathProvider(int key, base::FilePath* result) {
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case chrome::DIR_PEPPER_FLASH_PLUGIN:
|
|
||||||
- if (!GetInternalPluginsDirectory(&cur))
|
|
||||||
+ if (!GetInternalPluginsDirectory(&cur, "PEPPERFLASH"))
|
|
||||||
return false;
|
|
||||||
cur = cur.Append(kPepperFlashBaseDirectory);
|
|
||||||
break;
|
|
||||||
@@ -358,7 +351,7 @@ bool PathProvider(int key, base::FilePath* result) {
|
|
||||||
cur = cur.DirName();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
- if (!GetInternalPluginsDirectory(&cur))
|
|
||||||
+ if (!GetInternalPluginsDirectory(&cur, "PNACL"))
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
|
|
@ -1,11 +0,0 @@
|
|||||||
--- a/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
|
|
||||||
+++ b/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
|
|
||||||
@@ -13,7 +13,7 @@
|
|
||||||
|
|
||||||
#include "jpeglib.h" // for JPEG_MAX_DIMENSION
|
|
||||||
|
|
||||||
-#include "third_party/libwebp/src/webp/encode.h" // for WEBP_MAX_DIMENSION
|
|
||||||
+#define WEBP_MAX_DIMENSION 16383
|
|
||||||
|
|
||||||
namespace blink {
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"85.0.4183.102" = {
|
"86.0.4240.111" = {
|
||||||
rev = "85.0.4183.102-1";
|
rev = "86.0.4240.111-1";
|
||||||
sha256 = "1mdx4a5zcs3an9yx1jxx4amq8p9rcj0hv76r8y7nz6cpsfgd9n3y";
|
sha256 = "0fkk0lxbvik8q8d5njxmwiam64qz5g74hlb56w24nh5mh1jm59a8";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
"stable": {
|
"stable": {
|
||||||
"version": "85.0.4183.102",
|
"version": "86.0.4240.111",
|
||||||
"sha256": "032yh1mfwins7a62zw8kwwq8xw1n52a0a93lqz7qlyjaf9sd8s4a",
|
"sha256": "05y7lwr89awkhvgmwkx3br9j4ap2aypg2wsc0nz8mi7kxc1dnyzj",
|
||||||
"sha256bin64": "1i8xaxxnmg80vsia8hxnq58qi9k5nnbrl80d6d23g9lb7dbc9cpm"
|
"sha256bin64": "10aqiiydw4i3jxnw8xxdgkgcqbfqc67n1fbrg40y54kg0v5dz8l6"
|
||||||
},
|
},
|
||||||
"beta": {
|
"beta": {
|
||||||
"version": "86.0.4240.30",
|
"version": "87.0.4280.27",
|
||||||
"sha256": "1isj0zngb72k1hhn3h0s8mccg1cdmppz1mjmg19f2h306farzmzl",
|
"sha256": "0w0asxj7jlsw69cssfia8km4q9cx1c2mliks2rmhf4jk0hsghasm",
|
||||||
"sha256bin64": "10d8im2adqqnkd6265gngv6xlm5qsz6r13z6cbbchsss0ssr8fxa"
|
"sha256bin64": "1lsx4mhy8nachfb8c9f3mrx5nqw2bi046dqirb4lnv7y80jjjs1k"
|
||||||
},
|
},
|
||||||
"dev": {
|
"dev": {
|
||||||
"version": "87.0.4252.0",
|
"version": "88.0.4298.4",
|
||||||
"sha256": "1lxlsdni63zh79hxvpwgmnfn67kgfzhz3yg9bkxghqchqykkz92y",
|
"sha256": "0ka11gmpkyrmifajaxm66c16hrj3xakdvhjqg04slyp2sv0nlhrl",
|
||||||
"sha256bin64": "130hf7b35wcxpw05ddbqq89x10c0kays1vb9qg6xhq3zx2mk6ijw"
|
"sha256bin64": "0768y31jqbl1znp7yp6mvl5j12xl1nwjkh2l8zdga81q0wz52hh6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user