[oe] update-alternatives broken badly (by me :()
Koen Kooi
k.kooi at student.utwente.nl
Wed Jan 13 08:29:05 UTC 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 12-01-10 23:21, Martin Jansa wrote:
> Hi,
>
> Still no review/ACK :(.
They seem to look decent enough, but I lack the time to test them, so
feel free to apply them
regards,
Koen
> I'll try to explain it better to show how bad it can be and even make
> review easier.
>
> We have target where sysvinit as init is crucial for successful boot (ie
> SHR on freerunner) and u-a-cworth is installed on image, because
> task-boot RDEPENDs on update-alternatives.
>
> Let's start with image built after 2009-12-08.
> u-a-opkg is used for in do_rootfs, but u-a-cworth is installed in image
> too and is used by default.
>
> T1) after flashing
> ipkg/alternatives/init opkg/alternatives/init
> doesnt-exist /sbin/init
> /sbin/init.sysvinit 60
> ../bin/busybox 50
> =>sysvinit is used, everything is fine
>
> good scenario:
> T2a) sysvinit is upgraded first
> ipkg/alternatives/init opkg/alternatives/init
> /sbin/init /sbin/init
> /sbin/init.sysvinit 60 /sbin/init.sysvinit 60
> ../bin/busybox 50
> =>sysvinit is used, everything is fine
> - newer file works but is incomplete
>
> T3a) busybox is upgraded
> ipkg/alternatives/init opkg/alternatives/init
> /sbin/init /sbin/init
> /sbin/init.sysvinit 60 /sbin/init.sysvinit 60
> ../bin/busybox 50 ../bin/busybox 50
> =>sysvinit is used, everything is fine
> - newer file works and is the same as opkg
>
> bad scenario
> T2b) busybox is upgrade first
> ipkg/alternatives/init opkg/alternatives/init
> /sbin/init /sbin/init
> ../bin/busybox 50 /sbin/init.sysvinit 60
> ../bin/busybox 50
> =>busybox is used, device won't boot anymore
> - newer file is from cworth but is worse
>
> T3b) sysvinit is upgraded
> ipkg/alternatives/init opkg/alternatives/init
> /sbin/init /sbin/init
> /sbin/init.sysvinit 60 /sbin/init.sysvinit 60
> ../bin/busybox 50 ../bin/busybox 50
>
> =>sysvinit is used again, everything is fine
> - newer file works and is the same again
>
> If we merge ipkg/alternatives and opkg/alternatives before T2b) there
> will be no problem.
>
> If we merge it after T2b) and then force busybox upgrade then we will
> fix broken image too (as busybox is using probably the most u-a links
> and has lowest priority). So busybox PR bump is good idea AFTER merging
> u-a alternatives.
>
> Worst scenario (where merger fails):
> Tfsck) After T3a) or T3b) user intentionally remove sysvint package
> (ie because he can boot even with busybox)
> ipkg/alternatives/init opkg/alternatives/init
> /sbin/init /sbin/init
> ../bin/busybox 50 /sbin/init.sysvinit 60
> ../bin/busybox 50
> =>busybox is used, user is happy
>
> then we run merge script (longer alternative file wins
> =>sysvinit is used again, but without actuall /sbin/init.sysvinit file
> in fs.. boot fails, user is sad. I think there is no way to distinguish
> between T2b where newer shorter file is wrong and Tfsck where newer
> shorter file is the right one (without checking opkg history..)
>
> With images built before 2009-12-08 it should be simple
> opkg/alternatives should be empty, all files from ipkg/alternatives are
> just moved there..
>
> Why would I like to add the same merge script to opkg?
> 1) someone maybe already removed -cworth from image with first sign of
> issues (but still too late) and -cworth postinst is still needed
>
> 2) task-boot will be fixed (RDEPEND on same u-a as
> virtual/update-alternatives-native) and user won't get -cworth update.
>
> 3) If I get new -cworth and busybox in one opkg upgrade batch, then I'm
> not sure which postinst will be executed first (we need -cworth first),
> but opkg maybe run own postinst before configuring other packages (ie
> portage does that completely even with restart of upgrade process)
>
> Updated -cworth is already used in SHR (from shr/merge branch).
>
> My shell foo is maybe not strong enough to check that everything is available
> in all environments and no bashisms were used..)
>
> Thanks and please comment (I'll resend whole patch serie as soon as
> someone confirms that's good path to go).
>
> Regards,
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
iD8DBQFLTYRRMkyGM64RGpERAqECAKCx2TxGSWTxSt0JlFP2APfRu7sEIwCeM/bc
CKNj3N9TmFmaWj0LGCAlrJc=
=vegr
-----END PGP SIGNATURE-----
More information about the Openembedded-devel
mailing list