conflicting dependency

Scot Hetzel swhetzel at gmail.com
Thu Jul 20 18:46:33 UTC 2006


On 7/19/06, John E Hein <jhein at timing.com> wrote:
> Let's say there are two ports A & B.
> They both provide libfoo.so.1 (and so register CONFLICTS with each other).
>
> Now port C wants to use libfoo (and doesn't care if it gets it
> from A or B).
>
> What does port C list in it's LIB_DEPENDS?
>
> What if it lists A and someone installs B... does A get registered as
> the dependency when C is installed even though A is not installed?
>

In the port Cs Makefile, you add:

.if exists(${PREFIX}/bin/file found only in Port B)
PORTA_STAT= OFF
PORTB_STAT= ON
.else
PORTA_STAT= ON
PORTB_STAT= OFF
.endif

OPTIONS = PORTA "Depends on libfoo from port A" ${PORTA_STAT} \
                  PORTB "Depends on libfoo from port B" ${PORTB_STAT}

.if defined(WITH_PORTA) || !defined(WITHOUT_PORTA)
LIB_DEPENDS+= foo.1:${PORTSDIR}/dependancy on Port A
.elif defined(WITH_PORTB)
LIB_DEPENDS+= foo.1:${PORTSDIR}/dependancy on Port B
.else
IGNORE= Must choose either port A or B
.endif

This allows the admin to install either port A or B, and port C will
automatically detect which port is installed, as well as allowing the
admin to choose which to install.

Scot
--
DISCLAIMER:
No electrons were mamed while sending this message. Only slightly bruised.


More information about the freebsd-ports mailing list