- 05 Dec, 2017 1 commit
-
-
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.
-
- 23 Jul, 2017 1 commit
-
-
Francois-Rene Rideau authored
This provides for backward compatibility with ECL, whose current maintainer Daniel K. has decided to keep supporting the make-build interface and has forked ASDF for that.
-
- 21 Jul, 2017 1 commit
-
-
Francois-Rene Rideau authored
Update some packages so #+ecl forms can see symbols they need. Make sure uiop and/or asdf have linkable output before to link them. Fix test-program to account for recent asdf changes.
-
- 20 Jul, 2017 2 commits
-
-
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.
-
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.
-
- 17 Feb, 2017 4 commits
-
-
Francois-Rene Rideau authored
See discussion on https://bugs.launchpad.net/asdf/+bug/1649198
-
Francois-Rene Rideau authored
Fixes bundle builds for MKCL post 1.1.10.
-
Francois-Rene Rideau authored
Recent ECLs have libasdf.a instead of asdf.a. Not all bundle-op is a basic-compile-op (e.g. concatenate-source-op). Declaring otherwise was causing asdf/defsystem to appear as a compiled dependency, causing incorrect double inclusion of symbols in the link when asdf was explicitly depended on. Make sure to include only one of uiop or asdf as the fallback support file, and only when neither uiop nor asdf is explicitly depended on. Improve test-program.script for ECL. This fixes https://bugs.launchpad.net/bugs/1660547
-
Francois-Rene Rideau authored
This enables static-program-op in an upcoming cffi-toolchain.
-
- 12 Jan, 2017 1 commit
-
-
Francois-Rene Rideau authored
See discussion on https://bugs.launchpad.net/asdf/+bug/1649198
-
- 07 Dec, 2016 2 commits
-
-
Francois-Rene Rideau authored
There is no robust portable way to combine multiple .a files together; libtool kind of works but has weird limitations and is a cumbersome dependency to require, and even it doesn't work well in cross-compilation setting. The ECL maintainer Daniel K suggests we should always link from object files: https://bugs.launchpad.net/bugs/1647391 This patch still uses static libraries as input for images, but even that could be changed.
-
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.
-
- 26 Nov, 2016 2 commits
-
-
Francois-Rene Rideau authored
Push monolithic-op to the back of inheritance, to preserve class-allocated slot bundle-type slot in a class in front of the inheritance list. Now that make-build was remove, adjust some ECL tests to use program-op instead.
-
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.
-
- 06 Nov, 2016 2 commits
-
-
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
-
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.
-
- 29 Oct, 2016 1 commit
-
-
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.
-
- 16 Oct, 2016 1 commit
-
-
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
-
- 25 Sep, 2016 1 commit
-
-
Francois-Rene Rideau authored
-
- 21 Sep, 2016 1 commit
-
-
Francois-Rene Rideau authored
-
- 20 Sep, 2016 1 commit
-
-
Francois-Rene Rideau authored
Also rename make-library-system to make-prebuilt-system.
-
- 15 Sep, 2016 1 commit
-
-
Francois-Rene Rideau authored
When injecting dependencies, acknowledge the case when the compiler cmp was linked into ECL and there is neither system nor module. At places, use 'fun rather than #'fun in case function redefinition may happen.
-
- 11 Sep, 2016 6 commits
-
-
Francois-Rene Rideau authored
MKCL 1.1.10 (from git) installs bogus .asd files in its contrib/ directory – for instance cmp.asd is present there (and level-up), and locate-system finds the first, bogus, definition, that points to a cmp.a library in the wrong directory. Bug identified by Daniel Kochmański.
-
Francois-Rene Rideau authored
bundle-system and make-build must go. But they must go the right way.
-
Daniel Kochmański authored
This reverts commit 6475bce3.
-
Daniel Kochmański authored
This reverts commit adf2d1a6.
-
Francois-Rene Rideau authored
`LOAD-BUNDLE-OP' works only on ECL at the moment. Disable it for Clasp and MKCL.
-
Elias Pipping authored
-
- 10 Sep, 2016 7 commits
-
-
Daniel Kochmański authored
-
Daniel Kochmański authored
Add a convenience mechanism to avoid problems with cross-device links.
-
Daniel Kochmański authored
Also remove deprecation comment – `make-build' is part of official ECL build system and is documented here: https://common-lisp.net/project/ecl/manual/re55.html
-
Daniel Kochmański authored
This makes loading system faster. See: https://common-lisp.net/project/ecl/manual/re56.html
-
Daniel Kochmański authored
`pathname-type-equal-function' was case-sensitive when filtering `direct-dependency-files' called from `input-files' specialized on `gather-op'. That caused rejection of the prebuilt system libraries denoted in upper case like #P"SYS:LIBASDF.A" and as a result any dependencies on the prebuilt weren't linked in the final image.
-
Daniel Kochmański authored
Create a local function linkable-system, which given a system in the current image, returns an equivalent linkable system. This part of code was also buggy, because if it did found `uiop', it didn't include `asdf', but if none was found, it included `uiop' *and* `asdf' unconditionally. This inconsistent behaviour was fixed and now we try to inject `uiop', and if not found – `asdf'.
-
Daniel Kochmański authored
Use a more general approach regarding prebuilt system modules on implementations Clasp, ECL and MKCL with `system-module-pathname', instead of separate functions for cmp/asdf/uiop. Thanks to that, we'll be able to include any prebuilt module with (make-library-system name) where name may be "sb-bsd-sockets", "babel" or anything else. This is important for image-op (therefore program-op) and is a prerequisite to fix the problem with monolithic boundle-op's not including required prebuilt systems.
-
- 12 Jan, 2016 1 commit
-
-
Francois-Rene Rideau authored
-
- 18 Nov, 2015 1 commit
-
-
Francois-Rene Rideau authored
-
- 02 Oct, 2015 1 commit
-
-
Francois-Rene Rideau authored
-
- 29 Sep, 2015 1 commit
-
-
Francois-Rene Rideau authored
-
- 27 Sep, 2015 1 commit
-
-
Francois-Rene Rideau authored
Bug reported on the mailing-list by Florian Margaine <florian@margaine.com>
-