Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Sep 2021 21:32:11 GMT
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 17218fbbe799 - main - www/chromium: unbreak after dbc5f433f858
Message-ID:  <202109182132.18ILWBth070040@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=17218fbbe7992e766373e403fc91b8a6eaa8468f

commit 17218fbbe7992e766373e403fc91b8a6eaa8468f
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2021-09-18 17:23:51 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2021-09-18 21:31:34 +0000

    www/chromium: unbreak after dbc5f433f858
    
    ../../third_party/skia/src/pdf/SkPDFSubsetFont.cpp:74:5: error: use of undeclared identifier 'hb_subset_input_set_retain_gids'; did you mean 'hb_subset_input_set_flags'?
        hb_subset_input_set_retain_gids(input.get(), true);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        hb_subset_input_set_flags
    /usr/local/include/harfbuzz/hb-subset.h:142:1: note: 'hb_subset_input_set_flags' declared here
    hb_subset_input_set_flags (hb_subset_input_t *input,
    ^
    ../../third_party/skia/src/pdf/SkPDFSubsetFont.cpp:77:5: error: use of undeclared identifier 'hb_subset_input_set_drop_hints'
        hb_subset_input_set_drop_hints(input.get(), false);
        ^
    ../../third_party/skia/src/pdf/SkPDFSubsetFont.cpp:78:19: error: use of undeclared identifier 'hb_subset'; did you mean 'hb_set_set'?
        HBFace subset(hb_subset(face.get(), input.get()));
                      ^~~~~~~~~
                      hb_set_set
    /usr/local/include/harfbuzz/hb-set.h:131:1: note: 'hb_set_set' declared here
    hb_set_set (hb_set_t       *set,
    ^
    ../../third_party/skia/src/pdf/SkPDFSubsetFont.cpp:78:29: error: cannot initialize a parameter of type 'hb_set_t *' with an rvalue of type 'std::__1::unique_ptr<hb_face_t, SkFunctionWrapper<void (hb_face_t *), &hb_face_destroy>>::pointer' (aka 'hb_face_t *')
        HBFace subset(hb_subset(face.get(), input.get()));
                                ^~~~~~~~~~
    /usr/local/include/harfbuzz/hb-set.h:131:29: note: passing argument to parameter 'set' here
    hb_set_set (hb_set_t       *set,
                                ^
    
    PR:             258576
    Reported by:    pkg-fallout, Stefan Ehmann
    Obtained from:  Arch Linux
---
 www/chromium/Makefile                   |  2 +-
 www/chromium/files/patch-harfbuzz-3.0.0 | 98 +++++++++++++++++++++++++++++++++
 2 files changed, 99 insertions(+), 1 deletion(-)

diff --git a/www/chromium/Makefile b/www/chromium/Makefile
index 0f4316cce144..3feeee1497ea 100644
--- a/www/chromium/Makefile
+++ b/www/chromium/Makefile
@@ -2,7 +2,7 @@
 
 PORTNAME=	chromium
 PORTVERSION=	92.0.4515.159
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	www
 MASTER_SITES=	https://commondatastorage.googleapis.com/chromium-browser-official/ \
 		LOCAL/rene/chromium/:fonts
diff --git a/www/chromium/files/patch-harfbuzz-3.0.0 b/www/chromium/files/patch-harfbuzz-3.0.0
new file mode 100644
index 000000000000..a4b74cbfe796
--- /dev/null
+++ b/www/chromium/files/patch-harfbuzz-3.0.0
@@ -0,0 +1,98 @@
+https://github.com/chromium/chromium/commit/b289f6f3fcbc
+https://github.com/google/skia/commit/66684b17b382
+https://github.com/google/skia/commit/51d83abcd24a
+
+--- components/paint_preview/common/subset_font.cc.orig	2021-08-17 00:16:02 UTC
++++ components/paint_preview/common/subset_font.cc
+@@ -71,9 +71,11 @@ sk_sp<SkData> SubsetFont(SkTypeface* typeface, const G
+   hb_set_t* glyphs =
+       hb_subset_input_glyph_set(input.get());  // Owned by |input|.
+   usage.ForEach(base::BindRepeating(&AddGlyphs, base::Unretained(glyphs)));
+-  hb_subset_input_set_retain_gids(input.get(), true);
++  hb_subset_input_set_flags(input.get(), HB_SUBSET_FLAGS_RETAIN_GIDS);
+ 
+-  HbScoped<hb_face_t> subset_face(hb_subset(face.get(), input.get()));
++  HbScoped<hb_face_t> subset_face(hb_subset_or_fail(face.get(), input.get()));
++  if (!subset_face)
++    return nullptr;
+   HbScoped<hb_blob_t> subset_blob(hb_face_reference_blob(subset_face.get()));
+   if (!subset_blob)
+     return nullptr;
+--- third_party/skia/gn/skia.gni.orig	2021-08-17 00:18:55 UTC
++++ third_party/skia/gn/skia.gni
+@@ -33,8 +33,6 @@ declare_args() {
+   skia_include_multiframe_procs = false
+   skia_lex = false
+   skia_libgifcodec_path = "third_party/externals/libgifcodec"
+-  skia_pdf_subset_harfbuzz =
+-      false  # TODO: set skia_pdf_subset_harfbuzz to skia_use_harfbuzz.
+   skia_qt_path = getenv("QT_PATH")
+   skia_skqp_global_error_tolerance = 0
+   skia_tools_require_resources = false
+@@ -97,6 +95,10 @@ declare_args() {
+ 
+   skia_build_fuzzers = is_clang && is_linux && target_cpu == "x64"
+   skia_use_libfuzzer_defaults = true
++}
++
++declare_args() {
++  skia_pdf_subset_harfbuzz = skia_use_harfbuzz
+ }
+ 
+ declare_args() {
+--- third_party/skia/src/pdf/SkPDFSubsetFont.cpp.orig	2021-08-17 00:18:56 UTC
++++ third_party/skia/src/pdf/SkPDFSubsetFont.cpp
+@@ -49,6 +49,37 @@ static sk_sp<SkData> to_data(HBBlob blob) {
+                                 blob.release());
+ }
+ 
++template<typename...> using void_t = void;
++template<typename T, typename = void>
++struct SkPDFHarfBuzzSubset {
++    // This is the HarfBuzz 3.0 interface.
++    // hb_subset_flags_t does not exist in 2.0. It isn't dependent on T, so inline the value of
++    // HB_SUBSET_FLAGS_RETAIN_GIDS until 2.0 is no longer supported.
++    static HBFace Make(T input, hb_face_t* face) {
++        // TODO: When possible, check if a font is 'tricky' with FT_IS_TRICKY.
++        // If it isn't known if a font is 'tricky', retain the hints.
++        hb_subset_input_set_flags(input, 2/*HB_SUBSET_FLAGS_RETAIN_GIDS*/);
++        return HBFace(hb_subset_or_fail(face, input));
++    }
++};
++template<typename T>
++struct SkPDFHarfBuzzSubset<T, void_t<
++    decltype(hb_subset_input_set_retain_gids(std::declval<T>(), std::declval<bool>())),
++    decltype(hb_subset_input_set_drop_hints(std::declval<T>(), std::declval<bool>())),
++    decltype(hb_subset(std::declval<hb_face_t*>(), std::declval<T>()))
++    >>
++{
++    // This is the HarfBuzz 2.0 (non-public) interface, used if it exists.
++    // This code should be removed as soon as all users are migrated to the newer API.
++    static HBFace Make(T input, hb_face_t* face) {
++        hb_subset_input_set_retain_gids(input, true);
++        // TODO: When possible, check if a font is 'tricky' with FT_IS_TRICKY.
++        // If it isn't known if a font is 'tricky', retain the hints.
++        hb_subset_input_set_drop_hints(input, false);
++        return HBFace(hb_subset(face, input));
++    }
++};
++
+ static sk_sp<SkData> subset_harfbuzz(sk_sp<SkData> fontData,
+                                      const SkPDFGlyphUse& glyphUsage,
+                                      int ttcIndex) {
+@@ -71,11 +102,10 @@ static sk_sp<SkData> subset_harfbuzz(sk_sp<SkData> fon
+     hb_set_t* glyphs = hb_subset_input_glyph_set(input.get());
+     glyphUsage.getSetValues([&glyphs](unsigned gid) { hb_set_add(glyphs, gid);});
+ 
+-    hb_subset_input_set_retain_gids(input.get(), true);
+-    // TODO: When possible, check if a font is 'tricky' with FT_IS_TRICKY.
+-    // If it isn't known if a font is 'tricky', retain the hints.
+-    hb_subset_input_set_drop_hints(input.get(), false);
+-    HBFace subset(hb_subset(face.get(), input.get()));
++    HBFace subset = SkPDFHarfBuzzSubset<hb_subset_input_t*>::Make(input.get(), face.get());
++    if (!subset) {
++        return nullptr;
++    }
+     HBBlob result(hb_face_reference_blob(subset.get()));
+     return to_data(std::move(result));
+ }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202109182132.18ILWBth070040>