Feature #12482
closedHave /usr/bin/awk point to /usr/bin/nawk
100%
Description
Today, /usr/bin/awk points to a very old version of awk, also instantiated as "oawk":
omniosce(~)[0]% ls -lti /usr/bin/*awk 120141 -r-xr-xr-x 1 root bin 130908 Nov 13 00:12 /usr/bin/nawk* 120121 -r-xr-xr-x 2 root bin 94924 Nov 13 00:12 /usr/bin/awk* 120121 -r-xr-xr-x 2 root bin 94924 Nov 13 00:12 /usr/bin/oawk* 112828 -rwxr-xr-x 2 root bin 764576 Nov 13 00:12 /usr/bin/gawk* omniosce(~)[0]%
In SmartOS, that has pointed to the more modern "nawk" for some time, AND oawk has been discontinued:
smartos(~)[0]% ls -lti /usr/bin/*awk 2737 -r-xr-xr-x 2 root bin 130996 Feb 28 10:44 /usr/bin/awk* 2737 -r-xr-xr-x 2 root bin 130996 Feb 28 10:44 /usr/bin/nawk* smartos(~)[0]%
Some software (e.g. https://dehydrated.io/) assume awk has nawk-level functionalilty. (That they may assume gawk-like features is another problem not addressed here.)
This issue proposes merely making "awk" hardlink to "nawk" instead of "oawk", keeping oawk and /usr/xpg4/bin/nawk around until distinct issues address their fates.
Files
Updated by Joshua M. Clulow about 2 years ago
This seems pretty reasonable, assuming we've pulled in all the awk cleanup and test suite work Cody did in illumos-joyent. We'll want to make sure distributions that aren't already doing this on their own get a heads up for their release notes because there are certainly one or two very incorrect scripts that the old awk nonetheless used to allow which will now be correctly rejected.
Updated by Dan McDonald about 2 years ago
It appears the awk cleanup done in illumos-joyent has made its way upstream as of #11552
nowhere(~/ws)[0]% diff -ru illumos-{gate,joyent}/usr/src/cmd/awk nowhere(~/ws)[0]% diff -ru illumos-{gate,joyent}/usr/src/cmd/oawk nowhere(~/ws)[0]%
Given the lack differences in oawk, it does appear that illumos-joyent uses `manifest` to effect the change specified in this bug. For upstreaming we'll have to modify Makefiles in both of the above directories (and system-extended-system-utilities.mf).
There ARE some usr/src/test subtle differences thanks to Joyent's OS-8022 (illumos-joyent:0a695497aef591f5c00620a61dffd4a0e4a5d47c), but they're only in three files and are small changes. They may go upstream as part of this fix.
Updated by Dan McDonald about 2 years ago
Test differences between old and new are all about tmpfile names and awk now being nawk:
bloody(~)[0]% diff stock.txt new.txt 1c1 < Running AWK tests ($AWK="/usr/bin/nawk") --- > Running AWK tests ($AWK="/usr/bin/awk") 177c177 < examples/awk/t.ofs... Warning: missing newline at end of file /tmp/dViaq_4 --- > examples/awk/t.ofs... Warning: missing newline at end of file /tmp/dmSaawd 180c180 < examples/awk/t.ors... Warning: missing newline at end of file /tmp/dZiaG_4 --- > examples/awk/t.ors... Warning: missing newline at end of file /tmp/drSaqwd 243,244c243,244 < numeric-output-seps.awk... Warning: missing newline at end of file /tmp/nawktest.1j0ikk/test.temp.out < Warning: missing newline at end of file /tmp/desaaq5 --- > numeric-output-seps.awk... Warning: missing newline at end of file /tmp/nawktest.0r9uvl/test.temp.out > Warning: missing newline at end of file /tmp/dX1aWMd bloody(~)[1]% ls -lti /usr/bin/*awk 54204 -r-xr-xr-x 2 root bin 130896 Apr 15 16:10 /usr/bin/awk* 54204 -r-xr-xr-x 2 root bin 130896 Apr 15 16:10 /usr/bin/nawk* 54143 -r-xr-xr-x 1 root bin 94908 Apr 15 16:10 /usr/bin/oawk* 116879 -rwxr-xr-x 2 root bin 776840 Mar 24 13:34 /usr/bin/gawk* bloody(~)[0]%
Updated by Dan McDonald about 2 years ago
Also, the man page for awk now points to a modified version of the nawk page, and oawk is its own man page now.
Updated by Dan McDonald about 2 years ago
Forgot to add awk test suite raw outputs. Doing so now.
Updated by Electric Monk about 2 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
git commit e98dc02a871a9cd0498c8862434b16aa85e772d3
commit e98dc02a871a9cd0498c8862434b16aa85e772d3 Author: Dan McDonald <danmcd@joyent.com> Date: 2020-04-22T00:56:20.000Z 12482 Have /usr/bin/awk point to /usr/bin/nawk Reviewed by: Peter Tribble <peter.tribble@gmail.com> Reviewed by: Toomas Soome <tsoome@me.com> Approved by: Robert Mustacchi <rm@fingolfin.org>