home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
- README FOR BASH-1.12 UNDER OS/2
-
-
- This archive consists of files which I downloaded from the GNU FTP site at
- MIT and modified so that they would compile and mostly work under OS/2. I
- use the HPFS on my system, so the file names have not been changed to the
- dreaded 8.3 format. The programs in this archive will compile under the
- emx 0.8g version of the GNU compiler. The Makefile is intended for use
- with dmake.
-
- This file is an important improvement over various versions of bash(1)
- which are available for OS/2. The other ports do not get status from child
- processes, hence are virtually useless for running things like
- configuration scripts. The problem is caused by the emx implementation of
- the fork() command. The really ugly hacks were an attempt to work around
- problems with fork(). This is not a complaint - the marvel is not that
- fork works imperfectly but that it works at all under OS/2. Where ever
- possible I replaced the fork(); exec() sequence with a direct OS/2 DosExec
- call. I also made some mods to the emx library related to the exec()
- function. One of these is very important in that it fixes a bug in
- spawnve() which causes bash (or any other program) to crash if it attempts
- to exec a program and pass more that 512 characters of parameter
- information. Even if you decide not to use bash I STRONGLY reccomend that
- you make this fix in your copy of the emx library. The other changes
- enable a caller to run programs pretty much as OS/2 shells run them. i.e.,
- if it can not find the input file on the path it attempts to append '.exe'
- to the input file name and run the resulting file. If the given file
- appears to be ascii the library routines assume the file is a command
- script and use the UNIX #! thing to try and find the shell. Oh yes, there
- are some ugly changes required because OS/2 will not allow a parent to
- receive exit status from a grandchild. I made other hacks as required - I
- can't remember all the reasons. Mostly changes are marked with my initials
- (ROB) and the date.
-
- The resulting executable is by no means perfect, and the unbiased observer
- would probably not even call it good. However, it is stable, and operates
- fairly reliably. I mostly use it to run configuration scripts that
- typically come with GNU source archives. These files generally need some
- hand configuration. Change things like /bin/sh to bash, change
- redirections from /dev/null to nul, make sure CC equals gcc or your
- favorite compiler, make executable file names end with .exe, etc. Running
- the scripts is generally uneventful, except that the shell sometimes
- receives some 'hangup` signals. I can't find the reason for this. I don't
- even know how often you will have to edit the resulting Makefile by hand
- because of this situation.
-
- If a script uses "here indirections", ie things like
- cat<<END_OF_FILE
- you must have a directory /tmp on your current disk. Temporary files are
- created there. Unfortunately, they are not deleted so you will have to go
- into this directory and delete the files there by hand from time to time.
- Or, you could do that during your start up procedure.
-
- Making bash requires dmake. I have been unable to use GNU make
- successfully because I can't get things like
- -DVAR=\"Some text\"
- to work under OS/2. To make bash proceede as follows:
- 1. Edit the file /emx/include/sys/process.h by deleting the qualifier
- __volatile__ from the definition of abort(). I have made other
- changes to the emx include files but I have been less than rigorous in
- recording them, so you may have to make a few other changes as well.
- 2. Execute dmake in each of the three directories lib/glob, lib/readline/
- and lib/builtins.
- 3. In the main bash directory type `dmake -f makefile.os2'.
-
- My Email address:
- robrien@gsfcmail.nasa.gov
-
-