Subject: Re: README.txt
From: [email-masked] (Michael Hirmke)

12 Sep 1997 09:37:47 -0700
Message-ID: <[email-masked]>
References: <c=US%a=_%p=Eastman%l=[email-masked]>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
To: [email-masked]

Hi,

[...]
> anything in the b18 install except the one in the tcl subdir.  Is there
> another one that I should be finding?

------------------------< snip snip snip >-----------------------------
README.txt for gnu-win32 beta 18 release
May 7, 1997

   You can find a link to the most recent release in
`ftp://ftp.cygnus.com/pub/gnu-win32/latest'

Changes since the last release
==============================

   This is a major release.  The new cygwin.dll is still
backwards-compatible with previously linked applications but contains
significant changes.

   We have completely changed the installation process to make use of
an InstallShield5-based installer.  This should reduce the number of
installation problems people have experienced in the past.  However, it
is still necessary to set environment variables by hand, as explained
later.  (Future gnu-win32 installers may include the capability to do
this automatically).

Changes in specific tools:
--------------------------

   GCC compilation times have been improved by 20-30% by using spawn()
instead of fork().

   GCC accepts both Win32 and POSIX paths/path lists in its environment
variables (COMPILER_PATH, LIBRARY_PATH, C_INCLUDE_PATH,
CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH)

   GDB comes with a tcl/tk-based GUI (gdbtk).  You can still invoke the
command line gdb by invoking it with "gdb -nw".

   Bash verifies that /tmp exists and is a directory upon startup.  It
complains if this isn't the case.

   Running gcc or ld with "-s" used to create invalid executables.  The
bug in bfd that was responsible for this has been fixed.

   The conflict between String.h and string.h (and other such pairs of
header files) where you include one and get the other has been fixed.

   The top level install-sh script tries to install foo.exe if asked to
install foo when foo's not present.  This fixes many installs of Unix
software.

   Dlltool has preliminary support for the IMPORT declaration in .def
files when invoked with -I.  Feel free to experiment with it but once
this functionality is tested more extensively this flag may go away.

   Time is upgraded to version 1.7.

   Make is upgraded to version 3.75.

   Make accepts both Win32 and POSIX path lists in the VPATH variable.

Changes in the Cygwin32 API (cygwin.dll):
-----------------------------------------

   The following is now supported:

* UNC paths
* Reverse index escapes in console code
* Blocking select()s on a combination of sockets/handles
* Directory symlinks.
* Reparenting of child processes.

   The following calls have been added:

* mmap(), mprotect(), msync(), munmap().  fork() changed to support
these.
* fsync(), statfs(), fstatfs().
* getprotobynumber() and getservbyport().
* get_osfhandle(), cwait().
* spawnl(), spawnle(), spawnlp(), spawnlpe(), spawnv(), spawnve(),
spawnvp(), spawnvpe().
* nice().
* sigpending(), sigsuspend()
* Under NT only, chown(), getgrgid(), getgrnam(), endgrent(), getgrent(),
setpwend(), getpwent(), endpwent().  Win95 still has these as stubs.

   Significantly better signals / exception handling support added.
The kill signal works much better now (control-C works in bash).

   Shell scripts now run the shell specified after the #! instead of
always defaulting to /bin/sh.

   Floating point registers are now properly initialized in the crt0.o.

   Opening non-disk files such as com ports no longer check to see if
they are symlinks or executables.

   The console title now is set to the name of the running process.

   Winsock is now initialized upon app startup.

   Moved reent_data from private address space to cygwin.dll.

   The system() call now invokes spawnvp() instead of fork()/exec().

   Support for NT extended attributes has been added but is disabled
for now because it slowed things down too much.  We want to use them to
remember info about symlink and executable status of files.

   Under NT only, utilities mkpasswd and mkgroup can generate a valid
/etc/passwd and /etc/group.

   Earlier releases stored mount points in the registry under "Cygnus
Support".  This changed to "Cygnus Solutions" starting with beta 18.
Either use a registry editor (regedit under NT) to rename the old entry
or just redo your mount points and the cygwin.dll will automatically
create the new one for you.

   Mount points can now be up to MAX_PATH in length instead of 30
characters.

Contents
========

   The following packages are included in the full release:

   Cygnus Developer's Kit (CDK): binutils, byacc, diff, flex, gas, gcc,
gdb, ld, libg++, libstdc++, make, patch

   user tools: bash, fileutils, findutils, gawk, grep, gzip, m4, sed,
shellutils, tar, textutils, time

   Full source code is available for these tools.  It is split into
these two units.

Installing the binary release:
==============================

   First, remove any older versions of the gnu-win32 tools that exist
in your $PATH (or delete them).

   Connect to our ftp server and cd to the following directory:
`ftp://ftp.cygnus.com/pub/gnu-win32/latest'.

If you want the development tools...
------------------------------------

   If you want the development tools and the programs necessary to run
the GNU configure mechanism, you should download the whole release.

   Download `cdk.exe'.

   If you have an unreliable connection, download the binary in smaller
chunks instead.  For the split cdk installer, get the files in the
`cdk-split' subdirectory.  Once downloaded, combine the split files at
the command prompt by doing a:

     copy /b xaa + xab + xac + ... + xag + xah cdk.exe
     del xa*.*

   Run `cdk.exe' and follow the instructions to install the tools.  The
default install location is `<systemdrive>:\gnuwin32\b18'.  Future
examples will assume this location with <systemdrive> being the C drive.

   Next you must set four gnu-win32-related environment variables or the
tools will not function correctly.  You may prefer to do this outside
of bash so you can use the tools from the command.com as well as from
within bash.  This means using the `System' control panel in NT or
modifying the autoexec.bat under Windows 95.

   Assuming the `C:\gnuwin32\b18' install location:

   1) Set the GCC_EXEC_PREFIX environment variable to

   	`C:\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\'

   The trailing slash is important!

   2) Add

   	`C:\gnuwin32\b18\H-i386-cygwin32\bin;C:\gnuwin32\b18\tcl\bin'

   to your $PATH.  This is where the executables live.

   3) Set the TCL_LIBRARY environment variable to

   	`C:/gnuwin32/b18/tcl/lib/tcl7.6'

   You must use forward slashes in this variable.

   4) Set the GDBTK_LIBRARY environment variable to

   `C:/gnuwin32/b18/share/gdbtcl'

   You must use forward slashes in this variable.

   Various programs need to be able to find `/bin/sh'.  You should
create a `/bin' if one doesn't already exist and put a copy of `sh.exe'
there.  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'.

   Many programs including bash and byacc need to be able to find a
`/tmp'.  Verify that `/tmp' exists on the drive mounted as `/',
creating one if necessary.

   And you should be done!

   If you should ever want to uninstall the tools, you may do so via
the "Add/Remove Programs" control panel.

If you're not interested in the development tools...
----------------------------------------------------

   If you just want bash, fileutils, textutils, and other utilities and
don't need the development tools, you do NOT need to install the entire
release.

   Download `usertools.exe'.

   If you have an unreliable connection, download the binary in smaller
chunks instead.  For the split user tools installer, get the files in
the `usertools-split' subdirectory.  Once downloaded, combine the split
files at the command prompt by doing a:

     copy /b xaa + xab + xac + xad + xae usertools.exe
     del xa*.*

   Run `usertools.exe' and follow the instructions to install the tools.
The default install location is `<systemdrive>:\gnuwin32\b18'.  Future
examples will assume this location with <systemdrive> being the C drive.

   Next you need to add the executables to your $PATH.  You may prefer
to do this outside of bash so you can use the tools from the
command.com as well as from within bash.  This means using the `System'
control panel in NT or modifying the autoexec.bat under Windows 95.

   Assuming the `C:\gnuwin32\b18' install location, add

   	`C:\gnuwin32\b18\H-i386-cygwin32\bin'

   to your $PATH.

   Various programs need to be able to find `/bin/sh'.  You should
create a `/bin' if one doesn't already exist and put a copy of `sh.exe'
there.  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'.

   Many programs including bash need to be able to find a `/tmp'.
Verify that `/tmp' exists on the drive mounted as `/', creating one if
necessary.

   And you should be done!

   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 tools (either the full release or just the
user tools).

   Create the directory that will house the source code.  `cd' there.

   Connect to our ftp server and cd to the following directory:
`ftp://ftp.cygnus.com/pub/gnu-win32/latest'.  If you want the user
tools source code, `cd' into the `usertools-src' subdirectory.
Download the files there.  If you want the Cygnus Developer's Kit
sources, `cd' into the `cdk-src' subdirectory.  Download the files
there.

   Back in the command.com, for the user tools source:

     copy /b xba + xbb + xbc + xbd + ... + xbk + xbl usersrc.tar.gz
     del xb*.*
     gunzip -d usersrc.tar.gz
     tar xvf usersrc.tar

   For the compiler tools source:

     copy /b xca + xcb + xcc + xcd + ... + xck + xcl cdksrc.tar.gz
     del xc*.*
     gunzip -d cdksrc.tar.gz
     tar xvf cdksrc.tar

   Both will expand into a directory called `src'.

   And you should be done...

Cygnus resources online
***********************

   The main WWW page for the GNU-Win32 project is:

   	http://www.cygnus.com/misc/gnu-win32/

   Tool-specific information can be found here:

   http://www.cygnus.com/library/

   Links to additional documentation are accessible from the main web
page.

Known/potential problems
************************

Fixed-length arrays in the dll
==============================

   There are still a lot of places in the dll where fixed-length arrays
are used instead of dynamic structures which makes us use more memory
than necessary or limits the capabilities of the Cygwin32 layer.  Some
of these have been fixed since beta 16.

Missing POSIX functions
=======================

   There's still a lot of standard posix functionality that isn't
present that could be.   Also, some functions aren't implemented fully.
For example, sync returns 0, even though it doesn't do much.  We're
filling in the gaps slowly but surely.

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 self-host, that only normal paths with single
slashes are used.

DOS special filenames
=====================

   Files cannot be named com1, lpt1, or aux (to name a few); either as
the root filename or as the extension part.  If you do, you'll have
trouble.  Unix programs don't avoid these names which can make things
interesting.  Eg, the perl distribution has a file called `aux.sh'.
The perl configuration tries to make sure that `aux.sh' is there, but
an operation on a file with the magic letters 'aux' in it will hang.

User defined mallocs.
=====================

   If you define a function called `malloc' in your own code, and link
with the DLL, the DLL *will* call your `malloc'.  You'd better make
sure that your malloc more or less works.

   If you run any programs from the DOS command prompt, rather than
from in bash, the DLL will try and expand the wildcards on the command
line.  This process uses `malloc' *before* your main line is started.
If you have written your own `malloc' to need some initialization to
occur after `main' is called, then this will surely break.

Mixed case filenames.
=====================

   The perl config causes some other problems too; the config<foo>.SH
scripts generate a file called "Makefile", and use and delete a file
called "makefile" on the way.  Because of NT's case insensitivity, this
will nuke Makefile, leaving you with nothing.  You can fix this by
mounting with the 'mixed' option.
------------------------< snip snip snip >-----------------------------

> 
> Eric M. Smith

Bye.
Michael.
--
Michael Hirmke           | Telefon +49 (911) 557999
Georg-Strobel-Strasse 81 | FAX     +49 (911) 557664
90489 Nuernberg          | E-Mail  [email-masked]
                         | WWW     http://minimike.franken.de/
-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".