Comment 5 for bug 1230368

Faré (fahree) wrote :

OK, see what I pushed in this topic branch:

http://common-lisp.net/gitweb?p=projects/asdf/asdf.git;a=shortlog;h=refs/heads/package-system;js=1

In 92 lines, I give ASDF support for quick-build style packages, except with ASDF integration, correct timestamp propagation (quick-build has the same bug as all free defsystems until ASDF 2), pathname portability, support for uiop:define-package.

Documentation is only in the commit message, so far:

    package-system: support for quick-build style defpackage-based dependencies.

    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.

Robert: can you review and hopefully pull into the master branch before the next release?

Alastair: can you review and try in your existing system? I understand ASDF is much bigger than quick-build, but it also does much more, including fixing the "usual" defsystem timestamp propagation bug. Plus, your dependencies mean you probably use ASDF anyway (if you so much as require sb-posix, and don't use my SBCL patch, you're loading ASDF).