From 931aa6b3a133bd4ea00d2bef72945e1d5b068d49 Mon Sep 17 00:00:00 2001 From: miqlas Date: Sat, 6 May 2017 21:45:37 +0200 Subject: [PATCH] Ruby: bump version (#1321) --- dev-lang/ruby/patches/ruby-2.2.7.patchset | 408 ++++++++++++++++++++++ dev-lang/ruby/ruby-2.2.7.recipe | 105 ++++++ 2 files changed, 513 insertions(+) create mode 100644 dev-lang/ruby/patches/ruby-2.2.7.patchset create mode 100644 dev-lang/ruby/ruby-2.2.7.recipe diff --git a/dev-lang/ruby/patches/ruby-2.2.7.patchset b/dev-lang/ruby/patches/ruby-2.2.7.patchset new file mode 100644 index 000000000..62ba8e70f --- /dev/null +++ b/dev-lang/ruby/patches/ruby-2.2.7.patchset @@ -0,0 +1,408 @@ +From 11a1c0125fb9bad32eef017e10f6d25e72de3b37 Mon Sep 17 00:00:00 2001 +From: Alexander von Gluck IV +Date: Sun, 1 Feb 2015 03:29:50 +0000 +Subject: configure.in: Fix haiku build by removing unneeded i586 check + + +diff --git a/configure.in b/configure.in +index 99fc7d0..bd6fa76 100644 +--- a/configure.in ++++ b/configure.in +@@ -3058,15 +3058,8 @@ if test "$with_dln_a_out" != yes; then + ]) + : ${LIBPATHENV=LIBRARY_PATH} + rb_cv_dlopen=yes], +- [haiku*], [ AS_CASE(["$target_cpu"], +- [powerpc*], [ +- : ${LDSHARED='$(LD) -xms'} +- EXTDLDFLAGS='-export $(TARGET_ENTRY)' +- DLDFLAGS="$DLDFLAGS -lroot glue-noinit.a init_term_dyn.o start_dyn.o" +- ], +- [i586*], [ +- : ${LDSHARED='$(CC) -shared'} +- ]) ++ [haiku*], [ ++ : ${LDSHARED='$(CC) -shared'} + : ${LIBPATHENV=LIBRARY_PATH} + rb_cv_dlopen=yes ], + [nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib" +-- +2.2.2 + + +From 47a2b978b4debb8172069f9a81aeacb2208e792a Mon Sep 17 00:00:00 2001 +From: Alexander von Gluck IV +Date: Wed, 4 Feb 2015 04:43:25 +0000 +Subject: ext/socket: Don't check for Haiku, no longer needed + + +diff --git a/ext/socket/getaddrinfo.c b/ext/socket/getaddrinfo.c +index 68f610e..b518787 100644 +--- a/ext/socket/getaddrinfo.c ++++ b/ext/socket/getaddrinfo.c +@@ -45,7 +45,7 @@ + #include + #ifndef _WIN32 + #include +-#if defined(__BEOS__) && !defined(__HAIKU__) && !defined(BONE) ++#if defined(__BEOS__) && !defined(BONE) + # include + #else + # include +-- +2.2.2 + + +From 6757bff75ef21ba7d0a294f3711c9ba4d8579820 Mon Sep 17 00:00:00 2001 +From: Hamish Morrison +Date: Tue, 2 Jun 2015 21:47:45 +0100 +Subject: configure.in: remove obsolete workarounds for Haiku + + +diff --git a/configure.in b/configure.in +index bd6fa76..d77f4ba 100644 +--- a/configure.in ++++ b/configure.in +@@ -847,7 +847,7 @@ if test "$GCC" = yes; then + + # -fstack-protector + AS_CASE(["$target_os"], +- [mingw*|nacl|haiku], [ ++ [mingw*|nacl], [ + stack_protector=no + ]) + if test -z "${stack_protector+set}"; then +@@ -899,11 +899,6 @@ if test "$GCC" = yes; then + [cygwin*|darwin*|netbsd*|nacl], [ + # need lgamma_r(), finite() + ], +- [haiku], [ +- # Haiku R1/alpha3 uses gcc-4.4.4 which can not handle anonymous union +- # with ANSI standard flags. Anonumous union is required to compile +- # socket extension where uses anonymous union. +- ], + [ + # ANSI (no XCFLAGS because this is C only) + for ansi_options in -std=iso9899:1999 "-ansi -std=iso9899:199409"; do +@@ -1090,14 +1085,15 @@ main() + ], + [hpux*], [ LIBS="-lm $LIBS" + ac_cv_c_inline=no], +-[beos*|haiku*], [ ++[beos*], [ + ac_cv_func_link=no + ac_cv_func_sched_yield=no + ac_cv_func_pthread_attr_setinheritsched=no +- AS_CASE(["$target_os"], +- [beos*], [ ac_cv_header_net_socket_h=yes], +- [haiku*], [ ac_cv_func_shutdown=no]) +- LIBS="$LIBS" # m lib is include in root under BeOS/Haiku ++ ac_cv_header_net_socket_h=yes ++ LIBS="$LIBS" # m lib is include in root under BeOS ++ ], ++[haiku*], [ ++ LIBS="$LIBS" + ], + [cygwin*], [ ac_cv_header_langinfo_h=yes + AC_CHECK_FUNCS(cygwin_conv_path) +@@ -2943,7 +2939,7 @@ if test "$with_dln_a_out" != yes; then + # mkmf.rb's have_header() to fail if the desired resource happens to be + # installed in the /usr/local tree. + RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)], +- [bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*], [ ], ++ [bsdi*|beos*|cygwin*|mingw*|aix*|interix*], [ ], + [ + RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)]) + else +@@ -3061,6 +3057,9 @@ if test "$with_dln_a_out" != yes; then + [haiku*], [ + : ${LDSHARED='$(CC) -shared'} + : ${LIBPATHENV=LIBRARY_PATH} ++ if test "$rb_cv_binary_elf" = yes; then ++ LDFLAGS="$LDFLAGS -Wl,-export-dynamic" ++ fi + rb_cv_dlopen=yes ], + [nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib" + : ${LDSHARED='$(LD) -Bshareable -x'} +@@ -3506,7 +3505,7 @@ AS_CASE("$enable_shared", [yes], [ + [sunos4*], [ + LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so' + ], +- [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu], [ ++ [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu | haiku*], [ + LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)'" $LDFLAGS_OPTDIR" + LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so' + if test "$load_relative" = yes; then +@@ -3597,10 +3596,6 @@ AS_CASE("$enable_shared", [yes], [ + AS_HELP_STRING([--disable-pie], [disable PIE feature]), + [pie=$enableval], [pie=]) + AS_CASE(["$target_os"], +- [haiku], [ +- # gcc supports PIE, but doesn't work correctly in Haiku +- pie=no +- ], + [nacl], [ + # -pie implies -shared for NaCl. + pie=no +-- +2.2.2 + + +From 2d79d79dafcf1e8a9301ab6b3422e61e1ff88ee9 Mon Sep 17 00:00:00 2001 +From: Hamish Morrison +Date: Tue, 2 Jun 2015 21:50:06 +0100 +Subject: dln.c, file.c, io.c: remove obsolete Haiku workarounds + + +diff --git a/dln.c b/dln.c +index f3de2c3..25ee7fe 100644 +--- a/dln.c ++++ b/dln.c +@@ -85,7 +85,7 @@ char *getenv(); + # endif + #endif + +-#if defined(__BEOS__) || defined(__HAIKU__) ++#if defined(__BEOS__) + # include + #endif + +@@ -1444,7 +1444,7 @@ dln_load(const char *file) + } + #endif + +-#if defined(__BEOS__) || defined(__HAIKU__) ++#if defined(__BEOS__) + # define DLN_DEFINED + { + status_t err_stat; /* BeOS error status code */ +@@ -1490,7 +1490,7 @@ dln_load(const char *file) + (*init_fct)(); + return (void*)img_id; + } +-#endif /* __BEOS__ || __HAIKU__ */ ++#endif /* __BEOS__ */ + + #ifndef DLN_DEFINED + dln_notimplement(); +diff --git a/ext/socket/rubysocket.h b/ext/socket/rubysocket.h +index 84b971c..fdf9168 100644 +--- a/ext/socket/rubysocket.h ++++ b/ext/socket/rubysocket.h +@@ -27,7 +27,7 @@ + # undef HAVE_TYPE_STRUCT_SOCKADDR_DL + # endif + #else +-# if defined(__BEOS__) && !defined(__HAIKU__) && !defined(BONE) ++# if defined(__BEOS__) && !defined(BONE) + # include + # else + # include +diff --git a/file.c b/file.c +index f3941fe..d977865 100644 +--- a/file.c ++++ b/file.c +@@ -117,7 +117,7 @@ int flock(int, int); + #define STAT(p, s) stat((p), (s)) + #endif + +-#if defined(__BEOS__) || defined(__HAIKU__) /* should not change ID if -1 */ ++#if defined(__BEOS__) /* should not change ID if -1 */ + static int + be_chown(const char *path, uid_t owner, gid_t group) + { +@@ -142,7 +142,7 @@ be_fchown(int fd, uid_t owner, gid_t group) + return fchown(fd, owner, group); + } + #define fchown be_fchown +-#endif /* __BEOS__ || __HAIKU__ */ ++#endif /* __BEOS__ */ + + VALUE rb_cFile; + VALUE rb_mFileTest; +diff --git a/include/ruby/defines.h b/include/ruby/defines.h +index 7baf210..cb0e4ce 100644 +--- a/include/ruby/defines.h ++++ b/include/ruby/defines.h +@@ -163,7 +163,7 @@ void xfree(void*); + #include "ruby/win32.h" + #endif + +-#if defined(__BEOS__) && !defined(__HAIKU__) && !defined(BONE) ++#if defined(__BEOS__) && !defined(BONE) + #include /* intern.h needs fd_set definition */ + #endif + +diff --git a/io.c b/io.c +index eb14407..1001378 100644 +--- a/io.c ++++ b/io.c +@@ -34,7 +34,7 @@ + # include + #endif + +-#if defined(__BOW__) || defined(__CYGWIN__) || defined(_WIN32) || defined(__EMX__) || defined(__BEOS__) || defined(__HAIKU__) ++#if defined(__BOW__) || defined(__CYGWIN__) || defined(_WIN32) || defined(__EMX__) || defined(__BEOS__) + # define NO_SAFE_RENAME + #endif + +@@ -96,7 +96,7 @@ + #include + #endif + +-#if defined(__BEOS__) || defined(__HAIKU__) ++#if defined(__BEOS__) + # ifndef NOFILE + # define NOFILE (OPEN_MAX) + # endif +-- +2.2.2 + + +From caa0c926219365b338065a00390f982dfc705c04 Mon Sep 17 00:00:00 2001 +From: Hamish Morrison +Date: Tue, 2 Jun 2015 21:51:28 +0100 +Subject: thread_pthread.c: add stack bounds detection for Haiku + + +diff --git a/thread_pthread.c b/thread_pthread.c +index d2aebe7..a66f8a0 100644 +--- a/thread_pthread.c ++++ b/thread_pthread.c +@@ -33,6 +33,9 @@ + #if defined(HAVE_SYS_TIME_H) + #include + #endif ++#if defined(__HAIKU__) ++#include ++#endif + + static void native_mutex_lock(rb_nativethread_lock_t *lock); + static void native_mutex_unlock(rb_nativethread_lock_t *lock); +@@ -497,6 +500,8 @@ size_t pthread_get_stacksize_np(pthread_t); + #define STACKADDR_AVAILABLE 1 + #elif defined HAVE_PTHREAD_GETTHRDS_NP + #define STACKADDR_AVAILABLE 1 ++#elif defined __HAIKU__ ++#define STACKADDR_AVAILABLE 1 + #elif defined __ia64 && defined _HPUX_SOURCE + #include + +@@ -618,6 +623,13 @@ get_stack(void **addr, size_t *size) + calculated by thinfo.__pi_stackend - thinfo.__pi_stackaddr. */ + *size = thinfo.__pi_stackend - thinfo.__pi_stackaddr; + STACK_DIR_UPPER((void)0, (void)(*addr = (char *)*addr + *size)); ++#elif defined __HAIKU__ ++ thread_info info; ++ STACK_GROW_DIR_DETECTION; ++ CHECK_ERR(get_thread_info(find_thread(NULL), &info)); ++ *addr = info.stack_base; ++ *size = (uintptr_t)info.stack_end - (uintptr_t)info.stack_base; ++ STACK_DIR_UPPER((void)0, (void)(*addr = (char *)*addr + *size)); + #else + #error STACKADDR_AVAILABLE is defined but not implemented. + #endif +-- +2.2.2 + + +From 5c7a0a3b27e322f2be1ffd8c306794aadc580b8a Mon Sep 17 00:00:00 2001 +From: Hamish Morrison +Date: Tue, 2 Jun 2015 21:52:34 +0100 +Subject: signal.c: get stack pointer from signal context on Haiku + + +diff --git a/configure.in b/configure.in +index d77f4ba..4be7f38 100644 +--- a/configure.in ++++ b/configure.in +@@ -2785,10 +2785,24 @@ if test x"$enable_pthread" = xyes; then + fi + fi + fi +-if test x"$ac_cv_header_ucontext_h" = xyes; then ++ ++if test x"$ac_cv_header_ucontext_h" = xno; then ++ AC_CACHE_CHECK([if signal.h defines ucontext_t], [rb_cv_ucontext_in_signal_h], ++ [AC_TRY_COMPILE([@%:@include ], ++ [size_t size = sizeof(ucontext_t);], ++ [rb_cv_ucontext_in_signal_h=yes], [rb_cv_ucontext_in_signal_h=no])]) ++ if test x"$rb_cv_ucontext_in_signal_h" = xyes; then ++ AC_DEFINE_UNQUOTED(UCONTEXT_IN_SIGNAL_H, 1) ++ fi ++fi ++if test x"$ac_cv_header_ucontext_h" = xyes -o x"$rb_cv_ucontext_in_signal_h" = xyes; then + AC_CACHE_CHECK([if mcontext_t is a pointer], [rb_cv_mcontext_t_ptr], +- [AC_TRY_COMPILE([@%:@include +- mcontext_t test(mcontext_t mc) {return mc+1;} ++ [AC_TRY_COMPILE([ ++ @%:@include ++ @%:@ifdef HAVE_UCONTEXT_H ++ @%:@include ++ @%:@endif ++ mcontext_t test(mcontext_t mc) {return mc+1;} + ], + [test(0);], + [rb_cv_mcontext_t_ptr=yes], [rb_cv_mcontext_t_ptr=no])]) +diff --git a/signal.c b/signal.c +index 1bbf23d..e484593 100644 +--- a/signal.c ++++ b/signal.c +@@ -66,7 +66,7 @@ ruby_atomic_compare_and_swap(rb_atomic_t *ptr, rb_atomic_t cmp, + } + #endif + +-#if defined(__BEOS__) || defined(__HAIKU__) ++#if defined(__BEOS__) + #undef SIGBUS + #endif + +@@ -752,7 +752,9 @@ static const char *received_signal; + + #if defined(USE_SIGALTSTACK) || defined(_WIN32) + NORETURN(void ruby_thread_stack_overflow(rb_thread_t *th)); +-# if !(defined(HAVE_UCONTEXT_H) && (defined __i386__ || defined __x86_64__ || defined __amd64__)) ++# if defined __HAIKU__ ++# define USE_UCONTEXT_REG 1 ++# elif !(defined(HAVE_UCONTEXT_H) && (defined __i386__ || defined __x86_64__ || defined __amd64__)) + # elif defined __linux__ + # define USE_UCONTEXT_REG 1 + # elif defined __APPLE__ +@@ -783,6 +785,12 @@ check_stack_overflow(const uintptr_t addr, const ucontext_t *ctx) + # else + const __register_t sp = mctx->mc_esp; + # endif ++# elif defined __HAIKU__ ++# if defined(__amd64__) ++ const unsigned long sp = mctx->rsp; ++# else ++ const unsigned long sp = mctx->esp; ++# endif + # endif + enum {pagesize = 4096}; + const uintptr_t sp_page = (uintptr_t)sp / pagesize; +-- +2.2.2 + + +From 14340bc30f4f05a7e72d0eb394e90236928407f2 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Sun, 5 Jun 2016 10:38:31 +0000 +Subject: disable fstack-protector on haiku. + + +diff --git a/configure.in b/configure.in +index 4be7f38..87449b8 100644 +--- a/configure.in ++++ b/configure.in +@@ -847,7 +847,7 @@ if test "$GCC" = yes; then + + # -fstack-protector + AS_CASE(["$target_os"], +- [mingw*|nacl], [ ++ [mingw*|nacl|haiku*], [ + stack_protector=no + ]) + if test -z "${stack_protector+set}"; then +-- +2.2.2 diff --git a/dev-lang/ruby/ruby-2.2.7.recipe b/dev-lang/ruby/ruby-2.2.7.recipe new file mode 100644 index 000000000..24804ced2 --- /dev/null +++ b/dev-lang/ruby/ruby-2.2.7.recipe @@ -0,0 +1,105 @@ +SUMMARY="A programming language focused on simplicity and productivity" +DESCRIPTION="Ruby is a dynamic, reflective, object-oriented, general-purpose \ +programming language. It was designed and developed in the mid-1990s \ +by Yukihiro 'Matz' Matsumoto in Japan. + +Ruby embodies syntax inspired by Perl with Smalltalk-like features and \ +was also influenced by Eiffel and Lisp. It supports multiple \ +programming paradigms, including functional, object oriented, and \ +imperative. It also has a dynamic type system and automatic memory \ +management. Therefore, it is similar in varying degrees to, Smalltalk, \ +Python, Perl, Lisp, Dylan, and CLU." +HOMEPAGE="http://www.ruby-lang.org/" +COPYRIGHT="1993-2017 Yukihiro Matsumoto" +LICENSE="Ruby + BSD (3-clause)" +REVISION="1" +SOURCE_URI="http://cache.ruby-lang.org/pub/ruby/2.2/ruby-$portVersion.tar.gz" +CHECKSUM_SHA256="374184c6c5bbc88fb7bad422368d4053a236fb6587f0eff76146dcba57f93da5" +PATCHES="ruby-2.2.7.patchset" + +ARCHITECTURES="!x86_gcc2 x86 x86_64" +SECONDARY_ARCHITECTURES="x86" + +PROVIDES=" + ruby$secondaryArchSuffix = $portVersion compat >= 2.2 + cmd:erb = $portVersion compat >= 2.2 + cmd:gem = $portVersion compat >= 2.2 + cmd:irb = $portVersion compat >= 2.2 + cmd:rake = $portVersion compat >= 2.2 + cmd:rdoc = $portVersion compat >= 2.2 + cmd:ri = $portVersion compat >= 2.2 + cmd:ruby = $portVersion compat >= 2.2 + cmd:testrb = $portVersion compat >= 2.2 + lib:libruby$secondaryArchSuffix = $portVersion compat >= 2.2 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libedit$secondaryArchSuffix + lib:libffi$secondaryArchSuffix + lib:libiconv$secondaryArchSuffix + lib:libncursesw$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +PROVIDES_devel=" + ruby${secondaryArchSuffix}_devel = $portVersion + devel:libruby$secondaryArchSuffix = $portVersion compat >= 2.2 + devel:libruby_static$secondaryArchSuffix = $portVersion compat >= 2.2 + lib:libruby_static$secondaryArchSuffix = $portVersion compat >= 2.2 + " +REQUIRES_devel=" + ruby$secondaryArchSuffix == $portVersion base + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libcrypto$secondaryArchSuffix + devel:libedit$secondaryArchSuffix + devel:libffi$secondaryArchSuffix + devel:libiconv$secondaryArchSuffix + devel:libncursesw$secondaryArchSuffix + devel:libssl$secondaryArchSuffix + devel:libz$secondaryArchSuffix + + " +BUILD_PREREQUIRES=" + cmd:autoconf + cmd:bison + cmd:gcc$secondaryArchSuffix + cmd:g++$secondaryArchSuffix + cmd:git + cmd:libtoolize + cmd:make + cmd:pkg_config$secondaryArchSuffix + " + +BUILD() +{ + libtoolize --force --copy --install + autoconf + export CFLAGS=-D_BSD_SOURCE + runConfigure --omit-dirs binDir ./configure --enable-shared \ + --disable-silent-rules \ + --bindir=$prefix/bin + # The build process needs to run ruby, and without this it fails to find + # libruby.so. + export LIBRARY_PATH=$LIBRARY_PATH:%A + make $jobArgs +} + +INSTALL() +{ + export LIBRARY_PATH=$LIBRARY_PATH:%A + make install + prepareInstalledDevelLibs libruby-static libruby + packageEntries devel $developDir +} + +TEST() +{ + export LIBRARY_PATH=$LIBRARY_PATH:%A + make check +}