Message-Id: <201906300302.x5U32uET003723@delorie.com> Date: Sun, 30 Jun 2019 02:21:47 +0200 From: "Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de) [via djgpp-announce AT delorie DOT com]" To: djgpp-announce AT delorie DOT com Subject: ANNOUNCE: Release 2 of the DJGPP port of GNU Bash 4.1.17 uploaded. Content-Type: text/plain; charset=ISO-8859-15; format=flowed Reply-To: djgpp AT delorie DOT com This is a port of GNU Bash 4.1.17 to MSDOS/DJGPP. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX.2 shell spec, but also with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features. DJGPP specific changes. ======================= - This port is based on the last port of bash to DJGPP (aka bsh205b*.zip). - The most remarkable change for this port is that it uses its own pipe emulation instead of using the pipe function provided by libc. This is necessary to get the port working on plain DOS. The pipe function provided by libc exploits features that are only available for the file system of the different Windows versions and thus fails if used on plain DOS. This has the consequence that no one of the existing bash ports do work on plain DOS as soon as pipes are involved. They work flawlessly on Win98SE, Win2K and WinXP. - This port may not work neither on FreeDOS 1.2 nor on FreeDOS 1.3RC1. The issue concerns the handling of the file pointer by the kernel when reading and writing to a file, thus having very serious implications when STDOUT and/or STDIN is redirected to files by shell scripts. The same applies to pipe line handling through temporary files. Of course this does not only affect this port but all other ones that depend on these features. The rule of thumb seem to be that if the file system used by the disk does not match the file system for which the kernel has been compiled then scripts run by bash may fail. E.g.: letting bash do some STDOUT and/or STDIN redirections on a partition using FAT16 with a FAT32 kernel will make bash fail. In general the output file created by the shell script can still be read but contains only unreadable nonsens. Continuous repetitions of calling bash with the same script may corrupt the file system (aka partition) in such a way that it cannot even be restored using tools like norton utilities. This behavior is very surprising to me because I have never observed such a behavior on any miscrosoft OS I have used. These are MS-DOS 3.2, MS-DOS 6.22, Win98SE, Win2K and WinXP. Because DJGPP is quite old and has been designed in the days of MS-DOS, it may be possible that it has exploited microsoft specific features that have not been correctly reproduced by the FreeDOS developer and thus leads to this behavior. It is very difficulty to say if we are observing a DJGPP specific bug that triggers a FreeDOS specific bug that does not exist in MS-DOS. Anyway, I have stopped in investigating this issue. If the file system support compiled into the kernel matches the file system used on the partition, every thing seems to work. If not you are in trouble. Neitherless I have decided to make small changes to the pipe line emulation code and thus to make this update. Although this will not solve the situation on FreeDOS. I see no reason in keep the old port thus I have replaced it with this new one. - The port checks at run time if LFN support is available or not and selects the file names of temporary files that are created accordingly. - There may exist much more DOS specific bugs in this port that have still not been discovered and that will be fixed as they appeare. - The testsuite is POSIX centric and has not been ported. Especially assumptions about paths that are POSIX specific make it really difficult to adjust the testsuite to DOS. Currently the port can only be tested by using it. - The port has been configured and compiled on WinXP SP3, Win98SE, MS-DOS 7.10 using DOSLFN 0.41c and MS-DOS 6.22 using DOSLFN 0.41c. There is no guarantee that this may be possible with any other DOS- like OS. Due to the use of long file names it will not be possible to configure and compile without LFN support. The port has been compiled using gcc346 and bnu232b. - The coprocess support and the coproc reserved word have been disabled. This feature requires special pipe support and this may be implemented in the future. - To be able to build this port you may need to have LFN support. - If NLS support is wanted, then the sources must be reconfigured passing the nls option to config.bat. As usual, all djgpp specific files (diffs, README files, etc.) are stored in the "djgpp" directory. The sources have been configured to be build in the "_build" directory. If for some reason it does not work for you, delete it contents and configure from scratch again. Please read the docs to become familiar with this product. Here is an extract of the NEWS file showing the user visible changes from the last port (GNU Bash 2.05b) to this one: ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- The port consists of the usual three packages that have been produced using djdev205 and can be downloaded from ftp.delorie.com and mirrors as (time stamp 2019-06-01): Bash 4.1.17 binary, info and man format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bsh4117br2.zip Bash 4.1.17 dvi, html, pdf and ps format documentation: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bsh4117dr2.zip Bash 4.1.17 source: ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bsh4117sr2.zip Send Bash specific bug reports to . Send suggestions and bug reports concerning the DJGPP port to comp.os.msdos.djgpp or . Enjoy. Guerrero, Juan Manuel