[elephant-devel] Test on windows + ACL

Ian Eslick eslick at csail.mit.edu
Wed Feb 28 22:31:20 UTC 2007


Frank,

Outstanding! Thank you.  I'll test it locally and promote some  
patches in a day or two.

Cheers,
Ian

On Feb 27, 2007, at 6:07 PM, Frank Schorr wrote:

> On mswin and ACL 8 trial:
>
> (asdf:operate 'asdf:load-op :elephant)
> (asdf:operate 'asdf:load-op :ele-bdb)
> (asdf:operate 'asdf:load-op :elephant-tests)
> (do-backend-tests '(:BDB "c:/temp/testbdb/"))
>
> Doing 124 pending tests of 124 tests total.
>  FIXNUMS FIXNUM-TYPE-1 READ-32-BIT-FIXNUM READ-64-BIT-FIXNUM  
> WRITE-32-BIT-FIXNUM WRITE-64-BIT-FIXNUM BIGNUMS FLOATS RATIONALS  
> BASE-STRINGS STRINGS
>  HARD-STRINGS SYMBOLS CHARS PATHNAMES CONSES HASH-TABLES-1 HASH- 
> TABLES-2 ARRAYS-1 ARRAYS-2 TEST-DEEP-EQUALP OBJECTS STRUCTS STRUCT- 
> NON-STD-CONSTRUCT
>  CIRCULAR PERSISTENT NON-TRANSIENT-CLASS-SLOT-1 NON-TRANSIENT-CLASS- 
> SLOT-2 TRANSIENT-CLASS-SLOT CLASS-DEFINERS BAD-INHERITENCE MIXES  
> MIXES-RIGHT-SLOTS
>  INHERIT INHERIT-RIGHT-SLOTS INITFORM-CLASSES INITFORM-TEST INITARG- 
> TEST NO-EVAL-INITFORM REDEFCLASS MAKUNBOUND UPDATE-CLASS CHANGE- 
> CLASS CHANGE-CLASS3
>  BASICPERSISTENCE TESTOID BTREE-MAKE BTREE-PUT BTREE-GET REMOVE-KV  
> REMOVED MAP-BTREE INDEXED-BTREE-MAKE ADD-INDICES TEST-INDICES  
> INDEXED-PUT INDEXED-GET
>  SIMPLE-SLOT-GET INDEXED-GET-FROM-SLOT1 INDEXED-GET-FROM-SLOT2  
> REMOVE-KV-INDEXED NO-KEY-NOR-INDICES REMOVE-KV-FROM-SLOT1 NO-KEY- 
> NOR-INDICES-SLOT1
>  REMOVE-KV-FROM-SLOT2 NO-KEY-NOR-INDICES-SLOT2 MAP-INDEXED GET- 
> FIRST GET-FIRST2 GET-LAST GET-LAST2 SET SET2 SET-RANGE SET-RANGE2  
> MAP-INDEXED-INDEX
>  REM-KV REM-IDEXKV MAKE-INDEXED2 ADD-INDICES2 PUT-INDEXED2 GET- 
> INDEXED2 GET-FROM-INDEX3 DUP-TEST NODUP-TEST PREV-NODUP-TEST PNODUP- 
> TEST PPREV-NODUP-TEST
>  CUR-DEL1 INDEXED-DELETE TEST-DELETED INDEXED-DELETE2 TEST-DELETED2  
> CUR-DEL2 GET-BOTH PGET-BOTH PGET-BOTH-RANGE PCURSOR NEWINDEX  
> PCURSOR2 ADD-GET-REMOVE
>  ADD-GET-REMOVE-SYMBOL EXISTSP
> Warning: Manually finalizing class IDX-ONE
>  DISABLE-CLASS-INDEXING-TEST INDEXING-BASIC-TRIVIAL INDEXING-BASIC  
> INDEXING-INHERIT INDEXING-RANGE INDEXING-SLOT-MAKUNBOUND
> Warning: Manually finalizing class IDX-FIVE-DEL
>  INDEXING-WIPE-INDEX INDEXING-RECONNECT-DB INDEXING-CHANGE-CLASS  
> INDEXING-REDEF-CLASS
> Warning: Manually finalizing class STRESS-INDEX
>
> Ranged get of 10/700 objects = Linear: 0.671 sec Indexed: 0.02 sec
>  INDEXING-TIMING
> Single store mode: ignoring REMOVE-ELEMENT
> Single store mode: ignoring MIGRATE-BASIC
> Single store mode: ignoring MIGRATE-BTREE
> Single store mode: ignoring MIGRATE-IDX-BTREE
> Single store mode: ignoring MIGRATE-PCLASS
> Single store mode: ignoring  MIGRATE-IPCLASS PREPARES-BDB TEST-SEQ1  
> TEST-SEQ2 CLEANSUP-BDB
> No tests failed.
> T
>
>
> This is what I did:
> in elephant.asd:
> the run-shell-command generated this error, which is strange since  
> output stream was not defined.
> Error: stream #<LISTENER-PANE :LISTENER-PANE in IDE GUI @  
> #x20b10a02> can't be used as output
> [condition type: SIMPLE-ERROR]
>
> I used excl.osi:command-output. The following perform makes  
> libmemutil.dll in the correct
> directory (where memutil.fasl is)
>
> (defmethod perform ((o compile-op) (c elephant-c-source))
>   "Run the appropriate compiler for this platform on the source,  
> getting
>    the specific options from 'compiler-options method.  Default  
> options
>    can be overridden or augmented by subclass methods"
>   #+(or mswindows windows)
>   (progn
>     (let* ((pathname (component-pathname c))
>            (directory (directory-namestring pathname)))
>       (let ((command (format nil "~A ~{~A ~}"
>                        (c-compiler-path c)
>                        (compiler-options (c-compiler c) c
>                                          :input-file (format nil  
> "\"~A\"" (namestring pathname))
>                                          :output-file nil
>                                          :library nil))))
>         (multiple-value-bind (stdout-lines stderr-lines exit-status)
>             (excl.osi:command-output command :directory directory)
>           (unless (zerop exit-status)
>             (error 'operation-error :component c :operation o))))
>
>       (let ((command (format nil "dlltool -z ~A --export-all- 
> symbols -e exports.o -l ~A ~A"
>                        (format nil "\"~A\"" (namestring (make- 
> pathname :type "def" :defaults pathname)))
>                        (format nil "\"~A\"" (namestring (make- 
> pathname :type "lib" :defaults pathname)))
>                        (format nil "\"~A\"" (namestring (make- 
> pathname :type "o" :defaults pathname))))))
>         (multiple-value-bind (stdout-lines stderr-lines exit-status)
>             (excl.osi:command-output command :directory directory)
>           (unless (zerop exit-status)
>             (error 'operation-error :component c :operation o))))
>
>       (let ((command (format nil "~A ~{~A ~}" ;; -I~A -L~A -l~A"
>                        (c-compiler-path c)
>                        (compiler-options (c-compiler c) c
>                                          :input-file
>                                          (list (format nil "\"~A 
> \"" (namestring
>                                                                      ( 
> make-pathname :type "o" :defaults pathname)))
>                                                "exports.o")
>                                          :output-file (format nil  
> "\"~A\"" (first (output-files o c)))
>                                          :library t))))
>         (multiple-value-bind (stdout-lines stderr-lines exit-status)
>             (excl.osi:command-output command :directory directory)
>           (unless (zerop exit-status)
>             (error 'operation-error :component c :operation o))))))
>
>   #-(or mswindows windows)
>   (unless (zerop (run-shell-command
> 		  "~A ~{~A ~}"
> 		  (c-compiler-path c)
> 		  (compiler-options (c-compiler c) c
> 				    :input-file (namestring (component-pathname c))
> 				    :output-file (namestring (first (output-files o c))))))
>     (error 'operation-error :component c :operation o)))
>
>
> The compiler options are not correct for libberkeley-db.dll.
> Since I did not undestand the concept, I did not try to amend the  
> method further.
>
> I changed
>
> (defmethod compiler-options ((compiler (eql :cygwin)) (c elephant-c- 
> source) &key input-file output-file library &allow-other-keys)
>   (unless (or input-file output-file)
>     (error "Must specify at least one of output and input files"))
>     .....
>
> Since there is no output file sometimes.
>
>
> This produced a correct libberkeley-db.dll:
>
> gcc -mno-cygwin -mwindows -c -Wall -std=c99 -L/c/Programme/Oracle/ 
> Berkeley\ DB\ 4.5.20/lib/ -I/c/Programme/Oracle/Berkeley\ DB\  
> 4.5.20/include/ libberkeley-db.c
> dlltool -z libberkeley-db.def --export-all-symbols -e exports.o -l  
> libberkeley-db.lib libberkeley-db.o
> gcc -shared -mno-cygwin -mwindows -L/c/Programme/Oracle/Berkeley\ DB 
> \ 4.5.20/bin/ -llibdb45 libberkeley-db.o exports.o -o libberkeley- 
> db.dll
>
> At first, there was this error:
>
> In file included from libberkeley-db.c:165:
> /c/Programme/Oracle/Berkeley DB 4.5.20/include/db.h:99: error:  
> conflicting types
>  for 'ssize_t'
> /usr/lib/gcc/i686-pc-mingw32/3.4.4/../../../../i686-pc-mingw32/ 
> include/sys/types
> .h:104: error: previous declaration of 'ssize_t' was here
>
>
> I commented these lines out in C:\cygwin\usr\include\mingw\sys 
> \types.h:
>
> /*
>  *#ifndef _SSIZE_T_
>  *#define _SSIZE_T_
>  *typedef long _ssize_t;
>  *
>  *#ifndef	_NO_OLDNAMES
>  *typedef _ssize_t ssize_t;
>  *#endif
>  *#endif * Not _SSIZE_T_ *
> */
>
> apparently this this did not cooperate with
>
> #ifdef _WIN64
> typedef int64_t ssize_t;
> #else
> typedef int32_t ssize_t;
> #endif
>
> in db.h.
>
>
> There is one remaining warning:
>
> libberkeley-db.c: In function `case_cmp':
> libberkeley-db.c:1233: warning: implicit declaration of function  
> `_strnicmp'
>
>
> Now, doing (do-backend-tests '(:BDB "c:/temp/testbdb/")) a second  
> or third ... time produces this:
>
> 1 out of 124 total tests failed: INDEXING-WIPE-INDEX.
> NIL
>
>
> When I delete all files in "c:/temp/testbdb/" the first test is ok,  
> second has 1 out of 124 failed.
>
> Elephant is nearly ready for mswin !!!
>
> Frank
> ______________________________________________________________________
> XXL-Speicher, PC-Virenschutz, Spartarife & mehr: Nur im WEB.DE Club!		
> Jetzt gratis testen! http://freemail.web.de/home/landingpad/?mc=021130
>
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel




More information about the elephant-devel mailing list