Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
BeOS port
- X-seq: zsh-workers 26009
- From: "François Revol" <revol@xxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: BeOS port
- Date: Wed, 05 Nov 2008 18:53:59 +0100 CET
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
Hi there,
I've had a working port of zsh to ZETA (BeOS R6) for quite a while, but
since I'm not (yet) a big user I never managed to publish it. I was
also too lazy to clean up the small C89 fix required (we require
gcc2.95 due to the C++ ABI breackage on later versions).
I didn't try but it should likely compile fine on BeOS R5, at least
with the BONE network stack.
It should also compile without much trouble in Haiku (MIT licenced
rewrite of BeOS). It will probably need some more library check (socket
in -lnetwork) though.
Some tests still break, but most are due to missing features, and at
least they don't crash like they used to.
- BeOS defvs shows all devices as S_IFCHR, including block devices, so
there is no S_IFBLK device in /dev per see.
- BeOS doesn't have /dev/tty (Haiku does though)
- BeOS natively uses UTF-8 everywhere, but has an old glibc, so it
misses some wc*()... I still don't get the point of using ugly stuff
like wchar anyway.
- zpty doesn't load yet for some reason
I'll likely have to port over all the bash_completion stuff I wrote...
http://revolf.free.fr/beos/bash_completion/zeta_completion
François.
---- make test:
[revol@Zeta /Data/zsh/build.zeta]# make test
cd Test ; /bin/make check
make[1]: Entering directory `/Data/zsh/build.zeta/Test'
if test -n "gcc"; then \
cd .. && DESTDIR= \
/bin/make MODDIR=`pwd`/Test/Modules install.modules > /dev/null; \
fi
if ZTST_testlist="`for f in ../../zsh/Test/*.ztst; \
do echo $f; done`" \
ZTST_srcdir="../../zsh/Test" \
ZTST_exe=../Src/zsh \
../Src/zsh +Z -f ../../zsh/Test/runtests.zsh; then \
stat=0; \
else \
stat=1; \
fi; \
rm -rf Modules .zcompdump; \
exit $stat
../../zsh/Test/A01grammar.ztst: starting.
Test ../../zsh/Test/A01grammar.ztst failed: bad status 1, expected 0
from:
- $ZTST_testdir/../Src/zsh -fc "[[ \$0 = \"-$ZTST_testdir/../Src/zsh\
" ]]"
Was testing: `-' precommand modifier
../../zsh/Test/A01grammar.ztst: test failed.
../../zsh/Test/A02alias.ztst: starting.
../../zsh/Test/A02alias.ztst: all tests successful.
../../zsh/Test/A03quoting.ztst: starting.
Test ../../zsh/Test/A03quoting.ztst failed: bad status 1, expected 0
from:
print '<\u0041>'
printf '%s\n' $'<\u0042>'
print '<\u0043>'
printf '%s\n' $'<\u0044>'
Error output:
(eval):1: cannot do charset conversion (NLS not supported)
Was testing: \u in both print and printf
../../zsh/Test/A03quoting.ztst: test failed.
../../zsh/Test/A04redirect.ztst: starting.
../../zsh/Test/A04redirect.ztst: all tests successful.
../../zsh/Test/A05execution.ztst: starting.
../../zsh/Test/A05execution.ztst: all tests successful.
../../zsh/Test/A06assign.ztst: starting.
../../zsh/Test/A06assign.ztst: all tests successful.
../../zsh/Test/A07control.ztst: starting.
../../zsh/Test/A07control.ztst: all tests successful.
../../zsh/Test/B01cd.ztst: starting.
../../zsh/Test/B01cd.ztst: all tests successful.
../../zsh/Test/B02typeset.ztst: starting.
../../zsh/Test/B02typeset.ztst: all tests successful.
../../zsh/Test/B03print.ztst: starting.
../../zsh/Test/B03print.ztst: all tests successful.
../../zsh/Test/B04read.ztst: starting.
../../zsh/Test/B04read.ztst: all tests successful.
../../zsh/Test/B05eval.ztst: starting.
../../zsh/Test/B05eval.ztst: all tests successful.
../../zsh/Test/B06fc.ztst: starting.
../../zsh/Test/B06fc.ztst: all tests successful.
../../zsh/Test/C01arith.ztst: starting.
../../zsh/Test/C01arith.ztst: all tests successful.
../../zsh/Test/C02cond.ztst: starting.
Warning: Not testing [[ -b blockdevice ]] (no devices found)
Test ../../zsh/Test/C02cond.ztst failed: bad status 1, expected 0 from:
# Use hardcoded /dev/tty because globbing inside /dev fails on Cygwin
char=/dev/tty
[[ -c $char && ! -c $zerolength ]]
Was testing: -c cond
../../zsh/Test/C02cond.ztst: test failed.
../../zsh/Test/C03traps.ztst: starting.
This test takes at least three seconds...
This test, too, takes at least three seconds...
Another test that takes three seconds
../../zsh/Test/C03traps.ztst: all tests successful.
../../zsh/Test/C04funcdef.ztst: starting.
../../zsh/Test/C04funcdef.ztst: all tests successful.
../../zsh/Test/C05debug.ztst: starting.
../../zsh/Test/C05debug.ztst: all tests successful.
../../zsh/Test/D01prompt.ztst: starting.
../../zsh/Test/D01prompt.ztst: all tests successful.
../../zsh/Test/D02glob.ztst: starting.
../../zsh/Test/D02glob.ztst: all tests successful.
../../zsh/Test/D03procsubst.ztst: starting.
../../zsh/Test/D03procsubst.ztst: skipped (process substitution is not
supported)
../../zsh/Test/D04parameter.ztst: starting.
../../zsh/Test/D04parameter.ztst: all tests successful.
../../zsh/Test/D05array.ztst: starting.
../../zsh/Test/D05array.ztst: all tests successful.
../../zsh/Test/D06subscript.ztst: starting.
../../zsh/Test/D06subscript.ztst: all tests successful.
../../zsh/Test/D07multibyte.ztst: starting.
../../zsh/Test/D07multibyte.ztst: skipped (no UTF-8 locale or multibyte
mode is not implemented)
../../zsh/Test/D08cmdsubst.ztst: starting.
../../zsh/Test/D08cmdsubst.ztst: all tests successful.
../../zsh/Test/E01options.ztst: starting.
*** /tmp/zsh.ztst.err.147519 Wed Nov 5 05:56:27 2008
--- /tmp/zsh.ztst.terr.147519 Wed Nov 5 05:56:27 2008
***************
*** 1,2 ****
! (eval):4: file exists: foo1
(eval):6: no such file or directory: bar1
--- 1,2 ----
! (eval):4: file or Directory already exists: foo1
(eval):6: no such file or directory: bar1
Test ../../zsh/Test/E01options.ztst failed: error output differs from
expected as shown above for:
setopt noclobber
rm -f foo1 bar1 rod1
echo waterbeach >foo1
(echo landbeach >foo1)
cat foo1
(echo lode >>bar1)
[[ -f bar1 ]] && print That shouldn\'t be there.
echo denny >rod1
echo wicken >>rod1
cat rod1
unsetopt noclobber
rm -f foo2 bar2 rod2
echo ely >foo2
echo march >foo2
cat foo2
echo wimpole >>bar2
cat bar2
echo royston >rod2
echo foxton >>rod2
cat rod2
rm -f foo* bar* rod*
Was testing: CLOBBER option
../../zsh/Test/E01options.ztst: test failed.
../../zsh/Test/E02xtrace.ztst: starting.
../../zsh/Test/E02xtrace.ztst: all tests successful.
../../zsh/Test/V01zmodload.ztst: starting.
*** /tmp/zsh.ztst.err.147628 Wed Nov 5 05:56:31 2008
--- /tmp/zsh.ztst.terr.147628 Wed Nov 5 05:56:31 2008
***************
*** 0 ****
--- 1,2 ----
+ (eval):3: module `zsh/terminfo' has no such feature: `b:echoti':
autoload cancelled
+ (eval):3: module `zsh/terminfo' has no such feature: `p:terminfo':
autoload cancelled
Test ../../zsh/Test/V01zmodload.ztst failed: error output differs from
expected as shown above for:
for m in $mods
do
zmodload -i $m || mods[(r)$m]=()
done
Was testing: Test loading of all compiled modules
../../zsh/Test/V01zmodload.ztst: test failed.
../../zsh/Test/V02zregexparse.ztst: starting.
../../zsh/Test/V02zregexparse.ztst: all tests successful.
../../zsh/Test/V03mathfunc.ztst: starting.
../../zsh/Test/V03mathfunc.ztst: skipped (The module zsh/mathfunc is
not available.)
../../zsh/Test/V04features.ztst: starting.
../../zsh/Test/V04features.ztst: all tests successful.
../../zsh/Test/V05styles.ztst: starting.
../../zsh/Test/V05styles.ztst: all tests successful.
../../zsh/Test/V06parameter.ztst: starting.
../../zsh/Test/V06parameter.ztst: all tests successful.
../../zsh/Test/Y01completion.ztst: starting.
../../zsh/Test/Y01completion.ztst: skipped (the zsh/zpty module is not
available)
../../zsh/Test/Y02compmatch.ztst: starting.
../../zsh/Test/Y02compmatch.ztst: skipped (the zsh/zpty module is not
available)
../../zsh/Test/Y03arguments.ztst: starting.
../../zsh/Test/Y03arguments.ztst: skipped (the zsh/zpty module is not
available)
**************************************
26 successful test scripts, 5 failures, 6 skipped
**************************************
make[1]: *** [check] Error 1
make[1]: Leaving directory `/Data/zsh/build.zeta/Test'
make: *** [test] Error 2
Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.112
diff -u -r1.112 configure.ac
--- configure.ac 30 Oct 2008 13:00:21 -0000 1.112
+++ configure.ac 5 Nov 2008 05:09:46 -0000
@@ -745,6 +745,7 @@
fi
AC_CHECK_LIB(socket, socket)
+AC_CHECK_LIB(bind, gethostbyname2)
dnl ---------------
dnl CHECK FOR ICONV
@@ -2527,6 +2528,7 @@
aix*) DLLDFLAGS="${DLLDFLAGS=-G -bexpall -lc}" ;;
solaris*|sysv4*|esix*) DLLDFLAGS="${DLLDFLAGS=-G}" ;;
darwin*) DLLDFLAGS="${DLLDFLAGS=-bundle -flat_namespace -undefined suppress}" ;;
+ beos*|haiku*) DLLDFLAGS="${DLLDFLAGS=-nostart}" ;;
openbsd*)
if test x$zsh_cv_sys_elf = xyes; then
DLLDFLAGS="${DLLDFLAGS=-shared -fPIC}"
@@ -2568,6 +2570,15 @@
;;
esac
;;
+ *-beos*)
+ # gcc on BeOS doesn't like -rdynamic...
+ EXTRA_LDFLAGS="${EXTRA_LDFLAGS= }"
+ # also, dlopen() at least in Zeta respects $LIBRARY_PATH, so needs %A added to it.
+ export LIBRARY_PATH="$LIBRARY_PATH:%A/"
+ ;;
+ *-haiku*)
+ #
+ ;;
esac
# Done with our shell code, so restore autotools quoting
Index: Src/Modules/zpty.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/zpty.c,v
retrieving revision 1.39
diff -u -r1.39 zpty.c
--- Src/Modules/zpty.c 29 Sep 2008 08:46:33 -0000 1.39
+++ Src/Modules/zpty.c 5 Nov 2008 05:09:47 -0000
@@ -260,6 +260,9 @@
if (master) {
strcpy(name, "/dev/ptyxx");
+#if defined(__BEOS__) || defined(__HAIKU__)
+ name[7] = '/';
+#endif
for (p1 = char1; *p1; p1++) {
name[8] = *p1;
Index: Src/Zle/zle_refresh.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_refresh.c,v
retrieving revision 1.72
diff -u -r1.72 zle_refresh.c
--- Src/Zle/zle_refresh.c 23 Oct 2008 08:52:02 -0000 1.72
+++ Src/Zle/zle_refresh.c 5 Nov 2008 05:09:47 -0000
@@ -1879,6 +1879,8 @@
/* 3: main display loop - write out the buffer using whatever tricks we can */
for (;;) {
+ int now_off;
+
#ifdef MULTIBYTE_SUPPORT
if ((!nl->chr || nl->chr != WEOF) && (!ol->chr || ol->chr != WEOF)) {
#endif
@@ -2050,7 +2052,7 @@
* If an attribute was on here but isn't any more,
* output the sequence to turn it off.
*/
- int now_off = ol->atr & ~nl->atr & TXT_ATTR_ON_MASK;
+ now_off = ol->atr & ~nl->atr & TXT_ATTR_ON_MASK;
if (now_off)
settextattributes(TXT_ATTR_OFF_FROM_ON(now_off));
Messages sorted by:
Reverse Date,
Date,
Thread,
Author