From: Alex Mizrahi
Subject: asdf-install on clisp win32-native
Date: 
Message-ID: <2gacj0Fi7moU1@uni-berlin.de>
hello

this message was first mailed directly to Edi Weitz, however i didn't get
responce from him yet.. maybe my mail address is blocked by spam-filters..
or maybe Edi is just busy or doesn't think that responce is needed.. so i
thought it's better to post it here..(to Edi - i you read that original
message there's additional info at the end of this one..)

i'm trying to use asdf-install on CLISP-2.33 win32-native.
there are a lot of things that are broken..

1)installer.lisp:

(defparameter *cygwin-bash-program*
  "C:\\PROGRA~1\\Cygwin\\bin\\bash.exe")
...
              (return-output-from-program *cygwin-sh-program*

2)port.lisp:
#+(and :clisp :win32)
(defun return-output-from-program (program args)
  (with-output-to-string (out-stream)
    (let ((stream
            (ext:run-shell-command
             (format nil "~A~{ ~A~}" program args
                     :output :stream
                     :wait nil))))
      (loop for line = (ignore-errors (read-line stream nil))
            while line
            do (write-line line out-stream)))))

params of run-shell-command went to format here..

i don't know whether it works for cygwin version, but for native one version
that is
#+(not :win32) works fine except :wait nil - in this case it can
capture no output. with :wait t all is well.

3) there is some special handling of tar for cygwin.. i'm using native tar
(comes with MinGW/MSYS) and general way works with it. so it will be great
if there will be an option for this (option to enable that cygwin
workarounds if they are really needed)

4) installer.lisp download-files-for-package
appears to be broken - it downloads only few first kilobytes, everything
other in file are zeroes.
problem is here:
      (if length
          (let ((buf (make-array length
                     :element-type
                     (stream-element-type stream))))
        #-:clisp (read-sequence buf stream)
        #+:clisp (ext:read-byte-sequence buf stream :no-hang nil)
        (write-sequence buf o))

#'read-sequence can return before it reads all the buffer. i think it's not
some clisp bug - i had same behavoiur with cmucl - it never read more than
3kb at once.
working code looks like:

(if length
          (let ((buf (make-array length
                     :element-type
                     (stream-element-type stream))))
        (loop for pos = 0 then (read-sequence buf stream :start pos)
            while (< pos length))
        (write-sequence buf o))

5)asdf-install.asd
missing dependency "split-sequence" for "installer". it doesn't compile
without it.

with this changes it was able to download and unpack cl-ppcre
package(however there was some problems with cl-ppcre-test - but it's not
critical). and it's able to find it on asdf:oos. kewl.
however i dislike how it searches for systems - if there will be something
fat in installation directories it could take a lot of time/mem.
here's what i think on this.. on unix systems symlinks are used just as
mappings from package names to package locations.. so if win32 doesn't
support this feature it should be done in another way - for example, file
with such mappings(it's not very far from what's in unix, is it?).
asdf-install could read this file on boot to add it to *central-registry*,
and write to this file on install. such solution is only about 10 minutes to
write - and it's quite good i think..

with best regards, Alex 'killer_storm' Mizrahi.
From: Alex Mizrahi
Subject: Re: asdf-install on clisp win32-native
Date: 
Message-ID: <2gahfhFivfiU1@uni-berlin.de>
(message (Hello 'Alex)
(you :wrote :to '(All) :on '(Tue, 11 May 2004 00:49:27 +0300))
(

 AM> this message was first mailed directly to Edi Weitz, however i
 AM> didn't get responce from him yet..

heh, got it when sending this message 8-]

)
(With-best-regards '(Alex Mizrahi) :aka 'killer_storm)
(prin1 "Jane dates only Lisp programmers"))