Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

BeOS port



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