[asdf-devel] android ECL port cache directory problem
Daniel Kochmański
daniel at turtleware.eu
Tue Oct 20 12:05:22 UTC 2015
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
More information about the asdf-devel
mailing list