1. 23 May, 2017 7 commits
    • Francois-Rene Rideau's avatar
      5736a333
    • Francois-Rene Rideau's avatar
      Correctly track status of actions across phases · 40b86923
      Francois-Rene Rideau authored
      Do not perform an action twice in a session. Introduce three status bits
      that every action has in a given session, in addition to the stamp:
      KEEP-P (from previous session), DONE-P (and up-to-date, in this image),
      NEED-P (needed in this image as part of this session).
      
      BACKWARD INCOMPATIBILITY: Invert the meaning of NIL and T for STAMP,
      so that NIL means out-of-date. This makes our code conceptually nicer,
      and no one in Quicklisp uses our stamps, anyway. Still, beware.
      40b86923
    • Francois-Rene Rideau's avatar
      833980c2
    • Francois-Rene Rideau's avatar
      More refactoring of plan · fbe6d4f5
      Francois-Rene Rideau authored
      Move action-status wholly to plan, merge it with planned-action-status.
      Add a performable-p flag to plans.
      Simplify sequential-plan and required-components; have them use a separate
      function collect-action-dependencies for traversing the graph.
      Add a function action-up-to-date-p to check whether an action is up-to-date,
      without adding it to the plan if it wasn't.
      fbe6d4f5
    • Francois-Rene Rideau's avatar
      876e4b86
    • Francois-Rene Rideau's avatar
      Move node visit information from plan to session · aba8811b
      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.
      aba8811b
    • Francois-Rene Rideau's avatar
      Rename asdf/cache to asdf/session · c1a125bb
      Francois-Rene Rideau authored
      c1a125bb
  2. 19 Feb, 2017 1 commit
    • Francois-Rene Rideau's avatar
      Fix issue upgrading from 3.1.7 or earlier · 1a241a5c
      Francois-Rene Rideau authored
      To reproduce the bug, on sbcl, allegro, cmucl (and presumably all other
      implementations?) try:
      
      ASDF_UPGRADE_TEST_TAGS=3.1.7 \
      ASDF_UPGRADE_TEST_METHODS="'load-asdf-lisp'compile-load-asdf-upgrade" \
      make u l=sbcl ; \
      make t l=sbcl t=test-utilities.script
      
      TEST ABORTED: These two expressions fail comparison with EQUAL:
       NIL evaluates to NIL
       (FISHY-ASDF-EXPORTED-SYMBOLS) evaluates to
       (("ASDF/INTERFACE" "REQUIRED-COMPONENTS")
        ("ASDF/PLAN" "TRAVERSE-SUB-ACTIONS" "REQUIRED-COMPONENTS" "TRAVERSE-ACTIONS"))
      
      After loading the FASL compiled from 3.1.7 (or earlier ASDF3),
      the symbols are unexported in their old package ASDF/ACTION,
      and the same-named symbols in ASDF/PLAN (and ASDF/INTERFACE)
      are fresh symbols that are not fbound.
      
      The solution is for ASDF/ACTION to :UNINTERN those symbols.
      ASDF/PLAN cannot include ASDF/ACTION in its :RECYCLE clause,
      because it comes *after* ASDF/ACTION, and that would negatively affect
      other symbols from ASDF/ACTION that ASDF/PLAN imports (at least on CCL).
      1a241a5c
  3. 18 Jan, 2017 1 commit
    • Francois-Rene Rideau's avatar
      Stop warning in define-convenience-methods explain · 64d01eca
      Francois-Rene Rideau authored
      The convenience methods recursively call explain, which cause a style-warning
      if the compiler-macro is already defined, and a different one if it is defined
      afterwards. The solution is to declare the function notinline in the body of
      the convenience methods.
      
      This fixes test-clean-load on sbcl, and more generally
      hushes loading asdf.lisp from source.
      64d01eca
  4. 09 Jan, 2017 1 commit
  5. 07 Dec, 2016 1 commit
    • Francois-Rene Rideau's avatar
      Support for notification that some functions are deprecated. · c1652787
      Francois-Rene Rideau authored
      Deprecation goes through the following phases:
      style-warning, warning, cerror, functionality removed.
      Automatically upgrade the deprecation phase at every minor version change
      (not every release).
      
      Include minimal testing of the deprecation functionality.
      Add deprecation TODO items.
      
      Deprecation will start with 3.2.
      c1652787
  6. 26 Nov, 2016 1 commit
    • Francois-Rene Rideau's avatar
      Get fully rid of operation initargs · 6bb7aa6b
      Francois-Rene Rideau authored
      ASDF never supported operation initargs, and its component-operation-times
      always assumed that two operations of the same class were equivalent.
      Make it explicitly so and enforce it.
      
      Do NOT pass keys from operate to make-instance operation.
      Catch any attempt to create an operation with initargs and raise an error.
      Make sure no operation class has any slot that isn't :allocation :class
      (with some MOP magic we could do it in at class definition time,
      but that's not portable enough and we don't want to reimplement closer-mop
      or depend on it.)
      
      This is a preliminary to allowing CONS instead of NODE-FOR to identify actions,
      whether or not we want to allow some form of initargs in the future.
      
      Remove unused COMPILE-OP-FLAGS and COMPILE-OP-PROCLAMATIONS.
      Remove MAKE-BUILD that depended on the unsupported operation initargs.
      Use PROGRAM-OP on a PROGRAM-SYSTEM instead.
      Remove the confusingly misnamed and not-so-useful BUILD-SYSTEM function;
      it can be done better in userland.
      6bb7aa6b
  7. 11 Nov, 2016 1 commit
    • Robert Goldman's avatar
      Add pseudo-accessors to ACTIONs. · bbf1914a
      Robert Goldman authored
      ACTIONs are currently simply CONS cells.
      Previously these were accessed with CAR and CDR and made with CONS.
      Now there are "accessor" functions, ACTION-OPERATOR and
      ACTION-COMPONENT.  Also MAKE-ACTION.
      The intention is to make the ASDF code more readable.
      bbf1914a
  8. 31 Oct, 2016 1 commit
  9. 29 Oct, 2016 1 commit
    • Robert Goldman's avatar
      Enforce use of MAKE-OPERATION. · 1e3471c6
      Robert Goldman authored
      Check for and reject attempts to directly invoke MAKE-INSTANCE on
      OPERATION classes.
      Add a test for the error condition.
      Squashed commit of the ENFORCE-MAKE-OPERATION branch.
      1e3471c6
  10. 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
  11. 25 Sep, 2016 2 commits
  12. 21 Sep, 2016 1 commit
  13. 20 Sep, 2016 1 commit
  14. 10 Jan, 2016 1 commit
  15. 08 Jan, 2016 1 commit
  16. 24 Mar, 2014 2 commits
  17. 14 Mar, 2014 1 commit
    • Francois-Rene Rideau's avatar
      Accept strings as OPERATION class designators, read in package ASDF. · 50f2420f
      Francois-Rene Rideau authored
      Refactor COMPONENT class designators to use the same general method.
      As a substrate, goodbye uiop/utility:find-class*, hello uiop/utility:coerce-class.
      
      In the operate upgrade handler, assume there is
      no uninterning and renaming packages away anymore going forward.
      
      Add tests for strings as class designators using defsystem-depends-on.
      50f2420f
  18. 13 Mar, 2014 1 commit
  19. 28 Feb, 2014 1 commit
  20. 23 Feb, 2014 1 commit
  21. 18 Feb, 2014 1 commit
  22. 12 Feb, 2014 1 commit
  23. 31 Jan, 2014 1 commit
  24. 27 Jan, 2014 4 commits
    • Francois-Rene Rideau's avatar
      Make build-op a non-propagating-operation. · 888c6fd1
      Francois-Rene Rideau authored
      Paper over GCL failure in test-operation-classes; tweak test.
      Tweak Makefile for one more test.
      888c6fd1
    • 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
      Implement the discussed non-monotonic inheritance of propagation traits. · eb2da723
      Francois-Rene Rideau authored
      For backward compatibility with ASDF 2, an operation that doesn't explicitly
      inherit from one of the propagation classes or non-propagating-operation
      will be downward- and sideway- propagating, with a warning at instantiation.
      Inheriting from non-propagating and a propagating class at the same time
      yields an error, not a warning.
      Update packages and tests.
      eb2da723
    • 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
  25. 26 Jan, 2014 1 commit
  26. 21 Jan, 2014 4 commits
    • Robert P. Goldman's avatar
      0e20656a
    • Robert P. Goldman's avatar
      Fixed bug in error signaling. · cfa50ffd
      Robert P. Goldman authored
      cfa50ffd
    • Robert P. Goldman's avatar
    • Robert P. Goldman's avatar
      Raise a continuable error when instantiating an unpatched OPERATION. · 8fa22cd5
      Robert P. Goldman authored
      The behavior of OPERATION has changed: previously it would act roughly like
      LOAD-OP, and automatically have dependencies, but now that behavior has been
      removed in a clean-up. In order to support programmers, we attempt to detect
      programmer-defined OPERATION subclasses and signal an error if we believe they
      are unpatched.
      
      The new dependency-handling is implemented in the classes DOWNWARD-OPERATION,
      UPWARD-OPERATION, SIDEWAY-OPERATION, SELFWARD-OPERATION, and the newly-added
      NON-PROPAGATING-OPERATION.
      
      To detect unpatched OPERATION classes, when we are instantiating an OPERATION,
      we check to make sure it has one of the above classes as a superclass.  If it
      does not, we raise a continuable error.  This is done in an INITIALIZE-INSTANCE
      :BEFORE method on OPERATION. We considered trying to detect the definition of
      OPERATION subclasses, but because the MOP is not standard, that approach was
      rejected as infeasible.
      
      Add NON-PROPAGATING-OPERATION as superclass where needed.
      
      Further checks and some documentation.
      
      Thanks to Fare for advice.
      
      Check that no OPERATION is both propagating and non-propagating.
      
      Thanks to Fare for the suggestion.
      8fa22cd5