Update of /project/elephant/cvsroot/elephant In directory clnet:/tmp/cvs-serv8074
Modified Files: config.sexp ele-clsql.asd elephant.asd Log Message: Final changes to build process for prebuilt windows files, documenting user configuration options, enabling clsql-lib load paths and some installation manual edits
--- /project/elephant/cvsroot/elephant/config.sexp 2007/04/25 02:27:56 1.11 +++ /project/elephant/cvsroot/elephant/config.sexp 2007/04/30 00:38:29 1.12 @@ -1,48 +1,63 @@ -#+(or sbcl allegro) -((:berkeley-db-include-dir . "/opt/local/include/db45/") +#+(and (or sbcl allegro) (not mswindows) (not windows)) +((:compiler . :gcc) + (:berkeley-db-include-dir . "/opt/local/include/db45/") (:berkeley-db-lib-dir . "/opt/local/lib/db45/") (:berkeley-db-lib . "/opt/local/lib/db45/libdb-4.5.dylib") (:berkeley-db-deadlock . "/opt/local/bin/db45_deadlock") - (:pthread-lib . nil) (:berkeley-db-cachesize . 20971520) - (:clsql-lib . nil) - (:compiler . :gcc)) + (:berkeley-db-map-degree2 . t) + (:clsql-lib-paths . nil) + (:prebuilt-libraries . nil)) +
#+openmcl -((:berkeley-db-include-dir . "/usr/local/BerkeleyDB.4.5/include/") +((:compiler . :gcc) + (:berkeley-db-include-dir . "/usr/local/BerkeleyDB.4.5/include/") (:berkeley-db-lib-dir . "/usr/local/BerkeleyDB.4.5/lib/") (:berkeley-db-lib . "/usr/local/BerkeleyDB.4.5/lib/libdb-4.5.dylib") - (:pthread-lib . nil) - (:clsql-lib . nil) - (:compiler . :gcc)) + (:berkeley-db-cachesize . 20971520) + (:berkeley-db-map-degree2 . t) + (:prebuilt-libraries . nil) + (:clsql-lib-paths . nil))
#+(and lispworks (not mswindows)) -((:berkeley-db-include-dir . "/opt/local/include/db45/") - (:berkeley-db-lib-dir . "/opt/local/lib/db45/") - (:berkeley-db-lib . "/opt/local/lib/db45/libdb-4.5.dylib") - (:berkeley-db-deadlock . "/opt/local/bin/db45_deadlock") - (:pthread-lib . nil) - (:clsql-lib . nil) - (:compiler . :gcc)) +((:compiler . :gcc) + (:berkeley-db-include-dir . "/usr/local/BerkeleyDB.4.5/include/") + (:berkeley-db-lib-dir . "/usr/local/BerkeleyDB.4.5/lib/") + (:berkeley-db-lib . "/usr/local/BerkeleyDB.4.5/lib/libdb-4.5.dylib") + (:berkeley-db-deadlock . "/usr/local/BerkeleyDB.4.5/bin/db_deadlock") + (:berkeley-db-cachesize . 20971520) + (:berkeley-db-map-degree2 . t) + (:prebuilt-libraries . nil) + (:clsql-lib-paths . nil))
#+(or mswindows windows) -((:berkeley-db-include-dir . "C:/Program Files/Oracle/Berkeley DB 4.5.20/include/") +((:compiler . :cygwin) + (:berkeley-db-include-dir . "C:/Program Files/Oracle/Berkeley DB 4.5.20/include/") (:berkeley-db-lib-dir . "C:/Program Files/Oracle/Berkeley DB 4.5.20/bin/") (:berkeley-db-lib . "C:/Program Files/Oracle/Berkeley DB 4.5.20/bin/libdb45.dll") (:berkeley-db-deadlock . "C:/Program Files/Oracle/Berkeley DB 4.5.20/bin/db_deadlock.exe") - (:pthread-lib . nil) - (:clsql-lib . nil) - (:compiler . :cygwin)) + (:berkeley-db-cachesize . 20971520) + (:berkeley-db-map-degree2 . t) + (:clsql-lib-paths . nil) + (:prebuilt-libraries . t))
;; Berkeley 4.5 is required, each system will have different settings for ;; these directories, use this as an indication of what each key means ;; -;; Typical pthread settings are: /lib/tls/libpthread.so.0 -;; -;; nil means that the library in question is not loaded -;; -;; NOTE: The latest SBCL (0.9.17+) on linux no longer needs the pthread library, -;; it is statically linked against it now with the new thread support +;; :prebuilt-libraries is true by default for windows machines. It causes +;; the library loader to look in the elephant root directory for the shared +;; libraries. (nil or t) +;; +;; :clsql-lib-paths tell clsql where to look for which ever SQL distribution +;; library files you need it to look for. For example... +;; +;; (:clsql-lib-paths . ("/Users/me/Work/SQlite3/" "/Users/me/Work/Postgresql/")) +;; +;; :pthread-lib is deprecated, for old versions of sbcl prior to 0.9.17 that +;; did not have pthreads compiled in. If you are using an old version, we +;; recommend that you upgrade! +;; Typical pthread settings were: /lib/tls/libpthread.so.0 ;; ;; :compiler options are ;; :gcc (default: for unix platforms with /usr/bin/gcc) @@ -52,16 +67,18 @@ ;; Additional supported parameters include: ;; ;; -;; :berkeley-db-cachesize - an integer indicating the number of bytes -;; for the page cache, default 10MB which is -;; about enough storage for 10k-30k indexed -;; persistent objects -;; -;; :map-using-degree2 - Boolean parameter that indicates whether map -;; operations lock down the btree for the entire -;; transaction or whether they allow other -;; transactions to add/delete/modify values -;; before the map operation is completed. The -;; map operation remains stable and any writes -;; are kept transactional, see user manual as -;; well as berkeley DB docs for more details +;; :berkeley-db-cachesize +;; An integer indicating the number of bytes +;; for the page cache, default 20MB which is +;; about enough storage for 10k-30k indexed +;; persistent objects +;; +;; :berkeley-db-map-degree2 +;; Boolean parameter that indicates whether map +;; operations lock down the btree for the entire +;; transaction or whether they allow other +;; transactions to add/delete/modify values +;; before the map operation is completed. The +;; map operation remains stable and any writes +;; are kept transactional, see user manual as +;; well as berkeley DB docs for more details. --- /project/elephant/cvsroot/elephant/ele-clsql.asd 2007/03/23 16:31:52 1.10 +++ /project/elephant/cvsroot/elephant/ele-clsql.asd 2007/04/30 00:38:29 1.11 @@ -16,29 +16,33 @@ ;;; as governed by the terms of the Lisp Lesser GNU Public License ;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
-;; (eval-when (:compile-toplevel :load-toplevel :execute) -;; (unless (find-package 'clsql) -;; (asdf:operate 'asdf:load-op 'clsql))) - -;; ;; clsql needs to know how to find libaries to various databases.... -;; (defvar *clsql-foreign-lib-path* "/usr/lib") -;; (defvar *elephant-lib-path* "/usr/local/share/common-lisp/elephant/") -;; (clsql:push-library-path *clsql-foreign-lib-path*) -;; (clsql:push-library-path *elephant-lib-path*) -;; ) - -;;(defparameter *clsql-foreign-lib-path* #p"/usr/lib") -;;(defparameter *elephant-lib-path* #p"/usr/local/share/common-lisp/elephant/") - -;;(defmethod asdf:perform :after ((o asdf:load-op) -; (c (eql (asdf:find-system 'clsql)))) -;; (let ((plp (find-symbol (symbol-name '#:push-library-path) -;; (find-package 'clsql)))) -;; (funcall plp -;; *clsql-foreign-lib-path*) -;; (funcall plp -;; *elephant-lib-path*) -;;)) +(in-package :cl-user) + +;; Forward definition +(defpackage elephant-system + (:use :cl :asdf) + (:export :elephant-c-source :compiler-options :foreign-libraries-to-load-first :get-config-option)) + +(defpackage ele-clsql-system + (:use :cl :asdf :elephant-system)) + +(in-package :ele-clsql-system) + +;; +;; Make sure asdf is loaded prior to evaluating the rest of the file (tacky) +;; +(eval-when (:compile-toplevel :load-toplevel :execute) + (unless (find-package 'clsql) + (asdf:operate 'asdf:load-op 'clsql))) + +(defmethod asdf:perform :after ((o asdf:load-op) + (c (eql (asdf:find-system 'clsql)))) + (let ((paths (get-config-option :clsql-lib-paths (find-system :elephant))) + (plp (find-symbol (symbol-name '#:push-library-path) + (find-package 'clsql)))) + (loop for path in paths do + (format t "Pushing ~A onto clsql::*FOREIGN-LIBRARY-SEARCH-PATHS*~%" path) + (funcall plp (pathname path)))))
(defsystem ele-clsql :name "elephant" --- /project/elephant/cvsroot/elephant/elephant.asd 2007/04/29 02:10:54 1.46 +++ /project/elephant/cvsroot/elephant/elephant.asd 2007/04/30 00:38:29 1.47 @@ -94,6 +94,7 @@ "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" + (unless (get-config-option :prebuilt-libraries c) #+(or mswindows windows) (progn (let* ((pathname (component-pathname c)) @@ -144,7 +145,7 @@ (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))) + (error 'operation-error :component c :operation o))))
#| (defmethod perform ((o compile-op) (c elephant-c-source)) @@ -247,9 +248,21 @@ (error "Could not load ~A into ~A" file module))))) ;; Load the compiled libraries (dolist (file (output-files (make-instance 'compile-op) c)) - (format t "Loading ~A~%" file) - (or (uffi-funcall :load-foreign-library file :module (component-name c)) - (error "Could not load ~A" file)))) + (format t "Attempting to load ~A...~%" (file-namestring file)) + (if (and (probe-file file) + (not (get-config-option :prebuilt-libraries c))) + (progn + (or (uffi-funcall :load-foreign-library file :module (component-name c)) + (error "Could not load ~A" file)) + (format t "Loaded ~A~%" file)) + (let* ((root-dir (asdf:component-pathname (asdf:component-system c))) + (root-library-file (merge-pathnames (file-namestring file) root-path))) + (or (uffi-funcall :load-foreign-library + root-library-file + :module (component-name c)) + (error "Output file ~A not found in elephant root" (namestring root-library-file))) + (format t "Loaded ~A~%" root-library-file))))) +
(defmethod operation-done-p ((o load-op) (c elephant-c-source)) nil) @@ -264,7 +277,7 @@ (defsystem elephant :name "elephant" :author "Ben Lee blee@common-lisp.net" - :version "0.6.1" + :version "0.9" :maintainer "Robert Read read@robertlread.net" :licence "LLGPL" :description "Object database for Common Lisp"