~ruther/guix-local

9117448e7601b10b84106771bd0c6c1f60e645df — Ricardo Wurmus 8 years ago e441fc5
gnu: Remove GCJ.

* gnu/packages/patches/gcj-arm-mode.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Delete it.
* gnu/packages/gcc.scm (javac.in, gcj, ecj-bootstrap): Remove variables.
3 files changed, 1 insertions(+), 172 deletions(-)

M gnu/local.mk
M gnu/packages/gcc.scm
D gnu/packages/patches/gcj-arm-mode.patch
M gnu/local.mk => gnu/local.mk +0 -1
@@ 607,7 607,6 @@ dist_patch_DATA =						\
  %D%/packages/patches/gcc-5-source-date-epoch-2.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/gdk-pixbuf-list-dir.patch		\
  %D%/packages/patches/gd-fix-gd2-read-test.patch		\
  %D%/packages/patches/gd-fix-tests-on-i686.patch		\

M gnu/packages/gcc.scm => gnu/packages/gcc.scm +1 -135
@@ 1,7 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2014, 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>


@@ 559,140 559,6 @@ as the 'native-search-paths' field."
              ;; a cyclic dependency.  <http://debbugs.gnu.org/18101>
              #:separate-lib-output? #f))

(define javac.in
  (origin
    (method url-fetch)
    (uri (string-append "http://sources.gentoo.org/cgi-bin/viewvc.cgi/"
                        "gentoo-x86/dev-java/gcj-jdk/files/javac.in?revision=1.1"))
    (file-name "javac.in")
    (sha256 (base32
              "1c3dk4z5yfj6ic2fn3lyxs27n6pmn2wy9k0r1s17lnkf1bzkrciv"))))

(define-public gcj
  (package (inherit gcc)
    (name "gcj")
    (version (package-version gcc))
    (inputs
     `(("fastjar" ,fastjar)
       ("perl" ,perl)
       ("javac.in" ,javac.in)
       ("ecj-bootstrap" ,ecj-bootstrap)
       ,@(package-inputs gcc)))
    (native-inputs
     `(("dejagnu" ,dejagnu)
       ,@(if (string-prefix? "armhf" (or (%current-system)
                                         (%current-target-system)))
             `(("arm-patch" ,(origin
                               (method url-fetch)
                               (uri (search-patch "gcj-arm-mode.patch"))
                               (sha256
                                (base32
                                 "1z15xs5yx6qinnb572swzxrn9f668sw7ga5280q3gznj1jyrynfn")))))
             '())
       ,@(package-native-inputs gcc)))
    (native-search-paths %generic-search-paths)

    ;; Suppress the separate "lib" output, because otherwise the
    ;; "lib" and "out" outputs would refer to each other, creating
    ;; a cyclic dependency.  <http://debbugs.gnu.org/18101>
    (outputs
     (delete "lib" (package-outputs gcc)))
    (arguments
     (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system)
                                                (guix build utils)
                                                (ice-9 regex)
                                                (srfi srfi-1)
                                                (srfi srfi-26))
                                     #:test-target "check-target-libjava"
                                     ,@(package-arguments gcc))
       ((#:tests? _) #t)
       ((#:configure-flags flags)
        `(let ((ecj (assoc-ref %build-inputs "ecj-bootstrap")))
           `("--enable-java-home"
             "--enable-gjdoc"
             ,(string-append "--with-ecj-jar=" ecj)
             "--enable-languages=java"
             ,@(remove (cut string-match "--enable-languages.*" <>)
                       ,flags))))
       ((#:phases phases)
        `(modify-phases ,phases
           ;; Conditionally add phase to apply patch
           ,@(if (string-prefix? "armhf" (or (%current-system)
                                             (%current-target-system)))
                 `((add-after 'unpack 'apply-arm-patch
                     (lambda* (#:key inputs #:allow-other-keys)
                       (zero? (system* "patch" "-p1"
                                       "-i" (assoc-ref inputs "arm-patch"))))))
                 '())
           (add-after
            'unpack 'add-lib-output-to-rpath
            (lambda _
              (substitute* "libjava/Makefile.in"
                (("libgcj_bc_dummy_LINK = .* -shared" line)
                 (string-append line " -Wl,-rpath=$(libdir)"))
                (("libgcj(_bc)?_la_LDFLAGS =" ldflags _)
                 (string-append ldflags " -Wl,-rpath=$(libdir)")))))
           (add-after
            '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))
           (add-after
            'install 'install-javac-and-javap-wrappers
            (lambda _
              (let* ((javac  (assoc-ref %build-inputs "javac.in"))
                     (ecj    (assoc-ref %build-inputs "ecj-bootstrap"))
                     (gcj    (assoc-ref %outputs "out"))
                     (gcjbin (string-append gcj "/bin/"))
                     (jvm    (string-append gcj "/lib/jvm/"))
                     (target (string-append jvm "/bin/javac")))

                (symlink (string-append gcjbin "jcf-dump")
                         (string-append jvm "/bin/javap"))

                (copy-file ecj (string-append gcj "/share/java/ecj.jar"))

                ;; Create javac wrapper from the template javac.in by
                ;; replacing the @VARIABLES@ with paths.
                (copy-file javac target)
                (patch-shebang target)
                (substitute* target
                  (("@JAVA@")
                   (string-append jvm "/bin/java"))
                  (("@ECJ_JAR@")
                   (string-append gcj "/share/java/ecj.jar"))
                  (("@RT_JAR@")
                   (string-append jvm "/jre/lib/rt.jar"))
                  (("@TOOLS_JAR@")
                   (string-append jvm "/lib/tools.jar")))
                (chmod target #o755)
                #t)))
           (add-after
            'install 'remove-broken-or-conflicting-files
            (lambda _
              (let ((out (assoc-ref %outputs "out")))
                (for-each
                 delete-file
                 (append (find-files (string-append out "/lib/jvm/jre/lib")
                                     "libjawt.so")
                         (find-files (string-append out "/bin")
                                     ".*(c\\+\\+|cpp|g\\+\\+|gcc.*)"))))
              #t))))))))

(define ecj-bootstrap
  (origin
    (method url-fetch)
    (uri "ftp://sourceware.org/pub/java/ecj-4.9.jar")
    (sha256
     (base32
      "1k9lgm3qamf6zy534pa2zwskr8mpiqrngbv1vw9j4y1ghrdyf1lm"))))

(define-public gcc-objc-4.8
  (custom-gcc gcc-4.8 "gcc-objc" '("objc")
              (list (search-path-specification

D gnu/packages/patches/gcj-arm-mode.patch => gnu/packages/patches/gcj-arm-mode.patch +0 -36
@@ 1,36 0,0 @@
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/libjava/configure.host
+++ b/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/gcc/java/lang-specs.h
+++ b/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/libjava/libgcj.spec.in
+++ b/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