From owner-freebsd-ports@freebsd.org Thu Feb 9 17:06:27 2017 Return-Path: Delivered-To: freebsd-ports@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E2486CD6D79 for ; Thu, 9 Feb 2017 17:06:27 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7772E1300; Thu, 9 Feb 2017 17:06:27 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id v19H6MBU033880 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 9 Feb 2017 19:06:22 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua v19H6MBU033880 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id v19H6Md8033878; Thu, 9 Feb 2017 19:06:22 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 9 Feb 2017 19:06:22 +0200 From: Konstantin Belousov To: Matthew Seaman Cc: freebsd-ports@freebsd.org Subject: Re: Install of pkg fuse-ntfs fails because of undefined symbol in pkg!?! Message-ID: <20170209170622.GN2092@kib.kiev.ua> References: <1c6cccac-b151-d13c-c763-b336c4680118@freebsd.org> <35a953e3-918b-fc32-d990-51f7da16c884@FreeBSD.org> <20170209161249.GL2092@kib.kiev.ua> <73E2F71C-0C7E-49A3-8D98-3AECA8F40F99@lastsummer.de> <3FB972B7-F9B7-4EAE-9C06-9DCECD5F6531@lastsummer.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.7.2 (2016-11-26) X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED,PLING_QUERY autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Feb 2017 17:06:28 -0000 On Thu, Feb 09, 2017 at 04:42:45PM +0000, Matthew Seaman wrote: > Why do you think it is not being enforced? Forwards compatibility means > that during the lifetime of a major branch you can only *add* symbols to > the system shared libraries, not remove them nor modify any existing > symbols. The project has held to that for many years -- not breaking > ABI forwards compatibility is a really big deal amongst developers. We try hard to not break ABI backward compatibility between branches as well, at least for user code (see below). In particular, versioned libraries in base must be fully backward compatible between branches. Whole set of the base C runtime libraries is versioned, i.e. rtld/libc/libthr/libm. libc++ is versioned as well. For non-versioned libraries, our promise is that on ABI breakage of any kind, the library version (the libXXX.so.N, the N part) is bumped so backward compatibility can be provided in some form by installing previous version of the library. This is done, besides other means, by misc/compatX ports. The explanation above is of course, simplified, and somewhat incorrect. To make it correct would require amount of work which is apparently too much for single person to do and still be sane. You can see it that the project' ABI promise is not formalized even on wiki. Place were ABI is very badly broken regularly is the management interfaces. For instance, you are almost guaranteed that ifconfig(8) from a major branch works only with the kernels on the same branch, and even then, you must have the binary built with headers from very close kernel version. Same for cam(4). Formalizing these exceptions is the hard part of writing the ABI guarantee document.