ruby-1.6.2-i586-beos-socket-diff

WHAT IS THIS ?

  A patch for Ruby 1.6.2 to work socket.so on the BeOS Intel platform.

  The patch contains 2 glibc internal headers which copied from
  glibc-src.tgz in the BeOS R4.5.2 x86 CD-ROM.

    libroot/src/kit/glibc/libio/iolibio.h
    libroot/src/kit/glibc/libio/libioP.h

  Also, the patch contains modified one of libsocket.h and libsocket.c
  in the libsocket-1.2.tar.gz.  Which can be obtained from:

    http://www.naan.net/

  Or, you can browse the Geek Gadgets source repository (via cvsweb)
  to check latest one.

    http://www.geekgadgets.org/cgi-bin/cvsweb.cgi/gg/be/libsocket/

SUPPORTED PLATFORMS

  BeOS R4.5 or later.  Intel platform only.

HOW TO INSTALL PATCH

  ex.)

    tar xzf _somewhere_/ruby-1.6.2.tar.gz
    cd ruby-1.6.2
    patch -p1 < _somewhere_/ruby-1.6.2-i586-beos-socket-diff
    autoconf

  This patch changes configure.in, so autoconf (2.13 or later) is required.

  The ruby-1.6.2.tar.gz can be obtained from Ruby Home Page.

    http://www.ruby-lang.org/

  The autoconf package (autoconf-2.13-bin.tgz) can be obtained
  from Geek Gadgets.

    http://www.geekgadgets.org/

  The location of autoconf-2.13-bin.tgz:

    ftp://ftp.geekgadgets.org/pub/geekgadgets/be/i586/snapshots/current/bin/autoconf-2.13-bin.tgz

    http://mirror.nucba.ac.jp/mirror/geekgadgets/be/i586/snapshots/current/bin/autoconf-2.13-bin.tgz

HOW TO INSTALL RUBY

  Since version 1.6.0, Ruby supports both dynamic-link and static-link.
  Ruby 1.4 supports dynamic-link only.

  Dynamic-link version:
    o Do `configure' with `--enable-shared'.
    o You can load extension libraries dynamically.
    o You cannot statically link extension libraries under ext directory.

  Static-link version:
    o Do `configure' without `--enable-shared'.
    o You cannot load extension libraries dynamically.
    o You can statically link extension libraries under ext directory.
      So, you may use --with-static-linked-ext option at the configureation
      time.

  If you want to install Ruby to /boot/home/config, do as follows.

    ./configure --prefix=/boot/home/config --enable-shared
    make
    make test
    make install

  Ruby 1.6.2's default $KCODE is `none'.  If you prefer $KCODE
  is `utf8', please specify `--with-default-kcode=utf8' option to the
  `configure'.

    ./configure --prefix=/boot/home/config --enable-shared \
        --with-default-kcode=utf8
    make
    make test
    make install

  If you install multiple versions of Ruby, and want to install ruby
  as ruby-1.6.2, please specify `--program-suffix=-1.6.2' option to the
  `configure'.

    ./configure --prefix=/boot/home/config --enable-shared \
        --program-suffix=-1.6.2
    make
    make test
    make install

  If you want to make static-link version, do as follows:

    ./configure --prefix=/boot/home/config --with-static-linked-ext
    make
    make test
    make install

KNOWN PROBLEMS

  o Cannot stop ruby by Ctrl-C while executing socket operation.
    Don't know why closesocket() hang.

    ex.)
      $ ruby sample/tsvr.rb
      server is on 49153                      <- type Ctrl-C here
      tsvr.rb:13:in `accept': Interrupt       <- hang in closesocket()

  o In broken pipe situation, Errno::ERROR (= B_ERROR (-1), General OS error)
    is raised instead of Errno::EPIPE.

  o In select(), assume file descriptors are always readable/writable
    and cannot wait both file descriptors and socket descriptors.

    The libsocket supports mixed file/socket descriptors select operation
    using the file descriptor ready check thread.  But, the libsocket
    does not support the stdio which Ruby uses.

    So, this patch drop the feature from the libsocket.

  o When create a server port without explicit port number, BeOS may
    assign different port number to loopback and interface.

OTHER PATCHES APPLIED

  This patch also contains following patches.

  [ruby-ext:00875]
    * gc.c (rb_gc): get stack information using get_thread_info().
      http://www.m-net.ne.jp/~ymsd/ruby/btk/index.html
      http://www.m-net.ne.jp/~ymsd/ruby/btk/btk_001.zip

HISTORY

  2000-12-27
    Ruby 1.6.2 (2000-12-25) version.

    Status:
      Same as 2000-09-27 release.

    Development platform:
      BeOS R5.0.3(Intel)

    File:
      ruby-1.6.2-i586-beos-socket.zip

  2000-09-27
    Ruby 1.6.1 (2000-09-27) version.
    Merge [ruby-talk:5152].

    Status:
      OK sample/dualstack*.rb
      OK sample/{clnt.rb,svr.rb,tsvr.rb}
      OK [ruby-list:15168]
      OK [ruby-list:15174]
      OK [ruby-list:16659]
      OK sample/httpget.rb in Net library.

    Development platform:
      BeOS R5.0.3(Intel)

    File:
      ruby-1.6.1-i586-beos-socket.zip

  2000-09-19
    Ruby 1.6.0 (2000-09-19) version.

    Status:
      NG sample/dualstack*.rb (Also, doesn't work on linux etc.)
      OK sample/{clnt.rb,svr.rb,tsvr.rb}
      OK [ruby-list:15168]
      OK [ruby-list:15174]
      OK [ruby-list:16659]
      OK sample/httpget.rb in Net library.

    Development platform:
      BeOS R5.0.3(Intel)

    File:
      ruby-1.6.0-i586-beos-socket.zip

  2000-09-08
    Ruby 1.6.0 (2000-09-07) version.

    Status:
      Same as 2000-04-18 release.

    Development platform:
      BeOS R5.0.3(Intel)

    File:
      ruby-1.6.0-i586-beos-socket.zip

  2000-08-16 (Not Released)
    Ruby 1.4.6 (2000-08-16) version.

    Status:
      Same as 2000-04-18 release.

    Development platform:
      BeOS R5.0.3(Intel)

    File:
      ruby-1.4.6-i586-beos-socket.zip

  2000-06-26
    Ruby 1.4.5 (2000-06-26) version.

    Status:
      Same as 2000-04-18 release.

    Development platform:
      BeOS R5.0.1(Intel)

    File:
      ruby-1.4.5-i586-beos-socket.zip

  2000-04-24
    Merge ruby-bugs/1.4.4?id=1.
    Merge [ruby-dev:9600].
    Merge latest libsocket changes.
    Merge gc.c change from GUI extension for BeOS "Btk".

    Status:
      Same as 2000-04-18 release.

    Development platform:
      BeOS R5(Intel)

    File:
      ruby-1.4.4-i586-beos-socket.zip

  2000-04-18
    [ruby-list:21978]
    Patch for Ruby 1.4.4.
    Merge libsocket.

    Status:
      OK sample/dualstack*.rb
      OK sample/{clnt.rb,svr.rb,tsvr.rb}
      OK [ruby-list:15168]
      OK [ruby-list:15174]
      OK [ruby-list:16659]
      OK sample/httpget.rb in Net library.

    Development Platform:
      BeOS R5(Intel)

    File:
      ruby-1.4.4-i586-beos-socket-diff.gz

  1999-10-25
    [ruby-list:17979]
    Patch for Ruby 1.4.2 (Experimental).

    Status:
      Same as 1999-10-20 release.

    Development Platform:
      BeOS R4.5.2(Intel)

    File:
      ruby-1.4.2-i586-beos-r4-socksrc.zip
      ruby-1.4.2-i586-beos-r4-socket.zip

  1999-10-20
    [ruby-dev:8066]
    Patch for ruby_1_4 branch in CVS (Experimental).

    Status:
      OK sample/dualstack*.rb
      OK sample/{clnt.rb,svr.rb,tsvr.rb}
      NG [ruby-list:15168]
      NG [ruby-list:15174]
      OK [ruby-list:16659]
      NG sample/httpget.rb in Net library.

    Development Platform:
      BeOS R4.5.2(Intel)

    File:
      ruby-1.4.3-socket-beos-4.5.2I-diff.gz

--
Katsuyuki Komatsu <komatsu@sarion.co.jp>
