[moved to -beta]
* Michael Albinus <michael.albinus(a)gmx.de> writes:
> Steve Youngs <steve(a)sxemacs.org> writes:
>> >> +REQUIRES = tramp xemacs-base vc efs dired mail-lib gnus ediff sh-script
>>
>> > Just one question: I don't know why Tramp should require ediff. Not
>> > that I don't like it, just for curiosity.
>>
>> Because tramp-vc requires vc requires ediff-util.
> Still curious: isn't it recursive? vc itself requires ediff-util I
> guess, so when vc is present (due to dependency of tramp), ediff
> must be present automagically?
> Otherwise, a lot of other packages would need to be mentioned as
> well, like all packages gnus requires ...
Only if there is a direct link in a library back to your package.
Like there is with Tramp and Ediff.
In the library, tramp-vc.el, there is the form: (require 'vc). That
gives Tramp the VC dependence. In vc.el there is:
(require 'vc-hooks)
(require 'ring)
(eval-when-compile (require 'dired))
(eval-when-compile
(require 'sendmail)
(require 'compile)
(require 'ediff-util))
Taking each one of those in turn...
vc-hooks.el -- has no build-time requirements outside of the VC package
or core (XEmacs itself). So there is nothing here to cause extra
dependencies for Tramp.
ring.el -- No build-time requirements outside of the xemacs-base
package or core. Tramp already has xemacs-base in $REQUIRES. This
won't cause any additional dependencies.
dired.el -- Nothing outside of the Dired package or core. Tramp
already has dired in $REQUIRES
sendmail.el -- Nothing outside of the mail-lib package or core. Tramp
has mail-lib in $REQUIRES
compile.el -- Nothing outside of xemacs-base or core. Tramp already
has xemacs-base.
ediff-util.el -- has hooks into ediff itself, plus mail-lib, both of
which Tramp has (now).
If one of those 6 libs had a build-time dependence on something that
wasn't listed in Tramp's $REQUIRES, then _that_ dependency would
become one of Tramp's. Starting to get the picture?
When a package is being built, the items listed at $REQUIRES in the
Makefile are the build-time dependencies. They are best thought about
on a file by file basis.
When you get to the other end of the tunnel where a user is installing
that package with the XEmacs Package Tools, those build-time dependencies
turn into the closest thing we have for run-time dependencies. They are
best thought about on a package by package basis. Chiefly because you
can't split a package up into its individual files at this point.
To illustrate what I'm saying, set up XEmacs with only the EFS and
xemacs-base packages installed. Then...
M-x pui-list-packages
scroll down to Tramp, hit RET to select it for install
press `r' to add any required packages
Notice which packages are now selected for install. I haven't done
this, but my guess would be a hell of a lot more than what is listed
in Tramp's Makefile $REQUIRES. :-)
You're probably more confused than ever now, but I hope this helps the
understanding a little. :-)
--
|---<Steve Youngs>---------------<GnuPG KeyID: A94B3003>---|
| I am Dyslexic of Borg. |
| Fusistance is retile. Your arse will be laminated. |
|------------------------------------<steve(a)sxemacs.org>---|