poudriere - postgresql90-client, LDAP, requires ldap.h

Scot Hetzel swhetzel at gmail.com
Sun Apr 28 14:36:45 UTC 2013


On Sun, Apr 28, 2013 at 9:16 AM, Chris Rees <crees at freebsd.org> wrote:

> On 28 April 2013 15:07, Scot Hetzel <swhetzel at gmail.com> wrote:
> > On Sun, Apr 28, 2013 at 6:25 AM, Palle Girgensohn <girgen at pingpong.net>
> > wrote:
> >> 28 apr 2013 kl. 10:37 skrev Chris Rees <crees at FreeBSD.org>:
> >>
> >> > Please CC maintainers when you're asking about specific ports!
> >> > On 28 April 2013 07:05, Scot Hetzel <swhetzel at gmail.com> wrote:
> >> >> On Sat, Apr 27, 2013 at 4:32 PM, Florent Peterschmitt <
> >> >> florent at peterschmitt.fr> wrote:
> >> >>
> >> >>> Le 27/04/2013 23:13, Matthew Seaman a écrit :
> >> >>>> On 27/04/2013 19:49, Florent Peterschmitt wrote:
> >> >>>>> Hello,
> >> >>>>>
> >> >>>>> I use the latest poudriere-devel to make my own pkg repository,
> and
> >> >>>>> would like to build postgresql with LDAP support.
> >> >>>>>
> >> >>>>> Since it's in a virgin jail, and because the log said « hey I need
> >> >>>>> ldap.h », I understand that openldap should be installed but, is
> it
> >> >>>>> the
> >> >>>>> good way to do ? For each package requirement, it is needed to
> >> >>>>> install
> >> >>>>> it by hand ? (or with previously built packages :) )
> >> >>>>>
> >> >>>>
> >> >>>> You should use the 'poudriere options' command to enable LDAP
> support
> >> >>>> in
> >> >>>> the postgresql server.
> >> >>>
> >> >>> Yep, I did that. Sorry, I missed to say I already have done this.
> The
> >> >>> problem is that when building the package, the configure step fail
> >> >>> saying ldap.h is missing.
> >> >>>
> >> >>>> Now, when you use poudriere to build the postgresql package, it
> will
> >> >>>> have LDAP client added as a requirement -- so poudriere will also
> >> >>>> build
> >> >>>> you an LDAP package -- and when you go to install postgresql, ldap
> >> >>>> will
> >> >>>> be installed as well as a dependency.
> >> >>>>
> >> >>>>      Cheers,
> >> >>>>
> >> >>>>      Matthew
> >> >>>>
> >> >>> Yep. But how does work poudriere ? Because I have built postfix and
> >> >>> dovecot2 with LDAP support and there was no problem. I think it's a
> >> >>> problem from the port itself and not from poudriere, I should try
> in a
> >> >>> new system (perhaps, a jail, without poudriere).
> >> >>>
> >> >>
> >> >> The problem seems to be caused by the following from
> >> >> databases/postgresql91-server/Makefile:
> >> >>
> >> >> 66     .if !defined(CLIENT_ONLY) && !defined(SLAVE_ONLY)
> >> >> 67     SERVER_ONLY= yes
> >> >> 68     USE_RC_SUBR= postgresql
> >> >> 69     USE_PGSQL= yes
> >> >> 70     WANT_PGSQL_VER=
> >> >> ${DISTVERSION:C/([0-9][0-9]*)\.([0-9][0-9]*).*/\1\2/g}
> >> >> 71     USERS= ${PG_USER}
> >> >> 72     GROUPS= ${PG_GROUP}
> >> >> 73     SUB_FILES+= 502.pgsql
> >> >> 74     .endif
> >> >>
> >> >> 81     .if !defined(SLAVE_ONLY)
> >> >> 82     OPTIONS_DEFINE+= NLS DTRACE PAM LDAP GSSAPI OPTIMIZED_CFLAGS
> XML
> >> >> TZDATA DEBUG KRB5
> >> >> 83     OPTIONS_SINGLE= KRB5
> >> >> 84     OPTIONS_SINGLE_KRB5= MIT_KRB5 HEIMDAL_KRB5
> >> >> :
> >> >> 112     OPTIONS_DEFAULT= NLS XML TZDATA INTDATE SSL
> >> >> 113     .endif # !SLAVE_ONLY
> >> >>
> >> >> 159     . if ${PORT_OPTIONS:MLDAP}
> >> >> 160     CONFIGURE_ARGS+=--with-ldap
> >> >> 161     . if defined (SERVER_ONLY)
> >> >> 162     USE_OPENLDAP= yes
> >> >> 163     . endif
> >> >> 164     . endif
> >> >>
> >> >> NOTE: postgresql90-client/Makefile includes
> >> >> postgresql90-server/Makefile
> >> >> which then includes postgresql91-server/Makefile
> >> >>
> >> >> Unfortunately, you can't set USE_OPENLDAP as a build depends.  Try
> >> >> commenting out lines 161 and 163 in the postgresql91-server/Makefile.
> >> >> This
> >> >> will add OpenLDAP as a LIB_DEPENDS to the postgresql*-client ports.
> >> >>
> >> >
> >> > Actually,
> >> >
> >> > [crees at medusa]~% psql
> >> > Shared object "libldap_r-2.4.so.8" not found, required by "libpq.so.5"
> >> > [crees at medusa]~%
> >> >
> >> > LDAP is indeed a LIB_DEPENDS.
> >> >
> >> > Palle, Jason, if you don't object I'm going to add || defined
> >> > (CLIENT_ONLY) to line 161 above.
> >> >
> >> > Chris
> >>
> >> It seems strange to me that psql should require libldap? That seems
> like a
> >> bug, or am I missing something? Why would the client side of the
> connection
> >> need to use ldap?
> >
> >
> > Since the postgresql*-client ports install the below files:
> >
> > bin/clusterdb
> > bin/createdb
> > bin/createlang
> > bin/createuser
> > bin/dropdb
> > bin/droplang
> > bin/dropuser
> > bin/ecpg
> > bin/pg_config
> > bin/pg_dump
> > bin/pg_dumpall
> > bin/pg_restore
> > bin/psql
> > bin/reindexdb
> > bin/vacuumdb
> > lib/libecpg.so.6
> > lib/libecpg_compat.so.3
> > lib/libpgtypes.so.3
> > lib/libpq.so.5
> >
> > We'll need someone to check with ldd to see if they require any of the
> ldap
> > libraries after commenting out lines 161 and 163. If they don't require
> > LDAP, then we just need to remove LDAP from line 82, and add the below
> > between line 82 and 83:
> >
> > .if defined (SERVER_ONLY)
> > OPTIONS_DEFINE+= LDAP
> > .endif
> >
> > Then move line 161 to before line 159.
>
> Ohononono, you can't just set different OPTIONS for each port, that
> makes them stomp over the saved ones for each variant-- I got bitten
> by that before.  The simpler solution would be to ignore the setting
> for LDAP for anything !server.
>
> It shouldn't be a problem unless both the postgresql*-server and
postgresql*-client are using the same OPTIONSFILE.

What does make -V OPTIONSFILE display in databases/postgresql*-client and
databases/postgresql*-server?

-- 
DISCLAIMER:

No electrons were maimed while sending this message. Only slightly bruised.


More information about the freebsd-ports mailing list