blob: 89294125bfb55b88c5c7e85b01bec3a881b063d9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
diff -ur clsql-3.5.2.orig/db-mysql/mysql-loader.lisp clsql-3.5.2/db-mysql/mysql-loader.lisp
--- clsql-3.5.2.orig/db-mysql/mysql-loader.lisp 2005-07-05 19:51:52.000000000 -0500
+++ clsql-3.5.2/db-mysql/mysql-loader.lisp 2005-12-29 16:34:32.000000000 -0600
@@ -18,17 +18,6 @@
(in-package #:mysql)
-(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*))))
-
-(defvar *mysql-library-candidate-names*
- '("libmysqlclient" "libmysql"))
-
(defvar *mysql-supporting-libraries* '("c")
"Used only by CMU. List of library flags needed to be passed to ld to
load the MySQL client library succesfully. If this differs at your site,
@@ -41,12 +30,16 @@
*mysql-library-loaded*)
(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*)
+ (uffi:load-foreign-library (make-pathname :directory '(:absolute "usr" "@LIBDIR@")
+ :name "libmysqlclient"
+ :type "so")
+ :module "mysql"
+ :supporting-libraries *mysql-supporting-libraries*)
+ (uffi:load-foreign-library (make-pathname :directory '(:absolute "usr" "@LIBDIR@" "clsql")
+ :name "clsql_mysql.so"
+ :type "so")
+ :module "clsql-mysql"
+ :supporting-libraries *mysql-supporting-libraries*)
(setq *mysql-library-loaded* t))
diff -ur clsql-3.5.2.orig/uffi/clsql-uffi-loader.lisp clsql-3.5.2/uffi/clsql-uffi-loader.lisp
--- clsql-3.5.2.orig/uffi/clsql-uffi-loader.lisp 2005-08-22 15:24:22.000000000 -0500
+++ clsql-3.5.2/uffi/clsql-uffi-loader.lisp 2005-12-29 16:22:44.000000000 -0600
@@ -18,37 +18,6 @@
(in-package #:clsql-uffi)
-(defun find-and-load-foreign-library (filenames &key module supporting-libraries (errorp t))
- (setq filenames (if (listp filenames) filenames (list filenames))
- filenames
- (append
- (loop for search-path in clsql:*foreign-library-search-paths*
- nconc (loop for filename in filenames
- collect (merge-pathnames filename search-path)))
- filenames))
- (or (loop for type in (uffi:foreign-library-types)
- for suffix = (make-pathname :type type)
- thereis (loop for filename in filenames
- thereis (handler-case
- (uffi:load-foreign-library (merge-pathnames filename suffix)
- :module module
- :supporting-libraries supporting-libraries)
- (error (c)
- (warn "~A" c)
- nil))))
- (when errorp
- (error "Couldn't load foreign librar~@P ~{~S~^, ~}. (searched ~S)"
- (length filenames) filenames
- 'clsql:*foreign-library-search-paths*))))
-
-(defvar *clsql-uffi-library-filenames*
- (list #+(or 64bit x86-64) "clsql_uffi64"
- #+(or 64bit x86-64) (make-pathname :name "clsql_uffi64"
- :directory clsql-uffi-system::*library-file-dir*)
- "clsql_uffi"
- (make-pathname :name "clsql_uffi"
- :directory clsql-uffi-system::*library-file-dir*)))
-
(defvar *clsql-uffi-supporting-libraries* '("c")
"Used only by CMU. List of library flags needed to be passed to ld to
load the MySQL client library succesfully. If this differs at your site,
@@ -58,10 +27,12 @@
"T if foreign library was able to be loaded successfully")
(defun load-uffi-foreign-library ()
- (find-and-load-foreign-library *clsql-uffi-library-filenames*
- :module "clsql-uffi"
- :supporting-libraries
- *clsql-uffi-supporting-libraries*)
+ (uffi:load-foreign-library (make-pathname :directory '(:absolute "usr" "@LIBDIR@" "clsql")
+ :name "clsql_uffi"
+ :type "so")
+ :module "clsql-uffi"
+ :supporting-libraries
+ *clsql-uffi-supporting-libraries*)
(setq *uffi-library-loaded* t))
(load-uffi-foreign-library)
|