diff --git a/qt-QTBUG-111935-fix-V4-jit.patch b/qt-QTBUG-111935-fix-V4-jit.patch new file mode 100644 index 0000000..96ad2c1 --- /dev/null +++ b/qt-QTBUG-111935-fix-V4-jit.patch @@ -0,0 +1,44 @@ +From e2bdde18d9758efdc6a0d7d106aad56995df1271 Mon Sep 17 00:00:00 2001 +From: Ulf Hermann +Date: Wed, 15 Mar 2023 08:59:43 +0100 +Subject: [PATCH] JIT: Add missing {STORE|LOAD}_ACC() to CreateCallContext + +We cannot assume anything about the accumulator register after calling +PushCallContext::call(). Also add a note about not needing to re-load +the accumulator on ThrowException. + +Pick-to: 6.5 6.2 5.15 +Fixes: QTBUG-111935 +Change-Id: I7196585e1d2697c215f4fe87d8d7ac9b98b622a3 +--- + src/qml/jit/qv4baselinejit.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp +index 14e183adb8..1d65169dce 100644 +--- a/src/qml/jit/qv4baselinejit.cpp ++++ b/src/qml/jit/qv4baselinejit.cpp +@@ -506,6 +506,8 @@ void BaselineJIT::generate_ThrowException() + as->passEngineAsArg(0); + BASELINEJIT_GENERATE_RUNTIME_CALL(ThrowException, CallResultDestination::Ignore); + as->gotoCatchException(); ++ ++ // LOAD_ACC(); <- not needed here since it would be unreachable. + } + + void BaselineJIT::generate_GetException() { as->getException(); } +@@ -513,9 +515,11 @@ void BaselineJIT::generate_SetException() { as->setException(); } + + void BaselineJIT::generate_CreateCallContext() + { ++ STORE_ACC(); + as->prepareCallWithArgCount(1); + as->passCppFrameAsArg(0); + BASELINEJIT_GENERATE_RUNTIME_CALL(PushCallContext, CallResultDestination::Ignore); ++ LOAD_ACC(); + } + + void BaselineJIT::generate_PushCatchContext(int index, int name) { as->pushCatchContext(index, name); } +-- +2.39.2 + diff --git a/qt6-qtdeclarative.spec b/qt6-qtdeclarative.spec new file mode 100644 index 0000000..7a41108 --- /dev/null +++ b/qt6-qtdeclarative.spec @@ -0,0 +1,323 @@ + +%global qt_module qtdeclarative + +%define _lto_cflags %{nil} + +# definition borrowed from qtbase +%global multilib_archs x86_64 %{ix86} %{?mips} ppc64 ppc s390x s390 sparc64 sparcv9 riscv64 + +%global examples 1 +%global majmin 6.5 + +Summary: Qt6 - QtDeclarative component +Name: qt6-%{qt_module} +Version: 6.5.0 +Release: 1 + +License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +Url: http://www.qt.io + +Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submodules/%{qt_module}-everywhere-src-%{version}.tar.xz + +# header file to workaround multilib issue +# https://bugzilla.redhat.com/show_bug.cgi?id=1441343 +Source5: qv4global_p-multilib.h + +## upstream patches +### From: https://codereview.qt-project.org/c/qt/qtdeclarative/+/466808 +### Cf. https://bugzilla.redhat.com/show_bug.cgi?id=2177696 +Patch0: qt-QTBUG-111935-fix-V4-jit.patch + +## upstreamable patches + +# filter qml provides +%global __provides_exclude_from ^%{_qt6_archdatadir}/qml/.*\\.so$ + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: ninja-build +BuildRequires: qt6-rpm-macros +BuildRequires: qt6-qtbase-devel >= %{version} qt6-qtbase-mysql qt6-qtbase-odbc qt6-qtbase-postgresql +BuildRequires: qt6-qtbase-private-devel +BuildRequires: qt6-qtshadertools-devel >= %{version} +%{?_qt6:Requires: %{_qt6}%{?_isa} = %{_qt6_version}} +BuildRequires: python%{python3_pkgversion} +BuildRequires: pkgconfig(xkbcommon) >= 0.4.1 + +%if 0%{?tests} +BuildRequires: dbus-x11 +BuildRequires: mesa-dri-drivers +BuildRequires: time +BuildRequires: xorg-x11-server-Xvfb +%endif + +Obsoletes: qt6-qtquickcontrols2 < 6.2.0~beta3-1 +Provides: qt6-qtquickcontrols2 = %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Provides: %{name}-private-devel = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel%{?_isa} +Obsoletes: qt6-qtquickcontrols2-devel < 6.2.0~beta3-1 +Provides: qt6-qtquickcontrols2-devel = %{version}-%{release} +%description devel +%{summary}. + +%package static +Summary: Static library files for %{name} +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +%description static +%{summary}. + +%if 0%{?examples} +%package examples +Summary: Programming examples for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Obsoletes: qt6-qtquickcontrols2-examples < 6.2.0~beta3-1 +Provides: qt6-qtquickcontrols2-examples = %{version}-%{release} +# BuildRequires: qt6-qtdeclarative-devel >= %{version} +%description examples +%{summary}. +%endif + +%prep +%autosetup -n %{qt_module}-everywhere-src-%{version} -p1 + + +%build + +# HACK so calls to "python" get what we want +ln -s %{__python3} python +export PATH=`pwd`:$PATH + +%cmake_qt6 -DQT_BUILD_EXAMPLES:BOOL=%{?examples:ON}%{!?examples:OFF} + +cmake --build . %{?_smp_mflags} --verbose + +%install +DESTDIR="%{buildroot}" cmake --install . + +%ifarch %{multilib_archs} +# multilib: qv4global_p.h + mv %{buildroot}%{_qt6_headerdir}/QtQml/%{version}/QtQml/private/qv4global_p.h \ + %{buildroot}%{_qt6_headerdir}/QtQml/%{version}/QtQml/private/qv4global_p-%{__isa_bits}.h + install -p -m644 -D %{SOURCE5} %{buildroot}%{_qt6_headerdir}/QtQml/%{version}/QtQml/private/qv4global_p.h +%endif + +# hardlink files to %{_bindir}, add -qt6 postfix to not conflict +mkdir %{buildroot}%{_bindir} +pushd %{buildroot}%{_qt6_bindir} +for i in * ; do + case "${i}" in + qmlcachegen|qmlleasing|qmlformat|qmleasing|qmlimportscanner|qmllint| \ + qmlpreview|qmlscene|qmltestrunner|qmltyperegistrar|qmlplugindump| \ + qmlprofiler|qml|qmlbundle|qmlmin|qmltime) + ln -v ${i} %{buildroot}%{_bindir}/${i}-qt6 + ;; + *) + ln -v ${i} %{buildroot}%{_bindir}/${i} + ;; + esac +done +popd + +## .prl/.la file love +# nuke .prl reference(s) to %%buildroot, excessive (.la-like) libs +pushd %{buildroot}%{_qt6_libdir} +for prl_file in libQt6*.prl ; do + sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" ${prl_file} + rm -fv "$(basename ${prl_file} .prl).la" + sed -i -e "/^QMAKE_PRL_LIBS/d" ${prl_file} +done +popd + +# FIXME: where does it come from? +rm -rf %{buildroot}%{_qt6_libdir}/objects-RelWithDebInfo/QmlCompilerPrivate_resources_1/.rcc/qrc_builtins.cpp.o + +%check +%if 0%{?tests} +export CTEST_OUTPUT_ON_FAILURE=1 +export PATH=%{buildroot}%{_qt6_bindir}:$PATH +export LD_LIBRARY_PATH=%{buildroot}%{_qt6_libdir} +make sub-tests-all %{?_smp_mflags} +xvfb-run -a \ +dbus-launch --exit-with-session \ +time \ +make check -k -C tests ||: +%endif + + +%ldconfig_scriptlets + +%files +%license LICENSES/LGPL* +%{_qt6_libdir}/libQt6LabsAnimation.so.6* +%{_qt6_libdir}/libQt6LabsFolderListModel.so.6* +%{_qt6_libdir}/libQt6LabsQmlModels.so.6* +%{_qt6_libdir}/libQt6LabsSettings.so.6* +%{_qt6_libdir}/libQt6LabsSharedImage.so.6* +%{_qt6_libdir}/libQt6LabsWavefrontMesh.so.6* +%{_qt6_libdir}/libQt6QmlLocalStorage.so.6* +%{_qt6_libdir}/libQt6Qml.so.6* +%{_qt6_libdir}/libQt6QmlCompiler.so.* +%{_qt6_libdir}/libQt6QmlCore.so.6* +%{_qt6_libdir}/libQt6QmlModels.so.6* +%{_qt6_libdir}/libQt6QmlWorkerScript.so.6* +%{_qt6_libdir}/libQt6Quick.so.6* +%{_qt6_libdir}/libQt6QuickControls2.so.6* +%{_qt6_libdir}/libQt6QuickControls2Impl.so.6* +%{_qt6_libdir}/libQt6QuickDialogs2.so.6* +%{_qt6_libdir}/libQt6QuickDialogs2QuickImpl.so.6* +%{_qt6_libdir}/libQt6QuickDialogs2Utils.so.6* +%{_qt6_libdir}/libQt6QuickEffects.so.6* +%{_qt6_libdir}/libQt6QuickLayouts.so.6* +%{_qt6_libdir}/libQt6QuickWidgets.so.6* +%{_qt6_libdir}/libQt6QuickParticles.so.6* +%{_qt6_libdir}/libQt6QuickShapes.so.6* +%{_qt6_libdir}/libQt6QuickTest.so.6* +%{_qt6_libdir}/libQt6QuickTemplates2.so.6* +%{_qt6_libdir}/libQt6QmlXmlListModel.so.6* +%{_qt6_plugindir}/qmltooling/ +%{_qt6_plugindir}/qmllint/ +%{_qt6_archdatadir}/qml/ + +%files devel +%dir %{_qt6_libdir}/cmake/Qt6PacketProtocolPrivate +%dir %{_qt6_libdir}/cmake/Qt6Qml +%dir %{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins +%dir %{_qt6_libdir}/cmake/Qt6QmlCompilerPrivate +%dir %{_qt6_libdir}/cmake/Qt6QmlCore +%dir %{_qt6_libdir}/cmake/Qt6QmlDebugPrivate +%dir %{_qt6_libdir}/cmake/Qt6QmlIntegration +%dir %{_qt6_libdir}/cmake/Qt6QmlImportScanner +%dir %{_qt6_libdir}/cmake/Qt6LabsAnimation +%dir %{_qt6_libdir}/cmake/Qt6LabsFolderListModel +%dir %{_qt6_libdir}/cmake/Qt6LabsQmlModels +%dir %{_qt6_libdir}/cmake/Qt6LabsSettings +%dir %{_qt6_libdir}/cmake/Qt6LabsSharedImage +%dir %{_qt6_libdir}/cmake/Qt6LabsWavefrontMesh +%dir %{_qt6_libdir}/cmake/Qt6QmlDomPrivate +%dir %{_qt6_libdir}/cmake/Qt6QmlLocalStorage +%dir %{_qt6_libdir}/cmake/Qt6QmlModels +%dir %{_qt6_libdir}/cmake/Qt6QmlTools +%dir %{_qt6_libdir}/cmake/Qt6QmlWorkerScript +%dir %{_qt6_libdir}/cmake/Qt6QmlTypeRegistrarPrivate +%dir %{_qt6_libdir}/cmake/Qt6QuickEffectsPrivate +%dir %{_qt6_libdir}/cmake/Qt6Quick +%dir %{_qt6_libdir}/cmake/Qt6QuickControls2 +%dir %{_qt6_libdir}/cmake/Qt6QuickControls2Impl +%dir %{_qt6_libdir}/cmake/Qt6QuickControlsTestUtilsPrivate +%dir %{_qt6_libdir}/cmake/Qt6QuickDialogs2 +%dir %{_qt6_libdir}/cmake/Qt6QuickDialogs2QuickImpl +%dir %{_qt6_libdir}/cmake/Qt6QuickDialogs2Utils +%dir %{_qt6_libdir}/cmake/Qt6QuickLayouts +%dir %{_qt6_libdir}/cmake/Qt6QuickParticlesPrivate +%dir %{_qt6_libdir}/cmake/Qt6QuickShapesPrivate +%dir %{_qt6_libdir}/cmake/Qt6QuickTest +%dir %{_qt6_libdir}/cmake/Qt6QuickTestUtilsPrivate +%dir %{_qt6_libdir}/cmake/Qt6QuickTemplates2 +%dir %{_qt6_libdir}/cmake/Qt6QmlXmlListModel +%{_bindir}/qml* +%{_qt6_bindir}/qml* +%{_qt6_libexecdir}/qmlcachegen +%{_qt6_libexecdir}/qmlimportscanner +%{_qt6_libexecdir}/qmltyperegistrar +%{_qt6_headerdir}/Qt*/ +%{_qt6_libdir}/libQt6LabsAnimation.so +%{_qt6_libdir}/libQt6LabsFolderListModel.so +%{_qt6_libdir}/libQt6LabsQmlModels.so +%{_qt6_libdir}/libQt6LabsSettings.so +%{_qt6_libdir}/libQt6LabsSharedImage.so +%{_qt6_libdir}/libQt6LabsWavefrontMesh.so +%{_qt6_libdir}/libQt6QmlLocalStorage.so +%{_qt6_libdir}/libQt6Qml.so +%{_qt6_libdir}/libQt6QmlCompiler.so +%{_qt6_libdir}/libQt6QmlCore.so +%{_qt6_libdir}/libQt6QmlModels.so +%{_qt6_libdir}/libQt6QmlWorkerScript.so +%{_qt6_libdir}/libQt6Quick*.so +%{_qt6_libdir}/libQt6QmlXmlListModel.so +%{_qt6_libdir}/qt6/metatypes/qt6*_metatypes.json +%{_qt6_archdatadir}/mkspecs/modules/*.pri +%{_qt6_archdatadir}/mkspecs/features/*.prf +%{_qt6_libdir}/cmake/Qt6BuildInternals/StandaloneTests/QtDeclarativeTestsConfig.cmake +%{_qt6_libdir}/cmake/Qt6PacketProtocolPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6Qml/*.cmake* +%{_qt6_libdir}/cmake/Qt6Qml/*.cpp.in +%{_qt6_libdir}/cmake/Qt6Qml/*.qrc.in +%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlCompilerPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlCore/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlDebugPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlIntegration/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlImportScanner/*.cmake +%{_qt6_libdir}/cmake/Qt6LabsAnimation/*.cmake +%{_qt6_libdir}/cmake/Qt6LabsFolderListModel/*.cmake +%{_qt6_libdir}/cmake/Qt6LabsQmlModels/*.cmake +%{_qt6_libdir}/cmake/Qt6LabsSettings/*.cmake +%{_qt6_libdir}/cmake/Qt6LabsSharedImage/*.cmake +%{_qt6_libdir}/cmake/Qt6LabsWavefrontMesh/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlDomPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlLocalStorage/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlModels/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlTools/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlWorkerScript/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlTypeRegistrarPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickEffectsPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6Quick/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickControls2/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickControls2Impl/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickControlsTestUtilsPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickDialogs2/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickDialogs2QuickImpl/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickDialogs2Utils/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickLayouts/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickParticlesPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickShapesPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickTest/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickTestUtilsPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickTemplates2/*.cmake +%{_qt6_libdir}/cmake/Qt6QmlXmlListModel/*.cmake +%{_qt6_libdir}/cmake/Qt6QuickWidgets/*.cmake +%{_qt6_libdir}/qt6/modules/*.json +%{_qt6_libdir}/pkgconfig/*.pc + +%files static +%{_qt6_libdir}/libQt6LabsAnimation.prl +%{_qt6_libdir}/libQt6LabsFolderListModel.prl +%{_qt6_libdir}/libQt6LabsQmlModels.prl +%{_qt6_libdir}/libQt6LabsSettings.prl +%{_qt6_libdir}/libQt6LabsSharedImage.prl +%{_qt6_libdir}/libQt6LabsWavefrontMesh.prl +%{_qt6_libdir}/libQt6QmlCore.prl +%{_qt6_libdir}/libQt6QmlDom.a +%{_qt6_libdir}/libQt6QmlDom.prl +%{_qt6_libdir}/libQt6QmlLocalStorage.prl +%{_qt6_libdir}/libQt6Quick*.prl +%{_qt6_libdir}/libQt6QmlWorkerScript.prl +%{_qt6_libdir}/libQt6QmlModels.prl +%{_qt6_libdir}/libQt6Qml.prl +%{_qt6_libdir}/libQt6QmlCompiler.prl +%{_qt6_libdir}/libQt6QmlTypeRegistrar.prl +%{_qt6_libdir}/libQt6QmlTypeRegistrar.a +%{_qt6_libdir}/libQt6PacketProtocol.a +%{_qt6_libdir}/libQt6PacketProtocol.prl +%{_qt6_libdir}/libQt6QuickControlsTestUtils.a +%{_qt6_libdir}/libQt6QuickTestUtils.a +%{_qt6_libdir}/libQt6QmlDebug.a +%{_qt6_libdir}/libQt6QmlDebug.prl +%{_qt6_libdir}/libQt6QmlXmlListModel.prl + +%if 0%{?examples} +%files examples +%{_qt6_examplesdir}/ +%endif + +%changelog +* Thu May 18 2023 peijiankang - 6.5.0-1 +- Init Package for openEuler + diff --git a/qt6-qtdeclarative.yaml b/qt6-qtdeclarative.yaml new file mode 100644 index 0000000..fa5daac --- /dev/null +++ b/qt6-qtdeclarative.yaml @@ -0,0 +1,4 @@ +version_control: git +src_repo: https://code.qt.io/qt/qtdeclarative.git +tag_prefix: "^" +separator: "." diff --git a/qtdeclarative-everywhere-src-6.5.0.tar.xz b/qtdeclarative-everywhere-src-6.5.0.tar.xz new file mode 100644 index 0000000..7eacb77 Binary files /dev/null and b/qtdeclarative-everywhere-src-6.5.0.tar.xz differ diff --git a/qv4global_p-multilib.h b/qv4global_p-multilib.h new file mode 100644 index 0000000..09d61d6 --- /dev/null +++ b/qv4global_p-multilib.h @@ -0,0 +1,23 @@ +/* qvglobal_p.h */ +/* This file is here to prevent a file conflict on multiarch systems. A + * conflict will occur because qconfig.h has arch-specific definitions. + * + * DO NOT INCLUDE THE NEW FILE DIRECTLY -- ALWAYS INCLUDE THIS ONE INSTEAD. */ + +#ifndef MULTILIB_QV4GLOBAL_H +#define MULTILIB_QV4GLOBAL_H + +#ifndef __WORDSIZE +#include +#endif + +#if __WORDSIZE == 32 +#include +#elif __WORDSIZE == 64 +#include +#else +#error "unexpected value for __WORDSIZE macro" +#endif + +#endif +