Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Apr 2015 17:14:12 +0200
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        arch@FreeBSD.org
Subject:   Re: RFC: Alternative to PRIVATELIB
Message-ID:  <20150411151412.GF65320@ivaldir.etoilebsd.net>
In-Reply-To: <20150411142835.GE65320@ivaldir.etoilebsd.net>
References:  <20150411142835.GE65320@ivaldir.etoilebsd.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--xaMk4Io5JJdpkLEb
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sat, Apr 11, 2015 at 04:28:35PM +0200, Baptiste Daroussin wrote:
> Hi,
>=20
> I would like to propose to replace PRIVATELIB with something more conveni=
ent.
>=20
> First what is PRIVATELIB is trying to solve:
> We are maintaining stable ABI over branches but some third parties sources
> are not really good at maintaining stable ABI, so we do hide them into pr=
ivate
> where nothing can use it. We do not provide headers for that and we add r=
path to
> every binaries that needs to link to those.
>=20
> What is the issues of PRIVATELIB:
> any application linking to a library from base (a regular one) that does =
itself
> links to a PRIVATELIB cannot anymore statically link to the said applicat=
ion.
>=20
> The is no mechanism to handle PRIVATELIBS in compat*x ports which can be a
> problem if one of our regular lib is linked to a privatelib and ends up i=
nto
> compat one day.
>=20
> It prevents easy linking for 3rd party application using those privatelib=
s on
> purpose (aka with the knowledge abi can break) like libbsdstat.
>=20
> What I would like to propose is the following:
>=20
> Create in bsd.lib.mk support for PRIVATE knobs (what ever name you do pre=
fer)
>=20
> It will just prefix the name of the library with "private" but install it=
 in the
> regular place
>=20
> It will automatically decide to install the headers into /usr/include/pri=
vate/${LIB}/
> Each private library headers in a custom place to avoid an application th=
at
> deliberatly use a given privatelib to find another one
>=20
> Prefix all manpage with private_ so that we can provide the documentation=
 for
> the said libs for the version we ship but if another version is shipped b=
y ports
> then we can easily access both documentation.
>=20
> As a result bsd.lib.mk will be simpler, we could again static link against
> everything we ship in base, we can provide documentation for those libs a=
nd we
> can easily isolate them anyway from the ports.
>=20
> I plan to start working on this in a week.
>=20
> Best regards,
> Bapt

This patch shows an example with libucl:
https://people.freebsd.org/~bapt/private.diff

Best regards,
Bapt

--xaMk4Io5JJdpkLEb
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iEYEARECAAYFAlUpOkQACgkQ8kTtMUmk6Exm3QCfayHKSrr5Xmv9SQJP/ev1Kalx
s4IAoJSZ6j1IOLDJrnTt7fsueC2tE6cp
=ahkd
-----END PGP SIGNATURE-----

--xaMk4Io5JJdpkLEb--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150411151412.GF65320>