A standard layout for R7RS libraries is to have an .sld file containing the library import and export declarations with a parallel .scm file with the same name in the same directory, which the .sld file (include ...)s.
E.g. lib/dpk/mylibrary.sld: (define-library (dpk mylibrary) (import (scheme base)) (export make-frob #;etc) (include "mylibrary.scm")) and then mylibrary.scm is also in the same lib/dpk directory as mylibrary.scm and includes the actual code. Guile supports looking for .sld files before .scm files if started in --r7rs mode. However, in this case, it will not find the .scm file if it’s included from the .sld file. Starting Guile with: guile --r7rs -L './lib' or by setting the GUILE_LOAD_PATH environment variable, (in both cases with absolute paths or relative ones) and attempting to import libraries such as this results in a file not found error for the included .scm file, e.g.: scheme@(guile-user)> (import (chibi shell)) ;;; note: source file /Users/dpk/Projects/r7rs/lib/chibi/shell.sld ;;; newer than compiled /Users/dpk/.cache/guile/ccache/3.0-LE-8-4.6/Users/dpk/Projects/r7rs/lib/chibi/shell.sld.go ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /Users/dpk/Projects/r7rs/lib/chibi/shell.sld ;;; WARNING: compilation of /Users/dpk/Projects/r7rs/lib/chibi/shell.sld failed: ;;; In procedure open-file: No such file or directory: "chibi/shell.scm" scheme@(guile-user)> Curiously, including a file which *actually* doesn’t exist results in two different, one of which correctly reports the full path of the file it’s purportedly trying to include: scheme@(guile-user)> (import (chibi shell)) ;;; note: source file /Users/dpk/Projects/r7rs/lib/chibi/shell.sld ;;; newer than compiled /Users/dpk/.cache/guile/ccache/3.0-LE-8-4.6/Users/dpk/Projects/r7rs/lib/chibi/shell.sld.go ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /Users/dpk/Projects/r7rs/lib/chibi/shell.sld ;;; WARNING: compilation of /Users/dpk/Projects/r7rs/lib/chibi/shell.sld failed: ;;; In procedure open-file: No such file or directory: "chibi/wonderpants.scm" While compiling expression: In procedure open-file: No such file or directory: "/Users/dpk/Projects/r7rs/lib/chibi/wonderpants.scm" scheme@(guile-user)> So this smells like a bug where the part of the R7RS library code looks in the wrong place and fails, but after it’s already failed, a second part of the code looks again in the correct location and reports another error if the file really didn’t exist. This is a strange hypothesis but it’s the only thing I can think of. Changing the path in the include declaration to be absolute fixes the problem, but then it no longer works on other people’s machines. Guile version: 3.0.9 installed from nix-unstable