(define-public chez-web (package (name "chez-web") ;; release 2.0 is different and doesn't work. (version "2.0-1.5fd177f") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/arcfide/ChezWEB.git") (commit "5fd177fe53f31f466bf88720d03c95a3711a8bea"))) (sha256 (base32 "1dq25qygyncbfq4kwwqqgyyakfqjwhp5q23vrf3bff1p66nyfl3b")))) (build-system gnu-build-system) (native-inputs `(("chez-scheme" ,chez-scheme) ("texlive" ,texlive))) (arguments `(#:make-flags (let ((out (assoc-ref %outputs "out"))) (list (string-append "PREFIX=" out) (string-append "DOCDIR=" out "/share/doc/" ,name "-" ,version) (string-append "LIBDIR=" out "/lib/chezweb") (string-append "TEXDIR=" out "/share/texmf-local"))) #:tests? #f ; no tests #:phases (modify-phases %standard-phases (replace 'configure (lambda* _ (copy-file "config.mk.template" "config.mk") (substitute* "tangleit" (("\\./cheztangle\\.ss" all) (string-append "chez-scheme --program " all))) (substitute* "weaveit" (("mpost chezweb\\.mp") "mpost --tex=tex chezweb.mp") (("\\./chezweave" all) (string-append "chez-scheme --program " all))) (substitute* "installit" (("-g \\$GROUP -o \\$OWNER") ""))))))) (home-page "https://github.com/arcfide/ChezWEB") (synopsis "Hygienic Literate Programming for Chez Scheme") (description "ChezWEB is a system for doing Knuthian style WEB programming in Scheme, and more particularly, it is implemented in Chez Scheme.") (license expat))) (define-public chez-sockets (package (name "chez-sockets") (version "0.0-1.bce9688") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/arcfide/chez-sockets.git") (commit "bce96881c06bd69a6757a6bff139744153924140"))) (sha256 (base32 "1n5fbwwz51fdzvjackgmnsgh363g9inyxv7kmzi0469cwavwcx5m")))) (build-system gnu-build-system) (native-inputs `(("chez-scheme" ,chez-scheme) ("chez-web" ,chez-web) ("texlive" ,texlive))) (arguments `(#:tests? #f ; no tests #:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key outputs inputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (chez-web (assoc-ref inputs "chez-web")) (chez (assoc-ref inputs "chez-scheme")) (chez-h (dirname (car (find-files chez "scheme\\.h"))))) (substitute* "Makefile" (("(SCHEMEH=).*$" all var) (string-append var chez-h))) #t))) (add-before 'build 'tangle (lambda _ ;; just using "make" tries to build the .c files before ;; they are created. (and (zero? (system* "make" "sockets")) (zero? (system* "make"))))) (replace 'build (lambda* (#:key outputs inputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (chez-site (string-append out "/lib/csv" ,(package-version chez-scheme) "-site/arcfide"))) ;; make sure Chez Scheme can find the shared libraries. (substitute* "sockets.ss" (("(load-shared-object) \"(socket-ffi-values\\.[sd][oy].*)\"" all cmd so) (string-append cmd " \"" chez-site "/" so "\"")) (("sockets-stub\\.[sd][oy].*" all) (string-append chez-site "/" all))) ;; to compile chez-sockets, the .so files must be ;; installed (because of the absolute path we ;; inserted above). (for-each (lambda (f d) (install-file f d)) '("socket-ffi-values.so" "sockets-stub.so") (list chez-site chez-site)) (zero? (system "echo '(compile-file \"sockets.sls\")' | scheme -q"))))) (replace 'install (lambda* (#:key outputs inputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (lib (string-append out "/lib/chez-sockets")) (doc (string-append out "/share/doc/" ,name "-" ,version)) (chez-site (string-append out "/lib/csv" ,(package-version chez-scheme) "-site/arcfide"))) (for-each (lambda (f d) (install-file f d)) '("sockets.pdf" "sockets.so") (list doc chez-site)) #t)))))) (home-page "https://github.com/arcfide/chez-sockets") (synopsis "Extensible sockets library for Chez Scheme") (description "Chez-sockets is an extensible sockets library for Chez Scheme.") (license expat)))