我目前正在我的GPLv3 +项目generate-ninja-build.scm(由git commit
cb7530e3ff10研究项目资助)的bismon中编写H2020脚本。按照合同,这是一些应该在Debian上运行的Linux免费软件项目。
该脚本应该是对现有shell脚本bismon/generate-ninja-builder.sh的改进,该脚本为ninja工具生成了build.ninja
文件(有些build automation一个)。
当前的generate-ninja-build.scm
刚刚(版权声明注释除外):
(use-modules
;; see https://www.gnu.org/software/guile/manual/html_node/Modules.html
(ice-9 posix) ;;;; problematic line, but why ?
(ice-9 readline)
(ice-9 format)
(ice-9 pretty-print)
)
;;;;;;;;;;;;;;;; constants
(define bm-packages '("glib-2.0" "jansson" "gtk+-3.0"))
(define bm-gcc "gcc")
但是当我在其./generate-ninja-build.scm
给出
guile --version
的身份运行它时
guile (GNU Guile) 2.2.4
Packaged by Debian (2.2.4-deb+1-3)
我得到:
rimski.x86_64 ~/bismon 8:17 .0 % ./generate-ninja-build.scm
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /home/basile/bismon/./generate-ninja-build.scm
;;; WARNING: compilation of /home/basile/bismon/generate-ninja-build.scm failed:
;;; no code for module (ice-9 posix)
Backtrace:
9 (primitive-load "/home/basile/bismon/./generate-ninja-b…")
In ice-9/eval.scm:
721:20 8 (primitive-eval (use-modules (ice-9 posix) (ice-9 #) # …))
In ice-9/psyntax.scm:
1235:36 7 (expand-top-sequence ((use-modules (ice-9 posix) (…) …)) …)
1182:24 6 (parse _ (("placeholder" placeholder)) ((top) #(# # …)) …)
285:10 5 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) …)
In ice-9/boot-9.scm:
3377:20 4 (process-use-modules _)
222:17 3 (map1 (((ice-9 posix)) ((ice-9 readline)) ((ice-9 #)) #))
3378:31 2 (_ ((ice-9 posix)))
2803:6 1 (resolve-interface _ #:select _ #:hide _ #:prefix _ # _ …)
In unknown file:
0 (scm-error misc-error #f "~A ~S" ("no code for modu…" …) …)
ERROR: In procedure scm-error:
no code for module (ice-9 posix)
但是locate ice-9/posix
的输出包括:
/usr/lib/x86_64-linux-gnu/guile/2.0/ccache/ice-9/posix.go
/usr/lib/x86_64-linux-gnu/guile/2.2/ccache/ice-9/posix.go
/usr/share/guile/2.0/ice-9/posix.scm
/usr/share/guile/2.2/ice-9/posix.scm
所以我希望(ice-9 posix)
这一行能够正常工作。
如果我对该行进行注释,一切都会按照我的意愿进行。
我的~/.guile
只有:
;; file ~/.guile
(use-modules
(ice-9 readline)
(ice-9 format)
(ice-9 pretty-print))
(activate-readline)
和my interactive guile
works like a charm以及预期的精美GNU readline和自动完成界面。
答案 0 :(得分:1)
在guile 2.2文档中找不到(ice-9 posix)
模块的任何内容,尽管源树中存在适当的文件,但modules/ice-9
目录README表示>
非模块文件为:
boot-9.scm-在guile启动时加载
...
posix.scm-由boot-9.scm加载
您无法加载它,因为它不是旨在由用户代码加载的模块文件。同一件事至少可以追溯到guile 1.8,因此,如果您在某处找到了一些文档或教程,包括试图以该名称加载模块,那简直是错误的。
答案 1 :(得分:1)
sudo apt安装guile-2.2-dev guile-2.0-dev guile-1.8-dev
考虑使用Guix代替Debian。默认情况下,所有开发依赖项都将安装以替换Python。 http://guix.gnu.org/