The Cygwin Project Readme 20.2 for Release B20.1 Cygwin Resources on the Internet ******************************** FTP Sites ========= The primary ftp site is `ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/'. There are also several mirrors: * North America: * Alberta: `ftp://ftp.reversion.ca/pub/mirrors/cygwin/' * Arizona: `ftp://ftp.ninemoons.com/pub/cygwin/' * California: `ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/' * California: `ftp://ftp.yggdrasil.com/mirrors/site/ftp.cygnus.com/pub/gnu-win32/' * California (secondary): `ftp://sourceware.cygnus.com/pub/cygwin/' * Kansas: `ftp://ftp.the-b.org/pub/cygwin/' * Tennessee: `ftp://sunsite.utk.edu/pub/cygwin/' * Central America: * Costa Rica: `ftp://sunsite.ulatina.ac.cr/gnu-win32/' * South America: * Brazil: `ftp://ftp.unicamp.br/pub/gnu/=EXTRA=/cygnus/cygwin/' * Africa: * South Africa: `ftp://ftp.sun.ac.za/sites/sourceware.cygnus.com/pub/cygwin/' * Asia: * Japan: `ftp://ring.aist.go.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.etl.go.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.asahi-net.or.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.crl.go.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.astem.or.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.jah.ne.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.saitama-u.ac.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.nacsis.ac.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.exp.fujixerox.co.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.so-net.ne.jp/archives/pc/gnu-win32/' * Japan: `ftp://ring.ip-kyoto.ad.jp/archives/pc/gnu-win32/' * Japan: `ftp://sysg.kek.jp/cygnus/cygwin/' * Japan: `ftp://ftp.u-aizu.ac.jp/pub/gnu/gnu-win32/' * Korea: `ftp://cair-archive.kaist.ac.kr/pub/gnu/gnu-win32/' * Australasia: * Australia: `ftp://mirror.aarnet.edu.au/pub/cygwin/' * Europe: * Austria: `ftp://gd.tuwien.ac.at/gnu/cygwin/' * Czech Republic: `ftp://sunsite.ms.mff.cuni.cz/MIRRORS/sourceware.cygnus.com/pub/cygwin/' * Denmark: `ftp://sunsite.auc.dk/pub/cygwin/' * Germany: `ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin32/mirrors/cygnus/' * Greece: `ftp://ftp.ntua.gr/pub/pc/cygwin/' * Hungary: `ftp://ftp.szrmkk.hu/pub/gnu-win32/ftp.cygnus.com/' * Poland: `ftp://sunsite.icm.edu.pl/pub/cygnus/cygwin/' * Slovenia: `ftp://sunsite.fri.uni-lj.si/pub/gnu-win32/' * Spain: `ftp://ftp.rediris.es/mirror/gnu-win32/' * Sweden: `ftp://ftp.sunet.se/pub/lang/cygwin/' * Switzerland: `ftp://sunsite.cnlab-switch.ch/mirror/cygwin/' * UK: `ftp://sunsite.org.uk/Mirrors/sourceware.cygnus.com/pub/cygwin/' * UK: `ftp://ftp.ccp14.dl.ac.uk/ccp14/ftp-mirror/programming/cygnus-gnu-win32/pub/gnu-win32/' The Cygwin Project WWW Site =========================== The main WWW page for the Cygwin project is `http://sourceware.cygnus.com/cygwin/'. A page containing tool-specific information is `http://www.cygnus.com/pubs/gnupro/'. Links to additional documentation are accessible from the main web page. Installation Instructions ************************* Contents ======== The following packages are included in the full release: Development tools: binutils, bison, byacc, dejagnu, diff, expect, flex, gas, gcc, gdb, itcl, ld, libstdc++, make, patch, tcl, tix, tk User tools: ash, bash, bzip2, diff, fileutils, findutils, gawk, grep, gzip, m4, sed, shellutils, tar, textutils, time The user tools release only contains the user tools. Full source code is available for these tools. It is split into these two units. Installing the binary release: ============================== Important! Be sure to remove any older versions of the Cygwin tools from your PATH environment variable so you do not execute them by mistake. Connect to one of the ftp servers listed above and cd to the directory containing the latest release. On our primary server, that would be: `ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/latest/'. If you want the development tools and the programs necessary to run the GNU configure mechanism, you should download the full binary release called `full.exe'. If you only care about the user tools listed above, download `user.exe' instead. If you have an unreliable connection, download the appropriate binary in smaller chunks instead. For the split cdk installer, get the files in the `full-split' subdirectory. Once downloaded, combine the split files at the command prompt by doing a: copy /b xaa + xab + xac + ... + xak + xal full.exe del xa*.* A similar process can be used for the user tools. Once you have an install executable on your system, run it. If a previous version of the software is detected, it will offer to uninstall it for you. Next it will ask you to choose an install location. The default is `:\cygnus\cygwin-b20'. Feel free to choose another location if you would prefer. Finally, it will ask you for the name of the Program Files folder shortcut to add. By default, the installer will create a `Cygwin B20' entry in a folder called `Cygnus Solutions'. When this step is completed, it will install the tools and exit. At this point, you should be able to look under the start menu and select "Cygwin B20". This will pop up a bash shell with all special environment variables set up for you. If you are running Windows 95 or 98 and are faced with the error message "Out of environment space", you need to increase the amount of environment space in your config.sys and try again. Adding the line `shell=C:\command.com /e:4096 /p' should do the trick if `C:' is your system drive letter. There are two remaining thing you should do from this prompt. First, you need to type `mkdir -p /tmp' to ensure that a directory for temporary files exists for programs that expect to find one there. Second, if you are installing the full distribution (`full.exe'), various programs will need to be able to find `/bin/sh'. You should `mkdir -p /bin' and put a copy of `sh.exe' there, removing the older version, if present. You can use the `mount' utility to select which drive letter is mounted as `/'. See the Frequently Asked Questions (FAQ) file for more information on `mount'. If you should ever want to uninstall the tools, you may do so via the "Add/Remove Programs" control panel. Installing the source code ========================== Before downloading the source code corresponding to the release, you should install the latest release of the tools (either the full release or just the user tools). Create the directory that will house the source code. `cd' there. Connect to one of the ftp servers listed above and cd to the directory containing the latest release. On our primary server, that would be: `ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/latest/'. If you want the user tools source code, `cd' into the `user-src-split' subdirectory. Download the files there. If you want the development tools sources, `cd' into the `dev-src-split' subdirectory. Download the files there. Back in the Windows command shell, for the user tools source: copy /b xba + xbb + xbc + xbd + xbe + xbf + xbg user-src.tar.bz2 del xb*.* bunzip2 user-src.tar.bz2 tar xvf user-src.tar For the development tools source: copy /b xca + xcb + xcc + xcd + ... + xck + xcl dev-src.tar.bz2 del xc*.* bunzip2 dev-src.tar.bz2 tar xvf dev-src.tar Both expand into a directory called `src'. And you should be done... Upgrading to B20.1 ================== If you downloaded the original B20.0 release, you should definitely at least upgrade the Cygwin library to the version present in B20.1. To do this, download the file `ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/cygwin-b20/cygwin1-20.1.dll.bz2', decompress it with bunzip2, and then install the dll, replacing the file cygwin-b20/H-i586-cygwin32/bin/cygwin1.dll in your original installation of 20.0. There are some additional patches in a few of the other tools (including a gcc change that makes -mno-cygwin find the correct header files). In addition, the tools have been built with a compiled-in path of /cygnus/cygwin-b20/ which will make some tools such as bison find their library files without help from environment variables. To install the full 20.1 release, you will need to download the correct installer from scratch. It will offer to uninstall the existing release and replace it with 20.1 (You should choose to uninstall b20 and proceed). We have diff files on the ftp site that can be used to upgrade the original B20.0 sources. 20.0-20.1-dev-src.diff.bz2 upgrades the development tools sources. 20.0-20.1-user-src.diff.bz2 upgrades the user tools sources. They come compressed so you'll need to bunzip2 them before proceeding. As an example, if the development tools are in the directory called "src" and the patch is in the directory above it, apply the patch as follows: cd src patch -p1 -E < ../20.0-20.1-dev-src.diff Beta 20.1 Update (Dec 4 1998) ***************************** This is a bug fix update to the Beta 20 release. The main change is an improved version of the Cygwin library although there are also a couple of other minor changes to the tools. Changes in specific tools: -------------------------- The "-mno-cygwin" flag to gcc now include the correct headers. In 20.0, it included the Cygwin headers which was incorrect. The "-pipe" flag to gcc works correctly now. The cygcheck program now reassures users that not finding cpp is the correct behavior. The "-b" flag to md5sum can now be used to generate correct checksums of binary files. The libtermcap library has been added to the compiler tools sources. It is the new source of the termcap library and /etc/termcap file. The less pager (using libtermcap) has been added to the binary distribution. Changes in the Cygwin API (cygwin.dll): --------------------------------------- This version of Cygwin is backwards-compatible with the beta 20 and 19 releases. The library is now much more stable under Windows 9x and the bugs affecting configures under 9x (and NT to a lesser extent) have also been fixed. The bug that made it necessary to start the value of the CYGWIN environment variable with two leading spaces has been fixed. The serial support in the select call has been fixed. Handling of DLLs loaded by non-cygwin apps has been improved. Bugs in dlopen have been fixed. Passing _SC_CHILD_MAX to the sysconf function now yields CHILD_MAX (63) instead of _POSIX_CHILD_MAX (3). Several minor path bugs have been fixed. Including the one that caused "mkdir a/" to fail. The include file sys/sysmacros.h has been added. Added missing protos for wcslen and wcscmp to wchar.h. __P is now defined in include/sys/cdefs.h. To support that last change, the top-level Makefile.in now sets CC_FOR_TARGET and CXX_FOR_TARGET differently. Cygwin now exports the following newlib bessel functions: j1, jn, y1, yn. Several tty ioctl options have been added: TCGETA, TCSETA, TCSETAW, and TCSETAF. Several functions cope with NULL pointer references more gracefully. Problems with execution of relative paths via #! should be fixed. Release Beta 20 (Oct 30 1998) ***************************** This is a significant update to the Beta 19 release. In addition to an EGCS-based compiler and updated tools, this release includes a new version of the Cygwin library that contains many improvements and bugfixes over the last one. The project has a new name! --------------------------- Starting with this release, we are retiring the "GNU-Win32" name for the releases. We have also dropped the "32" from Cygwin32. This means that you should now refer to the tools as "the Cygwin toolset", the library as "the Cygwin library" or "the Cygwin DLL", and the library's interface as "the Cygwin API". Because of this name change, we have changed any aspects of the library that involved the name "Cygwin32". For example, the CYGWIN32 environment variable is now the CYGWIN environment variable. API functions starting with cygwin32_ are still available under that form for backwards-compatibility as well as under the new cygwin_-prefixed names. The same goes for the change of preprocessor define from __CYGWIN32__ to __CYGWIN__. We will remove the old names in a future release so please take the minute or two that it will take to remove those "32"s. Thanks and I apologize for the hassle this may cause people. We would have changed the name to "Bob" but that name's already taken by Microsoft... :-) Why change it? For one thing, not all of the software included in the distributions is GNU software, including the Cygwin library itself. So calling the project "GNU-Win32" has always been a bit of a misnomer. In addition, we think that calling the tools the "Cygwin tools" that use the "Cygwin library" will be less confusing to people. Also notice that we are now on the spiffy new sourceware.cygnus.com web/ftp site. The old address will work for some unknown period of time (hopefully at least until we get all of the mirrors adjusted). Changes in specific tools: -------------------------- The latest public EGCS release is now the basis for the compiler used in Cygwin distributions. As a result, EGCS 1.1 is the compiler in this release, with a few additional x86/Cygwin-related patches. Those of you who are more interested in native Windows development than in porting Unix programs will be glad to know that a new gcc flag "-mno-cygwin" will link in the latest Mingw32 libs and produce an executable that does not use Cygwin. All of the other development tools have been updated to their latest versions. The linker (ld) includes many important bug fixes. It is now possible to safely strip a DLL with a .reloc section. The windres resource compiler is significantly improved. Beta 20 also includes upgrades to a number of packages: ash-0.3.2-4, bash 2.02.1, grep-2.2, ncurses 4.2, and less 332. We have added bzip2 0.9.0 to the distribution. And you'll now find that the df utility has joined its other friends from the fileutils package. The sh executable is still ash from the Debian Linux distribution but no longer has the problematic quoting bug that was present in the Beta 19 release. Control-Cs in the bash shell no longer kill background tasks. Tcl/tk are upgraded to version 8.1a2 (with additional patches). Compatible versions of tix and itcl are included. These all include Cygwin-compatible configury files so you can do a Unix-style build of the Win32 ports of tcl/tk. expect has been upgraded to 5.26 with some additional Cygwin patches. In response to customer requests and feedback, Cygnus has developed a better graphical front end to GDB than GDBtk or WinGDB. This tcl-based GUI is shipping today to customers of the GNUPro Toolkit. The instrumentation changes to GDB and the tcl interpreter that was built into GDB are part of the GPL'd source base. But the tcl scripts are not being made available to the net at this time. For this reason, you will only find a command-line version of gdb in this Cygwin release. DJ Delorie has written a new "cygcheck" program that will print out useful information about how your Cygwin environment is set up, what DLLs a named executable is loading from where, etc. We hope this will make it easier to help diagnose common setup problems. The ps utility has been upgraded. It now has several options including shorter and longer output formats. Changes in the Cygwin API (cygwin.dll): --------------------------------------- This version of Cygwin is backwards-compatible with the beta 19 release. You can use the new "cygwin1.dll" with your old B19-compiled executables if you move the old "cygwinb19.dll" out of the way and install a copy of "cygwin1.dll" as "cygwinb19.dll". Quite a lot of the Cygwin internals have been rewritten or modified to address various issues. If you have a question about specific changes, the winsup/ChangeLog file in the development tools sources lists all changes made to the DLL over the last three years. Following are a few highlights: We are now using a new versioning scheme for Cygwin. There is now a separate version number for the DLL, the API, the shared memory region interfaces, and the registry interface. This will hopefully make it easier for multiple Cygwin toolsets to coexist in one user environment. Windows 98 is now supported (it is like Windows 95 from Cygwin's perspective). We still recommend upgrading to Windows NT. While there is still a lot left to do in improving Cygwin's runtime performance, we have put some effort into this prior to the B20 release. Hopefully you will find that the latest version of Cygwin is faster than ever. In addition, we have plugged several nasty handle leaks associated with opening/closing files and with using ttys. The lseek call now uses WriteFile to fill gaps with zeros whenever a write is done past an EOF, rather than leaving "undefined" data as Win32 specifies. Significant work has been done to improve the Cygwin header files. The Cygwin Support for Unix-style serial I/O is much improved. Path handling has had another round of fixes/rewrites. We no longer use NT Extended Attributes by default for storing Unix permissions/execute status because the file NT creates on FAT partitions is not scalable to thousands of files (everything slows to a crawl). Signal handling has also gotten a fair amount of attention. Unfortunately, there are still some problems combining itimers and Windows 9x. The number of ttys has been upped from 16 to 128. New API calls included in the DLL: sethostent, endhostent. As mentioned earlier, all cygwin32_-prefixed functions are now exported with a cygwin_ prefix instead. Please adjust your code to call the newly named functions. reads of `slow' devices are now correctly interrupted by signals, i.e. a read will receive an EINTR. Known/potential Problems in the B20.1 Release ********************************************* Windows 95 freezing up ====================== While this problem may have been worse under B19, Control-c's in bash under Win 95 may still be able to lock up the Win 95 kernel, freezing your machine. This problem can be fixed if you are running the OSR2 version of Win 95 by installing the USB patch available on OSR2 CDs or on MSDN subscription CDs. More information about OSR2 and the USB patch is available from `http://www.compuclinic.com/osr2faq/index.html'. Some programs can't deal with // pathname scheme in arguments ============================================================= gcc and other tools aren't fully compatible with the current pathname scheme: it can't grok an argument of -I//d/foo which means it is vital that when attempting to configure/build UNIX packages, that only normal paths with single slashes are used.