update: adding explicit
(pushnew (namestring (merge-pathnames #P"slime-2.14/" *ecl-home*)) asdf:*central-registry*) solved the problem. Is it a desired feature that asdf can "reach" asd file from some subdirectory but can't load such a system? Regards, Daniel Daniel Kochmański writes: > Hello, > > I'm currently working on ECL port for the android. I've managed to make > it more or less usable, but I've encountered some problem with the cache > directory translation in ASDF. Not sure how to solve it. > > Everything from the application has to be put in it's directory (in this > case its /data/data/org.lisp.ecl/) under directories app_resources/, > cache/ etc. > > > To achieve it I set necessary directories from the initializatio script > with: > > sprintf(tmp, "(setq *default-pathname-defaults* #p\"%s/\")", home); > si_safe_eval(3, c_string_to_object(tmp), Cnil, OBJNULL); > si_select_package(ecl_make_simple_base_string("CL-USER", 7)); > si_safe_eval(3, c_string_to_object("(load \"init\")"), Cnil, OBJNULL); > > Where home points to /data/data/org.lisp.ecl/app_resources/ > > Also related part of the init.lisp file: > -- CUT HERE -- > (format t "Setting environment variables~%") > (setq *default-directory* > *default-pathname-defaults*) > (defvar *ecl-home* *default-directory*) > (ext:setenv "HOME" (namestring *ecl-home*)) > (ext:setenv "USER-CACHE" > (namestring (merge-pathnames #P"../cache/" *ecl-home*))) > (setf asdf:*user-cache* > (merge-pathnames #P"../cache/" *default-pathname-defaults*)) > > (format t "Loading the modules~%") > (require :ASDF) > (require :SOCKETS) > (require :SERVE-EVENT) > > (pushnew (namestring *default-pathname-defaults*) > asdf:*central-registry*) > > ;; (asdf::ensure-output-translations) > (format t "XXX: DIAG:~% > (asdf:compute-output-translations) ~A~% > (ext:getenv \"HOME\" ~A~% > asdf:*user-cache* ~A~% > (truename \"SYS:\") ~A~% > *default-pathname-defaults* ~A~%~%" > (asdf::compute-output-translations) > (ext:getenv "HOME") > asdf:*user-cache* (truename "SYS:") *default-pathname-defaults*) > > (format t "Preparing swank~%") > (handler-case (asdf:oos 'asdf:load-op :swank :verbose t) > (condition (c) > (format t "condition ~A happened~%" c) > (format t "filepath SYS:SLIME-2.14;SWANK.ASD.NEWEST: ~A~%" > (truename #P"SYS:SLIME-2.14;SWANK.ASD.NEWEST")) > (force-output) > (error c))) > -- CUT HERE -- > > But this fails with filesystem error for pathname > #P"/SLIME-2.14/SWANK-LOADER-tmpWIW7CRE5.FASC" > > Related part of the logcat output: > -- CUT HERE -- > I/stdout (19157): Setting environment variables > I/stdout (19157): Loading the modules > I/stdout (19157): XXX: DIAG: > I/stdout (19157): (asdf:compute-output-translations) ((SYS:**;*.*.* T) > I/stdout (19157): > (/data/data/org.lisp.ecl/cache/**/*.* > I/stdout (19157): T) > I/stdout (19157): (T > I/stdout (19157): > /data/data/org.lisp.ecl/cache/**/*.*)) > I/stdout (19157): (ext:getenv "HOME" > /data/data/org.lisp.ecl/app_resources/ > I/stdout (19157): asdf:*user-cache* > /data/data/org.lisp.ecl/app_resources/../cache/ > I/stdout (19157): (truename "SYS:") > /data/data/org.lisp.ecl/app_resources/ > I/stdout (19157): *default-pathname-defaults* > /data/data/org.lisp.ecl/app_resources/ > I/stdout (19157): Preparing swank > I/stdout (19157): condition Filesystem error with pathname > #P"/SLIME-2.14/SWANK-LOADER-tmpWIW7CRE5.FASC". > I/stdout (19157): Either > I/stdout (19157): 1) the file does not exist, or > I/stdout (19157): 2) we are not allowed to access the file, or > I/stdout (19157): 3) the pathname points to a broken symbolic link. happened > I/stdout (19157): filepath SYS:SLIME-2.14;SWANK.ASD.NEWEST: > /data/data/org.lisp.ecl/app_resources/slime-2.14/swank.asd > I/native-activity(19157): EXIT TOP LEVEL > -- CUT HERE-- > > As you can see caches seem to be set up properly. But ECL tries to load > the FASC file from the root directory. > > Note, that if slime files are put directly in app_resources, not in > slime-2.14 directory everything loads fine. > > I would be greatful for any hints. > > Thanks, > Daniel -- Daniel Kochmański | Poznań, Poland ;; aka jackdaniel "Be the change that you wish to see in the world." - Mahatma Gandhi