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

Scot Hetzel swhetzel at gmail.com
Sun Apr 28 14:07:44 UTC 2013


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.


-- 
DISCLAIMER:

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


More information about the freebsd-ports mailing list