~ruther/guix-local

dbf8f84f15fb80fa41caeed073460853083e48d3 — Ricardo Wurmus 9 years ago 253cdd6
gnu: gcj: Fix build on armhf.

* gnu/packages/patches/gcj-arm-mode.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add patch.
* gnu/packages/gcc.scm (gcj): Add patch.
[arguments]: Delete failing tests.
3 files changed, 51 insertions(+), 0 deletions(-)

M gnu/local.mk
M gnu/packages/gcc.scm
A gnu/packages/patches/gcj-arm-mode.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 554,6 554,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/gcc-5.0-libvtv-runpath.patch		\
  %D%/packages/patches/gcc-6-arm-none-eabi-multilib.patch	\
  %D%/packages/patches/gcc-6-cross-environment-variables.patch	\
  %D%/packages/patches/gcj-arm-mode.patch			\
  %D%/packages/patches/gd-CVE-2016-7568.patch			\
  %D%/packages/patches/gd-CVE-2016-8670.patch			\
  %D%/packages/patches/gd-fix-chunk-size-on-boundaries.patch	\

M gnu/packages/gcc.scm => gnu/packages/gcc.scm +14 -0
@@ 521,6 521,16 @@ as the 'native-search-paths' field."
(define-public gcj
  (package (inherit gcc)
    (name "gcj")
    (version (package-version gcc))
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gcc/gcc-"
                                  version "/gcc-" version ".tar.bz2"))
              (sha256
               (base32
                "0zmnm00d2a1hsd41g34bhvxzvxisa2l584q3p447bd91lfjv4ci3"))
              (patches (cons (search-patch "gcj-arm-mode.diff")
                             (origin-patches (package-source gcc))))))
    (inputs
     `(("fastjar" ,fastjar)
       ("perl" ,perl)


@@ 568,6 578,10 @@ as the 'native-search-paths' field."
            'unpack 'patch-testsuite
            ;; dejagnu-1.6 removes the 'absolute' command
            (lambda _
              ;; This test fails on armhf.  It seems harmless enough to disable it.
              (for-each delete-file '("libjava/testsuite/libjava.lang/Throw_2.java"
                                      "libjava/testsuite/libjava.lang/Throw_2.out"
                                      "libjava/testsuite/libjava.lang/Throw_2.jar"))
              (substitute* "libjava/testsuite/lib/libjava.exp"
                (("absolute") "file normalize"))
              #t))

A gnu/packages/patches/gcj-arm-mode.patch => gnu/packages/patches/gcj-arm-mode.patch +36 -0
@@ 0,0 1,36 @@
Taken from
https://sources.debian.net/data/main/g/gcc-4.9/4.9.2-10/debian/patches/gcj-arm-mode.diff

# DP: For armhf, force arm mode instead of thumb mode

--- a/src/libjava/configure.host
+++ b/src/libjava/configure.host
@@ -66,6 +66,9 @@
     ;;
 esac
 
+# on armhf force arm mode
+libgcj_flags="${libgcj_flags} -marm"
+
 AM_RUNTESTFLAGS= 
 
 # Set any host dependent compiler flags.
--- a/src/gcc/java/lang-specs.h
+++ b/src/gcc/java/lang-specs.h
@@ -47,7 +47,7 @@
     %{.class|.zip|.jar|!fsyntax-only:jc1				\
       %{.java|fsaw-java-file:%U.jar -fsource-filename=%i %<ffilelist-file} \
       %{.class|.zip|.jar|ffilelist-file|fcompile-resource*:%i}		\
-      %(jc1) %(cc1_options) %{I*} %{!findirect-dispatch:-faux-classpath %U.zip} \
+      %(jc1) %(cc1_options) -marm %{I*} %{!findirect-dispatch:-faux-classpath %U.zip} \
       %{MD:-MD_} %{MMD:-MMD_} %{M} %{MM} %{MA} %{MT*} %{MF*}\
       %(invoke_as)}",
       0, 0, 0},
--- a/src/libjava/libgcj.spec.in
+++ b/src/libjava/libgcj.spec.in
@@ -9,4 +9,4 @@
 %rename lib liborig
 *lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ @LIBMATHSPEC@ @LDLIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig)
 
-*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ @LIBGCJ_BC_SPEC@ -fkeep-inline-functions
+*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ @LIBGCJ_BC_SPEC@ -fkeep-inline-functions -marm