Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#52342 closed defect (fixed)

kdepimlibs4 apparent conflict with gpgme

Reported by: Liontooth (David Liontooth) Owned by: NicosPavlov
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: Cc: mkae (Marko Käning), jjstickel (Jonathan Stickel), mopihopi, RJVB (René Bertin), StanSanderson
Port: kdepimlibs4

Description (last modified by ryandesign (Ryan Carsten Schmidt))

While installing kde4-baseapps on Sierra I get this:

--->  Activating kdepimlibs4 @4.14.3_3
Error: org.macports.activate for port kdepimlibs4 returned: Image error: /opt/local/include/gpgme++/configuration.h is being used by the active gpgme port.  Please deactivate this port first, or use 'port -f activate kdepimlibs4' to force the activation.
Error: Failed to install kdepimlibs4

Since kdepimlibs4 depends on gpgme, deactivating is not an option. Forcing generates a bunch of warnings:

$ sudo port -f activate kdepimlibs4
--->  Computing dependencies for kdepimlibs4
--->  Activating kdepimlibs4 @4.14.3_3
Warning: File /opt/local/include/gpgme++/configuration.h already exists.  Moving to: /opt/local/include/gpgme++/configuration.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/context.h already exists.  Moving to: /opt/local/include/gpgme++/context.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/data.h already exists.  Moving to: /opt/local/include/gpgme++/data.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/decryptionresult.h already exists.  Moving to: /opt/local/include/gpgme++/decryptionresult.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/defaultassuantransaction.h already exists.  Moving to: /opt/local/include/gpgme++/defaultassuantransaction.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/editinteractor.h already exists.  Moving to: /opt/local/include/gpgme++/editinteractor.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/encryptionresult.h already exists.  Moving to: /opt/local/include/gpgme++/encryptionresult.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/engineinfo.h already exists.  Moving to: /opt/local/include/gpgme++/engineinfo.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/error.h already exists.  Moving to: /opt/local/include/gpgme++/error.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/eventloopinteractor.h already exists.  Moving to: /opt/local/include/gpgme++/eventloopinteractor.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/exception.h already exists.  Moving to: /opt/local/include/gpgme++/exception.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/global.h already exists.  Moving to: /opt/local/include/gpgme++/global.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/gpgadduserideditinteractor.h already exists.  Moving to: /opt/local/include/gpgme++/gpgadduserideditinteractor.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/gpgagentgetinfoassuantransaction.h already exists.  Moving to: /opt/local/include/gpgme++/gpgagentgetinfoassuantransaction.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/gpgmefw.h already exists.  Moving to: /opt/local/include/gpgme++/gpgmefw.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/gpgsetexpirytimeeditinteractor.h already exists.  Moving to: /opt/local/include/gpgme++/gpgsetexpirytimeeditinteractor.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/gpgsetownertrusteditinteractor.h already exists.  Moving to: /opt/local/include/gpgme++/gpgsetownertrusteditinteractor.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/gpgsignkeyeditinteractor.h already exists.  Moving to: /opt/local/include/gpgme++/gpgsignkeyeditinteractor.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/importresult.h already exists.  Moving to: /opt/local/include/gpgme++/importresult.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/interfaces/assuantransaction.h already exists.  Moving to: /opt/local/include/gpgme++/interfaces/assuantransaction.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/interfaces/dataprovider.h already exists.  Moving to: /opt/local/include/gpgme++/interfaces/dataprovider.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/interfaces/passphraseprovider.h already exists.  Moving to: /opt/local/include/gpgme++/interfaces/passphraseprovider.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/interfaces/progressprovider.h already exists.  Moving to: /opt/local/include/gpgme++/interfaces/progressprovider.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/key.h already exists.  Moving to: /opt/local/include/gpgme++/key.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/keygenerationresult.h already exists.  Moving to: /opt/local/include/gpgme++/keygenerationresult.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/keylistresult.h already exists.  Moving to: /opt/local/include/gpgme++/keylistresult.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/notation.h already exists.  Moving to: /opt/local/include/gpgme++/notation.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/result.h already exists.  Moving to: /opt/local/include/gpgme++/result.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/scdgetinfoassuantransaction.h already exists.  Moving to: /opt/local/include/gpgme++/scdgetinfoassuantransaction.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/signingresult.h already exists.  Moving to: /opt/local/include/gpgme++/signingresult.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/trustitem.h already exists.  Moving to: /opt/local/include/gpgme++/trustitem.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/verificationresult.h already exists.  Moving to: /opt/local/include/gpgme++/verificationresult.h.mp_1474684825.
Warning: File /opt/local/include/gpgme++/vfsmountresult.h already exists.  Moving to: /opt/local/include/gpgme++/vfsmountresult.h.mp_1474684825.

Change History (12)

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

Cc: nicos@… removed
Description: modified (diff)
Keywords: Sierra removed
Owner: changed from macports-tickets@… to nicos@…

Yes, you should probably not force. By doing so, you've replaced the contents of the gpgme port with whatever version of gpgme was bundled with kdepimlibs4, which might not be the same version. The consequences of doing that are unknown.

comment:2 Changed 8 years ago by mkae (Marko Käning)

Cc: mk@… added

Cc Me!

comment:3 Changed 8 years ago by jjstickel (Jonathan Stickel)

Cc: jjstickel@… added

Cc Me!

comment:4 Changed 8 years ago by jjstickel (Jonathan Stickel)

Same problem for me on Yosemite, so not a OS version problem. Looks like the gpgme update (r153044) triggered this?

comment:5 in reply to:  4 Changed 8 years ago by jjstickel (Jonathan Stickel)

Replying to jjstickel@…:

Same problem for me on Yosemite, so not a OS version problem. Looks like the gpgme update (r153044) triggered this?

I rolled back gpgme to 1.6 and everything is working for me at the moment. Does kdepimlibs4 need an update to work with the new gpgme (and maybe kde4-runtime)?

comment:6 Changed 8 years ago by mopihopi

Cc: mopihopi@… added

Cc Me!

comment:7 Changed 8 years ago by NicosPavlov

Hello, it seems rather clear that kdepimlibs4 needs to be patched to not install the conflicting files and ideally use the ones provided by gpgme. I should be able to look at that in the next days.

comment:8 Changed 8 years ago by NicosPavlov

Resolution: fixed
Status: newclosed

The issue should be solved with r153292, where kdepimlibs4 now links to the existing gpgme files.

comment:9 Changed 8 years ago by RJVB (René Bertin)

I'm not sure if it's such a good idea to try to make KDEPim4 use much more recent GPGMe versions than the ones it ships with. KDEPim4 is unmaintained, and clearly some things have changed in the cmake files installed by gpgme, over time.

Marko's error in #52470 is a result of that, I think; it looks like port:kdepimlibs4 installs 2 cmake files,

  /opt/local/share/apps/cmake/modules/FindGpgme.cmake
  /opt/local/share/apps/cmake/modules/FindQGpgme.cmake

which apparently don't work with GPGMe 1.7 . Presumable, the 1st of these 2 files is expecting /opt/local/lib/gpgmepp/GpgmeppConfig.cmake (installed by kdepimlibs4 too), while port:gpgme installs /opt/local/lib/cmake/Gpgmepp/GpgmeppConfig.cmake Are those files actually installed with your patch?

There is an easier workaround: apply the part of my KDE4 patches that cause KDE4 headerfiles to be installed into ${prefix}/include/KDE4. Configure and port:kdelibs4 with configure.args-append -DINCLUDE_INSTALL_DIR=${kde4.include_dirs} (revbump of dependents only required if you really want to rebuild them). I define kde4.include_dirs in my kde4-1.1.tcl :

set kde4.include_prefix KDE4
set kde4.include_dirs   ${prefix}/include/${kde4.include_prefix}

As a result, I have (after rebuilding kdepimlibs4):

  /opt/local/include/KDE4/gpgme++/assuanresult.h
  /opt/local/include/KDE4/gpgme++/configuration.h
  /opt/local/include/KDE4/gpgme++/context.h
  /opt/local/include/KDE4/gpgme++/data.h
...

and no conflicts ... and KDEPIM builds as it expects to.

This change is required anyway if we want to support concurrent KDE4 and KF5 installations. It also doesn't mean you cannot figure out how to build KDEPIM against all of port:gpgme ...

Note also that kdepimlibs4 only provides the C++ wrappers, which use the C implementation from port:gpgme (and hence the latest version). The easiest "fix" would be to remove the gpgme++ header directory in the post-destroot (possibly replace it with a symlink to /opt/local/include/gpgme++ if using my /opt/local/include/KDE4 idea).

Last edited 8 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:10 Changed 8 years ago by RJVB (René Bertin)

Cc: rjvbertin@… added

Cc Me!

comment:11 Changed 8 years ago by StanSanderson

Cc: stansand@… added

Cc Me!

comment:12 Changed 8 years ago by RJVB (René Bertin)

Let's continue here: #52481

Nice to see we are at least 6 to be using KDEPIM4 on ([mM]ac) OS (X)!

Last edited 8 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)
Note: See TracTickets for help on using tickets.