New features with AN-2020-04-18: This is the first localization step for the schily source consolidation. Many programs now (hopefully) call gettext() for all strings that need localization. - The next step will include dgettext() calls for the libraries and the missing programs - The following step will include the extracted strings - The last step will include German translations and install support for the resulting binary message object files. ----------> Please test and report compilation problems! <--------- ***** NOTE: As mentioned since 2004, frontends to the tools should ***** ***** call all programs in the "C" locale ***** ***** by e.g. calling: LC_ALL=C cdrecord .... ***** ***** unless these frontends support localized strings ***** ***** used by the cdrtools with NLS support. ***** *** WARNING *** *** Need new smake *** *** Due to the fact that schily-tools 2014-04-03 introduced to use new macro *** expansions and a related bug fix in smake, you need a newer smake *** to compile this source. If your smake is too old and aborts, ensure to *** use the recent smake by calling: cd ./psmake ./MAKE-all cd .. psmake/smake psmake/smake install The new smake version mentioned above is smake-1.2.4 The recent smake version is smake-1.3 *** Due to the fact that schily-tools 2018-01-26 introduced *** optimizations for the Schily version of SunPro Make, you *** need at least the dmake version from 2018/01/11 with support *** for the "export" directive to compile with this makefile system. WARNING: the new version of the isoinfo program makes use of the *at() series of functions that have been introduced by Sun in August 2001 and added to POSIX.1-2008. For older platforms, libschily now includes emulations for these functions but these emulations have not yet been tested thoroughly. Please report problems! BUG WARNING: Please never report bugs only to Linux distributions as they usually do not forward these bug reports upstream and as the Linux distributions typically do not let skilled people check the bugs. We did not hear about a FIFO problem in star for a long time. Then a problem on Linux occurred once every 6000-10000 tries but it did not happen on Solaris after even 10 million tries, so it was not known besides Linux. BUG WARNIG: GNU make release 4.3 starts too early with parallel execution (when reading Makefiles and evaluating rules for "include" statements already). Since GNU make does not support a concept for correct ordering of such actions, you need to be prepared to see gmake-4.3 fail in parallel mode. If you are interested in reliable parallel execution, it is recommended to use the included "dmake" program with a command line like: dmake -j10 -f SMakefile from the top level directory - Makefile system: Support for creating shared libraries on SGI IRIX has been added. - Makefile system: Support for RUNPATH in IRIX ELF binaries has been added. - Makefile system: Support for the new automake features in the SunPro Make program (see below) has been added to the makefile system. This helps to work around portability problems to systems like IRIX that have a buggy sed(1) command that fails with commands like: sed 'y%ABCDEFGHIJKLMNOPQRSTUVWXYZ, /\\()"%abcdefghijklmnopqrstuvwxyz,------%' because they incorrectly onl assume a single backslash in that command. - Makefile system: the IRIX compiler driver RULES/cc-sgi.rul has been reduced to one single file and RULES/cc-sgi32.rul RULES/cc-sgi64.rul are now symlinks to the file RULES/cc-sgi.rul - Makefile system: IRIX now supports explicit 32 bit compilation targets using: smake CCOM=cc32 - Unit test suite: The "seq" emulation did write "seq not found" on IRIX because ksh88 on IRIX writes this text to stderr instead of using stdout (as expected). We now redirect stderr as well as stdout to suppress the message. - librmt: A few small enhancements have been added to the man pages. This was a result of a code review for SchilliX-ON by Eric Ackermann - smake: A new option -a has been added. This option allows to tell smake not to set up the automake specific make macros MAKE_ARCH, MAKE_OS and similar. The identifying macro MAKE_NAME=smake is still set up in order to allow to select the right make specific include rules. - smake: the file archconf.c has been modified to use a simplified interface in order to be able to use mostly identical code in SunPro Make for ease of future maintenance. - SunPro Make: Support to automake features similar to smake has been added. SunPro Make now calls uname(2)/sysinfo(2) and sets up MAKE_* make macros with content from the uname/sysinfo information. This is implemented with the slightly modified archconf.c from smake (see above), where it is used since 1995. - SunPro Make: An option -a (similar to the new option -a in smake) has been added. Like in smake, the identifying macro MAKE_NAME=smake is still set up in order to allow to select the right make specific include rules. - SunPro Make: IRIX has a definition for struct ranlib in that was in conflict with the definition from our ar.cc - SunPro make: IRIX includes netname2host() in libc, but it does not provide any prototype in the system include files. We now add an own prototype in pmake.cc to allow to use this function in C++ - SunPro Make: make did not forward the -r option to sub-make processes. This was definitely a bug as it caused unexpected results in the sub-make processes. - star: Several of the unit tests did assume that they are run in the MET timezone. So they worked in Berlin (the residence of the developer) but failed elsewhere. We now explicitely set TZ=MET in the unit tests order to allow to pass the tests anywhere on the world. - star: The unit tests port/lpath.sh did not work on IRIX because the "rm" command on IRIX is buggy and does not remove long path names (path names longer than PATH_MAX). We now use a recursive shell function to remove the long path. - star: The new shell function in port/lpath.sh did crash Linux in case that /bin/sh is "dash". "dash" is not POSIX compliant and fails to support arbitrary long working directory names. Whe therefore try to run the long path removal with "bosh", or at least "bash". Only if none of both is present, we fall back to the system default shell "/bin/sh". - SCCS: sccslog(1) did assume that errno != 0 is a hint for a problem with time conversions, but IRIX mktime() sets errno to a value != 0 without returning -1 and without failing. - SCCS: Added a new sccs get unit test for excluded releases taken from a CSSC bug report from Øyvind Gjerstad - SCCS: Added %Z% to the file content for some tests to avoid the "No id keywords" warning - Bourne Shell: IRIX has ls(1) installed as /sbin/ls and this caused some of our unit tests to fail. We now only check for "bin/ls" and no longer for "/bin/ls" in "type" return messages. - Bourne Shell/bsh: signames.c has been modified to work correctly if the number of statically defined realtime signals is odd. This applies to NetBSD and caused the shells to miss RTMIN+15 on NetBSD. Thanks to Robert Elz for reporting - Bourne Shell: A new trap code "ERR" as been introduced. This is modeled after a feature from ksh88. "trap cmd ERR" causes "cmd" to be called whenever a command causes a non-zero exit code. The "cmd" is not called in case that with "set -e" the shell would not exit. This is not required by POSIX but helpful. - Bourne Shell: A new set of unit tests for the ERR trap has been added. - Bourne Shell: An attempt to fix the POSIX behavior for set -e from October 2018 has been identified to be wrong. If we kept that change, a list with "set -e; ..." and a failing command would not exit as expected. - Bourne Shell: A new piece of code has been added to handle set -e for function calls. - Bourne Shell: The man page now better explains the behavior, if in set -e mode. - Bourne Shell: print.c::prs_cntl() could cause a buffer overflow with "unprintable" multi byte UNICODE characters that are printed as list of octal escape sequences. the buffer overflow happened because there was only redzone space for one such octal escape sequence. Thanks to Heiko Eißfeldt for reporting - SCCS TODO: - Convert sccs.c to use -NSCCS in the back end programs instead of converting g-file names from the command line into s.file names in the frontend in order to forward s.file names to the backend programs. Doing it this way allows us to have the SCCS history files "off tree" in a separate directory tree starting with ".sccs/" at the "project root" directory, as the related code to convert path names is in libcomobj::bulkprepare(). - Add code to admin(1) and delta(1) to retrieve the list of new or modified files in order to have all important code for a "sccs commit" in a single program that does not need to deal with ARG_MAX limitations. - Add code to admin(1), delta(1) and get(1) to maintain/understand the changeset file. - Add code to libcomobj to understand the changeset file, which is needed in order to e.g. know the file names and file specific SIDs/state that correspond to a project global SID. - Add code to all programs to maintain a lock (for the file $PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file $PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project global lock. - Find/verify a complete transactional model that allows to repair complex changes to the set of files for a project that have been aborted in the middle. The current idea is to create the file $PROJECTHOME/.sccs/changeset with the deltas to the changeset during a complex update operation. - Find a way to decide when to use SCCS v6 type history files. For the project mode, this is needed in order to prevent historic SCCS implementations to believe they could modify files without knowing about project global locks. Currently, SCCS V67 needs to be anebale manually for every history file using "admin". - Bourne Shell Missing features for POSIX compliance: - Support for $'...' quoting (this is not needed for the current version of POSIX but for the next POSIX version that will be named SUSv8). The development of SUSv8 will start in late 2016. We are now expecting the Bourne Shell to be fully POSIX compliant. - Bourne Shell further TODO list: - Finish loadable builtin support. - POSIX does not allow us to implement ". -h", so we will add a "source" builtin to be able to implement "source -h" - The following builtins (that are available in bsh) are still missing in the Bourne Shell: err echo with output going to stderr glob echo with '\0' instead of ' ' between args env a builtin version of /usr/bin/env The following bsh intrinsics are still missing in the Bourne Shell: - the restricted bsh has restriction features that are missing in the Bourne shell. - source -h read file into history but do not execute and probably more features not yet identified to be bsh unique. Author: Joerg Schilling D-13353 Berlin Germany Email: joerg@schily.net, joerg.schilling@fokus.fraunhofer.de Please mail bugs and suggestions to me.