Op 24 jul 2009, om 16:20 heeft Martin Costabel het volgende geschreven:

> Sjors Gielen wrote:
>> Hey Finkers,
>> I didn't know which mailing list this mail was supposed to be sent  
>> to, so please respond on the right one. Also, don't be alarmed if  
>> my next e-mail comes from [email protected] instead of 
>> [email protected] 
>> , I'm subscribed there but this was more convenient for me.
>> Attached is gettext017_and_dpkg.tar.gz, a tarball containing an  
>> updated dpkg.{info,patch}, gettext-tools.info and libgettext8- 
>> shlibs.{info,patch}. gettext-tools was updated to reflect gettext  
>> version 0.17 - as opposed to gettext-tools-0.17 this one is not  
>> statically compiled, but it compiles against libgettext8-shlibs,  
>> the shared libraries for gettext 0.17. The dpkg package was updated  
>> to not build gettext along with dpkg, but compile against  
>> libgettext8 too.
>> I also created a dpkg-bootstrap, but when I compared it with the  
>> dpkg-bootstrap the current Fink bootstrapper contains, it was  
>> almost exactly the same (no NLS support being the obvious most  
>> important factor), so I left that one out. This set of packages  
>> should still allow Fink to be compiled from scratch as long as  
>> gettext is compiled and installed between dpkg-bootstrap and dpkg.
>> I'm open to any constructive criticism and constructive hate mail.  
>> This is one of the first packages I edited (let alone created) for  
>> Fink, so bear with me if I made any serious mistakes, but I think  
>> these ones should be free of them.
>
> Until now, there was a rule, even still quoted in your version of  
> dpkg.info, that "essential packages cannot depend or builddepend on  
> non-essential packages". This contradicts your new bdep line
>
> BuildDepends: fink (>= 0.24.12), libgettext8-dev, gettext-tools
>
> and this is also the reason why there was a line
>
> %p/bin/fink -y install gettext-bin libgettext3-dev libiconv-dev  
> libncurses5
>
> in the CompileScript (a kind of covert build dependency.)
>
> -- 
> Martin


Hey Martin, thanks for your reply.

So uh let me get this straight. You have a policy of not allowing any  
non-essential build-dependencies in an essential info file, but you do  
need non-essential build-dependencies for dpkg, so instead of setting  
them as build dependencies you hack them in the CompileScript to hide  
them away from "public view"? (I'm not flaming you personally, of  
course, just the person who came up with that, sorry if that's  
actually you)

That's a situation badly in need of fixing. There are four solutions:

1) Make gettext8-dev and gettext-tools essential. No go, gettext-tools  
won't be made essential.

2) Compile gettext along with dpkg. Hacky, sucky, and we already have  
gettext and everything, so, no go.

3) Change the rule to be "essential packages cannot depend on non- 
essential packages, but build-depends are OK" - no go, you guys don't  
want this.

4) since that rule is there to make it possible to completely  
bootstrap Fink from source, we make an exemption for some packages in  
that rule. Packages which *need* non-essential build-dependencies, can  
have a -bootstrap counterpart, which *don't* need them so replacement  
packages can still be built from scratch, albeit with less  
functionality.

As it turns out, Fink already had a dpkg-bootstrap (which I found out  
about after I wrote mine in the same way). dpkg-bootstrap has NLS  
disabled, and as such only has fink itself as a build-dependency,  
therefore matches the policy. Later in the bootstrap queue, dpkg- 
bootstrap is used to install gettext-tools and gettext8-dev so the  
real, complete dpkg can be built correctly. From that moment on,  
gettext-tools and gettext8-dev and their dependencies can be removed,  
they are only necessary for that one build.

Having a rule "all depends and build-depends need to be essential" and  
sticking to it, no exceptions, makes for hacks to circumvent that  
rule, as is clear from the current "fix". I think 4) is the way to go,  
and the rule should be changed to "all depends and build-depends for  
an essential package need to be essential - if that's not possible,  
there must be a -bootstrap package whose depends and build-depends are  
essential, and which can be replaced by the normal package later once  
the build-depends can be correctly installed". Otherwise, I see  
nothing but hacky fixes out of this, which defeat the whole purpose of  
being able to bootstrap fink + essentials from scratch.

What do you think?

Sjors

------------------------------------------------------------------------------
_______________________________________________
Fink-devel mailing list
[email protected]
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to