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

Re: Slow redraws in the debootstrap stage



On Wed, Nov 12, 2003 at 02:33:43AM -0500, Joey Hess wrote:
> Another problem .. as it was retreiving the base debs, it failed to get
> one for some reason (probably my iso is bad). I got a error message,
> then it displayed a note, which was displayed over top of the progress
> bar without clearing the screen. That was ok, but now I have the main
> menu displayed over top of the progress bar, which is sticking out the
> both sides "under" it.
[...]

Thanks a lot for testing, I now understand much better how it is
supposed to work.  I won't apply this patch until the problems
explained below are solved.

You exhibited 2 problems:
  a. Progress bars may not interact well with other objects.
  b. Display is corrupted when cfdisk is run.

But what happens if we had a graphical installer?  Progress bars
are certainly in a box, and other objects such as error messages
are in another box.  There is no reason to overlap them, thus
the interface cannot decide if an error message has to erase a
progress bar, or simply display a notice and let the script
continue.  Scripts *must* explicitly destroy progress bars (by
calling PROGRESS STOP) they have created, and not assume that
interface will does this job. So (a) is due to a broken script.

For (b), where should cfdisk be displayed?  Certainly not on the
same window.  So when scripts or programs are displaying something,
they have to be directed elsewere.  Maybe the newt frontend could
run cfdisk on another console, switch to this console and display a
message in newt telling that an application is running on vcN.
I believe that all we need is an EXTERNAL cdebconf command, which
runs its arguments on another console and waits for its child to
finish.  The di-utils-shell could then simply become
  #! /bin/sh
  . /usr/share/debconf/confmodule
  db_external /bin/sh

Denis



Reply to: