Opened 3 years ago

Closed 2 years ago

#62982 closed request (fixed)

qt6: add port(s) for new Qt version 6

Reported by: JDLH (Jim DeLaHunt) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.7.1
Keywords: Cc: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), jhoyt4, dlamija (Muhammed Ramiza), ra1nb0w, reneeotten (Renee Otten)
Port: qt6 qt5 qt4

Description

MacPorts has several ports qt5* and qt4*, for the version 5.x and 4.x of the Qt application development tool kit. The Qt upstream developers have released versions 6.2 and 6.1 of Qt. I would like to be able to use Qt version 6 for some apps which depend on it, for example freeciv. Thus I would appreciate a set of qt6* ports which parallel the existing qt5* and qt4* ports.

Supporting information:

Given the large number of subports in port info qt5, I am guessing that making a Qt6 port might be quite a bit of work. I don't know to what extent it is similar enough to Qt5 that one can save effort by reusing parts of the Qt5 port.

Sorry if this ticket is redundant. I don't see any "qt6" tickets when I search this Trac.

Change History (9)

comment:1 Changed 3 years ago by jhoyt4

Cc: jhoyt4 added

comment:2 Changed 3 years ago by dlamija (Muhammed Ramiza)

Cc: dlamija added

comment:3 Changed 3 years ago by ra1nb0w

Cc: ra1nb0w added

comment:4 Changed 3 years ago by jhoyt4

I started putting together a PR for qt6. Happy to get another set of eyes on the Portfile. Honestly, any and all help is welcome.

Here's the PR - https://github.com/macports/macports-ports/pull/12676

Warning - this is currently untested, but compiles on macOS 11.6 intel.

I'll certainly test more on intel and arm64 when I have a bit more time.

comment:5 Changed 2 years ago by jhoyt4

I'm not sure why this ticket didn't close - but qt6 was committed into master a couple days ago.

Admittedly, it is incomplete as I struggled to get QtQuick (which you get from qt-declarative + qtshadertools) to thread through the compile process. My best guess is this is an rpath issue as QtQuick compiled find, just couldn't be realized in the other modules (qtcharts, qtmultimedia, qtscxml, etc).

Last edited 2 years ago by jhoyt4 (previous) (diff)

comment:6 Changed 2 years ago by reneeotten (Renee Otten)

@jhoyt4 does qt6-qtbase build consistently for you? For me it pretty much fails all the time with ninja: fatal: pipe: Too many open files. For me that is resolved when adding use_parallel_builds no but then of course building takes quite a while... I am not trying with build.cmd "ninja" removed to see if that helps.

I still think we can build the qtbase subport with CMake as well and don't necessarily need to use their configure script, which will just translate that to a CMake command anyway. If we can use the cmake PG that might simplify settings for compiler options/flags, deployment_targets, and all of that stuff. Before I try though, have you attempted that or did you stick with what was initially in the qt5 Portfile?

I think there are a few changes needed, I've added them to my fork in case you're interested. I'll give you a chance to take a look but they are pretty obvious I think and should be uncontroversial.

comment:7 Changed 2 years ago by reneeotten (Renee Otten)

Cc: reneeotten added

comment:8 Changed 2 years ago by jhoyt4

@reneeotten I had no issues compiling qt6-base with two machines (one intel, one arm/M1) both were running Big Sur.

I went the ninja route because of notes on qt's site heavily suggesting using ninja. Cmake is certainly an option, but I had some issues correctly translating (and locating...) all of the configure flags and found using the configure script to be easier to troubleshoot.

In regards to the subports - cmake is also a viable option, I started there but then read some qt release notes heavily suggesting using qt-configure_module.

I just looked at your fork and all of the changes look very reasonable (wish I caught several myself :) )

Last edited 2 years ago by jhoyt4 (previous) (diff)

comment:9 Changed 2 years ago by jmroot (Joshua Root)

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.