Opened 3 years ago

Closed 2 years ago

Last modified 2 years ago

#62220 closed defect (fixed)

KeePassXC @2.6.4: no member named 'MacOSBigSur' in 'QOperatingSystemVersion'

Reported by: thetrial (alabay) Owned by: tenzap
Priority: Normal Milestone:
Component: ports Version: 2.6.4
Keywords: elcapitan Cc: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez), cjones051073 (Chris Jones), mascguy (Christopher Nielsen)
Port: KeePassXC

Description

KeePassXC 2.6.2 and 2.6.3 built flawless, but with 2.6.4 I ran into this issue:

:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_security_KeePassXC/KeePassXC/work/keepassxc-2.6.4-src/src/gui/styles/base/BaseStyle.cpp:295:84: error: no member named 'MacOSBigSur' in 'QOperatingSystemVersion'
:info:build                 if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSBigSur) {
:info:build                                                           ~~~~~~~~~~~~~~~~~~~~~~~~~^
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_security_KeePassXC/KeePassXC/work/keepassxc-2.6.4-src/src/gui/styles/base/BaseStyle.cpp:302:84: error: no member named 'MacOSBigSur' in 'QOperatingSystemVersion'
:info:build                 if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSBigSur) {
:info:build                                                           ~~~~~~~~~~~~~~~~~~~~~~~~~^
:info:build 2 errors generated.
:info:build make[2]: *** [src/CMakeFiles/keepassx_core.dir/gui/styles/base/BaseStyle.cpp.o] Error 1
:info:build make[2]: *** Waiting for unfinished jobs....
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_security_KeePassXC/KeePassXC/work/build'
:info:build make[1]: *** [src/CMakeFiles/keepassx_core.dir/all] Error 2
:info:build make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_security_KeePassXC/KeePassXC/work/build'
:info:build make: *** [all] Error 2

Change History (25)

comment:1 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)

As you've discovered, KeePassXC 2.6.4 now requires a version of Qt that can identify macOS Big Sur. According to this Qt commit this has been backported to Qt 5.12 and 5.15. Being on OS X El Capitan, the latest version of Qt you can use is 5.11.

comment:2 Changed 3 years ago by thetrial (alabay)

Again a Qt thing. That means: Either this capability is backported into older Qt versions for El Capitan (and maybe older OSs) – or KeePassXC is out of the race for El Capitan, which I would quite regret. Then KeePass’ portfile should be adapted to drop El Capitan.

What, do you think, is practicable? Or is this (together with other Qt related things, e.g. owncloud-client) a general Qt issue? I would not know how to describe that as a ticket).

comment:3 Changed 3 years ago by thetrial (alabay)

Comment to my question under your mentioned Qt commit:

No upstream-supported version of Qt supports El Capitan (Qt 5.12 supports macOS 10.12 and up), but back-porting this to non-supported Qt versions (in macports, if that's what you're referring to), shouldn't be too hard.

Does anyone know how to realize that?

comment:4 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: MarcusCalhoun-Lopez added

I'll Cc Marcus for input since he maintains the Qt ports.

Option seems to be:

  1. patch Qt 5.11 (and earlier?) source code to add this constant and maybe other related aspects of that upstream Qt commit,
  2. patch KeePassXC so that it does not rely on this aspect of Qt 5.12+,
  3. change the KeePassXC portfile so that version 2.6.3 is used on OS X 10.11 and earlier, or
  4. change the KeePassXC portfile to prevent installation on OS X 10.11 and earlier (by indicating a requirement for Qt 5.12+)
Last edited 3 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:5 Changed 3 years ago by macportsraf

I'm getting this error on 10.14.

comment:6 Changed 3 years ago by thetrial (alabay)

Any solution in sight? After a complete reinstall of Macports I don’t get any KeePassXC anymore. I have to pull the binary from my backup, detached from MacPorts.

comment:7 Changed 3 years ago by thetrial (alabay)

Is this abandoned here?

comment:8 Changed 3 years ago by thetrial (alabay)

A solution will be highly appreciated.

comment:9 in reply to:  4 Changed 3 years ago by Wowfunhappy (Jonathan)

Replying to ryandesign:

Option seems to be:

  1. patch Qt 5.11 (and earlier?) source code to add this constant and maybe other related aspects of that upstream Qt commit,
  2. patch KeePassXC so that it does not rely on this aspect of Qt 5.12+,
  3. change the KeePassXC portfile so that version 2.6.3 is used on OS X 10.11 and earlier, or
  4. change the KeePassXC portfile to prevent installation on OS X 10.11 and earlier (by indicating a requirement for Qt 5.12+)

Or, backport QT 5.12 to OS X 10.11. I did this for QT 5.9 on Mavericks, and it was actually _way_ easier than I expected it to be! I have a patch here https://trac.macports.org/ticket/62964; it won't help with this ticket directly, but it demonstrates feasibility (and I do want to try with later versions when I have a free weekend).

comment:10 Changed 3 years ago by thetrial (alabay)

This would be great! Is it possible to backport Qt 5.13 or higher to OSX 10.11? This would also open new aspects to #61772 (see comment 3 there).

comment:11 Changed 3 years ago by thetrial (alabay)

Version of KPxc is 2.6.6 now … but the error is still the same. No development so far. So is there any prospect? Or can we at least make sure keepassxc stays out of the upgrade process?

comment:12 Changed 3 years ago by thetrial (alabay)

Sad that nothing happens. Recently macports wanted to rebuild KP due to an update of some lib. Of course, this won’t function. I found out how to reinstate the lost lib (that had been updated an got a symlink) and replayed the old KP from a backup, but this is puzzle hacking. Only becouse there is no solution … no matter what kind.

comment:13 Changed 3 years ago by reneeotten (Renee Otten)

the port has no maintainer so feel free to try and implement any of the suggestions by Ryan and submit a PR. Likely option 3 is the most straightforward: just install the latest version that is still supported on legacy OS versions.

comment:14 Changed 3 years ago by thetrial (alabay)

I have the last version that is still supported. But this is not fixed in MacPorts. After an update of something (I don’t remember what) KP had to be rebuilt. This doesn’t work because then it tries the newest version. There shoud be a step like onwcloud-client, that is fixed to a version.

Version 0, edited 3 years ago by thetrial (alabay) (next)

comment:15 in reply to:  14 Changed 3 years ago by reneeotten (Renee Otten)

Replying to thetrial:

There should be a step like with onwcloud-client, that is fixed to a version.

sure, as I said the port has nomaintainer so your best bet to get this fixed is to add that to the Portfile and submit a PR to get it included.

comment:16 Changed 3 years ago by thetrial (alabay)

Unfortunately I don’t have the necessary skills.

comment:17 Changed 3 years ago by thetrial (alabay)

Again KPxc gets broken by (other) updates, It is the update of quazip, affected is libquazip, the libquazip*.dylib files get deleted/replaced. KPxc doesn’t start. One can bring back the missing files via Time Machine, but this being linked issue is VERY bad. This seems to be a problem one couldn’t even stop with fixing a version. A very interesting aspect that KPxc has no older builds for older OS. Kind of ignarrogance, indeed. And yes, I know, El Capitan is sooo old. But I’m not going to throw away working machines.

comment:18 Changed 2 years ago by thetrial (alabay)

The update of openssl to openssl3 seems to break KeePassXC, too. Is there no solution to that? Does anybody know how to fix version 2.6.3 to El Capitan … and to ensure, that later updates of other ports don’t break that? I guess, every change in libs makes that problematic. Am I the only one who uses this under El Capitan?!

comment:19 Changed 2 years ago by cjones051073 (Chris Jones)

Any port that is not compatible with openssl 3 needs to be updated to use the new openssl PG, configured to use openssl 1.1

As I am only running macOS12 myself I cannot test this, if the port already does not build on this OS. The changes required are (in the simple cases) quite minimal. see e.g.

https://github.com/macports/macports-ports/commit/834cd396e394260deaed252cfb384d29e7e75f1a

as a recent example.

If that doesn't work, the PG provides a bunch of procs to allow ports to help configure their builds.

https://github.com/macports/macports-ports/blob/master/_resources/port1.0/group/openssl-1.0.tcl

comment:20 Changed 2 years ago by cjones051073 (Chris Jones)

Cc: cjones051073 added

comment:21 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:22 Changed 2 years ago by mascguy (Christopher Nielsen)

FYI, @tanzap was kind enough to submit a PR to fix this issue:

12888 - KeePassXC: fix compilation issue of 2.6.6 on El Capitan

Assuming the CI builds succeed, we plan to merge that later today.

comment:23 Changed 2 years ago by thetrial (alabay)

I cannot say how happy that makes me! I just thought we simply reached the end of compatibility with El Capitan and freeze the old version.

But how did he do that? I thought it was Qt-related and stuck? This was a reason to close and freeze #61772 with wontfix. Uh.

comment:24 Changed 2 years ago by tenzap

Owner: set to tenzap
Resolution: fixed
Status: newclosed

In d1f06baa23b4852845664c29ab939994d0d8ba2d/macports-ports (master):

KeePassXC: fix compilation issue of 2.6.6 on El Capitan

Closes: #62220

comment:25 Changed 2 years ago by thetrial (alabay)

It works! It really works. Thanks a lot, @tenzap.

KeePassXC - Version 2.6.6
Revision: 9c108b9

Qt 5.11.3
Diagnosemodus ist deaktiviert.

Betriebssystem: OS X El Capitan (10.11)
CPU-Architektur: x86_64
Kernel: darwin 15.6.0

This ticket was a kind of nine-month computer nerds’ pregnancy phase.

Note: See TracTickets for help on using tickets.