Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Apr 2015 13:57:51 -0500
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        Baptiste Daroussin <bapt@FreeBSD.org>, arch@FreeBSD.org
Subject:   Re: RFC: Alternative to PRIVATELIB
Message-ID:  <553A922F.3000303@FreeBSD.org>
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
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--69KlI9bmva1VqQBJnaMDv3pG2B3bUDEIV
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

On 4/11/2015 9:28 AM, Baptiste Daroussin wrote:
> Hi,
>=20
> I would like to propose to replace PRIVATELIB with something more conve=
nient.
>=20
> First what is PRIVATELIB is trying to solve:
> We are maintaining stable ABI over branches but some third parties sour=
ces
> are not really good at maintaining stable ABI, so we do hide them into =
private
> where nothing can use it. We do not provide headers for that and we add=
 rpath 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 doe=
s itself
> links to a PRIVATELIB cannot anymore statically link to the said applic=
ation.
>=20
> The is no mechanism to handle PRIVATELIBS in compat*x ports which can b=
e a
> problem if one of our regular lib is linked to a privatelib and ends up=
 into
> compat one day.
>=20
> It prevents easy linking for 3rd party application using those privatel=
ibs 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 p=
refer)
>=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/p=
rivate/${LIB}/

This is basically a requirement to even make some libraries private. (I
may be misremembering details) Anything built against readline wants to
find a readline/*.h but the source in the tree is not stored in a
readline/*.h structure. By installing the actual headers into
/usr/include/private the problem goes away.

> Each private library headers in a custom place to avoid an application =
that
> deliberatly use a given privatelib to find another one
>=20
> Prefix all manpage with private_ so that we can provide the documentati=
on for
> the said libs for the version we ship but if another version is shipped=
 by ports
> then we can easily access both documentation.
>=20

This sounds useful for debugging and developing base applications which
need these private libs.

> As a result bsd.lib.mk will be simpler, we could again static link agai=
nst
> everything we ship in base, we can provide documentation for those libs=
 and we
> can easily isolate them anyway from the ports.
>=20
> I plan to start working on this in a week.
>=20

+1


--=20
Regards,
Bryan Drewery


--69KlI9bmva1VqQBJnaMDv3pG2B3bUDEIV
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBAgAGBQJVOpIvAAoJEDXXcbtuRpfPAfYH/1XuFHv9dws0wgWUiEr3lgp2
zf9pgoqn21YUm0jPY1662P1dHpLLEAE3rTbCVpgCErtF/pA5Afu9O3jomRYtzUP3
RIrUP7/qj03kwvZVvgQIJAgqX5Fj/0I4LMvorW9WDbM9JIEUyqVmNGS/sUs4ljRp
si6MSELNOWQIBuvHFB/qwbHgBwR2x5GXWUkBFdp8InRjSr0qGNvWasb+WV10YuDt
W9QYfnoqG+XouWZZdTIrGm2BSy31kheqX5WzVhFDqW7JwA5O8GIHkTVnay0pxlCw
brNoD0lulyPYzr6neRQwTktofGIqt+KeQ9eARWol5mZmv+rg8WE483IITXKiVoU=
=on6E
-----END PGP SIGNATURE-----

--69KlI9bmva1VqQBJnaMDv3pG2B3bUDEIV--



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