NAnt boostrapping

Kalev Lember kalev at smartlink.ee
Wed Feb 24 16:52:07 UTC 2010


On 02/24/2010 03:13 AM, Tom "spot" Callaway wrote:
> On 02/23/2010 08:10 PM, Christian Krause wrote:
>> Hello Tom,
>>
>> there is currently some uncertainty about bootstrapping NAnt correctly
>> and since you've done is a couple of times I thought it would be a good
>> idea just to ask. ;-)
>>
>> https://bugzilla.redhat.com/show_bug.cgi?id=562729
>>
>> If I understood this correctly, it should be done like this:
>>
>> 1. build nant with bootstrap=1, get it tagged into buildroot
>> 2. build log4net, mono-sharpcvslib, get both tagged into buildroot
>> 3. finally build nant with bootstrap=0
>> 4. push all new builds
>>
>> I'm also unsure whether mono-nunit22 must be built and tagged in step 2
>> as well.
>>
>> Please can you shed some light on this process? ;-)
>
> I don't think that whole bootstrapping is necessary anymore, with the
> new key arrangement, but kalev would be able to shed some light there.

I think all nant dependencies use the system mono.snk key for F-13 and
up, but in F-12 the packages are (mostly) built with snk keys that were
generated on the fly and then discarded. The discarded part is
important, because it's not possible to sign next build with the key we
don't have. Mono's GAC needs updated assemblies signed with the same
key, otherwise it will refuse to load them.

The root cause why nant broke again was that log4net was rebuilt with a
new key. Yes, the new key is the new system mono.snk -- but it's still
different from the previous key, therefore breaking all dependent
applications.

Paul rebuilt nant in bootstrap mode, and had it tagged for
dist-f12-override [1]. He also tried to build a new nant in
non-bootstrap mode, but that failed because one of nant's deps,
mono-sharpcvslib, failed to load log4net from GAC.

I picked it up from there. I first checked that there were only 2
packages that depended on log4net: nant and mono-sharpcvslib. However,
what made it slightly difficult is that mono-sharpcvslib needs nant to
build, but nant was broken. Luckily the bootstrap mode nant was already
tagged for dist-f12-override. What I had to do was rebuild
mono-sharpcvslib against the new log4net (using the boostrap mode nant
which was tagged into build overrides). When mono-sharpcvslib's build
finished, I had it tagged for dist-f12-override [2].

At that point all nant's deps were in working order, so I just
re-submitted latest nant build which had failed for Paul. After that I
had the new nant also tagged for dist-f12-override, so that other
packages which use nant can now be built.

What needs to be done is to create a Bodhi update which includes both
mono-sharpcvslib-0.35-14.fc12 and nant-0.85-33.fc12. I don't have commit
access to nant, and because of that I can't create the update myself.
Christian, do you think you could prepare the update?

Thanks!

References:
[1] Rel-eng request to tag nant:
https://fedorahosted.org/rel-eng/ticket/3426
[2] Rel-eng request to tag mono-sharpcvslib:
https://fedorahosted.org/rel-eng/ticket/3440
[3] https://bugzilla.redhat.com/show_bug.cgi?id=562729

-- 
Kalev


More information about the mono mailing list