From: SourceForge.net <no...@so...> - 2008-11-03 08:02:45
|
Bugs item #2218384, was opened at 2008-11-03 02:02 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=2218384&group_id=2435 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: MinGW Installer Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: John Smith (godfall) Assigned to: Nobody/Anonymous (nobody) Summary: Installer Fails to Download "MinGW base tools" Initial Comment: Hi: I tried to install MinGW with MinGW-5.1.4.exe yesterday (November 1, 2008), and it fails at the download stage. I am running Windows XP with SP2. The steps to reproduce this problem are: 1) Run installer 2) Choose "Download and install" or "Download only" (the problem appears either way) 3) Choose "Current" package 4) Select any type of install that includes "MinGW base tools". The simplest would be, of course, a "Minimum" install. 5) Select a download location. It doesn't matter whether it has a space or not (for this bug). 6) The download process will almost immediately fail with something like "Connection appears to have dropped. Please check your dial-up settings or IE proxy settings." It will fail no matter how many times you click "Retry". I downloaded the source code for the installer, and looking at the file mingw.nsi (I'm not sure what language this is written in, so bear with me), it appears the problem is in the file parsing code. Specifically, in the function ChoosePackage, there is the following code, presumably to extract the names and sizes of the various tarballs: ReadINIStr $R0 "$EXEDIR\mingw.ini" $Package "runtime" ${If} $R0 == "" ReadINIStr $R0 "$EXEDIR\mingw.ini" current "runtime" ${EndIf} ${StrTok} $runtime $R0 "|" 0 0 ${StrTok} $R1 $R0 "|" 1 0 SectionSetSize ${SecRuntime} $R1 ReadINIStr $R0 "$EXEDIR\mingw.ini" $Package "w32api" ${If} $R0 == "" ReadINIStr $R0 "$EXEDIR\mingw.ini" current "w32api" ${EndIf} ${StrTok} $W32API $R0 "|" 0 0 ${StrTok} $R1 $R0 "|" 1 0 SectionSetSize ${SecW32API} $R1 If you then take a look at the init file mingw.ini, you will see that for the "Current" package (make sure you look at the file after running the installer so that you have an updated version), there are 2 problems: 1) There is more than one "runtime" entry, and moreover, they are called "runtime-dev" and "runtime-dll" 2) The "w32api" entry is actually called "w32api-dev". If you attempt to download the "Previous" package, everything will work, because, looking at mingw.ini again, the "runtime" and "w32api" entries are in the format that the parsing code expects. The "Current" package also works if you change the appropriate mingw.ini entries as the installer is running. In terms of solving it, I'm guessing you could either make the parsing code more robust by only matching the beginning of the entry name instead of the whole name, and looping over all entries instead of assuming a singly entry (e.g., look for all entries which begin with "runtime"). Of course, you could instead make server-side changes as to how the entries are named (e.g., make sure there is only one "runtime" entry and that its actually called "runtime"). Well anyways, I'm sure you guys will have no problems solving this :D Thanks for your wonderful work, GodFall ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102435&aid=2218384&group_id=2435 |