[asdf-devel] android ECL port cache directory problem

Faré fahree at gmail.com
Tue Oct 20 12:50:08 UTC 2015


I don't understand your question.
1- SLIME has its own compilation and cache machinery, independent from ASDF.
2- The source-registry, recommended way of using ASDF (for speed, use
the cl-source-registry-cache), has both :directory and :tree

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Keynesians: why bring prosperity to other countries through war's devastation?
Let's bring back the troops and have them bomb OUR cities!


On Tue, Oct 20, 2015 at 8:05 AM, Daniel Kochmański <daniel at turtleware.eu> wrote:
> 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