When a file to be compiled, A.scm, contains (include "B.scm"), the compiler fails to find B.scm if the directory containing A and B are in Guile's load path.
Here's a shell transcript showcasing the bug: --- snip --- $ mkdir test $ echo '(include "test2.scm")' > test/test1.scm $ echo '(display "foo\n")' > test/test2.scm $ pwd /home/taylan $ export GUILE_LOAD_PATH=/home/taylan/test $ unset GUILE_LOAD_COMPILED_PATH $ guile -q GNU Guile 2.0.11 Copyright (C) 1995-2014 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)> (compile-file "/home/taylan/test/test1.scm") ice-9/boot-9.scm:106:20: In procedure #<procedure 248a580 at ice-9/boot-9.scm:97:6 (thrown-k . args)>: ice-9/boot-9.scm:106:20: In procedure open-file: No such file or directory: "./test2.scm" Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(#{ g269}#) [1]> --- snip --- This seems to be related to 'compile-file' setting '%file-port-name-canonicalization' to 'relative', but I don't know what the correct fix is. Taylan