>>>> "Stephen" == Stephen J Turnbull
<stephen(a)xemacs.org> writes:
>>>> "Ville" == Ville Skytt <Ville>
writes:
Ville> On Thu, 2002-08-08 at 09:22, Stephen J. Turnbull wrote:
Ville> Hmm, maybe I didn't make myself quite clear here, I meant
Ville> doing a "make install" in _a package_ directory, not in
>> I think that any time you have recursive requires across
>> packages you will have problems with this.
Ville> Damn. But if pdepends.mk would be used when building from
Ville> a package dir, it could work?
Stephen> You'd have to try it.
According to Steve B, the two problems are (1) that you could end up
calling a macro from byte-compiled code, which doesn't work (macros
are expanded and open-coded by the compiler, so there is no provision
for handling macros in the byte-code interpreter), and (2) variations
on the "APEL problem" (conditional compilation for different versions
of XEmacs/available packages from the target system).
For (1), there are two considerations. (a) The packages have become
dependent on auto-autoloads. You need to do make autoloads in all
packages in REQUIRES. (b) The package machinery doesn't take the
transitive closure, but where macros invoke macros, you need to. So
this must be done by hand in REQUIRES.
Maybe pdepends.mk could fix this, that's a Steve Y innovation so Steve
B doesn't know anything about it.
There's not much you can do about (2) except to avoid such packages.
So basically, up to the macro issue, `make install' in a package
directory should work. In other words, it should build and install,
but will fail intermittently in practice. :-/
What you seem to be getting caught on is (1)(b). What happens is that
package-compile.el deliberately clears out load-path, then adds back
in exactly the directories needed for REQUIRES. If REQUIRES is not
closed under `require', you're hosed.
Unfortunately, there's no way to find out if an eval will cause a
macro invocation without actually reading all the libraries, so you
may as well load them. Thus you really do need all those libraries
available, which in turn means putting them in REQUIRES. (And if all
you need is one stupid function from Gnus, you get all of Gnus. C'est
la vie.)
No, I can't account for why it fails for you and not for Steve Y.
The bottom line AFAICT is that those REQUIRES aren't redundant; you're
asking for trouble if you don't put them in.
--
Institute of Policy and Planning Sciences
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
My nostalgia for Icon makes me forget about any of the bad things. I don't
have much nostalgia for Perl, so its faults I remember. Scott Gilbert c.l.py