1. 16 Jul, 2017 2 commits
  2. 14 Jul, 2017 1 commit
    • Robert Goldman's avatar
      Allow user to disable backtraces. · 992e37c7
      Robert Goldman authored
      In some cases the backtraces aren't useful, and obscure more important
      information.  Now the user can disable them with lisp variable or
      environment variable.
      
      (cherry picked from commit 99422ff9238f72fbad557e8d716bee9df2e84d7c)
      992e37c7
  3. 29 Jun, 2017 2 commits
    • Robert Goldman's avatar
      Export DEFINE-OP. · 4c61a8c5
      Robert Goldman authored
      I couldn't think of a reason not to export this, in case someone wants
      to extend the implementation of the operation.
      4c61a8c5
    • Robert Goldman's avatar
      Better document include directives. · 2ab7c646
      Robert Goldman authored
      Added :read-file-line to the documentation.
      Add "version-specifier" rules to the defsystem grammar.
      Clarify the :at option discussion (it's the option as a whole that is
      optional, not just the keyword).
      2ab7c646
  4. 23 May, 2017 35 commits
    • Francois-Rene Rideau's avatar
      Bump version to 3.3.0 · e0d51572
      Francois-Rene Rideau authored
      e0d51572
    • Francois-Rene Rideau's avatar
      Add feature :asdf3.3, drop :asdf-package-system · 0950709a
      Francois-Rene Rideau authored
      Add feature :asdf3.3 because it will be needed e.g. for with-asdf-session.
      
      Drop feature :asdf-package-system that shouldn't be used,
      and isn't used in Quicklisp indeed (good).
      The official feature to use is :asdf3.1 instead.
      0950709a
    • Francois-Rene Rideau's avatar
    • Francois-Rene Rideau's avatar
      1ad4042c
    • Francois-Rene Rideau's avatar
      Replace reset-system by reset-system-class · fdda4604
      Francois-Rene Rideau authored
      Drop any information in undefined-system that isn't in proto-system.
      fdda4604
    • Francois-Rene Rideau's avatar
      Make asdf/contrib/debug-plan loadable as system · 56d0b8ba
      Francois-Rene Rideau authored
      And add more debug information.
      56d0b8ba
    • Francois-Rene Rideau's avatar
      Deprecate require-system · d3ce9760
      Francois-Rene Rideau authored
      d3ce9760
    • Francois-Rene Rideau's avatar
      More backward compatible REQUIRE behavior · d9c15849
      Francois-Rene Rideau authored
      Don't warn when OPERATE is called by REQUIRE.
      
      Don't use :FORCE-NOT in REQUIRE-SYSTEM (only check that
      the required system isn't present yet; otherwise inherit ambient force-not).
      d9c15849
    • Francois-Rene Rideau's avatar
      5736a333
    • 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
      Add test case for spurious rebuild in ddo · 06bcb1f2
      Francois-Rene Rideau authored
      I noticed that some systems, e.g. fast-io, will cause UIOP, CFFI, and
      everything that depends on it, to be constantly recompiled.
      Interestingly, this doesn't happen with any of the systems that fast-io
      directly depends on: alexandria, trivial-gray-streams, and static-vectors.
      And interestingly, the test case, once reduced, is exactly isomorphic to
      the test case already in test-defsystem-depends-on-phase-overlap.script:
      fast-io => main-system, alexandria => overlapping-dependency,
      static-vectors => intermediate-dependency, bazel => defsystem-dependency
      And indeed, adding a test for it detects the failure.
      06bcb1f2
    • 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
      Reproduce staging failure from cl-protobufs-tests · f85d3696
      Francois-Rene Rideau authored
      Add test case in test-defsystem-depends-on-phase-overlap.script for a failure
      observed when running (test-system "cl-protobufs"):
      the action (test-op "cl-protobufs") depends on (load-op "cl-protobufs"),
      which gets staged at level 0; it then depends on (test-op "cl-protobufs-tests")
      which defsystem-depends-on (load-op "cl-protobufs"), but it has already been
      staged, so traverse-action fails to re-stage it at higher priority for level 1,
      and fails to perform it before we're back to defsystem "cl-protobufs-tests".
      f85d3696
    • Francois-Rene Rideau's avatar
      Only warn in recursive calls to operate · 4e5cccf2
      Francois-Rene Rideau authored
      Don't error out but only warn when operate is recursively called.
      Too much legacy code uses load-system or require inside lisp files
      and/or perform methods.
      4e5cccf2
    • Francois-Rene Rideau's avatar
      Stop having asdf.asd depend on uiop.asd · 2cdd7104
      Francois-Rene Rideau authored
      A DEFINE-OP "asdf" shouldn't depend on a DEFINE-OP "uiop", or
      a circular dependency may be introduced by the "always load asdf first"
      behavior. Instead, have asdf/driver do a low-level copy of the components
      in uiop, rather than a transclusion of a system defined in a separate file.
      2cdd7104
    • 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
      Make test-force pass with asdf-tools · 68e0407f
      Francois-Rene Rideau authored
      TODO: understand what's going on there...
      68e0407f
    • 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
    • Francois-Rene Rideau's avatar
      Tweak some tests · 0aeb6ba8
      Francois-Rene Rideau authored
      0aeb6ba8
    • 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
      Add test for systems used in multiple phases · ab899bc4
      Francois-Rene Rideau authored
      Add test-defsystem-depends-on-phase-overlap.script (currently failing) to check
      that an action present in multiple phases will only be performed once.
      ab899bc4
    • Francois-Rene Rideau's avatar
      Replace *defined-systems* by *registered-systems* · a5345448
      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.
      a5345448
    • 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
      Introduce primary-system-p · 6688d26b
      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.
      6688d26b
    • Francois-Rene Rideau's avatar
      1a253e2f
    • 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
      Include DEFINE-OP in mark-component-preloaded · dd29916b
      Francois-Rene Rideau authored
      Move it to asdf/find-system.
      dd29916b
    • Francois-Rene Rideau's avatar
      876e4b86
    • 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