1. 05 Aug, 2018 1 commit
  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 Oct, 2017 1 commit
    • Francois-Rene Rideau's avatar
      Rename stamp to timestamp in uiop/utility · c6654583
      Francois-Rene Rideau authored
      Restore backward compatibility with older versions of ASDF (before 3.3.0)
      by renaming stamp< and its friends to timestamp<, etc.
      Sometime in the lead-up to ASDF 3.3.0, I changed the encoding of infinities
      from NIL is -infinity and T is +infinity to T is -infinity and T is +infinity
      which made the code notably nicer on the ASDF side, because file-write-date
      would return directly the correct result instead of having to constantly switch
      between inverse conventions. However --- big mistake --- I kept the same
      function name, after checking that the functions had no user in Quicklisp,
      no one who had ever discussed them but me, and no documentation before 3.2.0
      except a single comment line for the entire family of functions.
      This doesn't matter as long as ASDF and UIOP are kept in synch, but such is
      not the case with Quicklisp, where Xach both welcomes recent UIOP releases
      but refuses to include updates to ASDF itself. Then, loading a new UIOP
      with reverse conventions totally confuses the old ASDF, and causes spurious
      rebuilds of everything after UIOP is loaded -- multiple times if present
      in multiple phases (that and slower build times is how Xach noticed the bug).
      The solution adopted is to give a new name to the functions with a different
      convention -- timestamp< instead of stamp<, and so on. Therefore,
      the new ASDF 3.3.1 will expect the new convention from UIOP 3.3.1,
      that will no longer overwrite the functions from ASDF 3.2.1 and older with
      backward-incompatible variants. If an old ASDF 3.2.1 or earlier loads
      a newer UIOP 3.3.1 or later, it will keep using the old functions:
      the symbols for these functions will be uninterned, but
      the values for these functions which won't be clobbered anymore.
      Backward compatibility is a strong requirement not to to break lightly,
      not even in a subtle way, not even if "nobody else is using it" ---
      an older version of ASDF is already "somebody else" with respect to UIOP.
      c6654583
  4. 12 Oct, 2017 1 commit
    • Francois-Rene Rideau's avatar
      Preserve syntax tables in perform define-op · 4e75d4d0
      Francois-Rene Rideau authored
      ASDF 3.3.0 introduced an unwanted discrepancy from 3.2.1, whereby
      the readtable and print-pprint-dispatch table were not preserved
      while loading a .asd file, which caused bad libraries like puri
      to try to corrupt the standard readtable when loaded as
      defsystem-depends-on dependency or equivalent.
      See bug report on the asdf-devel mailing-list.
      The real solution is to redo the syntax-control branch.
      4e75d4d0
  5. 26 Jul, 2017 1 commit
    • Francois-Rene Rideau's avatar
      Fix more upgrade issues · 65d16a93
      Francois-Rene Rideau authored
      Use :recycle of :asdf/find-system in :asdf/source-registry to migrate symbol
      initialize-source-registry that moved from that previous packages
      (otherwise, upgrade from 3.2.1 breaks on all lisps).
      
      Also :recycle :asdf/action in :asdf/plan for required-components and
      traverse-action. But avoid interning plan in asdf/action so it doesn't
      confuse clisp when upgrading from 2.26(!).
      65d16a93
  6. 24 Jul, 2017 1 commit
    • Francois-Rene Rideau's avatar
      Fix upgrade issues on ABCL and ECL · 815a1833
      Francois-Rene Rideau authored
      Fix upgrade on ABCL, that failed to properly process the fact that
      initialize-source-registry had moved from asdf/find-system to
      asdf/source-registry, yet was called in a cleanup function.
      
      Fix upgrade on ECL, that failed to correctly process that
      find-component was fmakunbound.
      It also seems to clear *central-registry* in some upgrade scenarios
      (that also moved from find-system to system-registry).
      
      Tweak script-support to not unconditionally frob-packages
      when ASDF isn't loaded yet, and to not include the asdf directory
      when loading and testing only UIOP.
      815a1833
  7. 20 Jul, 2017 16 commits
    • Robert Goldman's avatar
      Fix bug detecting need to reload defsystem. · aca68cf1
      Robert Goldman authored
      Previously, if one bumped a version number that was included into a
      system definition using :READ-FILE-FORM or :READ-FILE-LINE, ASDF would
      not notice the change (so it could, for example, fail to recognize that
      a depended-on system has had its version number bumped and now satisfies
      a new :VERSION requirement).
      
      This was fixed by adding ADDITIONAL-INPUT-FILES to the object model.
      These serve the purpose of giving a place other than INPUT-FILES for ASDF
      to stash input files that it "notices" on its own (e.g., when processing
      :READ-FILE-<FOO>).  ASDF can't stash such files in INPUT-FILES, because
      it must leave the INPUT-FILES primary methods open for users to
      override.
      aca68cf1
    • Francois-Rene Rideau's avatar
      08c2dee8
    • Francois-Rene Rideau's avatar
      More backward compatible REQUIRE behavior · bcfbac2f
      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).
      bcfbac2f
    • Francois-Rene Rideau's avatar
      Only warn in recursive calls to operate · 0e3bdbb2
      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.
      0e3bdbb2
    • Francois-Rene Rideau's avatar
      Correctly track status of actions across phases · 1aec9162
      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.
      1aec9162
    • 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
      Separate forcing from plan · 897a142b
      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.
      897a142b
    • Francois-Rene Rideau's avatar
      51accff1
    • Francois-Rene Rideau's avatar
      Move flag for asdf upgrade from operate to session. · 017cb992
      Francois-Rene Rideau authored
      This should notably prevent recording of a circular dependency of asdf on asdf.
      017cb992
    • 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
      Include DEFINE-OP in mark-component-preloaded · 604f5422
      Francois-Rene Rideau authored
      Move it to asdf/find-system.
      604f5422
    • 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
    • Francois-Rene Rideau's avatar
      Introduce an *asdf-session* that may contain more than a cache. · f98aaa6b
      Francois-Rene Rideau authored
      Replace with-asdf-cache with with-asdf-session.
      Introduce *asdf-session-class* to hold the class of the session.
      Introduce caching-cache, currently the only session class,
      that only contains a cache, for now.
      f98aaa6b
    • Francois-Rene Rideau's avatar
      Rename asdf/cache to asdf/session · 49dbfc0c
      Francois-Rene Rideau authored
      49dbfc0c
  8. 31 Oct, 2016 1 commit
  9. 25 Sep, 2016 3 commits
    • Francois-Rene Rideau's avatar
      Have system-source-file accept NIL as argument. · 7b05f832
      Francois-Rene Rideau authored
      Simplify find-system and a test accordingly.
      
      Also, group map-systems with other related functions.
      7b05f832
    • Francois-Rene Rideau's avatar
      Fix the upgrade hooks · 9b431ca3
      Francois-Rene Rideau authored
      The order in which the upgrade fixups were called wasn't very robust.
      We need to first get a list of systems being defined, then
      clear defined systems (but not asdf, and *neither uiop* that asdf depends on),
      then upgrade the configuration, and *finally* reload any of the systems being
      defined (including their defsystem-depends-on dependencies!),
      which means this all has to be coordinated within the same function.
      9b431ca3
    • Francois-Rene Rideau's avatar
      Remove *post-upgrade-restart-hook* · 3dd1f67d
      Francois-Rene Rideau authored
      p-u-r-h was never called! Two functions were registered.
      Register them with *post-upgrade-cleanup-hook* instead.
      The hook was introduced with pre-release 2.27,
      possibly with the intent to be called by the main operate :around method
      when an asdf build is restarted in the middle. But that never happened.
      3dd1f67d
  10. 22 Sep, 2016 1 commit
  11. 20 Sep, 2016 1 commit
  12. 17 Sep, 2016 1 commit
    • Francois-Rene Rideau's avatar
      Fix declaim ftype for mark-component-preloaded · 96ea9270
      Francois-Rene Rideau authored
      SBCL cares about type declarations, and the declared ftype became a lie
      after allowing arbitrary component designators rather than only components
      in calls to mark-component-preloaded, which *sometimes* caused errors.
      96ea9270
  13. 15 Sep, 2016 2 commits
    • Robert Goldman's avatar
      Minor docstring typos. · 4d4b5222
      Robert Goldman authored
      4d4b5222
    • Francois-Rene Rideau's avatar
      Move auto-version from immutable to preloaded systems · 4344de27
      Francois-Rene Rideau authored
      Daniel Kochmanski convinced me that immutable systems are "just" blessed
      preloaded systems; the automatic version feature of immutable systems can thus
      be generalized to all preloaded systems.
      
      Update several docstrings.
      
      Also, document that direct access to *immutable-systems* is not supported.
      Contact the maintainers if you need an interface to that.
      4344de27
  14. 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
  15. 13 Sep, 2016 1 commit
    • Francois-Rene Rideau's avatar
      Refactoring: introduce the function REGISTERED-SYSTEM · 7b7b9f0c
      Francois-Rene Rideau authored
      Introduce the function REGISTERED-SYSTEM to abstract over finding a registered
      system by name, without having to take the CDR of the pair with timestamp.
      
      Also, add or improve docstrings for several functions.
      
      This refactoring should not modify any semantics,
      except for introducing this new function.
      7b7b9f0c
  16. 12 Sep, 2016 1 commit
  17. 28 Nov, 2015 1 commit
  18. 17 Nov, 2015 1 commit
    • Francois-Rene Rideau's avatar
      Add tests for defsystem-depends-on · 5a4a89f5
      Francois-Rene Rideau authored
      Attila offered these tests, that currently fail at HEAD,
      for which I have a patch (to be included in next commit).
      They check that an error when loading defsystem-depends-on dependencies
      doesn't cause an incomplete system to be registered but never properly
      parsed, that thereafter pollute the build.
      
      A real solution would imply to fix lp#1500578 though:
         ASDF should handle change in defsystem-depends-on dependencies
         https://bugs.launchpad.net/asdf/+bug/1500578
      5a4a89f5
  19. 10 Jul, 2015 1 commit
  20. 29 Jun, 2015 1 commit
    • Dave Cooper's avatar
      Add and export a register-immutable-system function. · 1b38225b
      Dave Cooper authored
      Make *immutable-systems* also respect preloaded-systems.
      Don't clear immutable-systems as part of clear-system and clear-defined-system.
      Export register-preloaded-system.
      Add a test, ensure bugs are fixed.
      
      This code was written by Dave Cooper then tweaked by Francois-Rene Rideau.
      1b38225b
  21. 27 Apr, 2015 1 commit
  22. 11 Jul, 2014 1 commit