Hi,
I'm building CDE on openSUSE 13.2 and I have found some issue with ksh.
As repoterd here:
http://sourceforge.net/p/cdesktopenv/discussion/general/thread/7a63a375/
there are some "test: : arithmetic syntax error" messages and the build hangs.
The build succeed on openSUSE 13.1 which uses ksh 93u 2012-08-01, but
openSUSE 13.2 has ksh 93v 2014-06-25 and apparently the script in the cde source
programs/dtksh/ksh93/ship/shipin
is not compatible with the newer ksh version.
Problem 1
on line 586 of shipin this line of code is executed:
if test "$new" -gt "$old"
when this happens the variable "old" is empty. The old version of ksh treats
such variable has having value 0, the new version gives arithmetic syntax error.
A fix that works with both version is to change the line like this:
if test "$new" -gt "${old:-0}"
The same identical problem happens at line 615. The same code exists at line
572, but such line is not executed during my build.
Problem 2
on line 1314 of shipin this line of code is executed:
s=\`wc pic.o\`
when the shell (93v 2014-06-25) executes "wc pic.o" it hangs.
This is a problem with the builtin wc command. If I use /usr/bin/wc then
everything is ok. The script hangs also at line 1328 running the same command.
A fix that makes the script work with both versions of ksh is to add the line:
builtin -d wc
at the beginning of the script. Of course an OS provided version of wc must be
available, but I think that's always true.
Attached you can find a patch that fixes these problems with the ksh build.
By the way in the "Contributing to CDE" wiki page there are this couple of
lines:
DtKsh:
Investigate build against newer ksh93. This is problematic due to license
reasons (EPL is incompatible to (L)GPL).
Are they refering to the problems I reported? If so, once the patch is committed
the page can be updated.
Giacomo
diff -Nraub cde-2.2.3/programs/dtksh/ksh93/ship/shipin cde-2.2.3.patch/programs/dtksh/ksh93/ship/shipin
--- cde-2.2.3/programs/dtksh/ksh93/ship/shipin 2015-05-09 19:09:11.000000000 -0400
+++ cde-2.2.3.patch/programs/dtksh/ksh93/ship/shipin 2015-11-13 13:28:05.193405665 -0400
@@ -64,6 +64,9 @@
;;
esac
+# disable the builtin wc because ksh may hang during the execution later of "wc pic.o"
+builtin -d wc
+
#
# this script may be overwritten while it is being executed
# so copy it and exec from the copy
@@ -569,7 +572,8 @@
eval _ship${_cmd_}_=
continue
fi
- if test "$new" -gt "$old"
+ # the variable "old" can be empty, to avoid "arithmetic syntax error" from ksh, set it to 0
+ if test "$new" -gt "${old:-0}"
then case $_suf_ in
?*) cp ship$_cmd_$_suf_ SHIP$_cmd_$_suf_ ;;
esac
@@ -583,7 +587,8 @@
case $_suf_ in
.c) test -f $f && ./$f </dev/null >/dev/null 2>&1 || old=0 ;;
esac
- if test "$new" -gt "$old"
+ # the variable "old" can be empty, to avoid "arithmetic syntax error" from ksh, set it to 0
+ if test "$new" -gt "${old:-0}"
then case $old in
""|0) ;;
*) cp ship$_cmd_ SHIP$_cmd_ ;;
@@ -612,7 +617,8 @@
esac
case $_flg_ in
*B*) f=$BIN/$_cmd_; eval old=$_stamp_
- if test "$new" -gt "$old"
+ # the variable "old" can be empty, to avoid "arithmetic syntax error" from ksh, set it to 0
+ if test "$new" -gt "${old:-0}"
then if test ! -d $BIN
then mkdir $BIN
fi
------------------------------------------------------------------------------
_______________________________________________
cdesktopenv-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel