diff --git a/0012-cmake-Fix-include-dir-in-the-generated-pkg-config-fi.patch b/0012-cmake-Fix-include-dir-in-the-generated-pkg-config-fi.patch new file mode 100644 index 0000000..48056e6 --- /dev/null +++ b/0012-cmake-Fix-include-dir-in-the-generated-pkg-config-fi.patch @@ -0,0 +1,33 @@ +From fbd1de045999d1e5b5dcae7ac6c1e674ac0044fe Mon Sep 17 00:00:00 2001 +From: Dmitry Shachnev +Date: Sat, 24 Feb 2018 15:09:53 +0300 +Subject: [PATCH 12/14] [cmake] Fix include dir in the generated pkg-config + files + +--- + Source/WebKit/PlatformQt.cmake | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Source/WebKit/PlatformQt.cmake b/Source/WebKit/PlatformQt.cmake +index 6fe440be800..28976b611cd 100644 +--- a/Source/WebKit/PlatformQt.cmake ++++ b/Source/WebKit/PlatformQt.cmake +@@ -503,6 +503,7 @@ if (NOT MACOS_BUILD_FRAMEWORKS) + ecm_generate_pkgconfig_file( + BASE_NAME Qt5WebKit + DESCRIPTION "Qt WebKit module" ++ INCLUDE_INSTALL_DIR "${KDE_INSTALL_INCLUDEDIR}/QtWebKit" + DEPS "${WEBKIT_PKGCONGIG_DEPS}" + FILENAME_VAR WebKit_PKGCONFIG_FILENAME + ) +@@ -728,6 +729,7 @@ if (NOT MACOS_BUILD_FRAMEWORKS) + ecm_generate_pkgconfig_file( + BASE_NAME Qt5WebKitWidgets + DESCRIPTION "Qt WebKitWidgets module" ++ INCLUDE_INSTALL_DIR "${KDE_INSTALL_INCLUDEDIR}/QtWebKitWidgets" + DEPS "${WEBKITWIDGETS_PKGCONFIG_DEPS}" + FILENAME_VAR WebKitWidgets_PKGCONFIG_FILENAME + ) +-- +2.17.1 + diff --git a/0016-cmake-Import-ECMEnableSanitizers.patch b/0016-cmake-Import-ECMEnableSanitizers.patch new file mode 100644 index 0000000..da4d426 --- /dev/null +++ b/0016-cmake-Import-ECMEnableSanitizers.patch @@ -0,0 +1,204 @@ +From 4ef333ab0b60ca86e9a44cae0b77d1f752892a94 Mon Sep 17 00:00:00 2001 +From: Konstantin Tokarev +Date: Tue, 27 Jun 2017 16:34:00 +0300 +Subject: [PATCH 016/143] [cmake] Import ECMEnableSanitizers + +Change-Id: I1417511f0734e8d03bf8d55c5766b57388ed5504 +--- + Source/cmake/ECMEnableSanitizers.cmake | 173 +++++++++++++++++++++++++ + Source/cmake/OptionsQt.cmake | 1 + + 2 files changed, 174 insertions(+) + create mode 100644 Source/cmake/ECMEnableSanitizers.cmake + +diff --git a/Source/cmake/ECMEnableSanitizers.cmake b/Source/cmake/ECMEnableSanitizers.cmake +new file mode 100644 +index 00000000000..06cc0b66d86 +--- /dev/null ++++ b/Source/cmake/ECMEnableSanitizers.cmake +@@ -0,0 +1,173 @@ ++#.rst: ++# ECMEnableSanitizers ++# ------------------- ++# ++# Enable compiler sanitizer flags. ++# ++# The following sanitizers are supported: ++# ++# - Address Sanitizer ++# - Memory Sanitizer ++# - Thread Sanitizer ++# - Leak Sanitizer ++# - Undefined Behaviour Sanitizer ++# ++# All of them are implemented in Clang, depending on your version, and ++# there is an work in progress in GCC, where some of them are currently ++# implemented. ++# ++# This module will check your current compiler version to see if it ++# supports the sanitizers that you want to enable ++# ++# Usage ++# ===== ++# ++# Simply add:: ++# ++# include(ECMEnableSanitizers) ++# ++# to your ``CMakeLists.txt``. Note that this module is included in ++# KDECompilerSettings, so projects using that module do not need to also ++# include this one. ++# ++# The sanitizers are not enabled by default. Instead, you must set ++# ``ECM_ENABLE_SANITIZERS`` (either in your ``CMakeLists.txt`` or on the ++# command line) to a semicolon-separated list of sanitizers you wish to enable. ++# The options are: ++# ++# - address ++# - memory ++# - thread ++# - leak ++# - undefined ++# ++# The sanitizers "address", "memory" and "thread" are mutually exclusive. You ++# cannot enable two of them in the same build. ++# ++# "leak" requires the "address" sanitizer. ++# ++# .. note:: ++# ++# To reduce the overhead induced by the instrumentation of the sanitizers, it ++# is advised to enable compiler optimizations (``-O1`` or higher). ++# ++# Example ++# ======= ++# ++# This is an example of usage:: ++# ++# mkdir build ++# cd build ++# cmake -DECM_ENABLE_SANITIZERS='address;leak;undefined' .. ++# ++# .. note:: ++# ++# Most of the sanitizers will require Clang. To enable it, use:: ++# ++# -DCMAKE_CXX_COMPILER=clang++ ++# ++# Since 1.3.0. ++ ++#============================================================================= ++# Copyright 2014 Mathieu Tarral ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions ++# are met: ++# ++# 1. Redistributions of source code must retain the copyright ++# notice, this list of conditions and the following disclaimer. ++# 2. Redistributions in binary form must reproduce the copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# 3. The name of the author may not be used to endorse or promote products ++# derived from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++# MACRO check_compiler_version ++#----------------------------- ++macro (check_compiler_version gcc_required_version clang_required_version) ++ if ( ++ ( ++ CMAKE_CXX_COMPILER_ID MATCHES "GNU" ++ AND ++ CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${gcc_required_version} ++ ) ++ OR ++ ( ++ CMAKE_CXX_COMPILER_ID MATCHES "Clang" ++ AND ++ CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${clang_required_version} ++ ) ++ ) ++ # error ! ++ message(FATAL_ERROR "You ask to enable the sanitizer ${CUR_SANITIZER}, ++ but your compiler ${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION} ++ does not support it ! ++ You should use at least GCC ${gcc_required_version} or Clang ${clang_required_version} ++ (99.99 means not implemented yet)") ++ endif () ++endmacro () ++ ++# MACRO check_compiler_support ++#------------------------------ ++macro (enable_sanitizer_flags sanitize_option) ++ if (${sanitize_option} MATCHES "address") ++ check_compiler_version("4.8" "3.1") ++ set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls") ++ set(XSAN_LINKER_FLAGS "asan") ++ elseif (${sanitize_option} MATCHES "thread") ++ check_compiler_version("4.8" "3.1") ++ set(XSAN_COMPILE_FLAGS "-fsanitize=thread") ++ set(XSAN_LINKER_FLAGS "tsan") ++ elseif (${sanitize_option} MATCHES "memory") ++ check_compiler_version("99.99" "3.1") ++ set(XSAN_COMPILE_FLAGS "-fsanitize=memory") ++ elseif (${sanitize_option} MATCHES "leak") ++ check_compiler_version("4.9" "3.4") ++ set(XSAN_COMPILE_FLAGS "-fsanitize=leak") ++ set(XSAN_LINKER_FLAGS "lsan") ++ elseif (${sanitize_option} MATCHES "undefined") ++ check_compiler_version("4.9" "3.1") ++ set(XSAN_COMPILE_FLAGS "-fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls") ++ else () ++ message(FATAL_ERROR "Compiler sanitizer option \"${sanitize_option}\" not supported.") ++ endif () ++endmacro () ++ ++if (ECM_ENABLE_SANITIZERS) ++ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") ++ # for each element of the ECM_ENABLE_SANITIZERS list ++ foreach ( CUR_SANITIZER ${ECM_ENABLE_SANITIZERS} ) ++ # lowercase filter ++ string(TOLOWER ${CUR_SANITIZER} CUR_SANITIZER) ++ # check option and enable appropriate flags ++ enable_sanitizer_flags ( ${CUR_SANITIZER} ) ++ # TODO: GCC will not link pthread library if enabled ASan ++ if(CMAKE_C_COMPILER_ID MATCHES "Clang") ++ set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${XSAN_COMPILE_FLAGS}" ) ++ endif() ++ set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${XSAN_COMPILE_FLAGS}" ) ++ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") ++ link_libraries(${XSAN_LINKER_FLAGS}) ++ endif() ++ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") ++ string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}") ++ string(REPLACE "-Wl,--no-undefined" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}") ++ endif () ++ endforeach() ++ else() ++ message(STATUS "Tried to enable sanitizers (-DECM_ENABLE_SANITIZERS=${ECM_ENABLE_SANITIZERS}), \ ++but compiler (${CMAKE_CXX_COMPILER_ID}) does not have sanitizer support") ++ endif() ++endif() +diff --git a/Source/cmake/OptionsQt.cmake b/Source/cmake/OptionsQt.cmake +index 463a091c787..0835e47aa72 100644 +--- a/Source/cmake/OptionsQt.cmake ++++ b/Source/cmake/OptionsQt.cmake +@@ -1,4 +1,5 @@ + include(FeatureSummary) ++include(ECMEnableSanitizers) + include(ECMPackageConfigHelpers) + + set(ECM_MODULE_DIR ${CMAKE_MODULE_PATH}) +-- +2.17.1 + diff --git a/0031-Disable-ES6-Proxy-object.patch b/0031-Disable-ES6-Proxy-object.patch new file mode 100644 index 0000000..bd2d57e --- /dev/null +++ b/0031-Disable-ES6-Proxy-object.patch @@ -0,0 +1,24 @@ +From 5648446933f52fe479d0a9006f6393a81a790116 Mon Sep 17 00:00:00 2001 +From: Konstantin Tokarev +Date: Thu, 25 May 2017 00:49:22 +0300 +Subject: [PATCH 031/143] Disable ES6 Proxy object + +Change-Id: Ifd6404e254b242afa8dd563c03f9588b4b05ab93 +--- + Source/JavaScriptCore/runtime/JSGlobalObject.cpp | 3 + + 91 files changed, 17 insertions(+), 1379 deletions(-) +diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp +index 9e613a21215..7d57590b4c5 100644 +--- a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp ++++ b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp +@@ -458,7 +458,10 @@ m_ ## lowerName ## Prototype->putDirectWithoutTransition(vm, vm.propertyNames->c + putDirectWithoutTransition(vm, vm.propertyNames->TypeError, m_typeErrorConstructor.get(), DontEnum); + putDirectWithoutTransition(vm, vm.propertyNames->URIError, m_URIErrorConstructor.get(), DontEnum); + ++#if !PLATFORM(QT) ++ // Disable ES6 Proxy because our implementation is not compliant with what real world code expects + putDirectWithoutTransition(vm, vm.propertyNames->Proxy, ProxyConstructor::create(vm, ProxyConstructor::createStructure(vm, this, m_functionPrototype.get())), DontEnum); ++#endif + + + #define PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName) \ diff --git a/0111-ECM-Update-ECMGeneratePkgConfigFile-to-latest-versio.patch b/0111-ECM-Update-ECMGeneratePkgConfigFile-to-latest-versio.patch new file mode 100644 index 0000000..9b5c02d --- /dev/null +++ b/0111-ECM-Update-ECMGeneratePkgConfigFile-to-latest-versio.patch @@ -0,0 +1,156 @@ +From 0325d51c4a2a05fb11b93f0c99d1d08976aac47d Mon Sep 17 00:00:00 2001 +From: Konstantin Tokarev +Date: Thu, 28 Dec 2017 02:22:58 +0300 +Subject: [PATCH 111/143] [ECM] Update ECMGeneratePkgConfigFile to latest + version, fill in DESCRIPTION + +Change-Id: Ib9252a02badeb2be4d8da74c9ab38195ded92afd +--- + Source/WebKit/PlatformQt.cmake | 2 + + Source/cmake/ECMGeneratePkgConfigFile.cmake | 60 ++++++++++++++++----- + 2 files changed, 50 insertions(+), 12 deletions(-) + +diff --git a/Source/WebKit/PlatformQt.cmake b/Source/WebKit/PlatformQt.cmake +index cf5f3670040..909efc00dba 100644 +--- a/Source/WebKit/PlatformQt.cmake ++++ b/Source/WebKit/PlatformQt.cmake +@@ -502,6 +502,7 @@ endif () + if (NOT MACOS_BUILD_FRAMEWORKS) + ecm_generate_pkgconfig_file( + BASE_NAME Qt5WebKit ++ DESCRIPTION "Qt WebKit module" + DEPS "${WEBKIT_PKGCONGIG_DEPS}" + FILENAME_VAR WebKit_PKGCONFIG_FILENAME + ) +@@ -726,6 +727,7 @@ install( + if (NOT MACOS_BUILD_FRAMEWORKS) + ecm_generate_pkgconfig_file( + BASE_NAME Qt5WebKitWidgets ++ DESCRIPTION "Qt WebKitWidgets module" + DEPS "${WEBKITWIDGETS_PKGCONFIG_DEPS}" + FILENAME_VAR WebKitWidgets_PKGCONFIG_FILENAME + ) +diff --git a/Source/cmake/ECMGeneratePkgConfigFile.cmake b/Source/cmake/ECMGeneratePkgConfigFile.cmake +index b4e68663038..09d7e2b476d 100644 +--- a/Source/cmake/ECMGeneratePkgConfigFile.cmake ++++ b/Source/cmake/ECMGeneratePkgConfigFile.cmake +@@ -16,6 +16,7 @@ + # [INCLUDE_INSTALL_DIR ] + # [LIB_INSTALL_DIR ] + # [DEFINES -D...] ++# [DESCRIPTION ] + # [INSTALL]) + # + # ``BASE_NAME`` is the name of the module. It's the name projects will use to +@@ -42,6 +43,10 @@ + # ``DEFINES`` is a list of preprocessor defines that it is recommended users of + # the library pass to the compiler when using it. + # ++# ``DESCRIPTION`` describes what this library is. If it's not specified, CMake ++# will first try to get the description from the metainfo.yaml file or will ++# create one based on ``LIB_NAME``. ++# + # ``INSTALL`` will cause the module to be installed to the ``pkgconfig`` + # subdirectory of ``LIB_INSTALL_DIR``, unless the ``ECM_PKGCONFIG_INSTALL_DIR`` + # cache variable is set to something different. Note that the first call to +@@ -66,24 +71,39 @@ + # ) + # + # Since 1.3.0. ++# ``DESCRIPTION`` available since 5.1.41 ++# + + #============================================================================= + # Copyright 2014 Aleix Pol Gonzalez + # Copyright 2014 David Faure + # +-# Distributed under the OSI-approved BSD License (the "License"); +-# see accompanying file COPYING-CMAKE-SCRIPTS for details. +-# +-# This software is distributed WITHOUT ANY WARRANTY; without even the +-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +-# See the License for more information. +-#============================================================================= +-# (To distribute this file outside of extra-cmake-modules, substitute the full +-# License text for the above reference.) ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions ++# are met: ++# ++# 1. Redistributions of source code must retain the copyright ++# notice, this list of conditions and the following disclaimer. ++# 2. Redistributions in binary form must reproduce the copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# 3. The name of the author may not be used to endorse or promote products ++# derived from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + function(ECM_GENERATE_PKGCONFIG_FILE) + set(options INSTALL) +- set(oneValueArgs BASE_NAME LIB_NAME FILENAME_VAR INCLUDE_INSTALL_DIR LIB_INSTALL_DIR) ++ set(oneValueArgs BASE_NAME LIB_NAME FILENAME_VAR INCLUDE_INSTALL_DIR LIB_INSTALL_DIR DESCRIPTION) + set(multiValueArgs DEPS DEFINES) + + cmake_parse_arguments(EGPF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) +@@ -119,6 +139,17 @@ function(ECM_GENERATE_PKGCONFIG_FILE) + set(EGPF_LIB_INSTALL_DIR "lib") + endif() + endif() ++ if(NOT EGPF_DESCRIPTION) ++ if(EXISTS ${CMAKE_SOURCE_DIR}/metainfo.yaml) ++ file(STRINGS "${CMAKE_SOURCE_DIR}/metainfo.yaml" _EGPF_METAINFO_DESCRIPTION_STRING REGEX "^description:.*$") ++ if(_EGPF_METAINFO_DESCRIPTION_STRING) ++ string(REGEX REPLACE "^description:[ ]*(.*)" "\\1" EGPF_DESCRIPTION ${_EGPF_METAINFO_DESCRIPTION_STRING}) ++ endif() ++ endif() ++ if("${EGPF_DESCRIPTION}" STREQUAL "") ++ set(EGPF_DESCRIPTION "${EGPF_LIB_NAME} library.") ++ endif() ++ endif() + + set(PKGCONFIG_TARGET_BASENAME ${EGPF_BASE_NAME}) + set(PKGCONFIG_TARGET_LIBNAME ${EGPF_LIB_NAME}) +@@ -135,6 +166,7 @@ function(ECM_GENERATE_PKGCONFIG_FILE) + else() + set(PKGCONFIG_TARGET_LIBS "${CMAKE_INSTALL_PREFIX}/${EGPF_LIB_INSTALL_DIR}") + endif() ++ set(PKGCONFIG_TARGET_DESCRIPTION "${EGPF_DESCRIPTION}") + set(PKGCONFIG_TARGET_DEFINES "") + if(EGPF_DEFINES) + set(PKGCONFIG_TARGET_DEFINES "${EGPF_DEFINE}") +@@ -148,6 +180,7 @@ function(ECM_GENERATE_PKGCONFIG_FILE) + file(WRITE ${PKGCONFIG_FILENAME} + " + Name: ${PKGCONFIG_TARGET_LIBNAME} ++Description: ${PKGCONFIG_TARGET_DESCRIPTION} + Version: ${PROJECT_VERSION} + Libs: -L${CMAKE_INSTALL_PREFIX}/${EGPF_LIB_INSTALL_DIR} -l${PKGCONFIG_TARGET_LIBNAME} + Cflags: ${PKGCONFIG_TARGET_INCLUDES} ${PKGCONFIG_TARGET_DEFINES} +@@ -156,8 +189,11 @@ Requires: ${PKGCONFIG_TARGET_DEPS} + ) + + if(EGPF_INSTALL) +- set(ECM_PKGCONFIG_INSTALL_DIR "${EGPF_LIB_INSTALL_DIR}/pkgconfig" CACHE PATH "The directory where pkgconfig will be installed to.") ++ if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") ++ set(ECM_PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/libdata/pkgconfig" CACHE PATH "The directory where pkgconfig will be installed to.") ++ else() ++ set(ECM_PKGCONFIG_INSTALL_DIR "${EGPF_LIB_INSTALL_DIR}/pkgconfig" CACHE PATH "The directory where pkgconfig will be installed to.") ++ endif() + install(FILES ${PKGCONFIG_FILENAME} DESTINATION ${ECM_PKGCONFIG_INSTALL_DIR}) + endif() + endfunction() +- +-- +2.17.1 + diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 3fc956c..0000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# qt5-qtwebkit - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index e5a0158..0000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# qt5-qtwebkit - -#### 介绍 -{**以下是码云平台说明,您可以替换此简介** -码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/qt5-qtwebkit-5.212.0-alpha2-fix-pagewidth.patch b/qt5-qtwebkit-5.212.0-alpha2-fix-pagewidth.patch new file mode 100644 index 0000000..0837b91 --- /dev/null +++ b/qt5-qtwebkit-5.212.0-alpha2-fix-pagewidth.patch @@ -0,0 +1,12 @@ +diff -Naur qtwebkit/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp qtwebkit.new/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp +--- qtwebkit/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp 2017-10-23 17:25:58.941518553 +0200 ++++ qtwebkit.new/Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp 2017-10-23 17:27:44.223917497 +0200 +@@ -961,6 +961,8 @@ + FrameView* view = frame->view(); + ASSERT(view); + view->resize(size); ++ if (view->needsLayout()) ++ view->layout(); + view->adjustViewSize(); + } + diff --git a/qt5-qtwebkit.spec b/qt5-qtwebkit.spec new file mode 100644 index 0000000..682ba3f --- /dev/null +++ b/qt5-qtwebkit.spec @@ -0,0 +1,133 @@ +Name: qt5-qtwebkit +Version: 5.212.0 +Release: 1 +Summary: QtWebKit components +License: LGPLv2 and BSD +URL: https://github.com/annulen/webkit +Source0: https://github.com/qtwebkit/qtwebkit/releases/download/qtwebkit-5.212.0-alpha2/qtwebkit-%{version}-alpha2.tar.xz + +Patch0000: qt5-qtwebkit-5.212.0-alpha2-fix-pagewidth.patch +Patch0001: qtwebkit-5.212.0-alpha2-fix-null-pointer-dereference.patch +Patch0002: qtwebkit-5.212.0_cmake_cmp0071.patch +Patch0003: qtwebkit-5.212.0_fix_missing_sources.patch +Patch0004: 0016-cmake-Import-ECMEnableSanitizers.patch +Patch0005: 0031-Disable-ES6-Proxy-object.patch +Patch0006: 0111-ECM-Update-ECMGeneratePkgConfigFile-to-latest-versio.patch +Patch0007: 0012-cmake-Fix-include-dir-in-the-generated-pkg-config-fi.patch + +BuildRequires: bison cmake flex pkgconfig(fontconfig) pkgconfig(gio-2.0) pkgconfig(glib-2.0) +BuildRequires: gperf pkgconfig(gstreamer-1.0) pkgconfig(gstreamer-app-1.0) hyphen-devel +BuildRequires: pkgconfig(icu-i18n) pkgconfig(icu-uc) libjpeg-devel pkgconfig(libpng) +BuildRequires: pkgconfig(libwebp) pkgconfig(xcomposite) pkgconfig(xrender) pkgconfig(libxslt) +BuildRequires: pkgconfig(gl) pkgconfig(gstreamer-gl-1.0) pkgconfig(gstreamer-mpegts-1.0) +BuildRequires: perl-generators python2 qt5-qtbase-devel pkgconfig(Qt5Quick) +BuildRequires: pkgconfig(Qt5Location) pkgconfig(Qt5Sensors) pkgconfig(Qt5WebChannel) +BuildRequires: pkgconfig(ruby) rubygems pkgconfig(sqlite3) pkgconfig(zlib) +BuildRequires: qt5-qtbase-private-devel qt5-qtdeclarative-private-devel +%{?_qt5:Requires: %{_qt5} = %{_qt5_version}} +%{?_qt5:Requires: qt5-qtdeclarative = %{_qt5_version}} +%global __provides_exclude_from ^%{_qt5_archdatadir}/qml/.*\\.so$ +Provides: bundled(angle) bundled(brotli) bundled(woff2) + +%description +WebKit is an open source web browser engine. +WebKit's HTML and JavaScript code began as a branch of the KHTML and KJS libraries from KDE. +As part of KDE framework KHTML was based on Qt +but during their porting efforts Apple's engineers made WebKit toolkit independent. +QtWebKit is a project aiming at porting this fabulous engine back to Qt. + +%package devel +Summary: Development files for qt5-qtwebkit +Requires: qt5-qtwebkit = %{version}-%{release} qt5-qtbase-devel qt5-qtdeclarative-devel + +%description devel +Development files for qt5-qtwebkit. + +%package help +Summary: API documentation for qt5-qtwebkit +BuildRequires: qt5-qdoc qt5-qhelpgenerator +BuildArch: noarch +Provides: qt5-qtwebkit-doc = %{version}-%{release} +Obsoletes: qt5-qtwebkit-doc < %{version}-%{release} + +%description help +API documentation for qt5-qtwebkit. + +%prep +%autosetup -p1 -n qtwebkit-%{version}-alpha2 + +%build +export CFLAGS="${CFLAGS:-%optflags}" +export CXXFLAGS="${CXXFLAGS:-%optflags} -fpermissive" +export QT_VERSION_TAG=52120 +export QT_VER=5.212.0 +export QT_VERSION=5.212.0 +export QT_INSTALL_DOCS=/usr/share/doc/qt5 +export BUILDDIR=./ +%{?__global_ldflags:export LDFLAGS="${LDFLAGS:-%__global_ldflags}"} +cmake -DPORT=Qt -DCMAKE_BUILD_TYPE=Release -DENABLE_TOOLS=OFF \ + -DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -DGENERATE_DOCUMENTATION=ON \ + . + +%make_build +%make_build docs + +%install +export QT_VERSION_TAG=52120 +export QT_VER=5.212.0 +export QT_VERSION=5.212.0 +export QT_INSTALL_DOCS=/usr/share/doc/qt5 +export BUILDDIR=./ +%make_install +%delete_la + +sed -i "s,Libs: -L%{_qt5_libdir}/qt5/../ -lQt5WebKit,Libs: -L%{_qt5_libdir} -lQt5WebKit ,g" %{buildroot}%{_libdir}/pkgconfig/Qt5WebKit.pc +sed -i "s,Libs: -L%{_qt5_libdir}/qt5/../ -lQt5WebKitWidgets,Libs: -L%{_qt5_libdir} -lQt5WebKitWidgets ,g" %{buildroot}%{_libdir}/pkgconfig/Qt5WebKitWidgets.pc + +mkdir -p _license_files +cp -p Source/JavaScriptCore/COPYING.LIB _license_files/Source.JavaScriptCore.COPYING.LIB +cp -p Source/JavaScriptCore/icu/LICENSE _license_files/Source.JavaScriptCore.icu.LICENSE +cp -p Source/ThirdParty/ANGLE/LICENSE _license_files/Source.ThirdParty.ANGLE.LICENSE +cp -p Source/ThirdParty/ANGLE/src/third_party/compiler/LICENSE _license_files/Source.ThirdParty.ANGLE.src.third_party.compiler.LICENSE +cp -p Source/ThirdParty/ANGLE/src/third_party/murmurhash/LICENSE _license_files/Source.ThirdParty.ANGLE.src.third_party.murmurhash.LICENSE +cp -p Source/WebCore/icu/LICENSE _license_files/Source.WebCore.icu.LICENSE +cp -p Source/WebCore/LICENSE-APPLE _license_files/Source.WebCore.LICENSE-APPLE +cp -p Source/WebCore/LICENSE-LGPL-2 _license_files/Source.WebCore.LICENSE-LGPL-2 +cp -p Source/WebCore/LICENSE-LGPL-2.1 _license_files/Source.WebCore.LICENSE-LGPL-2.1 +cp -p Source/WebInspectorUI/UserInterface/External/CodeMirror/LICENSE _license_files/Source.WebInspectorUI.UserInterface.External.CodeMirror.LICENSE +cp -p Source/WebInspectorUI/UserInterface/External/Esprima/LICENSE _license_files/Source.WebInspectorUI.UserInterface.External.Esprima.LICENSE +cp -p Source/WTF/icu/LICENSE _license_files/Source.WTF.icu.LICENSE +cp -p Source/WTF/wtf/dtoa/COPYING _license_files/Source.WTF.wtf.dtoa.COPYING +cp -p Source/WTF/wtf/dtoa/LICENSE _license_files/Source.WTF.wtf.dtoa.LICENSE + +%check +export PKG_CONFIG_PATH=%{buildroot}%{_libdir}/pkgconfig +test -z "$(pkg-config --cflags Qt5WebKit | grep Qt5WebKit)" + +%post +/sbin/ldconfig +%postun +/sbin/ldconfig + +%files +%license LICENSE.LGPLv21 _license_files/* +%{_qt5_libdir}/*.so.5* +%{_qt5_libexecdir}/* +%{_qt5_archdatadir}/qml/QtWebKit/ + +%files devel +%{_qt5_headerdir}/Qt*/ +%{_qt5_libdir}/libQt5*.so +%{_qt5_libdir}/cmake/Qt5*/ +%{_qt5_libdir}/pkgconfig/Qt5*.pc +%{_qt5_archdatadir}/mkspecs/modules/*.pri + +%files help +%{_qt5_docdir}/qtwebkit.qch +%{_qt5_docdir}/qtwebkit/ + +%changelog +* Fri Feb 14 2020 Ling Yang - 5.212.0-1 +- Package init diff --git a/qtwebkit-5.212.0-alpha2-fix-null-pointer-dereference.patch b/qtwebkit-5.212.0-alpha2-fix-null-pointer-dereference.patch new file mode 100644 index 0000000..4cf7ae4 --- /dev/null +++ b/qtwebkit-5.212.0-alpha2-fix-null-pointer-dereference.patch @@ -0,0 +1,15 @@ +diff -ur qtwebkit-5.212.0-alpha2/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp qtwebkit-5.212.0-alpha2-fix-null-pointer-dereference/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp +--- qtwebkit-5.212.0-alpha2/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp 2017-06-09 16:11:36.000000000 +0200 ++++ qtwebkit-5.212.0-alpha2-fix-null-pointer-dereference/Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp 2017-10-24 21:44:40.504943501 +0200 +@@ -390,7 +390,10 @@ + + QString QWebPageAdapter::selectedHtml() const + { +- return page->focusController().focusedOrMainFrame().editor().selectedRange()->toHTML(); ++ RefPtr range = page->focusController().focusedOrMainFrame().editor().selectedRange(); ++ if (!range) ++ return QString(); ++ return range->toHTML(); + } + + bool QWebPageAdapter::isContentEditable() const diff --git a/qtwebkit-5.212.0-alpha2.tar.xz b/qtwebkit-5.212.0-alpha2.tar.xz new file mode 100644 index 0000000..a077819 Binary files /dev/null and b/qtwebkit-5.212.0-alpha2.tar.xz differ diff --git a/qtwebkit-5.212.0_cmake_cmp0071.patch b/qtwebkit-5.212.0_cmake_cmp0071.patch new file mode 100644 index 0000000..b42af57 --- /dev/null +++ b/qtwebkit-5.212.0_cmake_cmp0071.patch @@ -0,0 +1,32 @@ +Index: qtwebkit-5.212.0-alpha2/CMakeLists.txt +=================================================================== +--- qtwebkit-5.212.0-alpha2.orig/CMakeLists.txt ++++ qtwebkit-5.212.0-alpha2/CMakeLists.txt +@@ -6,6 +6,11 @@ if (POLICY CMP0058) + cmake_policy(SET CMP0058 NEW) + endif () + ++# Explicitly process generated files with AUTOMOC. ++if (POLICY CMP0071) ++ cmake_policy(SET CMP0071 NEW) ++endif () ++ + set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Source/cmake") + + if (NOT DEFINED ENABLE_WEBKIT) +Index: qtwebkit-5.212.0-alpha2/Source/WebKit/CMakeLists.txt +=================================================================== +--- qtwebkit-5.212.0-alpha2.orig/Source/WebKit/CMakeLists.txt ++++ qtwebkit-5.212.0-alpha2/Source/WebKit/CMakeLists.txt +@@ -1,6 +1,11 @@ + cmake_minimum_required(VERSION 2.8.12) + include(WebKitCommon) + ++# Explicitly process generated files with AUTOMOC. ++if (POLICY CMP0071) ++ cmake_policy(SET CMP0071 NEW) ++endif () ++ + set(WebKit_SOURCES + Storage/StorageAreaImpl.cpp + Storage/StorageAreaSync.cpp diff --git a/qtwebkit-5.212.0_fix_missing_sources.patch b/qtwebkit-5.212.0_fix_missing_sources.patch new file mode 100644 index 0000000..ca372a2 --- /dev/null +++ b/qtwebkit-5.212.0_fix_missing_sources.patch @@ -0,0 +1,20 @@ +Index: qtwebkit-5.212.0-alpha2/Source/WebKit/PlatformQt.cmake +=================================================================== +--- qtwebkit-5.212.0-alpha2.orig/Source/WebKit/PlatformQt.cmake ++++ qtwebkit-5.212.0-alpha2/Source/WebKit/PlatformQt.cmake +@@ -786,6 +786,7 @@ if (COMPILER_IS_GCC_OR_CLANG) + set_source_files_properties( + qt/Api/qwebdatabase.cpp + qt/Api/qwebelement.cpp ++ qt/Api/qwebfullscreenrequest.cpp + qt/Api/qwebhistory.cpp + qt/Api/qwebhistoryinterface.cpp + qt/Api/qwebpluginfactory.cpp +@@ -795,7 +796,6 @@ if (COMPILER_IS_GCC_OR_CLANG) + + qt/WidgetApi/qgraphicswebview.cpp + qt/WidgetApi/qwebframe.cpp +- qt/WidgetApi/qwebfullscreenrequest.cpp + qt/WidgetApi/qwebinspector.cpp + qt/WidgetApi/qwebpage.cpp + qt/WidgetApi/qwebview.cpp