support building with chicken-install too

Change-Id: I47510ca9d5892f1def55ab14f610ba796a6a6964
This commit is contained in:
puck 2025-11-18 14:04:39 +00:00
parent 933b942a62
commit 56b114ef2c
8 changed files with 55 additions and 10 deletions

View file

@ -5,9 +5,16 @@
(component-options (component-options
(csc-options "-X" "r7rs" "-R" "r7rs" "-optimize-level" "3" "-C" "-D_GNU_SOURCE")) (csc-options "-X" "r7rs" "-R" "r7rs" "-optimize-level" "3" "-C" "-D_GNU_SOURCE"))
(components (components
(generated-source-file stock_overrides.h
; Also generates stub man_rust.h, man_go.h, man_ninja.go
(custom-build "generate-files")
(source-dependencies "overrides.json"))
(program zilch-cli-go (program zilch-cli-go
(component-dependencies stock_overrides.h)
(source "zilch-go.scm")) (source "zilch-go.scm"))
(program zilch-cli-rust (program zilch-cli-rust
(component-dependencies stock_overrides.h)
(source "zilch-rust.scm")) (source "zilch-rust.scm"))
(program zilch-cli-ninja (program zilch-cli-ninja
(component-dependencies stock_overrides.h)
(source "zilch-ninja.scm")))) (source "zilch-ninja.scm"))))

7
cli/generate-files Executable file
View file

@ -0,0 +1,7 @@
#!/bin/sh
(cat ./overrides.json; printf '\0') | xxd -i -n stock_overrides > stock_overrides.h
(printf '(no info)\0') | xxd -i -n man_rust > man_rust.h
(printf '(no info)\0') | xxd -i -n man_go > man_go.h
(printf '(no info)\0') | xxd -i -n man_ninja > man_ninja.h

View file

@ -5,6 +5,7 @@
(zilch magic) (zilch nix binproto) (zilch nix daemon) (zilch nix drv) (zilch zexpr) (zilch magic) (zilch nix binproto) (zilch nix daemon) (zilch nix drv) (zilch zexpr)
(chicken base) (chicken format) (chicken base) (chicken format)
(srfi 128) (srfi 132) (srfi 146) (srfi 151)) (srfi 128) (srfi 132) (srfi 146) (srfi 151))
(export zfile zsymlink zdir (export zfile zsymlink zdir
z-file? z-directory? z-symlink? z-file? z-directory? z-symlink?
zfile->store) zfile->store)
@ -178,7 +179,7 @@
(write-padding total-len) (write-padding total-len)
(write-bytevector (make-ustar-header #o777 0 #\2))) (write-bytevector (make-ustar-header #o777 0 #\2)))
;; Serialize the specified structure as a ustar-style (with pax extensions) tape archive to the standard output port. The filename is specified by `name`. ;; Serialize the specified structure as a ustar-style (with pax extensions) tape archive to the current output port. The filename is specified by `name`.
(define (serialize-as-tar f name) (define (serialize-as-tar f name)
(cond (cond
((z-file? f) (write-pax-file name (z-file-executable f) (z-file-contents f))) ((z-file? f) (write-pax-file name (z-file-executable f) (z-file-contents f)))
@ -214,10 +215,8 @@
((z-symlink? val) (z-symlink-set-cache val cached))) ((z-symlink? val) (z-symlink-set-cache val cached)))
cached) cached)
(zexp-add-unquote-handler (zexp-add-unquote-handler
(lambda (val) (lambda (val)
(if (or (z-file? val) (z-symlink? val) (z-directory? val)) (if (or (z-file? val) (z-symlink? val) (z-directory? val))
(string-append (zexp-unquote (zfile->store val)) "/-") (string-append (zexp-unquote (zfile->store val)) "/-")
#f))))) #f)))))

5
lang/go/utils/generate-files Executable file
View file

@ -0,0 +1,5 @@
#!/bin/sh
(cat utils/parser/main.go; printf '\0') | xxd -i -n parser_source > parser_source.h
(cat utils/dirhash/main.go; printf '\0') | xxd -i -n dirhash_source > dirhash_source.h
(cat utils/unzip-one/main.go; printf '\0') | xxd -i -n unzip_one_source > unzip_one_source.h

View file

@ -5,6 +5,10 @@
(component-options (component-options
(csc-options "-X" "r7rs" "-X" "zilch.zexpr" "-R" "r7rs" "-optimize-level" "3")) (csc-options "-X" "r7rs" "-X" "zilch.zexpr" "-R" "r7rs" "-optimize-level" "3"))
(components (components
(generated-source-file parser_source.h
; Also generates dirhash_source.h, unzip_one_source.h
(custom-build "utils/generate-files")
(source-dependencies "utils/parser/main.go" "utils/dirhash/main.go" "utils/unzip-one/main.go"))
(extension zilch.lang.go (extension zilch.lang.go
(source "src/go.sld") (source "src/go.sld")
(component-dependencies zilch.lang.go.core)) (component-dependencies zilch.lang.go.core))
@ -16,10 +20,10 @@
(component-dependencies zilch.lang.go.stdlib zilch.lang.go zilch.lang.go.vfs zilch.lang.go.sum zilch.lang.go.fetch zilch.lang.go.package zilch.lang.go.version)) (component-dependencies zilch.lang.go.stdlib zilch.lang.go zilch.lang.go.vfs zilch.lang.go.sum zilch.lang.go.fetch zilch.lang.go.package zilch.lang.go.version))
(extension zilch.lang.go.package (extension zilch.lang.go.package
(source "src/package.sld") (source "src/package.sld")
(component-dependencies zilch.lang.go.stdlib zilch.lang.go zilch.lang.go.vfs)) (component-dependencies parser_source.h zilch.lang.go.stdlib zilch.lang.go zilch.lang.go.vfs))
(extension zilch.lang.go.vfs (extension zilch.lang.go.vfs
(source "src/vfs.sld") (source "src/vfs.sld")
(component-dependencies zilch.lang.go.stdlib zilch.lang.go zilch.lang.go.sum zilch.lang.go.fetch)) (component-dependencies parser_source.h zilch.lang.go.stdlib zilch.lang.go zilch.lang.go.sum zilch.lang.go.fetch))
(extension zilch.lang.go.sum (extension zilch.lang.go.sum
(source "src/sum.sld")) (source "src/sum.sld"))
(extension zilch.lang.go.fetch (extension zilch.lang.go.fetch

View file

@ -0,0 +1,6 @@
#!/bin/sh
(cat helpers/src/bin/buildscript-runner.rs; printf '\0') | xxd -i -n runner_source > runner_source.h
(cat helpers/src/bin/rustc-wrapper.rs; printf '\0') | xxd -i -n rustc_wrap_source > rustc_wrap_source.h
(cat helpers/src/bin/cfg-reader.rs; printf '\0') | xxd -i -n cfgfetch_source > cfgfetch_source.h
(cat helpers/src/bin/false.rs; printf '\0') | xxd -i -n false_source > false_source.h

View file

@ -5,18 +5,25 @@
(component-options (component-options
(csc-options "-X" "r7rs" "-X" "zilch.zexpr" "-R" "r7rs" "-optimize-level" "3")) (csc-options "-X" "r7rs" "-X" "zilch.zexpr" "-R" "r7rs" "-optimize-level" "3"))
(components (components
(generated-source-file runner_source.h
; Also generates rustc_wrap_source.h, cfgfetch_source.h, false_source.h
(custom-build "helpers/generate-files")
(source-dependencies
"helpers/src/bin/buildscript-runner.rs" "helpers/src/bin/rustc-wrapper.rs"
"helpers/src/bin/cfg-reader.rs" "helpers/src/bin/false.rs"))
(extension zilch.lang.rust (extension zilch.lang.rust
(source "src/rust.sld")) (source "src/rust.sld")
(component-dependencies runner_source.h))
(extension zilch.lang.rust.registry (extension zilch.lang.rust.registry
(source "src/registry.sld")) (source "src/registry.sld"))
(extension zilch.lang.rust.cargo (extension zilch.lang.rust.cargo
(source "src/cargo.sld") (source "src/cargo.sld")
(component-dependencies zilch.lang.rust zilch.lang.rust.registry zilch.lang.rust.cfg)) (component-dependencies runner_source.h zilch.lang.rust zilch.lang.rust.registry zilch.lang.rust.cfg))
(extension zilch.lang.rust.cfg (extension zilch.lang.rust.cfg
(source "src/cfg.sld")) (source "src/cfg.sld"))
(extension zilch.lang.rust.build-script (extension zilch.lang.rust.build-script
(source "src/build-script.sld") (source "src/build-script.sld")
(component-dependencies zilch.lang.rust)) (component-dependencies runner_source.h zilch.lang.rust))
(extension zilch.lang.rust.resolver (extension zilch.lang.rust.resolver
(source "src/resolver.sld") (source "src/resolver.sld")
(component-dependencies zilch.lang.rust zilch.lang.rust.registry zilch.lang.rust.cargo zilch.lang.rust.build-script)))) (component-dependencies runner_source.h zilch.lang.rust zilch.lang.rust.registry zilch.lang.rust.cargo zilch.lang.rust.build-script))))

View file

@ -36,6 +36,12 @@
(set! counter (+ counter 1)) (set! counter (+ counter 1))
(string-append "1980-01-01 00:00:" (number->string counter))) (string-append "1980-01-01 00:00:" (number->string counter)))
; Workaround to deal with the non-scheme component dependencies.
(define (is-source-file hdr)
(unless (string? hdr) (set! hdr (symbol->string hdr)))
(define len (string-length hdr))
(string=? (string-copy hdr (- len 2)) ".h"))
(define (process-component component) (define (process-component component)
(define name (symbol->string (cadr component))) (define name (symbol->string (cadr component)))
(define source #f) (define source #f)
@ -49,6 +55,10 @@
((csc-options) (set! csc-options (append csc-options (cdr v)))))) ((csc-options) (set! csc-options (append csc-options (cdr v))))))
(cddr component)) (cddr component))
(define new-deps '())
(for-each (lambda (d) (unless (is-source-file d) (set! new-deps (cons d new-deps)))) deps)
(set! deps new-deps)
(define flagobj (list (cons 'unit name))) (define flagobj (list (cons 'unit name)))
(define flagstr "") (define flagstr "")
(unless (eq? csc-options shared-flags) (unless (eq? csc-options shared-flags)
@ -128,7 +138,7 @@ rule install
(for-each (lambda (l) (write-string (string-append " " (make-escaped-string l)))) link-flags) (for-each (lambda (l) (write-string (string-append " " (make-escaped-string l)))) link-flags)
(write-string "\n"))) (cdr val))) (write-string "\n"))) (cdr val)))
(when (eq? (car val) 'components) (when (eq? (car val) 'components)
(for-each process-component (cdr val)))) (for-each (lambda (p) (when (eq? 'extension (car p)) (process-component p))) (cdr val))))
egg) egg)
(emit-build (list (string-append outdir "/" egg-name ".egg-info")) '() "install" (list (string-append egg-name ".egg-info")) '() '()) (emit-build (list (string-append outdir "/" egg-name ".egg-info")) '() "install" (list (string-append egg-name ".egg-info")) '() '())
(set! installed-files (cons (string-append outdir "/" egg-name ".egg-info") installed-files)) (set! installed-files (cons (string-append outdir "/" egg-name ".egg-info") installed-files))