mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: racket: Use Git origins for Racket packages.
* gnu/packages/patches/racket-gui-tethered-launcher-backport.patch: Adjust path. * gnu/packages/racket.scm (racket-packages-origin) (simple-racket-origin): New procedures. (extend-layer): Rename to ... (configure-layer.rkt): ... this variable. Tweak command-line arguments. Adapt to 'config-tethered-apps-dir'. (racket): Stop inheriting from 'racket-minimal'. [version]: Use '%racket-version'. [source]: Stop using bundled tarball. [inputs]: Remove labels. Add 'racket-minimal' and package sources. [native-inputs]: Reduce to racket-minimal. Untested, as cross-compilation doesn't work yet. [arguments]: Rewrite to use G-expressions, package sources from 'inputs', an explicit 'install' phase, and the revised 'configure-layer.rkt'. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
parent
56cf53fb7b
commit
81e532ff19
2 changed files with 540 additions and 180 deletions
|
@ -7,13 +7,13 @@ Related to racket/racket#4133
|
|||
|
||||
(cherry picked from commit 563c68432f127729592f234ef30c31e92618b517)
|
||||
---
|
||||
share/pkgs/gui-lib/mred/installer.rkt | 3 ++-
|
||||
gui-lib/mred/installer.rkt | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gui-lib/mred/installer.rkt b/gui-lib/mred/installer.rkt
|
||||
index b1691472..9ef06c53 100644
|
||||
--- a/share/pkgs/gui-lib/mred/installer.rkt
|
||||
+++ b/share/pkgs/gui-lib/mred/installer.rkt
|
||||
--- a/gui-lib/mred/installer.rkt
|
||||
+++ b/gui-lib/mred/installer.rkt
|
||||
@@ -72,4 +72,5 @@
|
||||
(list "-A" (path->string (find-system-path 'addon-dir)))))
|
||||
|
||||
|
|
|
@ -28,7 +28,9 @@ (define-module (gnu packages racket)
|
|||
#:use-module (guix gexp)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 exceptions)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages bash)
|
||||
|
@ -389,171 +391,505 @@ (define-public racket-bootstrap-chez-bootfiles
|
|||
Chez Scheme.")
|
||||
(license (list license:asl2.0)))))
|
||||
|
||||
(define (racket-packages-origin name origin specs)
|
||||
"Extract from ORIGIN the sources for the Racket packages specified by SPECS,
|
||||
a non-empty list of package specifications. In the resulting file-like
|
||||
object, each package's source will be in the directory
|
||||
\"/share/racket/pkgs/PKG/\", where PKG is the Racket name for the package.
|
||||
The NAME will be used in the store file name for the resulting file-like
|
||||
object.
|
||||
|
||||
(define %installer-mirrors
|
||||
;; Source:
|
||||
;; https://github.com/racket/racket-lang-org/blob/master/download/data.rkt#L58
|
||||
;; Matthew Flatt says: "note that many are commented out"
|
||||
;; INVARIANT: End with a trailing "/"!
|
||||
'("https://mirror.racket-lang.org/installers/"
|
||||
"https://www.cs.utah.edu/plt/installers/"
|
||||
"https://plt.cs.northwestern.edu/racket-mirror/"
|
||||
"https://mirror.csclub.uwaterloo.ca/racket/racket-installers/"
|
||||
;; Universität Tübingen is using a self-signed HTTPS certificate:
|
||||
"http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
|
||||
"https://racket.infogroep.be/"
|
||||
))
|
||||
A package specification is a list of the form:
|
||||
|
||||
(define %main-repo-main-distribution-pkgs
|
||||
;; These are the packages developed in the main Racket Git repository
|
||||
;; that are part of the main distribution.
|
||||
'("at-exp-lib"
|
||||
"base"
|
||||
"compiler-lib"
|
||||
;; NOT "compiler-test"
|
||||
"compiler"
|
||||
"net-doc"
|
||||
"net-lib"
|
||||
;; NOT "net-test"
|
||||
"net"
|
||||
;; NOT "plt-services"
|
||||
;; NOT "racket-benchmarks"
|
||||
;; NOT "racket-build-guide"
|
||||
"racket-doc"
|
||||
"racket-index"
|
||||
"racket-lib"
|
||||
;; NOT "racket-test-core"
|
||||
;; NOT "racket-test-extra"
|
||||
;; NOT "racket-test"
|
||||
"zo-lib"))
|
||||
(PKG PATH)
|
||||
|
||||
where PATH is the path to the package source relative to ORIGIN---possibly
|
||||
\".\". As a special case, a package specification may also be a string, which
|
||||
is equivalent to:
|
||||
|
||||
(PKG PKG)
|
||||
|
||||
Examples:
|
||||
|
||||
- \"expeditor\"
|
||||
- (\"main-distribution\" \".\")
|
||||
- (\"racket-lib\" \"pkgs/racket-lib\")"
|
||||
(computed-file
|
||||
(string-append "racket-pkg-" name "-sources")
|
||||
(with-imported-modules `((guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(mkdir-p (string-append #$output "/share/racket/pkgs"))
|
||||
(chdir (string-append #$output "/share/racket/pkgs"))
|
||||
#$@(map (match-lambda
|
||||
((? string? name)
|
||||
#~(copy-recursively #$(file-append origin (string-append "/" name))
|
||||
#$name))
|
||||
((name ".")
|
||||
#~(copy-recursively #$origin #$name))
|
||||
((name path)
|
||||
#~(copy-recursively #$(file-append origin (string-append "/" path))
|
||||
#$name)))
|
||||
specs)))))
|
||||
|
||||
(define (simple-racket-origin repo hash specs)
|
||||
"Like 'racket-packages-origin', but specialized for packages hosted at
|
||||
\"https://github.com/racket/REPO\" with sha256 checksum HASH. REPO is also
|
||||
used to build the name of the resulting store item."
|
||||
(racket-packages-origin
|
||||
repo
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url (format #f "https://github.com/racket/~a" repo))
|
||||
(commit %racket-commit)))
|
||||
(sha256 hash)
|
||||
(file-name (git-file-name (string-append "racket-" repo)
|
||||
%racket-version)))
|
||||
specs))
|
||||
|
||||
(define-public racket
|
||||
(package
|
||||
(inherit racket-minimal)
|
||||
(name "racket")
|
||||
(version %racket-version)
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (map (lambda (base)
|
||||
(string-append base version "/racket-src.tgz"))
|
||||
%installer-mirrors))
|
||||
(sha256
|
||||
(base32
|
||||
"0dsv7br85nvh5gjfihznq9jb1dzas0f6gnv5qwc9zmb7yn75nrp5"))
|
||||
(patches
|
||||
;; remove in Racket 8.5
|
||||
;; see https://github.com/racket/racket/issues/4133
|
||||
(search-patches "racket-gui-tethered-launcher-backport.patch"))
|
||||
(snippet
|
||||
#~(begin
|
||||
(use-modules (guix build utils)
|
||||
(ice-9 match)
|
||||
(ice-9 regex))
|
||||
;; unbundle minimal Racket
|
||||
(for-each delete-file-recursively
|
||||
'("collects"
|
||||
"doc"
|
||||
"etc"
|
||||
"README"
|
||||
"src"))
|
||||
;; unbundle package sources included elsewhere
|
||||
(with-directory-excursion "share/pkgs"
|
||||
(for-each delete-file-recursively
|
||||
'#+%main-repo-main-distribution-pkgs))
|
||||
;; Minimal workaround for FSDG issue:
|
||||
;; see <https://github.com/racket/srfi/pull/15>.
|
||||
;; We will backport a better fix once we use Git
|
||||
;; origins for Racket packages.
|
||||
(delete-file-recursively "share/pkgs/srfi-doc-nonfree")
|
||||
(substitute* "share/pkgs/srfi/info.rkt"
|
||||
(("\"srfi-doc-nonfree\"") ""))))))
|
||||
(source #f)
|
||||
(native-inputs (list racket-minimal)) ; XXX: conservative estimate, untested
|
||||
(inputs
|
||||
`(("cairo" ,cairo)
|
||||
("fontconfig" ,fontconfig)
|
||||
("glib" ,glib)
|
||||
("glu" ,glu)
|
||||
("gmp" ,gmp)
|
||||
("gtk+" ,gtk+) ; propagates gdk-pixbuf+svg
|
||||
("libjpeg" ,libjpeg-turbo)
|
||||
("libpng" ,libpng)
|
||||
("libx11" ,libx11)
|
||||
("mesa" ,mesa)
|
||||
("mpfr" ,mpfr)
|
||||
("pango" ,pango)
|
||||
("unixodbc" ,unixodbc)
|
||||
("libedit" ,libedit)))
|
||||
(native-inputs
|
||||
`(("racket" ,racket-minimal)
|
||||
("extend-layer" ,extend-layer)
|
||||
("main-repo" ,%racket-origin)))
|
||||
(list
|
||||
cairo
|
||||
fontconfig
|
||||
glib
|
||||
glu
|
||||
gmp
|
||||
gtk+ ;; propagates gdk-pixbuf+svg
|
||||
libjpeg-turbo
|
||||
libpng
|
||||
libx11 ;; ?? wayland ??
|
||||
mesa
|
||||
mpfr
|
||||
pango
|
||||
unixodbc
|
||||
libedit ;; TODO reconsider in light of expeditor and readline-gpl
|
||||
racket-minimal ;; <-- TODO non-tethered layer
|
||||
(simple-racket-origin
|
||||
"2d" (base32 "1zzcz5qyjv7syi41vb8jkxjp1rqgj61zbsdrg0nlc4qy9qsafzgr")
|
||||
'("2d" "2d-doc" "2d-lib"))
|
||||
(simple-racket-origin
|
||||
"algol60" (base32 "09kj6asypmc24n29w0izc9p0q8hpga2hpkchsypfwn5c8zpvihlx")
|
||||
'(("algol60" ".")))
|
||||
(racket-packages-origin
|
||||
"racket" %racket-origin
|
||||
'(("base" "pkgs/base") ;; FIXME belongs in racket-minimal
|
||||
("racket-lib" "pkgs/racket-lib") ;; FIXME belongs in racket-minimal
|
||||
("at-exp-lib" "pkgs/at-exp-lib")
|
||||
("compiler" "pkgs/compiler")
|
||||
("compiler-lib" "pkgs/compiler-lib")
|
||||
("net" "pkgs/net")
|
||||
("net-doc" "pkgs/net-doc")
|
||||
("net-lib" "pkgs/net-lib")
|
||||
("racket-doc" "pkgs/racket-doc")
|
||||
("racket-index" "pkgs/racket-index")
|
||||
("sandbox-lib" "pkgs/sandbox-lib")
|
||||
("zo-lib" "pkgs/zo-lib")))
|
||||
(simple-racket-origin
|
||||
"cext-lib" (base32 "00w38jpv88fpl4pgj6ndnysvn0s21rjvj0xhznay80msan0vc341")
|
||||
'("cext-lib" "dynext-lib"))
|
||||
(simple-racket-origin
|
||||
"class-iop" (base32 "08z57q83cr7wnh6g8ah3hdhmsmf9zp1jfs7yvxv188l3hzvygy5l")
|
||||
'("class-iop-lib"))
|
||||
(simple-racket-origin
|
||||
"compatibility" (base32 "0bfqwscjpyi325br5pa6g62g9c8lq18a80zp5g3d2qzn3n3mi6x0")
|
||||
'("compatibility" "compatibility-doc" "compatibility-lib"))
|
||||
(simple-racket-origin
|
||||
"contract-profile" (base32 "1xm2z8g0dpv5d9h2sg680vx1a8ix9gbsdpxxb8qv1w7akp73paj3")
|
||||
'(("contract-profile" ".")))
|
||||
(simple-racket-origin
|
||||
"data" (base32 "10iabgrk9alaggvksnyb0hdq7f1p30pq6pq2bcakvhzpxwiv1f55")
|
||||
'("data" "data-doc" "data-enumerate-lib" "data-lib"))
|
||||
(simple-racket-origin
|
||||
"datalog" (base32 "0n5j5gnqh7g31mvgx19ggl18hirzbvq2r189lbngmnrmbc7b73fp")
|
||||
'(("datalog" ".")))
|
||||
(simple-racket-origin
|
||||
"db" (base32 "1n02ja0yj3mjjhmz0yv04yfhyvrsznbljn8bjviyfxnm4xf9rcc5")
|
||||
'("db" "db-doc" "db-lib"))
|
||||
(simple-racket-origin
|
||||
"deinprogramm" (base32 "1is6fapgv6rxfjz47nh6qf3kh7y7sjdinakaxqffi46gf1al8prd")
|
||||
'("deinprogramm" "deinprogramm-signature"))
|
||||
(simple-racket-origin
|
||||
"distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx5vncariiac4vbdpa0")
|
||||
'("distributed-places" "distributed-places-doc" "distributed-places-lib"))
|
||||
(simple-racket-origin
|
||||
"draw" (base32 "1xgjfbh70hqw67z88iqqajg98d04qwbzn6im2wj47rs28jxlm9ly")
|
||||
'("draw" "draw-doc" "draw-lib"))
|
||||
(simple-racket-origin
|
||||
"drracket" (base32 "0m3l4an3nq2ycd1h287s1az2v2zprjbzd8if2x7d5r71vaj4i00c")
|
||||
'("drracket"
|
||||
"drracket-plugin-lib"
|
||||
"drracket-tool"
|
||||
"drracket-tool-doc"
|
||||
"drracket-tool-lib"
|
||||
"drracket-tool-text-lib"))
|
||||
(simple-racket-origin
|
||||
"ds-store" (base32 "0ajr27kipp4dr1qlisaghsb3h7lhhjwrfw2r79b5myczsa1mp661")
|
||||
'("ds-store" "ds-store-doc" "ds-store-lib"))
|
||||
(simple-racket-origin
|
||||
"eli-tester" (base32 "0icx6wn14gjm8kdmq1jppqgq87sxkras4qb5xmdr6wigxafhjqyk")
|
||||
'(("eli-tester" ".")))
|
||||
(simple-racket-origin
|
||||
"eopl" (base32 "1fmiixj6rxsgzwvgva8lvrvv0gl49v2405mp3s0i7ipis5c4n27s")
|
||||
'(("eopl" ".")))
|
||||
(simple-racket-origin
|
||||
"errortrace" (base32 "14m7rhaxngj36070iw15am434hm438pfgmwjfsiqhsglz4pcxhip")
|
||||
'("errortrace" "errortrace-doc" "errortrace-lib"))
|
||||
(simple-racket-origin
|
||||
"expeditor" (base32 "07djzxs6307l51mcsk3yr2g4g47ayxa3878g7sf5xhqdr4hd9vxf")
|
||||
'("expeditor" "expeditor-doc" "expeditor-lib"))
|
||||
(simple-racket-origin
|
||||
"frtime" (base32 "0ydz2yn8vvv6z7brwlswcyx0f31a6y6d443i89rysfvd2xkhpfd5")
|
||||
'(("frtime" ".")))
|
||||
(simple-racket-origin
|
||||
"future-visualizer" (base32 "1758qq769m0r14xf64sl2ix2l9z340kvapar0j7s5kdg42lmvnhm")
|
||||
'("future-visualizer"
|
||||
"future-visualizer-pict"
|
||||
"future-visualizer-typed"))
|
||||
(simple-racket-origin
|
||||
"games" (base32 "0kpn3izlx1ccd0pj0dnvmnrhny51b85xy418a7psj70lz8j8415d")
|
||||
'(("games" ".")))
|
||||
(racket-packages-origin
|
||||
"gui" (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/racket/gui")
|
||||
(commit %racket-commit)))
|
||||
(sha256 (base32
|
||||
"1x33jgrx3r32k7hgwr591z3xqv1m2r5nc4km2fnxv0ak2xa0j3gj"))
|
||||
(patches
|
||||
;; remove in Racket 8.5
|
||||
;; see https://github.com/racket/racket/issues/4133
|
||||
(search-patches "racket-gui-tethered-launcher-backport.patch"))
|
||||
(file-name (git-file-name "racket-gui" %racket-version)))
|
||||
'("gui" "gui-doc" "gui-lib" "tex-table"))
|
||||
(simple-racket-origin
|
||||
"gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14f9mx47did5myb5")
|
||||
'("gui-pkg-manager-lib"))
|
||||
(simple-racket-origin
|
||||
"htdp" (base32 "0r4ykybcpr10y2db9rlza9pr0xh58nd7ac389mjcxp8g386hgihl")
|
||||
'("htdp" "htdp-doc" "htdp-lib"))
|
||||
(simple-racket-origin
|
||||
"html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00anx2x")
|
||||
'("html" "html-doc" "html-lib"))
|
||||
(simple-racket-origin
|
||||
"icons" (base32 "1s5a6j11fg3fdr6b7vm2q7q178d7q8b8igy73bs211r27qrd1gg7")
|
||||
'(("icons" ".")))
|
||||
(simple-racket-origin
|
||||
"images" (base32 "0rpjxqw34bq5m08kh1ldl1mr7s9z1lyydxxcyzb292kqh9qiqvfl")
|
||||
'("images" "images-doc" "images-gui-lib" "images-lib"))
|
||||
(simple-racket-origin
|
||||
"lazy" (base32 "176ylzgbdsbmqknpihaz519afq71pyjkv1h87j5v8jfbpbddyfsf")
|
||||
'(("lazy" ".")))
|
||||
(simple-racket-origin
|
||||
"macro-debugger" (base32 "14hyrwbkffr61fk44l02xb47bhv5zccw0ymaa9kxld86hvyqhqbm")
|
||||
'("macro-debugger" "macro-debugger-text-lib"))
|
||||
(simple-racket-origin
|
||||
"main-distribution" (base32 "0m2n9s32s8a4a2gn4ywrm9l8jycdm5ayi5w9kh5wchhrrw7qzq7y")
|
||||
'(("main-distribution" ".")))
|
||||
(simple-racket-origin
|
||||
"make" (base32 "10852fj30bz5r46c3d99s37fkgy5yh44gb01j29sf3kxnhi0g2sa")
|
||||
'(("make" ".")))
|
||||
(simple-racket-origin
|
||||
"math" (base32 "02sqbnvxvmvslk33b44fx4v93zafcvhva0cx8z21jqbl5wp217ac")
|
||||
'("math" "math-doc" "math-lib"))
|
||||
(simple-racket-origin
|
||||
"mysterx" (base32 "11p9jzrafw0hizhl0cs4sxx7rv281185q8hryic2rpk0kzjdyr48")
|
||||
'(("mysterx" ".")))
|
||||
(simple-racket-origin
|
||||
"mzcom" (base32 "0rc9pfj7gwm5azghqvcibz6si1x5s2v8mr2yngk7ssq9gzfbi6a4")
|
||||
'(("mzcom" ".")))
|
||||
(simple-racket-origin
|
||||
"mzscheme" (base32 "192c52zi726h5wjamxrhivjw2waq1im0zpyxhbrkrxknm8x84bs9")
|
||||
'("mzscheme" "mzscheme-doc" "mzscheme-lib"))
|
||||
(racket-packages-origin
|
||||
"net-cookies" (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/RenaissanceBug/racket-cookies")
|
||||
(commit %racket-commit)))
|
||||
(sha256 (base32
|
||||
"0k0hifxhywl5c3hjcaiizc098dpyk001d981p572gly116yvjxc1"))
|
||||
(file-name
|
||||
(git-file-name "RenaissanceBug-racket-cookies" %racket-version)))
|
||||
'("net-cookies" "net-cookies-doc" "net-cookies-lib"))
|
||||
(racket-packages-origin
|
||||
"optimization-coach"
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/stamourv/optimization-coach")
|
||||
(commit %racket-commit)))
|
||||
(sha256 (base32
|
||||
"0b27sw48d7rhz0hin88c7rbr9vpg1c23sn82nd4jkmq54h6gasr1"))
|
||||
(file-name
|
||||
(git-file-name "stamourv-optimization-coach" %racket-version)))
|
||||
'(("optimization-coach" ".")))
|
||||
(simple-racket-origin
|
||||
"option-contract" (base32 "026b7n5l0c3024nymshz8zp1yhn493rdzgpflzfd52hj7awafqhk")
|
||||
'("option-contract" "option-contract-doc" "option-contract-lib"))
|
||||
(simple-racket-origin
|
||||
"parser-tools" (base32 "08pvz4zramirzm3j64hbhjm0mmh5zfy37iv4s3vmq0rj49cr8fl3")
|
||||
'("parser-tools" "parser-tools-doc" "parser-tools-lib"))
|
||||
(simple-racket-origin
|
||||
"pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7wk79pb1")
|
||||
'("pconvert-lib"))
|
||||
(simple-racket-origin
|
||||
"pict" (base32 "0g1iwdr6qh1xb0crhj96830vjjnbds409xbpqn7j5sh0ksy6vr5x")
|
||||
'("pict" "pict-doc" "pict-lib"))
|
||||
(simple-racket-origin
|
||||
"pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3chm4kng6x")
|
||||
'("pict-snip" "pict-snip-doc" "pict-snip-lib"))
|
||||
(simple-racket-origin
|
||||
"picturing-programs" (base32 "1g6xr39hx1j03gb3d4dljm3v91xcj2gfpq3dgy5xvplzr6cmmxgr")
|
||||
'(("picturing-programs" ".")))
|
||||
(simple-racket-origin
|
||||
"plai" (base32 "0i983sh0r0zm2ng4j44m5aw9669kh5fhp91bzpc9jm280rfcqvyl")
|
||||
'("plai" "plai-doc" "plai-lib"))
|
||||
(simple-racket-origin
|
||||
"planet" (base32 "0r2yqrzrmdjjyr14k6hhlzc5kzrcx3583m1s02mhrcmpfw0s85w9")
|
||||
'("planet" "planet-doc" "planet-lib"))
|
||||
(simple-racket-origin
|
||||
"plot" (base32 "07kq32si34ybcwz8idxxcrzssg8diyrp1nfgkcj0mmvr45321zm7")
|
||||
'("plot" "plot-compat" "plot-doc" "plot-gui-lib" "plot-lib"))
|
||||
(simple-racket-origin
|
||||
"preprocessor" (base32 "1p5aid58ifnjy4xl0ysh85cq39k25661v975jrpk182z3k5621mg")
|
||||
'(("preprocessor" ".")))
|
||||
(simple-racket-origin
|
||||
"profile" (base32 "179i86lyby29nywz60l4vnadi02w8b12h7501nm5h5g4pq9jjmbb")
|
||||
'("profile" "profile-doc" "profile-lib"))
|
||||
(racket-packages-origin
|
||||
"quickscript" (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/Metaxal/quickscript")
|
||||
(commit %racket-commit)))
|
||||
(sha256 (base32
|
||||
"100g3yqhbjdq06b6l6d72ywsw29awgy8crqg33wj7h12xq07nzcr"))
|
||||
(file-name (git-file-name "Metaxal-quickscript" %racket-version)))
|
||||
'(("quickscript" ".")))
|
||||
(simple-racket-origin
|
||||
"r5rs" (base32 "1g3cysj7z88r38vkzvi8g2fb2hn4yg1fdhy5smxw303jxgl3inp6")
|
||||
'("r5rs" "r5rs-doc" "r5rs-lib"))
|
||||
(simple-racket-origin
|
||||
"r6rs" (base32 "0b1ymzdp10r0flw2acbidjsh5ma1pm5hy54jss37sxf89z3xbvm4")
|
||||
'("r6rs" "r6rs-doc" "r6rs-lib"))
|
||||
(racket-packages-origin
|
||||
"racket-cheat" (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jeapostrophe/racket-cheat")
|
||||
(commit %racket-commit)))
|
||||
(sha256 (base32
|
||||
"06wcj558rzkbl2bwkmikyspya9v1f4iwlzwnwxpkc33h2xapwabr"))
|
||||
(file-name
|
||||
(git-file-name "jeapostrophe-racket-cheat" %racket-version)))
|
||||
'(("racket-cheat" ".")))
|
||||
(simple-racket-origin
|
||||
"racklog" (base32 "1rgrvwy3kr9b9w5cghsffiv3ly00yfvvzr5xaaw83g1w7yin0mnb")
|
||||
'(("racklog" ".")))
|
||||
(simple-racket-origin
|
||||
"rackunit" (base32 "057z31rja6h3nabh5b2xgwfrzmlm6h1cv1qcgf3xfy4g2q5dqn5p")
|
||||
'("rackunit"
|
||||
"rackunit-doc"
|
||||
"rackunit-gui"
|
||||
"rackunit-lib"
|
||||
"rackunit-plugin-lib"
|
||||
"rackunit-typed"
|
||||
"schemeunit"
|
||||
"testing-util-lib"))
|
||||
(simple-racket-origin
|
||||
"readline" (base32 "13kbcn2wchv82d709mw3r8n37bk8iwq0y4kpvm9dbzx0w2pxkfwn")
|
||||
'("readline" "readline-doc" "readline-lib"))
|
||||
(simple-racket-origin
|
||||
"realm" (base32 "0hxcgla08iack54j8v40fj51811chpy66ym2zq76zb52c7kzn0hi")
|
||||
'(("realm" ".")))
|
||||
(simple-racket-origin
|
||||
"redex" (base32 "0vlgxbnbgrlihk1hh5zd6hsc4566ldi4q76f87z5vai54dxkwy2f")
|
||||
'("redex"
|
||||
"redex-benchmark"
|
||||
"redex-doc"
|
||||
"redex-examples"
|
||||
"redex-gui-lib"
|
||||
"redex-lib"
|
||||
"redex-pict-lib"))
|
||||
(simple-racket-origin
|
||||
"sasl" (base32 "0ibh4wb4gn8pggx6gkv4vk4d6rwzn5nrvjibhvkzhaynf6lhb824")
|
||||
'("sasl" "sasl-doc" "sasl-lib"))
|
||||
(simple-racket-origin
|
||||
"scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapyklzx1jx8x")
|
||||
'(("scheme-lib" ".")))
|
||||
(simple-racket-origin
|
||||
"scribble" (base32 "0rgvnsykrxkah6s5fw1vyp9lxsb4z9w6hgwk5j6wbwjp2gsfczbm")
|
||||
'("scribble"
|
||||
"scribble-doc"
|
||||
"scribble-html-lib"
|
||||
"scribble-lib"
|
||||
"scribble-text-lib"))
|
||||
(simple-racket-origin
|
||||
"serialize-cstruct-lib"
|
||||
(base32 "1rq3n1fa7ldjwx3lrh9ybhig7jlsw1crpzyklbzp3xqdw6jymfnz")
|
||||
'(("serialize-cstruct-lib" ".")))
|
||||
(simple-racket-origin
|
||||
"sgl" (base32 "0nkymhdyjrwi5h199j4w5zh7y3x3ai42gsiwxzh0hy7yqrqqg9zv")
|
||||
'(("sgl" ".")))
|
||||
(simple-racket-origin
|
||||
"shell-completion" (base32 "04m144gy2mp4fiq6rcbf12wjr8mws8k9scfhg9lc38vqppp4lxsj")
|
||||
'(("shell-completion" ".")))
|
||||
(simple-racket-origin
|
||||
"simple-tree-text-markup"
|
||||
(base32 "0fyd9gfz6bnv0m1901wv5mnhc05rm8hw9i6ddrqx33hs6qsg2zqr")
|
||||
'("simple-tree-text-markup"
|
||||
"simple-tree-text-markup-doc"
|
||||
"simple-tree-text-markup-lib"))
|
||||
(simple-racket-origin
|
||||
"slatex" (base32 "0pkm2isbbdk63slrbsxcql7rr0wdrw5kapw1xq4ps5k8dhlzv8x0")
|
||||
'(("slatex" ".")))
|
||||
(simple-racket-origin
|
||||
"slideshow" (base32 "1znv1i2d0610hhy71q932xy7wka00q3q50in1xfnk8ibg7nzkagm")
|
||||
'("slideshow" "slideshow-doc" "slideshow-exe" "slideshow-lib" "slideshow-plugin"))
|
||||
(simple-racket-origin
|
||||
"snip" (base32 "01r9wc5xr3q3n4yyif6j0a37rgdzmpslxn05k13ksik73b3wj6hj")
|
||||
'("snip" "snip-lib"))
|
||||
(simple-racket-origin
|
||||
"typed-racket" (base32 "1462kj9yswsxbnw71casylzlvhd7cxrml2v9j7rcsnn9hmrqx4vv")
|
||||
'("source-syntax"
|
||||
"typed-racket"
|
||||
"typed-racket-compatibility"
|
||||
"typed-racket-doc"
|
||||
"typed-racket-lib"
|
||||
"typed-racket-more"))
|
||||
(racket-packages-origin
|
||||
"srfi" (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/racket/srfi")
|
||||
;; Includes an FSDG fix: return to %racket-commit in 8.5.
|
||||
;; See <https://github.com/racket/srfi/pull/15>.
|
||||
(commit "7243029b135741ce08ae30f877e2f49a2a460b22")))
|
||||
(sha256 (base32
|
||||
"0aqbcdv2dfc2xnk0h6zfi56p7bpwqji8s88qds3d03hhh9k28gvn"))
|
||||
;; Use the relevant version for srfi-doc and srfi-lib,
|
||||
;; since we're using a newer commit than the v8.4 tag.
|
||||
(file-name (git-file-name "racket-srfi" "1.1")))
|
||||
'("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib"))
|
||||
(simple-racket-origin
|
||||
"string-constants" (base32 "1qizjq4n0hzdgdcjjpr94464gsywpsk2g9mnvwzqr7dcqbrsfvn6")
|
||||
'("string-constants" "string-constants-doc" "string-constants-lib"))
|
||||
(simple-racket-origin
|
||||
"swindle" (base32 "164gdsphjzdl2vv7zxz7dfk9jwax8njpmim6sidm8qz8a8589y67")
|
||||
'(("swindle" ".")))
|
||||
(simple-racket-origin
|
||||
"syntax-color" (base32 "1vf2fc3qvx8a1igi7swsg8gaqhx786sa0vqxd18xhbsidfgb5ywp")
|
||||
'("syntax-color" "syntax-color-doc" "syntax-color-lib"))
|
||||
(simple-racket-origin
|
||||
"trace" (base32 "070ihla5j796hdarn5wxdwn4xj0xnkm50shgh49jy994mribvhia")
|
||||
'(("trace" ".")))
|
||||
(simple-racket-origin
|
||||
"unix-socket" (base32 "02dfwas5ynbpyz74w9kwb4wgb37y5wys7svrlmir8k0n9ph9vq0y")
|
||||
'("unix-socket" "unix-socket-doc" "unix-socket-lib"))
|
||||
(simple-racket-origin
|
||||
"web-server" (base32 "1zgb6jl7zx6258ljs8f3lvryrq5n5zpd71dqzr698m92kw3x2pkn")
|
||||
'("web-server" "web-server-doc" "web-server-lib"))
|
||||
(simple-racket-origin
|
||||
"wxme" (base32 "1qp5gr9gqsakiq3alw6m4yyv5vw4i3hp4y4nhq8vl2nkjmirvn0b")
|
||||
'("wxme" "wxme-lib"))
|
||||
(simple-racket-origin
|
||||
"xrepl" (base32 "12zjgsy5zqm3fck3ihg4a70wj56s2cnnjyb4jlfi5nnsfqyrnxg3")
|
||||
'("xrepl" "xrepl-doc" "xrepl-lib"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'unpack-packages
|
||||
(let ((unpack (assoc-ref %standard-phases 'unpack)))
|
||||
(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
|
||||
(let* ((racket (assoc-ref (or native-inputs inputs) "racket"))
|
||||
(prefix (assoc-ref outputs "out"))
|
||||
(pkgs-dir (string-append prefix "/share/racket/pkgs")))
|
||||
(mkdir-p pkgs-dir)
|
||||
(copy-recursively
|
||||
"share/links.rktd"
|
||||
(string-append prefix "/share/racket/links.rktd"))
|
||||
(copy-recursively "share/pkgs" pkgs-dir)
|
||||
;; NOTE: unpack changes the working directory
|
||||
(unpack #:source (assoc-ref (or native-inputs inputs)
|
||||
"main-repo"))
|
||||
(for-each (lambda (pkg)
|
||||
(define dest (string-append pkgs-dir "/" pkg))
|
||||
(mkdir-p dest)
|
||||
(copy-recursively (string-append "pkgs/" pkg)
|
||||
dest))
|
||||
',%main-repo-main-distribution-pkgs)
|
||||
#t))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
|
||||
(let ((racket (assoc-ref (or native-inputs inputs) "racket"))
|
||||
(prefix (assoc-ref outputs "out")))
|
||||
(apply invoke
|
||||
(string-append racket "/bin/racket")
|
||||
(assoc-ref inputs "extend-layer")
|
||||
racket
|
||||
prefix
|
||||
(map
|
||||
(lambda (lib)
|
||||
(string-append (assoc-ref inputs lib) "/lib"))
|
||||
'("cairo"
|
||||
"fontconfig"
|
||||
"glib"
|
||||
"glu"
|
||||
"gmp"
|
||||
"gtk+"
|
||||
"libjpeg"
|
||||
"libpng"
|
||||
"libx11"
|
||||
"mesa"
|
||||
"mpfr"
|
||||
"pango"
|
||||
"unixodbc"
|
||||
"libedit")))
|
||||
#t)))
|
||||
(replace 'build
|
||||
(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
|
||||
(invoke (string-append (assoc-ref (or native-inputs inputs)
|
||||
"racket")
|
||||
"/bin/racket")
|
||||
"--config"
|
||||
(string-append (assoc-ref outputs "out")
|
||||
"/etc/racket")
|
||||
"-l"
|
||||
"raco"
|
||||
"setup")
|
||||
#t))
|
||||
(delete 'install))
|
||||
;; we still don't have these:
|
||||
#:tests? #f))
|
||||
;; We're using #:configure-flags to pass flags for
|
||||
;; `configure-layer.rkt` and #:make-flags to pass arguments for
|
||||
;; `raco pkg install`.
|
||||
(list
|
||||
#:configure-flags
|
||||
#~`("--extra-foreign-lib-search-dirs"
|
||||
,(format #f "~s"
|
||||
'(#$@(map (lambda (name)
|
||||
(cond
|
||||
((this-package-input name)
|
||||
=> (cut file-append <> "/lib"))
|
||||
(else
|
||||
(raise-exception
|
||||
(make-exception
|
||||
(make-assertion-failure)
|
||||
(make-exception-with-message
|
||||
"missing input to the 'racket' package")
|
||||
(make-exception-with-irritants
|
||||
(list name)))))))
|
||||
'("cairo"
|
||||
"fontconfig-minimal" ;; aka fontconfig
|
||||
"glib"
|
||||
"glu"
|
||||
"gmp"
|
||||
"gtk+"
|
||||
"libjpeg-turbo"
|
||||
"libpng"
|
||||
"libx11"
|
||||
"mesa"
|
||||
"mpfr"
|
||||
"pango"
|
||||
"unixodbc"
|
||||
"libedit")))))
|
||||
#:make-flags #~`("main-distribution")
|
||||
#:tests? #f ;; packaged separately
|
||||
#:modules '((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(guix build union)
|
||||
(ice-9 match))
|
||||
#:imported-modules `((guix build union)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'unpack)
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs configure-flags #:allow-other-keys)
|
||||
(let* ((racket (search-input-file inputs "bin/racket")))
|
||||
(apply invoke
|
||||
racket
|
||||
#$configure-layer.rkt
|
||||
`(,@configure-flags
|
||||
,(dirname (dirname racket))
|
||||
,#$output))
|
||||
(invoke racket
|
||||
"--config" (string-append #$output "/etc/racket")
|
||||
"-l" "raco" "setup"
|
||||
"--no-user"))))
|
||||
(replace 'build
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; We use "share/racket/pkgs" for sources to distinguish them
|
||||
;; from the "lib/racket/pkgs" of a potential parent layer.
|
||||
(union-build (string-append #$output "/lib/racket/pkgs")
|
||||
(search-path-as-list '("share/racket/pkgs")
|
||||
(map cdr inputs))
|
||||
#:create-all-directories? #t)))
|
||||
(replace 'install
|
||||
(lambda* (#:key inputs make-flags #:allow-other-keys)
|
||||
(let ((racket (search-input-file inputs "/bin/racket")))
|
||||
(unless (null? make-flags)
|
||||
(invoke racket
|
||||
"-l-"
|
||||
"pkg/dirs-catalog"
|
||||
"--link"
|
||||
"local-catalog"
|
||||
(string-append #$output "/lib/racket/pkgs"))
|
||||
(apply invoke
|
||||
racket
|
||||
"--config" (string-append #$output "/etc/racket")
|
||||
"-l" "raco"
|
||||
"pkg" "install"
|
||||
"--installation"
|
||||
"--auto"
|
||||
"--catalog" "local-catalog"
|
||||
make-flags))))))))
|
||||
(home-page "https://racket-lang.org")
|
||||
(synopsis "Programmable programming language in the Scheme family")
|
||||
(description
|
||||
"Racket is a general-purpose programming language in the Scheme family,
|
||||
|
@ -563,17 +899,20 @@ (define dest (string-append pkgs-dir "/" pkg))
|
|||
|
||||
The main Racket distribution comes with many bundled packages, including the
|
||||
DrRacket IDE, libraries for GUI and web programming, and implementations of
|
||||
languages such as Typed Racket, R5RS and R6RS Scheme, Algol 60, and Datalog.")))
|
||||
languages such as Typed Racket, R5RS and R6RS Scheme, Algol 60, and Datalog.")
|
||||
;; https://download.racket-lang.org/license.html
|
||||
;; The LGPL components are only used by Racket BC.
|
||||
(license (list license:asl2.0 license:expat))))
|
||||
|
||||
|
||||
(define extend-layer
|
||||
(define configure-layer.rkt
|
||||
(scheme-file
|
||||
"extend-layer.rkt"
|
||||
"configure-layer.rkt"
|
||||
`(module
|
||||
extend-layer racket/base
|
||||
configure-layer racket/base
|
||||
(require racket/cmdline
|
||||
racket/match
|
||||
racket/file
|
||||
racket/port
|
||||
racket/list
|
||||
racket/pretty)
|
||||
(define config-file-pth
|
||||
|
@ -583,8 +922,14 @@ (define (build-path-string . args)
|
|||
(define rx:racket
|
||||
;; Guile's reader doesn't support #rx"racket"
|
||||
(regexp "racket"))
|
||||
(define extra-foreign-lib-search-dirs '())
|
||||
(command-line
|
||||
#:args (parent-layer prefix . lib-dir*)
|
||||
#:once-each
|
||||
[("--extra-foreign-lib-search-dirs") dir-list
|
||||
"foreign library directories, as a list of strings in `read` syntax"
|
||||
(set! extra-foreign-lib-search-dirs
|
||||
(call-with-input-string dir-list read))]
|
||||
#:args (parent-layer prefix)
|
||||
(let* ([config
|
||||
(for/fold
|
||||
([config (file->value (build-path parent-layer
|
||||
|
@ -614,27 +959,42 @@ (define rx:racket
|
|||
(build-path-string parent-layer pth))
|
||||
(filter values (hash-ref config search-key null)))))]
|
||||
[config
|
||||
(hash-set config
|
||||
'apps-dir
|
||||
(build-path-string prefix "share/applications"))]
|
||||
(hash-update config
|
||||
'lib-search-dirs
|
||||
(lambda (dirs)
|
||||
;; add after other layers, but before older
|
||||
;; foreign lib search directories
|
||||
(define-values [rkt old-foreign-dirs]
|
||||
(partition (lambda (pth)
|
||||
(or (not pth)
|
||||
(regexp-match? rx:racket pth)))
|
||||
dirs))
|
||||
(append rkt
|
||||
extra-foreign-lib-search-dirs
|
||||
old-foreign-dirs)))]
|
||||
[config
|
||||
;; place new foreign lib-search-dirs before old
|
||||
;; foreign dirs, but after Racket layers
|
||||
(let-values
|
||||
([(rkt extra)
|
||||
(partition (lambda (pth)
|
||||
(or (not pth)
|
||||
(regexp-match? rx:racket pth)))
|
||||
(hash-ref config 'lib-search-dirs))])
|
||||
(hash-set config
|
||||
'lib-search-dirs
|
||||
(append rkt
|
||||
lib-dir*
|
||||
extra)))]
|
||||
(hash-set* config
|
||||
'apps-dir
|
||||
(build-path-string prefix "share/applications")
|
||||
'absolute-installation? #t
|
||||
;; Let Guix coexist with other installation
|
||||
;; methods without clobbering user-specific packages.
|
||||
;; This could be set in various places, but doing
|
||||
;; it here is convienient, at least until we support
|
||||
;; cross-compilation.
|
||||
'installation-name
|
||||
(string-append (version)
|
||||
"-guix"
|
||||
(match (system-type 'gc)
|
||||
['cgc "-cgc"]
|
||||
;; workaround Guile reader/printer:
|
||||
['|3m| "-bc"]
|
||||
[_ ""])))]
|
||||
[bin-dir
|
||||
(hash-ref config 'bin-dir)]
|
||||
[config
|
||||
(hash-set* config
|
||||
'config-tethered-apps-dir (hash-ref config 'apps-dir)
|
||||
'config-tethered-console-bin-dir bin-dir
|
||||
'config-tethered-gui-bin-dir bin-dir)]
|
||||
[new-config-pth
|
||||
|
|
Loading…
Reference in a new issue