X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=db-mysql%2Fmysql-loader.lisp;h=b102fcbdade60dc945193ece7b7ca4551d1310fe;hp=cafa2e6c821a625d028f56959e86bd851b0f8ece;hb=18e34efea688a6758b6e997401fbc3f241da98f3;hpb=bf8d709a2b29f30ceaa6a48b842b4b16a8c99b13 diff --git a/db-mysql/mysql-loader.lisp b/db-mysql/mysql-loader.lisp index cafa2e6..b102fcb 100644 --- a/db-mysql/mysql-loader.lisp +++ b/db-mysql/mysql-loader.lisp @@ -2,56 +2,32 @@ ;;;; ************************************************************************* ;;;; 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$ ;;;; -;;;; 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. ;;;; ************************************************************************* -(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 +(defparameter *clsql-mysql-library-candidate-names* + (list #+(or 64bit x86-64) "clsql_mysql64" + #+(or 64bit x86-64) (make-pathname :name "clsql_mysql64" + :directory (pathname-directory *load-truename*)) + "clsql_mysql" + (make-pathname :name "clsql_mysql" + :directory (pathname-directory *load-truename*)))) -(defparameter *clsql-mysql-library-path* - (uffi:find-foreign-library - "mysql" - `(,(make-pathname :directory (pathname-directory *load-truename*)) - "/usr/lib/clsql/" - "/sw/lib/clsql/" - "/home/kevin/debian/src/clsql/db-mysql/") - :drive-letters '("C"))) - -(defparameter *libz-library-path* - (uffi:find-foreign-library - '("libz" "zlib") - `(,(make-pathname :directory (pathname-directory *load-truename*)) - "/usr/lib/" - "/sw/lib/" - "/usr/local/lib/" - "/home/kevin/debian/src/clsql/db-mysql/" - "/mysql/lib/opt/") - :drive-letters '("C"))) - (defvar *mysql-library-candidate-names* - '("libmysqlclient" "libmysql")) - -(defparameter *mysql-library-candidate-directories* - `(,(pathname-directory *load-pathname*) - "/opt/mysql/lib/mysql/" "/usr/local/lib/" "/usr/lib/" "/usr/local/lib/mysql/" "/usr/lib/mysql/" "/mysql/lib/opt/" "/sw/lib/mysql/")) - -(defvar *mysql-library-candidate-drive-letters* '("C" "D" "E")) + '("libmysqlclient" "libmysql")) (defvar *mysql-supporting-libraries* '("c") "Used only by CMU. List of library flags needed to be passed to ld to @@ -61,28 +37,18 @@ 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))) - (let ((mysql-path - (uffi:find-foreign-library *mysql-library-candidate-names* - *mysql-library-candidate-directories* - :drive-letters - *mysql-library-candidate-drive-letters*))) - (unless (probe-file mysql-path) - (error "Can't find mysql client library to load")) - (uffi:load-foreign-library *libz-library-path*) - (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*))) +(defmethod clsql-sys:database-type-load-foreign ((database-type (eql :mysql))) + (clsql-uffi:find-and-load-foreign-library *mysql-library-candidate-names* + :module "mysql" + :supporting-libraries *mysql-supporting-libraries*) + (clsql-uffi:find-and-load-foreign-library *clsql-mysql-library-candidate-names* + :module "clsql-mysql" + :supporting-libraries *mysql-supporting-libraries*) (setq *mysql-library-loaded* t)) -(clsql-base-sys:database-type-load-foreign :mysql) +(clsql-sys:database-type-load-foreign :mysql)