Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Nov 2013 12:05:12 -0700
From:      Kevin Oberman <rkoberman@gmail.com>
To:        Tijl Coosemans <tijl@freebsd.org>
Cc:        sbz@freebsd.org, FreeBSD Ports ML <freebsd-ports@freebsd.org>
Subject:   Re: Problems dealing with ports use of pkgconf
Message-ID:  <CAN6yY1t6yO-Cwk9tNLqU7Emcin%2BwDODtDgBRPJofGTdfbe3n4g@mail.gmail.com>
In-Reply-To: <20131101095757.3f1a3913@kalimero.tijl.coosemans.org>
References:  <CAN6yY1t0za5GTchFy%2B%2BtNjMmnzF4edBYUFoBmT1kmi4m1=aKFg@mail.gmail.com> <20131101095757.3f1a3913@kalimero.tijl.coosemans.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Nov 1, 2013 at 1:57 AM, Tijl Coosemans <tijl@freebsd.org> wrote:

> On Wed, 30 Oct 2013 11:46:30 -0700 Kevin Oberman wrote:
> > I have run into a dilemma in regards to the use of pkgconf in ports. Here
> > is what has bitten me:
> > To allow sftp to get files, multimedia/vlc uses libssh2. libssh2, in
> turn,
> > uses openssl or the GNU crypto library.
> > If i have installed securith/openssl, all is well, but I don't want of
> need
> > the security/openssl port.
> > If I have not installed openssl from ports, vlc fails! Here is why:
> >
> > libssh2 creates a .pc file to allow other packages to know whether it
> uses
> > openssl or libgcrypt. this is a nice thing, but it makes the common
> > assumption that openssl is only there if the package has been installed.
> I
> > believe that is is the case for Linux.  Not so for FreeBSD. vlc uses
> > pkgconf to check on whether all required libraries are installed for
> > libssh2. I finds that libssh2 requires libssl:
> > Requires.private: libssl,libcrypto
> > It then checks to see if these are installed. Since libssl is not
> > installed, it bails on the error. (I believe that it shoudl be "Required:
> > rather than Requires.private:, but that has no impact on the problem.
> >
> > Since FreeBSD ports have already checked the dependencies before
> building a
> > port, I think such checks should be removed from ports, but I'm not
> > familiar enough with the real-world implications of this to know if it is
> > the right way to go. If it is, I'll can submit a patch for vlc. I
> suspect,
> > after reading the developers comments, that libssh2 developers will not
> > want to remove their recent changes in this area.
>
> This line:
>
> Requires.private: libssl,libcrypto
>
> Would have to be changed into:
>
> Libs.private: -lssl -lcrypto
>
> See http://people.freedesktop.org/~dbn/pkg-config-guide.html
>
> (Maintainer CCed)
>

Tijl,

Thanks so much. After reading  the documentation at freedesktop.org, I was
still rather unclear on some details. The "friendly" presentation in that
link is much clearer, especially the choice between plain and "private"
forms which was a bit fuzzy to me.

Now to this specific issue. It appears that this is specific to non-Linux
ports. With Linux it is "safe" to assume that libssl and libcrypto both
support .pc files, making  "Requires.private" appropriate. Since the base
system libssl and libcrypto are not packages on FreeBSD, converting libssh2
(and other ports that use pkg-config and these libraries, if any), the
ports should probably be modified to switch the .pc files created to use
the Libs[.private] form. It is probably not something that will be accepted
by upstreams, but I guess we could try.

Does this make sense? Am I actually stating to grasp this stuff?
-- 
R. Kevin Oberman, Network Engineer
E-mail: rkoberman@gmail.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAN6yY1t6yO-Cwk9tNLqU7Emcin%2BwDODtDgBRPJofGTdfbe3n4g>