From patchwork Mon Sep 2 15:32:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mathieu Othacehe X-Patchwork-Id: 15254 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 04FA41734D; Mon, 2 Sep 2019 16:38:09 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 5A09017329 for ; Mon, 2 Sep 2019 16:38:08 +0100 (BST) Received: from localhost ([::1]:37664 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i4oP9-0005EE-Ty for patchwork@mira.cbaines.net; Mon, 02 Sep 2019 11:38:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42536) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i4oMC-0002A0-Up for guix-patches@gnu.org; Mon, 02 Sep 2019 11:35:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i4oMA-0004Ci-Vc for guix-patches@gnu.org; Mon, 02 Sep 2019 11:35:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:50022) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i4oMA-0004Ca-So for guix-patches@gnu.org; Mon, 02 Sep 2019 11:35:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1i4oM9-0006c2-OY for guix-patches@gnu.org; Mon, 02 Sep 2019 11:35:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#36477] [PATCH v3 08/48] gnu: bc: Fix cross-compilation. Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 02 Sep 2019 15:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36477 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 36477@debbugs.gnu.org Received: via spool by 36477-submit@debbugs.gnu.org id=B36477.156743845924990 (code B ref 36477); Mon, 02 Sep 2019 15:35:01 +0000 Received: (at 36477) by debbugs.gnu.org; 2 Sep 2019 15:34:19 +0000 Received: from localhost ([127.0.0.1]:58741 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i4oLL-0006TS-0f for submit@debbugs.gnu.org; Mon, 02 Sep 2019 11:34:19 -0400 Received: from mail-wm1-f67.google.com ([209.85.128.67]:39664) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i4oL6-0006OY-Fi for 36477@debbugs.gnu.org; Mon, 02 Sep 2019 11:34:04 -0400 Received: by mail-wm1-f67.google.com with SMTP id n2so13669399wmk.4 for <36477@debbugs.gnu.org>; Mon, 02 Sep 2019 08:33:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iNlm7lejLUO4LF27OJRpsPNwY4c9reHKEXZ/UbOpFSY=; b=gGhAVoslF2mect+/bRAvbGGVFdLv6dH2DfMGlNR9ZWyg9+askjrnRt8pymGjgAMDIn oEWtqQeWaBi89n4kHnXo6OkpvD3b8HGA4cYtUIphGciP7wB4OtjQyvAUD4lV5/Ren4jN M+ACpy9e29SsK7f8qiUjsak29wK/euAZ6u+eZeeYUuSUegJmxIKK8jZ6uvY9ZRhMf1vr xrVSI+M9zftNlY3tPV1h+sDBD+w8LnaqMvs/cKFCK1v4/shodSydG1h7IM3NwrrQYWiV STWgNHbR9nULXWMQXzFspmYdnCW72nP2E/jB1KvpAYd1y6dw92+E0F/3jwoW/HOS8rke nang== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iNlm7lejLUO4LF27OJRpsPNwY4c9reHKEXZ/UbOpFSY=; b=SMLUFRetWXEAk24rJgqvIX0WHtlp6rG5hiOggbwXWdMlDzplukp2Twky8ZogcmSuP7 5eIgRWecbgkH6kjNAhHh5qEwNEhHI4S3V9SUvDmn0ifyX+9rNBVfwtRsFkFtBpKuzCgq axMR1AssN8kRxXVpkdc/NjRnl0vICyOpvxdqu/6IGNN0z5HP3YWdhbteVU452djxi9Dm 1lyrK+1pID35BgB/P18htKZq5xGkRz8KYEnK/ilz+2np7CsdrHhq40pE4fOx7dYx2ClO hV8Przlv8wdmeyaktuKqvJAp7cNa2HYi9SeOGfsM/yk/fEQGrDvJAetK31j3r4pove52 tR1Q== X-Gm-Message-State: APjAAAVSswip7ZsJiOTkYzjjTR3Gxyfewu5XzqHnnWkyH0+6WrUScYeu HNPs0E6fsWqIljeB59qYa5rEL8Vk X-Google-Smtp-Source: APXvYqxzQ4C9dZL5XoK9k0AE3wCSKPZNugFnyAL7qMzR3azpFkD2Qp4sADyQKSt1/bBvK+ndLIcZwg== X-Received: by 2002:a1c:c589:: with SMTP id v131mr9943423wmf.163.1567438430641; Mon, 02 Sep 2019 08:33:50 -0700 (PDT) Received: from localhost.localdomain ([80.12.63.115]) by smtp.gmail.com with ESMTPSA id b26sm17232265wmj.14.2019.09.02.08.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Sep 2019 08:33:50 -0700 (PDT) From: Mathieu Othacehe Date: Mon, 2 Sep 2019 17:32:53 +0200 Message-Id: <20190902153333.11190-9-m.othacehe@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190902153333.11190-1-m.othacehe@gmail.com> References: <20190902153333.11190-1-m.othacehe@gmail.com> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mathieu Othacehe Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * gnu/packages/patches/bc-fix-cross-compilation.patch: New patch file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/algebra.scm (bc)[origin]: Apply it, [native-inputs]: Add automake and autoconf, [arguments]: Add a new 'autogen phase that is needed by the new patch. --- gnu/local.mk | 1 + gnu/packages/algebra.scm | 15 +- .../patches/bc-fix-cross-compilation.patch | 171 ++++++++++++++++++ 3 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/bc-fix-cross-compilation.patch diff --git a/gnu/local.mk b/gnu/local.mk index d60370fc3d..0bfde340ec 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -701,6 +701,7 @@ dist_patch_DATA = \ %D%/packages/patches/bash-linux-pgrp-pipe.patch \ %D%/packages/patches/bastet-change-source-of-unordered_set.patch \ %D%/packages/patches/bazaar-CVE-2017-14176.patch \ + %D%/packages/patches/bc-fix-cross-compilation.patch \ %D%/packages/patches/beets-python-3.7-fix.patch \ %D%/packages/patches/beignet-correct-file-names.patch \ %D%/packages/patches/benchmark-unbundle-googletest.patch \ diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index fb9e78bf92..2b43e5f2a8 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2017, 2019 Eric Bavier +;;; Copyright © 2019 Mathieu Othacehe ;;; ;;; This file is part of GNU Guix. ;;; @@ -681,15 +682,23 @@ binary.") (uri (string-append "mirror://gnu/bc/bc-" version ".tar.gz")) (sha256 (base32 - "0amh9ik44jfg66csyvf4zz1l878c4755kjndq9j0270akflgrbb2")))) + "0amh9ik44jfg66csyvf4zz1l878c4755kjndq9j0270akflgrbb2")) + (patches (search-patches "bc-fix-cross-compilation.patch")))) (build-system gnu-build-system) (native-inputs - `(("ed" ,ed) + `(("automake" ,automake) + ("autoconf" ,autoconf) + ("ed" ,ed) ("flex" ,flex) ("texinfo" ,texinfo))) (arguments '(#:configure-flags - (list "--with-readline"))) + (list "--with-readline") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'autogen + (lambda _ + (invoke "autoreconf" "-vif")))))) (home-page "https://www.gnu.org/software/bc/") (synopsis "Arbitrary precision numeric processing language") (description diff --git a/gnu/packages/patches/bc-fix-cross-compilation.patch b/gnu/packages/patches/bc-fix-cross-compilation.patch new file mode 100644 index 0000000000..14dfecdbde --- /dev/null +++ b/gnu/packages/patches/bc-fix-cross-compilation.patch @@ -0,0 +1,171 @@ +Patch taken from nix. + +commit fdda59736ddc048cf38a2c7103f4f5d9eeaf995e +Author: Ben Gamari +Date: Tue Oct 17 10:51:34 2017 -0400 + + Try implementing cross-compilation + +diff --git a/bc/Makefile.am b/bc/Makefile.am +index d9d412e..fdef633 100644 +--- a/bc/Makefile.am ++++ b/bc/Makefile.am +@@ -17,6 +17,7 @@ MAINTAINERCLEANFILES = Makefile.in bc.c bc.h scan.c \ + + AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/../h + LIBBC = ../lib/libbc.a ++LIBBC_HOST = ../lib/libbc_host.a + LIBL = @LEXLIB@ + LDADD = $(LIBBC) $(LIBL) @READLINELIB@ + +@@ -29,12 +30,20 @@ $(PROGRAMS): libmath.h $(LIBBC) + scan.o: bc.h + global.o: libmath.h ++ ++main_host.c : main.c ++ cp $< $@ + +-fbcOBJ = main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o ++fbcOBJ = $(addsuffix _host,main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o) ++ ++%.o_host : CC:=$(CC_FOR_BUILD) ++ ++%.o_host : %.c ++ $(COMPILE) -c $(CFLAGS) $(INCLUDES) -o $@ $< + +-libmath.h: libmath.b $(fbcOBJ) $(LIBBC) ++libmath.h: libmath.b $(fbcOBJ) $(LIBBC_HOST) + echo '{0}' > libmath.h +- $(MAKE) global.o +- $(LINK) -o fbc $(fbcOBJ) global.o $(LIBBC) $(LIBL) $(READLINELIB) $(LIBS) ++ $(MAKE) global.o_host ++ $(CC_FOR_BUILD) -o fbc $(fbcOBJ) global.o_host $(LIBBC_HOST) $(LIBL) ${READLINELIB} $(LIBS) + ./fbc -c $(srcdir)/libmath.b libmath.h + $(srcdir)/fix-libmath_h + rm -f ./fbc ./global.o +diff --git a/configure.ac b/configure.ac +index fc74573..5cabb73 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -20,6 +20,7 @@ m4_define([dc_version], 1.4.1) + + AC_INIT([bc],[bc_version]) + AC_CONFIG_SRCDIR(doc/bc.1) ++AC_CONFIG_MACRO_DIR([m4]) + AM_INIT_AUTOMAKE([dist-bzip2]) + AC_CONFIG_HEADERS(config.h) + +@@ -35,6 +36,7 @@ AC_DEFINE([DC_COPYRIGHT], + [Define the dc copyright line.]) + + AC_PROG_CC ++AX_CC_FOR_BUILD + AC_USE_SYSTEM_EXTENSIONS + + AM_PROG_LEX +diff --git a/lib/Makefile.am b/lib/Makefile.am +index ec4bf59..c670f5b 100644 +--- a/lib/Makefile.am ++++ b/lib/Makefile.am +@@ -1,5 +1,5 @@ + ## Process this file with automake to produce Makefile.in +-noinst_LIBRARIES = libbc.a ++noinst_LIBRARIES = libbc.a libbc_host.a + + AM_CPPFLAGS = -I. -I.. -I$(srcdir)/../h + +@@ -24,3 +24,11 @@ testmul: testmul.o number.o + + specialnumber: newnumber.o + cp newnumber.o number.o ++ ++%.o_host : CC:=$(CC_FOR_BUILD) ++%.o_host : %.c ++ $(COMPILE) -c $(CFLAGS) $(INCLUDES) -o $@ $< ++ ++libbc_host.a : $(addsuffix _host,$(libbc_a_OBJECTS)) ++ ar cru $@ $+ ++ ranlib $@ +diff --git a/m4/cc_for_build.m4 b/m4/cc_for_build.m4 +new file mode 100644 +index 0000000..c62ffad +--- /dev/null ++++ b/m4/cc_for_build.m4 +@@ -0,0 +1,77 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_cc_for_build.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CC_FOR_BUILD ++# ++# DESCRIPTION ++# ++# Find a build-time compiler. Sets CC_FOR_BUILD and EXEEXT_FOR_BUILD. ++# ++# LICENSE ++# ++# Copyright (c) 2010 Reuben Thomas ++# Copyright (c) 1999 Richard Henderson ++# ++# This program is free software: you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by the ++# Free Software Foundation, either version 3 of the License, or (at your ++# option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ++# Public License for more details. ++# ++# You should have received a copy of the GNU General Public License along ++# with this program. If not, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 3 ++ ++dnl Get a default for CC_FOR_BUILD to put into Makefile. ++AC_DEFUN([AX_CC_FOR_BUILD], ++[# Put a plausible default for CC_FOR_BUILD in Makefile. ++if test -z "$CC_FOR_BUILD"; then ++ if test "x$cross_compiling" = "xno"; then ++ CC_FOR_BUILD='$(CC)' ++ else ++ CC_FOR_BUILD=gcc ++ fi ++fi ++AC_SUBST(CC_FOR_BUILD) ++# Also set EXEEXT_FOR_BUILD. ++if test "x$cross_compiling" = "xno"; then ++ EXEEXT_FOR_BUILD='$(EXEEXT)' ++else ++ AC_CACHE_CHECK([for build system executable suffix], bfd_cv_build_exeext, ++ [rm -f conftest* ++ echo 'int main () { return 0; }' > conftest.c ++ bfd_cv_build_exeext= ++ ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5 ++ for file in conftest.*; do ++ case $file in ++ *.c | *.o | *.obj | *.ilk | *.pdb) ;; ++ *) bfd_cv_build_exeext=`echo $file | sed -e s/conftest//` ;; ++ esac ++ done ++ rm -f conftest* ++ test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no]) ++ EXEEXT_FOR_BUILD="" ++ test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} ++fi ++AC_SUBST(EXEEXT_FOR_BUILD)])dnl