mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-13 11:42:21 +00:00
Solaris, Illumos distributions, and NetBSD need LDFLAGS set to link explicitly to libm, otherwise, due to as-yet unknown reasons, the src/lib/libdll/features/dll fails to write a valid header file and compilation fails due to unknown identifiers such as Dllscan_t. This commit adds the flag on those systems. NixOS is a Linux distro that uses very different paths from the usual Unix conventions (though it's POSIX compliant), and the regression tests still needed a lot of tweaks to be compatible. src/cmd/INIT/package.sh, bin/package: - On SunOS (Solaris and illumos distros) and NetBSD, add '-lm' to LDFLAGS before compiling. src/cmd/INIT/mamprobe.sh, bin/mamprobe, src/cmd/INIT/execrate.sh, bin/execrate: - Instead of only in /bin, /usr/bin, /sbin and /usr/sbin, search utilities in the path given by the OS 'getconf PATH', and use the user's original $PATH as a fallback. src/cmd/ksh93/tests/*.sh: - Miscellaneous portability fixes, mainly elimination of unportable hardcoded paths to commands. - basic.sh: Remove test for 'time' keyword millisecond precision. It was racy and could fail depending on system and system load.
61 lines
2.7 KiB
Text
61 lines
2.7 KiB
Text
TODO for AT&T ksh93, 93u+m bugfix branch
|
|
|
|
______
|
|
Fix regression test failures:
|
|
|
|
- On OpenBSD, there are 15 locale-related test failures in variables.sh.
|
|
- There are many regression test failures on NetBSD.
|
|
|
|
______
|
|
Fix build system:
|
|
|
|
- ksh does not currently build on AIX or QNX.
|
|
- On NetBSD 9.0, the build fails if /bin/sh is used as $SHELL (the default)
|
|
as iffe writes line numbers directly into generated header files. The cause
|
|
needs to be investigated. It could be a regression in NetBSD 9.0 sh.
|
|
Workaround: bin/package make SHELL=/some/other/shell
|
|
- Reimport the removed nmake. It is necessary for changes in Makefiles
|
|
to take effect. The machine-generated Mamfiles are now used as a fallback,
|
|
but they are not meant to be edited by hand.
|
|
|
|
______
|
|
Fix currently known bugs affecting shell scripting. These are identified by
|
|
their modernish IDs. For exact details, see code/comments in:
|
|
https://github.com/modernish/modernish/tree/0.16/lib/modernish/cap/
|
|
|
|
- BUG_BRACQUOT: shell quoting within bracket patterns has no effect. This
|
|
bug means the '-' retains it special meaning of 'character range', and an
|
|
initial ! (and, on some shells, ^) retains the meaning of negation, even
|
|
in quoted strings within bracket patterns, including quoted variables.
|
|
|
|
- BUG_CMDEXPAN: if the 'command' command results from an expansion, it acts
|
|
like 'command -v', showing the path of the command instead of executing it.
|
|
For example:
|
|
v=command; "$v" ls
|
|
or
|
|
set -- command ls; "$@"
|
|
don't work.
|
|
See also: https://github.com/att/ast/issues/963
|
|
|
|
- BUG_CMDSPEXIT: preceding a "special builtin"[*] (other than 'eval', 'exec',
|
|
'return' or 'exit') with 'command' does not always stop it from exiting
|
|
the shell if the builtin encounters error.
|
|
[*] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_14
|
|
|
|
- BUG_CSUBSTDO: If standard output (file descriptor 1) is closed before
|
|
entering a $(command substitution), and any other file descriptors are
|
|
redirected within the command substitution, commands such as 'echo' will
|
|
not work within the command substitution, acting as if standard output is
|
|
still closed.
|
|
|
|
- BUG_IFSGLOBS: In glob pattern matching (as in case or parameter
|
|
substitution with # and %), if IFS starts with ? or * and the "$*"
|
|
parameter expansion inserts any IFS separator characters, those characters
|
|
are erroneously interpreted as wildcards when quoted "$*" is used as the
|
|
glob pattern.
|
|
|
|
- BUG_LOOPRET2: If a 'return' command is given without a status argument
|
|
within the set of conditional commands in a 'while' or 'until' loop (i.e.,
|
|
between 'while'/'until' and 'do'), the exit status passed down from the
|
|
previous command is ignored and the function returns with status 0
|
|
instead.
|