On 15.03.2011 17:09, Steve Langasek wrote:
> On Tue, Mar 15, 2011 at 01:00:04PM +0100, Marcin Juszkiewicz wrote:
>> Some time ago I looked at cross toolchain packages to find how they
>> handle installation of several versions at same time. It was done by
>> using 'update-alternatives' tool and was broken. We fixed it during
>> Ubuntu/Maverick cycle but "u-a" is still in use (just versions are used
>> now to take care of priority so latest gcc is default one).
> 
>> But this is different then native gcc which is selected by gcc-defaults
>> package - /usr/bin/gcc is symlink to /usr/bin/gcc-DEFAULTVERSION (where
>> DEFAULTVERSION value depends on architecture and distribution). Ok, we
>> have gcc-defaults-armel-cross in Ubuntu but it takes care only of
>> depending on default versions of cross toolchain components.
> 
>> I filled a bug [1] about it and discussed it with Matthias Klose. The
>> proper way would consists those steps:
> 
>> - new cross packages will use "u-a remove" to get rid of old alternative
>>   stuff (in postinst and prerm)
>> - new gcc-defaults-armel-cross package will provide
>>   /usr/bin/arm-linux-gnueabi-APP symlinks
>> - new gcc-defaults-armel-cross will also conflicts with older versions
>>   of cross toolchain packages
> 
> From the bug report:
> 
> 4. alter postinst/prerm of gcc-4.[45]-armel-cross to remove old u-a: TODO
> 
> This should be done in the preinst instead.  Rationale: update-alternatives
> is part of dpkg, so doesn't require any Pre-Depends; and a dependency (such
> as the gcc-arm-linux-gnueabi dependency on gcc-4.5-arm-linux-gnueabi) does
> not prevent one package from being unpacked before the postinst of another
> package it depends on has been run.  So if you do this in the postinst, you
> get:
> 
>  - gcc-4.5-arm-linux-gnueabi unpacked (enforced by the Conflicts: from
>    gcc-arm-linux-gnueabi)
>  - gcc-arm-linux-gnueabi unpacked; overwrites /usr/bin/arm-linux-gnueabi-gcc
>    symlink
>  - gcc-4.5-arm-linux-gnueabi configured; u-a remove runs, removing the
>    symlink
>  - gcc-arm-linux-gnueabi configured - but the gcc symlink is now missing
> 
> Otherwise, this looks ok.

+1. just make sure that your additions to the maintainer scripts are only made
for the cross builds, not for the native builds.

thanks, Matthias


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

Reply via email to