You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

751 lines
25 KiB

#
# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
# To Do:
# - dirs not removed when uninstalling!
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ruby
PKG_VERSION:=2.4.0
PKG_RELEASE:=1
PKG_LIBVER:=2.4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://cache.ruby-lang.org/pub/ruby/$(PKG_LIBVER)/
PKG_MD5SUM:=440bbbdc49d08d3650f340dccb35986d9399177ad69a204def56e5d3954600cf
PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=COPYING
PKG_BUILD_DEPENDS:=ruby/host
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
HOST_CONFIGURE_ARGS += \
--disable-install-doc \
--disable-install-rdoc \
--disable-install-capi \
--without-gmp \
--with-out-ext=-test-/array/resize,-test-/bignum,-test-/bug-3571,-test-/bug-5832,-test-/bug_reporter,-test-/class,-test-/debug,-test-/dln/empty,-test-/exception,-test-/fatal,-test-/file,-test-/float,-test-/funcall,-test-/gvl/call_without_gvl,-test-/hash,-test-/integer,-test-/iseq_load,-test-/iter,-test-/load/dot.dot,-test-/marshal/compat,-test-/marshal/internal_ivar,-test-/marshal/usr,-test-/memory_status,-test-/method,-test-/notimplement,-test-/num2int,-test-/path_to_class,-test-/popen_deadlock,-test-/postponed_job,-test-/printf,-test-/proc,-test-/rational,-test-/recursion,-test-/st/foreach,-test-/st/numhash,-test-/st/update,-test-/string,-test-/struct,-test-/symbol,-test-/time,-test-/tracepoint,-test-/typeddata,-test-/vm,-test-/wait_for_single_fd,-test-/win32/console,-test-/win32/dln,-test-/win32/fd_setsize,bigdecimal,cgi/escape,continuation,coverage,dbm,etc,fcntl,fiber,fiddle,gdbm,io/console,io/nonblock,io/wait,json,json/generator,json/parser,mathn/complex,mathn/rational,nkf,objspace,openssl,pathname,pty,racc/cparse,rbconfig/sizeof,readline,ripper,rubyvm,sdbm,socket,syslog,win32,win32ole,win32/resolv,zlib
# Does not compile with this. Workaround is --without-gmp
# https://bugs.ruby-lang.org/issues/11940
#--with-static-linked-ext \
# even not used, host build with restricted exts results in gems not being
# compiled for target (probably some cross compiling problem like checking
# host for selecting target features)
# --with-out-ext \
# --with-ext=thread,stringio \
CONFIGURE_ARGS += \
--enable-shared \
--enable-static \
--disable-rpath \
$(call autoconf_bool,CONFIG_IPV6,ipv6) \
--disable-install-doc \
--disable-install-capi \
--with-ruby-version=minor \
--with-iconv-dir=$(ICONV_PREFIX) \
--with-out-ext=win32,win32ole
ifndef CONFIG_RUBY_DIGEST_USE_OPENSSL
CONFIGURE_ARGS += \
--with-bundled-sha1\
--with-bundled-md5\
--with-bundled-rmd160\
--with-bundled-sha2 \
endif
TARGET_LDFLAGS += -L$(PKG_BUILD_DIR)
# Ruby uses DLDFLAGS and not LDFLAGS for libraries. LDFLAGS is only for execs.
# However, DLDFLAGS from configure is not passed to Makefile when target is linux.
# XLDFLAGS is used by both libraries and execs. This is somehow brute force but
# it will fix when some LD_FLAGS is needef for libraries. As side effect, it will
# duplicate ld args for binaries.
CONFIGURE_VARS += XLDFLAGS="$(TARGET_LDFLAGS)"
MAKE_FLAGS += \
DESTDIR="$(PKG_INSTALL_DIR)" \
SHELL="/bin/bash"
define Build/InstallDev
( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
. \
) | ( cd $(1); $(TAR) -xf - )
endef
define Host/Install
# When ruby version is updated, make install asks in some cases before replace
# an existing different file. Remove them before install and avoid the interaction
rm -f $(STAGING_DIR_HOSTPKG)/bin/rake
$(call Host/Install/Default)
endef
define Package/ruby/Default
SUBMENU:=Ruby
SECTION:=lang
CATEGORY:=Languages
TITLE:=Ruby scripting language
URL:=http://www.ruby-lang.org/
endef
define Package/ruby/Default/description
Ruby is the 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.
endef
define Package/ruby
$(call Package/ruby/Default)
TITLE+= (interpreter)
DEPENDS:=+libruby
endef
define Package/ruby/description
$(call Package/ruby/Default/description)
endef
define RubyDependency
$(eval \
$(call Package/Default)
$(call Package/ruby-$(1))
FILTER_CONFIG:=$$(strip \
$$(foreach config_dep, \
$$(filter @%, \
$$(foreach v, \
$$(DEPENDS), \
$$(if $$(findstring :,$$v),,$$v) \
) \
), \
$$(subst @,,$$(config_dep)) \
) \
)
ifneq (,$$(FILTER_CONFIG))
FILTER_CONFIG:=($$(subst $$(space),&&,$$(FILTER_CONFIG))):
endif
) \
+$(FILTER_CONFIG)ruby-$(1)
endef
define Package/ruby/config
comment "Standard Library"
depends on PACKAGE_ruby
config PACKAGE_ruby-stdlib
depends on PACKAGE_ruby
default m if ALL
prompt "Select Ruby Complete Standard Library (ruby-stdlib)"
endef
define Package/ruby/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
$(INSTALL_DIR) $(1)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)
$(INSTALL_DIR) $(1)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ruby $(1)/usr/lib/ruby/ruby$(PKG_LIBVER)-bin
$(INSTALL_BIN) ./files/ruby $(1)/usr/bin/ruby
$(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)/* $(1)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)/* $(1)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)/
$(SED) "s%@RUBY_LIBPATH@%/usr/lib/ruby/$(PKG_LIBVER)%" $(1)/usr/bin/ruby
$(SED) "s%@RUBY_BINPATH@%/usr/lib/ruby/ruby$(PKG_LIBVER)-bin%" $(1)/usr/bin/ruby
endef
define Package/libruby
$(call Package/ruby/Default)
SUBMENU:=
SECTION:=libs
CATEGORY:=Libraries
TITLE+= (shared library)
DEPENDS+= +libpthread +librt +libgmp
ABI_VERSION:=$(PKG_LIBVER)
endef
define Package/libruby/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libruby.so.* $(1)/usr/lib/
endef
RUBY_STDLIB :=
define Package/ruby-stdlib
$(call Package/ruby/Default)
TITLE:=Ruby standard libraries (metadata for all stdlib subsets)
DEPENDS:=ruby $(foreach subpackage,$(RUBY_STDLIB),$(strip $(call RubyDependency,$(subpackage))))
HIDDEN:=1
endef
define Package/ruby-stdlib/description
This metapackage currently install all ruby-* packages,
providing a complete Ruby Standard Library.
endef
# nothing to do
define Package/ruby-stdlib/install
/bin/true
endef
define Package/ruby-bigdecimal/files
/usr/lib/ruby/$(PKG_LIBVER)/*/bigdecimal.so
/usr/lib/ruby/$(PKG_LIBVER)/bigdecimal/
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/bigdecimal-*.gemspec
endef
define Package/ruby-cgi/files
/usr/lib/ruby/$(PKG_LIBVER)/cgi
/usr/lib/ruby/$(PKG_LIBVER)/cgi.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/cgi/escape.so
endef
define Package/ruby-csv/files
/usr/lib/ruby/$(PKG_LIBVER)/csv.rb
endef
define Package/ruby-datetime/files
/usr/lib/ruby/$(PKG_LIBVER)/time.rb
/usr/lib/ruby/$(PKG_LIBVER)/date.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/date_core.so
endef
define Package/ruby-dbm/description
The DBM class provides a wrapper to a Unix-style dbm or Database Manager library.
This package provides dbm.so file.
endef
define Package/ruby-dbm/files
/usr/lib/ruby/$(PKG_LIBVER)/*/dbm.so
endef
define Package/ruby-debuglib/files
/usr/lib/ruby/$(PKG_LIBVER)/profile.rb
/usr/lib/ruby/$(PKG_LIBVER)/profiler.rb
/usr/lib/ruby/$(PKG_LIBVER)/debug.rb
/usr/lib/ruby/$(PKG_LIBVER)/tracer.rb
/usr/lib/ruby/$(PKG_LIBVER)/benchmark.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/objspace.so
endef
define Package/ruby-did-you-mean/files
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/did_you_mean-*.gemspec
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/
endef
define Package/ruby-did-you-mean/files-excluded
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/benchmark
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/doc
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/evaluation
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/test
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/*.md
endef
define Package/ruby-digest/description
Provides digest* files. Can be configured to use OpenSSL or
bundled hash functions.
endef
define Package/ruby-digest/config
config RUBY_DIGEST_USE_OPENSSL
bool "Use OpenSSL functions for ruby digest hash functions"
depends on PACKAGE_ruby-digest
help
Ruby can use OpenSSL hash functions or compile alternative implementations. Using
OpenSSL saves about 30KBytes (less when compressed) but requires OpenSSL (that
is way bigger than that). However, if OpenSSL is already needed by another usage,
as ruby-openssl or any other non ruby package, it is better to mark this option.
default n
endef
define Package/ruby-digest/files
/usr/lib/ruby/$(PKG_LIBVER)/digest
/usr/lib/ruby/$(PKG_LIBVER)/digest.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/digest.so
/usr/lib/ruby/$(PKG_LIBVER)/*/digest/*
endef
define Package/ruby-drb/files
/usr/lib/ruby/$(PKG_LIBVER)/drb.rb
/usr/lib/ruby/$(PKG_LIBVER)/drb
endef
define Package/ruby-enc/files
/usr/lib/ruby/$(PKG_LIBVER)/*/enc/encdb.so
/usr/lib/ruby/$(PKG_LIBVER)/*/enc/iso_8859_1.so
/usr/lib/ruby/$(PKG_LIBVER)/*/enc/utf_*.so
/usr/lib/ruby/$(PKG_LIBVER)/*/enc/euc_jp.so
endef
define Package/ruby-enc-extra/files
/usr/lib/ruby/$(PKG_LIBVER)/*/enc
endef
define Package/ruby-enc-extra/files-excluded
$(call Package/ruby-enc/files)
endef
define Package/ruby-erb/files
/usr/bin/erb
/usr/lib/ruby/$(PKG_LIBVER)/erb.rb
endef
define Package/ruby-fiddle/files
/usr/lib/ruby/$(PKG_LIBVER)/fiddle.rb
/usr/lib/ruby/$(PKG_LIBVER)/fiddle/
/usr/lib/ruby/$(PKG_LIBVER)/*/fiddle.so
endef
define Package/ruby-filelib/files
/usr/lib/ruby/$(PKG_LIBVER)/tmpdir.rb
/usr/lib/ruby/$(PKG_LIBVER)/tempfile.rb
/usr/lib/ruby/$(PKG_LIBVER)/pathname.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/pathname.so
/usr/lib/ruby/$(PKG_LIBVER)/find.rb
/usr/lib/ruby/$(PKG_LIBVER)/fileutils.rb
endef
define Package/ruby-gdbm/files
/usr/lib/ruby/$(PKG_LIBVER)/*/gdbm.so
endef
define Package/ruby-gems/files
/usr/lib/ruby/$(PKG_LIBVER)/ubygems.rb
/usr/lib/ruby/$(PKG_LIBVER)/rubygems.rb
/usr/lib/ruby/$(PKG_LIBVER)/rubygems
endef
define Package/ruby-gems/files-excluded
/usr/lib/ruby/$(PKG_LIBVER)/rubygems/test_case.rb
/usr/lib/ruby/$(PKG_LIBVER)/rubygems/package/tar_test_case.rb
/usr/lib/ruby/$(PKG_LIBVER)/rubygems/installer_test_case.rb
endef
define Package/ruby-gems/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gem $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
$(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
$(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/doc
$(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/cache
$(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/extensions
$(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/build_info
$(call RubyBuildPackage/install,gems,$(1))
endef
define Package/ruby-io-console/files
/usr/lib/ruby/$(PKG_LIBVER)/*/io/console.so
/usr/lib/ruby/$(PKG_LIBVER)/io/console/
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/io-console-*.gemspec
endef
define Package/ruby-irb/files
/usr/lib/ruby/$(PKG_LIBVER)/irb
/usr/lib/ruby/$(PKG_LIBVER)/irb.rb
endef
define Package/ruby-irb/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/irb $(1)/usr/bin/
$(call RubyBuildPackage/install,irb,$(1))
endef
define Package/ruby-json/files
/usr/lib/ruby/$(PKG_LIBVER)/json.rb
/usr/lib/ruby/$(PKG_LIBVER)/json
/usr/lib/ruby/$(PKG_LIBVER)/*/json
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/json-*.gemspec
endef
define Package/ruby-json/files-excluded
$(call Package/ruby-psych/files)
endef
define Package/ruby-logger/files
/usr/lib/ruby/$(PKG_LIBVER)/logger.rb
/usr/lib/ruby/$(PKG_LIBVER)/syslog/logger.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/syslog.so
endef
define Package/ruby-math/files
/usr/lib/ruby/$(PKG_LIBVER)/prime.rb
/usr/lib/ruby/$(PKG_LIBVER)/mathn.rb
/usr/lib/ruby/$(PKG_LIBVER)/cmath.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/mathn
/usr/lib/ruby/$(PKG_LIBVER)/matrix.rb
/usr/lib/ruby/$(PKG_LIBVER)/matrix
endef
define Package/ruby-minitest/files
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/minitest-*.gemspec
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*
endef
define Package/ruby-minitest/files-excluded
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/test
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/*.rdoc
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/*.txt
endef
define Package/ruby-misc/files
/usr/lib/ruby/$(PKG_LIBVER)/English.rb
/usr/lib/ruby/$(PKG_LIBVER)/abbrev.rb
/usr/lib/ruby/$(PKG_LIBVER)/base64.rb
/usr/lib/ruby/$(PKG_LIBVER)/delegate.rb
/usr/lib/ruby/$(PKG_LIBVER)/e2mmap.rb
/usr/lib/ruby/$(PKG_LIBVER)/expect.rb
/usr/lib/ruby/$(PKG_LIBVER)/getoptlong.rb
/usr/lib/ruby/$(PKG_LIBVER)/open3.rb
/usr/lib/ruby/$(PKG_LIBVER)/ostruct.rb
/usr/lib/ruby/$(PKG_LIBVER)/scanf.rb
/usr/lib/ruby/$(PKG_LIBVER)/securerandom.rb
/usr/lib/ruby/$(PKG_LIBVER)/set.rb
/usr/lib/ruby/$(PKG_LIBVER)/shellwords.rb
/usr/lib/ruby/$(PKG_LIBVER)/tsort.rb
/usr/lib/ruby/$(PKG_LIBVER)/weakref.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/continuation.so
/usr/lib/ruby/$(PKG_LIBVER)/*/coverage.so
/usr/lib/ruby/$(PKG_LIBVER)/*/etc.so
/usr/lib/ruby/$(PKG_LIBVER)/*/fcntl.so
/usr/lib/ruby/$(PKG_LIBVER)/*/fiber.so
/usr/lib/ruby/$(PKG_LIBVER)/*/pty.so
/usr/lib/ruby/$(PKG_LIBVER)/*/stringio.so
/usr/lib/ruby/$(PKG_LIBVER)/*/strscan.so
endef
define Package/ruby-mkmf/files
/usr/lib/ruby/$(PKG_LIBVER)/mkmf.rb
/usr/lib/ruby/$(PKG_LIBVER)/un.rb
endef
define Package/ruby-multithread/files
/usr/lib/ruby/$(PKG_LIBVER)/monitor.rb
/usr/lib/ruby/$(PKG_LIBVER)/timeout.rb
/usr/lib/ruby/$(PKG_LIBVER)/thwait.rb
/usr/lib/ruby/$(PKG_LIBVER)/mutex_m.rb
/usr/lib/ruby/$(PKG_LIBVER)/sync.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/io/wait.so
/usr/lib/ruby/$(PKG_LIBVER)/*/io/nonblock.so
endef
define Package/ruby-net/files
/usr/lib/ruby/$(PKG_LIBVER)/open-uri.rb
/usr/lib/ruby/$(PKG_LIBVER)/net/*
endef
define Package/ruby-net-telnet/files
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/net-telnet-*.gemspec
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/
endef
define Package/ruby-net-telnet/files-excluded
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/*.md
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/*.txt
endef
define Package/ruby-nkf/files
/usr/lib/ruby/$(PKG_LIBVER)/kconv.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/nkf.so
endef
define Package/ruby-openssl/files
/usr/lib/ruby/$(PKG_LIBVER)/openssl
/usr/lib/ruby/$(PKG_LIBVER)/openssl.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/openssl.so
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/openssl-*.gemspec
endef
define Package/ruby-optparse/files
/usr/lib/ruby/$(PKG_LIBVER)/optparse.rb
/usr/lib/ruby/$(PKG_LIBVER)/optionparser.rb
/usr/lib/ruby/$(PKG_LIBVER)/optparse
endef
define Package/ruby-patterns/files
/usr/lib/ruby/$(PKG_LIBVER)/observer.rb
/usr/lib/ruby/$(PKG_LIBVER)/singleton.rb
/usr/lib/ruby/$(PKG_LIBVER)/forwardable.rb
/usr/lib/ruby/$(PKG_LIBVER)/forwardable
endef
define Package/ruby-powerassert/files
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/power_assert-*.gemspec
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/power_assert-*
endef
define Package/ruby-powerassert/files-excluded
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/power_assert-*/test
endef
define Package/ruby-prettyprint/files
/usr/lib/ruby/$(PKG_LIBVER)/pp.rb
/usr/lib/ruby/$(PKG_LIBVER)/prettyprint.rb
endef
define Package/ruby-pstore/files
/usr/lib/ruby/$(PKG_LIBVER)/pstore.rb
endef
define Package/ruby-psych/files
/usr/lib/ruby/$(PKG_LIBVER)/psych
/usr/lib/ruby/$(PKG_LIBVER)/psych.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/psych.so
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/psych-*.gemspec
endef
define Package/ruby-racc/files
/usr/lib/ruby/$(PKG_LIBVER)/racc
/usr/lib/ruby/$(PKG_LIBVER)/*/racc/*.so
endef
define Package/ruby-rake/files
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/rake-*.gemspec
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/
endef
define Package/ruby-rake/files-excluded
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/doc
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/*.rdoc
endef
define Package/ruby-rake/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rake $(1)/usr/bin/;
$(call RubyBuildPackage/install,rake,$(1))
endef
define Package/ruby-rbconfig/files
/usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig.rb
/usr/lib/ruby/$(PKG_LIBVER)/rbconfig/*
/usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig/*.so
endef
define Package/ruby-rdoc/files
/usr/lib/ruby/$(PKG_LIBVER)/rdoc.rb
/usr/lib/ruby/$(PKG_LIBVER)/rdoc
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rdoc-*
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/rdoc-*.gemspec
endef
define Package/ruby-rdoc/files-excluded
/usr/lib/ruby/$(PKG_LIBVER)/rdoc/test_case.rb
/usr/lib/ruby/$(PKG_LIBVER)/rdoc/markup/formatter_test_case.rb
/usr/lib/ruby/$(PKG_LIBVER)/rdoc/markup/text_formatter_test_case.rb
endef
define Package/ruby-rdoc/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rdoc $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ri $(1)/usr/bin/
$(call RubyBuildPackage/install,rdoc,$(1))
endef
define Package/ruby-readline/files
/usr/lib/ruby/$(PKG_LIBVER)/*/readline.so
endef
define Package/ruby-rexml/files
/usr/lib/ruby/$(PKG_LIBVER)/rexml
endef
define Package/ruby-rinda/files
/usr/lib/ruby/$(PKG_LIBVER)/rinda
endef
define Package/ruby-ripper/files
/usr/lib/ruby/$(PKG_LIBVER)/ripper.rb
/usr/lib/ruby/$(PKG_LIBVER)/ripper
/usr/lib/ruby/$(PKG_LIBVER)/*/ripper.so
endef
define Package/ruby-rss/files
/usr/lib/ruby/$(PKG_LIBVER)/rss
/usr/lib/ruby/$(PKG_LIBVER)/rss.rb
endef
define Package/ruby-sdbm/files
/usr/lib/ruby/$(PKG_LIBVER)/*/sdbm.so
endef
define Package/ruby-shell/files
/usr/lib/ruby/$(PKG_LIBVER)/shell.rb
/usr/lib/ruby/$(PKG_LIBVER)/shell
endef
define Package/ruby-socket/files
/usr/lib/ruby/$(PKG_LIBVER)/ipaddr.rb
/usr/lib/ruby/$(PKG_LIBVER)/resolv-replace.rb
/usr/lib/ruby/$(PKG_LIBVER)/resolv.rb
/usr/lib/ruby/$(PKG_LIBVER)/socket.rb
/usr/lib/ruby/$(PKG_LIBVER)/*/socket.so
endef
define Package/ruby-testunit/files
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/test-unit-*.gemspec
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*
endef
define Package/ruby-testunit/files-excluded
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/doc
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/test
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/sample
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/*.md
endef
define Package/ruby-unicodenormalize/files
/usr/lib/ruby/$(PKG_LIBVER)/unicode_normalize.rb
/usr/lib/ruby/$(PKG_LIBVER)/unicode_normalize
endef
define Package/ruby-uri/files
/usr/lib/ruby/$(PKG_LIBVER)/uri.rb
/usr/lib/ruby/$(PKG_LIBVER)/uri
endef
define Package/ruby-webrick/files
/usr/lib/ruby/$(PKG_LIBVER)/webrick
/usr/lib/ruby/$(PKG_LIBVER)/webrick.rb
endef
define Package/ruby-xmlrpc/files
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/xmlrpc-*
/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/xmlrpc-*.gemspec
endef
define Package/ruby-xmlrpc/files-excluded
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/xmlrpc-0.2.1/*.md
/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/xmlrpc-0.2.1/*.txt
endef
define Package/ruby-yaml/files
/usr/lib/ruby/$(PKG_LIBVER)/yaml
/usr/lib/ruby/$(PKG_LIBVER)/yaml.rb
endef
define Package/ruby-zlib/files
/usr/lib/ruby/$(PKG_LIBVER)/*/zlib.so
endef
RUBY_FILES = $(strip $(call Package/ruby-$(1)/files))
RUBY_FILES_EXCLUDED = $(strip $(call Package/ruby-$(1)/files-excluded))
# 1: short name
# 2: install dir
define RubyBuildPackage/install
( \
cd $(PKG_INSTALL_DIR) && \
$(TAR) -cf - \
$(if $(RUBY_FILES_EXCLUDED),--exclude-from <(ls -1d $(patsubst /%,%,$(RUBY_FILES_EXCLUDED)))) \
--files-from <(ls -1d $(patsubst /%,%,$(RUBY_FILES))) \
) | ( \
[ -n "$(2)" ] && cd $(2) && $(TAR) -xf - \
)
endef
# 1: short name
# 2: description
# 3: dependencies on other packages
define RubyBuildPackage
RUBY_STDLIB += $(1)
# Package definition
ifndef Package/ruby-$(1)
define Package/ruby-$(1)
$(call Package/ruby/Default)
TITLE:=Ruby $(2)
DEPENDS:=ruby $(3)
endef
endif
ifndef Package/ruby-$(1)/description
define Package/ruby-$(1)/description
This package contains the ruby $(2).
endef
endif
# Description
ifndef Package/ruby-$(1)/install
ifndef Package/ruby-$(1)/files
$$(error It must exists either a Package/ruby-$(1)/install or Package/ruby-$(1)/files)
endif
define Package/ruby-$(1)/description +=
Provides:
$(patsubst /%,
- /%,$(RUBY_FILES))
endef
ifneq ($(RUBY_FILES_EXCLUDED),)
define Package/ruby-$(1)/description +=
Except:
$(patsubst /%,
- /%,$(RUBY_FILES_EXCLUDED))
endef
endif
Package/ruby-$(1)/install=$(call RubyBuildPackage/install,$(1),$$(1))
endif
$$(eval $$(call BuildPackage,ruby-$(1)))
endef
$(eval $(call BuildPackage,libruby))
$(eval $(call BuildPackage,ruby))
$(eval $(call RubyBuildPackage,bigdecimal,Arbitrary-precision decimal floating-point library,))
$(eval $(call RubyBuildPackage,cgi,CGI support toolkit,+ruby-filelib +ruby-pstore))
$(eval $(call RubyBuildPackage,csv,CSV library,+ruby-patterns +ruby-datetime +ruby-enc +ruby-misc))
$(eval $(call RubyBuildPackage,datetime,date library))
$(eval $(call RubyBuildPackage,dbm,support for dbm,+libdb47))
$(eval $(call RubyBuildPackage,debuglib,debug library,+ruby-prettyprint))
$(eval $(call RubyBuildPackage,did-you-mean,did you mean? experience,+ruby-misc))
$(eval $(call RubyBuildPackage,digest,Digest Library,+RUBY_DIGEST_USE_OPENSSL:libopenssl))
$(eval $(call RubyBuildPackage,drb,distributed object system,+ruby-filelib +ruby-patterns +ruby-socket))
$(eval $(call RubyBuildPackage,enc,character re-coding library charset (small subset),))
$(eval $(call RubyBuildPackage,enc-extra,character re-coding library charset (extra subset),+ruby-enc))
$(eval $(call RubyBuildPackage,erb,(embedded interpreter),+ruby-cgi))
$(eval $(call RubyBuildPackage,fiddle,libffi wrapper,+libffi))
$(eval $(call RubyBuildPackage,filelib,file utils library,+ruby-enc +ruby-misc))
$(eval $(call RubyBuildPackage,gdbm,support for gdbm,+libgdbm))
$(eval $(call RubyBuildPackage,gems,gems packet management,+ruby-net +ruby-rdoc))
$(eval $(call RubyBuildPackage,io-console,Console interface,))
$(eval $(call RubyBuildPackage,irb,(interactive shell),+ruby-debuglib +ruby-filelib +ruby-math))
$(eval $(call RubyBuildPackage,json,support for JSON,+ruby-datetime +ruby-misc))
$(eval $(call RubyBuildPackage,logger,logger and syslog library,+ruby-multithread))
$(eval $(call RubyBuildPackage,math,math library,+ruby-patterns +ruby-misc))
$(eval $(call RubyBuildPackage,minitest,Gem minitest,+ruby-gems))
$(eval $(call RubyBuildPackage,misc,standard libraries subset (miscellaneous files),))
$(eval $(call RubyBuildPackage,mkmf,makefile library,+ruby-filelib +ruby-optparse +ruby-rbconfig))
$(eval $(call RubyBuildPackage,multithread,multithread library,+ruby-misc))
$(eval $(call RubyBuildPackage,net,Network Protocols Library,+ruby-datetime +ruby-digest +ruby-filelib +ruby-uri))
$(eval $(call RubyBuildPackage,net-telnet,telnet client,+ruby-net))
$(eval $(call RubyBuildPackage,nkf,Network Kanji Filter,+ruby-enc))
$(eval $(call RubyBuildPackage,openssl,support for openssl,+ruby-enc +ruby-multithread +libopenssl))
$(eval $(call RubyBuildPackage,optparse,command-line option analysis,+ruby-misc))
$(eval $(call RubyBuildPackage,patterns,design patterns implementation,))
$(eval $(call RubyBuildPackage,powerassert,Gem power_assert,+ruby-ripper +ruby-debuglib))
$(eval $(call RubyBuildPackage,prettyprint,PrettyPrint library,+ruby-misc))
$(eval $(call RubyBuildPackage,pstore,file based persistence,+ruby-digest +ruby-enc))
$(eval $(call RubyBuildPackage,psych,YAML parser and emitter,+ruby-bigdecimal +ruby-datetime +ruby-misc +ruby-enc +libyaml))
$(eval $(call RubyBuildPackage,racc,LALR parser generator,))
$(eval $(call RubyBuildPackage,rake,Rake (make replacement),+ruby-filelib +ruby-optparse +ruby-patterns +ruby-rbconfig +ruby-multithread))
$(eval $(call RubyBuildPackage,rbconfig,RbConfig,))
$(eval $(call RubyBuildPackage,rdoc,documentation generator,+ruby-erb +ruby-irb +ruby-json +ruby-racc +ruby-rake +ruby-yaml +ruby-zlib))
$(eval $(call RubyBuildPackage,readline,support for readline,+libncurses +libreadline))
$(eval $(call RubyBuildPackage,rexml,XML toolkit,+ruby-patterns +ruby-enc +ruby-misc))
$(eval $(call RubyBuildPackage,rinda,Linda paradigm implementation,+ruby-drb))
$(eval $(call RubyBuildPackage,ripper,script parser,))
$(eval $(call RubyBuildPackage,rss,RSS toolkit,+ruby-net +ruby-nkf +ruby-rexml))
$(eval $(call RubyBuildPackage,sdbm,simple file-based key-value dbm implementation,))
$(eval $(call RubyBuildPackage,shell,idiomatic Ruby interface,+ruby-patterns +ruby-multithread))
$(eval $(call RubyBuildPackage,socket,socket support,+ruby-multithread))
$(eval $(call RubyBuildPackage,testunit,Gem test-unit,+ruby-csv +ruby-erb +ruby-optparse +ruby-powerassert +ruby-rexml +ruby-yaml))
$(eval $(call RubyBuildPackage,unicodenormalize,String additions for Unicode normalization,+ruby-enc +ruby-enc-extra))
$(eval $(call RubyBuildPackage,uri,library to handle URI,+ruby-socket +ruby-enc))
$(eval $(call RubyBuildPackage,webrick,Web server toolkit,+ruby-erb +ruby-net +ruby-patterns +ruby-rbconfig))
$(eval $(call RubyBuildPackage,xmlrpc,XML-RPC toolkit,+ruby-rexml +ruby-webrick))
$(eval $(call RubyBuildPackage,yaml,YAML toolkit,+ruby-dbm +ruby-pstore +ruby-psych))
$(eval $(call RubyBuildPackage,zlib,support for zlib,+zlib))
$(eval $(call BuildPackage,ruby-stdlib))
$(eval $(call HostBuild))