From owner-freebsd-ports@FreeBSD.ORG Wed May 20 16:17:36 2009 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC8561065672 for ; Wed, 20 May 2009 16:17:36 +0000 (UTC) (envelope-from amdmi3@amdmi3.ru) Received: from smtp.timeweb.ru (smtp.timeweb.ru [217.170.79.85]) by mx1.freebsd.org (Postfix) with ESMTP id A18D28FC0A for ; Wed, 20 May 2009 16:17:36 +0000 (UTC) (envelope-from amdmi3@amdmi3.ru) Received: from [213.148.20.85] (helo=hive.panopticon) by smtp.timeweb.ru with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1M6oU5-0007f7-UR; Wed, 20 May 2009 20:17:37 +0400 Received: from hades.panopticon (hades.panopticon [192.168.0.32]) by hive.panopticon (Postfix) with ESMTP id 4407FB84D; Wed, 20 May 2009 20:17:35 +0400 (MSD) Received: by hades.panopticon (Postfix, from userid 1000) id 72479108839; Wed, 20 May 2009 20:17:32 +0400 (MSD) Date: Wed, 20 May 2009 20:17:32 +0400 From: Dmitry Marakasov To: Alexander Churanov Message-ID: <20090520161732.GB18765@hades.panopticon> References: <3cb459ed0905130926n32def691ycecd043f70e522fc@mail.gmail.com> <3cb459ed0905141114v17944e99had31ca4c9dee8fd7@mail.gmail.com> <3cb459ed0905180414s7abc0ff8x37e9ea4a58a25f4@mail.gmail.com> <3cb459ed0905200814x5db6d9eco9df507c7bd32e038@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <3cb459ed0905200814x5db6d9eco9df507c7bd32e038@mail.gmail.com> User-Agent: Mutt/1.5.19 (2009-01-05) Cc: ports@freebsd.org, Jeremy Messenger Subject: Re: devel/boost: what's proper shared library version? X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 May 2009 16:17:37 -0000 * Alexander Churanov (alexanderchuranov@gmail.com) wrote: > Could somebody officially and explicitly tell me, how to assign shared > library versions for new boost ports? > > I see following possibilities: > > 1) Use boost release version as shared library version. > This is safe and recommended by boost. Not official, but couple of thoughts, unfortunately I forgot to anser your previous message regarding .so versioning. As I understand, we now assume ABI breakage on every boost update, correct? In this case .so versioning scheme doesn't really matter, the important thing is to ensure SONAME recorded in .so files has version component. Currently, % objdump -x libboost_regex.so | grep SONAME SONAME libboost_regex.so Thus (example boost-dependent port qtiplot): % ldd /usr/local/bin/qtiplot | grep boost libboost_date_time.so => /usr/local/lib/libboost_date_time.so (0x287be000) If boost is updated, that'll point to NEW libboost_date_time.so, which may have ABI broken. However, if SONAME contains version, it will be like that: % objdump -x libboost_regex.so | grep SONAME SONAME libboost_regex.so.1.39 % ldd /usr/local/bin/qtiplot | grep boost libboost_date_time.so.1.39 => /usr/local/lib/libboost_date_time.so.1.39 (0x287be000) and when boost is upgraded, this will become % ldd /usr/local/bin/qtiplot | grep boost libboost_date_time.so.1.39 => /usr/local/lib/compat/pkg/libboost_date_time.so.1.39 (0x287be000) Thus, we ensure that the application does not pick up boost libraries of different version than it was build with. Aside for that, versioning scheme doesn't really matter. As I understand, that's .so.1.39 vs .so.139 vs .so.5 The difference is that with former you can't specify version in LIB_DEPENDS, i.e. LIB_DEPENDS=boost_date_time.139:${PORTSDIR}/devel/boost, which will make users update boost before building any dependent ports and theoretically catch cases where some port requires new boost version and breaks with the old one. However, that'll be catched in a most ugly way where new boost is built and this fails on installation because old boost is still installed. Also one will need to update version in boost-dependent ports along with portrevision bump. Currently, there are 30 vs 53 ports with unversioned/versioned depend. -- Dmitry Marakasov . 55B5 0596 FF1E 8D84 5F56 9510 D35A 80DD F9D2 F77D amdmi3@amdmi3.ru ..: jabber: amdmi3@jabber.ru http://www.amdmi3.ru