new operation for asdf-ecl.lisp

Bug #542583 reported by Juanjo Garcia-Ripoll
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ASDF
Fix Released
Medium
Faré

Bug Description

This patch implements a new operation, binary-op, which compiles a whole ASDF system into a binary system composed of three files
  *.asd - a standalone system definition using the class prebuilt-system
  *.fasb - a FASL containing the whole system
  *.a/*.lib - a statically linked library that can be used in other deliverables
With the output of this operation a whole ASDF system can be replaced by these precompiled files, achieving the same functionality under the COMPILE-OP and LOAD-OP as with the source files.

Revision history for this message
Juanjo Garcia-Ripoll (worm) wrote :
Revision history for this message
Robert P. Goldman (rpgoldman) wrote :

I believe that some other lisps may support this by concatenation of fasl files. Franz folks? Would you like to provide a similar patch?

Revision history for this message
Juanjo Garcia-Ripoll (worm) wrote :

If it is just a concatenation, then it would be trivial. But then the operation should be moved from asdf-ecl.lisp to somewhere else. asdf.lisp is pretty crowded right now. Would you agree on something like an asdf-ext.lisp ?

Revision history for this message
Faré (fahree) wrote :

We probably need an asdf-extensions.asd or something.
Should asdf-ecl be moved to such a system, or is it a necessary component of asdf itself?

NB: FASL concatenation also works on SBCL.

Revision history for this message
Robert P. Goldman (rpgoldman) wrote :

I thought we had been talking about adding a contrib/ directory at some point...

I have an asd-finder system which we use to populate the asdf:*central-registry* and a macro to wrap around it, which allows us to manage alternative configurations (for different projects) of lisp sessions. I have been meaning to release this stuff, but there's been no obvious place to put it. contrib sounds good to me.

Revision history for this message
Faré (fahree) wrote : Re: [Bug 542583] Re: new operation for asdf-ecl.lisp

I'm all for a contrib/ directory.

Juanjo can tell whether asdf-ecl.lisp belongs to asdf itself or to a
separate asdf-ecl.asd contrib.
asdf-ecl could be split in two parts, one that is semi-portable and
allows magic with FASL concatenation / partial linking,
another that is ECL specific and does what we love ECL for being the
only CL to do.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
As of vices, the State will let you devote your life to a false religion,
encourage you to have too many kids, but ban use of psychedelics.

Revision history for this message
Juanjo Garcia-Ripoll (worm) wrote :

I attach a straightforward port of two operations that ECL supports:

- Building a unified FASL file that contains either a system, or a system plus all its dependencies.
- Building an ASDF system that, using the previous feature, can replace an existing one (this include *.asd file)

The implementation tries to be done with future extensions in mind, such as bundling all executables plus resources into an application, dumping images, etc, but all is constrained into new files that are not required for booting -- should simplify the process of reloading ASDF.

The patch need not be accepted as is. I will submit it for discussion at the mailing list.

Revision history for this message
Faré (fahree) wrote :

What about I create a contrib/ directory, and move the contents of asdf-ecl and this asdf-ext to a new contrib called asdf-bundle.asd ? That would be slightly incompatible for ECL users, who'd have to (require :asdf) (require :asdf-bundle) or something (is there a require hook for ECL as for SBCL and CCL ?)

I'm setting the milestone to 2.1, but I hope we can find a consensual solution before ASDF 2.0.

Changed in asdf:
importance: Undecided → Medium
assignee: nobody → Faré (fahree)
milestone: none → version2.1
status: New → Confirmed
Revision history for this message
Faré (fahree) wrote :

OK, so without touching asdf-ecl.lisp itself (still part of asdf), I made a system called asdf-bundle, based on the asdf-ecl source, and made SBCL and CCL work, though I didn't use the patch above and may have broken ECL in the process.

Can you give a look at asdf-bundle and see if it does what you want?

Changed in asdf:
status: Confirmed → In Progress
Revision history for this message
Faré (fahree) wrote :

asdf-bundle.asd is the new thing. asdf-ecl.lisp was removed from asdf.asd in 2.26.x.

We may or may not merge asdf-bundle.asd into asdf.lisp in the near future.

Changed in asdf:
status: In Progress → Fix Committed
Revision history for this message
Faré (fahree) wrote :

Released in 2.27

Changed in asdf:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.