[asdf-devel] Issue in GETUID (MCL, again) and others

Faré fahree at gmail.com
Sat Jun 11 19:44:26 UTC 2011


2011/6/11 Chun Tian (binghe) <binghe.lisp at gmail.com>:
> Hi, Faré
>
> Today I compile latest asdf.lisp in MCL and see two warnings:
>
> ? (compile-file #P"Macintosh HD:Users:binghe:Lisp:packages:asdf:asdf.lisp")
> ;Compiler warnings for "Macintosh HD:users:binghe:Lisp:packages:asdf:asdf.lisp" :
> ;   :LAMBDA compiler warning with args (&OPTIONAL), in WITH-SYSTEM-DEFINITIONS.
> ;Compiler warnings for "Macintosh HD:users:binghe:Lisp:packages:asdf:asdf.lisp" :
> ;   Undefined function CCL::GETUID, in ASDF::GET-UID.
> #P"Macintosh HD:users:binghe:Lisp:packages:asdf:asdf.cfsl"
> T
> T
>
> The warning "Undefined function CCL::GETUID, in ASDF::GET-UID" was caused by #+ccl in following piece of code:
>
> #+asdf-unix
> (progn
>  #+ecl #.(cl:and (cl:< ext:+ecl-version-number+ 100601)
>                  '(ffi:clines "#include <sys/types.h>" "#include <unistd.h>"))
>  (defun* get-uid ()
>    #+allegro (excl.osi:getuid)
>    #+ccl (ccl::getuid)
>    ...
>
> Both Clozure CL and MCL contains the feature :CCL, so the form (ccl::getuid) was wrongly exposed to MCL.  I think #+clozure (or legacy #+openmcl) should be used instead, just like other places in asdf.lisp. (if run-shell-command works on MCL, the function GET-UID should also work in MCL)
>
> A trivial patch is in attach (there's another #-ccl, don't forget it)
>
Actually, I'm considering getting rid of getuid entirely.

1- it was moved into ASDF to provide for compatibility of asdf's
 output-translations with the legacy behavior of common-lisp-controller.
 However, it was found that this legacy behavior was a continued
 security hazard, and that to detect and/or prevent security issues,
 one would have to do a lot of non-portable uid verifications, and
 at the same time it might prevent legitimate attempts at fasl-sharing
 that other people might want to try.

2- I'm pretty sure no one uses it.

3- If someone really really wants to use it, he'll need to implement
 the rest of the (non-portable) code required to do it properly, at
 which point he can import the getuid code that I'm going to remove
 into the rest of his support file, which will necessarily be much
 bigger.

> P. S. For the first warning, why macro with-system-definitions have a standalone &optional in its parameter list?
>
> (defmacro with-system-definitions ((&optional) &body body)
>  `(call-with-system-definitions #'(lambda () , at body)))
>
The &optional it was put there in tentative support of GCL 2.6,
which borks otherwise; but since GCL 2.6 isn't working anyway,
so I'll remove it.

Thank you for your feedback.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Tradition is the matter of which civilization is made.
Anyone who rejects tradition per se should be left naked in a desert island.




More information about the asdf-devel mailing list