1. 05 Dec, 2017 1 commit
    • Francois-Rene Rideau's avatar
      Fix upgrade issue with asdf/bundle. · 8e68ac22
      Francois-Rene Rideau authored
      Change implementation strategy for operation metadata methods
      bundle-type, gather-operation and gather-type.
      
      Upgrading from 3.1.7 or earlier yielded incorrect values for the metadata slots
      of the bundle operation classes, e.g.
      (gather-type (make-operation 'monolithic-lib-op))) was stuck to :STATIC-LIBRARY
      instead of its correct value :OBJECT since 3.2.0.
      The reason was that we were storing the value for this method in the :initform
      for the slot gather-type, which started as clever way of defining it as part of
      the DEFCLASS form for the class itself; however, this usage pattern does not
      work well with hot code upgrade: if the :initform changes during ASDF upgrade,
      the slot is already initialized, so its value isn't updated. That would require
      a method on UPDATE-INSTANCE-FOR-REDEFINED-CLASS, which hopefully should be
      invoked despite the fact that the shape of the class hasn't changed.
      A new slot won't be allocated because (a) we ensure that our operation classes
      are singleton classes using an *operations* cache, so objects are not
      reallocated, and (b) we define our slots with an :allocation :class, anyway.
      Remarkably, at least *some* of our changes in :initform have worked anyway,
      because when we transitioned allocation from :instance (default) to :class,
      that transition did force the computation of the new :initform, so the problem
      was hidden. But we're already out of luck with this upgrade from 3.1.7,
      and we must find a real solution.
      
      The Right Thing(tm) to do is to use DEFMETHOD to define specialized values.
      This commit does exactly that for the slots defined in bundle.lisp
      (and also used in concatenate-source.lisp). Ideally, we'd also do that
      for the slots defined in action.lisp and used in lisp-action.lisp, bundle.lisp
      and concatenate-source.lisp --- but there might or might not be clients
      in Quicklisp (or beyond Quicklisp) that this change would break.
      We must check backward compatibility, make sufficient announcement, etc. Sigh.
      8e68ac22
  2. 20 Jul, 2017 1 commit
    • 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
  3. 06 Nov, 2016 2 commits
    • Francois-Rene Rideau's avatar
      Fix monolithic-dll-op on ECL · 5e85031c
      Francois-Rene Rideau authored
      Use required-components in a way that is more robust when
      *load-system-operation* is load-bundle-op rather than load-op,
      by using basic-compile-op and/or basic-load-op as the :keep-operation
      rather than compile-op or load-op respectively.
      
      Test-bundle was passing the first time around, but not the second time.
      The first time, it was only passing because the appropriate file were
      loaded while building the dependencies of the target monolithic dll;
      but monolithic-dll-op was already buggy and not linking all these dependencies.
      The second time around, there was no building step and the proper dependencies
      had failed to be linked in, so the loading failed.
      
      This fixes https://bugs.launchpad.net/asdf/+bug/1626994
      5e85031c
    • Francois-Rene Rideau's avatar
      Restore proper use of required-components, with explanation · 822e8afa
      Francois-Rene Rideau authored
      Undo part of 0e0a851b, that changed the keep-operation in invocations of
      required-components from compile-op to load-op. Explain why in a comment of
      bundle.lisp: so any compiled file for the component itself be included,
      which notably matters when using a package-inferred-system.
      
      This notably fixes test-bundle.script, test-program.script on mkcl and ecl,
      and test-concatenate-source.script on ecl.
      
      Also simplify the test-bundle support files and remove some warnings.
      822e8afa
  4. 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
  5. 14 Oct, 2016 1 commit
  6. 25 Sep, 2016 2 commits
  7. 20 Sep, 2016 1 commit
  8. 17 Mar, 2014 1 commit
  9. 27 Jan, 2014 1 commit
    • 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
  10. 21 Jan, 2014 2 commits
    • Robert P. Goldman's avatar
      5e21bb43
    • 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
  11. 08 Jan, 2014 1 commit
  12. 23 Oct, 2013 1 commit
    • Francois-Rene Rideau's avatar
      package-system: support for quick-build style defpackage-based dependencies. · c609093c
      Francois-Rene Rideau authored
      This is quick-build compatible and fixes lp#1230368.
      
      To use package-system, just have foo.asd containing
      	(defsystem foo :class package-system)
      at the top of your quick-build hierarchy $FOODIR
      for packages whose name start with "FOO/"
      and ASDF will thereafter look for system "foo/bar/baz" in $FOODIR/bar/baz.lisp.
      
      Such a file will implicitly have its own system defined;
      its dependencies are computed by scanning the file,
      extracting its first defpackage form,
      and using the packages it uses or imports from
      as a as a specification of what systems it depends on.
      
      You can register packages as belonging to a system with
      	(asdf:register-system-packages my-system '(package1 package2))
      Using or importing from a package registered to a given system
      will generate a dependency to the registered system.
      Using or importing from a packages registered to the constant symbol T
      will not generate any dependency.
      Using or importing from a packages that is not registered will generate
      a dependency on a system the name of which is the package name downcased.
      All packages that exist at the time ASDF is initially loaded
      are registered to constant symbol T.
      
      Also, for convenience, introduce :use-reexport and :mix-reexport in
      uiop/package.lisp (of course, no one can rely on it until it's mainstream,
      but better late than never).
      
      To use this style in a way compatible with older versions of ASDF 3,
      you may use the asdf-package-system extension.
      See lisp-interface-library for a system that uses this style this way.
      
      Push :asdf-package-system to *features*
      c609093c
  13. 16 Oct, 2013 1 commit
  14. 09 Oct, 2013 1 commit
  15. 17 Mar, 2013 1 commit
    • Francois-Rene Rideau's avatar
      2.32.13: fix dependency issues for monolithic-fasl-op · c0a814bd
      Francois-Rene Rideau authored
      Rename sibling-operation sideway-operation,
      sibling-dependencies sideway-dependencies.
      No one in quicklisp was using the old name.
      Introduce selfward-operation for the common pattern.
      
      Have a prepare-fasl-op to gracefully propagate fasl-op.
      
      Reset component-depends-on when upgrading.
      
      Refactor concatenate-source-op in a likewise fashion.
      c0a814bd
  16. 18 Feb, 2013 1 commit
  17. 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
  18. 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
  19. 20 Jan, 2013 1 commit
    • 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
  20. 19 Jan, 2013 1 commit
  21. 18 Jan, 2013 1 commit
    • 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
  22. 16 Jan, 2013 2 commits
    • Francois-Rene Rideau's avatar
      2.26.102: fix issues on ECL, maybe CLISP too, improve version bumper. · 6782f5eb
      Francois-Rene Rideau authored
      Move things around and rename functions to improve backward compatibility.
      The driver now has its own backward-compatibility file.
      6782f5eb
    • 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
  23. 14 Jan, 2013 2 commits
    • Francois-Rene Rideau's avatar
      2.26.94: Yet another package cleanup. Debug the test scripts. · eef7278f
      Francois-Rene Rideau authored
      Package cleanup: every file in asdf itself now :use's asdf/driver asdf/upgrade.
      Test script fix:
      Allegro, like ECL *really* hates that we close *standard-input*,
      so stop trying at all.
      Tweak some utilities and debug utilities.
      eef7278f
    • Francois-Rene Rideau's avatar
      2.26.93: play nicer with packages, notably for Allegro and CLISP · c534ca65
      Francois-Rene Rideau authored
      On Allegro, frob the autoload earlier and intern the gethostname later
      so we don't unnecessarily autoload stuff.
      
      On CLISP, don't undefine functions, just unintern everything in the beginning,
      and it won't complain about disappearing methods anymore.
      
      Also, only retrigger the upgrade attempt on source-registry change
      if ASDF was not upgraded yet. This avoids unnecessary reloading of ASDF.
      
      Finally, be sure to share more symbols between everyone - hopefully,
      all the symbols that were used in ASDF and got recycled.
      Slot names are a big one, notably.
      c534ca65
  24. 11 Jan, 2013 1 commit
  25. 10 Jan, 2013 1 commit
  26. 09 Jan, 2013 1 commit
  27. 08 Jan, 2013 1 commit