On Sat, Feb 12, 2005 at 09:34:59PM -0600, Chris Dolan wrote: > --- The problem --- > > When a perl module is declared a variant, the .info file contains a > line like this: > > Type: perl (5.8.0 5.8.1) > > The following questions arise for new modules: > > * Which versions should I include in the list? > * When should the list change? And who should change them? [maintainers list all kinds of combinations] > Some of these are clearly out of date. For example, Fink doesn't even > support Perl 5.8.5, and we don't support Perl 5.6.1 in 10.3 (at least > there isn't a package for it that I can find). Most are missing 5.8.6, > which is in unstable right now. > > --- Proposed solution --- > > I propose that we add a new percent expansion that looks like > %{allperlversions} [I'm open to alternate suggestions] that expands to > the list of all perl versions that Fink currently supports. This would > let maintainers implicitly declare, "I expect that this module should > work on any version of Perl". When new versions of Perl get added to > Fink, no perlmods need to be updated. On the other hand, if a > maintainer knows that a module only works for certain versions of Perl, > that maintainer can set an explicit list just as we do now.
In an ideal world, people actually *test* packages, at least that they compile, before committing them. Making new perl-variants automatically spring into existence with the new perl is added removes that step. Also, autogenerating the Type:perl subtype list does not remove the burden of manually editing other parts of the .info where these values are explicitly enumerated. That's because perl-variant modules need to have the concept of exclusivity for the -man splitoff. You'd have to somehow encode that into the Conflicts and Replaces fields. Conflicts: ${Ni}%{all-versions}-man but somehow have that be expanded as a comma distribution operator. That means each pkg has to know the full subtype list, something it currently does not IIRC. That's gonna be quite a feat, since there's no guarantee that all variants are contained in the same .info. But actually, it's not "all versions of it" where "it" is the -man splitoff: the multiple types are an attribute of the parent package, and there is only one variant of the splitoff in each one. So you'd need the splitoff to inherit the parent's subtype list--no big deal if the parent already knows it. Programming challenge aside, that means adding a new perlXXX pkg, which autovivifies all these perlmod packages causes massive policy breakage. Conflicts is hardcoded into the .deb, so the presence or absense of different perlXXX packages will cause different users to get different Conflicts for a given pkg-version at different times. A given pkg-version *must* have a static replaces/conflicts field, so I don't think there's any getting around having to manually enter the perl subtypes into those fields. Having Type autogenerated but Conflicts/Replaces means adding a new perlXXX-core will create a complete collection of broken *-pmXXX packages until all their C/R are manually adjusted. vasi and I actually discussed this a few nights ago on #fink, and buried the idea even further, so I may as well keep typing... We really *don't* want Conflicts to give exclusivity among "all currently-exising subtypes", but actually among all subtypes that have *ever* existed for that pkg. We don't want to carry all obsolete perlXXX-core indefinitely, but we also don't want to break upgrade paths. Say I have perlXXX and foo-pmXXX (and -man) installed. Now a new perlXXY is added and perlXXX is removed from the pkg repository; I install perlXXY. Thanks to 'fink -b', I don't have to rebuild everyhting myself: I just download the prebuilt foo-pmXXY, but if that .deb came from a machine without perlXXX, its -man contains no Conflicts for the one I have installed. > The major open question is how %{allperlversions} gets populated. Is > it hardcoded into PkgVersion.pm? Or does Fink scan the package list > for perl5xx-core and system-perl5xx at runtime? Hardcoded into fink core means one has to coordinate a new fink release every time one wants to alter the set of perlXXX-core packages we have. That's a bit too much Central Party package management for my taste, and no reason to add yet another user and fink-release headache. Runtime perlXXX-core determination is broken by policy and function. dan -- Daniel Macks [EMAIL PROTECTED] http://www.netspace.org/~dmacks ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ Fink-devel mailing list Fink-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fink-devel