From cc583b75fb4241cb7b6e005942fc928f64f60a5b Mon Sep 17 00:00:00 2001 From: Herwig Hochleitner Date: Fri, 7 Jul 2017 00:54:10 +0200 Subject: chromium: 59.0.3071.109 -> 59.0.3071.115 use several system libraries instead of bundled see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html --- .../networking/browsers/chromium/common.nix | 31 ++++++++++- .../chromium-59.0.3071.115-system_ffmpeg-1.patch | 63 ++++++++++++++++++++++ .../networking/browsers/chromium/upstream-info.nix | 18 +++---- 3 files changed, 101 insertions(+), 11 deletions(-) create mode 100644 pkgs/applications/networking/browsers/chromium/patches/chromium-59.0.3071.115-system_ffmpeg-1.patch (limited to 'pkgs/applications') diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index 43b6da6bf34e..11177f3ee487 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -1,4 +1,4 @@ -{ stdenv, ninja, which, nodejs +{ stdenv, ninja, which, nodejs, fetchurl, gnutar # default dependencies , bzip2, flac, speex, libopus @@ -14,6 +14,7 @@ , glib, gtk2, gtk3, dbus_glib , libXScrnSaver, libXcursor, libXtst, mesa , protobuf, speechd, libXdamage, cups +, ffmpeg, harfbuzz, harfbuzz-icu, libxslt, libxml2 # optional dependencies , libgcrypt ? null # gnomeSupport || cupsSupport @@ -36,6 +37,8 @@ buildFun: with stdenv.lib; +# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html + let # The additional attributes for creating derivations based on the chromium # source tree. @@ -57,7 +60,7 @@ let in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs)); gnSystemLibraries = [ - "flac" "libwebp" "snappy" "yasm" + "ffmpeg" "flac" "harfbuzz-ng" "libwebp" "libxslt" "yasm" "snappy" # "libpng" "libjpeg" ]; opusWithCustomModes = libopus.override { @@ -70,6 +73,7 @@ let libpng libcap xdg_utils yasm minizip libwebp libusb1 re2 zlib + ffmpeg harfbuzz libxslt harfbuzz-icu libxml2 ]; # build paths and release info @@ -78,6 +82,11 @@ let buildPath = "out/${buildType}"; libExecPath = "$out/libexec/${packageName}"; + freetype_source = fetchurl { + url = http://anduin.linuxfromscratch.org/BLFS/other/chromium-freetype.tar.xz; + sha256 = "1vhslc4xg0d6wzlsi99zpah2xzjziglccrxn55k7qna634wyxg77"; + }; + base = rec { name = "${packageName}-${version}"; inherit (upstream-info) version; @@ -88,6 +97,7 @@ let nativeBuildInputs = [ ninja which python2Packages.python perl pkgconfig python2Packages.ply python2Packages.jinja2 nodejs + gnutar ]; buildInputs = defaultDependencies ++ [ @@ -108,6 +118,7 @@ let # To enable ChromeCast, go to chrome://flags and set "Load Media Router Component Extension" to Enabled # Fixes Chromecast: https://bugs.chromium.org/p/chromium/issues/detail?id=734325 ./patches/fix_network_api_crash.patch + ./patches/chromium-59.0.3071.115-system_ffmpeg-1.patch ] ++ optional (versionOlder version "57.0") ./patches/glibc-2.24.patch ++ optional enableWideVine ./patches/widevine.patch; @@ -139,6 +150,22 @@ let # use our own nodejs mkdir -p third_party/node/linux/node-linux-x64/bin ln -s $(which node) third_party/node/linux/node-linux-x64/bin/node + + # use patched freetype + # FIXME https://bugs.chromium.org/p/pdfium/issues/detail?id=733 + # FIXME http://savannah.nongnu.org/bugs/?51156 + tar -xJf ${freetype_source} + + # remove unused third-party + for lib in ${toString gnSystemLibraries}; do + find -type f -path "*third_party/$lib/*" \ + \! -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 ''; gnFlags = mkGnFlags ({ diff --git a/pkgs/applications/networking/browsers/chromium/patches/chromium-59.0.3071.115-system_ffmpeg-1.patch b/pkgs/applications/networking/browsers/chromium/patches/chromium-59.0.3071.115-system_ffmpeg-1.patch new file mode 100644 index 000000000000..2ffdcc0ad6af --- /dev/null +++ b/pkgs/applications/networking/browsers/chromium/patches/chromium-59.0.3071.115-system_ffmpeg-1.patch @@ -0,0 +1,63 @@ +Submitted By: DJ Lucas +Date: 2017-06-25 +Initial Package Version: 57.0.2987.110 +Upstream Status: Not submitted +Origin: Gentoo: https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files/chromium-system-ffmpeg-r4.patch +Description: Allows building with system provided ffmpeg. Rediffed + for chromium-59.0.3071.109. + +diff -Naurp chromium-59.0.3071.109-orig/media/ffmpeg/ffmpeg_common.h chromium-59.0.3071.109/media/ffmpeg/ffmpeg_common.h +--- chromium-59.0.3071.109-orig/media/ffmpeg/ffmpeg_common.h 2017-06-20 17:03:19.000000000 -0500 ++++ chromium-59.0.3071.109/media/ffmpeg/ffmpeg_common.h 2017-06-23 00:21:10.551912699 -0500 +@@ -23,10 +23,6 @@ + + // Include FFmpeg header files. + extern "C" { +-// Disable deprecated features which result in spammy compile warnings. This +-// list of defines must mirror those in the 'defines' section of FFmpeg's +-// BUILD.gn file or the headers below will generate different structures! +-#define FF_API_CONVERGENCE_DURATION 0 + // Upstream libavcodec/utils.c still uses the deprecated + // av_dup_packet(), causing deprecation warnings. + // The normal fix for such things is to disable the feature as below, +@@ -40,7 +36,6 @@ extern "C" { + MSVC_PUSH_DISABLE_WARNING(4244); + #include + #include +-#include + #include + #include + #include +diff -Naurp chromium-59.0.3071.109-orig/media/filters/ffmpeg_demuxer.cc chromium-59.0.3071.109/media/filters/ffmpeg_demuxer.cc +--- chromium-59.0.3071.109-orig/media/filters/ffmpeg_demuxer.cc 2017-06-20 17:03:19.000000000 -0500 ++++ chromium-59.0.3071.109/media/filters/ffmpeg_demuxer.cc 2017-06-23 00:22:56.289311692 -0500 +@@ -1223,29 +1223,6 @@ void FFmpegDemuxer::OnFindStreamInfoDone + // If no estimate is found, the stream entry will be kInfiniteDuration. + std::vector start_time_estimates(format_context->nb_streams, + kInfiniteDuration); +- const AVFormatInternal* internal = format_context->internal; +- if (internal && internal->packet_buffer && +- format_context->start_time != static_cast(AV_NOPTS_VALUE)) { +- struct AVPacketList* packet_buffer = internal->packet_buffer; +- while (packet_buffer != internal->packet_buffer_end) { +- DCHECK_LT(static_cast(packet_buffer->pkt.stream_index), +- start_time_estimates.size()); +- const AVStream* stream = +- format_context->streams[packet_buffer->pkt.stream_index]; +- if (packet_buffer->pkt.pts != static_cast(AV_NOPTS_VALUE)) { +- const base::TimeDelta packet_pts = +- ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts); +- // We ignore kNoTimestamp here since -int64_t::min() is possible; see +- // https://crbug.com/700501. Technically this is a valid value, but in +- // practice shouldn't occur, so just ignore it when estimating. +- if (packet_pts != kNoTimestamp && packet_pts != kInfiniteDuration && +- packet_pts < start_time_estimates[stream->index]) { +- start_time_estimates[stream->index] = packet_pts; +- } +- } +- packet_buffer = packet_buffer->next; +- } +- } + + std::unique_ptr media_tracks(new MediaTracks()); + diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix index bb4f9a1371b1..708320e92a2d 100644 --- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix +++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix @@ -1,18 +1,18 @@ # This file is autogenerated from update.sh in the same directory. { beta = { - sha256 = "1lr8yc1inj0r0znak4rq37c9r0jhmag0ny9dqxng2jpgqq7mkp2g"; - sha256bin64 = "1yyw7i50jkgkwrgp4by83m0xwsi44bkxsyw47lrqbfzask3zazbm"; - version = "60.0.3112.40"; + sha256 = "086j8s8wjwk26gfb7hdqn1lsmwgr9mmw93yfi6s4wia9ra0ccwj2"; + sha256bin64 = "0z1dshxzyn5zhr4xg5mvrq70jxsfkwv50achq802322y4jz52f7n"; + version = "60.0.3112.66"; }; dev = { - sha256 = "1xhv32bxiwz56gcbw47syl88a54x5gira4drh378zp8cwgh9pz4z"; - sha256bin64 = "18k3wml6yl2qghhnxb2w2d0k2397i0829nk0sqc38qz2sjbbvzna"; - version = "61.0.3135.4"; + sha256 = "1hbf7hv4934686dp0dbqy06vbwb2kq4wz5hjfdxrgafrzqac2j7g"; + sha256bin64 = "1gg1a3k80qncr7dpw9gycndv52396cqyq9zfmzf6c4njpn2khjfv"; + version = "61.0.3153.4"; }; stable = { - sha256 = "1naqlxz9w07nlnwxkmxwf9jnxvmagj88xcjqh9r873a26wsypyl3"; - sha256bin64 = "1h086irdsjs27n7ch54hy7zbiypc4swr8wnxjha1q39wc1bpc7hl"; - version = "59.0.3071.109"; + sha256 = "0w1i4q7w5lcajc18jrchrhhm00x0jzm846l5x7a5rcp3baawkjrp"; + sha256bin64 = "1naq20508qjm9hlwlpj686a0lawca58rnr35ws2gh2gsyxrxnmx1"; + version = "59.0.3071.115"; }; } -- cgit 1.4.1