* gnu/packages/patches/racket-rktboot-riscv64-support.patch: Move to ... * gnu/packages/patches/racket-backport-8.10-rktboot.patch: ... this file, together with a related upstreamed patch. * gnu/local.mk (dist_patch_DATA): Update accordingly. * gnu/packages/racket/scm (%racket-origin)[patches]: Likewise. (%racket-version): Update to 8.10. (racket)[inputs]<data, deinprogramm, drracket, gui, htdp, math> <net-cookies, pict, plot, racklog, redex, scribble, slideshow, snip> <typed-racket, string-constants, syntax-color, web-server>: Update hashes. * gnu/packages/chez.scm (chez-scheme-for-racket): Update to 9.9.9-pre-release.17. Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
		
			
				
	
	
		
			130 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 5446e36e0685ec5c7b4f812dec5bf7959db4f906 Mon Sep 17 00:00:00 2001
 | |
| From: Efraim Flashner <efraim@flashner.co.il>
 | |
| Date: Thu, 20 Jul 2023 15:56:21 +0300
 | |
| Subject: [PATCH 1/2] rktboot: Add support for riscv64.
 | |
| 
 | |
| (cherry picked from commit f80c5d001d5235556ae9cde617b1e3a1322d0505)
 | |
| ---
 | |
|  racket/src/rktboot/machine-def.rkt | 1 +
 | |
|  1 file changed, 1 insertion(+)
 | |
| 
 | |
| diff --git a/racket/src/rktboot/machine-def.rkt b/racket/src/rktboot/machine-def.rkt
 | |
| index 8ff0688652..59ebfc88d8 100644
 | |
| --- a/racket/src/rktboot/machine-def.rkt
 | |
| +++ b/racket/src/rktboot/machine-def.rkt
 | |
| @@ -25,6 +25,7 @@
 | |
|                                       [(regexp-match? #rx"^t?arm32" target-machine) "arm32"]
 | |
|                                       [(regexp-match? #rx"^t?arm64" target-machine) "arm64"]
 | |
|                                       [(regexp-match? #rx"^t?ppc32" target-machine) "ppc32"]
 | |
| +                                     [(regexp-match? #rx"^t?rv64" target-machine) "rv64"]
 | |
|                                       [(regexp-match? #rx"^t?pb" target-machine) "pb"]
 | |
|                                       [else (error "machine.def: cannot infer architecture")]))]
 | |
|                 [s (regexp-replace* #rx"[$][(]Mend[)]" s
 | |
| 
 | |
| base-commit: b10ecfb8311fca2d42636eea2ca12aff0b76b208
 | |
| -- 
 | |
| 2.41.0
 | |
| 
 | |
| 
 | |
| From 6261c3582c386e770d654ca6a36f112834f35aef Mon Sep 17 00:00:00 2001
 | |
| From: Philip McGrath <philip@philipmcgrath.com>
 | |
| Date: Sun, 16 Jul 2023 15:47:14 -0400
 | |
| Subject: [PATCH 2/2] rktboot: improve machene type inference
 | |
| 
 | |
| Related to https://issues.guix.gnu.org/62231
 | |
| Related to https://github.com/racket/racket/issues/3948
 | |
| 
 | |
| (cherry picked from commit 005488491cee89e7db38109de4c9dcf2d8d5aef0)
 | |
| ---
 | |
|  racket/src/rktboot/config.rkt | 73 +++++++++++++++++++++++++++++------
 | |
|  1 file changed, 61 insertions(+), 12 deletions(-)
 | |
| 
 | |
| diff --git a/racket/src/rktboot/config.rkt b/racket/src/rktboot/config.rkt
 | |
| index 7a969017ed..2b411e002c 100644
 | |
| --- a/racket/src/rktboot/config.rkt
 | |
| +++ b/racket/src/rktboot/config.rkt
 | |
| @@ -15,20 +15,69 @@
 | |
|                                 (path->complete-path scheme-dir))))))
 | |
|  (hash-set! ht 'make-boot-scheme-dir scheme-dir)
 | |
|  
 | |
| +(define (infer-target-machine)
 | |
| +  ;; Compute a native or pbarch machine string for the current platform.
 | |
| +  ;; Some caveats:
 | |
| +  ;;  1. A pbarch Racket will always infer a pbarch machine,
 | |
| +  ;;     even if a native machine exists. Hopefully this is an
 | |
| +  ;;     unlikely scenario: if you're running Racket CS, you've
 | |
| +  ;;     bootstrapped Chez somehow, so you could use `re.boot`.
 | |
| +  ;;  2. A `tpb` or `pb` Racket on a 32-bit platform would still return
 | |
| +  ;;     64 from `(system-type 'word)`, but, in addition to the above,
 | |
| +  ;;     it is not currently possible or desired to build Racket as
 | |
| +  ;;     `tpb` or `pb` (as opposed to pbarch variants):
 | |
| +  ;;     see <https://github.com/racket/racket/issues/4692>.
 | |
| +  ;;  3. On a hypothetical platform where Chez supported both the
 | |
| +  ;;     architecture and the OS, but not the combination of the two,
 | |
| +  ;;     (e.g. riscv64 Windows) this code would currently return a
 | |
| +  ;;     non-existent native machine (e.g. trv64nt) instead of a
 | |
| +  ;;     working pbarch machine. Presumably this could be fixed if
 | |
| +  ;;     such a platform came into existence.
 | |
| +  (define s (path->string (system-library-subpath #f)))
 | |
| +  (define arch+os
 | |
| +    (cond
 | |
| +      [(regexp-match #rx"^([^\\]+)\\\\([^\\]+)$" s)
 | |
| +       => (λ (m)
 | |
| +            (reverse (cdr m)))]
 | |
| +      [(regexp-match #rx"^([^-]+)-(.+)$" s)
 | |
| +       => cdr]
 | |
| +      [else
 | |
| +       (error 'infer-target-machine "unknown format for system library subpath"
 | |
| +              "produced" (system-library-subpath #f))]))
 | |
| +  (define arch
 | |
| +    (case (car arch+os)
 | |
| +      [("x86_64" "amd64") "a6"] ; https://github.com/racket/racket/issues/4691
 | |
| +      [("i386") "i3"]
 | |
| +      [("aarch64") "arm64"]
 | |
| +      [("arm") "arm32"]
 | |
| +      [("ppc") "ppc32"]
 | |
| +      [("riscv64") "rv64"]
 | |
| +      [("unknown") #f] ; pb machine types
 | |
| +      [else #f]))
 | |
| +  (define os
 | |
| +    (case (cadr arch+os)
 | |
| +      [("macosx" "darwin" "ios") "osx"]
 | |
| +      [("win32" "cygwin") "nt"]
 | |
| +      [("linux" "android") "le"]
 | |
| +      [("gnu-hurd") "gnu"]
 | |
| +      [("freebsd") "fb"]
 | |
| +      [("openbsd") "ob"]
 | |
| +      [("netbsd") "nb"]
 | |
| +      [("solaris") "s2"] ; NOT "sunos4" (I think)
 | |
| +      [("qnx") "qnx"]
 | |
| +      [("unknown") #f] ; pb machine types
 | |
| +      [else #f]))
 | |
| +  (if (and arch os)
 | |
| +      (string-append "t" arch os)
 | |
| +      (format "tpb~a~a"
 | |
| +              (system-type 'word)
 | |
| +              (if (system-big-endian?)
 | |
| +                  "b"
 | |
| +                  "l"))))
 | |
| +
 | |
|  (define target-machine (or (hash-ref ht 'make-boot-targate-machine #f)
 | |
|                             (getenv "MACH")
 | |
| -                           (case (system-type)
 | |
| -                             [(macosx) (if (eqv? 64 (system-type 'word))
 | |
| -                                           "ta6osx"
 | |
| -                                           "ti3osx")]
 | |
| -                             [(windows) (if (eqv? 64 (system-type 'word))
 | |
| -                                           "ta6nt"
 | |
| -                                           "ti3nt")]
 | |
| -                             [else
 | |
| -                              (case (path->string (system-library-subpath #f))
 | |
| -                                [("x86_64-linux") "ta6le"]
 | |
| -                                [("i386-linux") "ti3le"]
 | |
| -                                [else #f])])))
 | |
| +                           (infer-target-machine)))
 | |
|  (hash-set! ht 'make-boot-targate-machine target-machine)
 | |
|  
 | |
|  (define optimize-level-init 3)
 | |
| -- 
 | |
| 2.41.0
 | |
| 
 |