54 lines
2.4 KiB
Scheme
54 lines
2.4 KiB
Scheme
(use-modules (fruix system freebsd)
|
|
(ice-9 format)
|
|
(ice-9 pretty-print)
|
|
(srfi srfi-1)
|
|
(srfi srfi-13)
|
|
(rnrs io ports))
|
|
|
|
(define workdir
|
|
(or (getenv "WORKDIR")
|
|
(error "WORKDIR environment variable is required")))
|
|
(define os-file
|
|
(or (getenv "OS_FILE")
|
|
(error "OS_FILE environment variable is required")))
|
|
(define metadata-file
|
|
(string-append workdir "/phase7-operating-system-metadata.txt"))
|
|
|
|
(primitive-load os-file)
|
|
(validate-operating-system phase7-operating-system)
|
|
|
|
(let* ((spec (operating-system-closure-spec phase7-operating-system))
|
|
(generated-files (assoc-ref spec 'generated-files))
|
|
(base-packages (assoc-ref spec 'base-packages)))
|
|
(call-with-output-file metadata-file
|
|
(lambda (port)
|
|
(format port "host_name=~a~%" (assoc-ref spec 'host-name))
|
|
(format port "kernel_package=~a~%" (assoc-ref spec 'kernel-package))
|
|
(format port "bootloader_package=~a~%" (assoc-ref spec 'bootloader-package))
|
|
(format port "base_package_count=~a~%" (assoc-ref spec 'base-package-count))
|
|
(format port "base_packages=~a~%" (string-join base-packages ","))
|
|
(format port "user_count=~a~%" (assoc-ref spec 'user-count))
|
|
(format port "users=~a~%" (string-join (assoc-ref spec 'users) ","))
|
|
(format port "group_count=~a~%" (assoc-ref spec 'group-count))
|
|
(format port "groups=~a~%" (string-join (assoc-ref spec 'groups) ","))
|
|
(format port "file_system_count=~a~%" (assoc-ref spec 'file-system-count))
|
|
(format port "services=~a~%" (string-join (map symbol->string (assoc-ref spec 'services)) ","))
|
|
(format port "generated_files=~a~%" (string-join generated-files ","))
|
|
(format port "init_mode=~a~%" (assoc-ref spec 'init-mode))
|
|
(format port "ready_marker=~a~%" (assoc-ref spec 'ready-marker))
|
|
(format port "spec_pretty=~a~%"
|
|
(string-map (lambda (ch) (if (char=? ch #\newline) #\space ch))
|
|
(with-output-to-string
|
|
(lambda ()
|
|
(pretty-print spec)))))))
|
|
|
|
(when (getenv "METADATA_OUT")
|
|
(copy-file metadata-file (getenv "METADATA_OUT")))
|
|
|
|
(format #t "PASS phase7-operating-system-model~%")
|
|
(format #t "Metadata file: ~a~%" metadata-file)
|
|
(when (getenv "METADATA_OUT")
|
|
(format #t "Copied metadata to: ~a~%" (getenv "METADATA_OUT")))
|
|
(display "--- metadata ---\n")
|
|
(display (call-with-input-file metadata-file get-string-all)))
|