1. 18 Sep, 2018 1 commit
    • Didier Verna's avatar
      Support for system virtual slots. · e22122d7
      Didier Verna authored
      A system virtual slot is a slot the value of which is read either from the
      system directly, or potentially from its primary system if needed. It avoids
      duplicating meta-information (license, author etc.) in secondary systems.
      
      As a side-effect of this implementation, the functions
      system{-long}-description now behave virtually, as opposed to
      component{-long}-description. Also, a new function called system-version is
      provided, which also behaves virtually, as opposed to component-version.
      
      2018-09-18  Didier Verna  <didier@didierverna.net>
      
      	* interface.lisp (:asdf/interface): Export SYSTEM-VERSION.
      	* system.lisp (:asdf/system): Ditto.
      	(system): Only automatically define generic writers for virtual
      	slots.
      	(*system-virtual-slots*): New variable. List the virtual slot names.
      	(system-virtual-slot-value): New function. General virtual slot
      	reader.
      	(define-system-virtual-slot-reader): New macro. Define specific
      	virtual slot readers based on the above function.
      	(define-system-virtual-slot-readers): New macro. Define all
      	specific virtual slot readers.
      	(system-license): New ad-hoc virtual slot reader, defined manually
      	in addition to system-licenCe (note the 'c').
      e22122d7
  2. 03 Jan, 2018 1 commit
    • Francois-Rene Rideau's avatar
      Better handle misnamed secondary systems · 069cd2a6
      Francois-Rene Rideau authored
      Distinguish between "syntactic" primariness ("foo" vs "foo/bar" names) and
      "semantic" primariness (system foo in foo.asd vs system foo in bar.asd),
      and use the right one at all right place: when checking if a system is
      up-to-date, what matters is that the old primary system is at the same
      place as before, and is up-to-date.
      
      Thinking about it, there is a lingering bug in case a definition-dependency
      are up-to-date, but were modified after the definition was read.
      What is really needed is a prepare-define-op. Sigh.
      069cd2a6
  3. 20 Jul, 2017 7 commits
    • Francois-Rene Rideau's avatar
      Replace reset-system by reset-system-class · d9f2baa8
      Francois-Rene Rideau authored
      Drop any information in undefined-system that isn't in proto-system.
      d9f2baa8
    • Francois-Rene Rideau's avatar
      Replace *defined-systems* by *registered-systems* · 206c1248
      Francois-Rene Rideau authored
      Use a simple table *registered-systems* mapping name to system,
      and remember timestamps in the COMPONENT-OPERATION-TIME for DEFINE-OP,
      instead of the original *defined-systems* table mapping name to
      cons of timestamp and system.
      206c1248
    • Francois-Rene Rideau's avatar
      51accff1
    • Francois-Rene Rideau's avatar
      Introduce primary-system-p · 01d921ae
      Francois-Rene Rideau authored
      Tweak primary-system-name to extract a component's system's primary-name.
      primary-system-p recognizes only systems (not random component) and
      strings that name them.
      01d921ae
    • Francois-Rene Rideau's avatar
      3d0d07c3
    • Francois-Rene Rideau's avatar
      Refactor load-asd to perform a define-op · a3b85c8b
      Francois-Rene Rideau authored
      Split asdf/system-registry away from asdf/find-system: the former defines
      the internal *defined-systems* table and the search mechanism, whereas
      the latter keeps the find-system methods, but also defines a new
      define-op operation, on load-asd will call operate.
      
      Reorder dependencies accordingly.
      
      Have forcing come from the plan, so as to not force again actions from
      dependencies that were already performed in a subcall to operate.
      
      Accept asdf.asd from the same version, so asdf.asd doesn't get removed
      at the very next call to operate (which may now come implicitly
      at the least provocation).
      a3b85c8b
    • Francois-Rene Rideau's avatar
      Move node visit information from plan to session · a9c22442
      Francois-Rene Rideau authored
      Significantly refactor plan internals.
      
      Move visited-actions, visiting-action-set, visiting-action-list,
      total-action-count, planned-action-count, planned-output-action-count
      from plan to session (remove the plan- prefix to accessors).
      
      Move sysdef-error from component to session.
      
      Remove plan as a parameter of action-valid-p (made simple defun)
      and while-visiting-action (both moved to action), but also
      map-direct-dependencies, reduce-direct-dependencies, direct-dependencies.
      
      Rename *default-plan-class* to *plan-class*,
      plan-record-dependency to record-dependency,
      plan-action-status to action-status
      plan-forced (accessor) to forced, plan-forced-not (accessor) to forced-not.
      
      Introduce define-op, and visit a suitable action while loading an asd file.
      Accumulate inner operate dependencies in a slot definition-dependencies of
      a registered system or a newly registered undefined-system.
      
      Introduce reset-session or reset-session-visited in various tests,
      so operations aren't considered as layered atop each other, but
      as restarting from a fresh planning session.
      
      Use with-asdf-session in required-components, make-plan.
      
      Stop using node-for, use cons directly, now that operations are safe.
      
      Export format-action from action.
      
      Move some conditions and generic functions around and reorder dependencies.
      a9c22442
  4. 16 Oct, 2016 1 commit
    • Francois-Rene Rideau's avatar
      Stop fmakunbound'ing defgeneric's past the upgrade trigger · 8e0ec0e9
      Francois-Rene Rideau authored
      If we fmakunbound a defgeneric, we lose any user-defined method on the function
      and must therefore reload any and every system that might have defined methods
      on it. We must therefore not fmakunbound past the forward compatibility upgrade
      trigger, only before. Adjust our code accordingly. Conservative bounds are used
      in *oldest-forward-compatible-asdf-version* and redefined-functions that should
      probably be refined after some inspection of old versions.
      
      This is a response to https://bugs.launchpad.net/asdf/+bug/1631771
      8e0ec0e9
  5. 25 Sep, 2016 2 commits
  6. 20 Sep, 2016 2 commits
  7. 28 Feb, 2014 2 commits
  8. 21 Feb, 2014 2 commits
  9. 19 Feb, 2014 1 commit
  10. 27 Jan, 2014 2 commits
    • Francois-Rene Rideau's avatar
      More cleanups: · c7d1ce63
      Francois-Rene Rideau authored
      * Add some comments on TRAVERSE-ACTION; expand those on SOURCE-FILE-TYPE.
      * Remove a few unnecessary input-files or output-files methods
      * Remove (declare (ignorable ...)) for specialized arguments. Specialize a few arguments to T.
      * Remove most when-upgrading methods, since we drop data on old incompatible ASDFs.
      c7d1ce63
    • Francois-Rene Rideau's avatar
      Cleanups done or initiated during the ASDF Walkthrough. · f71a8b99
      Francois-Rene Rideau authored
      * load-op needn't be sideway, its sideway dependencies are already provided by prepare-op
      * compile-op should use compile-op (default) not load-op as its downward-operation.
      * no need for an input-files method for prepare-op, nil is the global default.
      * Some documentation for compute-action-stamp.
      * Don't skip upgrade from 1.x on Allegro anymore, since we now correctly punt.
      * Instead of asdf/package:define-package, use the canonical name uiop/package:define-package
      f71a8b99
  11. 20 Dec, 2013 1 commit
  12. 09 Oct, 2013 1 commit
  13. 06 Feb, 2013 2 commits
    • Francois-Rene Rideau's avatar
      2.28.1: various upgrade issues · d78df051
      Francois-Rene Rideau authored
      1- To make life easier on Xach, stop requiring asdf.lisp to be loaded as source
      before it's compiled. Instead, wrap each and every single form in an eval-when,
      most of the time via the with-upgradability macro that also transforms
      defun into defun* and defgeneric into defgeneric*.
      Causes massive reindentation :-(
      
      2- Have a proper :version for fallback systems.
      Will make systems that check the version happier.
      
      3- protect a condition with #+sb-eval. Fixes lp#1116408.
      
      4- Protect warnings-file methods with dynamic when *warnings-file-type*
      rather than static #+.
      d78df051
    • Francois-Rene Rideau's avatar
      2.28.1: various upgrade issues · 1e4bafdb
      Francois-Rene Rideau authored
      1- To make life easier on Xach, stop requiring asdf.lisp to be loaded as source
      before it's compiled. Instead, wrap each and every single form in an eval-when,
      most of the time via the with-upgradability macro that also transforms
      defun into defun* and defgeneric into defgeneric*.
      Causes massive reindentation :-(
      
      2- Have a proper :version for fallback systems.
      Will make systems that check the version happier.
      
      3- protect a condition with #+sb-eval. Fixes lp#1116408.
      
      4- Protect warnings-file methods with dynamic when *warnings-file-type*
      rather than static #+.
      1e4bafdb
  14. 01 Feb, 2013 1 commit
  15. 31 Jan, 2013 1 commit
  16. 29 Jan, 2013 1 commit
    • Francois-Rene Rideau's avatar
      2.26.166: Debug a define-package bug. · aa031e18
      Francois-Rene Rideau authored
      ENSURE-EXPORTED was exporting the wrong symbol via EXPORT*.
      Also, backward compatibility with systems (i.e. cxml) that directly access
      the relative-pathname slot of a system the ASDF 1 way,
      instead of using system-relative-pathname.
      Eliminate the last use of merge-pathnames.
      aa031e18
  17. 27 Jan, 2013 2 commits
    • Francois-Rene Rideau's avatar
      2.26.154: cache builtin-system-p for a big speedup. · 56d84e7a
      Francois-Rene Rideau authored
      We were checking it all the time in forced-p.
      Also cache nil-pathname and root-pathname.
      56d84e7a
    • Francois-Rene Rideau's avatar
      2.26.149: next release will be ASDF 3 after all, not ASDF 2.27. · 0f685693
      Francois-Rene Rideau authored
      Introduce some backward incompatibility with features unused in quicklisp:
      * Don't create a temporary package every time you load a .asd;
       instead, load everything from same package ASDF-USER,
       that :use's asdf/common-lisp asdf/package asdf/interface
       That's the Common Lisp way, what with COMMON-LISP-USER.
       If you want a private package, use DEFPACKAGE or DEFINE-PACKAGE.
      * operation-description is renamed action-description.
       No one was using it in quicklisp, and no one was specializing it
       except cl-protobufs, which I'll fix.
      * component-properties and component-property are gone.
       If you want a new property, create your own subclass of component.
      
      Also, have a load-asd function with name in keyword arguments,
      rather than load-sysdef function that requires the name.
      0f685693
  18. 25 Jan, 2013 1 commit
    • Francois-Rene Rideau's avatar
      2.26.146: restore W-C-U around perform-plan for backward compatibility. · db1cebf7
      Francois-Rene Rideau authored
      Also, move entry-point into system and remove class bundle-system.
      I was tempted to have test-op call it, but then it's a problem
      when the base system has a non-test entry-point, so we probably need
      a separate test-entry-point slot.
      
      Update the default *asdf-debug-utility* to do more of the right thing.
      
      Update changelog.
      
      Tweak package to avoid triggering a bug in ABCL trunk.
      db1cebf7
  19. 24 Jan, 2013 1 commit
    • Francois-Rene Rideau's avatar
      2.26.142: Update the system definitions. · 3abb3e42
      Francois-Rene Rideau authored
      A better asdf.asd.
      
      Refactor the preloaded system mechanism, use it for cl-launch 3.21.2.
      
      Rename bundle-pathname to build-pathname, move it from bundle-system to system.
      
      Rename the gcl<2.7 feature gcl2.6. Die on gcl2.5 and earlier.
      Don't even try to compile-file asdf using gcl 2.6, just load the .lisp.
      
      Rename asdf/compatibility to asdf/common-lisp, exporting only CL symbols.
      Fix define-package to correctly handle exporting of NIL.
      
      Also, make it work with Genera, with #'(lambda instead of (lambda,
      and using lisp:loop (via a macro loop*) when destructuring is required.
      
      Document more 2.27 changes in changelog.
      
      If there is no :pathname and no load-pathname,
      do NOT have a system pathname take defaults from *default-pathname-defaults*,
      but make it NIL.
      3abb3e42
  20. 21 Jan, 2013 1 commit
  21. 20 Jan, 2013 2 commits
    • Francois-Rene Rideau's avatar
    • Francois-Rene Rideau's avatar
      2.26.126: debugging ecl, upgrade, etc. · 8ec5317d
      Francois-Rene Rideau authored
      Don't key upgrade attempt on source-registry, since things can also change
      in the central-registry, etc.
      Also rename required-files to direct-dependency-files
      Improve the new convenience function pattern to work with operation initargs.
      Implement getcwd on all platforms.
      Actually catch sb-grovel messages.
      
      Tests: make u l=ecl instead of make test-upgrade lisp=ecl
      Tests: put the setup around the script, not inside;
      Tests: start using globals, much easier for debugging
      8ec5317d
  22. 19 Jan, 2013 2 commits
  23. 18 Jan, 2013 2 commits
    • Francois-Rene Rideau's avatar
      2.26.119: conditionalize all truenaming on *resolve-symlinks*. · 072692f1
      Francois-Rene Rideau authored
      jyknight will be happy. Passes test, when still resolving.
      072692f1
    • Francois-Rene Rideau's avatar
      2.26.106: a new primary/secondary convention for subsystems and more · a730852a
      Francois-Rene Rideau authored
      A system named foo/bar will be looked up in a registered file foo.asd.
      This makes it possible to sensibly name several systems in a .asd file
      and still have asdf find them all by name.
      We now use it to not have the asdf header be part of asdf-driver.
      
      A new generic operation build-op makes it possible to deal with
      the fact that the default operation for systems need not be load-op,
      yet that the end-user does not want to have to know the exact operation
      for each of the system he uses.
      
      ensure-pathname has been improved again, and its clients tweaked.
      
      remove-keys was made more sensible by using EQL rather than STRING-EQUAL.
      
      :version need not take the first form in a file, but can take
      a path to a subform. This makes it possible to get the exact subform
      in a Lisp source file that has the string.
      See SUB-OBJECT for how these paths work.
      
      Cleanup of the semantics of ENSURE-FUNCTION on CONSes: use APPLY, not EVAL.
      a730852a
  24. 16 Jan, 2013 1 commit
    • Francois-Rene Rideau's avatar
      2.26.100: checkpointing a lot of progress. · aa5cba5d
      Francois-Rene Rideau authored
      * Pathname support has been cleaned up, yet again,
       extending and renaming COERCE-PATHNAME into PARSE-UNIX-NAMESTRING,
       also ENSURE-PATHNAME, many docstrings, and plenty of small enhancements.
      * Bundles were refactored to take advantage of the new, more sensible,
       component-depends-on semantics.
      * Image support was cleaned up again, and program-op was implemented
       to produce a standalone executable on supported platforms;
       a working hello-world-example is included amongst tests.
      * The *compile-file-function* indirection was removed, with the
       ECL and MKCL object file support
       being folded into compile-file* instead.
      * systems now can have NIL as component-pathname,
       instead of providing a non-sensible bogus pathname
       when no sensible pathname was determined.
       Most of our pathname functions have sensible default behavior
       when provided NIL instead of a pathname as an argument.
      aa5cba5d