From owner-freebsd-arch@FreeBSD.ORG Sat Apr 11 14:28:42 2015 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0ACEA937 for ; Sat, 11 Apr 2015 14:28:42 +0000 (UTC) Received: from mail-vn0-x229.google.com (mail-vn0-x229.google.com [IPv6:2607:f8b0:400c:c0f::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C2455A61 for ; Sat, 11 Apr 2015 14:28:41 +0000 (UTC) Received: by vnbg62 with SMTP id g62so11443967vnb.6 for ; Sat, 11 Apr 2015 07:28:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:message-id:mime-version:content-type :content-disposition:user-agent; bh=RGASW0jVyIRtDA9YBYk6u8dAR9GQ7GD5s/QZeYhuk6Q=; b=uZwQpGNVvAJJr5pl35bHSznxxpCDdueeeIFp7s7/LrVIU9UWwNcLkdpRKSvQ8SPIme BN+uT6pxa6JC5nL5WljFODmflm74O9xxXmoiQ3tAcgaFRfTmpxY+kdaA7089P24w6l9u Jptr+3jGebdCdFL7jsznw+XLgcAo0kvxXFVzJnSh/2DQ+qt49r9XQsdDRBYpZjS0O7je otLuCK+dCp0aMYns65T19/2daSn1FSI+N8XiSy5md7zkOESX+4u2tbCmH/aDNA6GMIjE 1T8BG5MBjSAYYdMzCW7ISio/DtIXT2f29deWhav8fZeK7/l0DOu3JMLmGTAKHaYDVK4N oZWw== X-Received: by 10.52.230.2 with SMTP id su2mr7135567vdc.4.1428762520662; Sat, 11 Apr 2015 07:28:40 -0700 (PDT) Received: from ivaldir.etoilebsd.net ([2001:41d0:8:db4c::1]) by mx.google.com with ESMTPSA id cf6sm368579vdc.15.2015.04.11.07.28.38 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 11 Apr 2015 07:28:39 -0700 (PDT) Sender: Baptiste Daroussin Date: Sat, 11 Apr 2015 16:28:35 +0200 From: Baptiste Daroussin To: arch@FreeBSD.org Subject: RFC: Alternative to PRIVATELIB Message-ID: <20150411142835.GE65320@ivaldir.etoilebsd.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="uCPdOCrL+PnN2Vxy" Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Apr 2015 14:28:42 -0000 --uCPdOCrL+PnN2Vxy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, I would like to propose to replace PRIVATELIB with something more convenient. 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 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. 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 application. 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 into compat one day. It prevents easy linking for 3rd party application using those privatelibs on purpose (aka with the knowledge abi can break) like libbsdstat. What I would like to propose is the following: Create in bsd.lib.mk support for PRIVATE knobs (what ever name you do prefer) It will just prefix the name of the library with "private" but install it in the regular place It will automatically decide to install the headers into /usr/include/private/${LIB}/ Each private library headers in a custom place to avoid an application that deliberatly use a given privatelib to find another one 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 by ports then we can easily access both documentation. 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 and we can easily isolate them anyway from the ports. I plan to start working on this in a week. Best regards, Bapt --uCPdOCrL+PnN2Vxy Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlUpL5MACgkQ8kTtMUmk6Ey9QgCcDAB/Ox6f3g2Oj0hq8NVst14A iOIAn0wVeO32Cyqje8Ewlds+sSIe53CY =WI1l -----END PGP SIGNATURE----- --uCPdOCrL+PnN2Vxy--