Changeset 14672
- Timestamp:
- 04/17/14 10:39:12 (9 years ago)
- Location:
- branches/1.3.1
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1.3.1/doc/asdf/asdf.texinfo
r14636 r14672 247 247 (In the context of compatibility requirements, 248 248 ASDF 2.27, released on Feb 1st 2013, and further 2.x releases up to 2.33, 249 count as pre-releases of ASDF 3, and define the :asdf3feature;249 count as pre-releases of ASDF 3, and define the @code{:asdf3} feature; 250 250 still, please use the latest release). 251 Release ASDF 3.1.1 and later also define the @code{:asdf3.1} feature. 251 252 252 253 Also note that ASDF is not to be confused with ASDF-Install. … … 257 258 If you want to download software from version control instead of tarballs, 258 259 so you may more easily modify it, we recommend clbuild. 260 We recommend @file{~/common-lisp/} 261 as a place into which to install Common Lisp software; 262 starting with ASDF 3.1.1, it is included in the default source-registry configuration. 259 263 260 264 @node Quick start summary, Loading ASDF, Introduction, Top … … 277 281 For more details, @xref{Configuring ASDF to find your systems}. 278 282 The simplest way is simply to put all your lisp code in subdirectories of 279 @file{~/.local/share/common-lisp/source/}. 283 @file{~/common-lisp/} (starting with ASDF 3.1.1), 284 or @file{~/.local/share/common-lisp/source/} 285 (for ASDF 2 and later, or if you want to keep source in a hidden directory). 280 286 Such code will automatically be found. 281 287 … … 434 440 Still, the ASDF source repository contains a script 435 441 @file{bin/install-asdf-as-module} that can help you do that. 436 It relies on cl-launch4 for command-line invocation,442 It relies on @file{cl-launch} 4 for command-line invocation, 437 443 which may depend on ASDF being checked out in @file{~/cl/asdf/} 438 444 if your implementation doesn't even have an ASDF 2; 439 but you can run the code it manually if needs be. 445 but if you don't have @file{cl-launch}, 446 you can instead @code{(load "bin/install-asdf-as-module")} 447 from your implementation's REPL. 440 448 441 449 Finally, if your implementation only provides ASDF 2, … … 554 562 @end menu 555 563 556 @node Configuring ASDF to find your systems, Configuring where ASDF stores object files, Configuring ASDF, Configuring ASDF564 @node Configuring ASDF to find your systems, Configuring ASDF to find your systems --- old style, Configuring ASDF, Configuring ASDF 557 565 @section Configuring ASDF to find your systems 558 566 … … 567 575 @item 568 576 Put all of your systems in subdirectories of 577 @file{~/common-lisp/} or 569 578 @file{~/.local/share/common-lisp/source/}. 570 If you install software there (it can be a symlink), 571 you don't need further configuration. 579 If you install software there, you don't need further configuration. 580 (NB: @file{~/common-lisp/} is only included in the default configuration 581 starting with ASDF 3.1.1 or later) 572 582 573 583 @item … … 615 625 (asdf:clear-source-registry) 616 626 @end lisp 617 618 @c FIXME: too specific. Push this down to discussion of dumping an619 @c image?620 621 @c And you probably should do so before you dump your Lisp image,622 @c if the configuration may change623 @c between the machine where you save it at the time you save it624 @c and the machine you resume it at the time you resume it.625 @c Actually, you should use @code{(asdf:clear-configuration)}626 @c before you dump your Lisp image, which includes the above.627 627 628 628 @item … … 732 732 733 733 734 @node Configuring where ASDF stores object files, , Configuring ASDF to find your systems, Configuring ASDF734 @node Configuring where ASDF stores object files, Resetting the ASDF configuration, Configuring ASDF to find your systems --- old style, Configuring ASDF 735 735 @section Configuring where ASDF stores object files 736 736 @findex clear-output-translations … … 829 829 @end defun 830 830 831 If you use SBCL, CMUCL or SCL, you may use this snippet 832 so that the ASDF configuration be cleared automatically as you dump an image: 833 834 @example 835 #+(or cmu sbcl scl) 836 (pushnew 'clear-configuration 837 #+(or cmu scl) ext:*before-save-initializations* 838 #+sbcl sb-ext:*save-hooks*) 839 @end example 840 841 For compatibility with all Lisp implementations, however, 842 you might want instead your build script to explicitly call 843 @code{(asdf:clear-configuration)} at an appropriate moment before dumping. 831 This function is pushed onto the @code{uiop:*image-dump-hook*} by default, 832 which means that if you save an image using @code{uiop:dump-image}, 833 or via @code{asdf:image-op} and @code{asdf:program-op}, 834 it will be automatically called to clear your configuration. 835 If for some reason you prefer to call your implementation's underlying functionality, 836 be sure to call @code{clear-configuration} manually, 837 or push it into your implementation's equivalent of @code{uiop:*image-dump-hook*}, 838 e.g. @code{sb-ext:*save-hooks*} on SBCL, or @code{ext:*before-save-initializations*} 839 on CMUCL and SCL, etc. 844 840 845 841 @node Using ASDF, Defining systems with defsystem, Configuring ASDF, Top -
branches/1.3.1/src/org/armedbear/lisp/asdf.lisp
r14636 r14672 1 1 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; buffer-read-only: t; -*- 2 ;;; This is ASDF 3.1.0. 94: Another System Definition Facility.2 ;;; This is ASDF 3.1.0.103: Another System Definition Facility. 3 3 ;;; 4 4 ;;; Feedback, bug reports, and patches are all welcome: … … 868 868 ;;;; Early meta-level tweaks 869 869 870 #+(or abcl allegro clisp cmu ecl mkcl clozure lispworks sbcl scl)870 #+(or abcl allegro clisp cmu ecl mkcl clozure lispworks mkcl sbcl scl) 871 871 (eval-when (:load-toplevel :compile-toplevel :execute) 872 872 ;; Check for unicode at runtime, so that a hypothetical FASL compiled with unicode … … 1350 1350 1351 1351 1352 ;;; CLOS1353 (with-upgradability ()1354 (defun coerce-class (class &key (package :cl) (super t) (error 'error))1355 "Coerce CLASS to a class that is subclass of SUPER if specified,1356 or invoke ERROR handler as per CALL-FUNCTION.1357 1358 A keyword designates the name a symbol, which when found in PACKAGE, designates a class.1359 A string is read as a symbol while in PACKAGE, the symbol designates a class.1360 1361 A class object designates itself.1362 NIL designates itself (no class).1363 A symbol otherwise designates a class by name."1364 (let* ((normalized1365 (typecase class1366 (keyword (find-symbol* class package nil))1367 (string (symbol-call :uiop :safe-read-from-string class :package package))1368 (t class)))1369 (found1370 (etypecase normalized1371 ((or standard-class built-in-class) normalized)1372 ((or null keyword) nil)1373 (symbol (find-class normalized nil nil)))))1374 (or (and found1375 (or (eq super t) (#-cormanlisp subtypep #+cormanlisp cl::subclassp found super))1376 found)1377 (call-function error "Can't coerce ~S to a ~@[class~;subclass of ~:*~S]" class super)))))1378 1379 1380 1352 ;;; stamps: a REAL or a boolean where NIL=-infinity, T=+infinity 1381 1353 (eval-when (#-lispworks :compile-toplevel :load-toplevel :execute) … … 1476 1448 1477 1449 1450 ;;; CLOS 1451 (with-upgradability () 1452 (defun coerce-class (class &key (package :cl) (super t) (error 'error)) 1453 "Coerce CLASS to a class that is subclass of SUPER if specified, 1454 or invoke ERROR handler as per CALL-FUNCTION. 1455 1456 A keyword designates the name a symbol, which when found in either PACKAGE, designates a class. 1457 -- for backward compatibility, *PACKAGE* is also accepted for now, but this may go in the future. 1458 A string is read as a symbol while in PACKAGE, the symbol designates a class. 1459 1460 A class object designates itself. 1461 NIL designates itself (no class). 1462 A symbol otherwise designates a class by name." 1463 (let* ((normalized 1464 (typecase class 1465 (keyword (or (find-symbol* class package nil) 1466 (find-symbol* class *package* nil))) 1467 (string (symbol-call :uiop :safe-read-from-string class :package package)) 1468 (t class))) 1469 (found 1470 (etypecase normalized 1471 ((or standard-class built-in-class) normalized) 1472 ((or null keyword) nil) 1473 (symbol (find-class normalized nil nil))))) 1474 (or (and found 1475 (or (eq super t) (#-cormanlisp subtypep #+cormanlisp cl::subclassp found super)) 1476 found) 1477 (call-function error "Can't coerce ~S to a ~@[class~;subclass of ~:*~S]" class super))))) 1478 1479 1478 1480 ;;; Hash-tables 1479 1481 (with-upgradability () … … 1565 1567 #+clozure 'ccl::format-control 1566 1568 #+(or cmu scl) 'conditions::format-control 1567 #+ ecl'si::format-control1569 #+(or ecl mkcl) 'si::format-control 1568 1570 #+(or gcl lispworks) 'conditions::format-string 1569 1571 #+sbcl 'sb-kernel:format-control 1570 #-(or abcl allegro clisp clozure cmu ecl gcl lispworks sbcl scl) nil1572 #-(or abcl allegro clisp clozure cmu ecl gcl lispworks mkcl sbcl scl) nil 1571 1573 "Name of the slot for FORMAT-CONTROL in simple-condition") 1572 1574 … … 1652 1654 "Is the underlying operating system Microsoft Windows?" 1653 1655 (or #+abcl (featurep :windows) 1654 #+(and (not (or abcl unix cygwin darwin)) (or win32 windows mswindows mingw32 )) t))1656 #+(and (not (or abcl unix cygwin darwin)) (or win32 windows mswindows mingw32 mingw64)) t)) 1655 1657 1656 1658 (defun os-genera-p () … … 2061 2063 ;; This will be :unspecific if supported, or NIL if not. 2062 2064 (defparameter *unspecific-pathname-type* 2063 #+(or abcl allegro clozure cmu genera lispworks mkclsbcl scl) :unspecific2064 #+(or clisp ecl gcl xcl #|These haven't been tested:|# cormanlisp mcl) nil2065 #+(or abcl allegro clozure cmu genera lispworks sbcl scl) :unspecific 2066 #+(or clisp ecl mkcl gcl xcl #|These haven't been tested:|# cormanlisp mcl) nil 2065 2067 "Unspecific type component to use with the underlying implementation's MAKE-PATHNAME") 2066 2068 … … 2160 2162 ;; MCL has issues with make-pathname, nil and defaulting 2161 2163 (declare (ignorable defaults)) 2162 #.`(make-pathname* :directory nil :name nil :type nil :version nil :device nil 2163 :host (or #+cmu lisp::*unix-host*) 2164 #.`(make-pathname* :directory nil :name nil :type nil :version nil 2165 :device (or #+(and mkcl unix) :unspecific) 2166 :host (or #+cmu lisp::*unix-host* #+(and mkcl unix) "localhost") 2164 2167 #+scl ,@'(:scheme nil :scheme-specific-part nil 2165 2168 :username nil :password nil :parameters nil :query nil :fragment nil) … … 2194 2197 (and (pathnamep p1) (pathnamep p2) 2195 2198 (and (=? pathname-host) 2196 (=? pathname-device)2199 #-(and mkcl unix) (=? pathname-device) 2197 2200 (=? normalize-pathname-directory-component pathname-directory) 2198 2201 (=? pathname-name) 2199 2202 (=? pathname-type) 2200 (=? pathname-version)))))))2203 #-mkcl (=? pathname-version))))))) 2201 2204 2202 2205 (defun absolute-pathname-p (pathspec) … … 3300 3303 `(progn (require :sb-posix) (symbol-call :sb-posix :rmdir directory-pathname))) 3301 3304 #+xcl (symbol-call :uiop :run-program `("rmdir" ,(native-namestring directory-pathname))) 3302 #-(or abcl allegro clisp clozure cmu cormanlisp digitool ecl gcl lispworks sbcl scl xcl)3305 #-(or abcl allegro clisp clozure cmu cormanlisp digitool ecl gcl lispworks mkcl sbcl scl xcl) 3303 3306 (error "~S not implemented on ~S" 'delete-empty-directory (implementation-type))) ; genera 3304 3307 … … 4005 4008 ,@(when prefix `(:prefix ,prefix)) 4006 4009 ,@(when suffix `(:suffix ,suffix)) 4007 ,@(when type `(: suffix,type))4010 ,@(when type `(:type ,type)) 4008 4011 ,@(when keep `(:keep ,keep)) 4009 4012 ,@(when after `(:after `#',afterf)) … … 4164 4167 (debug:*debug-print-length* *print-length*)) 4165 4168 (debug:backtrace (or count most-positive-fixnum) stream)) 4166 #+ ecl4169 #+(or ecl mkcl) 4167 4170 (let* ((top (si:ihs-top)) 4168 4171 (repeats (if count (min top count) top)) … … 4279 4282 #+(or genera mcl) nil 4280 4283 #+lispworks sys:*line-arguments-list* 4284 #+mkcl (loop :for i :from 0 :below (mkcl:argc) :collect (mkcl:argv i)) 4281 4285 #+sbcl sb-ext:*posix-argv* 4282 4286 #+xcl system:*argv* 4283 #-(or abcl allegro clisp clozure cmu ecl gcl genera lispworks mcl sbcl scl xcl)4287 #-(or abcl allegro clisp clozure cmu ecl gcl genera lispworks mcl mkcl sbcl scl xcl) 4284 4288 (error "raw-command-line-arguments not implemented yet")) 4285 4289 … … 4309 4313 (cond 4310 4314 ((eq *image-dumped-p* :executable) ; yes, this ARGV0 is our argv0 ! 4311 ;; NB: not currently available on ABCL, Corman, Genera, MCL , MKCL4315 ;; NB: not currently available on ABCL, Corman, Genera, MCL 4312 4316 (or #+(or allegro clisp clozure cmu gcl lispworks sbcl scl xcl) 4313 4317 (first (raw-command-line-arguments)) 4314 #+ecl (si:argv 0) ))4318 #+ecl (si:argv 0) #+mkcl (mkcl:argv 0))) 4315 4319 (t ;; argv[0] is the name of the interpreter. 4316 4320 ;; The wrapper script can export __CL_ARGV0. cl-launch does as of 4.0.1.8. … … 4461 4465 'dump-image filename (nth-value 1 (implementation-type)))) 4462 4466 4463 (defun create-image (destination object-files4464 &key kind output-name prologue-code epilogue-code 4467 (defun create-image (destination lisp-object-files 4468 &key kind output-name prologue-code epilogue-code extra-object-files 4465 4469 (prelude () preludep) (postlude () postludep) 4466 4470 (entry-point () entry-point-p) build-args) 4467 (declare (ignorable destination object-files kind output-name prologue-code epilogue-code 4468 prelude preludep postlude postludep entry-point entry-point-p build-args)) 4471 (declare (ignorable destination lisp-object-files extra-object-files kind output-name 4472 prologue-code epilogue-code prelude preludep postlude postludep 4473 entry-point entry-point-p build-args)) 4469 4474 "On ECL, create an executable at pathname DESTINATION from the specified OBJECT-FILES and options" 4470 4475 ;; Is it meaningful to run these in the current environment? 4471 4476 ;; only if we also track the object files that constitute the "current" image, 4472 4477 ;; and otherwise simulate dump-image, including quitting at the end. 4473 #- ecl(error "~S not implemented for your implementation (yet)" 'create-image)4474 #+ ecl4478 #-(or ecl mkcl) (error "~S not implemented for your implementation (yet)" 'create-image) 4479 #+(or ecl mkcl) 4475 4480 (let ((epilogue-forms 4476 4481 (append … … 4483 4488 (setf kind :program) ;; to ECL, it's just another program. 4484 4489 `((setf *image-dumped-p* t) 4485 ;; fall through should be equivalent to: (si::top-level t) (quit) 4486 )) 4490 (si::top-level #+ecl t) (quit))) 4487 4491 ((:program) 4488 4492 `((setf *image-dumped-p* :executable) 4489 4493 (shell-boolean-exit 4490 4494 (restore-image)))))))) 4491 (check-type kind (member :dll :lib :static-library :program :object :fasl :program)) 4492 (apply 'c::builder 4493 kind (pathname destination) 4494 :lisp-files object-files 4495 :init-name (c::compute-init-name (or output-name destination) :kind kind) 4496 :prologue-code prologue-code 4497 :epilogue-code (when epilogue-forms `(progn ,@epilogue-forms)) 4498 build-args)))) 4495 #+ecl (check-type kind (member :dll :lib :static-library :program :object :fasl)) 4496 (apply #+ecl 'c::builder #+ecl kind 4497 #+mkcl (ecase kind 4498 ((:dll) 'compiler::build-shared-library) 4499 ((:lib :static-library) 'compiler::build-static-library) 4500 ((:fasl) 'compiler::build-bundle) 4501 ((:program) 'compiler::build-program)) 4502 (pathname destination) 4503 #+ecl :lisp-files #+mkcl :lisp-object-files (append lisp-object-files #+ecl extra-object-files) 4504 #+ecl :init-name #+ecl (c::compute-init-name (or output-name destination) :kind kind) 4505 (append 4506 (when prologue-code `(:prologue-code ,prologue-code)) 4507 (when epilogue-forms `(:epilogue-code (progn ,@epilogue-forms))) 4508 #+mkcl (when extra-object-files `(:object-files ,extra-object-files)) 4509 build-args))))) 4499 4510 4500 4511 … … 4848 4859 #+os-windows 4849 4860 (string 4861 #+mkcl (list "cmd" '#:/c command) 4850 4862 ;; NB: We do NOT add cmd /c here. You might want to. 4851 4863 #+(or allegro clisp) command … … 4857 4869 ;; except in the most trivial cases where no quoting is needed. 4858 4870 ;; Use at your own risk. 4859 #-(or allegro clisp clozure ) (list "cmd" "/c" command))4871 #-(or allegro clisp clozure mkcl) (list "cmd" "/c" command)) 4860 4872 #+os-windows 4861 4873 (list … … 4884 4896 #+allegro nil 4885 4897 #+clisp :terminal 4886 #+(or clozure cmu ecl sbcl scl) t)4887 #+(or allegro clozure cmu ecl lispworks sbcl scl)4898 #+(or clozure cmu ecl mkcl sbcl scl) t) 4899 #+(or allegro clozure cmu ecl lispworks mkcl sbcl scl) 4888 4900 ((eql :output) 4889 4901 (if (eq role :error-output) … … 4916 4928 PROCESS, EXIT-CODE, INPUT-STREAM, OUTPUT-STREAM, BIDIR-STREAM, ERROR-STREAM." 4917 4929 ;; NB: these implementations have unix vs windows set at compile-time. 4918 (declare (ignorable if-input-does-not-exist if-output-exists if-error-output-exists))4930 (declare (ignorable directory if-input-does-not-exist if-output-exists if-error-output-exists)) 4919 4931 (assert (not (and wait (member :stream (list input output error-output))))) 4920 #-(or allegro clisp clozure cmu (and lispworks os-unix) sbcl scl)4932 #-(or allegro clisp clozure cmu (and lispworks os-unix) mkcl sbcl scl) 4921 4933 (progn command keys directory 4922 4934 (error "run-program not available")) 4923 #+(or allegro clisp clozure cmu (and lispworks os-unix) sbcl scl)4935 #+(or allegro clisp clozure cmu (and lispworks os-unix) mkcl sbcl scl) 4924 4936 (let* ((%command (%normalize-command command)) 4925 4937 (%input (%normalize-io-specifier input :input)) … … 4941 4953 :allow-other-keys t keys)) 4942 4954 #-allegro 4943 (with-current-directory (#- sbcldirectory)4955 (with-current-directory (#-(or sbcl mkcl) directory) 4944 4956 #+clisp 4945 4957 (flet ((run (f x &rest args) … … 4953 4965 (list (run 'ext:run-program (car %command) 4954 4966 :arguments (cdr %command))))) 4955 #+(or clozure cmu ecl sbcl scl)4956 (#- ecl progn #+eclmultiple-value-list4967 #+(or clozure cmu ecl mkcl sbcl scl) 4968 (#-(or ecl mkcl) progn #+(or ecl mkcl) multiple-value-list 4957 4969 (apply 4958 4970 '#+(or cmu ecl scl) ext:run-program 4959 #+clozure ccl:run-program #+sbcl sb-ext:run-program 4971 #+clozure ccl:run-program #+sbcl sb-ext:run-program #+mkcl mk-ext:run-program 4960 4972 (car %command) (cdr %command) 4961 4973 :input %input … … 4965 4977 :allow-other-keys t 4966 4978 (append 4967 #+(or clozure cmu sbcl scl)4979 #+(or clozure cmu mkcl sbcl scl) 4968 4980 `(:if-input-does-not-exist ,if-input-does-not-exist 4969 4981 :if-output-exists ,if-output-exists … … 5032 5044 #+(or cmu scl) (ext:process-error process*) 5033 5045 #+sbcl (sb-ext:process-error process*)))) 5034 #+ ecl5035 (destructuring-bind (stream code process) process*5046 #+(or ecl mkcl) 5047 (destructuring-bind #+ecl (stream code process) #+mkcl (stream process code) process* 5036 5048 (let ((mode (+ (if (eq input :stream) 1 0) (if (eq output :stream) 2 0)))) 5037 5049 (cond … … 5060 5072 #+ecl (si:external-process-pid process) 5061 5073 #+(or cmu scl) (ext:process-pid process) 5074 #+mkcl (mkcl:process-id process) 5062 5075 #+sbcl (sb-ext:process-pid process) 5063 #-(or allegro cmu sbcl scl) (error "~S not implemented" '%process-info-pid)))5076 #-(or allegro cmu mkcl sbcl scl) (error "~S not implemented" '%process-info-pid))) 5064 5077 5065 5078 (defun %wait-process-result (process-info) … … 5085 5098 (if-let ((f (find-symbol* :pid-exit-status :system nil))) 5086 5099 (funcall f process :wait t))) 5087 #+sbcl (sb-ext:process-exit-code process))))) 5100 #+sbcl (sb-ext:process-exit-code process) 5101 #+mkcl (mkcl:join-process process))))) 5088 5102 5089 5103 (defun %check-result (exit-code &key command process ignore-error-status) … … 5185 5199 &key input output error-output ignore-error-status &allow-other-keys) 5186 5200 ;; helper for RUN-PROGRAM when using %run-program 5187 #+(or abcl cormanlisp gcl (and lispworks os-windows) mcl mkclxcl)5201 #+(or abcl cormanlisp gcl (and lispworks os-windows) mcl xcl) 5188 5202 (progn 5189 5203 command keys input output error-output ignore-error-status ;; ignore … … 5295 5309 #+gcl (system:system %command) 5296 5310 #+mcl (ccl::with-cstrs ((%%command %command)) (_system %%command)) 5297 #+mkcl ;; PROBABLY BOGUS -- ask jcb 5298 (multiple-value-bind (io process exit-code) 5299 (mkcl:run-program #+windows %command #+windows () 5300 #-windows "/bin/sh" #-windows (list "-c" %command) 5301 :input t :output t)) 5311 #+mkcl (mkcl:system %command) 5302 5312 #+xcl (system:%run-shell-command %command)))) 5303 5313 … … 5378 5388 or an indication of failure via the EXIT-CODE of the process" 5379 5389 (declare (ignorable ignore-error-status)) 5380 #-(or abcl allegro clisp clozure cmu cormanlisp ecl gcl lispworks mcl sbcl scl xcl)5390 #-(or abcl allegro clisp clozure cmu cormanlisp ecl gcl lispworks mcl mkcl sbcl scl xcl) 5381 5391 (error "RUN-PROGRAM not implemented for this Lisp") 5382 5392 (flet ((default (x xp output) (cond (xp x) ((eq output :interactive) :interactive)))) … … 5386 5396 #+(or abcl clisp) (eq :error-output :output) 5387 5397 #+(and lispworks os-unix) (%interactivep input output error-output) 5388 #+(or abcl cormanlisp gcl (and lispworks os-windows) mcl mkclxcl) t)5398 #+(or abcl cormanlisp gcl (and lispworks os-windows) mcl xcl) t) 5389 5399 '%use-system '%use-run-program) 5390 5400 command … … 5460 5470 (defun get-optimization-settings () 5461 5471 "Get current compiler optimization settings, ready to PROCLAIM again" 5462 #-(or clisp clozure cmu ecl sbcl scl)5472 #-(or clisp clozure cmu ecl mkcl sbcl scl) 5463 5473 (warn "~S does not support ~S. Please help me fix that." 'get-optimization-settings (implementation-type)) 5464 5474 #+clozure (ccl:declaration-information 'optimize nil) 5465 #+(or clisp cmu ecl sbcl scl)5475 #+(or clisp cmu ecl mkcl sbcl scl) 5466 5476 (let ((settings '(speed space safety debug compilation-speed #+(or cmu scl) c::brevity))) 5467 5477 #.`(loop :for x :in settings 5468 5478 ,@(or #+ecl '(:for v :in '(c::*speed* c::*space* c::*safety* c::*debug*)) 5479 #+mkcl '(:for v :in '(si::*speed* si::*space* si::*safety* si::*debug*)) 5469 5480 #+(or cmu scl) '(:for f :in '(c::cookie-speed c::cookie-space c::cookie-safety c::cookie-debug c::cookie-cspeed c::cookie-brevity))) 5470 5481 :for y = (or #+clisp (gethash x system::*optimize*) 5471 #+(or ecl ) (symbol-value v)5482 #+(or ecl mkcl) (symbol-value v) 5472 5483 #+(or cmu scl) (funcall f c::*default-cookie*) 5473 5484 #+sbcl (cdr (assoc x sb-c::*policy*))) … … 6524 6535 :uiop/run-program :uiop/lisp-build 6525 6536 :uiop/configuration :uiop/backward-driver)) 6537 6538 #+mkcl (provide :uiop) 6526 6539 ;;;; ------------------------------------------------------------------------- 6527 6540 ;;;; Handle upgrade as forward- and backward-compatibly as possible … … 6560 6573 ;; We need to clear systems from versions yet older than the below: 6561 6574 (defparameter *oldest-forward-compatible-asdf-version* "2.33") ;; 2.32.13 renames a slot in component. 6562 (defmacro defparameter* (var value &optional docstring)6563 (let* ((name (string-trim "*" var))6564 (valfun (intern (format nil "%~A-~A-~A" :compute name :value)))6565 (clearfun (intern (format nil "%~A-~A" :clear name))))6566 `(progn6567 (defun ,valfun () ,value)6568 (defvar ,var (,valfun) ,@(ensure-list docstring))6569 (defun ,clearfun () (setf ,var (,valfun)))6570 (register-hook-function '*post-upgrade-cleanup-hook* ',clearfun))))6571 6575 (defvar *verbose-out* nil) 6572 6576 (defun asdf-message (format-string &rest format-args) … … 6577 6581 (and *previous-asdf-versions* 6578 6582 (version< (first *previous-asdf-versions*) oldest-compatible-version))) 6583 (defmacro defparameter* (var value &optional docstring (version *oldest-forward-compatible-asdf-version*)) 6584 (let* ((name (string-trim "*" var)) 6585 (valfun (intern (format nil "%~A-~A-~A" :compute name :value)))) 6586 `(progn 6587 (defun ,valfun () ,value) 6588 (defvar ,var (,valfun) ,@(ensure-list docstring)) 6589 (when (upgrading-p ,version) 6590 (setf ,var (,valfun)))))) 6579 6591 (defmacro when-upgrading ((&key (version *oldest-forward-compatible-asdf-version*) 6580 6592 (upgrading-p `(upgrading-p ,version)) when) &body body) … … 6594 6606 ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5 6595 6607 ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67 6596 (asdf-version "3.1.0. 94")6608 (asdf-version "3.1.0.103") 6597 6609 (existing-version (asdf-version))) 6598 6610 (setf *asdf-version* asdf-version) … … 7094 7106 (:use :uiop/common-lisp :uiop :asdf/upgrade) 7095 7107 (:export #:get-file-stamp #:compute-file-stamp #:register-file-stamp 7096 #:consult-asdf-cache #:do-asdf-cache #:normalize-namestring 7108 #:set-asdf-cache-entry #:unset-asdf-cache-entry #:consult-asdf-cache 7109 #:do-asdf-cache #:normalize-namestring 7097 7110 #:call-with-asdf-cache #:with-asdf-cache #:*asdf-cache*)) 7098 7111 (in-package :asdf/cache) … … 7111 7124 (setf (gethash key *asdf-cache*) value-list) 7112 7125 value-list))) 7126 7127 (defun unset-asdf-cache-entry (key) 7128 (when *asdf-cache* 7129 (remhash key *asdf-cache*))) 7113 7130 7114 7131 (defun consult-asdf-cache (key &optional thunk) … … 7123 7140 `(consult-asdf-cache ,key #'(lambda () ,@body))) 7124 7141 7125 (defun call-with-asdf-cache (thunk &key override) 7126 (if (and *asdf-cache* (not override)) 7127 (funcall thunk) 7128 (let ((*asdf-cache* (make-hash-table :test 'equal))) 7129 (funcall thunk)))) 7130 7131 (defmacro with-asdf-cache ((&key override) &body body) 7132 `(call-with-asdf-cache #'(lambda () ,@body) :override ,override)) 7142 (defun call-with-asdf-cache (thunk &key override key) 7143 (let ((fun (if key #'(lambda () (consult-asdf-cache key thunk)) thunk))) 7144 (if (and *asdf-cache* (not override)) 7145 (funcall fun) 7146 (let ((*asdf-cache* (make-hash-table :test 'equal))) 7147 (funcall fun))))) 7148 7149 (defmacro with-asdf-cache ((&key key override) &body body) 7150 `(call-with-asdf-cache #'(lambda () ,@body) :override ,override :key ,key)) 7133 7151 7134 7152 (defun normalize-namestring (pathname) … … 7159 7177 (:recycle :asdf/find-system :asdf) 7160 7178 (:use :uiop/common-lisp :uiop :asdf/upgrade 7161 :asdf/component :asdf/system :asdf/cache)7179 :asdf/cache :asdf/component :asdf/system) 7162 7180 (:export 7163 7181 #:remove-entry-from-registry #:coerce-entry-to-directory 7164 7182 #:coerce-name #:primary-system-name #:coerce-filename 7165 #:find-system #:locate-system #:load-asd #:with-system-definitions7183 #:find-system #:locate-system #:load-asd 7166 7184 #:system-registered-p #:register-system #:registered-systems #:clear-system #:map-systems 7167 7185 #:missing-component #:missing-requires #:missing-parent … … 7170 7188 #:*system-definition-search-functions* #:search-for-system-definition 7171 7189 #:*central-registry* #:probe-asd #:sysdef-central-registry-search 7172 #:find-system-if-being-defined #:*systems-being-defined*7190 #:find-system-if-being-defined 7173 7191 #:contrib-sysdef-search #:sysdef-find-asdf ;; backward compatibility symbols, functions removed 7174 7192 #:sysdef-preloaded-system-search #:register-preloaded-system #:*preloaded-systems* 7175 #:clear-defined-system s #:*defined-systems*7193 #:clear-defined-system #:clear-defined-systems #:*defined-systems* 7176 7194 #:*immutable-systems* 7177 7195 ;; defined in source-registry, but specially mentioned here: … … 7244 7262 system))))) 7245 7263 7264 (defun clear-defined-system (system) 7265 (let ((name (coerce-name system))) 7266 (remhash name *defined-systems*) 7267 (unset-asdf-cache-entry `(locate-system ,name)) 7268 (unset-asdf-cache-entry `(find-system ,name)) 7269 nil)) 7270 7246 7271 (defun clear-defined-systems () 7247 7272 ;; Invalidate all systems but ASDF itself, if registered. 7248 (let ((asdf (cdr (system-registered-p :asdf)))) 7249 (setf *defined-systems* (make-hash-table :test 'equal)) 7250 (when asdf 7251 (setf (component-version asdf) *asdf-version*) 7252 (setf (builtin-system-p asdf) t) 7253 (register-system asdf))) 7254 (values)) 7273 (loop :for name :being :the :hash-keys :of *defined-systems* 7274 :unless (equal name "asdf") 7275 :do (clear-defined-system name))) 7255 7276 7256 7277 (register-hook-function '*post-upgrade-cleanup-hook* 'clear-defined-systems nil) … … 7409 7430 (find-system (coerce-name name) error-p)) 7410 7431 7411 (defvar *systems-being-defined* nil7412 "A hash-table of systems currently being defined keyed by name, or NIL")7413 7414 7432 (defun find-system-if-being-defined (name) 7415 (when *systems-being-defined* 7416 ;; notable side effect: mark the system as being defined, to avoid infinite loops 7417 (ensure-gethash (coerce-name name) *systems-being-defined* nil))) 7418 7419 (defun call-with-system-definitions (thunk) 7420 (if *systems-being-defined* 7421 (call-with-asdf-cache thunk) 7422 (let ((*systems-being-defined* (make-hash-table :test 'equal))) 7423 (call-with-asdf-cache thunk)))) 7424 7425 (defun clear-systems-being-defined () 7426 (when *systems-being-defined* 7427 (clrhash *systems-being-defined*))) 7428 7429 (register-hook-function '*post-upgrade-cleanup-hook* 'clear-systems-being-defined) 7430 7431 (defmacro with-system-definitions ((&optional) &body body) 7432 `(call-with-system-definitions #'(lambda () ,@body))) 7433 ;; notable side effect: mark the system as being defined, to avoid infinite loops 7434 (first (gethash `(find-system ,(coerce-name name)) *asdf-cache*))) 7433 7435 7434 7436 (defun load-asd (pathname &key name (external-format (encoding-external-format (detect-encoding pathname))) &aux (readtable *readtable*) (print-pprint-dispatch *print-pprint-dispatch*)) 7435 7437 ;; Tries to load system definition with canonical NAME from PATHNAME. 7436 (with- system-definitions()7438 (with-asdf-cache () 7437 7439 (with-standard-io-syntax 7438 7440 (let ((*package* (find-package :asdf-user)) … … 7529 7531 PREVIOUS when not null is a previously loaded SYSTEM object of same name. 7530 7532 PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded." 7531 (let* ((name (coerce-name name)) 7532 (in-memory (system-registered-p name)) ; load from disk if absent or newer on disk 7533 (previous (cdr in-memory)) 7534 (previous (and (typep previous 'system) previous)) 7535 (previous-time (car in-memory)) 7536 (found (search-for-system-definition name)) 7537 (found-system (and (typep found 'system) found)) 7538 (pathname (ensure-pathname 7539 (or (and (typep found '(or pathname string)) (pathname found)) 7540 (and found-system (system-source-file found-system)) 7541 (and previous (system-source-file previous))) 7542 :want-absolute t :resolve-symlinks *resolve-symlinks*)) 7543 (foundp (and (or found-system pathname previous) t))) 7544 (check-type found (or null pathname system)) 7545 (unless (check-not-old-asdf-system name pathname) 7546 (cond 7547 (previous (setf found nil pathname nil)) 7548 (t 7549 (setf found (sysdef-preloaded-system-search "asdf")) 7550 (assert (typep found 'system)) 7551 (setf found-system found pathname nil)))) 7552 (values foundp found-system pathname previous previous-time))) 7533 (with-asdf-cache (:key `(locate-system ,name)) 7534 (let* ((name (coerce-name name)) 7535 (in-memory (system-registered-p name)) ; load from disk if absent or newer on disk 7536 (previous (cdr in-memory)) 7537 (previous (and (typep previous 'system) previous)) 7538 (previous-time (car in-memory)) 7539 (found (search-for-system-definition name)) 7540 (found-system (and (typep found 'system) found)) 7541 (pathname (ensure-pathname 7542 (or (and (typep found '(or pathname string)) (pathname found)) 7543 (and found-system (system-source-file found-system)) 7544 (and previous (system-source-file previous))) 7545 :want-absolute t :resolve-symlinks *resolve-symlinks*)) 7546 (foundp (and (or found-system pathname previous) t))) 7547 (check-type found (or null pathname system)) 7548 (unless (check-not-old-asdf-system name pathname) 7549 (cond 7550 (previous (setf found nil pathname nil)) 7551 (t 7552 (setf found (sysdef-preloaded-system-search "asdf")) 7553 (assert (typep found 'system)) 7554 (setf found-system found pathname nil)))) 7555 (values foundp found-system pathname previous previous-time)))) 7553 7556 7554 7557 (defmethod find-system ((name string) &optional (error-p t)) 7555 (with- system-definitions ()7558 (with-asdf-cache (:key `(find-system ,name)) 7556 7559 (let ((primary-name (primary-system-name name))) 7557 (unless (or (equal name primary-name) 7558 (nth-value 1 (gethash primary-name *systems-being-defined*))) 7560 (unless (equal name primary-name) 7559 7561 (find-system primary-name nil))) 7560 7562 (loop … … 7563 7565 (locate-system name) 7564 7566 (when (and found-system (eq found-system previous) 7565 (or ( gethash name *systems-being-defined*)7567 (or (first (gethash `(find-system ,name) *asdf-cache*)) 7566 7568 (and *immutable-systems* (gethash name *immutable-systems*)))) 7567 7569 (return found-system)) … … 7597 7599 :report (lambda (s) 7598 7600 (format s (compatfmt "~@<Retry finding system ~A after reinitializing the source-registry.~@:>") name)) 7601 (unset-asdf-cache-entry `(locate-system ,name)) 7599 7602 (initialize-source-registry))))))) 7600 7603 … … 7604 7607 (uiop/package:define-package :asdf/find-component 7605 7608 (:recycle :asdf/find-component :asdf) 7606 (:use :uiop/common-lisp :uiop :asdf/upgrade 7609 (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/cache 7607 7610 :asdf/component :asdf/system :asdf/find-system) 7608 7611 (:export … … 7707 7710 (and (typep c 'missing-dependency) 7708 7711 (eq (missing-required-by c) component) 7709 (equal (missing-requires c) name)))))))) 7712 (equal (missing-requires c) name)))) 7713 (unless (component-parent component) 7714 (let ((name (coerce-name name))) 7715 (unset-asdf-cache-entry `(find-system ,name)) 7716 (unset-asdf-cache-entry `(locate-system ,name)))))))) 7717 7710 7718 7711 7719 (defun resolve-dependency-spec (component dep-spec) … … 7846 7854 (opix (position operation formals)) 7847 7855 (coix (position component formals)) 7848 7849 7856 (prefix (subseq formals 0 opix)) 7850 7857 (suffix (subseq formals (1+ coix) len)) … … 7970 7977 each of its declared dependencies must first be loaded as by LOAD-OP.")) 7971 7978 (defun sideway-operation-depends-on (o c) 7972 `((,(or (sideway-operation o) o) 7973 ,@(loop :for dep :in (component-sideway-dependencies c) 7974 :collect (resolve-dependency-spec c dep))))) 7979 `((,(or (sideway-operation o) o) ,@(component-sideway-dependencies c)))) 7975 7980 (defmethod component-depends-on ((o sideway-operation) (c component)) 7976 7981 `(,@(sideway-operation-depends-on o c) ,@(call-next-method))) … … 8899 8904 (uiop/package:define-package :asdf/operate 8900 8905 (:recycle :asdf/operate :asdf) 8901 (:use :uiop/common-lisp :uiop :asdf/upgrade 8906 (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/cache 8902 8907 :asdf/component :asdf/system :asdf/operation :asdf/action 8903 8908 :asdf/find-system :asdf/find-component :asdf/lisp-action :asdf/plan) … … 8905 8910 #:operate #:oos 8906 8911 #:*systems-being-operated* 8907 #:build-op #: build8912 #:build-op #:make 8908 8913 #:load-system #:load-systems #:load-systems* 8909 8914 #:compile-system #:test-system #:require-system … … 8969 8974 (apply 'operate (funcall operation-remaker) component-path keys)))) 8970 8975 ;; Setup proper bindings around any operate call. 8971 (with- system-definitions()8976 (with-asdf-cache () 8972 8977 (let* ((*verbose-out* (and verbose *standard-output*)) 8973 8978 (*compile-file-warnings-behaviour* on-warnings) … … 9005 9010 The default operation may change in the future if we implement a 9006 9011 component-directed strategy for how to load or compile systems.") 9012 9013 (defmethod component-depends-on ((o prepare-op) (s system)) 9014 `((,*load-system-operation* ,@(component-sideway-dependencies s)))) 9007 9015 9008 9016 (defclass build-op (non-propagating-operation) () … … 9017 9025 `((,(or (component-build-operation c) *load-system-operation*) ,c))) 9018 9026 9019 (defun build(system &rest keys)9020 "The recommended way to interact with ASDF3.1 is via (ASDF: BUILD:FOO).9027 (defun make (system &rest keys) 9028 "The recommended way to interact with ASDF3.1 is via (ASDF:MAKE :FOO). 9021 9029 It will build system FOO using the operation BUILD-OP, 9022 9030 the meaning of which is configurable by the system, and … … 9118 9126 (defun restart-upgraded-asdf () 9119 9127 ;; If we're in the middle of something, restart it. 9120 (when *systems-being-defined* 9121 (let ((l (loop :for name :being :the :hash-keys :of *systems-being-defined* :collect name))) 9122 (clrhash *systems-being-defined*) 9128 (when *asdf-cache* 9129 (let ((l (loop* :for (x y) :being :the hash-keys :of *asdf-cache* 9130 :when (eq x 'find-system) :collect y))) 9131 (clrhash *asdf-cache*) 9123 9132 (dolist (s l) (find-system s nil))))) 9124 9125 9133 (register-hook-function '*post-upgrade-restart-hook* 'restart-upgraded-asdf)) 9126 9134 … … 9455 9463 #:validate-source-registry-directive #:validate-source-registry-form 9456 9464 #:validate-source-registry-file #:validate-source-registry-directory 9457 #:parse-source-registry-string #:wrapping-source-registry #:default-source-registry 9465 #:parse-source-registry-string #:wrapping-source-registry 9466 #:default-user-source-registry #:default-system-source-registry 9458 9467 #:user-source-registry #:system-source-registry 9459 9468 #:user-source-registry-directory #:system-source-registry-directory … … 9584 9593 user-source-registry 9585 9594 user-source-registry-directory 9595 default-user-source-registry 9586 9596 system-source-registry 9587 9597 system-source-registry-directory 9588 default-source-registry)) 9598 default-system-source-registry) 9599 "List of default source registries" "3.1.0.102") 9589 9600 9590 9601 (defparameter *source-registry-file* (parse-unix-namestring "source-registry.conf")) … … 9594 9605 `(:source-registry 9595 9606 #+(or ecl sbcl) (:tree ,(resolve-symlinks* (lisp-implementation-directory))) 9607 :inherit-configuration 9596 9608 #+mkcl (:tree ,(translate-logical-pathname "CONTRIB:")) 9597 :inherit-configuration9598 9609 #+cmu (:tree #p"modules:") 9599 9610 #+scl (:tree #p"file://modules/"))) 9600 (defun default- source-registry ()9611 (defun default-user-source-registry () 9601 9612 `(:source-registry 9602 #+sbcl (:directory ,(subpathname (user-homedir-pathname) ".sbcl/systems/")) 9613 (:tree (:home "common-lisp/")) 9614 #+sbcl (:directory (:home ".sbcl/systems/")) 9603 9615 ,@(loop :for dir :in 9604 9616 `(,@(when (os-unix-p) 9605 9617 `(,(or (getenv-absolute-directory "XDG_DATA_HOME") 9606 (subpathname (user-homedir-pathname) ".local/share/")) 9607 ,@(or (getenv-absolute-directories "XDG_DATA_DIRS") 9608 '("/usr/local/share" "/usr/share")))) 9618 (subpathname (user-homedir-pathname) ".local/share/")))) 9609 9619 ,@(when (os-windows-p) 9610 (mapcar 'get-folder-path '(:local-appdata :appdata :common-appdata)))) 9620 (mapcar 'get-folder-path '(:local-appdata :appdata)))) 9621 :collect `(:directory ,(subpathname* dir "common-lisp/systems/")) 9622 :collect `(:tree ,(subpathname* dir "common-lisp/source/"))) 9623 :inherit-configuration)) 9624 (defun default-system-source-registry () 9625 `(:source-registry 9626 ,@(loop :for dir :in 9627 `(,@(when (os-unix-p) 9628 (or (getenv-absolute-directories "XDG_DATA_DIRS") 9629 '("/usr/local/share" "/usr/share"))) 9630 ,@(when (os-windows-p) 9631 (list (get-folder-path :common-appdata)))) 9611 9632 :collect `(:directory ,(subpathname* dir "common-lisp/systems/")) 9612 9633 :collect `(:tree ,(subpathname* dir "common-lisp/source/"))) … … 9826 9847 (:nicknames :asdf/defsystem) ;; previous name, to be compatible with, in case anyone cares 9827 9848 (:use :uiop/common-lisp :asdf/driver :asdf/upgrade 9828 :asdf/c omponent :asdf/system :asdf/cache9849 :asdf/cache :asdf/component :asdf/system 9829 9850 :asdf/find-system :asdf/find-component :asdf/lisp-action :asdf/operate 9830 9851 :asdf/backward-internals) … … 10058 10079 ;; To avoid infinite recursion in cases where you defsystem a system 10059 10080 ;; that is registered to a different location to find-system, 10060 ;; we also need to remember it in a special variable *systems-being-defined*.10061 (with- system-definitions()10081 ;; we also need to remember it in the asdf-cache. 10082 (with-asdf-cache () 10062 10083 (let* ((name (coerce-name name)) 10063 10084 (source-file (if sfp source-file (resolve-symlinks* (load-pathname)))) … … 10078 10099 (append `(:defsystem-depends-on ,(parse-dependency-defs defsystem-depends-on)) 10079 10100 component-options))) 10080 (set f (gethash name *systems-being-defined*) system)10101 (set-asdf-cache-entry `(find-system ,name) (list system)) 10081 10102 (load-systems* defsystem-dependencies) 10082 10103 ;; We change-class AFTER we loaded the defsystem-depends-on … … 10102 10123 (:use :uiop/common-lisp :uiop :asdf/upgrade 10103 10124 :asdf/component :asdf/system :asdf/find-system :asdf/find-component :asdf/operation 10104 :asdf/action :asdf/lisp-action :asdf/plan :asdf/operate )10125 :asdf/action :asdf/lisp-action :asdf/plan :asdf/operate :asdf/defsystem) 10105 10126 (:export 10106 #:bundle-op #:bundle- op-build-args #:bundle-type10127 #:bundle-op #:bundle-type #:program-system 10107 10128 #:bundle-system #:bundle-pathname-type #:bundlable-file-p #:direct-dependency-files 10108 10129 #:monolithic-op #:monolithic-bundle-op #:operation-monolithic-p 10109 #:basic-fasl-op #:prepare-fasl-op #:fasl-op #:load-fasl-op #:monolithic-fasl-op 10130 #:fasl-op #:load-fasl-op #:monolithic-fasl-op #:binary-op #:monolithic-binary-op 10131 #:basic-compile-bundle-op #:prepare-bundle-op 10132 #:compile-bundle-op #:load-bundle-op #:monolithic-compile-bundle-op #:monolithic-load-bundle-op 10110 10133 #:lib-op #:monolithic-lib-op 10111 10134 #:dll-op #:monolithic-dll-op … … 10113 10136 #:program-op #:image-op #:compiled-file #:precompiled-system #:prebuilt-system 10114 10137 #:user-system-p #:user-system #:trivial-system-p 10115 #+ecl #:make-build 10116 #:register-pre-built-system 10138 #:make-build 10117 10139 #:build-args #:name-suffix #:prologue-code #:epilogue-code #:static-library)) 10118 10140 (in-package :asdf/bundle) … … 10120 10142 (with-upgradability () 10121 10143 (defclass bundle-op (basic-compile-op) 10122 ((build-args :initarg :args :initform nil :accessor bundle-op-build-args)10144 ((build-args :initarg :args :initform nil :accessor extra-build-args) 10123 10145 (name-suffix :initarg :name-suffix :initform nil) 10124 10146 (bundle-type :initform :no-output-file :reader bundle-type) 10125 #+ecl (lisp-files :initform nil :accessor bundle-op-lisp-files) 10126 #+mkcl (do-fasb :initarg :do-fasb :initform t :reader bundle-op-do-fasb-p) 10127 #+mkcl (do-static-library :initarg :do-static-library :initform t :reader bundle-op-do-static-library-p))) 10147 #+ecl (lisp-files :initform nil :accessor extra-object-files))) 10128 10148 10129 10149 (defclass monolithic-op (operation) () … … 10136 10156 (defclass monolithic-bundle-op (monolithic-op bundle-op) 10137 10157 ;; Old style way of specifying prologue and epilogue on ECL: in the monolithic operation 10138 ((prologue-code : accessor prologue-code)10139 (epilogue-code : accessor epilogue-code)))10140 10141 (defclass bundle-system (system)10158 ((prologue-code :initform nil :accessor prologue-code) 10159 (epilogue-code :initform nil :accessor epilogue-code))) 10160 10161 (defclass program-system (system) 10142 10162 ;; New style (ASDF3.1) way of specifying prologue and epilogue on ECL: in the system 10143 ((prologue-code :accessor prologue-code) 10144 (epilogue-code :accessor epilogue-code))) 10163 ((prologue-code :initform nil :initarg :prologue-code :reader prologue-code) 10164 (epilogue-code :initform nil :initarg :epilogue-code :reader epilogue-code) 10165 (prefix-lisp-object-files :initarg :prefix-lisp-object-files 10166 :initform nil :accessor prefix-lisp-object-files) 10167 (postfix-lisp-object-files :initarg :postfix-lisp-object-files 10168 :initform nil :accessor postfix-lisp-object-files) 10169 (extra-object-files :initarg :extra-object-files 10170 :initform nil :accessor extra-object-files) 10171 (extra-build-args :initarg :extra-build-args 10172 :initform nil :accessor extra-build-args))) 10145 10173 10146 10174 (defmethod prologue-code ((x t)) nil) 10147 10175 (defmethod epilogue-code ((x t)) nil) 10176 (defmethod prefix-lisp-object-files ((x t)) nil) 10177 (defmethod postfix-lisp-object-files ((x t)) nil) 10178 (defmethod extra-object-files ((x t)) nil) 10179 (defmethod extra-build-args ((x t)) nil) 10148 10180 10149 10181 (defclass link-op (bundle-op) () … … 10170 10202 10171 10203 ;; create a single fasl for the entire library 10172 (defclass basic- fasl-op (bundle-op)10204 (defclass basic-compile-bundle-op (bundle-op) 10173 10205 ((bundle-type :initform :fasl))) 10174 10206 10175 (defclass prepare-fasl-op (sideway-operation) 10176 ((sideway-operation :initform #+ecl 'load-fasl-op #-ecl 'load-op :allocation :class))) 10207 (defclass prepare-bundle-op (sideway-operation) 10208 ((sideway-operation :initform #+(or ecl mkcl) 'load-bundle-op #-(or ecl mkcl) 'load-op 10209 :allocation :class))) 10177 10210 10178 10211 (defclass lib-op (link-op gather-op non-propagating-operation) … … 10180 10213 (:documentation "compile the system and produce linkable (.a) library for it.")) 10181 10214 10182 (defclass fasl-op (basic-fasl-op selfward-operation #+ecl link-op #-ecl gather-op) 10183 ((selfward-operation :initform '(prepare-fasl-op #+ecl lib-op) :allocation :class))) 10184 10185 (defclass load-fasl-op (basic-load-op selfward-operation) 10186 ((selfward-operation :initform '(prepare-op fasl-op) :allocation :class))) 10215 (defclass compile-bundle-op (basic-compile-bundle-op selfward-operation 10216 #+(or ecl mkcl) link-op #-ecl gather-op) 10217 ((selfward-operation :initform '(prepare-bundle-op #+ecl lib-op) :allocation :class))) 10218 10219 (defclass load-bundle-op (basic-load-op selfward-operation) 10220 ((selfward-operation :initform '(prepare-bundle-op compile-bundle-op) :allocation :class))) 10187 10221 10188 10222 ;; NB: since the monolithic-op's can't be sideway-operation's, 10189 10223 ;; if we wanted lib-op, dll-op, deliver-asd-op to be sideway-operation's, 10190 10224 ;; we'd have to have the monolithic-op not inherit from the main op, 10191 ;; but instead inherit from a basic-FOO-op as with basic- fasl-op above.10225 ;; but instead inherit from a basic-FOO-op as with basic-compile-bundle-op above. 10192 10226 10193 10227 (defclass dll-op (link-op gather-op non-propagating-operation) … … 10196 10230 10197 10231 (defclass deliver-asd-op (basic-compile-op selfward-operation) 10198 ((selfward-operation :initform '( fasl-op #+(or ecl mkcl) lib-op) :allocation :class))10232 ((selfward-operation :initform '(compile-bundle-op #+(or ecl mkcl) lib-op) :allocation :class)) 10199 10233 (:documentation "produce an asd file for delivering the system as a single fasl")) 10200 10234 10201 10235 10202 10236 (defclass monolithic-deliver-asd-op (monolithic-bundle-op deliver-asd-op) 10203 ((selfward-operation :initform '(monolithic- fasl-op #+(or ecl mkcl) monolithic-lib-op)10237 ((selfward-operation :initform '(monolithic-compile-bundle-op #+(or ecl mkcl) monolithic-lib-op) 10204 10238 :allocation :class)) 10205 10239 (:documentation "produce fasl and asd files for combined system and dependencies.")) 10206 10240 10207 (defclass monolithic- fasl-op (monolithic-bundle-op basic-fasl-op10208 #+ecllink-op gather-op non-propagating-operation)10209 ((gather-op :initform #+(or ecl mkcl) 'lib-op #-(or ecl mkcl) ' fasl-op :allocation :class))10241 (defclass monolithic-compile-bundle-op (monolithic-bundle-op basic-compile-bundle-op 10242 #+(or ecl mkcl) link-op gather-op non-propagating-operation) 10243 ((gather-op :initform #+(or ecl mkcl) 'lib-op #-(or ecl mkcl) 'compile-bundle-op :allocation :class)) 10210 10244 (:documentation "Create a single fasl for the system and its dependencies.")) 10245 10246 (defclass monolithic-load-bundle-op (monolithic-bundle-op load-bundle-op) 10247 ((selfward-operation :initform 'monolithic-compile-bundle-op :allocation :class)) 10248 (:documentation "Load a single fasl for the system and its dependencies.")) 10211 10249 10212 10250 (defclass monolithic-lib-op (monolithic-bundle-op lib-op non-propagating-operation) () … … 10218 10256 10219 10257 (defclass image-op (monolithic-bundle-op selfward-operation 10220 #+ ecllink-op #+(or ecl mkcl) gather-op)10258 #+(or ecl mkcl) link-op #+(or ecl mkcl) gather-op) 10221 10259 ((bundle-type :initform :image) 10222 (selfward-operation :initform '(#- eclload-op) :allocation :class))10260 (selfward-operation :initform '(#-(or ecl mkcl) load-op) :allocation :class)) 10223 10261 (:documentation "create an image file from the system and its dependencies")) 10224 10262 … … 10236 10274 (compile-file-type :type bundle-type)) 10237 10275 ((member :image) "image") 10238 ((eql :dll) (cond ((os-macosx-p) "dylib") ((os-unix-p) "so") ((os-windows-p) "dll"))) 10239 ((member :lib :static-library) (cond ((os-unix-p) "a") ((os-windows-p) "lib"))) 10276 ((member :dll :shared-library) (cond ((os-macosx-p) "dylib") ((os-unix-p) "so") ((os-windows-p) "dll"))) 10277 ((member :lib :static-library) (cond ((os-unix-p) "a") 10278 ((os-windows-p) (if (featurep '(:or :mingw32 :mingw64)) "a" "lib")))) 10240 10279 ((eql :program) (cond ((os-unix-p) nil) ((os-windows-p) "exe"))))) 10241 10280 … … 10254 10293 10255 10294 #-(or ecl mkcl) 10256 (defmethod perform ((o program-op) (c system)) 10257 (let ((output-file (output-file o c))) 10258 (setf *image-entry-point* (ensure-function (component-entry-point c))) 10259 (dump-image output-file :executable t))) 10295 (progn 10296 (defmethod perform ((o image-op) (c system)) 10297 (dump-image (output-file o c) :executable (typep o 'program-op))) 10298 (defmethod perform :before ((o program-op) (c system)) 10299 (setf *image-entry-point* (ensure-function (component-entry-point c))))) 10260 10300 10261 10301 (defclass compiled-file (file-component) … … 10286 10326 (setf (slot-value instance 'name-suffix) 10287 10327 (unless (typep instance 'program-op) 10288 (if (operation-monolithic-p instance) "--all-systems" #- ecl"--system")))) ; . no good for Logical Pathnames10328 (if (operation-monolithic-p instance) "--all-systems" #-(or ecl mkcl) "--system")))) ; . no good for Logical Pathnames 10289 10329 (when (typep instance 'monolithic-bundle-op) 10290 10330 (destructuring-bind (&key lisp-files prologue-code epilogue-code … … 10293 10333 (setf (prologue-code instance) prologue-code 10294 10334 (epilogue-code instance) epilogue-code) 10295 #-ecl (assert (null (or lisp-files epilogue-codeprologue-code)))10296 #+ecl (setf ( bundle-op-lisp-files instance) lisp-files)))10297 (setf ( bundle-op-build-args instance)10335 #-ecl (assert (null (or lisp-files #-mkcl epilogue-code #-mkcl prologue-code))) 10336 #+ecl (setf (extra-object-files instance) lisp-files))) 10337 (setf (extra-build-args instance) 10298 10338 (remove-plist-keys 10299 10339 '(:type :monolithic :name-suffix :epilogue-code :prologue-code :lisp-files) … … 10305 10345 (or #+ecl (or (equalp type (compile-file-type :type :object)) 10306 10346 (equalp type (compile-file-type :type :static-library))) 10307 #+mkcl (equalp type (compile-file-type :fasl-p nil)) 10347 #+mkcl (or (equalp type (compile-file-type :fasl-p nil)) 10348 #+(or unix mingw32 mingw64) (equalp type "a") ;; valid on Unix and MinGW 10349 #+(and windows (not (or mingw32 mingw64))) (equalp type "lib")) 10308 10350 #+(or abcl allegro clisp clozure cmu lispworks sbcl scl xcl) (equalp type (compile-file-type))))) 10309 10351 … … 10327 10369 ;;; 10328 10370 (with-upgradability () 10329 (defmethod component-depends-on :around ((o bundle-op) (c component))10330 (if-let (op (and (eq (type-of o) 'bundle-op) (component-build-operation c)))10331 `((,op ,c))10332 (call-next-method)))10333 10334 10371 (defun direct-dependency-files (o c &key (test 'identity) (key 'output-files) &allow-other-keys) 10335 10372 ;; This file selects output files from direct dependencies; … … 10352 10389 (if monolithic 'monolithic-lib-op 'lib-op)) 10353 10390 ((:fasl) 10354 (if monolithic 'monolithic- fasl-op 'fasl-op))10391 (if monolithic 'monolithic-compile-bundle-op 'compile-bundle-op)) 10355 10392 ((:image) 10356 10393 'image-op) … … 10358 10395 'program-op))) 10359 10396 10360 ;; This is originally from asdf-ecl.lisp. Does anyone use it?10397 ;; DEPRECATED. This is originally from asdf-ecl.lisp. Does anyone use it? 10361 10398 (defun make-build (system &rest args &key (monolithic nil) (type :fasl) 10362 10399 (move-here nil move-here-p) … … 10381 10418 :do (rename-file-overwriting-target f new-f) 10382 10419 :collect new-f) 10383 files)))) 10420 files))) 10421 10422 ;; DEPRECATED. Does anyone use this? 10423 (defun bundle-system (system &rest args &key force (verbose t) version &allow-other-keys) 10424 (declare (ignore force verbose version)) 10425 (apply #'operate 'deliver-asd-op system args))) 10384 10426 10385 10427 ;;; 10386 ;;; LOAD- FASL-OP10428 ;;; LOAD-BUNDLE-OP 10387 10429 ;;; 10388 ;;; This is like ASDF's LOAD-OP, but using monolithicfasl files.10430 ;;; This is like ASDF's LOAD-OP, but using bundle fasl files. 10389 10431 ;;; 10390 10432 (with-upgradability () 10391 (defmethod component-depends-on ((o load-fasl-op) (c system)) 10392 `((,o ,@(loop :for dep :in (component-sideway-dependencies c) 10393 :collect (resolve-dependency-spec c dep))) 10394 (,(if (user-system-p c) 'fasl-op 'load-op) ,c) 10433 (defmethod component-depends-on ((o load-bundle-op) (c system)) 10434 `((,o ,@(component-sideway-dependencies c)) 10435 (,(if (user-system-p c) 'compile-bundle-op 'load-op) ,c) 10395 10436 ,@(call-next-method))) 10396 10437 10397 (defmethod input-files ((o load- fasl-op) (c system))10438 (defmethod input-files ((o load-bundle-op) (c system)) 10398 10439 (when (user-system-p c) 10399 (output-files (find-operation o ' fasl-op) c)))10400 10401 (defmethod perform ((o load- fasl-op) (c system))10440 (output-files (find-operation o 'compile-bundle-op) c))) 10441 10442 (defmethod perform ((o load-bundle-op) (c system)) 10402 10443 (when (input-files o c) 10403 10444 (perform-lisp-load-fasl o c))) 10404 10445 10405 (defmethod mark-operation-done :after ((o load- fasl-op) (c system))10446 (defmethod mark-operation-done :after ((o load-bundle-op) (c system)) 10406 10447 (mark-operation-done (find-operation o 'load-op) c))) 10407 10448 … … 10422 10463 (defmethod perform ((o load-source-op) (c compiled-file)) 10423 10464 (perform (find-operation o 'load-op) c)) 10424 (defmethod perform ((o load-fasl-op) (c compiled-file))10425 (perform (find-operation o 'load-op) c))10426 10465 (defmethod perform ((o operation) (c compiled-file)) 10427 10466 nil)) … … 10434 10473 t) 10435 10474 10475 (defmethod perform ((o link-op) (c prebuilt-system)) 10476 nil) 10477 10478 (defmethod perform ((o basic-compile-bundle-op) (c prebuilt-system)) 10479 nil) 10480 10436 10481 (defmethod perform ((o lib-op) (c prebuilt-system)) 10437 10482 nil) 10438 10483 10439 (defmethod component-depends-on ((o lib-op) (c prebuilt-system))10484 (defmethod perform ((o dll-op) (c prebuilt-system)) 10440 10485 nil) 10441 10486 10442 (defmethod component-depends-on ((o monolithic-lib-op) (c prebuilt-system)) 10443 nil)) 10487 (defmethod component-depends-on ((o gather-op) (c prebuilt-system)) 10488 nil) 10489 10490 (defmethod output-files ((o lib-op) (c prebuilt-system)) 10491 (values (list (prebuilt-system-static-library c)) t))) 10444 10492 10445 10493 … … 10458 10506 (asd (first (output-files o s))) 10459 10507 (name (if (and fasl asd) (pathname-name asd) (return-from perform))) 10508 (version (component-version s)) 10460 10509 (dependencies 10461 10510 (if (operation-monolithic-p o) … … 10487 10536 (pprint `(defsystem ,name 10488 10537 :class prebuilt-system 10538 :version ,version 10489 10539 :depends-on ,depends-on 10490 10540 :components ((:compiled-file ,(pathname-name fasl))) … … 10494 10544 10495 10545 #-(or ecl mkcl) 10496 (defmethod perform ((o basic- fasl-op) (c system))10546 (defmethod perform ((o basic-compile-bundle-op) (c system)) 10497 10547 (let* ((input-files (input-files o c)) 10498 10548 (fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test-not #'equalp)) … … 10513 10563 10514 10564 (defmethod input-files ((o load-op) (s precompiled-system)) 10515 (bundle-output-files (find-operation o ' fasl-op) s))10565 (bundle-output-files (find-operation o 'compile-bundle-op) s)) 10516 10566 10517 10567 (defmethod perform ((o load-op) (s precompiled-system)) 10518 10568 (perform-lisp-load-fasl o s)) 10519 10569 10520 (defmethod component-depends-on ((o load- fasl-op) (s precompiled-system))10570 (defmethod component-depends-on ((o load-bundle-op) (s precompiled-system)) 10521 10571 #+xcl (declare (ignorable o)) 10522 10572 `((load-op ,s) ,@(call-next-method)))) … … 10529 10579 #+(or ecl mkcl) 10530 10580 (with-upgradability () 10531 (defun uiop-library-file () 10532 (or (and (find-system :uiop nil) 10533 (system-source-directory :uiop) 10534 (progn 10535 (operate 'lib-op :uiop) 10536 (output-file 'lib-op :uiop))) 10537 (resolve-symlinks* (c::compile-file-pathname "sys:asdf" :type :lib)))) 10538 (defmethod input-files :around ((o program-op) (c system)) 10539 (let ((files (call-next-method)) 10540 (plan (traverse-sub-actions o c :plan-class 'sequential-plan))) 10541 (unless (or (and (system-source-directory :uiop) 10542 (plan-operates-on-p plan '("uiop"))) 10543 (and (system-source-directory :asdf) 10544 (plan-operates-on-p plan '("asdf")))) 10545 (pushnew (uiop-library-file) files :test 'pathname-equal)) 10546 files)) 10547 10548 (defun register-pre-built-system (name) 10549 (register-system (make-instance 'system :name (coerce-name name) :source-file nil)))) 10550 10551 #+ecl 10552 (with-upgradability () 10553 ;; I think that Juanjo intended for this to be. 10554 ;; But it might break systems with missing dependencies, 10555 ;; and there is a weird bug in test-xach-update-bug.script 10556 ;;(unless (use-ecl-byte-compiler-p) 10557 ;; (setf *load-system-operation* 'load-fasl-op)) 10581 ;; I think that Juanjo intended for this to be, 10582 ;; but beware the weird bug in test-xach-update-bug.script, 10583 ;; and also it makes mkcl fail test-logical-pathname.script, 10584 ;; and ecl fail test-bundle.script. 10585 ;;(unless (or #+ecl (use-ecl-byte-compiler-p)) 10586 ;; (setf *load-system-operation* 'load-bundle-op)) 10587 10588 (defun asdf-library-pathname () 10589 #+ecl (compile-file-pathname "sys:asdf" :type :lib) 10590 #+mkcl (make-pathname :type (bundle-pathname-type :lib) :defaults #p"sys:contrib;asdf")) 10591 10592 (defun make-library-system (name pathname) 10593 (make-instance 'prebuilt-system :name name :static-library (resolve-symlinks* pathname))) 10594 10595 (defmethod component-depends-on :around ((o image-op) (c system)) 10596 (destructuring-bind ((lib-op . deps)) (call-next-method) 10597 (flet ((has-it-p (x) (find x deps :test 'equal :key 'coerce-name))) 10598 `((,lib-op 10599 #+mkcl ,@(unless (has-it-p "cmp") 10600 `(,(make-library-system 10601 "cmp" (make-pathname :type (bundle-pathname-type :lib) 10602 :defaults #p"sys:cmp")))) 10603 ,@(unless (or (has-it-p "asdf") (has-it-p "uiop")) 10604 `(,(cond 10605 ((system-source-directory :uiop) (find-system :uiop)) 10606 ((system-source-directory :asdf) (find-system :asdf)) 10607 (t (make-fake-asdf-system "asdf" (asdf-library-pathname)))))) 10608 ,@deps))))) 10558 10609 10559 10610 (defmethod perform ((o link-op) (c system)) … … 10561 10612 (output (output-files o c)) 10562 10613 (bundle (first output)) 10563 ( targetp (eq (type-of o) (component-build-operation c)))10614 (programp (typep o 'program-op)) 10564 10615 (kind (bundle-type o))) 10565 10616 (when output 10566 10617 (apply 'create-image 10567 bundle (append object-files (bundle-op-lisp-files o)) 10618 bundle (append 10619 (when programp (prefix-lisp-object-files c)) 10620 object-files 10621 (when programp (postfix-lisp-object-files c))) 10568 10622 :kind kind 10569 :prologue-code (or (prologue-code o) (when targetp (prologue-code c))) 10570 :epilogue-code (or (epilogue-code o) (when targetp (epilogue-code c))) 10571 :build-args (bundle-op-build-args o) 10572 (when targetp `(:entry-point ,(component-entry-point c)))))))) 10573 10574 #+mkcl 10575 (with-upgradability () 10576 (defmethod perform ((o lib-op) (s system)) 10577 (apply #'compiler::build-static-library (output-file o c) 10578 :lisp-object-files (input-files o s) (bundle-op-build-args o))) 10579 10580 (defmethod perform ((o basic-fasl-op) (s system)) 10581 (apply #'compiler::build-bundle (output-file o c) ;; second??? 10582 :lisp-object-files (input-files o s) (bundle-op-build-args o))) 10583 10584 (defun bundle-system (system &rest args &key force (verbose t) version &allow-other-keys) 10585 (declare (ignore force verbose version)) 10586 (apply #'operate 'deliver-asd-op system args))) 10623 :prologue-code (or (prologue-code o) (when programp (prologue-code c))) 10624 :epilogue-code (or (epilogue-code o) (when programp (epilogue-code c))) 10625 :build-args (or (extra-build-args o) (when programp (extra-build-args c))) 10626 :extra-object-files (or (extra-object-files o) (when programp (extra-object-files c))) 10627 (when programp `(:entry-point ,(component-entry-point c)))))))) 10587 10628 10588 10629 #+(and (not asdf-use-unsafe-mac-bundle-op) 10589 10630 (or (and ecl darwin) 10590 10631 (and abcl darwin (not abcl-bundle-op-supported)))) 10591 (defmethod perform :before ((o basic- fasl-op) (c component))10632 (defmethod perform :before ((o basic-compile-bundle-op) (c component)) 10592 10633 (unless (featurep :asdf-use-unsafe-mac-bundle-op) 10593 10634 (cerror "Continue after modifying *FEATURES*." 10594 "BASIC- FASL-OP bundleoperations are not supported on Mac OS X for this lisp.~%~T~10635 "BASIC-COMPILE-BUNDLE-OP operations are not supported on Mac OS X for this lisp.~%~T~ 10595 10636 To continue, push :asdf-use-unsafe-mac-bundle-op onto *FEATURES*.~%~T~ 10596 10637 Please report to ASDF-DEVEL if this works for you."))) 10638 10639 10640 ;;; Backward compatibility with pre-3.1.1 names 10641 (defclass fasl-op (selfward-operation) 10642 ((selfward-operation :initform 'compile-bundle-op :allocation :class))) 10643 (defclass load-fasl-op (selfward-operation) 10644 ((selfward-operation :initform 'load-bundle-op :allocation :class))) 10645 (defclass binary-op (selfward-operation) 10646 ((selfward-operation :initform 'deliver-asd-op :allocation :class))) 10647 (defclass monolithic-fasl-op (selfward-operation) 10648 ((selfward-operation :initform 'monolithic-compile-bundle-op :allocation :class))) 10649 (defclass monolithic-load-fasl-op (selfward-operation) 10650 ((selfward-operation :initform 'monolithic-load-bundle-op :allocation :class))) 10651 (defclass monolithic-binary-op (selfward-operation) 10652 ((selfward-operation :initform 'monolithic-deliver-asd-op :allocation :class))) 10597 10653 ;;;; ------------------------------------------------------------------------- 10598 10654 ;;;; Concatenate-source … … 10674 10730 10675 10731 (defmethod perform ((o basic-concatenate-source-op) (s system)) 10676 (let ((inputs (input-files o s)) 10677 (output (output-file o s))) 10678 (concatenate-files inputs output))) 10732 (let* ((ins (input-files o s)) 10733 (out (output-file o s)) 10734 (tmp (tmpize-pathname out))) 10735 (concatenate-files ins tmp) 10736 (rename-file-overwriting-target tmp out))) 10679 10737 (defmethod perform ((o basic-load-concatenated-source-op) (s system)) 10680 10738 (perform-lisp-load-source o s)) … … 10990 11048 (:recycle :asdf/interface :asdf) 10991 11049 (:unintern 10992 #:*asdf-revision* #:around #:asdf-method-combination10993 #:do-traverse #:do-dep #:do-one-dep #:visit-action #:component-visited-p10994 #:split #:make-collector10995 11050 #:loaded-systems ; makes for annoying SLIME completion 10996 #:output-files-for-system-and-operation) ; obsolete ASDF-BINARY-LOCATION function11051 #:output-files-for-system-and-operation) ; ASDF-BINARY-LOCATION function we use to detect ABL 10997 11052 (:use :uiop/common-lisp :uiop :asdf/upgrade :asdf/cache 10998 11053 :asdf/component :asdf/system :asdf/find-system :asdf/find-component … … 11001 11056 :asdf/plan :asdf/operate :asdf/parse-defsystem :asdf/bundle :asdf/concatenate-source 11002 11057 :asdf/backward-internals :asdf/backward-interface :asdf/package-system) 11003 ;; TODO: automatically generate interface with reexport? 11058 ;; Note: (1) we are NOT automatically reexporting everything from previous packages. 11059 ;; (2) we only reexport UIOP functionality when backward-compatibility requires it. 11004 11060 (:export 11005 11061 #:defsystem #:find-system #:locate-system #:coerce-name #:primary-system-name 11006 11062 #:oos #:operate #:make-plan #:perform-plan #:sequential-plan 11007 #:system-definition-pathname #:with-system-definitions11063 #:system-definition-pathname 11008 11064 #:search-for-system-definition #:find-component #:component-find-path 11009 11065 #:compile-system #:load-system #:load-systems #:load-systems* … … 11012 11068 #:upward-operation #:downward-operation #:sideway-operation #:selfward-operation 11013 11069 #:non-propagating-operation 11014 #:build-op #: build11070 #:build-op #:make 11015 11071 #:load-op #:prepare-op #:compile-op 11016 11072 #:prepare-source-op #:load-source-op #:test-op 11017 11073 #:feature #:version #:version-satisfies #:upgrade-asdf 11018 11074 #:implementation-identifier #:implementation-type #:hostname 11019 #:input-files #:output-files #:output-file #:perform 11075 #:input-files #:output-files #:output-file #:perform #:perform-with-restarts 11020 11076 #:operation-done-p #:explain #:action-description #:component-sideway-dependencies 11021 11077 #:needed-in-image-p 11022 ;; #:run-program ; we can't export it, because SB-GROVEL :use's both ASDF and SB-EXT.11023 11078 #:component-load-dependencies #:run-shell-command ; deprecated, do not use 11024 11079 #:bundle-op #:monolithic-bundle-op #:precompiled-system #:compiled-file #:bundle-system 11025 #+ecl #:make-build 11026 #:basic-fasl-op #:prepare-fasl-op #:fasl-op #:load-fasl-op #:monolithic-fasl-op 11080 #:program-system #:make-build 11081 #:fasl-op #:load-fasl-op #:monolithic-fasl-op #:binary-op #:monolithic-binary-op 11082 #:basic-compile-bundle-op #:prepare-bundle-op 11083 #:compile-bundle-op #:load-bundle-op #:monolithic-compile-bundle-op #:monolithic-load-bundle-op 11027 11084 #:lib-op #:dll-op #:deliver-asd-op #:program-op #:image-op 11028 11085 #:monolithic-lib-op #:monolithic-dll-op #:monolithic-deliver-asd-op … … 11186 11243 #+(or ecl mkcl) 11187 11244 (progn 11188 (pushnew '("fasb" . si::load-binary) si: *load-hooks* :test 'equal :key 'car)11245 (pushnew '("fasb" . si::load-binary) si::*load-hooks* :test 'equal :key 'car) 11189 11246 11190 11247 #+(or (and ecl win32) (and mkcl windows))
Note: See TracChangeset
for help on using the changeset viewer.