From: budden
Subject: portable hierarchial packages
Date: 
Message-ID: <08ff7412-95ad-46b1-b017-cc807b157b79@b7g2000pre.googlegroups.com>
Hi list,
  I do not want to say it is a "release", but it is high time
to publish this. Some my postings seem to disappear,
so I try to post in a new topic

  http://depositfiles.com/files/gxq189sxd

This library contains:

- port of Allegros/Tim Bradshaw's hierarchical
packages to (at least) CCL, CLISP and SBCL.
Code should be completely portable to any
standard-compliant CL.

- ability to set up package nicknames per
*package*, ported to implemetations listed
above (should be completely portable)

- package qualifier can be applied to any
expression, including readmacros, not to
symbols only. In the scope of that expression,
readtable can be switched to some other
readtable associated with the package qualified.
E.g.:

'keyword::(a b c)
would read as (:a :b :c)

sql:[select 1 from dual]
would invoke #\[ readmacro from readtable
bound to sql package
sh:[ls]
would invoke #\[ readmacro from readtable
bound to sh package

- custom token parsers. Normally, reader
attempts to intern any symbol it reads
to some package. In this library, you
can intercept this call and run arbitrary
code which is associated to a *package*
or a package qualifier of the symbol.

And some utilities:
- asdf::undefsystem. Sometimes asdf gets
mad, and undefsystem make it forget
about your system. This is sometimes
an alternative to reloading everything.

- asdf looking for system.asd.lnk shortcut
under win32 which can be then parsed
with GNU readlink to produce real
system.asd location. Works under
allegro and lispworks.

- asdf can dump md5 sums of all file
components, useful for comparing
systems on different computers
without being able to mix up
directories.

- asdf::look-tabooed-systems
On SBCL, oos ... :force t sometimes
tries to rebuild part of SBCL
and then SBCL gets destroyed.
I suggest a way to prevent some
systems from being rebuild.

- proga = get rid of some
parens and nestings. Instead
of

(let ((a b)(c d))
 (flet ((f (x) y))
  (with-open-file (f "v" ...)
   (f a))

write just

(proga
 (let a b c d)
 (flet f (x) y)
 (with-open-file f "v" ...)
 (f a))

which is easier to read and
write.

- merge-packages-and-reexport
automate symbol clash resolution when
using several packages. There are two
policy, one is safer (import neither
of clashing symbols), other is "denser"
(import first of them). This small
macro simplifies a task of managing
multiple small packages and thus
helps improve modularity

- iterate-keywords (need to be
downloaded from http://sourceforge.net/projects/iteratekeywords/
)
now you need to import just only
one symbol to use iterate in
your package. Use keywords as clause heads.
(iter (:for ...))

- trivial-deftest
extremely simple test utility.
Why? I found it convinient to put
some tests just next to function
definition, not in a separate
files. This way test management
simplifies, and tests serve as
an examples. Tests are normally
executed at read-time and warn on
failure. To avoid running
tests at load time, just
set *run-tests* to nil.

From: Scott Burson
Subject: Re: portable hierarchial packages
Date: 
Message-ID: <48af0a59-864d-4028-910f-a7daae765ed4@v1g2000prd.googlegroups.com>
On Apr 29, 2:27 pm, budden <···········@mail.ru> wrote:
> Hi list,
>   I do not want to say it is a "release", but it is high time
> to publish this.

Cool, thanks!  One small request -- it's nice for users if the tarball
unpacks into a single directory containing the files, rather than
dumping all the files into the current directory.

-- Scott
From: budden
Subject: Re: portable hierarchial packages
Date: 
Message-ID: <2dc44475-3711-44e2-848a-8840e40ee534@u39g2000pru.googlegroups.com>
> Cool, thanks!  One small request -- it's nice for users if the tarball
> unpacks into a single directory containing the files, rather than
> dumping all the files into the current directory.
Ooops, I'm sorry, this is very bad. Here is a better tgz:

http://depositfiles.com/files/l3yayomxx

I hope someday I'll make some repo.
From: budden
Subject: Re: portable hierarchial packages
Date: 
Message-ID: <7c5ec38c-d780-4c37-92c3-658bb54df76a@c18g2000prh.googlegroups.com>
I think there might be some problems.
1. iterate-keywords is loaded manually in load.lisp.
I have tested library on my own installation, but I
have no iterate installed, I have iterate-keywords
instead. So I think you should remove this

#+budden :iterate-keywords #-budden :iterate

from budden-tools.asd, otherwise things can go wrong.
2. SBCL reports symbol clash on let1. I don't know
where it is interned, maybe in my .sbclrc or somewhere
else. If you encounter this, choose to resolve conflict
in favor of either symbol and all should be ok.

Sorry, have no time now to fix this, going out for
a three days holiday.
From: Tobias C. Rittweiler
Subject: Re: portable hierarchial packages
Date: 
Message-ID: <87hc07xcw3.fsf@freebits.de>
budden <···········@mail.ru> writes:

> - asdf::look-tabooed-systems
> On SBCL, oos ... :force t sometimes
> tries to rebuild part of SBCL
> and then SBCL gets destroyed.
> I suggest a way to prevent some
> systems from being rebuild.

I've experienced this myself occassionally but never bothered to
investigate. Do you perhaps have a test case to send to the ASDF, or
SBCL people?

  -T.