Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Wed, 26 Oct 2005 09:48:04 -0500 (CDT) From: Satish Balay To: cygwin AT cygwin DOT com Subject: Re: cygwin-setup & rebaseall In-Reply-To: <435EE2BE.86691C8F@dessent.net> Message-ID: References: <435EE2BE DOT 86691C8F AT dessent DOT net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 25 Oct 2005, Brian Dessent wrote: > Satish Balay wrote: > > > - open a dialog box with a message: > > "some packages that require 'rebaseall' are updated. This operation > > cannot be done at this time due to active cygwin processes. Please > > reboot, shutdown cygwin services, and run 'rebaseall' from 'ash'." > > The thing is, you can't just do a "partial" rebaseall. If you update > just one DLL, you can't just pick a new base address for that one DLL, > you have to start over and reassign all new base addresses to every > DLL. This is because the current algorithm for choosing the base > addresses just packs them together back to back, so adding/modifying one > could potentially cause all those below to have to be moved. You can > get around this by setting up some kind of registry of assigned base > addresses, or treating the problem like a heap, but that get > extraordinarily more complex because you have to maintain state. Here I was sugesting 'rebaseall' which I gues is not a "partial" rebase > This is why the whole rebasing method is not scaleable and why we should > really be aiming to throw away rebase and use --enable-auto-image-base > for every package. According to Jason's post, --enable-auto-image-base is been in use for a while. [Since python doesn't always work without rebaseall] - is there some other issue with this approach? [mabye some dependent package should be built with --enable-auto-image-base - but it isn't?] > So, the reason I mention all that is that it means that the above dialog > box would be displayed *any time* that setup was run with *any cygwin > program or service active*, no matter how small or irrelevent. We would > get flooded with complaints about this extra annoying dialog box, and > "why can't setup replace in use files like it used to", and "I don't > care about rebasing, all my apps work fine, how can I disable this?" So if rebase is done - any package with a dll would have to trigger a rebase? I agree - if every update would trigger this - its not good. > > > - open a dialog box with a message: "some packages that require > > 'rebaseall' are updated - hence setup is incomplete. Please reboot, > > shutdown cygwin services and rerun setup - so that it can continue > > and fix this." > > You wouldn't want to bail partway through a rebase and leave things in a > partial state. What setup would have to do is perform the full rebase > of all DLLs, scheduling any that were in use for replacement with their > rebased copy on the next reboot, as it already does for upgrading DLLs. > But as I've been trying to say this requires a great deal of coding in > setup because you have to internalize all the rebasing logic, it can't > just punt to the rebaseall script. Here I was not implying partial rebase. Currently rebaseall doesn't start doing anything if it sees any running cygwin process... [so the same thing could be done] Satish -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/