gnu: gcj: Add $libdir to RUNPATH.
* gnu/packages/gcc.scm (gcj)[arguments]: Add build phase to add library output directory to RUNPATH.
This commit is contained in:
		
							parent
							
								
									aa2e989e1e
								
							
						
					
					
						commit
						ad12c43e97
					
				
					 1 changed files with 39 additions and 31 deletions
				
			
		| 
						 | 
				
			
			@ -415,38 +415,47 @@ Go.  It also includes runtime support libraries for these languages.")
 | 
			
		|||
             "--enable-languages=java"
 | 
			
		||||
             ,@(remove (cut string-match "--enable-languages.*" <>)
 | 
			
		||||
                       ,flags))))
 | 
			
		||||
        ((#:phases phases)
 | 
			
		||||
         `(alist-cons-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")))
 | 
			
		||||
       ((#:phases phases)
 | 
			
		||||
        `(modify-phases ,phases
 | 
			
		||||
           (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
 | 
			
		||||
            '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"))
 | 
			
		||||
                (symlink (string-append gcjbin "jcf-dump")
 | 
			
		||||
                         (string-append jvm "/bin/javap"))
 | 
			
		||||
 | 
			
		||||
               (copy-file ecj (string-append gcj "/share/java/ecj.jar"))
 | 
			
		||||
                (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))
 | 
			
		||||
           (alist-cons-after
 | 
			
		||||
                ;; 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")))
 | 
			
		||||
| 
						 | 
				
			
			@ -456,8 +465,7 @@ Go.  It also includes runtime support libraries for these languages.")
 | 
			
		|||
                                     "libjawt.so")
 | 
			
		||||
                         (find-files (string-append out "/bin")
 | 
			
		||||
                                     ".*(c\\+\\+|cpp|g\\+\\+|gcc.*)"))))
 | 
			
		||||
              #t)
 | 
			
		||||
            ,phases)))))))
 | 
			
		||||
              #t))))))))
 | 
			
		||||
 | 
			
		||||
(define ecj-bootstrap-4.8
 | 
			
		||||
  (origin
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue