Hi, Thanks for your feedback!
DNS <d...@rbose.org> skribis: > sorry for my late reply, and thx a lot for your help. > i was compiling 2.0.7 and had the same issue, then i was finally lookin > at the log and figured out that it is because of a "umlaut" char in the > parent directory-name where i tried to build guile. > The directory was called "Arbeitsfläche" ("desktop" in german) and in > the log i saw the files could not be found because the dir-name was not > correctly converted (into UTF-8 i guess). The dir name was shown as > "Arbeitsf??che"... Ooh, I see. This is related to commit ed4c3739 (see <http://lists.gnu.org/archive/html/guile-devel/2011-12/msg00160.html>). What happens is that the directory name may be correctly decoded when passed as an argument: --8<---------------cut here---------------start------------->8--- [ludo@pluto:~/tmp/Courtès]$ strace -f -o ,,s ~/src/guile/meta/guile -L $PWD -c '(set-port-encoding! (current-output-port) "UTF-8")(pk %load-path)' ;;; (("/home/ludo/tmp/Courtès" ...)) --8<---------------cut here---------------end--------------->8--- But then ‘scm_stat’ calls ‘scm_to_locale_string’, which uses the wrong encoding at this point, leading to this: --8<---------------cut here---------------start------------->8--- [ludo@pluto:~/tmp/Courtès]$ strace -f -o ,,s ~/src/guile/meta/guile -L $PWD -c '(use-modules (t))' [...] ERROR: In procedure scm-error: ERROR: no code for module (t) [ludo@pluto:~/tmp/Courtès]$ grep Court ,,s | head -10 24237 execve("/home/ludo/src/guile/meta/guile", ["/home/ludo/src/guile/meta/guile", "-L", "/home/ludo/tmp/Court\303\250s", "-c", "(use-modules (t))"], [/* 74 vars */]) = 0 24237 stat("/home/ludo/tmp/Court\303\250s", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 24237 execve("/home/ludo/src/guile/meta/uninstalled-env", ["/home/ludo/src/guile/meta/uninst"..., "/home/ludo/src/guile/libguile/gu"..., "-L", "/home/ludo/tmp/Court\303\250s", "-c", "(use-modules (t))"], [/* 73 vars */]) = 0 24237 stat("/home/ludo/tmp/Court\303\250s", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 24237 execve("/home/ludo/src/guile/libguile/guile", ["/home/ludo/src/guile/libguile/gu"..., "-L", "/home/ludo/tmp/Court\303\250s", "-c", "(use-modules (t))"], [/* 78 vars */]) = 0 24237 stat("/home/ludo/tmp/Court\303\250s", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 24256 read(3, "ludo\0x\0Ludovic Courtes\0/home/lud"..., 70) = 70 24237 execve("/home/ludo/src/guile/libguile/.libs/guile", ["/home/ludo/src/guile/libguile/.l"..., "-L", "/home/ludo/tmp/Court\303\250s", "-c", "(use-modules (t))"], [/* 80 vars */]) = 0 24237 stat("/home/ludo/tmp/Court?s/t.scm", 0x7fff16fda150) = -1 ENOENT (No such file or directory) 24237 stat("/home/ludo/tmp/Court?s/t", 0x7fff16fda150) = -1 ENOENT (No such file or directory) --8<---------------cut here---------------end--------------->8--- The problem is even worse when the directory is passed through an environment variable, because in that case even the input decoding is broken: --8<---------------cut here---------------start------------->8--- [ludo@pluto:~/tmp/Courtès]$ GUILE_LOAD_PATH=$PWD:... ~/src/guile/meta/guile -c '(set-port-encoding! (current-output-port) "UTF-8")(pk %load-path)' ;;; (("/home/ludo/src/guile/guile-readline" "/home/ludo/src/guile/module" "/home/ludo/tmp/Court??s")) --8<---------------cut here---------------end--------------->8--- Ouch! So, as mentioned in the thread above, 2.2 will not have this problem. But for 2.0, I can’t even imagine an ugly hack that would help. Thoughts? Ludo’.