Gentoo Archives: gentoo-dev

From: Ian Stakenvicius <axs@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] [pre-GLEP] Optional runtime dependencies via runtime-switchable USE flags
Date: Thu, 21 Jun 2012 19:20:52
In Reply to: Re: [gentoo-dev] [pre-GLEP] Optional runtime dependencies via runtime-switchable USE flags by David Leverton
Hash: SHA256

On 21/06/12 03:05 PM, David Leverton wrote:
> Michał Górny wrote: >> Hello, >> >> A simple solution to a program long-unsolved. In GLEP form. > > Just a couple of minor points/nitpicks: > > [ Snip! ] > > 2) It's not forbidden for package A to depend on an IUSE_RUNTIME > flag of package B being disabled, but it's unlikely to be useful. > To make this more concrete, a fictional but vaguely plausible > example: > > app-text/docmangler: > > # links to poppler to handle PDFs, and can use Ghostscript for # > PostScript support if available IUSE="postscript" > IUSE_RUNTIME="postscript" DEPEND="app-text/poppler" > RDEPEND="${DEPEND} postscript? ( app-text/ghostscript )" > > app-misc/coolapp: > > IUSE="doc" # if Ghostscript is installed, docmangler uses it for > both # PostScript and PDF files, but Ghostscript misrenders our > PDFs DEPEND="doc? ( app-text/docmangler[-postscript] )" > > Here, the [-postscript] dep would force the user to disable that > flag, but it wouldn't do much good because Ghostscript would still > be installed. This doesn't happen with regular USE flags because > (if the ebuild is written correctly) disabling the flag removes the > feature even if its dependencies happen to be installed. > > Possible solutions: > > a) automatically rewrite the dep as postscript? ( > app-text/ghostscript ) !postscript? ( !app-text/ghostscript ) b) > forbid [-foo]-style deps for IUSE_RUNTIME flags (would also make > sense in that case to disallow them in !foo-style conditionals in > the dependencies of the package itself, as that could cause similar > paradoxes) c) don't address it in the spec itself, and require > people to manually write the dep in the blocker form if it's > required d) something else? > > a) is pretty icky IMHO, especially if the flag pulls in multiple > packages. I could live with either b) or c), but b) is less > flexible and c) leaves a potential trap for the unwary. Any > opinions? >
I'd say (c) , since IUSE_RUNTIME is not an enforceable state of the tree and if docmangler is used but fails when ghostscript is installed anyways, then the DEPEND should specify this regardless of whether the 'postscript' flag (used by IUSE_RUNTIME) is set or whether ghostscript is in the user's world file. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) iF4EAREIAAYFAk/jc+cACgkQ2ugaI38ACPCUOAD+ICKl69MUhUTRj+2HBQ0pNlvo Bqa5/TmaD0oKIkLi+xgBAIGwynEBXC3dXsG7Amky0OiEUyen41kURybNLR8FIkT2 =jMZ4 -----END PGP SIGNATURE-----