From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Enge Subject: Re: 01/01: gnu: boost: Update to 1.58.0. Date: Fri, 10 Jul 2015 01:17:55 +0200 Message-ID: <20150709231755.GA16506@debian> References: <20150708211909.12880.83730@vcs.savannah.gnu.org> <87mvz6kzw6.fsf@netris.org> <87a8v5ng8o.fsf@netris.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="cNdxnHkX5QqsyA0e" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48878) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZDL4t-0007EY-8O for guix-devel@gnu.org; Thu, 09 Jul 2015 19:18:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZDL4q-0008An-1i for guix-devel@gnu.org; Thu, 09 Jul 2015 19:18:03 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:60841) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZDL4p-0008AB-Nd for guix-devel@gnu.org; Thu, 09 Jul 2015 19:17:59 -0400 Content-Disposition: inline In-Reply-To: <87a8v5ng8o.fsf@netris.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Mark H Weaver Cc: guix-devel@gnu.org --cNdxnHkX5QqsyA0e Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, Jul 09, 2015 at 06:00:39PM -0400, Mark H Weaver wrote: > Boost turns out to be an important package. The fallout from this is > 412 newly failed builds on mips64el: > http://hydra.gnu.org/eval/105333#tabs-now-fail I do not quite understand this number, it should be 65 according to the first link. But anyway, it is an important package. I noticed the problem this morning when looking at hydra, and did a quick check, by grepping for "-m32". It appears in boost_1_58_0/tools/build/src/tools/gcc.jam: rule setup-address-model ( targets * : sources * : properties * ) { local model = [ feature.get-values address-model : $(properties) ] ; if $(model) { local option ; local os = [ feature.get-values target-os : $(properties) ] ; if $(os) = aix ... else if $(os) = hpux ... else { local arch = [ feature.get-values architecture : $(properties) ] ; if $(arch) != arm { if $(model) = 32 { option = -m32 ; } else if $(model) = 64 { option = -m64 ; } } # For darwin, the model can be 32_64. darwin.jam will handle that # on its own. } OPTIONS on $(targets) += $(option) ; } } So it might be enough to exclude mips (or something starting with "mips") at the same time as arm. On the other hand, I just checked that the same expressions were already there in 1.57, so this cannot be the problem. And on yet another hand, I made a recursive diff of boost 1.57 and 1.58 and grepped for '\-m32', without success. So the change must be more subtle. The build log for 1.58 contains the following: starting phase `build' Performing configuration checks - 32-bit : yes - arm : no - mips1 : no - power : no - sparc : no - x86 : no - combined : no Building the Boost C++ Libraries. - has_icu builds : no warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam - zlib : no - iconv (libc) : no - iconv (separate) : no - icu : no - icu (lib64) : no - Boost.Locale needs either iconv or ICU library to be built. - Boost.Locale needs either iconv or ICU library to be built. - Boost.Locale needs either iconv or ICU library to be built. - Boost.Locale needs either iconv or ICU library to be built. - Boost.Locale needs either iconv or ICU library to be built. - Boost.Locale needs either iconv or ICU library to be built. - x86 : no - arm : no - mips1 : no - power : no - sparc : no - lockfree boost::atomic_flag : no - gcc visibility : no - long double support : no For the last (working) build of boost 1.57, the corresponding passage was: starting phase `build' Building the Boost C++ Libraries. Performing configuration checks - has_icu builds : no warning: Graph library does not contain MPI-based parallel components. note: to enable them, add "using mpi ;" to your user-config.jam - zlib : yes - iconv (libc) : yes - icu : no - icu (lib64) : no - x86 : no - arm : no - mips1 : no - power : no - sparc : no - lockfree boost::atomic_flag : yes - gcc visibility : yes - long double support : yes The new line "32-bit: yes" looks suspicious. Strangely enough, it was already present in boost 1.57 for i686, and similar lines ("32-bit: no 64-bit: yes") for x86_64. So I think that the logic for checking for 32 bits changed. When I try to build by hand (with the toolchain from debian jessie, not guix) on my mips machine, the first few lines are Performing configuration checks - 32-bit : yes - arm : no - mips1 : yes Building the Boost C++ Libraries. This is already different; on hydra, the mips architecture is apparently not recognised. But I also get the additional "-m32" flag and the subsequent build failure. I tried to replace in the above file gcc.jam the line if $(arch) != arm by if $(arch) = x86 The build starts and compiles a few files without problem. I need to stop now, but can make more thorough tests tomorrow, unless you feel like giving the attached patch a try on mips and x86, which could be helpful: The last time I updated my guix on mips was before the core-updates merge, so it may be a long while until I catch up. If you wish, you may also revert the boost upgrade for the time being. Andreas --cNdxnHkX5QqsyA0e Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="boost-mips-avoid-m32.patch" diff -u -r boost_1_58_0.orig/tools/build/src/tools/gcc.jam boost_1_58_0/tools/build/src/tools/gcc.jam --- boost_1_58_0.orig/tools/build/src/tools/gcc.jam 2015-04-04 19:25:07.000000000 +0200 +++ boost_1_58_0/tools/build/src/tools/gcc.jam 2015-07-10 01:08:19.822733823 +0200 @@ -451,7 +451,7 @@ else { local arch = [ feature.get-values architecture : $(properties) ] ; - if $(arch) != arm + if $(arch) = x86 { if $(model) = 32 { --cNdxnHkX5QqsyA0e--