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
(csc-options "-X" "r7rs" "-R" "r7rs" "-optimize-level" "3" "-C" "-D_GNU_SOURCE"))
(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
(component-dependencies stock_overrides.h)
(source "zilch-go.scm"))
(program zilch-cli-rust
(component-dependencies stock_overrides.h)
(source "zilch-rust.scm"))
(program zilch-cli-ninja
(component-dependencies stock_overrides.h)
(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)
(chicken base) (chicken format)
(srfi 128) (srfi 132) (srfi 146) (srfi 151))
(export zfile zsymlink zdir
z-file? z-directory? z-symlink?
zfile->store)
@ -178,7 +179,7 @@
(write-padding total-len)
(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)
(cond
((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)))
cached)
(zexp-add-unquote-handler
(lambda (val)
(if (or (z-file? val) (z-symlink? val) (z-directory? val))
(string-append (zexp-unquote (zfile->store val)) "/-")
#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
(csc-options "-X" "r7rs" "-X" "zilch.zexpr" "-R" "r7rs" "-optimize-level" "3"))
(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
(source "src/go.sld")
(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))
(extension zilch.lang.go.package
(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
(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
(source "src/sum.sld"))
(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
(csc-options "-X" "r7rs" "-X" "zilch.zexpr" "-R" "r7rs" "-optimize-level" "3"))
(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
(source "src/rust.sld"))
(source "src/rust.sld")
(component-dependencies runner_source.h))
(extension zilch.lang.rust.registry
(source "src/registry.sld"))
(extension zilch.lang.rust.cargo
(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
(source "src/cfg.sld"))
(extension zilch.lang.rust.build-script
(source "src/build-script.sld")
(component-dependencies zilch.lang.rust))
(component-dependencies runner_source.h zilch.lang.rust))
(extension zilch.lang.rust.resolver
(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))
(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 name (symbol->string (cadr component)))
(define source #f)
@ -49,6 +55,10 @@
((csc-options) (set! csc-options (append csc-options (cdr v))))))
(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 flagstr "")
(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)
(write-string "\n"))) (cdr val)))
(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)
(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))