diff --git a/libs/qt5/qtwebengine/.qt-5.15.0/e941f2b.diff b/libs/qt5/qtwebengine/.qt-5.15.0/e941f2b.diff new file mode 100644 index 00000000..983f6810 --- /dev/null +++ b/libs/qt5/qtwebengine/.qt-5.15.0/e941f2b.diff @@ -0,0 +1,145 @@ +diff --git a/chromium/v8/src/objects/js-number-format.cc b/chromium/v8/src/objects/js-number-format.cc +index 92d3e2f..ced408a 100644 +--- a/chromium/v8/src/objects/js-number-format.cc ++++ b/src/3rdparty/chromium/v8/src/objects/js-number-format.cc +@@ -1197,42 +1197,31 @@ + } + + namespace { +-Maybe IcuFormatNumber( ++Maybe IcuFormatNumber( + Isolate* isolate, + const icu::number::LocalizedNumberFormatter& number_format, +- Handle numeric_obj, icu::FieldPositionIterator* fp_iter) { ++ Handle numeric_obj, icu::number::FormattedNumber* formatted) { + // If it is BigInt, handle it differently. + UErrorCode status = U_ZERO_ERROR; +- icu::number::FormattedNumber formatted; + if (numeric_obj->IsBigInt()) { + Handle big_int = Handle::cast(numeric_obj); + Handle big_int_string; + ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, big_int_string, + BigInt::ToString(isolate, big_int), +- Nothing()); +- formatted = number_format.formatDecimal( ++ Nothing()); ++ *formatted = number_format.formatDecimal( + {big_int_string->ToCString().get(), big_int_string->length()}, status); + } else { + double number = numeric_obj->Number(); +- formatted = number_format.formatDouble(number, status); ++ *formatted = number_format.formatDouble(number, status); + } + if (U_FAILURE(status)) { + // This happen because of icu data trimming trim out "unit". + // See https://bugs.chromium.org/p/v8/issues/detail?id=8641 +- THROW_NEW_ERROR_RETURN_VALUE(isolate, +- NewTypeError(MessageTemplate::kIcuError), +- Nothing()); ++ THROW_NEW_ERROR_RETURN_VALUE( ++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing()); + } +- if (fp_iter) { +- formatted.getAllFieldPositions(*fp_iter, status); +- } +- icu::UnicodeString result = formatted.toString(status); +- if (U_FAILURE(status)) { +- THROW_NEW_ERROR_RETURN_VALUE(isolate, +- NewTypeError(MessageTemplate::kIcuError), +- Nothing()); +- } +- return Just(result); ++ return Just(true); + } + + } // namespace +@@ -1243,10 +1232,16 @@ + Handle numeric_obj) { + DCHECK(numeric_obj->IsNumeric()); + +- Maybe maybe_format = +- IcuFormatNumber(isolate, number_format, numeric_obj, nullptr); ++ icu::number::FormattedNumber formatted; ++ Maybe maybe_format = ++ IcuFormatNumber(isolate, number_format, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle()); +- return Intl::ToString(isolate, maybe_format.FromJust()); ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString result = formatted.toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kIcuError), String); ++ } ++ return Intl::ToString(isolate, result); + } + + namespace { +@@ -1359,12 +1354,18 @@ + } + + namespace { +-Maybe ConstructParts(Isolate* isolate, const icu::UnicodeString& formatted, +- icu::FieldPositionIterator* fp_iter, ++Maybe ConstructParts(Isolate* isolate, ++ icu::number::FormattedNumber* formatted, + Handle result, int start_index, + Handle numeric_obj, bool style_is_unit) { ++ UErrorCode status = U_ZERO_ERROR; ++ icu::UnicodeString formatted_text = formatted->toString(status); ++ if (U_FAILURE(status)) { ++ THROW_NEW_ERROR_RETURN_VALUE( ++ isolate, NewTypeError(MessageTemplate::kIcuError), Nothing()); ++ } + DCHECK(numeric_obj->IsNumeric()); +- int32_t length = formatted.length(); ++ int32_t length = formatted_text.length(); + int index = start_index; + if (length == 0) return Just(index); + +@@ -1373,13 +1374,14 @@ + // other region covers some part of the formatted string. It's possible + // there's another field with exactly the same begin and end as this backdrop, + // in which case the backdrop's field_id of -1 will give it lower priority. +- regions.push_back(NumberFormatSpan(-1, 0, formatted.length())); ++ regions.push_back(NumberFormatSpan(-1, 0, formatted_text.length())); + + { +- icu::FieldPosition fp; +- while (fp_iter->next(fp)) { +- regions.push_back(NumberFormatSpan(fp.getField(), fp.getBeginIndex(), +- fp.getEndIndex())); ++ icu::ConstrainedFieldPosition cfp; ++ cfp.constrainCategory(UFIELD_CATEGORY_NUMBER); ++ while (formatted->nextPosition(cfp, status)) { ++ regions.push_back( ++ NumberFormatSpan(cfp.getField(), cfp.getStart(), cfp.getLimit())); + } + } + +@@ -1401,7 +1403,7 @@ + Handle substring; + ASSIGN_RETURN_ON_EXCEPTION_VALUE( + isolate, substring, +- Intl::ToString(isolate, formatted, part.begin_pos, part.end_pos), ++ Intl::ToString(isolate, formatted_text, part.begin_pos, part.end_pos), + Nothing()); + Intl::AddElement(isolate, result, index, field_type_string, substring); + ++index; +@@ -1421,14 +1423,14 @@ + number_format->icu_number_formatter().raw(); + CHECK_NOT_NULL(fmt); + +- icu::FieldPositionIterator fp_iter; +- Maybe maybe_format = +- IcuFormatNumber(isolate, *fmt, numeric_obj, &fp_iter); ++ icu::number::FormattedNumber formatted; ++ Maybe maybe_format = ++ IcuFormatNumber(isolate, *fmt, numeric_obj, &formatted); + MAYBE_RETURN(maybe_format, Handle()); + + Handle result = factory->NewJSArray(0); + Maybe maybe_format_to_parts = ConstructParts( +- isolate, maybe_format.FromJust(), &fp_iter, result, 0, numeric_obj, ++ isolate, &formatted, result, 0, numeric_obj, + number_format->style() == JSNumberFormat::Style::UNIT); + MAYBE_RETURN(maybe_format_to_parts, Handle()); + diff --git a/libs/qt5/qtwebengine/qtwebengine.py b/libs/qt5/qtwebengine/qtwebengine.py index 6dfb3c4c..4314f86f 100644 --- a/libs/qt5/qtwebengine/qtwebengine.py +++ b/libs/qt5/qtwebengine/qtwebengine.py @@ -1,99 +1,103 @@ # -*- coding: utf-8 -*- import info class subinfo(info.infoclass): def registerOptions(self): # only supports msvc17+ if CraftCore.compiler.isMSVC() and CraftCore.compiler.getInternalVersion() < 15: self.parent.package.categoryInfo.compiler = CraftCore.compiler.Compiler.NoCompiler def setTargets(self): self.versionInfo.setDefaultValues() self.patchLevel["5.12.1"] = 2 self.patchToApply["5.12.3"] = [("0001-Fix-building-GN-with-VS-2019.patch", 1), ("c6fb532d81f405b2456c382aa0b29eef8866f993.patch", 1)] self.patchToApply["5.13.0"] = [("20b5e27.diff", 1)] # reduce windows debug lvl to prevent out of memory during linking self.patchToApply["5.13.2"] = [("qtwebengine-5.13.2-20191124.diff", 1)] self.patchToApply["5.14.0"] = [("harfbuzz-2.6.1-gcc-9.patch", 1)] # https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/harfbuzz/files/harfbuzz-2.6.1-gcc-9.patch?id=5e2c1c13fa388533d075554da87d3641019aa739 self.patchToApply["5.14.1"] = [("harfbuzz-2.6.1-gcc-9.patch", 1), # https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/harfbuzz/files/harfbuzz-2.6.1-gcc-9.patch?id=5e2c1c13fa388533d075554da87d3641019aa739 ("qtwebengine-5.14.1-20200227.diff", 1)] + self.patchToApply["5.15.0"] = [ + (".qt-5.15.0", 1) + ] + def setDependencies(self): self.buildDependencies["dev-utils/gperf"] = None self.buildDependencies["dev-utils/flexbison"] = None self.buildDependencies["dev-utils/python2"] = None self.runtimeDependencies["libs/qt5/qtbase"] = None self.runtimeDependencies["libs/qt5/qtlocation"] = None self.runtimeDependencies["libs/qt5/qtdeclarative"] = None self.runtimeDependencies["libs/qt5/qtwebchannel"] = None if not CraftCore.compiler.isWindows: self.runtimeDependencies["libs/lcms2"] = None self.runtimeDependencies["libs/freetype"] = None self.runtimeDependencies["libs/libopus"] = None self.runtimeDependencies["libs/zlib"] = None self.runtimeDependencies["libs/libxml2"] = None self.runtimeDependencies["libs/libxslt"] = None self.runtimeDependencies["libs/freetype"] = None self.runtimeDependencies["libs/fontconfig"] = None self.runtimeDependencies["libs/libjpeg-turbo"] = None self.runtimeDependencies["qt-libs/poppler"] = None self.runtimeDependencies["libs/webp"] = None self.runtimeDependencies["libs/ffmpeg"] = None from Package.Qt5CorePackageBase import * class QtPackage(Qt5CorePackageBase): def __init__(self, **args): Qt5CorePackageBase.__init__(self) self.subinfo.options.fetch.checkoutSubmodules = True if CraftCore.compiler.isLinux: self.subinfo.options.configure.args += " -- --webengine-pulseaudio=no --webengine-ffmpeg=system --webengine-icu=system" def fetch(self): if isinstance(self, GitSource): utils.system(["git", "clean", "-xdf"], cwd=self.sourceDir()) return super().fetch() def _getEnv(self): env = { "BISON_PKGDATADIR": None, "NINJAFLAGS": " " # if this is not set qmake will do a verbose mode } if CraftCore.compiler.isMacOS: # we need mac's version of libtool here env["PATH"] = f"/usr/bin/:{os.environ['PATH']}" if CraftCore.compiler.isWindows: # shorten the path to python2 which is passed to gn... shortDevUtils = CraftShortPath(Path(CraftCore.standardDirs.craftRoot()) / "dev-utils/bin").shortPath env["PATH"] = f"{shortDevUtils};{os.environ['PATH']}" return env def configure(self, configureDefines=""): with utils.ScopedEnv(self._getEnv()): return super().configure() def make(self): with utils.ScopedEnv(self._getEnv()): return super().make() def install(self): if not super().install(): return False if CraftCore.compiler.isWindows and os.path.isdir(os.path.join(self.imageDir(), "resources")): # apply solution for wrong install location of some important files # see: https://stackoverflow.com/a/35448081 utils.mergeTree(os.path.join(self.imageDir(), "resources"), os.path.join(self.imageDir(), "bin")) return True class Package(Qt5CoreSdkPackageBase): def __init__(self): Qt5CoreSdkPackageBase.__init__(self, classA=QtPackage, condition=not CraftCore.compiler.isMinGW())