aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTing-Wei Lan <lantw44@gmail.com>2019-09-12 22:24:41 +0800
committerTing-Wei Lan <lantw44@gmail.com>2019-09-12 22:24:41 +0800
commit3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26 (patch)
tree9dedc9f7476a48f45b293a95ecbb1b4e328b0aaf
parent34d68138c7d454ce622b9f11e765e52d9d2ae677 (diff)
downloadcopr-rpm-spec-3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26.tar
copr-rpm-spec-3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26.tar.gz
copr-rpm-spec-3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26.tar.bz2
copr-rpm-spec-3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26.tar.lz
copr-rpm-spec-3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26.tar.xz
copr-rpm-spec-3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26.tar.zst
copr-rpm-spec-3a370bdc761e3f5ff2cd93e4c3cdc08d642d8d26.zip
chromium: Fix PulseAudio and Harfbuzz build error
-rw-r--r--chromium/chromium/chromium-gcc9-r681760.patch58
-rw-r--r--chromium/chromium/chromium-pulseaudio-12.99.patch47
-rw-r--r--chromium/chromium/chromium.spec17
3 files changed, 120 insertions, 2 deletions
diff --git a/chromium/chromium/chromium-gcc9-r681760.patch b/chromium/chromium/chromium-gcc9-r681760.patch
new file mode 100644
index 0000000..4a11e1e
--- /dev/null
+++ b/chromium/chromium/chromium-gcc9-r681760.patch
@@ -0,0 +1,58 @@
+From 27e25336b8316ff3ec4e464058682ed85801fd06 Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Date: Mon, 29 Jul 2019 10:54:28 +0000
+Subject: [PATCH] Also link against libharfbuzz-subset when use_system_harfbuzz
+ is true
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When building HarfBuzz as part of Chromium, there is a single source set
+with all the files we need in the build.
+
+Upstream HarfBuzz, on the other hand, produces a few different libraries:
+harfbuzz, harfbuzz-icu and harfbuzz-subset. When |use_system_harfbuzz| is
+true, we were only looking for (and using) harfbuzz.pc with pkg-config even
+though we also use symbols from libharfbuzz-subset.so. This resulted in
+errors when linking:
+
+ ld: obj/skia/skia/SkPDFSubsetFont.o: in function `SkPDFSubsetFont(sk_sp<SkData>, SkPDFGlyphUse const&, SkPDF::Metadata::Subsetter, char const*, int)':
+ SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x48a): undefined reference to `hb_subset_input_create_or_fail'
+ ld: SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x4af): undefined reference to `hb_subset_input_glyph_set'
+ ld: SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5d7): undefined reference to `hb_subset_input_set_retain_gids'
+ ld: SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5e4): undefined reference to `hb_subset_input_set_drop_hints'
+ ld: SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x5f3): undefined reference to `hb_subset'
+ ld: SkPDFSubsetFont.cpp:(.text._Z15SkPDFSubsetFont5sk_spI6SkDataERK13SkPDFGlyphUseN5SkPDF8Metadata9SubsetterEPKci+0x66f): undefined reference to `hb_subset_input_destroy'
+
+as reported in
+https://groups.google.com/a/chromium.org/d/msg/chromium-packagers/UyJsVJ5QqWo/jSv5z7-rEQAJ
+
+Change-Id: I997af075c7b7263cd7cc71a63db5b0f93bd1ab59
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1715288
+Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Commit-Queue: Dominik Röttsches <drott@chromium.org>
+Reviewed-by: Dominik Röttsches <drott@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#681760}
+---
+ third_party/harfbuzz-ng/BUILD.gn | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
+index 37d8e334c262..72013eb1db79 100644
+--- a/third_party/harfbuzz-ng/BUILD.gn
++++ b/third_party/harfbuzz-ng/BUILD.gn
+@@ -16,7 +16,10 @@ if (use_system_harfbuzz) {
+ "//third_party:freetype_harfbuzz",
+ "//third_party/freetype:freetype_source",
+ ]
+- packages = [ "harfbuzz" ]
++ packages = [
++ "harfbuzz",
++ "harfbuzz-subset",
++ ]
+ }
+ } else {
+ config("harfbuzz_config") {
+--
+2.21.0
+
diff --git a/chromium/chromium/chromium-pulseaudio-12.99.patch b/chromium/chromium/chromium-pulseaudio-12.99.patch
new file mode 100644
index 0000000..d4e2b46
--- /dev/null
+++ b/chromium/chromium/chromium-pulseaudio-12.99.patch
@@ -0,0 +1,47 @@
+diff -up chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change chromium-76.0.3809.100/media/audio/pulse/pulse.sigs
+--- chromium-76.0.3809.100/media/audio/pulse/pulse.sigs.pulse-api-change 2019-08-14 23:18:59.624627870 +0200
++++ chromium-76.0.3809.100/media/audio/pulse/pulse.sigs 2019-08-14 23:19:41.258104998 +0200
+@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info
+ pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata);
+ pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata);
+ pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata);
+-pa_context_state_t pa_context_get_state(pa_context* c);
++pa_context_state_t pa_context_get_state(const pa_context* c);
+ pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name);
+ pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata);
+ void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata);
+-pa_operation_state_t pa_operation_get_state(pa_operation* o);
++pa_operation_state_t pa_operation_get_state(const pa_operation* o);
+ void pa_context_unref(pa_context* c);
+ void pa_operation_unref(pa_operation* o);
+ int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes);
+@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream*
+ int pa_stream_disconnect(pa_stream* s);
+ int pa_stream_drop(pa_stream *p);
+ pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata);
+-uint32_t pa_stream_get_device_index(pa_stream* s);
++uint32_t pa_stream_get_device_index(const pa_stream* s);
+ int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative);
+-pa_stream_state_t pa_stream_get_state(pa_stream* p);
++pa_stream_state_t pa_stream_get_state(const pa_stream* p);
+ pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map);
+ pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p);
+ pa_proplist* pa_proplist_new(void);
+-int pa_proplist_contains(pa_proplist* p, const char* key);
++int pa_proplist_contains(const pa_proplist* p, const char* key);
+ void pa_proplist_free(pa_proplist* p);
+-const char* pa_proplist_gets(pa_proplist* p, const char* key);
++const char* pa_proplist_gets(const pa_proplist* p, const char* key);
+ int pa_proplist_sets(pa_proplist* p, const char* key, const char* value);
+-size_t pa_stream_readable_size(pa_stream *p);
++size_t pa_stream_readable_size(const pa_stream *p);
+ int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes);
+ void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata);
+ void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata);
+ int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek);
+ void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
+ void pa_stream_unref(pa_stream* s);
+-int pa_context_errno(pa_context *c);
++int pa_context_errno(const pa_context *c);
+ const char* pa_strerror(int error);
+ pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v);
diff --git a/chromium/chromium/chromium.spec b/chromium/chromium/chromium.spec
index c6f9635..cbee7a4 100644
--- a/chromium/chromium/chromium.spec
+++ b/chromium/chromium/chromium.spec
@@ -48,7 +48,7 @@
Name: chromium
Version: 77.0.3865.75
-Release: 100%{?dist}
+Release: 101%{?dist}
Summary: A WebKit (Blink) powered web browser
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)
@@ -101,6 +101,9 @@ Patch20: chromium-python2.patch
# Pull patches from Fedora
# https://src.fedoraproject.org/rpms/chromium/c/9071ee2d2f996b84
Patch30: chromium-webrtc-cstring.patch
+# https://src.fedoraproject.org/rpms/chromium/c/8b12346860ef3360
+# https://src.fedoraproject.org/rpms/chromium/c/4376be3d5fd00f26
+Patch31: chromium-pulseaudio-12.99.patch
# Pull patches from Gentoo
# https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5b7b57438d399738
@@ -110,7 +113,8 @@ Patch41: chromium-base-location.patch
# Pull upstream patches
Patch50: chromium-gcc9-r681321.patch
Patch51: chromium-gcc9-r681333.patch
-Patch52: chromium-gcc9-r684731.patch
+Patch52: chromium-gcc9-r681760.patch
+Patch53: chromium-gcc9-r684731.patch
# I don't have time to test whether it work on other architectures
ExclusiveArch: x86_64
@@ -210,6 +214,11 @@ Conflicts: chromedriver-unstable
%prep
%autosetup -p1
+# This patch can only be applied on systems using PulseAudio 12.99, so we have
+# to revert it on older Fedora releases.
+%if 0%{?fedora} <= 30
+%patch31 -p1 -R
+%endif
# Don't use unversioned python commands in shebangs. This command is based on
# https://src.fedoraproject.org/rpms/chromium/c/cdad6219176a7615
@@ -664,6 +673,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%changelog
+* Thu Sep 12 2019 - Ting-Wei Lan <lantw44@gmail.com> - 77.0.3865.75-101
+- Patch pulse_stubs for Fedora 31 and later
+- Fix harfbuzz linking issue on Fedora 31 and later
+
* Wed Sep 11 2019 - Ting-Wei Lan <lantw44@gmail.com> - 77.0.3865.75-100
- Update to 77.0.3865.75
- Fix python package names for Fedora 31