From 29aa9da06f1bef43aa62660954446d8a03d9a141 Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Sat, 5 Aug 2017 17:16:08 -0400 Subject: [PATCH] 60.0.3112.90 + headless + fixes for freeworld --- .gitignore | 1 + chromium-60.0.3112.78-enable-mp3.patch | 479 ++++++++++++++ chromium-60.0.3112.78-fix-gn-bootstrap.patch | 11 + chromium-60.0.3112.78-gcc7.patch | 80 +++ chromium-60.0.3112.78-gn-system.patch | 221 +++++++ chromium-60.0.3112.78-gtk2fix.patch | 612 ++++++++++++++++++ chromium-60.0.3112.78-jpeg-nomangle.patch | 14 + ...um-60.0.3112.78-last-commit-position.patch | 28 + chromium-60.0.3112.78-no-libpng-prefix.patch | 17 + chromium-60.0.3112.78-no-zlib-mangle.patch | 13 + chromium.spec | 236 ++++--- sources | 5 +- 12 files changed, 1640 insertions(+), 77 deletions(-) create mode 100644 chromium-60.0.3112.78-enable-mp3.patch create mode 100644 chromium-60.0.3112.78-fix-gn-bootstrap.patch create mode 100644 chromium-60.0.3112.78-gcc7.patch create mode 100644 chromium-60.0.3112.78-gn-system.patch create mode 100644 chromium-60.0.3112.78-gtk2fix.patch create mode 100644 chromium-60.0.3112.78-jpeg-nomangle.patch create mode 100644 chromium-60.0.3112.78-last-commit-position.patch create mode 100644 chromium-60.0.3112.78-no-libpng-prefix.patch create mode 100644 chromium-60.0.3112.78-no-zlib-mangle.patch diff --git a/.gitignore b/.gitignore index ce8a1845..19bd92f3 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ /chromium-59.0.3071.109-clean.tar.xz /chromium-59.0.3071.115-clean.tar.xz /chromium-59.0.3071.109-freetype.tar.bz2 +/chromium-60.0.3112.90-clean.tar.xz diff --git a/chromium-60.0.3112.78-enable-mp3.patch b/chromium-60.0.3112.78-enable-mp3.patch new file mode 100644 index 00000000..3dfdab26 --- /dev/null +++ b/chromium-60.0.3112.78-enable-mp3.patch @@ -0,0 +1,479 @@ +diff -up chromium-60.0.3112.78/components/neterror/resources/sounds/button-press.mp3 chromium-60.0.3112.78/components/neterror/resources/sounds/button-press +diff -up chromium-60.0.3112.78/components/neterror/resources/sounds/hit.mp3 chromium-60.0.3112.78/components/neterror/resources/sounds/hit +diff -up chromium-60.0.3112.78/components/neterror/resources/sounds/score-reached.mp3 chromium-60.0.3112.78/components/neterror/resources/sounds/score-reached +diff -up chromium-60.0.3112.78/media/base/mime_util_internal.cc.mp3 chromium-60.0.3112.78/media/base/mime_util_internal.cc +--- chromium-60.0.3112.78/media/base/mime_util_internal.cc.mp3 2017-07-25 15:04:57.000000000 -0400 ++++ chromium-60.0.3112.78/media/base/mime_util_internal.cc 2017-07-31 10:57:55.054231795 -0400 +@@ -278,10 +278,10 @@ void MimeUtil::AddSupportedMediaFormats( + CodecSet webm_codecs(webm_audio_codecs); + webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end()); + +-#if BUILDFLAG(USE_PROPRIETARY_CODECS) + CodecSet mp3_codecs; + mp3_codecs.insert(MP3); + ++#if BUILDFLAG(USE_PROPRIETARY_CODECS) + CodecSet aac; + aac.insert(MPEG2_AAC); + aac.insert(MPEG4_AAC); +@@ -325,10 +325,10 @@ void MimeUtil::AddSupportedMediaFormats( + AddContainerWithCodecs("application/ogg", ogg_codecs, false); + AddContainerWithCodecs("audio/flac", implicit_codec, false); + +-#if BUILDFLAG(USE_PROPRIETARY_CODECS) + AddContainerWithCodecs("audio/mpeg", mp3_codecs, true); // Allow "mp3". + AddContainerWithCodecs("audio/mp3", implicit_codec, true); + AddContainerWithCodecs("audio/x-mp3", implicit_codec, true); ++#if BUILDFLAG(USE_PROPRIETARY_CODECS) + AddContainerWithCodecs("audio/aac", implicit_codec, true); // AAC / ADTS. + AddContainerWithCodecs("audio/mp4", mp4_audio_codecs, true); + DCHECK(!mp4_video_codecs.empty()); +@@ -928,7 +928,6 @@ bool MimeUtil::IsCodecProprietary(Codec + case INVALID_CODEC: + case AC3: + case EAC3: +- case MP3: + case MPEG2_AAC: + case MPEG4_AAC: + case H264: +@@ -936,6 +935,7 @@ bool MimeUtil::IsCodecProprietary(Codec + case DOLBY_VISION: + return true; + ++ case MP3: + case PCM: + case VORBIS: + case OPUS: +diff -up chromium-60.0.3112.78/media/BUILD.gn.mp3 chromium-60.0.3112.78/media/BUILD.gn +diff -up chromium-60.0.3112.78/media/formats/BUILD.gn.mp3 chromium-60.0.3112.78/media/formats/BUILD.gn +--- chromium-60.0.3112.78/media/formats/BUILD.gn.mp3 2017-07-31 11:00:08.486638957 -0400 ++++ chromium-60.0.3112.78/media/formats/BUILD.gn 2017-07-31 11:01:17.867290730 -0400 +@@ -12,6 +12,14 @@ source_set("formats") { + "ac3/ac3_util.h", + "common/offset_byte_queue.cc", + "common/offset_byte_queue.h", ++ "mpeg/adts_constants.cc", ++ "mpeg/adts_constants.h", ++ "mpeg/adts_stream_parser.cc", ++ "mpeg/adts_stream_parser.h", ++ "mpeg/mpeg1_audio_stream_parser.cc", ++ "mpeg/mpeg1_audio_stream_parser.h", ++ "mpeg/mpeg_audio_stream_parser_base.cc", ++ "mpeg/mpeg_audio_stream_parser_base.h", + "webm/webm_audio_client.cc", + "webm/webm_audio_client.h", + "webm/webm_cluster_parser.cc", +@@ -76,14 +84,6 @@ source_set("formats") { + "mp4/sample_to_group_iterator.h", + "mp4/track_run_iterator.cc", + "mp4/track_run_iterator.h", +- "mpeg/adts_constants.cc", +- "mpeg/adts_constants.h", +- "mpeg/adts_stream_parser.cc", +- "mpeg/adts_stream_parser.h", +- "mpeg/mpeg1_audio_stream_parser.cc", +- "mpeg/mpeg1_audio_stream_parser.h", +- "mpeg/mpeg_audio_stream_parser_base.cc", +- "mpeg/mpeg_audio_stream_parser_base.h", + ] + } + +diff -up chromium-60.0.3112.78/third_party/catapult/third_party/gsutil/gslib/tests/test_data/test.mp3 chromium-60.0.3112.78/third_party/catapult/third_party/gsutil/gslib/tests/test_data/test +diff -up chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h.mp3 chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h +--- chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h.mp3 2017-07-31 10:18:49.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h 2017-07-31 10:57:55.056231757 -0400 +@@ -1,7 +1,7 @@ + /* Automatically generated by configure - do not modify! */ + #ifndef FFMPEG_CONFIG_H + #define FFMPEG_CONFIG_H +-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic" ++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --enable-decoder='mp3' --enable-demuxer='mp3' --enable-parser='mpegaudio'" + #define FFMPEG_LICENSE "LGPL version 2.1 or later" + #define CONFIG_THIS_YEAR 2017 + #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" +@@ -550,7 +550,7 @@ + #define CONFIG_FFPROBE 0 + #define CONFIG_FFSERVER 0 + #define CONFIG_FFMPEG 0 +-#define CONFIG_DCT 0 ++#define CONFIG_DCT 1 + #define CONFIG_DWT 0 + #define CONFIG_ERROR_RESILIENCE 0 + #define CONFIG_FAAN 1 +@@ -617,8 +617,8 @@ + #define CONFIG_LZF 0 + #define CONFIG_ME_CMP 0 + #define CONFIG_MPEG_ER 0 +-#define CONFIG_MPEGAUDIO 0 +-#define CONFIG_MPEGAUDIODSP 0 ++#define CONFIG_MPEGAUDIO 1 ++#define CONFIG_MPEGAUDIODSP 1 + #define CONFIG_MPEGVIDEO 0 + #define CONFIG_MPEGVIDEOENC 0 + #define CONFIG_MSS34DSP 0 +@@ -957,7 +957,7 @@ + #define CONFIG_MP1FLOAT_DECODER 0 + #define CONFIG_MP2_DECODER 0 + #define CONFIG_MP2FLOAT_DECODER 0 +-#define CONFIG_MP3_DECODER 0 ++#define CONFIG_MP3_DECODER 1 + #define CONFIG_MP3FLOAT_DECODER 0 + #define CONFIG_MP3ADU_DECODER 0 + #define CONFIG_MP3ADUFLOAT_DECODER 0 +@@ -1263,7 +1263,7 @@ + #define CONFIG_MM_DEMUXER 0 + #define CONFIG_MMF_DEMUXER 0 + #define CONFIG_MOV_DEMUXER 0 +-#define CONFIG_MP3_DEMUXER 0 ++#define CONFIG_MP3_DEMUXER 1 + #define CONFIG_MPC_DEMUXER 0 + #define CONFIG_MPC8_DEMUXER 0 + #define CONFIG_MPEGPS_DEMUXER 0 +@@ -2196,7 +2196,7 @@ + #define CONFIG_MJPEG_PARSER 0 + #define CONFIG_MLP_PARSER 0 + #define CONFIG_MPEG4VIDEO_PARSER 0 +-#define CONFIG_MPEGAUDIO_PARSER 0 ++#define CONFIG_MPEGAUDIO_PARSER 1 + #define CONFIG_MPEGVIDEO_PARSER 0 + #define CONFIG_OPUS_PARSER 1 + #define CONFIG_PNG_PARSER 0 +diff -up chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h.mp3 chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h +--- chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h.mp3 2017-07-31 10:18:49.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h 2017-07-31 10:57:55.057231738 -0400 +@@ -1,7 +1,7 @@ + /* Automatically generated by configure - do not modify! */ + #ifndef FFMPEG_CONFIG_H + #define FFMPEG_CONFIG_H +-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi- --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic" ++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi- --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --enable-decoder='mp3' --enable-demuxer='mp3' --enable-parser='mpegaudio'" + #define FFMPEG_LICENSE "LGPL version 2.1 or later" + #define CONFIG_THIS_YEAR 2017 + #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" +@@ -550,7 +550,7 @@ + #define CONFIG_FFPROBE 0 + #define CONFIG_FFSERVER 0 + #define CONFIG_FFMPEG 0 +-#define CONFIG_DCT 0 ++#define CONFIG_DCT 1 + #define CONFIG_DWT 0 + #define CONFIG_ERROR_RESILIENCE 0 + #define CONFIG_FAAN 1 +@@ -617,8 +617,8 @@ + #define CONFIG_LZF 0 + #define CONFIG_ME_CMP 0 + #define CONFIG_MPEG_ER 0 +-#define CONFIG_MPEGAUDIO 0 +-#define CONFIG_MPEGAUDIODSP 0 ++#define CONFIG_MPEGAUDIO 1 ++#define CONFIG_MPEGAUDIODSP 1 + #define CONFIG_MPEGVIDEO 0 + #define CONFIG_MPEGVIDEOENC 0 + #define CONFIG_MSS34DSP 0 +@@ -957,7 +957,7 @@ + #define CONFIG_MP1FLOAT_DECODER 0 + #define CONFIG_MP2_DECODER 0 + #define CONFIG_MP2FLOAT_DECODER 0 +-#define CONFIG_MP3_DECODER 0 ++#define CONFIG_MP3_DECODER 1 + #define CONFIG_MP3FLOAT_DECODER 0 + #define CONFIG_MP3ADU_DECODER 0 + #define CONFIG_MP3ADUFLOAT_DECODER 0 +@@ -1263,7 +1263,7 @@ + #define CONFIG_MM_DEMUXER 0 + #define CONFIG_MMF_DEMUXER 0 + #define CONFIG_MOV_DEMUXER 0 +-#define CONFIG_MP3_DEMUXER 0 ++#define CONFIG_MP3_DEMUXER 1 + #define CONFIG_MPC_DEMUXER 0 + #define CONFIG_MPC8_DEMUXER 0 + #define CONFIG_MPEGPS_DEMUXER 0 +@@ -2196,7 +2196,7 @@ + #define CONFIG_MJPEG_PARSER 0 + #define CONFIG_MLP_PARSER 0 + #define CONFIG_MPEG4VIDEO_PARSER 0 +-#define CONFIG_MPEGAUDIO_PARSER 0 ++#define CONFIG_MPEGAUDIO_PARSER 1 + #define CONFIG_MPEGVIDEO_PARSER 0 + #define CONFIG_OPUS_PARSER 1 + #define CONFIG_PNG_PARSER 0 +diff -up chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h.mp3 chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h +--- chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h.mp3 2017-07-31 10:18:49.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h 2017-07-31 10:57:55.106230806 -0400 +@@ -1,7 +1,7 @@ + /* Automatically generated by configure - do not modify! */ + #ifndef FFMPEG_CONFIG_H + #define FFMPEG_CONFIG_H +-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi- --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --enable-neon --extra-cflags='-mfpu=neon' --enable-pic" ++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/home/tguilbert/chrome_root/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --cross-prefix=armv7a-cros-linux-gnueabi- --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --enable-decoder='mp3' --enable-demuxer='mp3' --enable-parser='mpegaudio'" + #define FFMPEG_LICENSE "LGPL version 2.1 or later" + #define CONFIG_THIS_YEAR 2017 + #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" +@@ -550,7 +550,7 @@ + #define CONFIG_FFPROBE 0 + #define CONFIG_FFSERVER 0 + #define CONFIG_FFMPEG 0 +-#define CONFIG_DCT 0 ++#define CONFIG_DCT 1 + #define CONFIG_DWT 0 + #define CONFIG_ERROR_RESILIENCE 0 + #define CONFIG_FAAN 1 +@@ -617,8 +617,8 @@ + #define CONFIG_LZF 0 + #define CONFIG_ME_CMP 0 + #define CONFIG_MPEG_ER 0 +-#define CONFIG_MPEGAUDIO 0 +-#define CONFIG_MPEGAUDIODSP 0 ++#define CONFIG_MPEGAUDIO 1 ++#define CONFIG_MPEGAUDIODSP 1 + #define CONFIG_MPEGVIDEO 0 + #define CONFIG_MPEGVIDEOENC 0 + #define CONFIG_MSS34DSP 0 +@@ -957,7 +957,7 @@ + #define CONFIG_MP1FLOAT_DECODER 0 + #define CONFIG_MP2_DECODER 0 + #define CONFIG_MP2FLOAT_DECODER 0 +-#define CONFIG_MP3_DECODER 0 ++#define CONFIG_MP3_DECODER 1 + #define CONFIG_MP3FLOAT_DECODER 0 + #define CONFIG_MP3ADU_DECODER 0 + #define CONFIG_MP3ADUFLOAT_DECODER 0 +@@ -1263,7 +1263,7 @@ + #define CONFIG_MM_DEMUXER 0 + #define CONFIG_MMF_DEMUXER 0 + #define CONFIG_MOV_DEMUXER 0 +-#define CONFIG_MP3_DEMUXER 0 ++#define CONFIG_MP3_DEMUXER 1 + #define CONFIG_MPC_DEMUXER 0 + #define CONFIG_MPC8_DEMUXER 0 + #define CONFIG_MPEGPS_DEMUXER 0 +@@ -2196,7 +2196,7 @@ + #define CONFIG_MJPEG_PARSER 0 + #define CONFIG_MLP_PARSER 0 + #define CONFIG_MPEG4VIDEO_PARSER 0 +-#define CONFIG_MPEGAUDIO_PARSER 0 ++#define CONFIG_MPEGAUDIO_PARSER 1 + #define CONFIG_MPEGVIDEO_PARSER 0 + #define CONFIG_OPUS_PARSER 1 + #define CONFIG_PNG_PARSER 0 +diff -up chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h.mp3 chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h +--- chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h.mp3 2017-07-31 10:18:49.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h 2017-07-31 10:57:55.107230787 -0400 +@@ -1,7 +1,7 @@ + /* Automatically generated by configure - do not modify! */ + #ifndef FFMPEG_CONFIG_H + #define FFMPEG_CONFIG_H +-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-yasm --enable-pic" ++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-yasm --enable-pic --enable-decoder='mp3' --enable-demuxer='mp3' --enable-parser='mpegaudio'" + #define FFMPEG_LICENSE "LGPL version 2.1 or later" + #define CONFIG_THIS_YEAR 2017 + #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" +@@ -550,7 +550,7 @@ + #define CONFIG_FFPROBE 0 + #define CONFIG_FFSERVER 0 + #define CONFIG_FFMPEG 0 +-#define CONFIG_DCT 0 ++#define CONFIG_DCT 1 + #define CONFIG_DWT 0 + #define CONFIG_ERROR_RESILIENCE 0 + #define CONFIG_FAAN 1 +@@ -617,8 +617,8 @@ + #define CONFIG_LZF 0 + #define CONFIG_ME_CMP 0 + #define CONFIG_MPEG_ER 0 +-#define CONFIG_MPEGAUDIO 0 +-#define CONFIG_MPEGAUDIODSP 0 ++#define CONFIG_MPEGAUDIO 1 ++#define CONFIG_MPEGAUDIODSP 1 + #define CONFIG_MPEGVIDEO 0 + #define CONFIG_MPEGVIDEOENC 0 + #define CONFIG_MSS34DSP 0 +@@ -957,7 +957,7 @@ + #define CONFIG_MP1FLOAT_DECODER 0 + #define CONFIG_MP2_DECODER 0 + #define CONFIG_MP2FLOAT_DECODER 0 +-#define CONFIG_MP3_DECODER 0 ++#define CONFIG_MP3_DECODER 1 + #define CONFIG_MP3FLOAT_DECODER 0 + #define CONFIG_MP3ADU_DECODER 0 + #define CONFIG_MP3ADUFLOAT_DECODER 0 +@@ -1263,7 +1263,7 @@ + #define CONFIG_MM_DEMUXER 0 + #define CONFIG_MMF_DEMUXER 0 + #define CONFIG_MOV_DEMUXER 0 +-#define CONFIG_MP3_DEMUXER 0 ++#define CONFIG_MP3_DEMUXER 1 + #define CONFIG_MPC_DEMUXER 0 + #define CONFIG_MPC8_DEMUXER 0 + #define CONFIG_MPEGPS_DEMUXER 0 +@@ -2196,7 +2196,7 @@ + #define CONFIG_MJPEG_PARSER 0 + #define CONFIG_MLP_PARSER 0 + #define CONFIG_MPEG4VIDEO_PARSER 0 +-#define CONFIG_MPEGAUDIO_PARSER 0 ++#define CONFIG_MPEGAUDIO_PARSER 1 + #define CONFIG_MPEGVIDEO_PARSER 0 + #define CONFIG_OPUS_PARSER 1 + #define CONFIG_PNG_PARSER 0 +diff -up chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h.mp3 chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h +--- chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h.mp3 2017-07-31 10:18:49.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h 2017-07-31 10:57:55.108230768 -0400 +@@ -1,7 +1,7 @@ + /* Automatically generated by configure - do not modify! */ + #ifndef FFMPEG_CONFIG_H + #define FFMPEG_CONFIG_H +-#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --enable-lto" ++#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --disable-nvenc --disable-cuda --disable-cuvid --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac' --enable-parser='opus,vorbis,flac' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --enable-lto --enable-decoder='mp3' --enable-demuxer='mp3' --enable-parser='mpegaudio'" + #define FFMPEG_LICENSE "LGPL version 2.1 or later" + #define CONFIG_THIS_YEAR 2017 + #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" +@@ -550,7 +550,7 @@ + #define CONFIG_FFPROBE 0 + #define CONFIG_FFSERVER 0 + #define CONFIG_FFMPEG 0 +-#define CONFIG_DCT 0 ++#define CONFIG_DCT 1 + #define CONFIG_DWT 0 + #define CONFIG_ERROR_RESILIENCE 0 + #define CONFIG_FAAN 1 +@@ -617,8 +617,8 @@ + #define CONFIG_LZF 0 + #define CONFIG_ME_CMP 0 + #define CONFIG_MPEG_ER 0 +-#define CONFIG_MPEGAUDIO 0 +-#define CONFIG_MPEGAUDIODSP 0 ++#define CONFIG_MPEGAUDIO 1 ++#define CONFIG_MPEGAUDIODSP 1 + #define CONFIG_MPEGVIDEO 0 + #define CONFIG_MPEGVIDEOENC 0 + #define CONFIG_MSS34DSP 0 +@@ -957,7 +957,7 @@ + #define CONFIG_MP1FLOAT_DECODER 0 + #define CONFIG_MP2_DECODER 0 + #define CONFIG_MP2FLOAT_DECODER 0 +-#define CONFIG_MP3_DECODER 0 ++#define CONFIG_MP3_DECODER 1 + #define CONFIG_MP3FLOAT_DECODER 0 + #define CONFIG_MP3ADU_DECODER 0 + #define CONFIG_MP3ADUFLOAT_DECODER 0 +@@ -1263,7 +1263,7 @@ + #define CONFIG_MM_DEMUXER 0 + #define CONFIG_MMF_DEMUXER 0 + #define CONFIG_MOV_DEMUXER 0 +-#define CONFIG_MP3_DEMUXER 0 ++#define CONFIG_MP3_DEMUXER 1 + #define CONFIG_MPC_DEMUXER 0 + #define CONFIG_MPC8_DEMUXER 0 + #define CONFIG_MPEGPS_DEMUXER 0 +@@ -2196,7 +2196,7 @@ + #define CONFIG_MJPEG_PARSER 0 + #define CONFIG_MLP_PARSER 0 + #define CONFIG_MPEG4VIDEO_PARSER 0 +-#define CONFIG_MPEGAUDIO_PARSER 0 ++#define CONFIG_MPEGAUDIO_PARSER 1 + #define CONFIG_MPEGVIDEO_PARSER 0 + #define CONFIG_OPUS_PARSER 1 + #define CONFIG_PNG_PARSER 0 +diff -up chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni.mp3 chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni +--- chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni.mp3 2017-07-31 10:18:46.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/ffmpeg/ffmpeg_generated.gni 2017-07-31 10:57:55.109230749 -0400 +@@ -177,19 +177,12 @@ if ((is_linux && current_cpu == "arm" && + ] + } + +-if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) { ++if ((current_cpu == "x64") || (is_android && current_cpu == "arm" && arm_use_neon) || (is_android && current_cpu == "arm64") || (is_android && current_cpu == "mips64el") || (is_android && current_cpu == "mipsel") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm") || (is_linux && current_cpu == "arm64") || (is_linux && current_cpu == "mipsel") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_win)) ++{ + ffmpeg_c_sources += [ +- "libavcodec/aac_ac3_parser.c", +- "libavcodec/aac_parser.c", +- "libavcodec/aacadtsdec.c", +- "libavcodec/aacps_float.c", +- "libavcodec/aacpsdsp_float.c", +- "libavcodec/aacsbr.c", +- "libavcodec/aactab.c", +- "libavcodec/ac3tab.c", +- "libavcodec/autorename_libavcodec_aacdec.c", + "libavcodec/autorename_libavcodec_mpegaudiodsp.c", + "libavcodec/autorename_libavcodec_sbrdsp.c", ++ "libavcodec/ac3tab.c", + "libavcodec/cbrt_data.c", + "libavcodec/dct.c", + "libavcodec/dct32_fixed.c", +@@ -205,7 +198,6 @@ if ((current_cpu == "x64" && ffmpeg_bran + "libavcodec/mpegaudiodsp_float.c", + "libavcodec/sinewin.c", + "libavcodec/sinewin_fixed.c", +- "libavformat/aacdec.c", + "libavformat/apetag.c", + "libavformat/img2.c", + "libavformat/mov.c", +@@ -214,6 +206,21 @@ if ((current_cpu == "x64" && ffmpeg_bran + ] + } + ++if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) ++{ ++ ffmpeg_c_sources += [ ++ "libavcodec/aac_ac3_parser.c", ++ "libavcodec/aac_parser.c", ++ "libavcodec/aacadtsdec.c", ++ "libavcodec/aacps_float.c", ++ "libavcodec/aacpsdsp_float.c", ++ "libavcodec/aacsbr.c", ++ "libavcodec/aactab.c", ++ "libavcodec/autorename_libavcodec_aacdec.c", ++ "libavformat/aacdec.c", ++ ] ++} ++ + if ((is_android && current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_mac) || (is_win)) { + ffmpeg_c_sources += [ + "libavcodec/x86/autorename_libavcodec_x86_vorbisdsp_init.c", +@@ -315,21 +322,31 @@ if ((is_linux && current_cpu == "x64") | + if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) { + ffmpeg_c_sources += [ + "libavcodec/x86/aacpsdsp_init.c", ++ ] ++} ++ ++if ((current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_win)) { ++ ffmpeg_c_sources += [ + "libavcodec/x86/dct_init.c", + "libavcodec/x86/mpegaudiodsp.c", + "libavcodec/x86/sbrdsp_init.c", + ] + } + +-if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) { ++if ((current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_win)) { + ffmpeg_yasm_sources += [ +- "libavcodec/x86/aacpsdsp.asm", + "libavcodec/x86/dct32.asm", + "libavcodec/x86/imdct36.asm", + "libavcodec/x86/sbrdsp.asm", + ] + } + ++if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) { ++ ffmpeg_yasm_sources += [ ++ "libavcodec/x86/aacpsdsp.asm", ++ ] ++} ++ + if ((is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm")) { + ffmpeg_c_sources += [ + "libavcodec/arm/h264pred_init_arm.c", +diff -up chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c.mp3 chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c +--- chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c.mp3 2017-07-31 10:18:48.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/ffmpeg/libavcodec/sbrdsp.c 2017-07-31 10:57:55.110230730 -0400 +@@ -23,6 +23,7 @@ + #define USE_FIXED 0 + + #include "aac.h" ++#include "aacsbrdata.h" + #include "config.h" + #include "libavutil/attributes.h" + #include "libavutil/intfloat.h" +diff -up chromium-60.0.3112.78/third_party/webrtc/examples/objc/AppRTCMobile/ios/resources/mozart.mp3 chromium-60.0.3112.78/third_party/webrtc/examples/objc/AppRTCMobile/ios/resources/mozart +diff -up chromium-60.0.3112.78/tools/android/audio_focus_grabber/java/res/raw/ping.mp3 chromium-60.0.3112.78/tools/android/audio_focus_grabber/java/res/raw/ping diff --git a/chromium-60.0.3112.78-fix-gn-bootstrap.patch b/chromium-60.0.3112.78-fix-gn-bootstrap.patch new file mode 100644 index 00000000..b67d18f9 --- /dev/null +++ b/chromium-60.0.3112.78-fix-gn-bootstrap.patch @@ -0,0 +1,11 @@ +diff -up chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py.fixme chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py +--- chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py.fixme 2017-07-31 11:47:11.660774702 -0400 ++++ chromium-60.0.3112.78/tools/gn/bootstrap/bootstrap.py 2017-07-31 11:47:32.859362600 -0400 +@@ -487,6 +487,7 @@ def write_gn_ninja(path, root_gen_dir, o + 'base/sys_info.cc', + 'base/task_runner.cc', + 'base/task_scheduler/delayed_task_manager.cc', ++ 'base/task_scheduler/environment_config.cc', + 'base/task_scheduler/post_task.cc', + 'base/task_scheduler/priority_queue.cc', + 'base/task_scheduler/scheduler_lock_impl.cc', diff --git a/chromium-60.0.3112.78-gcc7.patch b/chromium-60.0.3112.78-gcc7.patch new file mode 100644 index 00000000..ae8f5c87 --- /dev/null +++ b/chromium-60.0.3112.78-gcc7.patch @@ -0,0 +1,80 @@ +diff -up chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h.gcc7 chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h +--- chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h.gcc7 2017-07-25 15:05:15.000000000 -0400 ++++ chromium-60.0.3112.78/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h 2017-07-31 10:51:08.530131802 -0400 +@@ -8,6 +8,7 @@ + #include "platform/PlatformExport.h" + #include "platform/wtf/ThreadSpecific.h" + ++#include + #include + + namespace gpu { +diff -up chromium-60.0.3112.78/v8/src/objects-body-descriptors.h.gcc7 chromium-60.0.3112.78/v8/src/objects-body-descriptors.h +--- chromium-60.0.3112.78/v8/src/objects-body-descriptors.h.gcc7 2017-07-31 10:51:08.531131782 -0400 ++++ chromium-60.0.3112.78/v8/src/objects-body-descriptors.h 2017-07-31 10:55:08.989458924 -0400 +@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public + + template + static inline void IterateBody(HeapObject* obj, int object_size) { +- IterateBody(obj); ++ IterateBody(obj); + } + + static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } +diff -up chromium-60.0.3112.78/v8/src/objects/hash-table.h.gcc7 chromium-60.0.3112.78/v8/src/objects/hash-table.h +--- chromium-60.0.3112.78/v8/src/objects/hash-table.h.gcc7 2017-07-25 15:06:36.000000000 -0400 ++++ chromium-60.0.3112.78/v8/src/objects/hash-table.h 2017-07-31 10:51:08.531131782 -0400 +@@ -138,22 +138,8 @@ class HashTable : public HashTableBase { + public: + typedef Shape ShapeT; + +- // Wrapper methods +- inline uint32_t Hash(Key key) { +- if (Shape::UsesSeed) { +- return Shape::SeededHash(key, GetHeap()->HashSeed()); +- } else { +- return Shape::Hash(key); +- } +- } +- +- inline uint32_t HashForObject(Key key, Object* object) { +- if (Shape::UsesSeed) { +- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); +- } else { +- return Shape::HashForObject(key, object); +- } +- } ++ inline uint32_t Hash(Key key); ++ inline uint32_t HashForObject(Key key, Object* object); + + // Returns a new HashTable object. + MUST_USE_RESULT static Handle New( +diff -up chromium-60.0.3112.78/v8/src/objects-inl.h.gcc7 chromium-60.0.3112.78/v8/src/objects-inl.h +--- chromium-60.0.3112.78/v8/src/objects-inl.h.gcc7 2017-07-25 15:06:36.000000000 -0400 ++++ chromium-60.0.3112.78/v8/src/objects-inl.h 2017-07-31 10:51:08.533131742 -0400 +@@ -47,6 +47,25 @@ + namespace v8 { + namespace internal { + ++template ++uint32_t HashTable::Hash(Key key) { ++ if (Shape::UsesSeed) { ++ return Shape::SeededHash(key, GetHeap()->HashSeed()); ++ } else { ++ return Shape::Hash(key); ++ } ++} ++ ++template ++uint32_t HashTable::HashForObject(Key key, ++ Object* object) { ++ if (Shape::UsesSeed) { ++ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); ++ } else { ++ return Shape::HashForObject(key, object); ++ } ++} ++ + PropertyDetails::PropertyDetails(Smi* smi) { + value_ = smi->value(); + } diff --git a/chromium-60.0.3112.78-gn-system.patch b/chromium-60.0.3112.78-gn-system.patch new file mode 100644 index 00000000..60489bb8 --- /dev/null +++ b/chromium-60.0.3112.78-gn-system.patch @@ -0,0 +1,221 @@ +diff -up chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn.gnsystem chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn +--- chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn.gnsystem 2017-07-25 15:04:48.000000000 -0400 ++++ chromium-60.0.3112.78/build/linux/unbundle/libjpeg.gn 2017-07-31 10:38:25.879951641 -0400 +@@ -16,6 +16,10 @@ source_set("libjpeg") { + libs = [ "jpeg" ] + } + ++config("system_libjpeg") { ++ defines = [ "USE_SYSTEM_LIBJPEG=1" ] ++} ++ + source_set("simd") { + } + +diff -up chromium-60.0.3112.78/build/linux/unbundle/libusb.gn.gnsystem chromium-60.0.3112.78/build/linux/unbundle/libusb.gn +--- chromium-60.0.3112.78/build/linux/unbundle/libusb.gn.gnsystem 2017-07-31 10:38:25.880951622 -0400 ++++ chromium-60.0.3112.78/build/linux/unbundle/libusb.gn 2017-07-31 10:38:25.879951641 -0400 +@@ -0,0 +1,24 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++ ++pkg_config("system_libusb") { ++ packages = [ "libusb-1.0" ] ++} ++ ++shim_headers("libusb_shim") { ++ root_path = "src/libusb" ++ headers = [ ++ "libusb.h", ++ ] ++} ++ ++source_set("libusb") { ++ deps = [ ++ ":libusb_shim", ++ ] ++ public_configs = [ ":system_libusb" ] ++} +diff -up chromium-60.0.3112.78/build/linux/unbundle/opus.gn.gnsystem chromium-60.0.3112.78/build/linux/unbundle/opus.gn +--- chromium-60.0.3112.78/build/linux/unbundle/opus.gn.gnsystem 2017-07-25 15:04:48.000000000 -0400 ++++ chromium-60.0.3112.78/build/linux/unbundle/opus.gn 2017-07-31 10:38:25.880951622 -0400 +@@ -1,3 +1,164 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++import("//testing/test.gni") ++ ++pkg_config("system_opus") { ++ packages = [ "opus" ] ++} ++ ++shim_headers("opus_shim") { ++ root_path = "src/include" ++ headers = [ ++ "opus_custom.h", ++ "opus_defines.h", ++ "opus_multistream.h", ++ "opus_types.h", ++ "opus.h", ++ ] ++} ++ ++source_set("opus") { ++ deps = [ ++ ":opus_shim", ++ ] ++ public_configs = [ ":system_opus" ] ++} ++ ++config("opus_test_config") { ++ include_dirs = [ ++ "src/celt", ++ "src/silk", ++ ] ++ ++ if (is_win) { ++ defines = [ "inline=__inline" ] ++ } ++ if (is_android) { ++ libs = [ "log" ] ++ } ++ if (is_clang) { ++ cflags = [ "-Wno-absolute-value" ] ++ } ++} ++ ++executable("opus_compare") { ++ sources = [ ++ "src/src/opus_compare.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ "//build/config/sanitizers:deps", ++ "//build/win:default_exe_manifest", ++ ] ++} ++ ++executable("opus_demo") { ++ sources = [ ++ "src/src/opus_demo.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ "//build/config/sanitizers:deps", ++ "//build/win:default_exe_manifest", ++ ] ++} ++ ++test("test_opus_api") { ++ sources = [ ++ "src/tests/test_opus_api.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ ++test("test_opus_encode") { ++ sources = [ ++ "src/tests/test_opus_encode.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ ++# GN orders flags on a target before flags from configs. The default config ++# adds -Wall, and this flag have to be after -Wall -- so they need to ++# come from a config and can't be on the target directly. ++config("test_opus_decode_config") { ++ # test_opus_decode passes a null pointer to opus_decode() for an argument ++ # marked as requiring a non-null value by the nonnull function attribute, ++ # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid ++ # a compilation error if -Werror is specified. ++ if (is_posix) { ++ cflags = [ "-Wno-nonnull" ] ++ } ++} ++ ++test("test_opus_decode") { ++ sources = [ ++ "src/tests/test_opus_decode.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ":test_opus_decode_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ ++test("test_opus_padding") { ++ sources = [ ++ "src/tests/test_opus_padding.c", ++ ] ++ ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ ++ "//build/config/compiler:no_chromium_code", ++ ":opus_test_config", ++ ] ++ ++ deps = [ ++ ":opus", ++ ] ++} ++ + # Copyright 2017 The Chromium Authors. All rights reserved. + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. +diff -up chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py.gnsystem chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py +--- chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py.gnsystem 2017-07-31 10:38:25.880951622 -0400 ++++ chromium-60.0.3112.78/build/linux/unbundle/replace_gn_files.py 2017-07-31 10:39:58.067159914 -0400 +@@ -26,6 +26,7 @@ REPLACEMENTS = { + 'libevent': 'base/third_party/libevent/BUILD.gn', + 'libjpeg': 'build/secondary/third_party/libjpeg_turbo/BUILD.gn', + 'libpng': 'third_party/libpng/BUILD.gn', ++ 'libusb': 'third_party/libusb/BUILD.gn', + 'libvpx': 'third_party/libvpx/BUILD.gn', + 'libwebp': 'third_party/libwebp/BUILD.gn', + 'libxml': 'third_party/libxml/BUILD.gn', diff --git a/chromium-60.0.3112.78-gtk2fix.patch b/chromium-60.0.3112.78-gtk2fix.patch new file mode 100644 index 00000000..ecf042d0 --- /dev/null +++ b/chromium-60.0.3112.78-gtk2fix.patch @@ -0,0 +1,612 @@ +diff -up chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc.gtk2fix chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc +--- chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc.gtk2fix 2017-08-03 10:26:36.816787227 -0400 ++++ chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.cc 2017-08-03 10:56:53.345661368 -0400 +@@ -60,6 +60,7 @@ + #include "ui/views/controls/button/blue_button.h" + #include "ui/views/controls/button/label_button.h" + #include "ui/views/controls/button/label_button_border.h" ++#include "ui/views/linux_ui/device_scale_factor_observer.h" + #include "ui/views/linux_ui/window_button_order_observer.h" + #include "ui/views/resources/grit/views_resources.h" + +@@ -315,17 +316,6 @@ gfx::FontRenderParams GetGtkFontRenderPa + return params; + } + +-float GetRawDeviceScaleFactor() { +- if (display::Display::HasForceDeviceScaleFactor()) +- return display::Display::GetForcedDeviceScaleFactor(); +- +- GdkScreen* screen = gdk_screen_get_default(); +- gint scale = gdk_screen_get_monitor_scale_factor( +- screen, gdk_screen_get_primary_monitor(screen)); +- gdouble resolution = gdk_screen_get_resolution(screen); +- return resolution <= 0 ? scale : resolution * scale / kDefaultDPI; +-} +- + views::LinuxUI::NonClientMiddleClickAction GetDefaultMiddleClickAction() { + std::unique_ptr env(base::Environment::Create()); + switch (base::nix::GetDesktopEnvironment(env.get())) { +@@ -414,19 +404,17 @@ GtkUi::GtkUi() : middle_click_action_(Ge + #if GTK_MAJOR_VERSION == 2 + native_theme_ = NativeThemeGtk2::instance(); + fake_window_ = chrome_gtk_frame_new(); +- gtk_widget_realize(fake_window_); // Is this necessary? + #elif GTK_MAJOR_VERSION == 3 + native_theme_ = NativeThemeGtk3::instance(); +- (void)fake_window_; // Silence the unused warning. ++ fake_window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL); + #else + #error "Unsupported GTK version" + #endif ++ gtk_widget_realize(fake_window_); + } + + GtkUi::~GtkUi() { +-#if GTK_MAJOR_VERSION == 2 + gtk_widget_destroy(fake_window_); +-#endif + } + + void OnThemeChanged(GObject* obj, GParamSpec* param, GtkUi* gtkui) { +@@ -440,6 +428,17 @@ void GtkUi::Initialize() { + g_signal_connect_after(settings, "notify::gtk-icon-theme-name", + G_CALLBACK(OnThemeChanged), this); + ++ GdkScreen* screen = gdk_screen_get_default(); ++ // Listen for DPI changes. ++ g_signal_connect_after(screen, "notify::resolution", ++ G_CALLBACK(OnDeviceScaleFactorMaybeChangedThunk), ++ this); ++ // Listen for scale factor changes. We would prefer to listen on ++ // |screen|, but there is no scale-factor property, so use an ++ // unmapped window instead. ++ g_signal_connect(fake_window_, "notify::scale-factor", ++ G_CALLBACK(OnDeviceScaleFactorMaybeChangedThunk), this); ++ + LoadGtkValues(); + + #if BUILDFLAG(ENABLE_BASIC_PRINTING) +@@ -701,12 +700,12 @@ void GtkUi::AddWindowButtonOrderObserver + observer->OnWindowButtonOrderingChange(leading_buttons_, trailing_buttons_); + } + +- observer_list_.AddObserver(observer); ++ window_button_order_observer_list_.AddObserver(observer); + } + + void GtkUi::RemoveWindowButtonOrderObserver( + views::WindowButtonOrderObserver* observer) { +- observer_list_.RemoveObserver(observer); ++ window_button_order_observer_list_.RemoveObserver(observer); + } + + void GtkUi::SetWindowButtonOrdering( +@@ -715,8 +714,10 @@ void GtkUi::SetWindowButtonOrdering( + leading_buttons_ = leading_buttons; + trailing_buttons_ = trailing_buttons; + +- for (views::WindowButtonOrderObserver& observer : observer_list_) ++ for (views::WindowButtonOrderObserver& observer : ++ window_button_order_observer_list_) { + observer.OnWindowButtonOrderingChange(leading_buttons_, trailing_buttons_); ++ } + } + + void GtkUi::SetNonClientMiddleClickAction(NonClientMiddleClickAction action) { +@@ -768,6 +769,16 @@ void GtkUi::NotifyWindowManagerStartupCo + gdk_notify_startup_complete(); + } + ++void GtkUi::AddDeviceScaleFactorObserver( ++ views::DeviceScaleFactorObserver* observer) { ++ device_scale_factor_observer_list_.AddObserver(observer); ++} ++ ++void GtkUi::RemoveDeviceScaleFactorObserver( ++ views::DeviceScaleFactorObserver* observer) { ++ device_scale_factor_observer_list_.RemoveObserver(observer); ++} ++ + bool GtkUi::MatchEvent(const ui::Event& event, + std::vector* commands) { + // Ensure that we have a keyboard handler. +@@ -777,6 +788,10 @@ bool GtkUi::MatchEvent(const ui::Event& + return key_bindings_handler_->MatchEvent(event, commands); + } + ++void GtkUi::OnDeviceScaleFactorMaybeChanged(void*, GParamSpec*) { ++ UpdateDeviceScaleFactor(); ++} ++ + void GtkUi::SetScrollbarColors() { + thumb_active_color_ = SkColorSetRGB(244, 244, 244); + thumb_inactive_color_ = SkColorSetRGB(234, 234, 234); +@@ -1037,14 +1052,38 @@ void GtkUi::ResetStyle() { + native_theme_->NotifyObservers(); + } + +-void GtkUi::UpdateDeviceScaleFactor() { +- // Note: Linux chrome currently does not support dynamic DPI +- // changes. This is to allow flags to override the DPI settings +- // during startup. +- float scale = GetRawDeviceScaleFactor(); ++float GtkUi::GetRawDeviceScaleFactor() { ++ if (display::Display::HasForceDeviceScaleFactor()) ++ return display::Display::GetForcedDeviceScaleFactor(); ++ ++#if GTK_MAJOR_VERSION == 2 ++ GtkSettings* gtk_settings = gtk_settings_get_default(); ++ gint gtk_dpi = -1; ++ g_object_get(gtk_settings, "gtk-xft-dpi", >k_dpi, nullptr); ++ const float scale_factor = gtk_dpi / (1024 * kDefaultDPI); ++#else ++ GdkScreen* screen = gdk_screen_get_default(); ++ gint scale = gtk_widget_get_scale_factor(fake_window_); ++ DCHECK_GT(scale, 0); ++ gdouble resolution = gdk_screen_get_resolution(screen); ++ const float scale_factor = ++ resolution <= 0 ? scale : resolution * scale / kDefaultDPI; ++#endif ++ + // Blacklist scaling factors <120% (crbug.com/484400) and round + // to 1 decimal to prevent rendering problems (crbug.com/485183). +- device_scale_factor_ = scale < 1.2f ? 1.0f : roundf(scale * 10) / 10; ++ return scale_factor < 1.2f ? 1.0f : roundf(scale_factor * 10) / 10; ++} ++ ++void GtkUi::UpdateDeviceScaleFactor() { ++ float old_device_scale_factor = device_scale_factor_; ++ device_scale_factor_ = GetRawDeviceScaleFactor(); ++ if (device_scale_factor_ != old_device_scale_factor) { ++ for (views::DeviceScaleFactorObserver& observer : ++ device_scale_factor_observer_list_) { ++ observer.OnDeviceScaleFactorChanged(); ++ } ++ } + UpdateDefaultFont(); + } + +diff -up chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h.gtk2fix chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h +--- chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h.gtk2fix 2017-08-03 10:35:28.031517634 -0400 ++++ chromium-60.0.3112.78/chrome/browser/ui/libgtkui/gtk_ui.h 2017-08-03 10:37:29.300173415 -0400 +@@ -18,12 +18,14 @@ + #include "ui/views/linux_ui/linux_ui.h" + #include "ui/views/window/frame_buttons.h" + ++typedef struct _GParamSpec GParamSpec; + typedef struct _GtkStyle GtkStyle; + typedef struct _GtkWidget GtkWidget; + + namespace libgtkui { + class Gtk2KeyBindingsHandler; + class GConfListener; ++class DeviceScaleFactorObserver; + + // Interface to GTK2 desktop features. + // +@@ -97,6 +99,10 @@ class GtkUi : public views::LinuxUI { + bool UnityIsRunning() override; + NonClientMiddleClickAction GetNonClientMiddleClickAction() override; + void NotifyWindowManagerStartupComplete() override; ++ void AddDeviceScaleFactorObserver( ++ views::DeviceScaleFactorObserver* observer) override; ++ void RemoveDeviceScaleFactorObserver( ++ views::DeviceScaleFactorObserver* observer) override; + + // ui::TextEditKeybindingDelegate: + bool MatchEvent(const ui::Event& event, +@@ -110,6 +116,12 @@ class GtkUi : public views::LinuxUI { + typedef std::map ColorMap; + typedef std::map TintMap; + ++ CHROMEG_CALLBACK_1(GtkUi, ++ void, ++ OnDeviceScaleFactorMaybeChanged, ++ void*, ++ GParamSpec*); ++ + // This method returns the colors webkit will use for the scrollbars. When no + // colors are specified by the GTK+ theme, this function averages of the + // thumb part and of the track colors. +@@ -129,9 +141,12 @@ class GtkUi : public views::LinuxUI { + bool GetChromeStyleColor(const char* sytle_property, + SkColor* ret_color) const; + ++ float GetRawDeviceScaleFactor(); ++ + ui::NativeTheme* native_theme_; + +- // A GtkWindow object with the class "ChromeGtkFrame". ++ // On Gtk2, A GtkWindow object with the class "ChromeGtkFrame". On ++ // Gtk3, a regular GtkWindow. + GtkWidget* fake_window_; + + // Colors calculated by LoadGtkValues() that are given to the +@@ -171,7 +186,12 @@ class GtkUi : public views::LinuxUI { + std::unique_ptr key_bindings_handler_; + + // Objects to notify when the window frame button order changes. +- base::ObserverList observer_list_; ++ base::ObserverList ++ window_button_order_observer_list_; ++ ++ // Objects to notify when the device scale factor changes. ++ base::ObserverList ++ device_scale_factor_observer_list_; + + // Whether we should lower the window on a middle click to the non client + // area. +diff -up chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h.gtk2fix chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h +--- chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h.gtk2fix 2017-08-03 10:39:23.600963296 -0400 ++++ chromium-60.0.3112.78/ui/views/linux_ui/device_scale_factor_observer.h 2017-08-03 10:39:39.024664885 -0400 +@@ -0,0 +1,19 @@ ++// Copyright 2017 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef UI_VIEWS_LINUX_UI_DEVICE_SCALE_FACTOR_OBSERVER_H_ ++#define UI_VIEWS_LINUX_UI_DEVICE_SCALE_FACTOR_OBSERVER_H_ ++ ++namespace views { ++ ++class DeviceScaleFactorObserver { ++ public: ++ virtual ~DeviceScaleFactorObserver() {} ++ ++ virtual void OnDeviceScaleFactorChanged() = 0; ++}; ++ ++} // namespace views ++ ++#endif // UI_VIEWS_LINUX_UI_DEVICE_SCALE_FACTOR_OBSERVER_H_ +diff -up chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h.gtk2fix chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h +--- chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h.gtk2fix 2017-08-03 10:39:48.866474799 -0400 ++++ chromium-60.0.3112.78/ui/views/linux_ui/linux_ui.h 2017-08-03 10:41:05.598991893 -0400 +@@ -38,6 +38,7 @@ class NativeTheme; + + namespace views { + class Border; ++class DeviceScaleFactorObserver; + class LabelButton; + class LabelButtonBorder; + class WindowButtonOrderObserver; +@@ -157,6 +158,16 @@ class VIEWS_EXPORT LinuxUI : public ui:: + + // Determines the device scale factor of the primary screen. + virtual float GetDeviceScaleFactor() const = 0; ++ ++ // Registers |observer| to be notified about changes to the device ++ // scale factor. ++ virtual void AddDeviceScaleFactorObserver( ++ DeviceScaleFactorObserver* observer) = 0; ++ ++ // Unregisters |observer| from receiving changes to the device scale ++ // factor. ++ virtual void RemoveDeviceScaleFactorObserver( ++ DeviceScaleFactorObserver* observer) = 0; + }; + + } // namespace views +diff -up chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc.gtk2fix chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc +--- chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc.gtk2fix 2017-08-03 10:41:28.014558483 -0400 ++++ chromium-60.0.3112.78/ui/views/test/desktop_screen_x11_test_api.cc 2017-08-03 10:41:49.326146074 -0400 +@@ -13,7 +13,7 @@ namespace test { + void DesktopScreenX11TestApi::UpdateDisplays() { + DesktopScreenX11* screen = + static_cast(display::Screen::GetScreen()); +- screen->ConfigureTimerFired(); ++ screen->UpdateDisplays(); + } + + } // namespace test +diff -up chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc.gtk2fix chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc +--- chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc.gtk2fix 2017-08-03 10:41:59.219954866 -0400 ++++ chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.cc 2017-08-03 10:47:16.589818323 -0400 +@@ -11,6 +11,7 @@ + #undef RootWindow + + #include "base/logging.h" ++#include "base/threading/thread_task_runner_handle.h" + #include "base/trace_event/trace_event.h" + #include "ui/aura/window.h" + #include "ui/aura/window_event_dispatcher.h" +@@ -40,10 +41,6 @@ const char* const kAtomsToCache[] = { + nullptr + }; + +-// The delay to perform configuration after RRNotify. See the comment +-// in |Dispatch()|. +-const int64_t kConfigureDelayMs = 500; +- + double GetDeviceScaleFactor() { + float device_scale_factor = 1.0f; + if (views::LinuxUI::instance()) { +@@ -95,7 +92,10 @@ DesktopScreenX11::DesktopScreenX11() + has_xrandr_(false), + xrandr_event_base_(0), + primary_display_index_(0), ++ weak_factory_(this), + atom_cache_(xdisplay_, kAtomsToCache) { ++ if (views::LinuxUI::instance()) ++ views::LinuxUI::instance()->AddDeviceScaleFactorObserver(this); + // We only support 1.3+. There were library changes before this and we should + // use the new interface instead of the 1.2 one. + int randr_version_major = 0; +@@ -124,6 +124,8 @@ DesktopScreenX11::DesktopScreenX11() + } + + DesktopScreenX11::~DesktopScreenX11() { ++ if (views::LinuxUI::instance()) ++ views::LinuxUI::instance()->AddDeviceScaleFactorObserver(this); + if (has_xrandr_ && ui::PlatformEventSource::GetInstance()) + ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this); + } +@@ -251,18 +253,7 @@ uint32_t DesktopScreenX11::DispatchEvent + } else if (event->type - xrandr_event_base_ == RRNotify || + (event->type == PropertyNotify && + event->xproperty.atom == atom_cache_.GetAtom("_NET_WORKAREA"))) { +- // There's some sort of observer dispatch going on here, but I don't think +- // it's the screen's? +- if (configure_timer_.get() && configure_timer_->IsRunning()) { +- configure_timer_->Reset(); +- } else { +- configure_timer_.reset(new base::OneShotTimer()); +- configure_timer_->Start( +- FROM_HERE, +- base::TimeDelta::FromMilliseconds(kConfigureDelayMs), +- this, +- &DesktopScreenX11::ConfigureTimerFired); +- } ++ RestartDelayedConfigurationTask(); + } else { + NOTREACHED(); + } +@@ -270,11 +261,15 @@ uint32_t DesktopScreenX11::DispatchEvent + return ui::POST_DISPATCH_NONE; + } + ++void DesktopScreenX11::OnDeviceScaleFactorChanged() { ++ RestartDelayedConfigurationTask(); ++} ++ + // static + void DesktopScreenX11::UpdateDeviceScaleFactorForTest() { + DesktopScreenX11* screen = + static_cast(display::Screen::GetScreen()); +- screen->ConfigureTimerFired(); ++ screen->UpdateDisplays(); + } + + //////////////////////////////////////////////////////////////////////////////// +@@ -288,7 +283,11 @@ DesktopScreenX11::DesktopScreenX11( + xrandr_event_base_(0), + displays_(test_displays), + primary_display_index_(0), +- atom_cache_(xdisplay_, kAtomsToCache) {} ++ weak_factory_(this), ++ atom_cache_(xdisplay_, kAtomsToCache) { ++ if (views::LinuxUI::instance()) ++ views::LinuxUI::instance()->AddDeviceScaleFactorObserver(this); ++} + + std::vector DesktopScreenX11::BuildDisplaysFromXRandRInfo() { + std::vector displays; +@@ -390,7 +389,14 @@ std::vector DesktopScr + return displays; + } + +-void DesktopScreenX11::ConfigureTimerFired() { ++void DesktopScreenX11::RestartDelayedConfigurationTask() { ++ delayed_configuration_task_.Reset(base::Bind( ++ &DesktopScreenX11::UpdateDisplays, weak_factory_.GetWeakPtr())); ++ base::ThreadTaskRunnerHandle::Get()->PostTask( ++ FROM_HERE, delayed_configuration_task_.callback()); ++} ++ ++void DesktopScreenX11::UpdateDisplays() { + std::vector old_displays = displays_; + SetDisplaysInternal(BuildDisplaysFromXRandRInfo()); + change_notifier_.NotifyDisplaysChanged(old_displays, displays_); +diff -up chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h.gtk2fix chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h +--- chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h.gtk2fix 2017-08-03 10:47:28.734583288 -0400 ++++ chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_screen_x11.h 2017-08-03 10:49:54.850756813 -0400 +@@ -9,11 +9,12 @@ + + #include + ++#include "base/cancelable_callback.h" + #include "base/macros.h" +-#include "base/timer/timer.h" + #include "ui/display/display_change_notifier.h" + #include "ui/display/screen.h" + #include "ui/events/platform/platform_event_dispatcher.h" ++#include "ui/views/linux_ui/device_scale_factor_observer.h" + #include "ui/gfx/x/x11_atom_cache.h" + #include "ui/views/views_export.h" + +@@ -30,7 +31,8 @@ class DesktopScreenX11TestApi; + + // Our singleton screen implementation that talks to xrandr. + class VIEWS_EXPORT DesktopScreenX11 : public display::Screen, +- public ui::PlatformEventDispatcher { ++ public ui::PlatformEventDispatcher, ++ public views::DeviceScaleFactorObserver { + public: + DesktopScreenX11(); + +@@ -56,6 +58,9 @@ class VIEWS_EXPORT DesktopScreenX11 : pu + bool CanDispatchEvent(const ui::PlatformEvent& event) override; + uint32_t DispatchEvent(const ui::PlatformEvent& event) override; + ++ // views::DeviceScaleFactorObserver: ++ void OnDeviceScaleFactorChanged() override; ++ + static void UpdateDeviceScaleFactorForTest(); + + private: +@@ -69,10 +74,15 @@ class VIEWS_EXPORT DesktopScreenX11 : pu + // the X server. + std::vector BuildDisplaysFromXRandRInfo(); + +- // We delay updating the display so we can coalesce events. +- void ConfigureTimerFired(); ++ // Removes |delayed_configuration_task_| from the task queue (if ++ // it's in the queue) and adds it back at the end of the queue. ++ void RestartDelayedConfigurationTask(); ++ ++ // Updates |displays_| with the latest XRandR info. ++ void UpdateDisplays(); + +- // Updates |displays_| and sets FontRenderParams's scale factor. ++ // Updates |displays_| from |displays| and sets FontRenderParams's scale ++ // factor. + void SetDisplaysInternal(const std::vector& displays); + + Display* xdisplay_; +@@ -91,12 +101,14 @@ class VIEWS_EXPORT DesktopScreenX11 : pu + // The index into displays_ that represents the primary display. + size_t primary_display_index_; + +- // The timer to delay configuring outputs. See also the comments in +- // Dispatch(). +- std::unique_ptr configure_timer_; ++ // The task to delay configuring outputs. We delay updating the ++ // display so we can coalesce events. ++ base::CancelableCallback delayed_configuration_task_; + + display::DisplayChangeNotifier change_notifier_; + ++ base::WeakPtrFactory weak_factory_; ++ + ui::X11AtomCache atom_cache_; + + DISALLOW_COPY_AND_ASSIGN(DesktopScreenX11); +diff -up chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc.gtk2fix chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +--- chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc.gtk2fix 2017-08-03 10:50:14.858370042 -0400 ++++ chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc 2017-08-03 10:52:58.367207187 -0400 +@@ -212,13 +212,16 @@ DesktopWindowTreeHostX11::DesktopWindowT + has_pointer_focus_(false), + modal_dialog_counter_(0), + close_widget_factory_(this), +- weak_factory_(this) {} ++ weak_factory_(this) { ++ display::Screen::GetScreen()->AddObserver(this); ++} + + DesktopWindowTreeHostX11::~DesktopWindowTreeHostX11() { + window()->ClearProperty(kHostForRootWindow); + aura::client::SetWindowMoveClient(window(), NULL); + desktop_native_widget_aura_->OnDesktopWindowTreeHostDestroyed(this); + DestroyDispatcher(); ++ display::Screen::GetScreen()->RemoveObserver(this); + } + + // static +@@ -1360,6 +1363,30 @@ void DesktopWindowTreeHostX11::OnCursorV + } + + //////////////////////////////////////////////////////////////////////////////// ++// DesktopWindowTreeHostX11, display::DisplayObserver implementation: ++ ++void DesktopWindowTreeHostX11::OnDisplayAdded( ++ const display::Display& new_display) {} ++ ++void DesktopWindowTreeHostX11::OnDisplayRemoved( ++ const display::Display& old_display) {} ++ ++void DesktopWindowTreeHostX11::OnDisplayMetricsChanged( ++ const display::Display& display, ++ uint32_t changed_metrics) { ++ if ((changed_metrics & DISPLAY_METRIC_DEVICE_SCALE_FACTOR) && ++ display::Screen::GetScreen()->GetDisplayNearestWindow(window()).id() == ++ display.id()) { ++ // When the scale factor changes, also pretend that a resize ++ // occured so that the window layout will be refreshed and a ++ // compositor redraw will be scheduled. This is weird, but works. ++ // TODO(thomasanderson): Figure out a more direct way of doing ++ // this. ++ RestartDelayedResizeTask(); ++ } ++} ++ ++//////////////////////////////////////////////////////////////////////////////// + // DesktopWindowTreeHostX11, private: + + void DesktopWindowTreeHostX11::InitX11Window( +@@ -2079,13 +2106,8 @@ uint32_t DesktopWindowTreeHostX11::Dispa + if (origin_changed) + OnHostMovedInPixels(bounds_in_pixels_.origin()); + +- if (size_changed) { +- delayed_resize_task_.Reset(base::Bind( +- &DesktopWindowTreeHostX11::DelayedResize, +- close_widget_factory_.GetWeakPtr(), bounds_in_pixels.size())); +- base::ThreadTaskRunnerHandle::Get()->PostTask( +- FROM_HERE, delayed_resize_task_.callback()); +- } ++ if (size_changed) ++ RestartDelayedResizeTask(); + break; + } + case GenericEvent: { +@@ -2358,6 +2380,14 @@ void DesktopWindowTreeHostX11::EnableEve + targeter_for_modal_.reset(); + } + ++void DesktopWindowTreeHostX11::RestartDelayedResizeTask() { ++ delayed_resize_task_.Reset( ++ base::Bind(&DesktopWindowTreeHostX11::DelayedResize, ++ close_widget_factory_.GetWeakPtr(), bounds_in_pixels_.size())); ++ base::ThreadTaskRunnerHandle::Get()->PostTask( ++ FROM_HERE, delayed_resize_task_.callback()); ++} ++ + //////////////////////////////////////////////////////////////////////////////// + // DesktopWindowTreeHost, public: + +diff -up chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h.gtk2fix chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h +--- chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h.gtk2fix 2017-08-03 10:54:34.484348046 -0400 ++++ chromium-60.0.3112.78/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h 2017-08-03 10:54:43.564172318 -0400 +@@ -18,6 +18,7 @@ + #include "ui/aura/scoped_window_targeter.h" + #include "ui/aura/window_tree_host.h" + #include "ui/base/cursor/cursor_loader_x11.h" ++#include "ui/display/display_observer.h" + #include "ui/events/platform/platform_event_dispatcher.h" + #include "ui/gfx/geometry/insets.h" + #include "ui/gfx/geometry/rect.h" +@@ -45,7 +46,8 @@ class X11DesktopWindowMoveClient; + class VIEWS_EXPORT DesktopWindowTreeHostX11 + : public DesktopWindowTreeHost, + public aura::WindowTreeHost, +- public ui::PlatformEventDispatcher { ++ public ui::PlatformEventDispatcher, ++ public display::DisplayObserver { + public: + DesktopWindowTreeHostX11( + internal::NativeWidgetDelegate* native_widget_delegate, +@@ -170,6 +172,12 @@ class VIEWS_EXPORT DesktopWindowTreeHost + const gfx::Point& location_in_pixels) override; + void OnCursorVisibilityChangedNative(bool show) override; + ++ // Overridden from display::DisplayObserver: ++ void OnDisplayAdded(const display::Display& new_display) override; ++ void OnDisplayRemoved(const display::Display& old_display) override; ++ void OnDisplayMetricsChanged(const display::Display& display, ++ uint32_t changed_metrics) override; ++ + private: + friend class DesktopWindowTreeHostX11HighDPITest; + // Initializes our X11 surface to draw on. This method performs all +@@ -278,6 +286,10 @@ class VIEWS_EXPORT DesktopWindowTreeHost + // Enables event listening after closing |dialog|. + void EnableEventListening(); + ++ // Removes |delayed_resize_task_| from the task queue (if it's in ++ // the queue) and adds it back at the end of the queue. ++ void RestartDelayedResizeTask(); ++ + // X11 things + // The display and the native X window hosting the root window. + XDisplay* xdisplay_; diff --git a/chromium-60.0.3112.78-jpeg-nomangle.patch b/chromium-60.0.3112.78-jpeg-nomangle.patch new file mode 100644 index 00000000..0b758a43 --- /dev/null +++ b/chromium-60.0.3112.78-jpeg-nomangle.patch @@ -0,0 +1,14 @@ +diff -up chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h +--- chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle 2017-08-01 15:29:00.870759406 -0400 ++++ chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h 2017-08-01 15:29:09.326593414 -0400 +@@ -18,10 +18,6 @@ + #ifndef JPEGLIB_H + #define JPEGLIB_H + +-/* Begin chromium edits */ +-#include "jpeglibmangler.h" +-/* End chromium edits */ +- + /* + * First we include the configuration files that record how this + * installation of the JPEG library is set up. jconfig.h can be diff --git a/chromium-60.0.3112.78-last-commit-position.patch b/chromium-60.0.3112.78-last-commit-position.patch new file mode 100644 index 00000000..7c26d9fa --- /dev/null +++ b/chromium-60.0.3112.78-last-commit-position.patch @@ -0,0 +1,28 @@ +diff -up chromium-60.0.3112.78/tools/gn/BUILD.gn.lastcommit chromium-60.0.3112.78/tools/gn/BUILD.gn +--- chromium-60.0.3112.78/tools/gn/BUILD.gn.lastcommit 2017-07-31 10:42:38.568041044 -0400 ++++ chromium-60.0.3112.78/tools/gn/BUILD.gn 2017-07-31 10:47:50.760974587 -0400 +@@ -268,7 +268,6 @@ executable("gn") { + + deps = [ + ":gn_lib", +- ":last_commit_position", + "//base", + "//build/config:exe_and_shlib_deps", + "//build/win:default_exe_manifest", +diff -up chromium-60.0.3112.78/tools/gn/gn_main.cc.lastcommit chromium-60.0.3112.78/tools/gn/gn_main.cc +--- chromium-60.0.3112.78/tools/gn/gn_main.cc.lastcommit 2017-07-25 15:05:19.000000000 -0400 ++++ chromium-60.0.3112.78/tools/gn/gn_main.cc 2017-07-31 10:42:38.568041044 -0400 +@@ -12,13 +12,7 @@ + #include "tools/gn/standard_out.h" + #include "tools/gn/switches.h" + +-// Only the GN-generated build makes this header for now. +-// TODO(brettw) consider adding this if we need it in GYP. +-#if defined(GN_BUILD) +-#include "tools/gn/last_commit_position.h" +-#else + #define LAST_COMMIT_POSITION "UNKNOWN" +-#endif + + namespace { + diff --git a/chromium-60.0.3112.78-no-libpng-prefix.patch b/chromium-60.0.3112.78-no-libpng-prefix.patch new file mode 100644 index 00000000..0dbdcf97 --- /dev/null +++ b/chromium-60.0.3112.78-no-libpng-prefix.patch @@ -0,0 +1,17 @@ +diff -up chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix chromium-60.0.3112.78/third_party/libpng/pnglibconf.h +--- chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix 2017-08-01 14:42:54.321986758 -0400 ++++ chromium-60.0.3112.78/third_party/libpng/pnglibconf.h 2017-08-01 14:43:01.493845832 -0400 +@@ -225,13 +225,4 @@ + #define PNG_USER_CHUNK_MALLOC_MAX 4000000L + /* end of chromium settings */ + +-/* chromium prefixing */ +-/* +- * This is necessary to build multiple copies of libpng. We need this while pdfium builds +- * its own copy of libpng. +- */ +-#define PNG_PREFIX +-#include "pngprefix.h" +-/* end of chromium prefixing */ +- + #endif /* PNGLCONF_H */ diff --git a/chromium-60.0.3112.78-no-zlib-mangle.patch b/chromium-60.0.3112.78-no-zlib-mangle.patch new file mode 100644 index 00000000..4b90360c --- /dev/null +++ b/chromium-60.0.3112.78-no-zlib-mangle.patch @@ -0,0 +1,13 @@ +diff -up chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle chromium-60.0.3112.78/third_party/zlib/zconf.h +--- chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle 2017-08-04 10:45:17.509152089 -0400 ++++ chromium-60.0.3112.78/third_party/zlib/zconf.h 2017-08-04 10:45:30.451902380 -0400 +@@ -8,9 +8,6 @@ + #ifndef ZCONF_H + #define ZCONF_H + +-/* This include does prefixing as below, but with an updated set of names */ +-#include "names.h" +- + /* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. diff --git a/chromium.spec b/chromium.spec index e5043e46..5ec59baf 100644 --- a/chromium.spec +++ b/chromium.spec @@ -8,6 +8,7 @@ # Leave this alone, please. %global target out/Release +%global headlesstarget out/Headless # Debuginfo packages aren't very useful here. If you need to debug # you should do a proper debug build (not implemented in this spec yet) @@ -25,7 +26,7 @@ # Requires is trickier. %global __provides_exclude_from %{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so -%global privlibs libEGL|libGLESv2|libaccessibility|libanimation|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libblink_core|libblink_modules|libblink_platform|libblink_web|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcc|libcc_animation|libcc_base|libcc_blink|libcc_debug|libcc_ipc|libcc_paint|libcc_surfaces|libchromium_sqlite3|libclearkeycdm|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcpp|libcrcrypto|libdbus|libdevice_base|libdevice_battery|libdevice_event_log|libdevice_gamepad|libdevice_vibration|libdevice_vr|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_compositor|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libffmpeg|libfingerprint|libgcm|libgeneric_sensor|libgeolocation|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_x11|libgin|libgin_features|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2_c_lib|libgles2_implementation|libgles2_utils|libgpu|libgtk2ui|libicui18n|libicuuc|libipc|libjs|libkeyboard|libkeyboard_with_content|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libmanager|libmedia|libmedia_blink|libmedia_gpu|libmedia_mojo_services|libmessage_center|libmidi|libmojo_common_lib|libmojo_ime_lib|libmojo_public_system|libmojo_public_system_cpp|libmojo_system_impl|libnative_theme|libnet|libnet_with_v8|libonc|libosmesa|libplatform|libplatform_wtf|libpolicy_component|libpolicy_proto|libpower_save_blocker|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_globals|libproxy_config|librange|libsandbox_services|libseccomp_bpf|libsensors|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libui_base|libui_base_ime|libui_base_x|libui_data_pack|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libweb_dialogs|libwebdata_common|libwebview|libwidevinecdm|libwidevinecdmadapter|libwm|libwtf|libx11_events_platform|libx11_window +%global privlibs libaccessibility|libanimation|libaura_extra|libaura|libbase_i18n|libbase|libbindings|libblink_android_mojo_bindings_shared|libblink_core|libblink_modules|libblink_mojo_bindings_shared|libblink_offscreen_canvas_mojo_bindings_shared|libblink_platform|libblink_web|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcc_animation|libcc_base|libcc_blink|libcc_debug|libcc_ipc|libcc_paint|libcc|libcc_surfaces|libcdm_manager|libchromium_sqlite3|libclearkeycdm|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent_common_mojo_bindings_shared|libcontent|libcpp|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_gamepad|libdevices|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevice_vr_mojo_bindings|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay_compositor|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libEGL|libembedder|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents|libevents_x|libffmpeg|libfingerprint|libframe_sinks|libgcm|libgeneric_sensor_public_interfaces_shared|libgeneric_sensor|libgeolocation|libgeometry_skia|libgeometry|libgesture_detection|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_ipc|libgfx|libgfx_x11|libgin_features|libgin|libgles2_c_lib|libgles2_implementation|libgles2_utils|libGLESv2|libgl_init|libgl_in_process_context|libgl_wrapper|libgpu|libgtk2ui|libheadless|libicui18n|libicuuc|libipc_mojom_shared|libipc_mojom|libipc|libjs|libkeyboard|libkeyboard_with_content|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libmanager|libmedia_blink|libmedia_gpu|libmedia_mojo_services|libmedia|libmessage_center|libmidi|libmirclient.9|libmojo_common_lib|libmojo_ime_lib|libmojo_public_system_cpp|libmojo_public_system|libmojo_system_impl|libnative_theme|libnet|libnet_with_v8|libonc|libosmesa|libplatform|libpolicy_component|libpolicy_proto|libpower_save_blocker|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libresource_coordinator_cpp|libresource_coordinator_public_interfaces_internal_shared|libsandbox_services|libseccomp_bpf|libsensors|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom_blink|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_constants|libservice_manager_mojom_shared|libservice_manager_mojom|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libui_base_ime|libui_base|libui_base_x|libui_data_pack|libui_touch_selection|libui_views_mus_lib|liburl_ipc|liburl_matcher|liburl|libuser_manager|libuser_prefs|libv8_libbase|libv8_libplatform|libv8|libviews|libVkLayer_core_validation|libVkLayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_swapchain|libVkLayer_threading|libVkLayer_unique_objects|libwebdata_common|libweb_dialogs|libwebview|libwidevinecdmadapter|libwidevinecdm|libwm|libwtf|libx11_events_platform|libx11_window %global __requires_exclude ^(%{privlibs})\\.so # Try to not use the Xvfb as it is slow.. @@ -40,14 +41,8 @@ # https://www.chromium.org/developers/testing/addresssanitizer %global asan 0 -# Only flip this on if stuff is really broken re: nacl. -# chromium-native_client doesn't build on Fedora 23 because -# clang is too old and buggy. -%if 0%{?fedora} <= 23 +# nacl/pnacl are soon to be dead. We're just killing them off early. %global killnacl 1 -%else -%global killnacl 0 -%endif %if 0%{?killnacl} %global nacl 0 @@ -111,11 +106,15 @@ BuildRequires: libicu-devel >= 5.4 %global default_client_secret miEreAep8nuvTdvLums6qyLK %global chromoting_client_id 449907151817-8vnlfih032ni8c4jjps9int9t86k546t.apps.googleusercontent.com -%global majorversion 59 +%global majorversion 60 +%if %{freeworld} +Name: chromium%{chromium_channel}%{?freeworld:-freeworld} +%else Name: chromium%{chromium_channel} -Version: %{majorversion}.0.3071.115 -Release: 3%{?dist} +%endif +Version: %{majorversion}.0.3112.90 +Release: 1%{?dist} Summary: A WebKit (Blink) powered web browser Url: http://www.chromium.org/Home License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) @@ -149,10 +148,10 @@ Patch18: chromium-52.0.2743.82-master-prefs-path.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1361157 Patch19: chromium-52.0.2743.116-unset-madv_free.patch # Use gn system files -Patch20: chromium-54.0.2840.59-gn-system.patch +Patch20: chromium-60.0.3112.78-gn-system.patch # Fix last commit position issue # https://groups.google.com/a/chromium.org/forum/#!topic/gn-dev/7nlJv486bD4 -Patch21: chromium-53.0.2785.92-last-commit-position.patch +Patch21: chromium-60.0.3112.78-last-commit-position.patch # Fix issue where timespec is not defined when sys/stat.h is included. Patch22: chromium-53.0.2785.92-boringssl-time-fix.patch # I wouldn't have to do this if there was a standard way to append extra compiler flags @@ -168,24 +167,35 @@ Patch27: chromium-59.0.3071.86-setopaque.patch Patch31: chromium-56.0.2924.87-fpermissive.patch # Fix issue with compilation on gcc7 # Thanks to Ben Noordhuis -Patch33: chromium-59.0.3071.86-gcc7.patch +Patch33: chromium-60.0.3112.78-gcc7.patch # Enable mp3 support -Patch34: chromium-59.0.3071.86-enable-mp3.patch +Patch34: chromium-60.0.3112.78-enable-mp3.patch # Revert https://chromium.googlesource.com/chromium/src/+/b794998819088f76b4cf44c8db6940240c563cf4%5E%21/#F0 # https://bugs.chromium.org/p/chromium/issues/detail?id=712737 # https://bugzilla.redhat.com/show_bug.cgi?id=1446851 Patch36: chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch # Correctly compile the stdatomic.h in ffmpeg with gcc 4.8 Patch37: chromium-59.0.3071.86-ffmpeg-stdatomic.patch -# RHEL is too old to have this header in kernel-headers -# and some Fedora versions do not contain what Chromium expects to find -# so just use the hardcoded values instead -Patch38: chromium-59.0.3071.86-dma-buf-header-hack.patch # Nacl can't die soon enough Patch39: chromium-59.0.3071.86-system-clang.patch # Change struct ucontext to ucontext_t in breakpad # https://patchwork.openembedded.org/patch/141358/ Patch40: chromium-59.0.3071.115-ucontext-fix.patch +# Fix gn bootstrap. Not convinced anyone at Google ever tries to build Chromium from source. +Patch41: chromium-60.0.3112.78-fix-gn-bootstrap.patch +# Do not prefix libpng functions +Patch42: chromium-60.0.3112.78-no-libpng-prefix.patch +# Do not mangle libjpeg +Patch43: chromium-60.0.3112.78-jpeg-nomangle.patch +# Fix gtk2 build by applying these changes +# https://chromium.googlesource.com/chromium/src.git/+/804fd4ab5e41584d61c400ac19ce21e0468b53d4 +# https://chromium.googlesource.com/chromium/src.git/+/4313334bead373b139eee72f47d43fbe6162a8f4 +# https://chromium.googlesource.com/chromium/src.git/+/ca407201886875966db91d55c403fe0be3f0f4ca +# This probably will not be needed with 61+ +Patch44: chromium-60.0.3112.78-gtk2fix.patch +# Do not mangle zlib +Patch45: chromium-60.0.3112.78-no-zlib-mangle.patch + ### Chromium Tests Patches ### Patch100: chromium-46.0.2490.86-use_system_opus.patch @@ -220,9 +230,6 @@ Source9: chromium-browser.xml Source10: https://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip Source11: chrome-remote-desktop@.service Source13: master_preferences -# Upstream did not include third_party/freetype source code in the tarball for 59.0.3071.115 -# So we copy it from the previous build. :/ -Source14: chromium-59.0.3071.109-freetype.tar.bz2 # We can assume gcc and binutils. BuildRequires: gcc-c++ @@ -241,7 +248,7 @@ BuildRequires: glib2-devel BuildRequires: gnome-keyring-devel BuildRequires: gtk2-devel # Yes. This too. -BuildRequires: gtk3-devel +# BuildRequires: gtk3-devel BuildRequires: glibc-devel BuildRequires: gperf BuildRequires: libatomic @@ -253,7 +260,6 @@ BuildRequires: libusb-devel BuildRequires: libXdamage-devel BuildRequires: libXScrnSaver-devel BuildRequires: libXtst-devel -BuildRequires: mesa-libGL-devel BuildRequires: nodejs BuildRequires: nss-devel BuildRequires: pciutils-devel @@ -296,6 +302,7 @@ BuildRequires: bzip2-devel BuildRequires: dbus-glib-devel BuildRequires: elfutils-libelf-devel BuildRequires: flac-devel +BuildRequires: freetype-devel BuildRequires: hwdata BuildRequires: kernel-headers BuildRequires: libevent-devel @@ -308,7 +315,7 @@ BuildRequires: libffi-devel BuildRequires: libicu-devel = 54.1 %endif BuildRequires: libjpeg-devel -# BuildRequires: libpng-devel +BuildRequires: libpng-devel %if 0 # see https://code.google.com/p/chromium/issues/detail?id=501318 BuildRequires: libsrtp-devel >= 1.4.4 @@ -323,7 +330,7 @@ BuildRequires: libusbx-devel >= 1.0.21-0.1.git448584a # We don't use libvpx anymore because Chromium loves to # use bleeding edge revisions here that break other things # ... so we just use the bundled libvpx. -# Same is true for libwebp. +BuildRequires: libwebp-devel BuildRequires: libxslt-devel # Same here, it seems. # BuildRequires: libyuv-devel @@ -351,6 +358,7 @@ BuildRequires: re2-devel >= 20160401 %endif BuildRequires: speech-dispatcher-devel BuildRequires: yasm +BuildRequires: zlib-devel BuildRequires: pkgconfig(gnome-keyring-1) # remote desktop needs this BuildRequires: pam-devel @@ -426,15 +434,15 @@ Provides: bundled(libaddressinput) = 0 Provides: bundled(libdrm) = 2.4.70 Provides: bundled(libevent) = 1.4.15 Provides: bundled(libjingle) = 9564 -Provides: bundled(libjpeg-turbo) = 1.4.90 +# Provides: bundled(libjpeg-turbo) = 1.4.90 Provides: bundled(libphonenumber) = a4da30df63a097d67e3c429ead6790ad91d36cf4 -Provides: bundled(libpng) = 1.6.22 +# Provides: bundled(libpng) = 1.6.22 Provides: bundled(libsrtp) = 2cbd85085037dc7bf2eda48d4cf62e2829056e2d %if %{bundlelibusbx} Provides: bundled(libusbx) = 1.0.17 %endif Provides: bundled(libvpx) = 1.6.0 -Provides: bundled(libwebp) = 0.6.0 +# Provides: bundled(libwebp) = 0.6.0 %if %{bundlelibxml} # Well, it's actually newer than 2.9.4 and has code in it that has been reverted upstream... but eh. Provides: bundled(libxml) = 2.9.4 @@ -470,8 +478,7 @@ Provides: bundled(webrtc) = 90usrsctp Provides: bundled(woff2) = 445f541996fe8376f3976d35692fd2b9a6eedf2d Provides: bundled(xdg-mime) Provides: bundled(xdg-user-dirs) -Provides: bundled(x86inc) = 0 -Provides: bundled(zlib) = 1.2.11 +# Provides: bundled(zlib) = 1.2.11 # For selinux scriptlet Requires(post): /usr/sbin/semanage @@ -480,9 +487,16 @@ Requires(post): /usr/sbin/restorecon %description Chromium is an open-source web browser, powered by WebKit (Blink). +%package common +Summary: Files needed for both the headless_shell and full Chromium + +%description common +%{summary}. + %if 0%{?shared} %package libs Summary: Shared libraries used by chromium (and chrome-remote-desktop) +Requires: chromium-common%{_isa} = %{version}-%{release} Requires: chromium-libs-media%{_isa} >= %{majorversion} Requires(post): %{_sbindir}/update-alternatives Requires(preun): %{_sbindir}/update-alternatives @@ -491,14 +505,14 @@ Requires(preun): %{_sbindir}/update-alternatives Shared libraries used by chromium (and chrome-remote-desktop). %if %{freeworld} -%package libs-media-freeworld +%package -n chromium-libs-media-freeworld Summary: Chromium media libraries built with all possible codecs Provides: chromium-libs-media = %{version}-%{release} Provides: chromium-libs-media%{_isa} = %{version}-%{release} Requires(post): %{_sbindir}/update-alternatives Requires(preun): %{_sbindir}/update-alternatives -%description libs-media-freeworld +%description -n chromium-libs-media-freeworld Chromium media libraries built with all possible codecs. Chromium is an open-source web browser, powered by WebKit (Blink). This package replaces the default chromium-libs-media package, which is limited in what it @@ -521,6 +535,7 @@ Requires(post): systemd Requires(preun): systemd Requires(postun): systemd Requires: xorg-x11-server-Xvfb +Requires: python2-psutil %if 0%{?shared} Requires: chromium-libs%{_isa} = %{version}-%{release} %endif @@ -546,13 +561,22 @@ JavaScript execution, and more. ChromeDriver is a standalone server which implements WebDriver's wire protocol for Chromium. It is being developed by members of the Chromium and WebDriver teams. +%package headless +Summary: A minimal headless shell built from Chromium +Requires: chromium-common%{_isa} = %{version}-%{release} + +%description headless +A minimal headless client built from Chromium. headless_shell is built +without support for alsa, cups, dbus, gconf, gio, kerberos, pulseaudio, or +udev. + %prep %setup -q -T -c -n %{name}-policies -a 10 %setup -q -T -c -n depot_tools -a 2 %if 0%{tests} -%setup -q -n chromium-%{version} -b 1 -a 14 +%setup -q -n chromium-%{version} -b 1 %else -%setup -q -n chromium-%{version} -a 14 +%setup -q -n chromium-%{version} %endif ### Chromium Fedora Patches ### @@ -577,12 +601,20 @@ members of the Chromium and WebDriver teams. %patch27 -p1 -b .setopaque %patch31 -p1 -b .permissive %patch33 -p1 -b .gcc7 +%if %{freeworld} +# Do not apply mp3 change +%else %patch34 -p1 -b .mp3 +%endif %patch36 -p1 -b .revert %patch37 -p1 -b .ffmpeg-stdatomic -%patch38 -p1 -b .headerhack %patch39 -p1 -b .system-clang %patch40 -p1 -b .ucontextfix +%patch41 -p1 -b .fixgnbootstrap +%patch42 -p1 -b .noprefix +%patch43 -p1 -b .nomangle +%patch44 -p1 -b .gtk2fix +%patch45 -p1 -b .nozmangle ### Chromium Tests Patches ### %patch100 -p1 -b .use_system_opus @@ -693,20 +725,26 @@ ln -s /usr/bin/clang clang popd %endif -CHROMIUM_BROWSER_GN_DEFINES="" -CHROMIUM_BROWSER_GN_DEFINES+=' is_debug=false' +# Core defines are flags that are true for both the browser and headless. +CHROMIUM_CORE_GN_DEFINES="" +CHROMIUM_CORE_GN_DEFINES+=' is_debug=false' %ifarch x86_64 -CHROMIUM_BROWSER_GN_DEFINES+=' system_libdir="lib64"' -%endif -CHROMIUM_BROWSER_GN_DEFINES+=' google_api_key="%{api_key}" google_default_client_id="%{default_client_id}" google_default_client_secret="%{default_client_secret}"' -CHROMIUM_BROWSER_GN_DEFINES+=' is_clang=false use_sysroot=false use_gio=true use_pulseaudio=true icu_use_data_file=true' -%if 0%{?nonacl} -CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false' +CHROMIUM_CORE_GN_DEFINES+=' system_libdir="lib64"' %endif +CHROMIUM_CORE_GN_DEFINES+=' google_api_key="%{api_key}" google_default_client_id="%{default_client_id}" google_default_client_secret="%{default_client_secret}"' +CHROMIUM_CORE_GN_DEFINES+=' is_clang=false use_sysroot=false use_gold=false fieldtrial_testing_like_official_build=true' %if %{freeworld} -CHROMIUM_BROWSER_GN_DEFINES+=' ffmpeg_branding="ChromeOS" proprietary_codecs=true' +CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="ChromeOS" proprietary_codecs=true' %else -CHROMIUM_BROWSER_GN_DEFINES+=' ffmpeg_branding="Chromium" proprietary_codecs=false' +CHROMIUM_CORE_GN_DEFINES+=' ffmpeg_branding="Chromium" proprietary_codecs=false' +%endif +CHROMIUM_CORE_GN_DEFINES+=' treat_warnings_as_errors=false' +export CHROMIUM_CORE_GN_DEFINES + +CHROMIUM_BROWSER_GN_DEFINES="" +CHROMIUM_BROWSER_GN_DEFINES+=' use_gio=true use_pulseaudio=true icu_use_data_file=true' +%if 0%{?nonacl} +CHROMIUM_BROWSER_GN_DEFINES+=' enable_nacl=false' %endif %if 0%{?shared} CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=true is_component_build=true' @@ -716,16 +754,21 @@ CHROMIUM_BROWSER_GN_DEFINES+=' is_component_ffmpeg=false is_component_build=fals CHROMIUM_BROWSER_GN_DEFINES+=' remove_webcore_debug_symbols=true enable_hangout_services_extension=true' CHROMIUM_BROWSER_GN_DEFINES+=' enable_hotwording=false use_aura=true' CHROMIUM_BROWSER_GN_DEFINES+=' enable_webrtc=true enable_widevine=true' -CHROMIUM_BROWSER_GN_DEFINES+=' use_gold=false fieldtrial_testing_like_official_build=true' %if 0%{gtk3} CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=true' %else CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=false' %endif -# CHROMIUM_BROWSER_GN_DEFINES+=' use_system_libjpeg=true' -CHROMIUM_BROWSER_GN_DEFINES+=' treat_warnings_as_errors=false' export CHROMIUM_BROWSER_GN_DEFINES +CHROMIUM_HEADLESS_GN_DEFINES="" +CHROMIUM_HEADLESS_GN_DEFINES+=' use_ozone=true ozone_auto_platforms=false ozone_platform="headless" ozone_platform_headless=true' +CHROMIUM_HEADLESS_GN_DEFINES+=' headless_use_embedded_resources=true icu_use_data_file=false v8_use_external_startup_data=false' +CHROMIUM_HEADLESS_GN_DEFINES+=' enable_nacl=false enable_print_preview=false enable_remoting=false use_alsa=false use_ash=false' +CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false use_gconf=false use_gio=false use_kerberos=false use_libpci=false' +CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false' +export CHROMIUM_HEADLESS_GN_DEFINES + mkdir -p third_party/node/linux/node-linux-x64/bin ln -s %{_bindir}/node third_party/node/linux/node-linux-x64/bin/node @@ -739,6 +782,8 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'third_party/ffmpeg' \ 'third_party/adobe' \ 'third_party/flac' \ + 'third_party/googletest' \ + 'third_party/glslang-angle' \ 'third_party/harfbuzz-ng' \ 'third_party/icu' \ 'base/third_party/libevent' \ @@ -761,7 +806,6 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'third_party/swiftshader/third_party/subzero' \ 'third_party/swiftshader/third_party/LLVM' \ 'third_party/swiftshader/third_party/llvm-subzero' \ - 'third_party/swiftshader/third_party/pnacl-subzero' \ 'third_party/usb_ids' \ 'third_party/xdg-utils' \ 'third_party/yasm' \ @@ -800,6 +844,7 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'third_party/catapult/tracing/third_party/gl-matrix' \ 'third_party/catapult/tracing/third_party/jszip' \ 'third_party/catapult/tracing/third_party/mannwhitneyu' \ + 'third_party/catapult/tracing/third_party/oboe' \ 'third_party/catapult/third_party/polymer' \ 'third_party/catapult/third_party/py_vulcanize' \ 'third_party/catapult/third_party/py_vulcanize/third_party/rcssmin' \ @@ -870,16 +915,19 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'third_party/sfntly' \ 'third_party/sinonjs' \ 'third_party/skia' \ + 'third_party/skia/third_party/vulkan' \ 'third_party/smhasher' \ + 'third_party/spirv-headers' \ + 'third_party/spirv-tools-angle' \ 'third_party/sqlite' \ 'third_party/tcmalloc' \ 'third_party/usrsctp' \ + 'third_party/vulkan-validation-layers' \ 'third_party/web-animations-js' \ 'third_party/webdriver' \ 'third_party/webrtc' \ 'third_party/widevine' \ 'third_party/woff2' \ - 'third_party/x86inc' \ 'third_party/zlib/google' \ 'url/third_party/mozilla' \ 'v8/third_party/inspector_protocol' \ @@ -898,6 +946,7 @@ export PATH=$PATH:%{_builddir}/depot_tools build/linux/unbundle/replace_gn_files.py --system-libraries \ flac \ + freetype \ %if 0%{?bundleharfbuzz} %else harfbuzz-ng \ @@ -906,13 +955,14 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \ %else icu \ %endif -%if 0 - libevent \ -%endif + libdrm \ + libjpeg \ + libpng \ %if %{bundlelibusbx} %else libusb \ %endif + libwebp \ %if %{bundlelibxml} %else libxml \ @@ -926,16 +976,25 @@ build/linux/unbundle/replace_gn_files.py --system-libraries \ %else re2 \ %endif - yasm + yasm \ + zlib -tools/gn/bootstrap/bootstrap.py -v --gn-gen-args "$CHROMIUM_BROWSER_GN_DEFINES" -%{target}/gn gen --args="$CHROMIUM_BROWSER_GN_DEFINES" %{target} +tools/gn/bootstrap/bootstrap.py -v --gn-gen-args "$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" +%{target}/gn gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{target} + +%if %{freeworld} +# do not need to do headless gen +%else +%{target}/gn gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES" %{headlesstarget} +%endif %if %{bundlelibusbx} # no hackity hack hack %else # hackity hack hack rm -rf third_party/libusb/src/libusb/libusb.h +# we _shouldn't need to do this, but it looks like we do. +cp -a %{_includedir}/libusb-1.0/libusb.h third_party/libusb/src/libusb/libusb.h %endif # make up a version for widevine @@ -1019,12 +1078,13 @@ export CHROMIUM_BROWSER_UNIT_TESTS="\ export CHROMIUM_BROWSER_UNIT_TESTS= %endif - -%global target out/Release - +# Now do the full browser %if 0%{freeworld} ../depot_tools/ninja -C %{target} -vvv media $CHROMIUM_BROWSER_UNIT_TESTS %else +# Do headless first. +../depot_tools/ninja -C %{headlesstarget} -vvv headless_shell + ../depot_tools/ninja -C %{target} -vvv chrome chrome_sandbox chromedriver widevinecdmadapter clearkeycdm policy_templates $CHROMIUM_BROWSER_UNIT_TESTS # remote client @@ -1055,6 +1115,10 @@ mkdir -p %{buildroot}%{chromium_path} pushd %{target} cp -a libffmpeg.so* %{buildroot}%{chromium_path} cp -a libmedia.so* %{buildroot}%{chromium_path} +mv %{buildroot}%{chromium_path}/libffmpeg.so{,.%{lsuffix}} +mv %{buildroot}%{chromium_path}/libffmpeg.so.TOC{,.%{lsuffix}} +mv %{buildroot}%{chromium_path}/libmedia.so{,.%{lsuffix}} +mv %{buildroot}%{chromium_path}/libmedia.so.TOC{,.%{lsuffix}} popd %else mkdir -p %{buildroot}%{_bindir} @@ -1154,6 +1218,10 @@ cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path} %endif popd +pushd %{headlesstarget} +cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path} +popd + cp -a remoting/host/linux/linux_me2me_host.py %{buildroot}%{crd_path}/chrome-remote-desktop cp -a remoting/host/installer/linux/is-remoting-session %{buildroot}%{crd_path}/ @@ -1547,10 +1615,10 @@ if [ $1 = 0 ]; then fi %if %{freeworld} -%posttrans libs-media-freeworld +%posttrans -n chromium-libs-media-freeworld %{_sbindir}/update-alternatives --install \ %{_libdir}/chromium-browser/libffmpeg.so libffmpeg.so \ - %{_libdir}/chromium-browser/libffmpeg.so.freeworld 5 \ + %{_libdir}/chromium-browser/libffmpeg.so.freeworld 20 \ --slave %{_libdir}/chromium-browser/libffmpeg.so.TOC libffmpeg.so.TOC \ %{_libdir}/chromium-browser/libffmpeg.so.TOC.freeworld \ --slave %{_libdir}/chromium-browser/libmedia.so libmedia.so \ @@ -1558,7 +1626,7 @@ fi --slave %{_libdir}/chromium-browser/libmedia.so.TOC libmedia.so.TOC \ %{_libdir}/chromium-browser/libmedia.so.TOC.freeworld -%preun libs-media-freeworld +%preun -n chromium-libs-media-freeworld if [ $1 = 0 ]; then %{_sbindir}/alternatives --remove libffmpeg.so \ %{_libdir}/chromium-browser/libffmpeg.so.freeworld @@ -1600,6 +1668,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %files %doc AUTHORS +%doc chrome_policy_list.html *.json %license LICENSE %config %{_sysconfdir}/%{name}/ %dir %{_sysconfdir}/%{name}/native-messaging-hosts @@ -1608,7 +1677,10 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %{_bindir}/%{chromium_browser_channel} %dir %{chromium_path} %{chromium_path}/*.bin -%{chromium_path}/*.pak +%{chromium_path}/chrome_*.pak +%{chromium_path}/keyboard_resources.pak +%{chromium_path}/resources.pak +%{chromium_path}/views_mus_resources.pak %{chromium_path}/icudtl.dat %{chromium_path}/%{chromium_browser_channel} %{chromium_path}/%{chromium_browser_channel}.sh @@ -1623,8 +1695,19 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt # %%{chromium_path}/remoting_locales/ # %%{chromium_path}/pseudo_locales/ # %%{chromium_path}/plugins/ -%{chromium_path}/pyproto/ %attr(4755, root, root) %{chromium_path}/chrome-sandbox +%{_mandir}/man1/%{chromium_browser_channel}.* +%{_datadir}/icons/hicolor/*/apps/%{chromium_browser_channel}.png +%{_datadir}/applications/*.desktop +%{_datadir}/appdata/*.appdata.xml +%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml + +%files common +%{chromium_path}/headless_lib.pak +%{chromium_path}/libosmesa.so +%{chromium_path}/mus_app_resources_*.pak +%{chromium_path}/pyproto/ +%{chromium_path}/resources/ %dir %{chromium_path}/locales/ %lang(am) %{chromium_path}/locales/am.pak %lang(ar) %{chromium_path}/locales/ar.pak @@ -1679,18 +1762,13 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %lang(vi) %{chromium_path}/locales/vi.pak %lang(zh_CN) %{chromium_path}/locales/zh-CN.pak %lang(zh_TW) %{chromium_path}/locales/zh-TW.pak -# %%{chromium_path}/locales/fake-bidi.pak -%{chromium_path}/resources/ -%{_mandir}/man1/%{chromium_browser_channel}.* -%{_datadir}/icons/hicolor/*/apps/%{chromium_browser_channel}.png -%{_datadir}/applications/*.desktop -%{_datadir}/appdata/*.appdata.xml -%{_datadir}/gnome-control-center/default-apps/chromium-browser.xml -%doc chrome_policy_list.html *.json +%files headless +%{chromium_path}/headless_shell %if 0%{?shared} %files libs +%exclude %{chromium_path}/libosmesa.so %exclude %{chromium_path}/libffmpeg.so* %exclude %{chromium_path}/libmedia.so* %exclude %{chromium_path}/libwidevinecdm.so @@ -1729,7 +1807,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %if 0%{?shared} %if %{freeworld} -%files libs-media-freeworld +%files -n chromium-libs-media-freeworld %else %files libs-media %endif @@ -1741,6 +1819,16 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %changelog +* Fri Aug 4 2017 Tom Callaway 60.0.3112.90-1 +- update to 60.0.3112.90 + +* Mon Jul 31 2017 Tom Callaway 60.0.3112.78-1 +- update to 60.0.3112.78 + +* Fri Jul 21 2017 Tom Callaway 59.0.3071.115-4 +- put common files in -common subpackage +- build headless_shell for -headless subpackage + * Fri Jul 21 2017 Tom Callaway 59.0.3071.115-3 - use posttrans to ensure that old libs are gone before trying to make alternative symlinks diff --git a/sources b/sources index db65c06a..24b41dfa 100644 --- a/sources +++ b/sources @@ -1,4 +1,3 @@ SHA512 (depot_tools.git-master.tar.gz) = d3d6a1873b2b0296a8cd99e0d8d2e629a17b1808934b4972556168f8b4ccea60577ebaeab4445baf15afb1b04080808db59a832a5b61d247bd48da14fa6acf03 -SHA512 (policy_templates.zip) = a997bd5d410cf8f0f104fb5b69b60699c9e60eb3f99b42e0aff167843f3a45923a9a99c881cac9cd4472a60ca9c7d1ba897e15d485fbfd66c996419e7fadd3f8 -SHA512 (chromium-59.0.3071.115-clean.tar.xz) = 001e6d9b4cae244767de7e85575d4071421d588422ca434461939e9652549bcd43c56fe0c510ab0d7d0a050e97d98f4086b8bf102dbadd7f83dc8827b9ea7ed1 -SHA512 (chromium-59.0.3071.109-freetype.tar.bz2) = 62a698c0229c0eb5ed4d31efd211db70f1183f4f86558bd68a6110214b2f0a61eecdde27efcab359ecee684b3df819b37a75505c1b9ea6bec407d289d6e78a66 +SHA512 (chromium-60.0.3112.90-clean.tar.xz) = 3b1579037b3debc0f714e5de3e02bd5fc1c8aa7482479ffc20b824653b11191ed558cef147633b30da16ffd8c26d5eacb95b93610041a44a6ea84606702f7ac1 +SHA512 (policy_templates.zip) = 4d2a7162adb3ca224f3e1bf1d2936ae395603e8ffa3fda7753e666a16c42c7ba54c7acfcfdc742e22978ace37e471ed099d222063708d4d8a299da3daf135f15