上下文:
我目前正在我的gplv3+项目的generate-ninja-build.scm中编写git commit cb7530e3ff10脚本(由bismon研究项目资助)。根据合同,这是一些Linux自由软件项目,应该在Debian上运行。
该脚本应该比现有的shell脚本AA>有所改进,它为H2020工具生成一些build.ninja文件(一些bismon/generate-ninja-builder.sh一)。
问题:
当前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")

但是当我在debian/sid上以./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)

ninja与预期的花哨gnu readline和自动完成接口。
我做错什么了?

最佳答案

在GuILE 2.2文档中,我找不到任何提及(ice-9 posix)模块,而在源树中存在适当的文件时,modules/ice-9目录README
非模块文件包括:
boot-9.scm—在guile启动时加载

posix.scm—由boot-9.scm加载
无法加载它,因为它不是用户代码要加载的模块文件。同样的事情至少可以追溯到Guile1.8,所以如果你在某个地方找到了一些文档或教程,包括试图用这个名字加载一个模块,那就是错误的。

关于linux - 如何使用Guile 2.2的POSIX软件包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57034154/

10-11 07:17