[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