summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorHerwig Hochleitner <herwig@bendlas.net>2017-07-07 00:54:10 +0200
committerHerwig Hochleitner <herwig@bendlas.net>2017-07-15 13:14:37 +0200
commitcc583b75fb4241cb7b6e005942fc928f64f60a5b (patch)
tree6c01199367527c6318bf74e3ae63f9da99685aa5 /pkgs
parent7383d69514f2ec11f8fab4d7bf04c142a5ab57fd (diff)
downloadnixlib-cc583b75fb4241cb7b6e005942fc928f64f60a5b.tar
nixlib-cc583b75fb4241cb7b6e005942fc928f64f60a5b.tar.gz
nixlib-cc583b75fb4241cb7b6e005942fc928f64f60a5b.tar.bz2
nixlib-cc583b75fb4241cb7b6e005942fc928f64f60a5b.tar.lz
nixlib-cc583b75fb4241cb7b6e005942fc928f64f60a5b.tar.xz
nixlib-cc583b75fb4241cb7b6e005942fc928f64f60a5b.tar.zst
nixlib-cc583b75fb4241cb7b6e005942fc928f64f60a5b.zip
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
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix31
-rw-r--r--pkgs/applications/networking/browsers/chromium/patches/chromium-59.0.3071.115-system_ffmpeg-1.patch63
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.nix18
3 files changed, 101 insertions, 11 deletions
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 <dj_AT_linuxfromscratch_DOT_org>
+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 <libavcodec/avcodec.h>
+ #include <libavformat/avformat.h>
+-#include <libavformat/internal.h>
+ #include <libavformat/avio.h>
+ #include <libavutil/avutil.h>
+ #include <libavutil/imgutils.h>
+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<base::TimeDelta> 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<int64_t>(AV_NOPTS_VALUE)) {
+-    struct AVPacketList* packet_buffer = internal->packet_buffer;
+-    while (packet_buffer != internal->packet_buffer_end) {
+-      DCHECK_LT(static_cast<size_t>(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<int64_t>(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<MediaTracks> 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";
   };
 }