Bug 2264307 - Review Request: mingw-qt6-qtscxml - SCXML and StateMachine QT6 modules
Summary: Review Request: mingw-qt6-qtscxml - SCXML and StateMachine QT6 modules
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Sandro Mani
QA Contact: Fedora Extras Quality Assurance
URL: http://qt.io/
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-02-14 22:52 UTC by Nikos Mavrogiannopoulos
Modified: 2024-02-16 13:10 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2024-02-16 10:50:07 UTC
Type: ---
Embargoed:
manisandro: fedora-review+


Attachments (Terms of Use)

Description Nikos Mavrogiannopoulos 2024-02-14 22:52:27 UTC
Spec URL: https://github.com/nmav/mingw-qt6-qtscxml/blob/main/mingw-qt6-qtscxml.spec
SRPM URL: https://kojipkgs.fedoraproject.org//work/tasks/5520/113535520/mingw-qt6-qtscxml-6.6.0-1.fc39.src.rpm
Description: Qt6 for Windows - QtScxml component
Fedora Account System Username: nmav

Comment 1 Fedora Review Service 2024-02-14 22:54:49 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/7018224
(failed)

Build log:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2264307-mingw-qt6-qtscxml/fedora-rawhide-x86_64/07018224-mingw-qt6-qtscxml/builder-live.log.gz

Please make sure the package builds successfully at least for Fedora Rawhide.

- If the build failed for unrelated reasons (e.g. temporary network
  unavailability), please ignore it.
- If the build failed because of missing BuildRequires, please make sure they
  are listed in the "Depends On" field


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 2 Sandro Mani 2024-02-15 12:24:55 UTC
- Please add these to %files for correct dir ownership:
%dir %{mingw32_libdir}/qt6/plugins/scxmldatamodel
%dir %{mingw64_libdir}/qt6/plugins/scxmldatamodel

- You can drop the version constraint for mingw-filesystem, it's been dropped from the guidelines.
- You should version-constrain the qt6-qtscxml-devel BR version to %{version}
- Please update to version 6.6.1 as the rest of the mingw-qt6 stack. (The native 6.6.2 is actually building now, but the mingw-qt6 stack will be updated in one go when the native packages are ready).

Comment 3 Nikos Mavrogiannopoulos 2024-02-15 13:37:40 UTC
Thanks, I've updated the spec. What I noticed is that it fails on koji (locally it builds with mockbuild or local) with errors like
/builddir/build/BUILD/qtscxml-everywhere-src-6.6.1/src/scxml/qscxmlerror.cpp
In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qmetatype.h:14,
                 from /builddir/build/BUILD/qtscxml-everywhere-src-6.6.1/src/scxml/qscxmlerror.h:9,
                 from /builddir/build/BUILD/qtscxml-everywhere-src-6.6.1/src/scxml/qscxmlerror.cpp:4:
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h: In member function 'constexpr qfloat16::operator NativeType() const':
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h:84:52: error: SSE register return with SSE2 disabled
   84 |     constexpr operator NativeType() const noexcept { return nf; }
      |                                                    ^
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h: In function 'qfloat16 operator+(qfloat16, qfloat16)':
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h:144:147: error: operation not permitted on type '_Float16' without option '-msse2'
  144 |     friend inline qfloat16 operator+(qfloat16 a, qfloat16 b) noexcept { return qfloat16(static_cast<NearestFloat>(a) + static_cast<NearestFloat>(b)); }
      |                                                                                                                                                   ^
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h: In function 'qfloat16 operator-(qfloat16, qfloat16)':
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h:145:147: error: operation not permitted on type '_Float16' without option '-msse2'
  145 |     friend inline qfloat16 operator-(qfloat16 a, qfloat16 b) noexcept { return qfloat16(static_cast<NearestFloat>(a) - static_cast<NearestFloat>(b)); }
      |                                                                                                                                                   ^
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h: In function 'qfloat16 operator*(qfloat16, qfloat16)':
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h:146:147: error: operation not permitted on type '_Float16' without option '-msse2'
  146 |     friend inline qfloat16 operator*(qfloat16 a, qfloat16 b) noexcept { return qfloat16(static_cast<NearestFloat>(a) * static_cast<NearestFloat>(b)); }
      |                                                                                                                                                   ^
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h: In function 'qfloat16 operator/(qfloat16, qfloat16)':
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h:147:147: error: operation not permitted on type '_Float16' without option '-msse2'
  147 |     friend inline qfloat16 operator/(qfloat16 a, qfloat16 b) noexcept { return qfloat16(static_cast<NearestFloat>(a) / static_cast<NearestFloat>(b)); }
      |                                                                                                                                                   ^
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h: In function 'size_t qHash(qfloat16, size_t)':
/usr/i686-w64-mingw32/sys-root/mingw/include/qt6/QtCore/qfloat16.h:150:29: error: invalid conversion from type '_Float16' without option '-msse2'
  150 |     { return qHash(float(key), seed); } // 6.4 algorithm, so keep using it; ### Qt 7: fix QTBUG-116077


I'd have expected -msse2 to be in the build flags.
Have you ever encountered such errors?

[0]. https://kojipkgs.fedoraproject.org//work/tasks/984/113540984/build.log

Comment 4 Sandro Mani 2024-02-15 13:49:39 UTC
-msse2 is currently not in the build flags, though it is a fair question whether that should change.

For mingw-qt6-qtmultimedia I wrote before %mingw_cmake 

export MINGW32_CFLAGS="%{mingw32_cflags} -msse2"
export MINGW64_CFLAGS="%{mingw64_cflags} -msse2"

Comment 5 Nikos Mavrogiannopoulos 2024-02-15 15:00:23 UTC
Thanks.

Everything seems fine on the latest build:
https://koji.fedoraproject.org/koji/taskinfo?taskID=113543481

If you have no more comments, I can bring it in once you approve.

Comment 6 Sandro Mani 2024-02-15 15:07:09 UTC
Please only list as %dir the dirs which are not already provided by mingw-filesystem or a package which is a dependency of this one (say mingwXX-qt6-qtbase). So i.e.

%dir %{mingwXX_libdir}/cmake

is not needed, and neither

%dir %{mingwXX_libdir}/qt6/bin

and others. I believe only %dir %{mingwXX_libdir}/qt6/plugins/scxmldatamodel is actually needed

Comment 7 Nikos Mavrogiannopoulos 2024-02-16 04:21:33 UTC
Updated. Latest build at: https://koji.fedoraproject.org/koji/taskinfo?taskID=113571975

Comment 8 Sandro Mani 2024-02-16 09:39:12 UTC
Only remaining comment:

%dir %{mingw32_includedir}/qt6/QtScxml/
%dir %{mingw32_includedir}/qt6/QtStateMachine/
%dir %{mingw32_includedir}/qt6/QtScxmlQml/
%dir %{mingw32_includedir}/qt6/QtStateMachineQml/
%{mingw32_includedir}/qt6/QtScxml/
%{mingw32_includedir}/qt6/QtStateMachine/
%{mingw32_includedir}/qt6/QtScxmlQml/
%{mingw32_includedir}/qt6/QtStateMachineQml/

this is reduntant, as

%{mingw32_includedir}/qt6/QtScxml/
%{mingw32_includedir}/qt6/QtStateMachine/
%{mingw32_includedir}/qt6/QtScxmlQml/
%{mingw32_includedir}/qt6/QtStateMachineQml/

own both the directory and the containing files. The problem is that if you write i.e.

%{mingw32_libdir}/qt6/plugins/scxmldatamodel/qscxmlecmascriptdatamodel.dll

then %{mingw32_libdir}/qt6/plugins/scxmldatamodel/ is unowned. But i.e. writing

%{mingw32_libdir}/qt6/plugins/scxmldatamodel/

would own both the folder and the entire tree of contained folders/files.

Please fix this before importing. Rest looks good, approved.

Comment 9 Nikos Mavrogiannopoulos 2024-02-16 10:31:02 UTC
+1

Comment 10 Fedora Admin user for bugzilla script actions 2024-02-16 10:34:06 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/mingw-qt6-qtscxml

Comment 11 Nikos Mavrogiannopoulos 2024-02-16 13:10:54 UTC
I'd appreciate an upvote on f39 so it gets included relatively soon: https://bodhi.fedoraproject.org/updates/FEDORA-2024-77df63ecc9


Note You need to log in before you can comment on or make changes to this bug.