guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: gnu: apr: Fix building on powerpc-linux.


From: guix-commits
Subject: branch master updated: gnu: apr: Fix building on powerpc-linux.
Date: Wed, 02 Aug 2023 13:25:03 -0400

This is an automated email from the git hooks/post-receive script.

efraim pushed a commit to branch master
in repository guix.

The following commit(s) were added to refs/heads/master by this push:
     new 23e2ff223c gnu: apr: Fix building on powerpc-linux.
23e2ff223c is described below

commit 23e2ff223c0511317edf236504fb474e3b5ac301
Author: Efraim Flashner <efraim@flashner.co.il>
AuthorDate: Wed Aug 2 20:23:01 2023 +0300

    gnu: apr: Fix building on powerpc-linux.
    
    * gnu/packages/apr.scm (apr): When building for powerpc-linux add a
    phase to apply a patch.
    [native-inputs]: When building for powerpc-linux add a patch.
    * gnu/packages/patches/apr-fix-atomics.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                               |  1 +
 gnu/packages/apr.scm                       | 21 +++++++++++--
 gnu/packages/patches/apr-fix-atomics.patch | 49 ++++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 393a773e17..c603c15d6c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -904,6 +904,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch  \
   %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch  \
   %D%/packages/patches/aoflagger-use-system-provided-pybind11.patch \
+  %D%/packages/patches/apr-fix-atomics.patch                   \
   %D%/packages/patches/apr-skip-getservbyname-test.patch       \
   %D%/packages/patches/ark-skip-xar-test.patch                 \
   %D%/packages/patches/arpack-ng-propagate-rng-state.patch     \
diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm
index aedddd8644..aac3822eae 100644
--- a/gnu/packages/apr.scm
+++ b/gnu/packages/apr.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,8 @@
   #:use-module ((guix licenses) #:prefix l:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages perl)
@@ -46,9 +49,23 @@
      ;; Sometimes we end up with two processes concurrently trying to make
      ;; 'libmod_test.la': <http://hydra.gnu.org/build/60266/nixlog/2/raw>.
      ;; Thus, build sequentially.
-     '(#:parallel-build? #f
-       #:parallel-tests? #f))
+     `(#:parallel-build? #f
+       #:parallel-tests? #f
+       ,@(if (target-ppc32?)
+           `(#:phases
+             (modify-phases %standard-phases
+               (add-after 'unpack 'patch-sources
+                 (lambda* (#:key inputs native-inputs #:allow-other-keys)
+                   (invoke "patch" "-p1" "--force" "--input"
+                           (assoc-ref (or native-inputs inputs)
+                                      "atomics-patch"))))))
+           '())))
     (inputs (list perl libltdl))
+    (native-inputs
+     `(,@(if (target-ppc32?)
+           `(("atomics-patch"
+              ,(local-file (search-patch "apr-fix-atomics.patch"))))
+           '())))
     (home-page "https://apr.apache.org/";)
     (synopsis "The Apache Portable Runtime Library")
     (description
diff --git a/gnu/packages/patches/apr-fix-atomics.patch 
b/gnu/packages/patches/apr-fix-atomics.patch
new file mode 100644
index 0000000000..94cce9b5f1
--- /dev/null
+++ b/gnu/packages/patches/apr-fix-atomics.patch
@@ -0,0 +1,49 @@
+This patch is taken from Debian, using Debian version 1.7.0-8.
+A new patch will be needed when apr is updated.
+
+# quick and dirty fix for FTBFS on mipsel
+# There should be a proper configure check, see 
+# https://bz.apache.org/bugzilla/show_bug.cgi?id=63566
+Index: apr-1.7.0/include/arch/unix/apr_arch_atomic.h
+===================================================================
+--- apr-1.7.0.orig/include/arch/unix/apr_arch_atomic.h
++++ apr-1.7.0/include/arch/unix/apr_arch_atomic.h
+@@ -26,6 +26,9 @@
+ /* noop */
+ #elif HAVE_ATOMIC_BUILTINS
+ #   define USE_ATOMICS_BUILTINS
++#   if (__INTPTR_WIDTH__ == 32) && ( defined(__MIPSEL__) || 
defined(__powerpc__) ) || defined(__m68k__) || defined(__sh__)
++#       define NEED_ATOMICS_GENERIC64
++#   endif
+ #elif defined(SOLARIS2) && SOLARIS2 >= 10
+ #   define USE_ATOMICS_SOLARIS
+ #   define NEED_ATOMICS_GENERIC64
+Index: apr-1.7.0/atomic/unix/builtins64.c
+===================================================================
+--- apr-1.7.0.orig/atomic/unix/builtins64.c
++++ apr-1.7.0/atomic/unix/builtins64.c
+@@ -16,7 +16,7 @@
+ 
+ #include "apr_arch_atomic.h"
+ 
+-#ifdef USE_ATOMICS_BUILTINS
++#if defined(USE_ATOMICS_BUILTINS) && ! defined(NEED_ATOMICS_GENERIC64)
+ 
+ APR_DECLARE(apr_uint64_t) apr_atomic_read64(volatile apr_uint64_t *mem)
+ {
+Index: apr-1.7.0/atomic/unix/builtins.c
+===================================================================
+--- apr-1.7.0.orig/atomic/unix/builtins.c
++++ apr-1.7.0/atomic/unix/builtins.c
+@@ -20,7 +20,11 @@
+ 
+ APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p)
+ {
++#if defined (NEED_ATOMICS_GENERIC64)
++    return apr__atomic_generic64_init(p);
++#else
+     return APR_SUCCESS;
++#endif
+ }
+ 
+ APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]