Mailing-List: contact cygwin-apps-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-apps-owner AT sourceware DOT cygnus DOT com List-Subscribe: List-Archive: List-Post: List-Help: , Delivered-To: mailing list cygwin-apps AT sources DOT redhat DOT com Message-ID: <3BA3A5F4.8010100@ece.gatech.edu> Date: Sat, 15 Sep 2001 15:03:16 -0400 From: Charles Wilson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.2) Gecko/20010713 X-Accept-Language: en-us MIME-Version: 1.0 To: cygwin-apps AT cygwin DOT com Subject: [RFD] ncurses update Content-Type: multipart/mixed; boundary="------------060405030804030001020507" This is a multi-part message in MIME format. --------------060405030804030001020507 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit I've made a few changes in the latest ncurses package -- which bring up a few setup.exe-related issues. WHAT I DID: #1. Now use the auto-import stuff instead of __declspec(dllXXport) modifiers. No more need for *compile-time* flags at all; only linktime flags: -static or -Wl,--enable-auto-import. However, ncurses does some of the "bad" things (the ones that today's binutils warns about, but the previous binutils created buggy code for). The fix for this requires changes in the ncurses library code (specifically, configure using BROKEN_LINKER -- which changes some of the exported DATA into functions. If you recompile apps, you don't need to worry about this though; it's transparently handled in ncurses_cfg.h/curses.h). This is an ABI change, requiring the DLL number to be bumped, and apps to be recompiled. (e.g. we now have cygncurses6.dll, etc) On the upside, this change reduces the source code patch from 450k to about 55k (and most of the remaining stuff is just my wordy documentation) #2. To keep old apps working, I created a new package, called 'libncurses5' which contains only the DLLs from the previous ncurses package (cygncurses5.dll, etc) #3. I split the terminfo database apart from the ncurses package. It has its own source package (minimum autotools files, plus terminfo.src). Currently, it is synced with the terminfo.src in the newest ncurses source package, but I expect they will diverge. (I'll sumbit the changes back to GNU, so these packages should automagically 'resync' at each new official GNU release of ncurses.) This release includes various changes and fixes from Egor Duda (July 10) and Kazuhiro Fujieda (Sep 3). (Note that this means that packages which currently depend on 'ncurses' will actually depend on libncurses5 and terminfo; new packages built against ncurses will depend on ncurses and terminfo (until DLL version 7 comes out, at which point the dependencies will change to libncurses6 and terminfo for the then-current dependent packages. Should we skip this and just split the new DLL's out into libncurses6 right away, or fold the old version 5 DLLs back into the ncurses package and skip this whole libncursesX stuff? More below) Anyway, we now have: contrib/ncurses/ncurses-5.2-6.tar.bz2 contrib/ncurses/ncurses-5.2-6-src.tar.bz2 contrib/ncurses/libncurses5-5.2-1.tar.bz2 contrib/ncurses/ncurses-5.2-5-src.tar.gz (note that the source package has a different name than the binary package, for libncurses5) contrib/terminfo/terminfo-5.2-1.tar.bz2 contrib/terminfo/terminfo-5.2-1-src.tar.bz2 ISSUES [test] doesn't seem to work. ---------------------------- I created a fake setup.ini to install these on my own machine (attached). I labelled the new versions 'test' -- but they still show up immediately as "new" versions. This is true both for the new packages (terminfo and libncurses5) but also for the updated package (ncurses). 'test' versions should be hidden unless you click the 'Exp' radio button, right? Installation order ------------------ Because the old ncurses contains certain files that are now in other packages, you MUST upgrade in order: 1) upgrade ncurses-5.2-5 to ncurses-5.2-6 you now have a broken installation, because the version 5 DLLs were uninstalled, and the terminfo database was removed 2) install the new libncurses5 and terminfo packages If you don't do it in this order, then you'll have problems. For instance, setup is alphabetical, so the default order will be libncurses5, ncurses, terminfo. What will happen is: libncurses5 is installed (replacing the version 5 DLLs from the current ncurses install). Then, ncurses-5.2-5 is uninstalled -- *removing* those version 5 DLLs (as well as removing the terminfo database) Next, ncurses-5.2-6 is installed (with its version 6 DLLs). Then, the new terminfo package is installed. Oops. similar problems will happen if you install the terminfo package before updating the ncurses package. However, I can't just release the new ncurses package and wait a week for everybody to update THAT, and THEN release the new libncurses5 and terminfo packages -- because everyone's system would be broken during that week. How should this be handled? (Do you *really* think a blurb in the release announcement, like this WARNING WARNING!!! You must run setup twice to handle thsi upgrade. FIRST, *deselect* the terminfo and libncurses5 packages, and ONLY upgrade the ncurses package. Continue until setup exits. THEN, immediately folloing that, run setup AGAIN, and this time install the new terminfo and libncurses5 packages. will do the trick? What do you think about the following? --------------------------------------- a) the --enable-auto-import change to ncurses (and its related 'bump the DLL number requirement) b) the new libncurses5 package? (should I just put the old DLLs inside ncurses-5.2-6 package? should the new DLL's themselves be split from the ncurses package and put in libncurses6 package?) What about the source code naming difference (libncurses5 != ncurses)? c) splitting the terminfo package (and forking the source code) For: allows me to update the terminfo database more frequently and easier. Against: forking is bad. I have these packages ready to go, but I don't want to upload them to sourceware at least until the [test] thing is corrected and we reach a consensus on these other issues. FWIW, I've installed these new packages on my system and it seems to work okay. --Chuck --------------060405030804030001020507 Content-Type: text/plain; name="setup.ini" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="setup.ini" # This file is automatically generated. If you edit it, your # edits will be discarded next time the file is generated. # See http://cygwin.com/setup.html for details. # setup-timestamp: 995306402 setup-version: 2.78.2.3 @ libncurses5 [test] version: 5.2-1 install: contrib/ncurses/libncurses5-5.2-1.tar.bz2 181942 source: contrib/ncurses/ncurses-5.2-5-src.tar.gz 1822746 @ ncurses version: 5.2-5 install: contrib/ncurses/ncurses-5.2-5.tar.gz 1116768 source: contrib/ncurses/ncurses-5.2-5-src.tar.bz2 1822746 [prev] version: 5.2-4 install: latest/ncurses/ncurses-5.2-4.tar.gz 2479155 source: latest/ncurses/ncurses-5.2-4-src.tar.gz 1802426 [test] version: 5.2-6 install: contrib/ncurses/ncurses-5.2-6.tar.bz2 822182 source: contrib/ncurses/ncurses-5.2-6-src.tar.bz2 1367293 @ terminfo [test] version: 5.2-1 install: contrib/terminfo/terminfo-5.2-1.tar.bz2 170736 source: contrib/terminfo/terminfo-5.2-1-src.tar.bz2 261953 --------------060405030804030001020507--