Opened 12 years ago

Closed 12 years ago

#34786 closed defect (fixed)

cyrus-sasl2 @2.1.25_0 indirectly depends on itself via kerberos5, gnupg, openldap

Reported by: mndavidoff (Monte Davidoff) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.1.1
Keywords: Cc: jmpp@…, landonf (Landon Fuller), waqar@…, ryandesign (Ryan Carsten Schmidt), nonstop.server@…, pikpik.1010@…
Port: cyrus-sasl2 kerberos5 gnupg openldap

Description

There is a cycle in the dependencies for cyrus-sasl2:

$ port rdeps cyrus-sasl2
The following ports are dependencies of cyrus-sasl2 @2.1.25_0+kerberos:
  openssl
    zlib
  kerberos5
    gnupg
      libiconv
        gperf
      gettext
        ncurses
        expat
      readline
      bzip2
      libusb-compat
        pkgconfig
          glib2
            xz
            libffi
            libxml2
            perl5
              perl5.12
                gdbm
        libusb
      openldap
        tcp_wrappers
        cyrus-sasl2
        db46
        icu

The problem seems to have been introduced in r94003 by adding a dependency on kerberos5 to the kerberos variant. The kerberos variant is enabled by default.

$ port rdeps cyrus-sasl2 -kerberos
The following ports are dependencies of cyrus-sasl2 @2.1.25_0:
  openssl
    zlib

Change History (10)

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

Cc: ryandesign@… added

Ugh, fantastic... What should we do about that? cyrus-sasl2 @2.1.25 +kerberos linked with libraries provided by the kerberos5 port, so I added the dependency, not realizing the dependency loop. (I wonder why the buildbot didn't tell me about it.) Can we tell cyrus-sasl2 to not do that? If so how, and is there any negative consequence of doing so?

comment:2 Changed 12 years ago by mndavidoff (Monte Davidoff)

Here are some ideas to break the dependency loop:

  1. Patch the cyrus-sasl2 configure script so it will report libraries provided by the kerberos5 port are not present. The effect on the cyrus-sasl2 port will be the same as installing cyrus-sasl2 and kerberos5 from scratch before r94003: cyrus-sasl2 will be built with kerberos support, but not linked with kerberos, because kerberos5 will indirectly depend on cyrus-sasl2, but not vice-versa.
  2. Build cyrus-sasl2 without kerberos support.
  3. Build gnupg with ldap support disabled.
  4. Change kerberos5 to depend on gnupg2 instead of gnupg, and disable ldap support in the gnupg2 configure options.
  5. Build openldap without cyrus-sasl support.

I don't know which, if any, of the above would have the least impact.

comment:3 Changed 12 years ago by nonstop.server@…

Cc: nonstop.server@… added

Cc Me!

comment:4 in reply to:  2 Changed 12 years ago by ghosthound

Replying to md14-macports@…:

Here are some ideas to break the dependency loop:

  1. Patch the cyrus-sasl2 configure script so it will report libraries provided by the kerberos5 port are not present. The effect on the cyrus-sasl2 port will be the same as installing cyrus-sasl2 and kerberos5 from scratch before r94003: cyrus-sasl2 will be built with kerberos support, but not linked with kerberos, because kerberos5 will indirectly depend on cyrus-sasl2, but not vice-versa.
  2. Build cyrus-sasl2 without kerberos support.
  3. Build gnupg with ldap support disabled.
  4. Change kerberos5 to depend on gnupg2 instead of gnupg, and disable ldap support in the gnupg2 configure options.
  5. Build openldap without cyrus-sasl support.

I don't know which, if any, of the above would have the least impact.

Personally I'd got with "build gnupg without ldap support" as I expect most users don't use gnupg with LDAP, and that way they're not dragging in the large beast that is OpenLDAP.

comment:5 in reply to:  1 Changed 12 years ago by jmroot (Joshua Root)

Replying to ryandesign@…:

(I wonder why the buildbot didn't tell me about it.)

Gnupg is depends_build in kerberos5, and the latter was probably already built.

comment:6 Changed 12 years ago by jmroot (Joshua Root)

Port: kerberos5 gnupg openldap added
Summary: cyrus-sasl2 @2.1.25_0 indirectly depends on itselfcyrus-sasl2 @2.1.25_0 indirectly depends on itself via kerberos5, gnupg, openldap

comment:7 Changed 12 years ago by jmroot (Joshua Root)

Cc: waqar@… added

comment:8 Changed 12 years ago by pikpik.1010@…

Cc: pikpik.1010@… added

Cc Me!

comment:9 Changed 12 years ago by ecronin (Eric Cronin)

gpg should not be a dependency of kerberos5. It looks like when the port was initially created in r11648 the intent was that MacPorts would verify the detached signature, but that never happened and that code is gone entirely from the Portfile now but the dependency remains... The kerberos source itself doesn't try to verify the signature.

comment:10 Changed 12 years ago by ecronin (Eric Cronin)

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