On 04.08.2010 16:55, Ulrich Weigand wrote:
> Matthias Klose<d...@ubuntu.com>  wrote on 08/02/2010 09:38:49 PM:
>> On 02.08.2010 21:12, Ulrich Weigand wrote:
>>> Matthias Klose<d...@ubuntu.com>   wrote on 08/02/2010 06:25:58 PM:
>>> So the problem that is you want to support a setup where a "gcc" driver
>>> installed from a 4.4.4 build can still call and run a "gnat1" binary
>>> installed from a 4.4.3 build?  That will most likely work.
>>
>> No, gnat (4.4.3) has still to work, if gcc (4.4.4) is already installed.
>
> OK, where I said "gcc", the same applies also for "gnat", the Ada compiler
> driver.   The reason for why a 4.4.3 gnat would fail if 4.4.4 gcc is
> installed
> is that it wouldn't find things like collect2, libgcc, crt*.o etc.   Right?

yes

>>> But it still seems a bit fragile to me; in general, there's no
> guarantee
>>> that if you intermix 4.4.4 and 4.4.3 components in that way, everything
>>> actually works (that's why they use different directories in the first
>>> place).
>>
>> Then I would need to change this internal path with every source change.
> I
>> don't see this as fragile as long as it is ensured that we ship with the
>> different frontends built from the same patchsets/sources.  Note that
> further
>> restrictions are made by package dependencies.
>
> The issues I'm thinking of are things like: suppose the 4.4.4 middle-end
> adds
> code that generates calls to some new libgcc library function, which itself
> was added with the 4.4.4 libgcc.  If you now mix-and-match components so
> that
> a compiler built from the 4.4.4 sources and using the new middle-end is
> used
> together with a libgcc built from the 4.4.3 sources, things will break.

libgcc is always built from the sources which get uploaded first.

> It seems that this does not actually occur in the usage model you describe,
> since you apparently always update the core (libgcc etc.) *first*.  I'm not
> sure if this is actually guaranteed by the package dependencies though.  If
> it is, then I don't see any real problems with that approach ...
>
>>> If you want to have separate packages, a cleaner way would appear to be
> to
>>> make them fully self-contained, e.g. have them each provide their own
>>> driver that can be called separately.
>>
>> I don't understand that. I don't have a problem with the driver, butwith
> the
>> compiler (gnat1).  Having the packages self-contained creates
>> another problem in
>> that you get file conflicts for files like collect2, various .o files
> etc.
>
> What I was thinking of is along the lines of having gcc-base-4.4.3 and
> gcc-base-4.4.4 packages that hold the base files (crt*o, libgcc,
> collect2 ...),
> such that you can install *multiple* of the base packages at the same time.
> This way you could have a gcc-4.4.4 (depending on gcc-base-4.4.4) and a
> gnat-4.4.3 (depending on gcc-base-4.4.3) all installed at the same time.

sure, you could have separate packages for subminor versions, and introduce a 
new dependency package for the minor version (gcc-4.4-defaults), but I don't 
see 
how this would help within the context of the distribution.

   Matthias

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to