Opened 8 months ago

Closed 7 months ago

Last modified 7 months ago

#69580 closed update (fixed)

KeePassXC: update to 2.7.7

Reported by: contextnerror Owned by: contextnerror
Priority: Normal Milestone:
Component: ports Version:
Keywords: haspatch Cc: carbonturtle (Michael Hosford), ryandesign (Ryan Carsten Schmidt)
Port: KeePassXC

Description


Attachments (3)

keepassxc.diff (2.3 KB) - added by contextnerror 8 months ago.
Modified 2.7.7 portfile
main.log (556.8 KB) - added by contextnerror 8 months ago.
rev-upgrade.diff (401 bytes) - added by contextnerror 7 months ago.
This patch should fix the rev-upgrade issue (?)

Download all attachments as: .zip

Change History (17)

comment:1 Changed 8 months ago by reneeotten (Renee Otten)

the port has no maintainer so someone with enough interest (you?) can submit a PR.

Last edited 8 months ago by reneeotten (Renee Otten) (previous) (diff)

comment:2 Changed 8 months ago by contextnerror

Indeed, I have interest, but lack skill.
I've tried installing myself after updating the portfile, but it fails with make: *** [all] Error 2.
It seems to fail at a different percentage of progress each time, so I'm not sure what exactly is tripping it up.
I'll attach my modified port and a log file.

Changed 8 months ago by contextnerror

Attachment: keepassxc.diff added

Modified 2.7.7 portfile

Changed 8 months ago by contextnerror

Attachment: main.log added

comment:3 Changed 7 months ago by contextnerror

I've looked at the failures again, and it appears that the constant between them is this error:
error: no matching constructor for initialization of 'std::shared_ptr<unsigned char []>'
which happens around the point of BrowserMessageBuilder.cpp

comment:4 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

Cc: carbonturtle added

Has duplicate #69669.

comment:5 in reply to:  2 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

Keywords: haspatch added
Summary: keepassxc: update to 2.7.7KeePassXC: update to 2.7.7

Replying to contextnerror:

I've tried installing myself after updating the portfile, but it fails with make: *** [all] Error 2.

I did not see this problem on my macOS 12 machine. You were using macOS 10.14. Maybe it now requires a newer compiler but that's not mentioned in the changelog.

It seems to fail at a different percentage of progress each time, so I'm not sure what exactly is tripping it up.

That's typical for parallel builds. It starts many jobs, in your case 4, one of them fails, and then the remaining ones continue as far as they can. You could get different results each time you do this because of variances in the CPU time taken by other processes already running on your computer.

Also, I'm not sure how cmake's progress calculation is done, but if you interrupt a build (or it fails) and then you try again without cleaning, it might be telling you the percentage of what's left to build now, not the percentage of the whole build.

I'll attach my modified port and a log file.

Thanks. I'll commit it as-is and we can fix it up later if needed.

comment:6 Changed 7 months ago by contextnerror

Owner: set to contextnerror
Resolution: fixed
Status: newclosed

In 8257c44fa4bf365baf22b8fe757ba9a29f242516/macports-ports (master):

KeePassXC: Update to 2.7.7

Closes: #69580

comment:7 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign added

comment:8 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

In 79ce8f8a26aa1a6572ea01ffc41ef8438b9d98ad/macports-ports (master):

KeePassXC: Blacklist clang < 1200

See: #69580

comment:9 Changed 7 months ago by contextnerror

Blacklisting clang < 1200 did seem to fix things, as I can now install 2.7.7.
However after install the port is shown as broken by rev-upgrade.

--->  Installing KeePassXC @2.7.7_0
--->  Activating KeePassXC @2.7.7_0
--->  Cleaning KeePassXC
--->  Updating database of binaries
--->  Scanning binaries for linking errors
--->  Found 4 broken files, matching files to ports      
--->  Found 1 broken port, determining rebuild order
You can always run 'port rev-upgrade' again to fix errors.
The following ports will be rebuilt: KeePassXC @2.7.7
Continue? [Y/n]: 

Rebuilding seems to fix the problem. However if port reclaim is run the port will break again.

--->  Checking for unnecessary unrequested ports
Unrequested ports without requested dependents found:
 gnupg2  @2.4.5_0+openldap+pinentry
 gnutls  @3.7.10_0
 qt5-qttools  @5.15.12_0
 qt5-qtdeclarative  @5.15.12_0
 p11-kit  @0.25.3_0
 libxslt  @1.1.39_0
 clang-14  @14.0.6_2+analyzer
 clang-16  @16.0.6_3+analyzer
 clang-17  @17.0.6_1+analyzer
 cctools  @949.0.1_3+llvm10
 llvm-10  @10.0.1_3+emulated_tls
 llvm-14  @14.0.6_0
 llvm-16  @16.0.6_1
 llvm-17  @17.0.6_1
 xar  @1.8.0.498_0
 py311-pygments  @2.17.2_0
 py311-yaml  @6.0.1_0
 pinentry  @1.2.1_0
 libassuan  @2.5.7_0
 libksba  @1.6.6_0
 openldap  @2.6.7_0
 perl5  @5.34.1_0+perl5_34
 cyrus-sasl2  @2.1.28_1+kerberos
 gettext  @0.22.5_0
 gettext-tools-libs  @0.22.5_0
 libtextstyle  @0.22.5_0
 libfetch  @9.0.0-RELEASE_3
 pth  @2.0.7_1
 nettle  @3.9.1_0
 gmp  @6.3.0_0
 libtasn1  @4.19.0_0
 libusb-compat  @0.1.8_0
 libusb  @1.0.27_0
 npth  @1.7_0
 tcp_wrappers  @20_5
 llvm_select  @2_1
 pygments_select  @0.1_1
 libyaml  @0.2.5_0
 libomp  @18.1.2_1
 clang_select  @2.3_0
 ld64  @3_6+ld64_xcode
 ld64-xcode  @2_6
Would you like to uninstall them? [Y/n]: y

(they get uninstalled)

--->  Checking for inactive ports
Found no inactive ports.
--->  Building list of distfiles still in use
--->  Searching for unused distfiles                     
Found 2 files (total 120.07 MiB) that are no longer needed and can be deleted.
[l]ist/[d]elete/[K]eep: d
Deleting...
--->  Build location: /opt/local/var/macports/build
--->  Scanning binaries for linking errors
--->  Found 4 broken files, matching files to ports
--->  Found 1 broken port, determining rebuild order
You can always run 'port rev-upgrade' again to fix errors.
The following ports will be rebuilt: KeePassXC @2.7.7
Continue? [Y/n]:

Unless reclaim is never run, you can get stuck in a loop of rev-upgrade. What's going on here? Has anyone else experienced this or is it 10.14 specific?

comment:10 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

Sounds like it probably links with a library that we've failed to declare a dependency on. The debug output of rev-upgrade should identify which library that is.

comment:11 Changed 7 months ago by contextnerror

Here's what it's giving me:

--->  Scanning binaries for linking errors
DEBUG: Ignoring loadcommand containing @rpath in /Applications/MacPorts/KeePassXC.app/Contents/MacOS/KeePassXC
Could not open /opt/local/lib/libomp/libomp.dylib: Error opening or reading file (referenced from /Applications/MacPorts/KeePassXC.app/Contents/MacOS/KeePassXC)
DEBUG: Marking /Applications/MacPorts/KeePassXC.app/Contents/MacOS/KeePassXC as broken
DEBUG: Ignoring loadcommand containing @rpath in /Applications/MacPorts/KeePassXC.app/Contents/MacOS/keepassxc-cli
DEBUG: Marking /Applications/MacPorts/KeePassXC.app/Contents/MacOS/keepassxc-cli as broken
DEBUG: Ignoring loadcommand containing @rpath in /Applications/MacPorts/KeePassXC.app/Contents/MacOS/keepassxc-proxy
DEBUG: Marking /Applications/MacPorts/KeePassXC.app/Contents/MacOS/keepassxc-proxy as broken
DEBUG: Ignoring loadcommand containing @rpath in /Applications/MacPorts/KeePassXC.app/Contents/PlugIns/libkeepassxc-autotype-cocoa.so
DEBUG: Marking /Applications/MacPorts/KeePassXC.app/Contents/PlugIns/libkeepassxc-autotype-cocoa.so as broken
--->  Found 4 broken files, matching files to ports

Changed 7 months ago by contextnerror

Attachment: rev-upgrade.diff added

This patch should fix the rev-upgrade issue (?)

comment:12 Changed 7 months ago by contextnerror

One other thing of note: the new passkey feature requires qt 5.12. Should the minimum qt for the entire port be raised, or should it be broken off into a different variant or conditional check?

comment:13 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

Yes, that patch should do it, with the addition of increasing the revision.

The new KeePassXC built fine on our automated build machines on OS X 10.9 and later. On 10.9 it used Qt 5.8 and the configure phase output did include the line:

-- Qt version 5.12.0 or higher is required for Passkeys support

so the build system is smart enough to disable the passkey support on older systems that can't use it. However it is also easy to switch flags based on Qt version so I may as well do that.

It did fail to build on OS X 10.8 with Qt 5.7 with the error src/format/OPUXReader.cpp:159:44: error: no member named 'fromSecsSinceEpoch' in 'QDateTime' so I will increase the port's minimum Qt version to 5.8. The developers are no help and do not specify what the minimum Qt version is so we have to guess.

It also failed on Mac OS X 10.7 with Qt 5.6 because on that system qt56-qtbase fails to build. That's #69582.

comment:14 Changed 7 months ago by ryandesign (Ryan Carsten Schmidt)

In 802a1ba2268ceefefb6c8115d9cd9ea106b2aca8/macports-ports (master):

KeePassXC: Add libomp dependency; minor fixes

Use subport directive in the normal way.

Increase minimum Qt version to 5.8.0 based on evidence.

Add libomp dependency and revbump.

Use configure.args instead of configure.pre_args.

Only use -DWITH_XC_BROWSER_PASSKEYS=ON with a sufficient Qt version.

See: #69580

Note: See TracTickets for help on using tickets.