Changeset 14335
- Timestamp:
- 12/18/12 21:54:37 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/abcl-contrib.lisp
r14296 r14335 3 3 (require :asdf) 4 4 5 (defun system-jar-p (p) 6 (and (pathnamep p) 7 (equal (pathname-type p) "jar") 8 (let ((name (pathname-name p))) 9 (or 10 (java:jstatic "matches" 11 "java.util.regex.Pattern" 12 "abcl(-[0-9]\\.[0-9]\\.[0-9]([+~-].+)?)?" 13 name) 14 (java:jstatic "matches" 15 "java.util.regex.Pattern" 16 "abcl(-[0-9]\\.[0-9]\\.[0-9]\\.[0-9]([+~-]+)?)?" 17 name))) 18 p)) 19 5 20 (defun find-system-jar () 6 "Return the pathname of the system jar, one of `abcl.jar` or `abcl-m.n.p.jar` or `abcl-m.n.p-something.jar`." 7 (flet ((match-system-jar (p) 8 (and (pathnamep p) 9 (equal (pathname-type p) "jar") 10 (java:jstatic "matches" 11 "java.util.regex.Pattern" 12 "abcl(-[0-9]\\.[0-9]\\.[0-9]([+~-].+)?)?" 13 (pathname-name p)) 14 p))) 21 "Return the pathname of the system jar, one of `abcl.jar` or `abcl-m.n.p.jar` or `abcl-m.n.p[.~-]something.jar`." 15 22 (dolist (loader (java:dump-classpath)) 16 (let ((abcl-jar (some #' match-system-jarloader)))23 (let ((abcl-jar (some #'system-jar-p loader))) 17 24 (when abcl-jar 18 (return abcl-jar))))) )25 (return abcl-jar))))) 19 26 20 27 (defvar *abcl-jar* nil … … 26 33 Initialized via SYSTEM:FIND-CONTRIB") 27 34 28 (defun find- contrib (&key (verbose nil))35 (defun find-and-add-contrib (&key (verbose nil)) 29 36 "Attempt to find the ABCL contrib jar and add its contents to ASDF. 30 37 Returns the pathname of the contrib if it can be found." 31 (unless *abcl-contrib* 32 (unless *abcl-jar* 33 (setf *abcl-jar* (find-system-jar))) 34 (when *abcl-jar* 35 (let* ((abcl-contrib-name 36 (concatenate 'string "abcl-contrib" 37 (subseq (pathname-name *abcl-jar*) 4))) 38 (abcl-contrib (make-pathname :defaults *abcl-jar* 39 :name abcl-contrib-name))) 40 (if (probe-file abcl-contrib) 41 (progn 38 (flet ((add-contrib (abcl-contrib) 42 39 (setf *abcl-contrib* abcl-contrib) 43 40 (dolist (asdf-file … … 50 47 (push asdf-directory asdf:*central-registry*) 51 48 (format verbose "~&Added ~A to ASDF.~&" asdf-directory)))) 52 *abcl-contrib*) 53 (error "Failed to find abcl-contrib at '~A'." abcl-contrib)))))) 49 *abcl-contrib*)) 50 (unless *abcl-contrib* 51 (unless *abcl-jar* 52 (setf *abcl-jar* (find-system-jar))) 53 (when *abcl-jar* 54 (let* ((abcl-contrib-name 55 (concatenate 'string "abcl-contrib" 56 (subseq (pathname-name *abcl-jar*) 4))) 57 (abcl-contrib (make-pathname :defaults *abcl-jar* 58 :name abcl-contrib-name))) 59 (if (probe-file abcl-contrib) 60 (add-contrib abcl-contrib) 61 (let ((abcl-contrib (make-pathname :defaults abcl-contrib 62 :name "abcl-contrib"))) 63 (if (probe-file abcl-contrib) 64 (progn 65 (warn "Falling back to using '~A' to satisfy require." abcl-contrib) 66 (add-contrib abcl-contrib) 67 (error "Failed to find abcl-contrib at '~A'." abcl-contrib)))))))))) 54 68 55 (when (find- contrib :verbose t)69 (when (find-and-add-contrib :verbose t) 56 70 (provide :abcl-contrib)) 57 71
Note: See TracChangeset
for help on using the changeset viewer.