Mail Archives: djgpp/2020/03/10/16:31:29
Lately I have observed that it is impossible to configure and compile
GNU packages on plain DOS. With plain DOS I mean MS-DOS 6.22 and minor
versions and FreeDOS; both with and without DOSLFN as LFN driver.
The reason for this is a bug in utime introduced with the support to
change also the access time of a file. It is tried to change the access
time after having succesfully changed the creation time of the file. On
plain DOS changing the access time is not possible thus programs like sed,
touch, tar and others fail with an error like EIO or similar although the
creation time has successfully been changed. If the calling context of
these programs, like a configure script or a makefile, honor the return
code of them then those programs make the scripts or makefile abort.
I have fixed the issue by checking the OS type and the OS version before
executing the code segment that tries to change the acces time of the file.
The access time is now only changed for OS of the type NTVDM and MSDOS 7.NN
but never for FreeDOS nor MS-DOS 6.22 or minor versions no matter if a LFN
driver is loaded or not. At least DOSLFN 0.41c does not provide function 0x5705
and thus it is pointless to try to change access time of files when LFN
support is available. With this change, utime works again for plain DOS
as it has done in DJGPP 2.03. I have commited this fix a in the middle of
january into the DJGPP repository and rebuild some programs. With these
new versions of the programs I was able to configure and build them on
MS-DOS 6.22. This was impossible before. There may be some more plain
DOS issues introduced with the implementation of LFN and NTVDM support.
I will try to fix them without breaking neither LFN nor NTVDM support as
soon as I discover them. There may also be more programs that use utime
and that may not work correctly on plain DOS. I will recompile them when
they pop-up with such an issue. Even with this fix there is no guarantee
at all that it may be possible to build major GNU packages like gcc or
others on plain DOS.
Because the previous versions of these ports must be considered as broken
I have deleted them and replaced by these new ones.
BTW, sed and make have already been compiled with the fixed version of the
library by using the CVS repository code.
The following ports have been produced using djdev205 (CVS repository code)
and can be downloaded from ftp.delorie.com and mirrors as
(time stamp 2020-01-16):
GNU tar 1.12a binary, info amd man format documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/fil41br3.zip
GNU fileutils 4.1 binary, info amd man format documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/fil41br3.zip
GNU textutils 2.0 binary, info amd man documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/txt20br3.zip
GNU shellutils 2.0.11 binary, info amd man documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/shl2011br3.zip
GNU Bash 4.1.17 binary, info and man format documentation:
ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/bsh4117br3.zip
Enjoy.
Guerrero, Juan Manuel <juan DOT guerrero AT igd DOT fhg DOT de>
- Raw text -