X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-mysql%2Fmysql-loader.lisp;h=db664e7ba667c96263f4bf0bdd8132458b79c9e8;hb=2961f4f122593e9d4875e88e6af159de28c8dd47;hp=4a7fe2a868f8ec64230d964ce888113a43d1bfc2;hpb=189d8548346c0b5f594f3b1657d3bdf8c970e05d;p=clsql.git diff --git a/db-mysql/mysql-loader.lisp b/db-mysql/mysql-loader.lisp index 4a7fe2a..db664e7 100644 --- a/db-mysql/mysql-loader.lisp +++ b/db-mysql/mysql-loader.lisp @@ -2,43 +2,38 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: mysql-loader.sql -;;;; Purpose: MySQL library loader using UFFI -;;;; Programmers: Kevin M. Rosenberg -;;;; Date Started: Feb 2002 +;;;; Name: mysql-loader.sql +;;;; Purpose: MySQL library loader using UFFI +;;;; Author: Kevin M. Rosenberg +;;;; Created: Feb 2002 ;;;; -;;;; $Id: mysql-loader.lisp,v 1.5 2002/11/23 18:00:26 kevin Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg ;;;; ;;;; CLSQL users are granted the rights to distribute and use this software ;;;; as governed by the terms of the Lisp Lesser GNU Public License ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; ************************************************************************* -(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0))) -(in-package :mysql) +(in-package #:mysql) -;;;; Modified by Kevin Rosenberg -;;;; - probe potential directories to find library -;;;; - Changed from CMUCL functions to UFFI to -;;;; -- prevent library from being loaded multiple times -;;;; -- support Allegro CL and Lispworks - -(defvar *clsql-mysql-library-filename* +(defparameter *clsql-mysql-library-path* (uffi:find-foreign-library - "clsql-mysql" - `(,(make-pathname :directory (pathname-directory *load-truename*)) + "mysql" + `(,clsql-mysql-system::*library-file-dir* "/usr/lib/clsql/" - "/sw/lib/clsql/" - "/home/kevin/debian/src/clsql/db-mysql/") - :drive-letters '("C" "D" "E"))) - + "/sw/lib/clsql/") + :drive-letters '("C"))) + (defvar *mysql-library-candidate-names* '("libmysqlclient" "libmysql")) -(defvar *mysql-library-candidate-directories* - '("/opt/mysql/lib/mysql/" "/usr/local/lib/" "/usr/lib/" "/usr/local/lib/mysql/" "/usr/lib/mysql/" "/mysql/lib/opt/" "/sw/lib/mysql/")) +(defparameter *mysql-library-candidate-directories* + `(,(pathname-directory *load-pathname*) + "/opt/mysql/lib/mysql/" "/usr/local/lib/" + #+64bit "/usr/lib64/" + "/usr/lib/" "/usr/local/lib/mysql/" "/usr/lib/mysql/" "/mysql/lib/opt/" "/sw/lib/mysql/" "/opt/local/lib/mysql/")) (defvar *mysql-library-candidate-drive-letters* '("C" "D" "E")) @@ -50,37 +45,27 @@ set to the right path before compiling or loading the system.") (defvar *mysql-library-loaded* nil "T if foreign library was able to be loaded successfully") -(defmethod clsql-base-sys:database-type-library-loaded ((database-type (eql :mysql))) +(defmethod clsql-sys:database-type-library-loaded ((database-type (eql :mysql))) *mysql-library-loaded*) -(defmethod clsql-base-sys:database-type-load-foreign ((database-type (eql :mysql))) +(defmethod clsql-sys:database-type-load-foreign ((database-type (eql :mysql))) (let ((mysql-path (uffi:find-foreign-library *mysql-library-candidate-names* *mysql-library-candidate-directories* :drive-letters - *mysql-library-candidate-drive-letters*)) - (zlib-path - (uffi:find-foreign-library '("libz" "zlib") - '("/usr/lib/" "/usr/local/lib/" "/lib/")))) + *mysql-library-candidate-drive-letters*))) (unless (probe-file mysql-path) (error "Can't find mysql client library to load")) - (unless (probe-file zlib-path) - (error "Can't find zlib client library to load")) - - (uffi:load-foreign-library zlib-path) - (if (and - (uffi:load-foreign-library mysql-path - :module "mysql" - :supporting-libraries - *mysql-supporting-libraries*) - (uffi:load-foreign-library *clsql-mysql-library-filename* - :module "clsql-mysql" - :supporting-libraries - (append *mysql-supporting-libraries*))) - (setq *mysql-library-loaded* t) - (error "Unable to load MySQL client library ~A or CLSQL-MySQL library ~A" - mysql-path *clsql-mysql-library-filename*)))) + (uffi:load-foreign-library mysql-path + :module "mysql" + :supporting-libraries + *mysql-supporting-libraries*) + (uffi:load-foreign-library *clsql-mysql-library-path* + :module "clsql-mysql" + :supporting-libraries + (append *mysql-supporting-libraries*))) + (setq *mysql-library-loaded* t)) -(clsql-base-sys:database-type-load-foreign :mysql) +(clsql-sys:database-type-load-foreign :mysql)