[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#285778: Fwd: Re: [RC2 i386 floppy] Should handle the lack of translations on the floppies better



Frans Pop wrote:
> After loading the cd-drivers floppy, the menu looks like this:
>   Choose language
>   Choose country or region
>   Detect and mount CD-ROM              (4)
>   Load drivers from a floppy
>   Select a keyboard layout
>   Load installer components from CD    (5)
>   Detect network hardware              (6)
> ...
> 
> As can be seen from the numbers, kbd-chooser is never run.
> 
> Also, why is "Detect and mount CD-ROM" inserted in the menu _before_ "Load 
> drivers from a floppy"?

That seems to be the real problem. I don't know why cdrom-detect is put
so far up in the menu, but once it is, main-menu makes it the default
since it's the first menu item that has not been run. Once it is run,
this happens when main-menu is looking for the next item to make
default:

 - It goes down the list looking for items that have not been run, and
   lands on kbd-chooser.
 - It notices that kbd-chooser has a menu-item-number less than that of
   the last run menu item.
 - So it skips over kbd-chooser and keeps going, landing on load-cdrom.

This skipping code was intended to be used when the user manually
skipped over a menu item, down to a higher numbered item. But it also
triggers if the menu gets rearranged like this so it's not in
menu-item-number order.

As I said, I don't know what causes the menu to be ordered this way, but
it's obviously something in here:

        /* Sort by menu number. */
        qsort(package_array, num, sizeof (di_system_package *), package_array_compare);

        /* Order menu so depended-upon packages come first. */
        /* The menu number is really only used to break ties. */
        list = di_system_packages_resolve_dependencies_array_permissive (packages, (di_package **) package_array, allocator);

So it looks like di_system_packages_resolve_dependencies_array_permissive
thinks that cdrom-detect is a dependency of load-floppy. Otherwise, why would
that be put before it?

Well, load-floppy depends on anna, which depends on retriever. cdrom-retriever
is one of the three packages that provide retriever, and of course it depends
on cdrom-detect. I can't read the code in libdebian-installer, but I'll bet it
erroniously follows this chain to arrive at the conclusion that load-floppy
needs cdrom-detect, and puts cdrom-detect before it.

This problem can be worked around by removing anna's dependency on retriever.
Since all d-i initrds necessarily include some retriever plus anna, the
dependency doesn't serve much of a useful purpose. I tried doing this, and got
a much nicer menu, with kbd-chooser before cdrom-detect, and selected as the
default.

-- 
see shy jo

Attachment: signature.asc
Description: Digital signature


Reply to: