aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2021-09-18 17:23:51 +0000
committerJan Beich <jbeich@FreeBSD.org>2021-09-18 22:04:57 +0000
commit3e693f24a78f51cbb7daf258bd727961b3bec046 (patch)
tree0386cfbd2e3c6956d326a4142d8c50023ad90e26
parentd65611acb322df914ab6bade00f10f03a5d3587f (diff)
downloadports-3e693f24a78f51cbb7daf258bd727961b3bec046.tar.gz
ports-3e693f24a78f51cbb7daf258bd727961b3bec046.zip
devel/electron12: 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 Obtained from: Arch Linux
-rw-r--r--devel/electron12/Makefile2
-rw-r--r--devel/electron12/files/patch-harfbuzz-3.0.098
2 files changed, 99 insertions, 1 deletions
diff --git a/devel/electron12/Makefile b/devel/electron12/Makefile
index c78a7e038e3c..68c14d7abd54 100644
--- a/devel/electron12/Makefile
+++ b/devel/electron12/Makefile
@@ -1,7 +1,7 @@
PORTNAME= electron
DISTVERSIONPREFIX= v
DISTVERSION= ${ELECTRON_VER:S/-beta./.b/}
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel java
MASTER_SITES= https://commondatastorage.googleapis.com/chromium-browser-official/:chromium \
https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
diff --git a/devel/electron12/files/patch-harfbuzz-3.0.0 b/devel/electron12/files/patch-harfbuzz-3.0.0
new file mode 100644
index 000000000000..a4b74cbfe796
--- /dev/null
+++ b/devel/electron12/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));
+ }