Skip to content

Commit

Permalink
* gc.c (Init_stack): stack region is far smaller than usual if
Browse files Browse the repository at this point in the history
  pthread is used.

* marshal.c (w_extended): singleton methods should not be checked
  when dumping via marshal_dump() or _dump(). [ruby-talk:85909]

* file.c (getcwdofdrv): avoid using getcwd() directly, use
  my_getcwd() instead.

* merged NeXT, OpenStep, Rhapsody ports patch from Eric Sunshine
  <sunshine@sunshineco.com>.  [ruby-core:01596]

* marshal.c (w_object): LINK check earlier than anything else,
  i.e. do not dump TYPE_IVAR for already dumped objects.
  (ruby-bugs PR#1220)

* eval.c (rb_eval): call "inherited" only when a new class is
  generated; not on reopening.

* eval.c (eval): prepend error position in evaluating string to

* configure.in: revived NextStep, OpenStep, and Rhapsody ports which
  had become unbuildable; enhanced --enable-fat-binary option so that
  it accepts a list of desired architectures (rather than assuming a
  fixed list), or defaults to a platform-appropriate list if user does
  not provide an explicit list; made the default list of architectures
  for MAB (fat binary) more comprehensive; now uses -fno-common even
  when building the interpreter (in addition to using it for
  extensions), thus allowing the interpreter to be embedded into a
  plugin module of an external project (in addition to allowing
  embedding directly into an application); added checks for
  <netinet/in_systm.h> (needed by `socket' extension) and getcwd(); now
  ensures that -I/usr/local/include is employed when extensions'
  extconf.rb scripts invoke have_header() since extension checks on
  NextStep and OpenStep will fail without it if the desired resource
  resides in the /usr/local tree; fixed formatting of --help message.

* Makefile.in: $(LIBRUBY_A) rule now deletes the archive before
  invoking $(AR) since `ar' on Apple/NeXT can not "update" MAB archives
  (see configure's --enable-fat-binary option); added rule for new
  missing/getcwd.c.

* defines.h: fixed endian handling during MAB build (see configure's
  --enable-fat-binary option) to ensure that all portions of the
  project see the correct WORDS_BIGENDIAN value (some extension modules
  were getting the wrong endian setting); added missing constants
  GETPGRP_VOID, WNOHANG, WUNTRACED, X_OK, and type pid_t for NextStep
  and OpenStep; removed unnecessary and problematic HAVE_SYS_WAIT_H
  define in NeXT section.

* dir.c: do not allow NAMLEN() macro to trust dirent::d_namlen on
  NextStep since, on some installations, this value always resolves
  uselessly to zero.

* dln.c: added error reporting to NextStep extension loader since the
  previous behavior of failing silently was not useful; now ensures
  that NSLINKMODULE_OPTION_BINDNOW compatibility constant is defined
  for OpenStep and Rhapsody; no longer includes <mach-o/dyld.h> twice
  on Rhapsody since this header lacks multiple-include protection,
  which resulted in "redefinition" compilation errors.

* main.c: also create hard reference to objc_msgSend() on NeXT
  platforms (in addition to Apple platforms).

* lib/mkmf.rb: now exports XCFLAGS from configure script to extension
  makefiles so that extensions can be built MAB (see configure's
  --enable-fat-binary option); also utilize XCFLAGS in cc_command()
  (but not cpp_command() because MAB flags are incompatible with
  direct invocation of `cpp').

* ext/curses/extconf.rb: now additionally checks for presence of these
  curses functions which are not present on NextStep or Openstep:
  bkgd(), bkgdset(), color(), curs(), getbkgd(), init(), scrl(), set(),
  setscrreg(), wattroff(), wattron(), wattrset(), wbkgd(), wbkgdset(),
  wscrl(), wsetscrreg()

* ext/curses/curses.c: added appropriate #ifdef's for additional set of
  curses functions now checked by extconf.rb; fixed curses_bkgd() and
  window_bkgd() to correctly return boolean result rather than numeric
  result; fixed window_getbkgd() to correctly signal an error by
  returning nil rather than -1.

* ext/etc/etc.c: setup_passwd() and setup_group() now check for null
  pointers before invoking rb_tainted_str_new2() upon fields extracted
  from `struct passwd' and `struct group' since null pointers in some
  fields are common on NextStep/OpenStep (especially so for the
  `pw_comment' field) and rb_tainted_str_new2() throws an exception
  when it receives a null pointer.

* ext/pty/pty.c: include "util.h" for strdup()/ruby_strdup() for
  platforms such as NextStep and OpenStep which lack strdup().

* ext/socket/getaddrinfo.c: cast first argument of getservbyname(),
  gethostbyaddr(), and gethostbyname() from (const char*) to non-const
  (char*) for older platforms such as NextStep and OpenStep.

* ext/socket/socket.c: include "util.h" for strdup()/ruby_strdup() for
  platforms such as NextStep and OpenStep which lack strdup(); include
  <netinet/in_systm.h> if present for NextStep and OpenStep; cast first
  argument of gethostbyaddr() and getservbyname() from (const char*) to
  non-const (char*) for older platforms.

* ext/syslog/syslog.c: include "util.h" for strdup()/ruby_strdup() for
  platforms such as NextStep and OpenStep which lack strdup().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
matz committed Nov 22, 2003
1 parent 0125719 commit 6212cfb
Show file tree
Hide file tree
Showing 28 changed files with 456 additions and 134 deletions.
111 changes: 111 additions & 0 deletions ChangeLog
@@ -1,3 +1,8 @@
Sat Nov 22 11:28:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>

* gc.c (Init_stack): stack region is far smaller than usual if
pthread is used.

Sat Nov 22 07:30:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>

* lib/test/unit/util/backtracefilter.rb: fixed a bug that occurred
Expand All @@ -20,6 +25,11 @@ Fri Nov 21 14:49:42 2003 Minero Aoki <aamine@loveruby.net>

* ruby.1: wrote about ruby related environment variables.

Fri Nov 21 12:28:03 2003 Yukihiro Matsumoto <matz@ruby-lang.org>

* marshal.c (w_extended): singleton methods should not be checked
when dumping via marshal_dump() or _dump(). [ruby-talk:85909]

Fri Nov 21 01:40:00 2003 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>

* configure.in: check <pthread.h>
Expand Down Expand Up @@ -154,6 +164,14 @@ Tue Nov 18 14:06:35 2003 Minero Aoki <aamine@loveruby.net>

* test/fileutils/fileasserts.rb: assert_is_directory -> assert_directory.

Mon Nov 17 19:38:49 2003 Yukihiro Matsumoto <matz@ruby-lang.org>

* file.c (getcwdofdrv): avoid using getcwd() directly, use
my_getcwd() instead.

* merged NeXT, OpenStep, Rhapsody ports patch from Eric Sunshine
<sunshine@sunshineco.com>. [ruby-core:01596]

Mon Nov 17 10:50:27 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>

* lib/optparse.rb (OptionParser::Completion::complete): allow least
Expand All @@ -176,6 +194,13 @@ Sun Nov 16 18:10:57 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>

Sun Nov 16 13:26:07 2003 Yukihiro Matsumoto <matz@ruby-lang.org>

* marshal.c (w_object): LINK check earlier than anything else,
i.e. do not dump TYPE_IVAR for already dumped objects.
(ruby-bugs PR#1220)

* eval.c (rb_eval): call "inherited" only when a new class is
generated; not on reopening.

* eval.c (eval): prepend error position in evaluating string to
"mesg" attribute string only when it's available and is a
string.
Expand Down Expand Up @@ -2233,6 +2258,92 @@ Wed Sep 10 22:41:54 2003 Tietew <tietew@tietew.net>
* eval.c (win32_get_exception_list): avoid VC7 warning.
[ruby-win32:577]

Thu Oct 9 12:05:46 2003 Eric Sunshine <sunshine@sunshineco.com>

* configure.in: revived NextStep, OpenStep, and Rhapsody ports which
had become unbuildable; enhanced --enable-fat-binary option so that
it accepts a list of desired architectures (rather than assuming a
fixed list), or defaults to a platform-appropriate list if user does
not provide an explicit list; made the default list of architectures
for MAB (fat binary) more comprehensive; now uses -fno-common even
when building the interpreter (in addition to using it for
extensions), thus allowing the interpreter to be embedded into a
plugin module of an external project (in addition to allowing
embedding directly into an application); added checks for
<netinet/in_systm.h> (needed by `socket' extension) and getcwd(); now
ensures that -I/usr/local/include is employed when extensions'
extconf.rb scripts invoke have_header() since extension checks on
NextStep and OpenStep will fail without it if the desired resource
resides in the /usr/local tree; fixed formatting of --help message.

* Makefile.in: $(LIBRUBY_A) rule now deletes the archive before
invoking $(AR) since `ar' on Apple/NeXT can not "update" MAB archives
(see configure's --enable-fat-binary option); added rule for new
missing/getcwd.c.

* defines.h: fixed endian handling during MAB build (see configure's
--enable-fat-binary option) to ensure that all portions of the
project see the correct WORDS_BIGENDIAN value (some extension modules
were getting the wrong endian setting); added missing constants
GETPGRP_VOID, WNOHANG, WUNTRACED, X_OK, and type pid_t for NextStep
and OpenStep; removed unnecessary and problematic HAVE_SYS_WAIT_H
define in NeXT section.

* dir.c: do not allow NAMLEN() macro to trust dirent::d_namlen on
NextStep since, on some installations, this value always resolves
uselessly to zero.

* dln.c: added error reporting to NextStep extension loader since the
previous behavior of failing silently was not useful; now ensures
that NSLINKMODULE_OPTION_BINDNOW compatibility constant is defined
for OpenStep and Rhapsody; no longer includes <mach-o/dyld.h> twice
on Rhapsody since this header lacks multiple-include protection,
which resulted in "redefinition" compilation errors.

* main.c: also create hard reference to objc_msgSend() on NeXT
platforms (in addition to Apple platforms).

* lib/mkmf.rb: now exports XCFLAGS from configure script to extension
makefiles so that extensions can be built MAB (see configure's
--enable-fat-binary option); also utilize XCFLAGS in cc_command()
(but not cpp_command() because MAB flags are incompatible with
direct invocation of `cpp').

* ext/curses/extconf.rb: now additionally checks for presence of these
curses functions which are not present on NextStep or Openstep:
bkgd(), bkgdset(), color(), curs(), getbkgd(), init(), scrl(), set(),
setscrreg(), wattroff(), wattron(), wattrset(), wbkgd(), wbkgdset(),
wscrl(), wsetscrreg()

* ext/curses/curses.c: added appropriate #ifdef's for additional set of
curses functions now checked by extconf.rb; fixed curses_bkgd() and
window_bkgd() to correctly return boolean result rather than numeric
result; fixed window_getbkgd() to correctly signal an error by
returning nil rather than -1.

* ext/etc/etc.c: setup_passwd() and setup_group() now check for null
pointers before invoking rb_tainted_str_new2() upon fields extracted
from `struct passwd' and `struct group' since null pointers in some
fields are common on NextStep/OpenStep (especially so for the
`pw_comment' field) and rb_tainted_str_new2() throws an exception
when it receives a null pointer.

* ext/pty/pty.c: include "util.h" for strdup()/ruby_strdup() for
platforms such as NextStep and OpenStep which lack strdup().

* ext/socket/getaddrinfo.c: cast first argument of getservbyname(),
gethostbyaddr(), and gethostbyname() from (const char*) to non-const
(char*) for older platforms such as NextStep and OpenStep.

* ext/socket/socket.c: include "util.h" for strdup()/ruby_strdup() for
platforms such as NextStep and OpenStep which lack strdup(); include
<netinet/in_systm.h> if present for NextStep and OpenStep; cast first
argument of gethostbyaddr() and getservbyname() from (const char*) to
non-const (char*) for older platforms.

* ext/syslog/syslog.c: include "util.h" for strdup()/ruby_strdup() for
platforms such as NextStep and OpenStep which lack strdup().

Tue Sep 9 10:39:51 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>

* eval.c (struct tag): dst should be VALUE.
Expand Down
4 changes: 4 additions & 0 deletions Makefile.in
Expand Up @@ -121,7 +121,11 @@ $(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(EXTOBJS) $(SETUP) miniruby$(EXEEXT)
@rm -f $@
$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@

# We must `rm' the library each time this rule is invoked because "updating" a
# MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not
# supported.
$(LIBRUBY_A): $(OBJS) $(DMYEXT)
@rm -f $@
@AR@ rcu $@ $(OBJS) $(DMYEXT)
@-@RANLIB@ $@ 2> /dev/null || true

Expand Down
115 changes: 64 additions & 51 deletions configure.in
Expand Up @@ -74,48 +74,57 @@ fi
AC_CANONICAL_TARGET

dnl checks for fat-binary
fat_binary=no
AC_ARG_ENABLE(fat-binary,
[ --enable-fat-binary build a NeXT/Apple Multi Architecture Binary. ],
[fat_binary=$enableval])
if test "$fat_binary" = yes ; then
[ --enable-fat-binary=ARCHS
build an Apple/NeXT Multi Architecture Binary (MAB);
ARCHS is a comma-delimited list of architectures for
which to build; if ARCHS is omitted, then the package
will be built for all architectures supported by the
platform ("ppc" for MacOS/X and Darwin; "ppc,i386"
for Rhapsody; "m68k,i386,sparc" for OpenStep;
"m68k,i386,sparc,hppa" for NextStep); if this option
is disabled or omitted entirely, then the package
will be built only for the target platform],
[fat_binary=$enableval], [fat_binary=no])
if test "$fat_binary" != no; then

AC_MSG_CHECKING([target architectures])

# Respect TARGET_ARCHS setting from environment if available.
if test -z "$TARGET_ARCHS"; then
# Respect ARCH given to --enable-fat-binary if present.
if test "$fat_binary" != yes; then
TARGET_ARCHS=`echo "$fat_binary" | tr ',' ' '`
else
# Choose a default set of architectures based upon platform.
case "$target_os" in
darwin*)
TARGET_ARCHS="ppc"
;;
rhapsody*)
TARGET_ARCHS="ppc i386"
;;
openstep*)
TARGET_ARCHS="m68k i386 sparc"
;;
nextstep*)
TARGET_ARCHS="m68k i386 sparc hppa"
;;
*)
TARGET_ARCHS=`arch`
esac
fi
fi

AC_MSG_CHECKING(target architecture)
AC_MSG_RESULT([$TARGET_ARCHS])

case "$target_os" in
rhapsody*)
echo -n "MacOS X Server: "
if test "$TARGET_ARCHS" = "" ; then
TARGET_ARCHS="ppc i386"
fi
;;
nextstep*|openstep*)
echo -n "NeXTSTEP/OPENSTEP: "
if test "$TARGET_ARCHS" = "" ; then
if test `/usr/bin/arch` = "m68k" ; then
TARGET_ARCHS="m68k i486"
else # Black and Native one
TARGET_ARCHS="m68k `/usr/bin/arch`"
fi
fi
# to ensure AC_HEADER_SYS_WAIT works
AC_DEFINE(_POSIX_SOURCE)
;;
macos*|darwin*)
echo -n "MacOS X (Darwin): "
if test "$TARGET_ARCHS" = "" ; then
TARGET_ARCHS="ppc i386"
fi
;;
esac
# /usr/lib/arch_tool -archify_list $TARGET_ARCHS
ARCH_FLAG=
for archs in $TARGET_ARCHS
do
ARCH_FLAG="$ARCH_FLAG -arch $archs "
echo -n " $archs"
ARCH_FLAG="$ARCH_FLAG -arch $archs"
done
AC_DEFINE(NEXT_FAT_BINARY)
echo "."
fi

case $target_cpu in
Expand Down Expand Up @@ -350,7 +359,7 @@ AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(stdlib.h string.h unistd.h limits.h sys/file.h sys/ioctl.h\
fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\
syscall.h pwd.h grp.h a.out.h utime.h memory.h direct.h sys/resource.h \
sys/mkdev.h sys/utime.h float.h pthread.h)
sys/mkdev.h sys/utime.h netinet/in_systm.h float.h pthread.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_UID_T
Expand All @@ -367,7 +376,7 @@ AC_FUNC_MEMCMP
AC_FUNC_FSEEKO
AC_CHECK_FUNCS(ftello)
AC_REPLACE_FUNCS(dup2 memmove mkdir strcasecmp strncasecmp strerror strftime\
strchr strstr strtoul crypt flock vsnprintf\
strchr strstr strtoul getcwd crypt flock vsnprintf\
isinf isnan finite hypot acosh erf)
AC_CHECK_FUNCS(fmod killpg wait4 waitpid syscall chroot fsync\
truncate chsize times utimes fcntl lockf lstat symlink readlink\
Expand Down Expand Up @@ -735,9 +744,6 @@ AC_ARG_WITH(dln-a-out,
*) with_dln_a_out=no;;
esac], [with_dln_a_out=no])

AC_SUBST(XCFLAGS)dnl
AC_SUBST(XLDFLAGS)dnl

AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
[AC_TRY_RUN([
/* Test for whether ELF binaries are produced */
Expand Down Expand Up @@ -801,9 +807,9 @@ if test "$with_dln_a_out" != yes; then
AC_MSG_CHECKING(whether OS depend dynamic link works)
if test "$GCC" = yes; then
case "$target_os" in
nextstep*) ;;
openstep*) ;;
rhapsody*) ;;
nextstep*) CCDLFLAGS=-fno-common;;
openstep*) CCDLFLAGS=-fno-common;;
rhapsody*) CCDLFLAGS=-fno-common;;
darwin*) CCDLFLAGS=-fno-common;;
human*) ;;
bsdi*) ;;
Expand Down Expand Up @@ -1094,7 +1100,7 @@ if test "$prefix" = NONE; then
prefix=$ac_default_prefix
fi

if test "$fat_binary" = yes ; then
if test "$fat_binary" != no ; then
XCFLAGS="$ARCH_FLAG"
fi

Expand Down Expand Up @@ -1225,17 +1231,22 @@ case "$target_os" in
netbsd*)
CFLAGS="$CFLAGS -pipe"
;;
nextstep*)
CFLAGS="$CFLAGS -pipe"
;;
openstep*)
CFLAGS="$CFLAGS -pipe"
nextstep*|openstep*)
# The -fno-common is needed if we wish to embed the Ruby interpreter
# into a plugin module of some project (as opposed to embedding it
# within the project's application). The -I/usr/local/include is
# needed because CPP as discovered by configure (cc -E -traditional)
# fails to consult /usr/local/include by default. This causes
# mkmf.rb's have_header() to fail if the desired resource happens to be
# installed in the /usr/local tree.
CFLAGS="$CFLAGS -pipe -fno-common"
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
;;
rhapsody*)
CFLAGS="$CFLAGS -pipe -no-precomp"
CFLAGS="$CFLAGS -pipe -no-precomp -fno-common"
;;
darwin*)
CFLAGS="$CFLAGS -pipe"
CFLAGS="$CFLAGS -pipe -fno-common"
;;
os2-emx)
CFLAGS="$CFLAGS -DOS2 -Zmts"
Expand Down Expand Up @@ -1314,6 +1325,8 @@ case "$build_os" in
*msdosdjgpp*) FIRSTMAKEFILE=GNUmakefile:djgpp/GNUmakefile.in;;
esac

AC_SUBST(XCFLAGS)dnl
AC_SUBST(XLDFLAGS)dnl
AC_SUBST(LIBRUBY_LDSHARED)
AC_SUBST(LIBRUBY_DLDFLAGS)
AC_SUBST(RUBY_INSTALL_NAME)
Expand Down Expand Up @@ -1390,7 +1403,7 @@ AC_SUBST(sitedir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl

if test "$fat_binary" = yes ; then
if test "$fat_binary" != no ; then
arch="fat-${target_os}"

AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB,
Expand Down
20 changes: 14 additions & 6 deletions defines.h
Expand Up @@ -98,15 +98,23 @@ void xfree _((void*));
#endif
#endif

#ifdef NeXT
#define DYNAMIC_ENDIAN /* determine endian at runtime */
#ifdef __NeXT__
#define S_IXGRP 0000010 /* execute/search permission, group */
#define S_IXOTH 0000001 /* execute/search permission, other */
#ifndef __APPLE__
#define S_IXUSR _S_IXUSR /* execute/search permission, owner */
#define GETPGRP_VOID 1
#define WNOHANG 01
#define WUNTRACED 02
#define X_OK 1
typedef int pid_t;
/* Do not trust WORDS_BIGENDIAN from configure since -arch compiler flag may
result in a different endian. */
#undef WORDS_BIGENDIAN
#ifdef __BIG_ENDIAN__
#define WORDS_BIGENDIAN
#endif
#endif
#define S_IXGRP 0000010 /* execute/search permission, group */
#define S_IXOTH 0000001 /* execute/search permission, other */

#define HAVE_SYS_WAIT_H /* configure fails to find this */
#endif /* NeXT */

#ifdef __CYGWIN__
Expand Down
7 changes: 6 additions & 1 deletion dir.c
Expand Up @@ -29,7 +29,12 @@
# define NAMLEN(dirent) strlen((dirent)->d_name)
#else
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
# if !defined __NeXT__
# define NAMLEN(dirent) (dirent)->d_namlen
# else
# /* On some versions of NextStep, d_namlen is always zero, so avoid it. */
# define NAMLEN(dirent) strlen((dirent)->d_name)
# endif
# if HAVE_SYS_NDIR_H
# include <sys/ndir.h>
# endif
Expand Down

0 comments on commit 6212cfb

Please sign in to comment.