From 1219bf8a90a7bf8cd3a5363551ef635d51e8fc8e Mon Sep 17 00:00:00 2001 From: Tudor Florea Date: Thu, 8 Oct 2015 22:51:41 +0200 Subject: initial commit for Enea Linux 5.0 arm Signed-off-by: Tudor Florea --- meta-ruby/COPYING.MIT | 17 ++ meta-ruby/README | 22 ++ meta-ruby/classes/ruby.bbclass | 125 +++++++++ meta-ruby/conf/layer.conf | 15 ++ meta-ruby/recipes-devtools/ruby/bundler_git.bb | 29 ++ meta-ruby/recipes-devtools/ruby/ruby.inc | 42 +++ ...onf-hardcode-wide-getaddr-info-test-outco.patch | 26 ++ meta-ruby/recipes-devtools/ruby/ruby/extmk.patch | 13 + .../ruby/ruby/remove-the-dependency-on-dir.patch | 37 +++ .../ruby/ruby/ruby-1.9.3-always-use-i386.patch | 11 + .../ruby/ruby-1.9.3-custom-rubygems-location.patch | 86 ++++++ .../ruby/ruby-1.9.3-disable-versioned-paths.patch | 149 +++++++++++ .../ruby/ruby/ruby-1.9.3-install-cross.patch | 16 ++ .../ruby/ruby/ruby-1.9.3-mkmf-verbose.patch | 11 + .../ruby-1.9.3-rubygems-1.8.11-uninstaller.patch | 76 ++++++ ...kmf.rb-fix-race-conditions-at-install-ext.patch | 31 +++ .../ruby/rubygems-1.8.11-binary-extensions.patch | 296 +++++++++++++++++++++ meta-ruby/recipes-devtools/ruby/ruby_1.9.3-p547.bb | 50 ++++ 18 files changed, 1052 insertions(+) create mode 100644 meta-ruby/COPYING.MIT create mode 100644 meta-ruby/README create mode 100644 meta-ruby/classes/ruby.bbclass create mode 100644 meta-ruby/conf/layer.conf create mode 100644 meta-ruby/recipes-devtools/ruby/bundler_git.bb create mode 100644 meta-ruby/recipes-devtools/ruby/ruby.inc create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/extmk.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/remove-the-dependency-on-dir.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-always-use-i386.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-install-cross.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/ruby-mkmf.rb-fix-race-conditions-at-install-ext.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby/rubygems-1.8.11-binary-extensions.patch create mode 100644 meta-ruby/recipes-devtools/ruby/ruby_1.9.3-p547.bb (limited to 'meta-ruby') diff --git a/meta-ruby/COPYING.MIT b/meta-ruby/COPYING.MIT new file mode 100644 index 000000000..fb950dc69 --- /dev/null +++ b/meta-ruby/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/meta-ruby/README b/meta-ruby/README new file mode 100644 index 000000000..65db19e7c --- /dev/null +++ b/meta-ruby/README @@ -0,0 +1,22 @@ +This layer depends on: + +URI: git://github.com/openembedded/oe-core.git +branch: dizzy +revision: HEAD + +URI: git://github.com/openembedded/meta-oe.git +branch: dizzy +revision: HEAD + +Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-ruby][dizzy]' in the subject' + +When sending single patches, please using something like: +'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-ruby][dizzy][PATCH' + +Interim layer maintainer: Martin Jansa + +Dizzy branch maintainers: + Otavio Salvador + Armin Kuster + +Prefix email subject with: [dizzy] diff --git a/meta-ruby/classes/ruby.bbclass b/meta-ruby/classes/ruby.bbclass new file mode 100644 index 000000000..9c4fcf9c3 --- /dev/null +++ b/meta-ruby/classes/ruby.bbclass @@ -0,0 +1,125 @@ +BPV ?= "${PV}" + +DEPENDS += " \ + ruby-native \ +" +RDEPENDS_${PN} += " \ + ruby \ +" + +def get_rubyversion(p): + import re + from os.path import isfile + import subprocess + found_version = "SOMETHING FAILED!" + + cmd = "%s/ruby" % p + + if not isfile(cmd): + return found_version + + version = subprocess.Popen([cmd, "--version"], stdout=subprocess.PIPE).communicate()[0] + + r = re.compile("ruby ([0-9]+\.[0-9]+\.[0-9]+)*") + m = r.match(version) + if m: + found_version = m.group(1) + + return found_version + +def get_rubygemslocation(p): + import re + from os.path import isfile + import subprocess + found_loc = "SOMETHING FAILED!" + + cmd = "%s/gem" % p + + if not isfile(cmd): + return found_loc + + loc = subprocess.Popen([cmd, "env"], stdout=subprocess.PIPE).communicate()[0] + + r = re.compile(".*\- (/usr.*/ruby/gems/.*)") + for line in loc.split('\n'): + m = r.match(line) + if m: + found_loc = m.group(1) + break + + return found_loc + +def get_rubygemsversion(p): + import re + from os.path import isfile + import subprocess + found_version = "SOMETHING FAILED!" + + cmd = "%s/gem" % p + + if not isfile(cmd): + return found_version + + version = subprocess.Popen([cmd, "env", "gemdir"], stdout=subprocess.PIPE).communicate()[0] + + r = re.compile(".*([0-9]+\.[0-9]+\.[0-9]+)$") + m = r.match(version) + if m: + found_version = m.group(1) + + return found_version + +RUBY_VERSION ?= "${@get_rubyversion("${STAGING_BINDIR_NATIVE}")}" +RUBY_GEM_DIRECTORY ?= "${@get_rubygemslocation("${STAGING_BINDIR_NATIVE}")}" +RUBY_GEM_VERSION ?= "${@get_rubygemsversion("${STAGING_BINDIR_NATIVE}")}" + +export GEM_HOME = "${STAGING_DIR_NATIVE}/usr/lib/ruby/gems/${RUBY_GEM_VERSION}" + +RUBY_BUILD_GEMS ?= "${BPN}.gemspec" +RUBY_INSTALL_GEMS ?= "${BPN}-${BPV}.gem" + +RUBY_COMPILE_FLAGS ?= 'LANG="en_US.UTF-8" LC_ALL="en_US.UTF-8"' + +ruby_do_compile() { + for gem in ${RUBY_BUILD_GEMS}; do + ${RUBY_COMPILE_FLAGS} gem build $gem + done +} + + +ruby_do_install() { + for gem in ${RUBY_INSTALL_GEMS}; do + gem install --ignore-dependencies --local --env-shebang --install-dir ${D}/${libdir}/ruby/gems/${RUBY_GEM_VERSION}/ $gem + done + + # create symlink from the gems bin directory to /usr/bin + for i in ${D}/${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin/*; do + if [ -e "$i" ]; then + if [ ! -d ${D}/${bindir} ]; then mkdir -p ${D}/${bindir}; fi + b=`basename $i` + ln -sf ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin/$b ${D}/${bindir}/$b + fi + done +} + +EXPORT_FUNCTIONS do_compile do_install + +PACKAGES = "${PN}-dbg ${PN} ${PN}-doc ${PN}-dev" + +FILES_${PN}-dbg += " \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/.debug \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/.debug \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/*/.debug \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems/*/*/*/*/*/.debug \ + " + +FILES_${PN} += " \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/gems \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/cache \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/bin \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/specifications \ + " + +FILES_${PN}-doc += " \ + ${libdir}/ruby/gems/${RUBY_GEM_VERSION}/doc \ + " diff --git a/meta-ruby/conf/layer.conf b/meta-ruby/conf/layer.conf new file mode 100644 index 000000000..b526a5d39 --- /dev/null +++ b/meta-ruby/conf/layer.conf @@ -0,0 +1,15 @@ +# We have a conf and classes directory, append to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have a recipes directory, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "ruby-layer" +BBFILE_PATTERN_ruby-layer := "^${LAYERDIR}/" +BBFILE_PRIORITY_ruby-layer = "7" + +# This should only be incremented on significant changes that will +# cause compatibility issues with other layers +LAYERVERSION_ruby-layer = "1" + +LAYERDEPENDS_ruby-layer = "core openembedded-layer" diff --git a/meta-ruby/recipes-devtools/ruby/bundler_git.bb b/meta-ruby/recipes-devtools/ruby/bundler_git.bb new file mode 100644 index 000000000..2adde4d21 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/bundler_git.bb @@ -0,0 +1,29 @@ +SUMMARY = "Makes sure Ruby applications run the same code on every machine." +DESCRIPTION = "Bundler makes sure Ruby applications run the same code \ +on every machine. It does this by managing the gems that the \ +application depends on. Given a list of gems, it can automatically \ +download and install those gems, as well as any other gems needed by \ +the gems that are listed. Before installing gems, it checks the \ +versions of every gem to make sure that they are compatible, and can \ +all be loaded at the same time. After the gems have been installed, \ +Bundler can help you update some or all of them when new versions \ +become available. Finally, it records the exact versions that have \ +been installed, so that others can install the exact same gems." + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=196bb963e601609817d7e9ac9a64a867" + +PR = "r0" + +PV = "1.6.2" +SRCREV = "06e3647c117da210ffd15a174624497830addd7b" + +S = "${WORKDIR}/git" + +SRC_URI = " \ + git://github.com/bundler/bundler.git \ + " + +inherit ruby + +BBCLASSEXTEND = "native" diff --git a/meta-ruby/recipes-devtools/ruby/ruby.inc b/meta-ruby/recipes-devtools/ruby/ruby.inc new file mode 100644 index 000000000..770286960 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby.inc @@ -0,0 +1,42 @@ +SUMMARY = "An interpreter of object-oriented scripting language" +DESCRIPTION = "Ruby is an interpreted scripting language for quick \ +and easy object-oriented programming. It has many features to process \ +text files and to do system management tasks (as in Perl). \ +It is simple, straight-forward, and extensible. \ +" +HOMEPAGE = "http://www.ruby-lang.org/" +SECTION = "devel/ruby" +LICENSE = "Ruby | BSD | GPLv2" +LIC_FILES_CHKSUM = "\ + file://COPYING;md5=837b32593517ae48b9c3b5c87a5d288c \ + file://BSDL;md5=3949e007205deef714bd225e1ee4a8ea \ + file://GPL;md5=393a5ca445f6965873eca0259a17f833 \ + file://LEGAL;md5=3ce1fae39fe573b818c0af162bce6579 \ +" + +DEPENDS = "ruby-native zlib openssl tcl libyaml db gdbm readline" +DEPENDS_class-native = "libyaml-native" + +INC_PR = "r1" + +SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}" +SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \ + file://extmk.patch \ +" + +S = "${WORKDIR}/ruby-${PV}" + +inherit autotools + + +# This snippet lets compiled extensions which rely on external libraries, +# such as zlib, compile properly. If we don't do this, then when extmk.rb +# runs, it uses the native libraries instead of the target libraries, and so +# none of the linking operations succeed -- which makes extconf.rb think +# that the libraries aren't available and hence that the extension can't be +# built. + +do_configure_prepend() { + sed -i "s#%%TARGET_CFLAGS%%#$TARGET_CFLAGS#; s#%%TARGET_LDFLAGS%%#$TARGET_LDFLAGS#" ${S}/common.mk + rm -rf ${S}/ruby/ +} diff --git a/meta-ruby/recipes-devtools/ruby/ruby/0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch b/meta-ruby/recipes-devtools/ruby/ruby/0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch new file mode 100644 index 000000000..712602ace --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch @@ -0,0 +1,26 @@ +From 9341293e71c03fe606edc9157bf1e13e3dd5b507 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Fri, 17 Dec 2010 11:35:38 +0100 +Subject: [PATCH] socket extconf: hardcode wide-getaddr info test outcome to true + +Without this the socket extension doesn't build correctly + +Signed-off-by: Koen Kooi +--- + ext/socket/extconf.rb | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/ext/socket/extconf.rb ++++ b/ext/socket/extconf.rb +@@ -356,6 +356,11 @@ + exit(EXIT_FAILURE); + } + EOF ++ ++# Ignore the actual result of the above test and assume that ++# everything is OK. ++getaddr_info_ok = true ++ + if ipv6 and not getaddr_info_ok + abort < +--- + lib/mkmf.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/mkmf.rb b/lib/mkmf.rb +index 1f5ed76..556684c 100644 +--- a/lib/mkmf.rb ++++ b/lib/mkmf.rb +@@ -2054,7 +2054,7 @@ static: $(STATIC_LIB)#{$extout ? " install-rb" : ""} + end + for f in files + dest = "#{dir}/#{File.basename(f)}" +- mfile.print("install-rb#{sfx}: #{dest} #{dir}\n") ++ mfile.print("install-rb#{sfx}: #{dest}\n") + mfile.print("#{dest}: #{f}\n") + mfile.print("\t$(Q) $(#{$extout ? 'COPY' : 'INSTALL_DATA'}) #{f} $(@D#{sep})\n") + if defined?($installed_list) and !$extout +-- +1.7.10.4 + diff --git a/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-always-use-i386.patch b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-always-use-i386.patch new file mode 100644 index 000000000..f5a8c3de3 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-always-use-i386.patch @@ -0,0 +1,11 @@ +--- a/configure.in.orig 2011-10-18 08:56:21.587594685 +0200 ++++ b/configure.in 2011-10-18 08:56:59.751593321 +0200 +@@ -2935,6 +2935,8 @@ + configure_args=$ac_configure_args + AC_SUBST(configure_args)dnl + ++target_cpu=`echo $target_cpu | sed s/i.86/i386/` ++ + if test "${universal_binary-no}" = yes ; then + arch="universal-${target_os}" + AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available, diff --git a/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch new file mode 100644 index 000000000..e11febc75 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-custom-rubygems-location.patch @@ -0,0 +1,86 @@ +From 279a693ce4ef3a887ce8d4fa59e0f2616a14d91a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 11 Nov 2011 13:14:45 +0100 +Subject: [PATCH] Allow to install RubyGems into custom location, outside of + Ruby tree. + +--- + configure.in | 8 ++++++++ + tool/mkconfig.rb | 1 + + tool/rbinstall.rb | 9 +++++++++ + version.c | 4 ++++ + 4 files changed, 22 insertions(+) + +--- a/configure.in ++++ b/configure.in +@@ -2801,6 +2801,13 @@ + dir="${VENDOR_DIR}" + done + ++AC_ARG_WITH(rubygemsdir, ++ AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]), ++ [rubygemsdir=$withval]) ++if test "$rubygemsdir" != ""; then ++ AC_DEFINE_UNQUOTED(RUBYGEMS_DIR,"$rubygemsdir") ++fi ++ + if test "${LOAD_RELATIVE+set}"; then + AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE) + RUBY_EXEC_PREFIX="" +@@ -2921,6 +2928,7 @@ + AC_SUBST(rubyhdrdir)dnl + AC_SUBST(sitehdrdir)dnl + AC_SUBST(vendorhdrdir)dnl ++AC_SUBST(rubygemsdir)dnl + + AC_ARG_WITH(opt-dir, + AS_HELP_STRING([--with-opt-dir=DIR], [add optional headers and libraries DIR])) +--- a/tool/mkconfig.rb ++++ b/tool/mkconfig.rb +@@ -78,6 +78,7 @@ + when /^RUBY_SO_NAME$/; next if $so_name + when /^arch$/; if val.empty? then val = arch else arch = val end + when /^sitearch/; val = '$(arch)' if val.empty? ++ when /^rubygemsdir/; next if val.empty? + end + case val + when /^\$\(ac_\w+\)$/; next +--- a/tool/rbinstall.rb ++++ b/tool/rbinstall.rb +@@ -300,6 +300,7 @@ + sitearchlibdir = CONFIG["sitearchdir"] + vendorlibdir = CONFIG["vendorlibdir"] + vendorarchlibdir = CONFIG["vendorarchdir"] ++rubygemsdir = CONFIG["rubygemsdir"] + mandir = CONFIG["mandir"] + capidir = CONFIG["docdir"] + configure_args = Shellwords.shellwords(CONFIG["configure_args"]) +@@ -487,7 +488,15 @@ + install?(:local, :comm, :lib) do + prepare "library scripts", rubylibdir + noinst = %w[README* *.txt *.rdoc] ++ noinst += %w[*ubygems.rb rubygems/ datadir.rb] if rubygemsdir + install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode) ++ if rubygemsdir ++ noinst = %w[obsolete.rb] ++ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode) ++ install_recursive(File.join(srcdir, "lib", "rbconfig"), File.join(rubygemsdir, "rbconfig"), :no_install => noinst, :mode => $data_mode) ++ install(File.join(srcdir, "lib", "ubygems.rb"), File.join(rubygemsdir, "ubygems.rb"), :mode => $data_mode) ++ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode) ++ end + end + + install?(:local, :arch, :lib) do +--- a/version.c ++++ b/version.c +@@ -97,6 +97,10 @@ + #endif + #endif + ++#ifdef RUBYGEMS_DIR ++ RUBYGEMS_DIR "\0" ++#endif ++ + RUBY_LIB "\0" + #ifdef RUBY_THIN_ARCHLIB + RUBY_THIN_ARCHLIB "\0" diff --git a/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch new file mode 100644 index 000000000..6d0c5e1ac --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-disable-versioned-paths.patch @@ -0,0 +1,149 @@ +From fa1a50ad10814f724b8713865dc222724cb955ab Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Thu, 25 Aug 2011 14:33:51 +0200 +Subject: [PATCH] Allow to disable versioned paths. + +--- + configure.in | 11 +++++++++++ + tool/mkconfig.rb | 9 ++++++--- + version.c | 10 ++++++++++ + 3 files changed, 27 insertions(+), 3 deletions(-) + +diff --git a/configure.in b/configure.in +index e742e74..86cb68f 100644 +--- a/configure.in ++++ b/configure.in +@@ -2963,6 +2963,17 @@ else + fi + AC_SUBST(USE_RUBYGEMS) + ++AC_ARG_ENABLE(versioned-paths, ++ AS_HELP_STRING([--disable-versioned-paths], [disable paths with version number]), ++ [enable_versioned_paths="$enableval"], [enable_versioned_paths=yes]) ++if test x"$enable_versioned_paths" = xno; then ++ AC_DEFINE(DISABLE_VERSIONED_PATHS, 1) ++ USE_VERSIONED_PATHS=NO ++else ++ USE_VERSIONED_PATHS=YES ++fi ++AC_SUBST(USE_VERSIONED_PATHS) ++ + arch_hdrdir="${EXTOUT}/include/${arch}/ruby" + AS_MKDIR_P("${arch_hdrdir}") + config_h="${arch_hdrdir}/config.h" +diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb +index a2221f0..47d8c8f 100755 +--- a/tool/mkconfig.rb ++++ b/tool/mkconfig.rb +@@ -42,6 +42,7 @@ v_others = [] + vars = {} + continued_name = nil + continued_line = nil ++path_version = "/$(ruby_version)" + File.foreach "config.status" do |line| + next if /^#/ =~ line + name = nil +@@ -138,6 +139,8 @@ File.foreach "config.status" do |line| + case name + when "ruby_version" + version = val[/\A"(.*)"\z/, 1] ++ when /^USE_VERSIONED_PATHS$/ ++ path_version = nil if /NO/ =~ val + end + end + # break if /^CEOF/ +@@ -203,15 +206,15 @@ end + print(*v_fast) + print(*v_others) + print < $data_mode) + end +-- +1.7.6 + diff --git a/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-install-cross.patch b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-install-cross.patch new file mode 100644 index 000000000..9515ece83 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-install-cross.patch @@ -0,0 +1,16 @@ +--- + Makefile.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/Makefile.in ++++ b/Makefile.in +@@ -210,7 +210,8 @@ + @$(RM) fake.rb fake-rbconfig.rb + $(INSTALL_DATA) $(arch_hdrdir)/ruby/config.h $(XRUBY_RUBYHDRDIR)/$(arch)/ruby + $(INSTALL_DATA) $(top_srcdir)/include/ruby/win32.h $(XRUBY_RUBYHDRDIR)/ruby +- $(INSTALL_DATA) $(LIBRUBY) $(LIBRUBY_A) $(XRUBY_RUBYLIBDIR)/$(arch) ++ $(INSTALL_DATA) $(LIBRUBY) $(XRUBY_RUBYLIBDIR)/$(arch) ++ $(INSTALL_DATA) $(LIBRUBY_A) $(XRUBY_RUBYLIBDIR)/$(arch) + $(INSTALL_PROGRAM) $(LIBRUBY_SO) $(XRUBY_RUBYLIBDIR)/$(arch) + + Makefile: $(srcdir)/Makefile.in $(srcdir)/enc/Makefile.in diff --git a/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch new file mode 100644 index 000000000..7da66c8e6 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-mkmf-verbose.patch @@ -0,0 +1,11 @@ +--- ruby-1.9.3-p0/lib/mkmf.rb.debug 2011-08-11 15:07:37.000000000 +0900 ++++ ruby-1.9.3-p0/lib/mkmf.rb 2012-01-29 21:34:17.000000000 +0900 +@@ -1638,7 +1638,7 @@ + SHELL = /bin/sh + + # V=0 quiet, V=1 verbose. other values don't work. +-V = 0 ++V = 1 + Q1 = $(V:1=) + Q = $(Q1:0=@) + n=$(NULLCMD) diff --git a/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch new file mode 100644 index 000000000..af1cff250 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/ruby-1.9.3-rubygems-1.8.11-uninstaller.patch @@ -0,0 +1,76 @@ +--- ruby-1.9.3-p0/lib/rubygems/uninstaller.rb.orig 2011-10-31 10:22:36.321579483 +0100 ++++ ruby-1.9.3-p0/lib/rubygems/uninstaller.rb 2011-10-31 10:34:25.563626119 +0100 +@@ -51,15 +51,14 @@ + @bin_dir = options[:bin_dir] + @format_executable = options[:format_executable] + ++ if options[:force] ++ @force_all = true ++ @force_ignore = true ++ end ++ + # only add user directory if install_dir is not set + @user_install = false + @user_install = options[:user_install] unless options[:install_dir] +- +- if @user_install then +- Gem.use_paths Gem.user_dir, @gem_home +- else +- Gem.use_paths @gem_home +- end + end + + ## +@@ -69,10 +68,24 @@ + def uninstall + list = Gem::Specification.find_all_by_name(@gem, @version) + ++ list, other_repo_specs = list.partition do |spec| ++ @gem_home == spec.base_dir or ++ (@user_install and spec.base_dir == Gem.user_dir) ++ end ++ + if list.empty? then +- raise Gem::InstallError, "gem #{@gem.inspect} is not installed" ++ raise Gem::InstallError, "gem #{@gem.inspect} is not installed" if ++ other_repo_specs.empty? ++ ++ other_repos = other_repo_specs.map { |spec| spec.base_dir }.uniq ++ ++ message = ["#{@gem} is not installed in GEM_HOME, try:"] ++ message.concat other_repos.map { |repo| ++ "\tgem uninstall -i #{repo} #{@gem}" ++ } + +- elsif list.size > 1 and @force_all then ++ raise Gem::InstallError, message.join("\n") ++ elsif @force_all then + remove_all list + + elsif list.size > 1 then +@@ -250,12 +263,10 @@ + msg << "\t#{spec.full_name}" + + spec.dependent_gems.each do |dep_spec, dep, satlist| +- msg << +- ("#{dep_spec.name}-#{dep_spec.version} depends on " + +- "[#{dep.name} (#{dep.requirement})]") ++ msg << "#{dep_spec.name}-#{dep_spec.version} depends on #{dep}" + end + +- msg << 'If you remove this gems, one or more dependencies will not be met.' ++ msg << 'If you remove this gem, one or more dependencies will not be met.' + msg << 'Continue with Uninstall?' + return ask_yes_no(msg.join("\n"), true) + end + +--- ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb.orig 2011-11-03 08:58:31.411272176 +0100 ++++ ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb 2011-11-03 08:58:43.010272351 +0100 +@@ -225,7 +225,7 @@ + + uninstaller = Gem::Uninstaller.new('a') + +- use_ui Gem::MockGemUi.new("2\n") do ++ use_ui Gem::MockGemUi.new("2\ny\n") do + uninstaller.uninstall + end diff --git a/meta-ruby/recipes-devtools/ruby/ruby/ruby-mkmf.rb-fix-race-conditions-at-install-ext.patch b/meta-ruby/recipes-devtools/ruby/ruby/ruby-mkmf.rb-fix-race-conditions-at-install-ext.patch new file mode 100644 index 000000000..5ac5d54a3 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/ruby-mkmf.rb-fix-race-conditions-at-install-ext.patch @@ -0,0 +1,31 @@ +Subject: [PATCH] mkmf.rb: fix race conditions at install-ext + +Upstream-Status: backport + +* lib/mkmf.rb (create_makefile): fix race conditions at install-ext. + target files need to depend on destination directory timestamp + files, not phony trgets. + +git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e + +Signed-off-by: Jackie Huang +--- + lib/mkmf.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/mkmf.rb b/lib/mkmf.rb +index 556684c..a277354 100644 +--- a/lib/mkmf.rb ++++ b/lib/mkmf.rb +@@ -2055,7 +2055,7 @@ static: $(STATIC_LIB)#{$extout ? " install-rb" : ""} + for f in files + dest = "#{dir}/#{File.basename(f)}" + mfile.print("install-rb#{sfx}: #{dest}\n") +- mfile.print("#{dest}: #{f}\n") ++ mfile.print("#{dest}: #{f} #{timestamp_file(dir)}\n") + mfile.print("\t$(Q) $(#{$extout ? 'COPY' : 'INSTALL_DATA'}) #{f} $(@D#{sep})\n") + if defined?($installed_list) and !$extout + mfile.print("\t@echo #{dest}>>$(INSTALLED_LIST)\n") +-- +2.0.0 + diff --git a/meta-ruby/recipes-devtools/ruby/ruby/rubygems-1.8.11-binary-extensions.patch b/meta-ruby/recipes-devtools/ruby/ruby/rubygems-1.8.11-binary-extensions.patch new file mode 100644 index 000000000..5a3bfb451 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby/rubygems-1.8.11-binary-extensions.patch @@ -0,0 +1,296 @@ +From 5a37a3489491a33f2e7011043fbbcd9a765e1777 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Thu, 3 Nov 2011 16:43:05 +0100 +Subject: [PATCH 1/6] Add dedicate extensions folder into $LOAD_PATH. + +--- + lib/rubygems/specification.rb | 37 ++++++++++++++++++++++++++++++------- + 1 files changed, 30 insertions(+), 7 deletions(-) + +diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb +index 97db19e..263e7d3 100644 +--- a/lib/rubygems/specification.rb ++++ b/lib/rubygems/specification.rb +@@ -843,6 +843,12 @@ class Gem::Specification + File.join full_gem_path, path + end + ++ unless extensions.empty? ++ paths += require_paths.map do |path| ++ File.join ext_dir, path ++ end ++ end ++ + # gem directories must come after -I and ENV['RUBYLIB'] + insert_index = Gem.load_path_insert_index + +@@ -954,16 +960,16 @@ class Gem::Specification + + def contains_requirable_file? file + root = full_gem_path ++ ext = ext_dir ++ ++ require_paths.any? do |lib| ++ base = ["#{root}/#{lib}/#{file}"] ++ base << "#{ext}/#{lib}/#{file}" unless extensions.empty? + +- require_paths.each do |lib| +- base = "#{root}/#{lib}/#{file}" +- Gem.suffixes.each do |suf| +- path = "#{base}#{suf}" +- return true if File.file? path ++ base.any? do |path| ++ Gem.suffixes.any? { |suf| File.file? "#{path}#{suf}" } + end + end +- +- return false + end + + ## +@@ -1273,6 +1279,23 @@ class Gem::Specification + end + + ## ++ # Returns the full path to this spec's ext directory. ++ # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0 ++ ++ def ext_dir ++ @gem_dir ||= File.expand_path File.join(exts_dir, full_name) ++ end ++ ++ ## ++ # Returns the full path to the exts directory containing this spec's ++ # gem directory. eg: /usr/local/lib/ruby/1.8/exts ++ ++ def exts_dir ++ # TODO: this logic seems terribly broken, but tests fail if just base_dir ++ @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts") ++ end ++ ++ ## + # Deprecated and ignored, defaults to true. + # + # Formerly used to indicate this gem was RDoc-capable. +-- +1.7.7.3 + + +From 671e4285bf9db948bc5f054d7d3d931cdd7a17f8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Wed, 16 Nov 2011 13:26:48 +0100 +Subject: [PATCH 2/6] Use spec's ext dir for extension installation. + +--- + lib/rubygems/installer.rb | 2 +- + lib/rubygems/specification.rb | 7 +++---- + 2 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb +index 74d803d..0063c7f 100644 +--- a/lib/rubygems/installer.rb ++++ b/lib/rubygems/installer.rb +@@ -499,7 +499,7 @@ TEXT + def build_extensions + return if spec.extensions.empty? + say "Building native extensions. This could take a while..." +- dest_path = File.join gem_dir, spec.require_paths.first ++ dest_path = spec.ext_dir + ran_rake = false # only run rake once + + spec.extensions.each do |extension| +diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb +index 263e7d3..d31b93b 100644 +--- a/lib/rubygems/specification.rb ++++ b/lib/rubygems/specification.rb +@@ -1283,16 +1283,15 @@ class Gem::Specification + # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0 + + def ext_dir +- @gem_dir ||= File.expand_path File.join(exts_dir, full_name) ++ @ext_dir ||= File.join exts_dir, full_name, require_paths.first + end + + ## + # Returns the full path to the exts directory containing this spec's +- # gem directory. eg: /usr/local/lib/ruby/1.8/exts ++ # gem directory. eg: /usr/local/lib/ruby/1.8/gems + + def exts_dir +- # TODO: this logic seems terribly broken, but tests fail if just base_dir +- @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts") ++ @exts_dir ||= gems_dir + end + + ## +-- +1.7.7.3 + + +From 11b4a0cbadd8b1d3320f838881aa60feb6f848e7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Wed, 16 Nov 2011 14:52:16 +0100 +Subject: [PATCH 3/6] Simplify the extending of $LOAD_PATH for binary gems. + +--- + lib/rubygems/specification.rb | 11 +++++------ + 1 files changed, 5 insertions(+), 6 deletions(-) + +diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb +index d31b93b..e65ea2d 100644 +--- a/lib/rubygems/specification.rb ++++ b/lib/rubygems/specification.rb +@@ -843,11 +843,7 @@ class Gem::Specification + File.join full_gem_path, path + end + +- unless extensions.empty? +- paths += require_paths.map do |path| +- File.join ext_dir, path +- end +- end ++ paths << ext_dir unless extensions.empty? || paths.include?(ext_dir) + + # gem directories must come after -I and ENV['RUBYLIB'] + insert_index = Gem.load_path_insert_index +@@ -1291,7 +1287,10 @@ class Gem::Specification + # gem directory. eg: /usr/local/lib/ruby/1.8/gems + + def exts_dir +- @exts_dir ||= gems_dir ++ @exts_dir ||= begin ++ dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir} ++ dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir ++ end + end + + ## +-- +1.7.7.3 + + +From 5d46cd2b1ac9517a9cbcfa430261e62bb3a376b8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 9 Dec 2011 16:31:04 +0100 +Subject: [PATCH 4/6] Fix the binary extension search path construction. + +--- + lib/rubygems/installer.rb | 2 +- + lib/rubygems/specification.rb | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb +index 0063c7f..83b8fd5 100644 +--- a/lib/rubygems/installer.rb ++++ b/lib/rubygems/installer.rb +@@ -499,7 +499,7 @@ TEXT + def build_extensions + return if spec.extensions.empty? + say "Building native extensions. This could take a while..." +- dest_path = spec.ext_dir ++ dest_path = File.join spec.ext_dir, spec.require_paths.first + ran_rake = false # only run rake once + + spec.extensions.each do |extension| +diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb +index e65ea2d..8be2ade 100644 +--- a/lib/rubygems/specification.rb ++++ b/lib/rubygems/specification.rb +@@ -843,7 +843,7 @@ class Gem::Specification + File.join full_gem_path, path + end + +- paths << ext_dir unless extensions.empty? || paths.include?(ext_dir) ++ paths << File.join(ext_dir, require_paths.first) unless extensions.empty? || (ext_dir == full_gem_path) + + # gem directories must come after -I and ENV['RUBYLIB'] + insert_index = Gem.load_path_insert_index +@@ -1279,7 +1279,7 @@ class Gem::Specification + # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0 + + def ext_dir +- @ext_dir ||= File.join exts_dir, full_name, require_paths.first ++ @ext_dir ||= File.join exts_dir, full_name + end + + ## +-- +1.7.7.3 + + +From 6229583633802b45e5a3e5689ab9077347cd9ef7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 13 Dec 2011 12:14:54 +0100 +Subject: [PATCH 5/6] Remove binary extensions during uninstall. + +--- + lib/rubygems/uninstaller.rb | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/lib/rubygems/uninstaller.rb b/lib/rubygems/uninstaller.rb +index cc32ea4..94d78e0 100644 +--- a/lib/rubygems/uninstaller.rb ++++ b/lib/rubygems/uninstaller.rb +@@ -213,6 +213,7 @@ class Gem::Uninstaller + File.writable?(spec.base_dir) + + FileUtils.rm_rf spec.full_gem_path ++ FileUtils.rm_rf spec.ext_dir + + # TODO: should this be moved to spec?... I vote eww (also exists in docmgr) + old_platform_name = [spec.name, +-- +1.7.7.3 + + +From bc40e1b9f60a9a04456e3504ffe6ee600b6da269 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 13 Dec 2011 14:27:14 +0100 +Subject: [PATCH 6/6] Avoid dependency on customized operating_system.rb. + +--- + lib/rubygems/defaults.rb | 11 +++++++++++ + lib/rubygems/specification.rb | 5 +---- + 2 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb +index 20b4198..6d8711f 100644 +--- a/lib/rubygems/defaults.rb ++++ b/lib/rubygems/defaults.rb +@@ -87,6 +87,17 @@ module Gem + end + + ## ++ # Returns binary extensions dir for specified RubyGems base dir or nil ++ # if such directory cannot be determined. ++ # ++ # By default, the binary extensions are located side by side with their ++ # Ruby counterparts, therefore nil is returned ++ ++ def self.default_ext_dir_for base_dir ++ nil ++ end ++ ++ ## + # The default system-wide source info cache directory + + def self.default_system_source_cache_dir +diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb +index 8be2ade..f54210a 100644 +--- a/lib/rubygems/specification.rb ++++ b/lib/rubygems/specification.rb +@@ -1287,10 +1287,7 @@ class Gem::Specification + # gem directory. eg: /usr/local/lib/ruby/1.8/gems + + def exts_dir +- @exts_dir ||= begin +- dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir} +- dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir +- end ++ @exts_dir ||= Gem.default_ext_dir_for(base_dir) || gems_dir + end + + ## +-- +1.7.7.3 + diff --git a/meta-ruby/recipes-devtools/ruby/ruby_1.9.3-p547.bb b/meta-ruby/recipes-devtools/ruby/ruby_1.9.3-p547.bb new file mode 100644 index 000000000..834cb7187 --- /dev/null +++ b/meta-ruby/recipes-devtools/ruby/ruby_1.9.3-p547.bb @@ -0,0 +1,50 @@ +require ruby.inc +PR = "${INC_PR}.0" + +SRC_URI += "\ + file://0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch \ + file://ruby-1.9.3-always-use-i386.patch \ + file://ruby-1.9.3-disable-versioned-paths.patch \ + file://ruby-1.9.3-rubygems-1.8.11-uninstaller.patch \ + file://ruby-1.9.3-custom-rubygems-location.patch \ + file://rubygems-1.8.11-binary-extensions.patch \ + file://ruby-1.9.3-mkmf-verbose.patch \ + file://ruby-1.9.3-install-cross.patch \ + file://remove-the-dependency-on-dir.patch \ + file://ruby-mkmf.rb-fix-race-conditions-at-install-ext.patch \ +" +SRC_URI[md5sum] = "7531f9b1b35b16f3eb3d7bea786babfd" +SRC_URI[sha256sum] = "9ba118e4aba04c430bc4d5efb09b31a0277e101c9fd2ef3b80b9c684d7ae57a1" + +# it's unknown to configure script, but then passed to extconf.rb +# maybe it's not really needed as we're hardcoding the result with +# 0001-socket-extconf-hardcode-wide-getaddr-info-test-outco.patch +UNKNOWN_CONFIGURE_WHITELIST += "--enable-wide-getaddrinfo" + +PACKAGECONFIG ??= "" +PACKAGECONFIG[valgrind] = "--with-valgrind=yes, --with-valgrind=no, valgrind" + +EXTRA_OECONF = "\ + --enable-wide-getaddrinfo \ + --disable-versioned-paths \ + --disable-rpath \ + --enable-shared \ + --enable-load-relative \ +" + +EXTRA_OEMAKE = " \ + LIBRUBYARG='-lruby-static' \ +" + +do_install() { + oe_runmake 'DESTDIR=${D}' install +} + +FILES_${PN} += "${datadir}/rubygems \ + ${datadir}/ri" + +FILES_${PN}-dbg += "${libdir}/ruby/*/.debug \ + ${libdir}/ruby/*/*/.debug \ + ${libdir}/ruby/*/*/*/.debug" + +BBCLASSEXTEND = "native" -- cgit v1.2.3-54-g00ecf