Permalink
Browse files

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

  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: http://svn.ruby-lang.org/repos/ruby/trunk@5002 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information...
1 parent dc32688 commit a15c3f7b2464eff86ec0a1de89518e4d5a57d811 matz committed Nov 22, 2003
Showing with 456 additions and 134 deletions.
  1. +111 −0 ChangeLog
  2. +4 −0 Makefile.in
  3. +64 −51 configure.in
  4. +14 −6 defines.h
  5. +6 −1 dir.c
  6. +20 −6 dln.c
  7. +9 −2 error.c
  8. +7 −3 eval.c
  9. +121 −7 ext/curses/curses.c
  10. +1 −1 ext/curses/extconf.rb
  11. +20 −10 ext/etc/etc.c
  12. +1 −0 ext/pty/pty.c
  13. +3 −3 ext/socket/getaddrinfo.c
  14. +6 −2 ext/socket/socket.c
  15. +1 −0 ext/syslog/syslog.c
  16. +14 −10 file.c
  17. +3 −0 gc.c
  18. +1 −1 lib/cgi.rb
  19. +1 −1 lib/fileutils.rb
  20. +4 −2 lib/mkmf.rb
  21. +1 −1 lib/xsd/charset.rb
  22. +1 −1 main.c
  23. +20 −19 marshal.c
  24. +1 −2 test/csv/test_csv.rb
  25. +1 −1 test/ruby/test_file.rb
  26. +1 −2 test/yaml/test_yaml.rb
  27. +12 −1 util.c
  28. +8 −1 variable.c
View
111 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
@@ -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>
@@ -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
@@ -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.
@@ -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.
View
@@ -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
View
@@ -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
@@ -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
@@ -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\
@@ -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 */
@@ -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*) ;;
@@ -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
@@ -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"
@@ -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)
@@ -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,
View
@@ -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__
View
7 dir.c
@@ -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
Oops, something went wrong.

0 comments on commit a15c3f7

Please sign in to comment.