I thought I would followup on this, since I know that imagemagick was  
one of the examples you had in mind.

I couldn't find a way to get imagemagick to build binaries that  
enabled plugins, without also building the plugins (and hence dragging  
in all the unwanted libraries to the build).

So what I did was to modify the imagemagick-nox package so that it  
built *nothing* shared... this makes the package perhaps a bit  
bloated, but avoids the need for the dependent libraries of the bits  
being left out.

This did have one implication for packaging, however: to avoid  
conflicts between imagemagick10-shlibs and imagemagick-nox, I moved  
the plugin files to the main package rather than the shlibs splitoff.   
The two main packages conflict/replace each other, but only the "x"  
version cares about a shlib splitoff.

  -- Dave


On Jan 26, 2008, at 9:08 AM, Daniel Macks wrote:

> Do we have any guideline or best-practices for how to structure
> (splitoffs, etc) a package that has plugins? By "plugins", I mean
> runtime-loaded modules or other components that can be removed without
> harming the overall program (other than losing the functionality they
> provide).
>
> I can think of several...would be nice to have some sort of uniformity
> so users know what to expect (or at least a way to find what they
> want) (or at least "get uesd to" one way) (or at least post this as a
> canned answer when a package behaves in a way a user doesn't expect or
> like).
>
> 1. Have the plugin as part of the parent package (example: imagemagick
> and its librsvg plugin). Pro 1: installing imagemagick gets a fully
> featured package, because the plugins that support standard features
> are always present. Pro 2: easy to package if the module's build is
> already implemented as part of the parent build process, because the
> parts of the distro are built all together. Con: possibly large
> dependency chain for just one of the plugins, so package looks bloated
> if user does not need that feature.
>
> 2. Have the plugin as a splitoff of the parent package. Pro 1: binary
> users don't have bloated dependencies for the main package. Pro 2:
> pretty easy to package. Con 1: source users still need the whole
> dependency chain. Con 2: users need to know to install the plugin
> (looks like "parent doesn't work right") and perhaps have weird
> effects if the installed versions of the plugin and the parent get out
> of sync (plugins are often laxer about interface stability because
> they often aren't designed as stand-alone/modular public components).
>
> 3. Have the plugin as part of the library that supports it (example:
> evince and its plugin for nautilus). Pro 1: even source users of the
> parent don't have dependency bloat. Pro 2: Easy to package if the
> plugin build is already implemented as part of the library build
> process. Con 1: users of the parent need to know to install the
> plugin. Con 2: users of the library get a dependency chain for a
> package unrelated to the library.
>
> 4. Plugin as splitoff of library. Like #3, solving #3 con 2 and
> solving #3 con #2 for binary users.
>
> 5. Build plugin as an entirely separate package (example: mozilla's
> librsvg plugin). Pro 1: no dependency bloat for anyone (caveat: con
> 2). Con 1: need to know to install. Con 2: need to hack parent to
> disable plugin build, including avoiding complaining if dependencies
> for it are missing. Con 3: things that "look like" simple plugins may
> also involve code in main program (plugin isn't as runtime-modular as
> it appears) (related to cons 2 & 4). Con 4: need to hack a way to
> build the module itself without building the parent package (typically
> involves lots of makefile and flag adjustments).
>
> dan
>
> -- 
> Daniel Macks
> [EMAIL PROTECTED]
> http://www.netspace.org/~dmacks
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Fink-devel mailing list
> Fink-devel@lists.sourceforge.net
> http://news.gmane.org/gmane.os.apple.fink.devel


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel

Reply via email to