!35 [sync] PR-34: Migrate python 2 to python 3 & Fix build on riscv64

From: @openeuler-sync-bot 
Reviewed-by: @peijiankang 
Signed-off-by: @peijiankang
This commit is contained in:
openeuler-ci-bot 2024-04-07 00:35:25 +00:00 committed by Gitee
commit 5e83bdf873
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
12 changed files with 38778 additions and 27 deletions

1687
chromium-python3.patch Normal file

File diff suppressed because it is too large Load Diff

390
disable-catapult.patch Normal file
View File

@ -0,0 +1,390 @@
Description: remove dependencies on third_party catapult
Author: Michael Gilbert <mgilbert@debian.org>
Forwarded: not-needed
Last-Update: 2022-11-26
--- a/src/3rdparty/chromium/BUILD.gn
+++ b/src/3rdparty/chromium/BUILD.gn
@@ -239,7 +239,6 @@ group("gn_all") {
"//media/capture:capture_unittests",
"//media/cast:cast_unittests",
"//third_party/angle/src/tests:angle_white_box_tests",
- "//third_party/catapult/telemetry:bitmaptools($host_toolchain)",
]
} else if (is_ios && !use_qt) {
deps += [
@@ -354,7 +353,6 @@ group("gn_all") {
"//net/android:net_junit_tests",
"//services:services_junit_tests",
"//testing/android/junit:junit_unit_tests",
- "//third_party/catapult/devil",
"//third_party/smhasher:murmurhash3",
"//tools/android:android_tools",
"//tools/android:memconsumer",
@@ -959,7 +957,6 @@ if (is_chromeos) {
"//third_party/dawn/src/tests:dawn_unittests",
# Blocked on https://github.com/catapult-project/catapult/issues/2297
- #"//third_party/catapult/telemetry:bitmaptools",
"//tools/perf/clear_system_cache",
"//ui/ozone/gl:ozone_gl_unittests",
]
@@ -1037,7 +1034,6 @@ if (!is_ios && !use_qt) {
data_deps = [
"//chrome:chrome",
"//chrome/test/chromedriver",
- "//third_party/catapult/third_party/typ",
]
if (is_win) {
data_deps += [ "//build/win:copy_cdb_to_output" ]
@@ -1084,7 +1080,6 @@ if (!is_ios && !use_qt) {
"//third_party/blink/public:blink_devtools_inspector_resources",
"//third_party/blink/public/mojom:mojom_platform_js_data_deps",
"//third_party/blink/renderer/core/html:js_files_for_form_controls_web_tests",
- "//third_party/catapult/third_party/typ",
"//third_party/mesa_headers",
"//tools/imagediff",
]
@@ -1152,7 +1147,6 @@ if (!is_ios && !use_qt) {
if (is_android) {
data += [
- "//third_party/catapult/",
"//build/android/",
]
}
@@ -1259,11 +1253,6 @@ if (!is_ios && !use_qt) {
"//third_party/blink/web_tests/StaleTestExpectations",
"//third_party/blink/web_tests/TestExpectations",
"//third_party/blink/web_tests/VirtualTestSuites",
- "//third_party/catapult/common/py_utils/",
- "//third_party/catapult/devil/",
- "//third_party/catapult/dependency_manager/",
- "//third_party/catapult/third_party/zipfile/",
- "//third_party/catapult/third_party/typ/",
"//third_party/depot_tools/pylint",
"//third_party/depot_tools/pylint-1.5",
"//third_party/depot_tools/pylint_main.py",
--- a/src/3rdparty/chromium/chrome/chrome_paks.gni
+++ b/src/3rdparty/chromium/chrome/chrome_paks.gni
@@ -94,7 +94,6 @@ template("chrome_extra_paks") {
"$root_gen_dir/chrome/common_resources.pak",
"$root_gen_dir/components/autofill/core/browser/autofill_address_rewriter_resources.pak",
"$root_gen_dir/components/components_resources.pak",
- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
"$root_gen_dir/net/net_resources.pak",
@@ -110,7 +109,6 @@ template("chrome_extra_paks") {
"//components/autofill/core/browser:autofill_address_rewriter_resources",
"//components/resources",
"//content:content_resources",
- "//content/browser/tracing:resources",
"//mojo/public/js:resources",
"//net:net_resources",
"//skia:skia_resources",
--- a/src/3rdparty/chromium/chrome/common/extensions/docs/server2/BUILD.gn
+++ b/src/3rdparty/chromium/chrome/common/extensions/docs/server2/BUILD.gn
@@ -38,6 +38,4 @@ group("extension_docserver_python_unitte
"//tools/json_comment_eater/json_comment_eater.py",
"//tools/json_schema_compiler/",
]
-
- data_deps = [ "//third_party/catapult/third_party/typ" ]
}
--- a/src/3rdparty/chromium/chrome/test/BUILD.gn
+++ b/src/3rdparty/chromium/chrome/test/BUILD.gn
@@ -7103,8 +7103,6 @@ if (!is_fuchsia && !is_android) {
"//chrome/test/data/password/captured_sites/",
"//chrome/test/data/web_page_replay_go_helper_scripts/automation_helper.js",
"//components/test/data/autofill/web_page_replay_support_files/",
- "//third_party/catapult/telemetry/telemetry/bin/",
- "//third_party/catapult/web_page_replay_go/deterministic.js",
]
if (is_linux || is_chromeos || is_win) {
@@ -7141,7 +7139,6 @@ if (!is_fuchsia && !is_android) {
# TODO(uwyiming@chromium.org) create a gn target for Web Page Replay Go (WPR Go) and only WPR Go.
# So that test targets requiring WPR Go does not pull down the whole telemetry tool chain.
- "//third_party/catapult:telemetry_chrome_test_support",
"//third_party/hunspell",
"//third_party/icu",
"//third_party/libpng",
@@ -7171,7 +7168,6 @@ if (!is_fuchsia && !is_android) {
deps = [ "//tools/perf/chrome_telemetry_build:telemetry_chrome_test" ]
data = [
- "//third_party/catapult/telemetry/telemetry/internal/bin/",
"//tools/perf/run_telemetry_tests",
# For isolate contract.
@@ -7189,7 +7185,6 @@ if (!is_fuchsia && !is_android) {
group("telemetry_gpu_unittests") {
testonly = true
deps = [
- "//third_party/catapult:telemetry_chrome_test_support",
"//tools/metrics:metrics_python_tests",
]
data = [
@@ -7313,7 +7308,6 @@ if (is_mac || is_win || is_android) {
"//testing/scripts",
"//testing/test_env.py",
"//testing/xvfb.py",
- "//third_party/catapult",
"//tools",
]
}
--- a/src/3rdparty/chromium/content/browser/BUILD.gn
+++ b/src/3rdparty/chromium/content/browser/BUILD.gn
@@ -2169,7 +2169,6 @@ jumbo_static_library("browser") {
if (!is_android) {
deps += [
"//components/vector_icons",
- "//content/browser/tracing:resources",
]
}
--- a/src/3rdparty/chromium/content/browser/tracing/tracing_ui.cc
+++ b/src/3rdparty/chromium/content/browser/tracing/tracing_ui.cc
@@ -27,7 +27,6 @@
#include "base/strings/stringprintf.h"
#include "base/trace_event/trace_event.h"
#include "base/values.h"
-#include "content/browser/tracing/grit/tracing_resources.h"
#include "content/browser/tracing/tracing_controller_impl.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
@@ -242,8 +241,6 @@ TracingUI::TracingUI(WebUI* web_ui)
WebUIDataSource* source = WebUIDataSource::Create(kChromeUITracingHost);
source->DisableTrustedTypesCSP();
source->UseStringsJs();
- source->SetDefaultResource(IDR_TRACING_HTML);
- source->AddResourcePath("tracing.js", IDR_TRACING_JS);
source->SetRequestFilter(base::BindRepeating(OnShouldHandleRequest),
base::BindRepeating(OnTracingRequest));
WebUIDataSource::Add(browser_context, source);
--- a/src/3rdparty/chromium/content/shell/BUILD.gn
+++ b/src/3rdparty/chromium/content/shell/BUILD.gn
@@ -390,7 +390,6 @@ repack("pak") {
sources = [
"$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
"$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
"$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak",
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/content/dev_ui_content_resources.pak",
@@ -413,7 +412,6 @@ repack("pak") {
"//content:dev_ui_content_resources",
"//content/app/resources",
"//content/browser/resources/media:media_internals_resources",
- "//content/browser/tracing:resources",
"//content/browser/webrtc/resources",
"//mojo/public/js:resources",
"//net:net_resources",
--- a/src/3rdparty/chromium/fuchsia/engine/BUILD.gn
+++ b/src/3rdparty/chromium/fuchsia/engine/BUILD.gn
@@ -43,7 +43,6 @@ repack("web_engine_pak") {
"$root_gen_dir/components/components_resources.pak",
"$root_gen_dir/components/strings/components_strings_en-US.pak",
"$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/content/dev_ui_content_resources.pak",
"$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
@@ -66,7 +65,6 @@ repack("web_engine_pak") {
"//content:content_resources",
"//content:dev_ui_content_resources",
"//content/app/resources",
- "//content/browser/tracing:resources",
"//gpu/command_buffer/service",
"//mojo/public/js:resources",
"//net:net_resources",
--- a/src/3rdparty/chromium/headless/BUILD.gn
+++ b/src/3rdparty/chromium/headless/BUILD.gn
@@ -37,7 +37,6 @@ repack("pak") {
"$root_gen_dir/components/components_resources.pak",
"$root_gen_dir/components/strings/components_strings_en-US.pak",
"$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/content/dev_ui_content_resources.pak",
"$root_gen_dir/headless/headless_lib_resources.pak",
@@ -65,7 +64,6 @@ repack("pak") {
"//content:content_resources",
"//content:dev_ui_content_resources",
"//content/app/resources",
- "//content/browser/tracing:resources",
"//mojo/public/js:resources",
"//net:net_resources",
"//third_party/blink/public:resources",
--- a/src/3rdparty/chromium/mojo/public/tools/BUILD.gn
+++ b/src/3rdparty/chromium/mojo/public/tools/BUILD.gn
@@ -14,5 +14,4 @@ group("mojo_python_unittests") {
"//testing/xvfb.py",
]
deps = [ "//mojo/public/tools/mojom/mojom:tests" ]
- data_deps = [ "//third_party/catapult/third_party/typ/" ]
}
--- a/src/3rdparty/chromium/testing/BUILD.gn
+++ b/src/3rdparty/chromium/testing/BUILD.gn
@@ -27,7 +27,6 @@ group("run_perf_test") {
data_deps = [
":test_scripts_shared",
- "//third_party/catapult/tracing:convert_chart_json",
]
if (is_android) {
--- a/src/3rdparty/chromium/third_party/webrtc/test/BUILD.gn
+++ b/src/3rdparty/chromium/third_party/webrtc/test/BUILD.gn
@@ -258,10 +258,6 @@ rtc_library("perf_test") {
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
if (rtc_enable_protobuf) {
sources += [ "testsupport/perf_test_histogram_writer.cc" ]
- deps += [
- "//third_party/catapult/tracing/tracing:histogram",
- "//third_party/catapult/tracing/tracing:reserved_infos",
- ]
} else {
sources += [ "testsupport/perf_test_histogram_writer_no_protobuf.cc" ]
}
@@ -566,7 +562,6 @@ if (rtc_include_tests) {
if (rtc_enable_protobuf) {
sources += [ "testsupport/perf_test_histogram_writer_unittest.cc" ]
- deps += [ "//third_party/catapult/tracing/tracing:histogram" ]
}
data = test_support_unittests_resources
--- a/src/3rdparty/chromium/tools/binary_size/BUILD.gn
+++ b/src/3rdparty/chromium/tools/binary_size/BUILD.gn
@@ -18,7 +18,6 @@ python_library("binary_size_trybot_py")
python_library("sizes_py") {
testonly = true
pydeps_file = "sizes.pydeps"
- data_deps = [ "//third_party/catapult/tracing:convert_chart_json" ]
}
if (is_linux || is_chromeos) {
--- a/src/3rdparty/chromium/tools/grit/BUILD.gn
+++ b/src/3rdparty/chromium/tools/grit/BUILD.gn
@@ -33,7 +33,6 @@ group("grit_python_unittests") {
"//testing/scripts/run_isolated_script_test.py",
"//testing/xvfb.py",
"//tools/grit/",
- "//third_party/catapult/third_party/typ/",
]
}
--- a/src/3rdparty/chromium/tools/gritsettings/resource_ids.spec
+++ b/src/3rdparty/chromium/tools/gritsettings/resource_ids.spec
@@ -499,12 +499,6 @@
"content/shell/shell_resources.grd": {
"includes": [2940],
},
-
- # This file is generated during the build.
- "<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd": {
- "META": {"sizes": {"includes": [20],}},
- "includes": [2960],
- },
# END content/ section.
# START ios/web/ section.
--- a/src/3rdparty/chromium/tools/metrics/BUILD.gn
+++ b/src/3rdparty/chromium/tools/metrics/BUILD.gn
@@ -56,7 +56,6 @@ group("metrics_python_tests") {
"//testing/scripts/common.py",
"//testing/xvfb.py",
"//testing/test_env.py",
- "//third_party/catapult/third_party/typ/",
# Scripts we depend on. Their unit tests are also included.
"//tools/json_comment_eater/json_comment_eater.py",
--- a/src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn
+++ b/src/3rdparty/chromium/tools/perf/chrome_telemetry_build/BUILD.gn
@@ -107,7 +107,6 @@ group("telemetry_chrome_test_without_chr
"//tools/perf/core/", # chrome_telemetry_build/ depends on core/
]
data_deps = [
- "//third_party/catapult:telemetry_chrome_test_support",
"//tools/metrics:metrics_python_tests",
]
@@ -151,7 +150,5 @@ group("telemetry_chrome_test_without_chr
"//build/android:devil_chromium_py",
"//build/android:stack_tools",
]
- } else if (!is_fuchsia) {
- data_deps += [ "//third_party/catapult/telemetry:bitmaptools" ]
}
}
--- a/src/3rdparty/chromium/tools/perf/core/perfetto_binary_roller/BUILD.gn
+++ b/src/3rdparty/chromium/tools/perf/core/perfetto_binary_roller/BUILD.gn
@@ -7,7 +7,6 @@ import("//build/util/generate_wrapper.gn
generate_wrapper("upload_trace_processor") {
testonly = true
data_deps = [
- "//third_party/catapult:telemetry_chrome_test_support",
"//third_party/perfetto/src/trace_processor:trace_processor_shell",
]
data = [
--- a/src/3rdparty/chromium/tools/polymer/BUILD.gn
+++ b/src/3rdparty/chromium/tools/polymer/BUILD.gn
@@ -10,6 +10,5 @@ group("polymer_tools_python_unittests")
"//testing/scripts/run_isolated_script_test.py",
"//testing/xvfb.py",
"//tools/polymer/",
- "//third_party/catapult/third_party/typ/",
]
}
--- a/src/3rdparty/chromium/v8/tools/BUILD.gn
+++ b/src/3rdparty/chromium/v8/tools/BUILD.gn
@@ -31,10 +31,6 @@ group("v8_android_test_runner_deps") {
if (is_android && !build_with_chromium) {
data_deps = [ "//build/android:test_runner_py" ]
- data = [
- # This is used by android.py, but not included by test_runner_py above.
- "//third_party/catapult/devil/devil/android/perf/",
- ]
}
}
--- a/src/3rdparty/chromium/weblayer/shell/BUILD.gn
+++ b/src/3rdparty/chromium/weblayer/shell/BUILD.gn
@@ -161,7 +161,6 @@ repack("support_pak") {
"$root_gen_dir/components/strings/components_locale_settings_en-US.pak",
"$root_gen_dir/components/strings/components_strings_en-US.pak",
"$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/content/dev_ui_content_resources.pak",
"$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
@@ -182,7 +181,6 @@ repack("support_pak") {
"//content:content_resources",
"//content:dev_ui_content_resources",
"//content/app/resources",
- "//content/browser/tracing:resources",
"//mojo/public/js:resources",
"//net:net_resources",
"//third_party/blink/public:resources",
--- a/src/core/qtwebengine_resources.gni
+++ b/src/core/qtwebengine_resources.gni
@@ -27,7 +27,6 @@ repack("qtwebengine_repack_resources") {
"$root_gen_dir/components/components_resources.pak",
"$root_gen_dir/components/dev_ui_components_resources.pak",
"$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
- "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
"$root_gen_dir/content/content_resources.pak",
"$root_gen_dir/content/dev_ui_content_resources.pak",
"$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
@@ -44,7 +43,6 @@ repack("qtwebengine_repack_resources") {
"//components/resources:components_resources_grit",
"//components/resources:dev_ui_components_resources_grit",
"//content/browser/resources/media:media_internals_resources",
- "//content/browser/tracing:resources",
"//content:content_resources_grit",
"//content:dev_ui_content_resources_grit",
"//mojo/public/js:resources",

View File

@ -0,0 +1,72 @@
From 82c9b1d3f4383cd8059690bd34c9d7fa86398b78 Mon Sep 17 00:00:00 2001
From: Kadir Yilmaz <kadir.c.yilmaz@gmail.com>
Date: Sat, 21 Oct 2023 22:45:03 +0200
Subject: [PATCH] Fix build tools to run with python3.11
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Upstream: N/A buildroot uses python3.11 which apparently is not yet
supported by upstream
- re error: global flags not at the start
https://docs.python.org/3/library/re.html#re-syntax
(?aiLmsux)
....
Changed in version 3.11: This construction can only be used at the
start of the expression
- ValueError: invalid mode: 'rU'
open(), io.open(), codecs.open() and fileinput.FileInput no longer
accept 'U' (“universal newline”) in the file mode. In Python 3,
“universal newline” mode is used by default whenever a file is
opened in text mode, and the 'U' flag has been deprecated since
Python 3.3. The newline parameter to these functions controls how
universal newlines work. (Contributed by Victor Stinner in bpo-37330.)
Signed-off-by: Kadir Yilmaz <kadir.c.yilmaz@gmail.com>
---
src/3rdparty/chromium/tools/grit/grit/util.py | 2 +-
src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/3rdparty/chromium/tools/grit/grit/util.py b/src/3rdparty/chromium/tools/grit/grit/util.py
index 528d766ad6b..6e8cdb0ebfa 100644
--- a/src/3rdparty/chromium/tools/grit/grit/util.py
+++ b/src/3rdparty/chromium/tools/grit/grit/util.py
@@ -211,7 +211,7 @@ def ReadFile(filename, encoding):
mode = 'rb'
encoding = None
else:
- mode = 'rU'
+ mode = 'r'
with io.open(abs(filename), mode, encoding=encoding) as f:
return f.read()
diff --git a/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py b/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py
index ec24dd57360..57decab3ccc 100644
--- a/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py
+++ b/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py
@@ -42,7 +42,7 @@ _INDEX_TYPE = models.ObjectNodeType(
_STATISTICS_TYPE = models.ObjectNodeType(
'statistics',
attributes=[
- ('export', str, r'^(?i)(|true|false)$'),
+ ('export', str, r'(?i)^(|true|false)$'),
],
children=[
models.ChildType(_QUANTILES_TYPE.tag, _QUANTILES_TYPE, multiple=False),
@@ -94,7 +94,7 @@ _EVENT_TYPE = models.ObjectNodeType(
'event',
attributes=[
('name', str, r'^[A-Za-z0-9.]+$'),
- ('singular', str, r'^(?i)(|true|false)$'),
+ ('singular', str, r'(?i)^(|true|false)$'),
],
alphabetization=[
(_OBSOLETE_TYPE.tag, _KEEP_ORDER),
--
2.25.1

View File

@ -0,0 +1,10 @@
--- a/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2022-05-13 03:17:44.000000000 +1000
+++ b/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2023-04-06 18:09:53.528885245 +1000
@@ -318,6 +318,7 @@
"-Wno-parentheses-equality",
"-Wno-tautological-compare",
"-Wno-thread-safety-attributes",
+ "-Wno-enum-constexpr-conversion"
]
}

Binary file not shown.

Binary file not shown.

159
python3.patch Normal file
View File

@ -0,0 +1,159 @@
Description: replace Python 2 with Python 3 in the build system
Author: Dmitry Shachnev <mitya57@debian.org>
Last-Update: 2022-11-25
Forwarded: not-needed
--- a/configure.pri
+++ b/configure.pri
@@ -6,23 +6,6 @@ QTWEBENGINE_SOURCE_TREE = $$PWD
equals(QMAKE_HOST.os, Windows): EXE_SUFFIX = .exe
-defineTest(isPythonVersionSupported) {
- python = $$system_quote($$system_path($$1))
- python_version = $$system('$$python -c "import sys; print(sys.version_info[0:3])"')
- python_version ~= s/[()]//g
- python_version = $$split(python_version, ',')
- python_major_version = $$first(python_version)
- greaterThan(python_major_version, 2) {
- qtLog("Python version 3 is not supported by Chromium.")
- return(false)
- }
- python_minor_version = $$member(python_version, 1)
- python_patch_version = $$member(python_version, 2)
- greaterThan(python_major_version, 1): greaterThan(python_minor_version, 6): greaterThan(python_patch_version, 4): return(true)
- qtLog("Unsupported python version: $${python_major_version}.$${python_minor_version}.$${python_patch_version}.")
- return(false)
-}
-
defineTest(qtConfTest_detectJumboBuild) {
mergeLimit = $$eval(config.input.merge_limit)
mergeLimit = $$find(mergeLimit, "\\d")
@@ -52,22 +35,18 @@ defineTest(qtConfReport_jumboBuild) {
qtConfReportPadded($${1}, $$mergeLimit)
}
-defineTest(qtConfTest_detectPython2) {
- python = $$qtConfFindInPath("python2$$EXE_SUFFIX")
+defineTest(qtConfTest_detectPython3) {
+ python = $$qtConfFindInPath("python3$$EXE_SUFFIX")
isEmpty(python) {
- qtLog("'python2$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.")
+ qtLog("'python3$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.")
python = $$qtConfFindInPath("python$$EXE_SUFFIX")
}
isEmpty(python) {
qtLog("'python$$EXE_SUFFIX' not found in PATH. Giving up.")
return(false)
}
- !isPythonVersionSupported($$python) {
- qtLog("A suitable Python 2 executable could not be located.")
- return(false)
- }
- # Make tests.python2.location available in configure.json.
+ # Make tests.python3.location available in configure.json.
$${1}.location = $$clean_path($$python)
export($${1}.location)
$${1}.cache += location
--- a/mkspecs/features/functions.prf
+++ b/mkspecs/features/functions.prf
@@ -44,11 +44,11 @@ defineReplace(which) {
# Returns the unquoted path to the python executable.
defineReplace(pythonPath) {
- isEmpty(QMAKE_PYTHON2) {
+ isEmpty(QMAKE_PYTHON3) {
# Fallback for building QtWebEngine with Qt < 5.8
- QMAKE_PYTHON2 = python
+ QMAKE_PYTHON3 = python
}
- return($$QMAKE_PYTHON2)
+ return($$QMAKE_PYTHON3)
}
# Returns the python executable for use with shell / make targets.
--- a/src/buildtools/config/support.pri
+++ b/src/buildtools/config/support.pri
@@ -21,7 +21,7 @@ defineReplace(qtwebengine_checkWebEngine
!qtwebengine_checkForGperf(QtWebEngine):return(false)
!qtwebengine_checkForBison(QtWebEngine):return(false)
!qtwebengine_checkForFlex(QtWebEngine):return(false)
- !qtwebengine_checkForPython2(QtWebEngine):return(false)
+ !qtwebengine_checkForPython3(QtWebEngine):return(false)
!qtwebengine_checkForNodejs(QtWebEngine):return(false)
!qtwebengine_checkForSanitizer(QtWebEngine):return(false)
linux:!qtwebengine_checkForPkgCfg(QtWebEngine):return(false)
@@ -51,7 +51,7 @@ defineReplace(qtwebengine_checkPdfError)
!qtwebengine_checkForGperf(QtPdf):return(false)
!qtwebengine_checkForBison(QtPdf):return(false)
!qtwebengine_checkForFlex(QtPdf):return(false)
- !qtwebengine_checkForPython2(QtPdf):return(false)
+ !qtwebengine_checkForPython3(QtPdf):return(false)
!qtwebengine_checkForSanitizer(QtPdf):return(false)
linux:!qtwebengine_checkForPkgCfg(QtPdf):return(false)
linux:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false)
@@ -143,10 +143,10 @@ defineTest(qtwebengine_checkForFlex) {
return(true)
}
-defineTest(qtwebengine_checkForPython2) {
+defineTest(qtwebengine_checkForPython3) {
module = $$1
- !qtConfig(webengine-python2) {
- qtwebengine_skipBuild("Python version 2 (2.7.5 or later) is required to build $${module}.")
+ !qtConfig(webengine-python3) {
+ qtwebengine_skipBuild("Python version 3 is required to build $${module}.")
return(false)
}
return(true)
--- a/src/buildtools/configure.json
+++ b/src/buildtools/configure.json
@@ -295,9 +295,9 @@
"label": "system ninja",
"type": "detectNinja"
},
- "webengine-python2": {
- "label": "python2",
- "type": "detectPython2",
+ "webengine-python3": {
+ "label": "python3",
+ "type": "detectPython3",
"log": "location"
},
"webengine-winversion": {
@@ -374,7 +374,7 @@
&& features.webengine-gperf
&& features.webengine-bison
&& features.webengine-flex
- && features.webengine-python2
+ && features.webengine-python3
&& features.webengine-nodejs
&& (!config.sanitizer || features.webengine-sanitizer)
&& (!config.linux || features.pkg-config)
@@ -400,7 +400,7 @@
&& features.webengine-gperf
&& features.webengine-bison
&& features.webengine-flex
- && features.webengine-python2
+ && features.webengine-python3
&& (!config.sanitizer || features.webengine-sanitizer)
&& (!config.linux || features.pkg-config)
&& (!config.linux || features.webengine-host-pkg-config)
@@ -423,12 +423,12 @@
"autoDetect": "features.private_tests",
"output": [ "privateFeature" ]
},
- "webengine-python2": {
- "label": "python2",
- "condition": "tests.webengine-python2",
+ "webengine-python3": {
+ "label": "python3",
+ "condition": "tests.webengine-python3",
"output": [
"privateFeature",
- { "type": "varAssign", "name": "QMAKE_PYTHON2", "value": "tests.webengine-python2.location" }
+ { "type": "varAssign", "name": "QMAKE_PYTHON3", "value": "tests.webengine-python3.location" }
]
},
"webengine-gperf": {

View File

@ -10,7 +10,7 @@
%global docs 0
# need libvpx >= 1.8.0 (need commit 297dfd869609d7c3c5cd5faa3ebc7b43a394434e)
%global use_system_libvpx 0
%global use_system_libvpx 1
# For screen sharing on Wayland, currently Fedora only thing - no epel
#global pipewire 1
# need libwebp >= 0.6.0
@ -52,7 +52,7 @@
Summary: Qt5 - QtWebEngine components
Name: qt5-qtwebengine
Version: 5.15.10
Release: 5
Release: 6
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
@ -75,13 +75,6 @@ Source10: macros.qt5-qtwebengine
# pulseaudio headers
Source20: pulseaudio-12.2-headers.tar.gz
## Python2 Sources
## src.rpm is Fedora spec with tests and tkinter turned off
## binary rpms have been built on epel9
Source100: python2.7-2.7.18-19.el9.1.src.rpm
Source101: python2.7-2.7.18-19.el9.1.aarch64.rpm
Source102: python2.7-2.7.18-19.el9.1.x86_64.rpm
# fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the
# ARM flags with our %%qmake_qt5 macro, including for the next patch
Patch2: qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch
@ -98,8 +91,6 @@ Patch7: chromium-hunspell-nullptr.patch
Patch8: qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch
# Fix/workaround FTBFS on aarch64 with newer glibc
Patch24: qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch
# Use Python2
Patch26: qtwebengine-everywhere-5.15.5-use-python2.patch
# FTBFS TRUE/FALSE undeclared
Patch31: qtwebengine-everywhere-src-5.15.5-TRUE.patch
Patch32: qtwebengine-skia-missing-includes.patch
@ -118,6 +109,27 @@ Patch37: Backport-ffmpeg-avcodec-x86-mathops-clip-constants-used-with-.patch
# handled by qt5-srpm-macros, which defines %%qt5_qtwebengine_arches
#ExclusiveArch: %{qt5_qtwebengine_arches}
# Disable Catapult to simplify porting to Python 3
# Also porting Python 2 to Python 3
## From: https://salsa.debian.org/qt-kde-team/qt/qtwebengine/-/blob/082c7f7e9ee899ff5ab68a166819e2f0aaa87617/debian/patches/disable-catapult.patch
Patch50: disable-catapult.patch
## From: https://salsa.debian.org/qt-kde-team/qt/qtwebengine/-/blob/0db62e47f0e2f5e4e00193b65da912fe0083088c/debian/patches/chromium-python3.patch
Patch51: python3.patch
## From: https://salsa.debian.org/qt-kde-team/qt/qtwebengine/-/blob/0db62e47f0e2f5e4e00193b65da912fe0083088c/debian/patches/python3.patch
Patch52: chromium-python3.patch
# re.error: global flags not at the start of the expression at position 1
## From: https://lore.kernel.org/buildroot/20231025205233.1925727-1-kadir.c.yilmaz@gmail.com/T/
Patch53: fix-build-tools-to-run-with-python3.11.patch
# bit-field.h:43:29: error: integer value 7 is outside the valid range of values [0, 3] for the enumeration type 'Kind'
Patch54: fix-qt5-qtwebengine-build-with-clang-17.patch
%ifarch riscv64
# riscv64 support patch from Arch Linux
Patch1000: riscv-v8.patch
Patch1001: riscv-qt5-qtwebengine.patch
Patch1002: qtwebengine-ffmpeg5.patch
%endif
BuildRequires: make
BuildRequires: qt5-qtbase-devel
BuildRequires: qt5-qtbase-private-devel
@ -205,12 +217,21 @@ BuildRequires: perl-interpreter
# Only the interpreter is needed
BuildRequires: python3
%if 0%{?use_system_libvpx}
BuildRequires: pkgconfig(vpx) >= 1.8.0
BuildRequires: libvpx libvpx-devel
%endif
BuildRequires: libtirpc
BuildRequires: libnsl2
BuildRequires: python-rpm-macros
%ifarch riscv64
# collect2: fatal error: cannot find 'ld'
BuildRequires: lld
# We don't use bundled ffmpeg
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
%endif
# extra (non-upstream) functions needed, see
# src/3rdparty/chromium/third_party/sqlite/README.chromium for details
#BuildRequires: pkgconfig(sqlite3)
@ -391,17 +412,6 @@ mv pulse src/3rdparty/chromium/
pushd src/3rdparty/chromium
popd
# Install python2 from rpms
mkdir python2
pushd python2
%ifarch aarch64
rpm2cpio %{SOURCE101} | cpio -idm
%endif
%ifarch x86_64
rpm2cpio %{SOURCE102} | cpio -idm
%endif
popd
%patch2 -p1 -b .fix-extractcflag
%if !0%{?arm_neon}
%patch3 -p1 -b .no-neon
@ -416,7 +426,6 @@ popd
## upstream patches
%patch24 -p1 -b .aarch64-new-stat
%patch26 -p1 -b .use-python2
%patch31 -p1 -b .TRUE
%patch32 -p1 -b .skia-missing-includes
%patch33 -p1 -b .aarch64-16kb-support
@ -426,6 +435,18 @@ popd
%patch36 -p1
%patch37 -p1
%patch50 -p1 -b .disable-catapult
%patch51 -p1 -b .python3
%patch52 -p1 -b .chromium-python3
%patch53 -p1 -b .fix-build-tools-to-run-with-python3.11
%patch54 -p1 -b .fix-qt5-qtwebengine-build-with-clang-17
%ifarch riscv64
%patch1000 -p1 -b .riscv-v8
%patch1001 -p1 -b .riscv-qt5-qtwebengine
%patch1002 -p1 -b .qtwebengine-ffmpeg5
%endif
# delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we
# never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS
sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \
@ -471,9 +492,6 @@ test -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h"
%build
# python2 path
export PATH=$(pwd)/python2/usr/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/python2/usr/lib64
export STRIP=strip
export NINJAFLAGS="%{__ninja_common_opts}"
@ -481,7 +499,12 @@ export NINJA_PATH=%{__ninja}
%{qmake_qt5} \
%{?debug_config:CONFIG+="%{debug_config}}" \
%ifarch riscv64
CONFIG+="link_pulseaudio" \
QMAKE_EXTRA_ARGS+="-system-webengine-ffmpeg -system-webengine-webp -system-webengine-opus" \
%else
CONFIG+="link_pulseaudio use_gold_linker" \
%endif
%{?use_system_libicu:QMAKE_EXTRA_ARGS+="-system-webengine-icu"} \
QMAKE_EXTRA_ARGS+="-webengine-kerberos" \
%{?pipewire:QMAKE_EXTRA_ARGS+="-webengine-webrtc-pipewire"} \
@ -642,6 +665,9 @@ done
%changelog
* Wed Apr 03 2024 misaka00251 <liuxin@iscas.ac.cn> - 5.15.10-6
- Migrate python 2 to python 3 & Fix build on riscv64
* Fri Mar 15 2024 panchenbo <panchenbo@kylinsec.com.cn> - 5.15.10-5
- Backport ffmpeg: avcodec/x86/mathops: clip constants used with shift instructions within inline assembly

154
qtwebengine-ffmpeg5.patch Normal file
View File

@ -0,0 +1,154 @@
Allow building qtwebengine using ffmpeg 5
Origin: ArchLinux, https://github.com/archlinux/svntogit-packages/tree/packages/qt5-webengine/trunk
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
index 2734a48..70b1877 100644
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h
@@ -29,6 +29,7 @@ extern "C" {
#include <libavformat/avformat.h>
#include <libavformat/avio.h>
#include <libavutil/avutil.h>
+#include <libavutil/channel_layout.h>
#include <libavutil/imgutils.h>
#include <libavutil/log.h>
#include <libavutil/mastering_display_metadata.h>
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
index cb81d92..bd73908 100644
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
@@ -85,7 +85,7 @@ bool AudioFileReader::OpenDemuxer() {
}
bool AudioFileReader::OpenDecoder() {
- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
if (codec) {
// MP3 decodes to S16P which we don't support, tell it to use S16 instead.
if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P)
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
index 0d825ed..72fac61 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
@@ -329,7 +329,7 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
}
}
- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
if (!codec ||
avcodec_open2(codec_context_.get(), codec, &codec_options) < 0) {
DLOG(ERROR) << "Could not initialize audio decoder: "
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc
index d34db63..427565b 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc
@@ -98,12 +98,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) {
// Next try to use the first DTS value, for codecs where we know PTS == DTS
// (excludes all H26x codecs). The start time must be returned in PTS.
- if (stream->first_dts != kNoFFmpegTimestamp &&
+ if (av_stream_get_first_dts(stream) != kNoFFmpegTimestamp &&
stream->codecpar->codec_id != AV_CODEC_ID_HEVC &&
stream->codecpar->codec_id != AV_CODEC_ID_H264 &&
stream->codecpar->codec_id != AV_CODEC_ID_MPEG4) {
const base::TimeDelta first_pts =
- ConvertFromTimeBase(stream->time_base, stream->first_dts);
+ ConvertFromTimeBase(stream->time_base, av_stream_get_first_dts(stream));
if (first_pts < start_time)
start_time = first_pts;
}
@@ -408,11 +408,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
scoped_refptr<DecoderBuffer> buffer;
if (type() == DemuxerStream::TEXT) {
- int id_size = 0;
+ size_t id_size = 0;
uint8_t* id_data = av_packet_get_side_data(
packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size);
- int settings_size = 0;
+ size_t settings_size = 0;
uint8_t* settings_data = av_packet_get_side_data(
packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size);
@@ -424,7 +424,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
buffer = DecoderBuffer::CopyFrom(packet->data, packet->size,
side_data.data(), side_data.size());
} else {
- int side_data_size = 0;
+ size_t side_data_size = 0;
uint8_t* side_data = av_packet_get_side_data(
packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
@@ -485,7 +485,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
packet->size - data_offset);
}
- int skip_samples_size = 0;
+ size_t skip_samples_size = 0;
const uint32_t* skip_samples_ptr =
reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc
index 0ef3521..8483ecc 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc
@@ -59,7 +59,6 @@ static int64_t AVIOSeekOperation(void* opaque, int64_t offset, int whence) {
}
void FFmpegGlue::InitializeFFmpeg() {
- av_register_all();
}
static void LogContainer(bool is_local_file,
@@ -95,9 +94,6 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol* protocol) {
// Enable fast, but inaccurate seeks for MP3.
format_context_->flags |= AVFMT_FLAG_FAST_SEEK;
- // Ensures we can read out various metadata bits like vp8 alpha.
- format_context_->flags |= AVFMT_FLAG_KEEP_SIDE_DATA;
-
// Ensures format parsing errors will bail out. From an audit on 11/2017, all
// instances were real failures. Solves bugs like http://crbug.com/710791.
format_context_->error_recognition |= AV_EF_EXPLODE;
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
index ef12477..7996606 100644
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
@@ -391,7 +391,7 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
if (decode_nalus_)
codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) {
ReleaseFFmpegResources();
return false;
diff --git a/src/3rdparty/chromium/media/filters/media_file_checker.cc b/src/3rdparty/chromium/media/filters/media_file_checker.cc
index 59c2a2f..1a9872c 100644
--- a/src/3rdparty/chromium/media/filters/media_file_checker.cc
+++ b/src/3rdparty/chromium/media/filters/media_file_checker.cc
@@ -68,7 +68,7 @@ bool MediaFileChecker::Start(base::TimeDelta check_time) {
auto context = AVStreamToAVCodecContext(format_context->streams[i]);
if (!context)
continue;
- AVCodec* codec = avcodec_find_decoder(cp->codec_id);
+ const AVCodec* codec = avcodec_find_decoder(cp->codec_id);
if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) {
auto loop = std::make_unique<FFmpegDecodingLoop>(context.get());
stream_contexts[i] = {std::move(context), std::move(loop)};
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
index 9002b87..d12fade 100644
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
@@ -203,7 +203,7 @@ int32_t H264DecoderImpl::InitDecode(const VideoCodec* codec_settings,
// a pointer |this|.
av_context_->opaque = this;
- AVCodec* codec = avcodec_find_decoder(av_context_->codec_id);
+ const AVCodec* codec = avcodec_find_decoder(av_context_->codec_id);
if (!codec) {
// This is an indication that FFmpeg has not been initialized or it has not
// been compiled/initialized with the correct set of codecs.

2999
riscv-qt5-qtwebengine.patch Normal file

File diff suppressed because it is too large Load Diff

33254
riscv-v8.patch Normal file

File diff suppressed because it is too large Load Diff