1. 16 Jul, 2017 2 commits
    • Robert Goldman's avatar
      Remove unnecessary test. · 1ae2c79d
      Robert Goldman authored
      Fare points out that checking the input-files against the
      component-done-time is not necessary: it's done elsewhere.
      1ae2c79d
    • Robert Goldman's avatar
      Fix bug detecting change in read files. · 18b8cfe3
      Robert Goldman authored
      Files read in by READ-FILE-LINE or READ-FILE-FORM were not being
      tracked.  With this change, they are noticed and added to
      ADDITIONAL-INPUT-FILES for a component and operation.
      
      Adding this tracking led to introduction of a new dependency in
      asdf.asd.
      
      Also, added a comparison between the operation-time and the latest
      update time for the input files of a component and operation.
      Previously, even if the input files were newer than the last operation
      time, if there were no output files, ASDF would incorrectly think the
      operation was up-to-date.
      18b8cfe3
  2. 23 May, 2017 14 commits
    • Francois-Rene Rideau's avatar
      Fix bogus mark-status-needed, merge-action-status · 7d89f342
      Francois-Rene Rideau authored
      Fix mark-status-needed to be a special-purpose action-status-or,
      and not use an action-status-and that merge-action-status is.
      This was causing level escalation to wholly invalidate some actions
      and have them rebuild all the time.
      
      Fix merge-action-status which is a action-status-and;
      also fix its documentation. That is minor, but still.
      
      f plan
      7d89f342
    • Francois-Rene Rideau's avatar
      plan: implement phase level escalation · f62e6fe0
      Francois-Rene Rideau authored
      Track at which level of nested calls to OPERATE a not-done action is needed;
      if it is needed at a higher level than previously traversed, then traverse again
      to schedule it (and its transitive dependencies) to be done in the higher level.
      This fixes cases, such as in (test-system "cl-protobufs-tests"), where a library
      was already marked as needed at a low level of OPERATE, but if actually needed
      at higher level due to a defsystem-depends-on, and was previously not loaded
      early enough (after this plan refactoring).
      f62e6fe0
    • Francois-Rene Rideau's avatar
      Export mark-as-done and action-already-done-p · dd518370
      Francois-Rene Rideau authored
      Refactor plan to define and export two functions that make POIU's life easier.
      dd518370
    • Francois-Rene Rideau's avatar
      Use NIL for actions visited with status unknown · 563f6bc6
      Francois-Rene Rideau authored
      Use NIL instead of T as the status stored in the visited-actions hash-table
      when the status is unknown, and check whether it (or a known status) is present
      using the second value of GETHASH. When a known value is sought, keep checking
      for the first value.
      563f6bc6
    • Francois-Rene Rideau's avatar
      a21342dd
    • 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
      Fix compute-action-stamp when stamp is NIL · 03815785
      Francois-Rene Rideau authored
      Stop unnecessarily re-performing initial input-less actions.
      
      Also fix (setf (action-status nil o c) ...),
      which therefore seems not to have been previously used.
      03815785
    • Francois-Rene Rideau's avatar
      Separate forcing from plan · fe835596
      Francois-Rene Rideau authored
      Move forcing into its own file.
      Include forcing, not plan, among session slots.
      Share a toplevel forcing for all performable plans.
      Have REQUIRE use load-system, not require-system,
      so as not to conflict with session forcing options.
      Don't call with-asdf-session outside the test scripts themselves.
      Cleanup a few scripts accordingly, and beyond.
      fe835596
    • Francois-Rene Rideau's avatar
      833980c2
    • Francois-Rene Rideau's avatar
      Move flag for asdf upgrade from operate to session. · 0796586f
      Francois-Rene Rideau authored
      This should notably prevent recording of a circular dependency of asdf on asdf.
      0796586f
    • 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
      Refactor load-asd to perform a define-op · 7f92cab9
      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).
      7f92cab9
    • 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
  3. 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
  4. 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
  5. 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
  6. 29 Oct, 2016 1 commit
    • Francois-Rene Rideau's avatar
      Fix bundle-op and concatenate-source-op file order · 0e0a851b
      Francois-Rene Rideau authored
      Fix direct-dependencies, that was reversed from file order,
      leading to inversions in the order of input files for bundle-op and
      concatenate-source-op as compared to what a user would expect.
      
      Check all the bootstrap file lists and provide an *actionable* error message
      when discrepancies are detected.
      
      Also fix bundle's use of required-components to be in line with an old comment.
      And remove the comment.
      0e0a851b
  7. 25 Sep, 2016 2 commits
  8. 22 Sep, 2016 2 commits
  9. 21 Sep, 2016 1 commit
  10. 20 Sep, 2016 1 commit
  11. 14 Sep, 2016 1 commit
    • Francois-Rene Rideau's avatar
      Eagerly register preloaded systems · d33ab0bc
      Francois-Rene Rideau authored
      Change clear-system accordingly, and simplify how we handle immutable systems.
      Add or improve documentation for several of the functions involved.
      
      Also stop advertising asdf::*immutable-systems*;
      instead promote asdf:register-immutable-system.
      
      This is a preliminary to fixing component-loaded-p for preloaded systems.
      d33ab0bc
  12. 08 Jan, 2016 1 commit
  13. 17 Sep, 2015 1 commit
  14. 07 Mar, 2014 2 commits
  15. 05 Mar, 2014 2 commits
  16. 28 Feb, 2014 1 commit
  17. 21 Feb, 2014 1 commit
  18. 31 Jan, 2014 1 commit
  19. 28 Jan, 2014 1 commit
  20. 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
  21. 26 Jan, 2014 1 commit