Merge pull request #403 from jslachta/master
authorThomas Heil <heil@terminal-consulting.de>
Tue, 7 Oct 2014 18:55:41 +0000 (20:55 +0200)
committerThomas Heil <heil@terminal-consulting.de>
Tue, 7 Oct 2014 18:55:41 +0000 (20:55 +0200)
unixodbc: change PKG_SOURCE_URL to sourceforge

lang/ruby/Makefile
lang/ruby/files/ruby [new file with mode: 0644]
lang/ruby/patches/001-rdoc-remove_gems_dep.patch [new file with mode: 0644]
lang/ruby/patches/002-minitest-remove_gems_dep.patch [new file with mode: 0644]
lang/ruby/patches/003-digest_rmd160_wrong_name_fix.patch [new file with mode: 0644]
lang/ruby/patches/004-digest_dont-link-ssl-if-not-needed.patch [new file with mode: 0644]
lang/ruby/ruby_find_pkgsdeps [new file with mode: 0644]
lang/ruby/ruby_missingfiles [new file with mode: 0644]
mail/dovecot/Makefile

index be2a669edca245d08d640c186e14ebcd9b821912..8b81daa99e7d1f892f724cdf706494e2f261c86d 100644 (file)
@@ -3,26 +3,21 @@
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
-#
-
 #
 # To Do:
-#  - split up encodings
-#  - allow selection of either native or pure version of a library where supported
-#  +-> some native libraries are probably only supported if ruby-dl is enabled
-# anything else?
-
+#  - dirs not removed when uninstalling!
+#
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ruby
-PKG_VERSION:=2.1.2
-PKG_RELEASE:=1
+PKG_VERSION:=2.1.3
+PKG_RELEASE:=2
 
 PKG_LIBVER:=2.1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://cache.ruby-lang.org/pub/ruby/$(PKG_LIBVER)/
-PKG_MD5SUM:=ed9b8565bdeccb401d628ec8d54a0774
+PKG_MD5SUM:=02b7da3bb06037c777ca52e1194efccb
 PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
 PKG_LICENSE:=BSD-2-Clause
 PKG_LICENSE_FILE:=COPYING
@@ -45,10 +40,11 @@ define Package/ruby/Default
 endef
 
 define Package/ruby/Default/description
- Ruby is the interpreted scripting language for quick and  easy
+ 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
@@ -70,37 +66,259 @@ $(call Package/ruby/Default)
   DEPENDS+= +libpthread +librt +libgmp
 endef
 
-# Ongoing work to break up ruby's standard library into coherent pieces
-# with minimal dependencies between them
+define Package/ruby-stdlib
+$(call Package/ruby/Default)
+  TITLE:=Ruby standard libraries (metadata for all stdlib subsets)
+  DEPENDS:=ruby +ruby-misc +ruby-bigdecimal +ruby-cgi +ruby-csv +ruby-datetime +ruby-dbm +ruby-debuglib\
+                       +ruby-digest +ruby-dl +ruby-drb +ruby-enc +ruby-enc-extra +ruby-erb +ruby-gdbm +ruby-gems \
+                       +ruby-json +ruby-io-console +ruby-irb +ruby-fiddle +ruby-filelib +ruby-logger +ruby-math \
+                       +ruby-minitest +ruby-mkmf +ruby-multithread +ruby-nkf +ruby-net +ruby-openssl +ruby-optparse \
+                       +ruby-patterns +ruby-prettyprint +ruby-pstore +ruby-psych +ruby-racc +ruby-rake +ruby-rbconfig \
+                       +ruby-rdoc +ruby-readline +ruby-rexml +ruby-rinda +ruby-ripper +ruby-rss +ruby-sdbm +ruby-shell \
+                       +ruby-socket +ruby-testunit +ruby-uri +ruby-webrick +ruby-xmlrpc +ruby-yaml +ruby-zlib
+endef
 
-define Package/ruby-core
+define Package/ruby-stdlib/description
+ This metapackage currently install all ruby-* packages,
+ providing a complete Ruby Standard Library.
+
+endef
+
+define Package/ruby-bigdecimal
 $(call Package/ruby/Default)
-  TITLE:=Ruby standard libraries
-  DEPENDS:=ruby +libdb47 +libffi
+  TITLE:=Arbitrary-precision decimal floating-point library for Ruby
+  DEPENDS:=ruby
+endef
+
+define Package/ruby-bigdecimal/description
+ Provides bigdecimal* files
 endef
 
 define Package/ruby-cgi
 $(call Package/ruby/Default)
   TITLE:=Ruby CGI support toolkit
+  DEPENDS:=ruby +ruby-filelib +ruby-pstore
+endef
+
+define Package/ruby-bigdecimal/description
+ Provides bigdecimal* files
+
+endef
+
+define Package/ruby-csv
+$(call Package/ruby/Default)
+  TITLE+=CSV library
+  DEPENDS:=ruby +ruby-patterns +ruby-datetime +ruby-enc
+endef
+
+define Package/ruby-csv/description
+ Provides csv.rb file
+
+endef
+
+define Package/ruby-datetime
+$(call Package/ruby/Default)
+  TITLE+= date library
   DEPENDS:=ruby
 endef
 
+define Package/ruby-datetime/description
+ Provides date.rb and time.rb
+
+endef
+
+define Package/ruby-dbm
+$(call Package/ruby/Default)
+  TITLE:=Ruby support for dbm
+  DEPENDS:=ruby +libdb47
+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-debuglib
+$(call Package/ruby/Default)
+  TITLE+= debug library
+  DEPENDS:=ruby +ruby-multithread +ruby-prettyprint
+endef
+
+define Package/ruby-debuglib/description
+ Provides files for debugging:
+ - benchmark.rb
+ - debug.rb
+ - objspace.so
+ - profile.rb
+ - profiler.rb
+ - tracer.rb
+
+endef
+
+define Package/ruby-digest
+$(call Package/ruby/Default)
+  TITLE:=Ruby Digest Library
+  DEPENDS:=ruby +RUBY_DIGEST_USE_OPENSSL:libopenssl
+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-dl
 $(call Package/ruby/Default)
-  TITLE+= (dynamic linker support) (adds 5MB+)
-  DEPENDS:=ruby
+  TITLE+= (dynamic linker support)
+  DEPENDS:=ruby +ruby-fiddle +ruby-multithread
+endef
+
+define Package/ruby-dl/description
+ Provides dl* files. This is deprecated, use fiddle.
+
+endef
+
+define Package/ruby-drb
+$(call Package/ruby/Default)
+  TITLE:=Ruby distributed object system
+  DEPENDS:=ruby +ruby-filelib +ruby-patterns +ruby-socket
+endef
+
+define Package/ruby-drb/description
+ Provides drb* files
+
 endef
 
 define Package/ruby-enc
 $(call Package/ruby/Default)
-  TITLE+= (character re-coding library) (adds 2MB+)
+  TITLE:=Ruby character re-coding library charset (small subset)
   DEPENDS:=ruby
 endef
 
+define Package/ruby-enc/description
+ Provides ruby encoding library for encodings used directly by
+ libraries in Ruby Standard Library:
+ - enc/encdb.so
+ - enc/euc_jp.so
+ - enc/iso_8859_1.so
+ - enc/utf_16be.so
+ - enc/utf_16le.so
+ - enc/utf_32be.so
+ - enc/utf_32le.so
+ FYI: ASCII-8BIT, UTF-7, UTF-8 and US-ASCII are already in Core.
+
+endef
+
+define Package/ruby-enc-extra
+$(call Package/ruby/Default)
+  TITLE:=Ruby character re-coding library charset (extra subset)
+  DEPENDS:=ruby +ruby-enc
+endef
+
+define Package/ruby-enc-extra/description
+ Provides extra encodings not provided by ruby-enc:
+ - enc/big5.so
+ - enc/cp949.so
+ - enc/emacs_mule.so
+ - enc/euc_kr.so
+ - enc/euc_tw.so
+ - enc/gb18030.so
+ - enc/gb2312.so
+ - enc/gbk.so
+ - enc/iso_8859_10.so
+ - enc/iso_8859_11.so
+ - enc/iso_8859_13.so
+ - enc/iso_8859_14.so
+ - enc/iso_8859_15.so
+ - enc/iso_8859_16.so
+ - enc/iso_8859_2.so
+ - enc/iso_8859_3.so
+ - enc/iso_8859_4.so
+ - enc/iso_8859_5.so
+ - enc/iso_8859_6.so
+ - enc/iso_8859_7.so
+ - enc/iso_8859_8.so
+ - enc/iso_8859_9.so
+ - enc/koi8_r.so
+ - enc/koi8_u.so
+ - enc/shift_jis.so
+ - enc/trans/big5.so
+ - enc/trans/chinese.so
+ - enc/trans/emoji.so
+ - enc/trans/emoji_iso2022_kddi.so
+ - enc/trans/emoji_sjis_docomo.so
+ - enc/trans/emoji_sjis_kddi.so
+ - enc/trans/emoji_sjis_softbank.so
+ - enc/trans/escape.so
+ - enc/trans/gb18030.so
+ - enc/trans/gbk.so
+ - enc/trans/iso2022.so
+ - enc/trans/japanese.so
+ - enc/trans/japanese_euc.so
+ - enc/trans/japanese_sjis.so
+ - enc/trans/korean.so
+ - enc/trans/single_byte.so
+ - enc/trans/transdb.so
+ - enc/trans/utf8_mac.so
+ - enc/trans/utf_16_32.so
+ - enc/windows_1251.so
+ - enc/windows_31j.so
+
+endef
+
 define Package/ruby-erb
 $(call Package/ruby/Default)
   TITLE+= (embedded interpreter)
-  DEPENDS:=ruby
+  DEPENDS:=ruby +ruby-cgi
+endef
+
+define Package/ruby-erb/description
+ Provides erb* files
+
+endef
+
+define Package/ruby-fiddle
+$(call Package/ruby/Default)
+  TITLE:=A libffi wrapper for Ruby
+  DEPENDS:=ruby +libffi
+endef
+
+define Package/ruby-fiddle/description
+ Provides fiddle* files
+
+endef
+
+define Package/ruby-filelib
+$(call Package/ruby/Default)
+  TITLE+= File utils library
+  DEPENDS:=ruby +ruby-multithread +ruby-enc
+endef
+
+define Package/ruby-filelib/description
+ Provides filesystem interaction files, including
+ path and temp:
+ - fileutils.rb
+ - find.rb
+ - pathname.rb
+ - pathname.so
+ - tempfile.rb
+ - tmpdir.rb
+
 endef
 
 define Package/ruby-gdbm
@@ -109,94 +327,450 @@ $(call Package/ruby/Default)
   DEPENDS:=ruby +libgdbm
 endef
 
+define Package/ruby-gdbm/description
+ Provides gdbm* files
+
+endef
+
 define Package/ruby-gems
 $(call Package/ruby/Default)
   TITLE:=Ruby gems packet management
-  DEPENDS:=ruby +ruby-yaml +ruby-zlib +ruby-openssl +ruby-webrick +ruby-erb
+  DEPENDS:=ruby +ruby-net +ruby-rdoc +ruby-zlib
+endef
+
+define Package/ruby-gems/description
+ Provides rubygems for gems usage, download and installation
+
+endef
+
+define Package/ruby-io-console
+$(call Package/ruby/Default)
+  TITLE+= Console interface
+  DEPENDS:=ruby
+endef
+
+define Package/ruby-io-console/description
+ Provides io-console* files
+
 endef
 
 define Package/ruby-irb
 $(call Package/ruby/Default)
   TITLE+= (interactive shell)
-  DEPENDS:=ruby +ruby-core
+  DEPENDS:=ruby +ruby-debuglib +ruby-filelib +ruby-math
+endef
+
+define Package/ruby-irb/description
+ Provides irb* files
+
 endef
 
 define Package/ruby-json
 $(call Package/ruby/Default)
   TITLE:=Ruby support for JSON
+  DEPENDS:=ruby +ruby-datetime +ruby-misc
+endef
+
+define Package/ruby-json/description
+ Provides json* files
+
+endef
+
+define Package/ruby-logger
+$(call Package/ruby/Default)
+  TITLE+= logger and syslog library
+  DEPENDS:=ruby +ruby-multithread
+endef
+
+define Package/ruby-logger/description
+ Provides log library, including syslog:
+ - logger.rb
+ - syslog.so
+ - syslog/logger.rb
+
+endef
+
+define Package/ruby-math
+$(call Package/ruby/Default)
+  TITLE+= math library
+  DEPENDS:=ruby +ruby-patterns
+endef
+
+define Package/ruby-math/description
+ Provides math related files:
+ - cmath.rb
+ - complex.rb
+ - mathn.rb
+ - mathn/complex.so
+ - mathn/rational.so
+ - matrix.rb
+ - matrix/eigenvalue_decomposition.rb
+ - matrix/lup_decomposition.rb
+ - prime.rb
+ - rational.rb
+
+endef
+
+define Package/ruby-minitest
+$(call Package/ruby/Default)
+  TITLE+= minitest bundled with Ruby
+  DEPENDS:=ruby +ruby-filelib +ruby-optparse +ruby-prettyprint +ruby-rbconfig
+endef
+
+define Package/ruby-minitest/description
+ Provides minitest* files
+
+endef
+
+define Package/ruby-misc
+$(call Package/ruby/Default)
+  TITLE:=Ruby standard libraries subset (miscelaneous files)
   DEPENDS:=ruby
 endef
 
-define Package/ruby-ncurses
+define Package/ruby-misc/description
+ This package contains miscellaneous files from stdlib
+ not splitted in other ruby packages like stringio:
+ - English.rb
+ - abbrev.rb
+ - base64.rb
+ - continuation.so
+ - coverage.so
+ - delegate.rb
+ - e2mmap.rb
+ - etc.so
+ - expect.rb
+ - fcntl.so
+ - fiber.so
+ - getoptlong.rb
+ - open3.rb
+ - ostruct.rb
+ - pty.so
+ - scanf.rb
+ - securerandom.rb
+ - set.rb
+ - shellwords.rb
+ - stringio.so
+ - strscan.so
+ - tsort.rb
+ - weakref.rb
+
+endef
+
+define Package/ruby-mkmf
 $(call Package/ruby/Default)
-  TITLE:=Ruby support for ncurses
-  DEPENDS:=ruby +libncurses +libncursesw
+  TITLE+= makefile library
+  DEPENDS:=ruby +ruby-filelib +ruby-optparse +ruby-rbconfig
+endef
+
+define Package/ruby-mkmf/description
+ Provides mkmf* files
+
+endef
+
+define Package/ruby-multithread
+$(call Package/ruby/Default)
+  TITLE+= multithread library
+  DEPENDS:=ruby +ruby-misc
+endef
+
+define Package/ruby-multithread/description
+ Provides files for multithread usage:
+ - io/nonblock.so
+ - io/wait.so
+ - thread.so (FYI, Thread is a core class)
+ - monitor.rb
+ - mutex_m.rb
+ - sync.rb
+ - thwait.rb
+ - timeout.rb
+
+endef
+
+define Package/ruby-net
+$(call Package/ruby/Default)
+  TITLE:=Ruby Network Protocols Library
+  DEPENDS:=ruby +ruby-datetime +ruby-digest +ruby-filelib +ruby-uri
+endef
+
+define Package/ruby-net/description
+ Provides net* files
+
 endef
 
 define Package/ruby-nkf
 $(call Package/ruby/Default)
   TITLE:=Ruby Network Kanji Filter
-  DEPENDS:=ruby
+  DEPENDS:=ruby +ruby-enc
+endef
+
+define Package/ruby-nkf/description
+ Provides nkf* files
+
 endef
 
 define Package/ruby-openssl
 $(call Package/ruby/Default)
   TITLE:=Ruby support for openssl
-  DEPENDS:=ruby +libopenssl
+  DEPENDS:=ruby +ruby-enc +libopenssl +ruby-misc
 endef
 
-define Package/ruby-rdoc
+define Package/ruby-openssl/description
+ Provides openssl* files
+
+endef
+
+define Package/ruby-optparse
 $(call Package/ruby/Default)
-  TITLE+= (documentation generator)
+  TITLE:=Ruby command-line option analysis
+  DEPENDS:=ruby +ruby-misc
+endef
+
+define Package/ruby-optparse/description
+ Provides optparse* files
+
+endef
+
+define Package/ruby-patterns
+$(call Package/ruby/Default)
+  TITLE:=Ruby design patterns implementation
+  DEPENDS:=ruby +ruby-multithread
+endef
+
+define Package/ruby-patterns/description
+ Provides design patterns helpers files:
+ - forwardable.rb
+ - observer.rb
+ - singleton.rb
+
+endef
+
+define Package/ruby-prettyprint
+$(call Package/ruby/Default)
+  TITLE:=Ruby PrettyPrint librart
+  DEPENDS:=ruby +ruby-misc
+endef
+
+define Package/ruby-prettyprint/description
+ Provides Pretty Print library:
+ - pp.rb
+ - prettyprint.rb
+
+endef
+
+define Package/ruby-pstore
+$(call Package/ruby/Default)
+  TITLE+=file based persistence
+  DEPENDS:=ruby +ruby-digest +ruby-enc
+endef
+
+define Package/ruby-pstore/description
+ Provides pstore.rb file
+
+endef
+
+define Package/ruby-psych
+$(call Package/ruby/Default)
+  TITLE+=YAML parser and emitter
+  DEPENDS:=ruby +ruby-bigdecimal +ruby-datetime +ruby-misc +ruby-enc
+endef
+
+define Package/ruby-psych/description
+ Provides psych* files
+
+endef
+
+define Package/ruby-racc
+$(call Package/ruby/Default)
+  TITLE:=LALR parser generator in Ruby
   DEPENDS:=ruby
 endef
 
+define Package/ruby-racc/description
+ Provides racc* files
+
+endef
+
 define Package/ruby-rake
 $(call Package/ruby/Default)
   TITLE+=Ruby Rake (make replacement)
+  DEPENDS:=ruby +ruby-datetime +ruby-filelib +ruby-optparse +ruby-patterns +ruby-rbconfig
+endef
+
+define Package/ruby-rake/description
+ Provides rake* files
+
+endef
+
+define Package/ruby-rbconfig
+$(call Package/ruby/Default)
+  TITLE+=Ruby RbConfig
   DEPENDS:=ruby
 endef
 
+define Package/ruby-rbconfig/description
+ Provides rbconfig file
+
+endef
+
+define Package/ruby-rdoc
+$(call Package/ruby/Default)
+  TITLE+= (documentation generator)
+  DEPENDS:=ruby +ruby-erb +ruby-irb +ruby-json +ruby-racc +ruby-rake +ruby-yaml
+endef
+
+define Package/ruby-rdoc/description
+ Provides rdoc* and ri files
+
+endef
+
 define Package/ruby-readline
 $(call Package/ruby/Default)
   TITLE:=Ruby support for readline
   DEPENDS:=ruby +libncurses +libreadline
 endef
 
+define Package/ruby-readline/description
+ Provides readline* files
+
+endef
+
 define Package/ruby-rexml
 $(call Package/ruby/Default)
   TITLE:=Ruby XML toolkit
+  DEPENDS:=ruby +ruby-patterns +ruby-enc
+endef
+
+define Package/ruby-rexml/description
+ Provides rexml* files
+
+endef
+
+define Package/ruby-rinda
+$(call Package/ruby/Default)
+  TITLE:=Ruby Linda paradigm implementation
+  DEPENDS:=ruby +ruby-drb
+endef
+
+define Package/ruby-rinda/description
+ Provides rinda* files
+
+endef
+
+define Package/ruby-ripper
+$(call Package/ruby/Default)
+  TITLE:=Ruby script parser
   DEPENDS:=ruby
 endef
 
+define Package/ruby-ripper/description
+ Provides ripper* files
+
+endef
+
 define Package/ruby-rss
 $(call Package/ruby/Default)
   TITLE:=Ruby RSS toolkit
-  DEPENDS:=ruby
+  DEPENDS:=ruby +ruby-net +ruby-nkf +ruby-rexml
 endef
 
-define Package/ruby-unit
+define Package/ruby-rss/description
+ Provides rss* files
+
+endef
+
+define Package/ruby-sdbm
 $(call Package/ruby/Default)
-  TITLE:=Ruby unit testing toolkit
+  TITLE:=Ruby simple file-based key-value dbm implementation
   DEPENDS:=ruby
 endef
 
+define Package/ruby-sdbm/description
+ Provides sdbm* files
+
+endef
+
+define Package/ruby-shell
+$(call Package/ruby/Default)
+  TITLE:=Ruby idiomatic Ruby interface
+  DEPENDS:=ruby +ruby-patterns
+endef
+
+define Package/ruby-shell/description
+ Provides shell* files
+
+endef
+
+define Package/ruby-socket
+$(call Package/ruby/Default)
+  TITLE+= socket support
+  DEPENDS:=ruby +ruby-multithread
+endef
+
+define Package/ruby-socket/description
+ Provides socket-related files:
+ - gserver.rb
+ - ipaddr.rb
+ - resolv-replace.rb
+ - resolv.rb
+ - socket.rb
+ - socket.so
+
+endef
+
+define Package/ruby-testunit
+$(call Package/ruby/Default)
+  TITLE:=Ruby Test Unit toolkit
+  DEPENDS:=ruby +ruby-minitest
+endef
+
+define Package/ruby-testunit/description
+ Provides test/unit* files
+
+endef
+
+define Package/ruby-uri
+$(call Package/ruby/Default)
+  TITLE:=Ruby library to handle URI
+  DEPENDS:=ruby +ruby-socket +ruby-enc
+endef
+
+define Package/ruby-uri/description
+ Provides uri* files
+
+endef
+
 define Package/ruby-webrick
 $(call Package/ruby/Default)
   TITLE:=Ruby Web server toolkit
-  DEPENDS:=ruby
+  DEPENDS:=ruby +ruby-erb +ruby-net +ruby-patterns +ruby-rbconfig
+endef
+
+define Package/ruby-webrick/description
+ Provides webrick* files
+
 endef
 
 define Package/ruby-xmlrpc
 $(call Package/ruby/Default)
   TITLE:=Ruby XML-RPC toolkit
-  DEPENDS:=ruby
+  DEPENDS:=ruby +ruby-rexml +ruby-webrick
+endef
+
+define Package/ruby-xmlrpc/description
+ Provides xmlrpc* files
+
 endef
 
 define Package/ruby-yaml
 $(call Package/ruby/Default)
   TITLE:=Ruby YAML toolkit
-  DEPENDS:=ruby
+  DEPENDS:=ruby +ruby-dbm +ruby-pstore +ruby-psych
+endef
+
+define Package/ruby-yaml/description
+ Provides yaml* files
+
 endef
 
 define Package/ruby-zlib
@@ -205,6 +779,11 @@ $(call Package/ruby/Default)
   DEPENDS:=ruby +zlib
 endef
 
+define Package/ruby-zlib/description
+ Provides zlib* files
+
+endef
+
 HOST_CONFIGURE_ARGS += \
        --disable-install-doc \
        --disable-install-rdoc \
@@ -216,9 +795,20 @@ CONFIGURE_ARGS += \
        --enable-static \
        --disable-rpath \
        --enable-ipv6 \
+       --disable-install-doc \
+       --disable-install-capi \
        --with-ruby-version=minor \
        --with-iconv-dir=$(ICONV_PREFIX) \
 
+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)
 
 MAKE_FLAGS += \
@@ -227,7 +817,13 @@ MAKE_FLAGS += \
 
 define Package/ruby/install
        $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ruby $(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
+       sed -i -e "s%@RUBY_LIBPATH@%/usr/lib/ruby/$(PKG_LIBVER)%" $(1)/usr/bin/ruby
+       sed -i -e "s%@RUBY_BINPATH@%/usr/lib/ruby/ruby$(PKG_LIBVER)-bin%" $(1)/usr/bin/ruby
 endef
 
 define Package/libruby/install
@@ -235,75 +831,16 @@ define Package/libruby/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libruby.so.* $(1)/usr/lib/
 endef
 
-define Package/ruby-core/install
-       $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby $(1)/usr/lib/
-       rm -rf  \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/curses.so \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/gdbm.so \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/kconv.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/nkf.so \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/digest \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/digest.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/digest \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/digest.so \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/openssl \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/openssl.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/openssl.so \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/drb/ssl.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/net/https.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/webrick/ssl.rb \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/dl.so \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/enc \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/readline.so \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/irb/completion.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/irb/ext/save-history.rb \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/zlib.so \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/erb.rb \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/json.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/json \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/json \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/irb.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/irb \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rdoc \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rake.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rake \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rubygems.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rubygems \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/cgi.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/cgi \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rexml \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rss \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/rss.rb \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/test \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/webrick \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/webrick.rb \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/xmlrpc \
-               \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/yaml \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/yaml.rb \
-               $(1)/usr/lib/ruby/$(PKG_LIBVER)/*/syck.so \
-
-       find $(1) -name '*.h' | xargs rm -f
+define Package/ruby-stdlib/install
+       # nothing to do
+endef
+
+define Package/ruby-bigdecimal/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/*/bigdecimal.so \
+               usr/lib/ruby/$(PKG_LIBVER)/bigdecimal/ \
+               usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/bigdecimal-*.gemspec \
+       ) | ( cd $(1); $(TAR) -xf - )
 endef
 
 define Package/ruby-cgi/install
@@ -312,14 +849,78 @@ define Package/ruby-cgi/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/cgi.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
 endef
 
+define Package/ruby-csv/install
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/csv.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-datetime/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/time.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/date.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/date/ \
+               usr/lib/ruby/$(PKG_LIBVER)/*/date_core.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-dbm/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/*/dbm.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-debuglib/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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 \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-digest/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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/* \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
 define Package/ruby-dl/install
        ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/dl.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/dl \
                usr/lib/ruby/$(PKG_LIBVER)/*/dl.so \
+               usr/lib/ruby/$(PKG_LIBVER)/*/dl/ \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-drb/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/drb.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/drb \
        ) | ( cd $(1); $(TAR) -xf - )
 endef
 
 define Package/ruby-enc/install
        ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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_* \
+               usr/lib/ruby/$(PKG_LIBVER)/*/enc/euc_jp.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-enc-extra/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) \
+               --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/encdb.so \
+               --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/iso_8859_1.so \
+               --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/utf_* \
+               --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/euc_jp.so \
+               -cf - \
                usr/lib/ruby/$(PKG_LIBVER)/*/enc \
        ) | ( cd $(1); $(TAR) -xf - )
 endef
@@ -331,6 +932,25 @@ define Package/ruby-erb/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/erb.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
 endef
 
+define Package/ruby-fiddle/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/fiddle.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/fiddle/ \
+               usr/lib/ruby/$(PKG_LIBVER)/*/fiddle.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-filelib/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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 \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
 define Package/ruby-gdbm/install
        ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
                usr/lib/ruby/$(PKG_LIBVER)/*/gdbm.so \
@@ -341,8 +961,23 @@ define Package/ruby-gems/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(CP) $(PKG_INSTALL_DIR)/usr/bin/gem $(1)/usr/bin/
        $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/ubygems.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+       $(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
+endef
+
+define Package/ruby-io-console/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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 \
+       ) | ( cd $(1); $(TAR) -xf - )
 endef
 
 define Package/ruby-irb/install
@@ -358,12 +993,95 @@ define Package/ruby-json/install
                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 \
+       ) | ( cd $(1); $(TAR) -xf - )
+       rm -rf \
+               $(1)/usr/lib/ruby/$(PKG_LIBVER)/psych/json
+endef
+
+define Package/ruby-logger/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/logger.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/syslog/logger.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/*/syslog.so \
        ) | ( cd $(1); $(TAR) -xf - )
 endef
 
-define Package/ruby-ncurses/install
+define Package/ruby-math/install
        ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
-               usr/lib/ruby/$(PKG_LIBVER)/*/curses.so \
+               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)/complex.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/rational.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/*/mathn \
+               usr/lib/ruby/$(PKG_LIBVER)/matrix.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/matrix \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-minitest/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/minitest/ \
+               usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/minitest-*.gemspec \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-misc/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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 \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+
+
+define Package/ruby-mkmf/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/mkmf.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/un.rb \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-multithread/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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)/*/thread.so \
+               usr/lib/ruby/$(PKG_LIBVER)/*/io/wait.so \
+               usr/lib/ruby/$(PKG_LIBVER)/*/io/nonblock.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-net/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/open-uri.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/net/* \
        ) | ( cd $(1); $(TAR) -xf - )
 endef
 
@@ -376,24 +1094,53 @@ endef
 
 define Package/ruby-openssl/install
        ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
-               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/*.so \
                usr/lib/ruby/$(PKG_LIBVER)/openssl \
                usr/lib/ruby/$(PKG_LIBVER)/openssl.rb \
                usr/lib/ruby/$(PKG_LIBVER)/*/openssl.so \
-               usr/lib/ruby/$(PKG_LIBVER)/drb/ssl.rb \
-               usr/lib/ruby/$(PKG_LIBVER)/net/https.rb \
        ) | ( cd $(1); $(TAR) -xf - )
 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/
+define Package/ruby-optparse/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/optparse.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/optparse \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-patterns/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/observer.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/singleton.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/forwardable.rb \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-prettyprint/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/pp.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/prettyprint.rb \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-pstore/install
        $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/pstore.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-psych/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               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 \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-racc/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/racc \
+               usr/lib/ruby/$(PKG_LIBVER)/*/racc/*.so \
+       ) | ( cd $(1); $(TAR) -xf - )
 endef
 
 define Package/ruby-rake/install
@@ -402,6 +1149,34 @@ define Package/ruby-rake/install
        $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rake.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rake $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/rake-*.gemspec \
+               $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-* $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
+endef
+
+define Package/ruby-rbconfig/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/rbconfig/* \
+               usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig/*.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+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/
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/rdoc-*.gemspec \
+               $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rdoc-* \
+               $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
 endef
 
 define Package/ruby-readline/install
@@ -415,6 +1190,19 @@ define Package/ruby-rexml/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rexml $(1)/usr/lib/ruby/$(PKG_LIBVER)/
 endef
 
+define Package/ruby-rinda/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/rinda \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-ripper/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/ripper.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/ripper \
+               usr/lib/ruby/$(PKG_LIBVER)/*/ripper.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
 
 define Package/ruby-rss/install
        $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
@@ -422,11 +1210,46 @@ define Package/ruby-rss/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rss.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
 endef
 
-define Package/ruby-unit/install
+define Package/ruby-sdbm/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/*/sdbm.so \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-shell/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/shell.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/shell \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-socket/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/gserver.rb \
+               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 \
+       ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-testunit/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/testrb $(1)/usr/bin/
        $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/test $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
+       $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/test-unit-*.gemspec $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-* $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
+endef
+
+define Package/ruby-uri/install
+       ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+               usr/lib/ruby/$(PKG_LIBVER)/uri.rb \
+               usr/lib/ruby/$(PKG_LIBVER)/uri \
+       ) | ( cd $(1); $(TAR) -xf - )
 endef
 
 define Package/ruby-webrick/install
@@ -438,13 +1261,13 @@ endef
 define Package/ruby-xmlrpc/install
        $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/xmlrpc $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/xmlrpc.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
 endef
 
 define Package/ruby-yaml/install
        ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
                usr/lib/ruby/$(PKG_LIBVER)/yaml \
                usr/lib/ruby/$(PKG_LIBVER)/yaml.rb \
-               usr/lib/ruby/$(PKG_LIBVER)/*/syck.so \
        ) | ( cd $(1); $(TAR) -xf - )
 endef
 
@@ -462,24 +1285,54 @@ endef
 
 $(eval $(call BuildPackage,ruby))
 $(eval $(call BuildPackage,libruby))
-$(eval $(call BuildPackage,ruby-core))
+$(eval $(call BuildPackage,ruby-stdlib))
+$(eval $(call BuildPackage,ruby-bigdecimal))
 $(eval $(call BuildPackage,ruby-cgi))
+$(eval $(call BuildPackage,ruby-csv))
+$(eval $(call BuildPackage,ruby-datetime))
+$(eval $(call BuildPackage,ruby-dbm))
+$(eval $(call BuildPackage,ruby-debuglib))
+$(eval $(call BuildPackage,ruby-digest))
 $(eval $(call BuildPackage,ruby-dl))
+$(eval $(call BuildPackage,ruby-drb))
 $(eval $(call BuildPackage,ruby-enc))
+$(eval $(call BuildPackage,ruby-enc-extra))
 $(eval $(call BuildPackage,ruby-erb))
+$(eval $(call BuildPackage,ruby-fiddle))
+$(eval $(call BuildPackage,ruby-filelib))
 $(eval $(call BuildPackage,ruby-gdbm))
 $(eval $(call BuildPackage,ruby-gems))
-$(eval $(call BuildPackage,ruby-json))
+$(eval $(call BuildPackage,ruby-io-console))
 $(eval $(call BuildPackage,ruby-irb))
-$(eval $(call BuildPackage,ruby-ncurses))
+$(eval $(call BuildPackage,ruby-json))
+$(eval $(call BuildPackage,ruby-logger))
+$(eval $(call BuildPackage,ruby-math))
+$(eval $(call BuildPackage,ruby-minitest))
+$(eval $(call BuildPackage,ruby-misc))
+$(eval $(call BuildPackage,ruby-mkmf))
+$(eval $(call BuildPackage,ruby-multithread))
+$(eval $(call BuildPackage,ruby-net))
 $(eval $(call BuildPackage,ruby-nkf))
 $(eval $(call BuildPackage,ruby-openssl))
+$(eval $(call BuildPackage,ruby-optparse))
+$(eval $(call BuildPackage,ruby-patterns))
+$(eval $(call BuildPackage,ruby-prettyprint))
+$(eval $(call BuildPackage,ruby-pstore))
+$(eval $(call BuildPackage,ruby-psych))
+$(eval $(call BuildPackage,ruby-racc))
 $(eval $(call BuildPackage,ruby-rake))
+$(eval $(call BuildPackage,ruby-rbconfig))
 $(eval $(call BuildPackage,ruby-rdoc))
 $(eval $(call BuildPackage,ruby-readline))
 $(eval $(call BuildPackage,ruby-rexml))
+$(eval $(call BuildPackage,ruby-rinda))
+$(eval $(call BuildPackage,ruby-ripper))
 $(eval $(call BuildPackage,ruby-rss))
-$(eval $(call BuildPackage,ruby-unit))
+$(eval $(call BuildPackage,ruby-sdbm))
+$(eval $(call BuildPackage,ruby-shell))
+$(eval $(call BuildPackage,ruby-socket))
+$(eval $(call BuildPackage,ruby-testunit))
+$(eval $(call BuildPackage,ruby-uri))
 $(eval $(call BuildPackage,ruby-webrick))
 $(eval $(call BuildPackage,ruby-xmlrpc))
 $(eval $(call BuildPackage,ruby-yaml))
diff --git a/lang/ruby/files/ruby b/lang/ruby/files/ruby
new file mode 100644 (file)
index 0000000..e4904fc
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+if ! [ -r "@RUBY_LIBPATH@/rubygems.rb" ]; then
+       exec @RUBY_BINPATH@ --disable-gems "$@"
+fi
+exec @RUBY_BINPATH@ "$@"
diff --git a/lang/ruby/patches/001-rdoc-remove_gems_dep.patch b/lang/ruby/patches/001-rdoc-remove_gems_dep.patch
new file mode 100644 (file)
index 0000000..afe81e8
--- /dev/null
@@ -0,0 +1,32 @@
+--- ruby-2.1.2.orig/lib/rdoc.rb        2014-09-02 17:14:28.719224215 -0300
++++ ruby-2.1.2/lib/rdoc.rb     2014-09-02 17:14:28.762223911 -0300
+@@ -109,6 +109,8 @@
+   def self.load_yaml
+     begin
+       gem 'psych'
++    rescue NameError => e # --disable-gems
++       raise unless e.name == :gem
+     rescue Gem::LoadError
+     end
+--- ruby-2.1.2.orig/lib/rdoc/markdown.rb       2014-09-02 17:14:28.761223918 -0300
++++ ruby-2.1.2/lib/rdoc/markdown.rb    2014-09-02 17:14:28.805223607 -0300
+@@ -525,7 +525,6 @@
+-  require 'rubygems'
+   require 'rdoc'
+   require 'rdoc/markup/to_joined_paragraph'
+   require 'rdoc/markdown/entities'
+--- ruby-2.1.2.orig/lib/rdoc/text.rb   2014-09-02 17:14:28.721224201 -0300
++++ ruby-2.1.2/lib/rdoc/text.rb        2014-09-02 17:14:28.764223897 -0300
+@@ -10,6 +10,8 @@
+ begin
+   gem 'json'
++rescue NameError => e # --disable-gems
++  raise unless e.name == :gem
+ rescue Gem::LoadError
+ end
diff --git a/lang/ruby/patches/002-minitest-remove_gems_dep.patch b/lang/ruby/patches/002-minitest-remove_gems_dep.patch
new file mode 100644 (file)
index 0000000..f53490e
--- /dev/null
@@ -0,0 +1,13 @@
+--- ruby-2.1.2.orig/lib/minitest/autorun.rb    2014-09-03 02:22:29.769909573 -0300
++++ ruby-2.1.2/lib/minitest/autorun.rb 2014-09-03 02:22:29.768909580 -0300
+@@ -6,8 +6,9 @@
+ ######################################################################
+ begin
+-  require 'rubygems'
+   gem 'minitest'
++rescue NameError => e # --disable-gems
++  raise unless e.name == :gem
+ rescue Gem::LoadError
+   # do nothing
+ end
diff --git a/lang/ruby/patches/003-digest_rmd160_wrong_name_fix.patch b/lang/ruby/patches/003-digest_rmd160_wrong_name_fix.patch
new file mode 100644 (file)
index 0000000..2dc49f6
--- /dev/null
@@ -0,0 +1,12 @@
+diff -r -u ruby-2.1.2.old/ext/digest/rmd160/extconf.rb ruby-2.1.2/ext/digest/rmd160/extconf.rb
+--- ruby-2.1.2.old/ext/digest/rmd160/extconf.rb        2012-11-26 22:58:52.000000000 -0200
++++ ruby-2.1.2/ext/digest/rmd160/extconf.rb    2014-09-17 14:20:57.537367488 -0300
+@@ -14,7 +14,7 @@
+ require File.expand_path('../../../openssl/deprecation', __FILE__)
+ if !with_config("bundled-rmd160") &&
+-    have_library("crypto") && OpenSSL.check_func("RMD160_Transform", "openssl/ripemd.h")
++    have_library("crypto") && OpenSSL.check_func("RIPEMD160_Transform", "openssl/ripemd.h")
+   $objs << "rmd160ossl.#{$OBJEXT}"
+ else
+   $objs << "rmd160.#{$OBJEXT}"
diff --git a/lang/ruby/patches/004-digest_dont-link-ssl-if-not-needed.patch b/lang/ruby/patches/004-digest_dont-link-ssl-if-not-needed.patch
new file mode 100644 (file)
index 0000000..792f76c
--- /dev/null
@@ -0,0 +1,117 @@
+--- ruby-2.1.2/ext/digest/md5/extconf.rb       2012-11-26 22:58:52.000000000 -0200
++++ ruby-2.1.2/ext/digest/md5/extconf.rb       2014-09-16 19:25:21.120457409 -0300
+@@ -9,14 +9,21 @@
+ $objs = [ "md5init.#{$OBJEXT}" ]
+-dir_config("openssl")
+-pkg_config("openssl")
+-require File.expand_path('../../../openssl/deprecation', __FILE__)
++if !with_config("bundled-md5")
++  dir_config("openssl")
++  pkg_config("openssl")
++  require File.expand_path('../../../openssl/deprecation', __FILE__)
++  if have_library("crypto") && OpenSSL.check_func("MD5_Transform", "openssl/md5.h")
++    $use_bundled=false
++  else
++    $use_bundled=true
++  end
++else
++  $use_bundled=true
++end
+-if !with_config("bundled-md5") &&
+-    have_library("crypto") && OpenSSL.check_func("MD5_Transform", "openssl/md5.h")
++if !$use_bundled
+   $objs << "md5ossl.#{$OBJEXT}"
+-
+ else
+   $objs << "md5.#{$OBJEXT}"
+ end
+--- ruby-2.1.2/ext/digest/rmd160/extconf.rb    2012-11-26 22:58:52.000000000 -0200
++++ ruby-2.1.2/ext/digest/rmd160/extconf.rb    2014-09-16 19:29:11.425628541 -0300
+@@ -9,12 +9,20 @@
+ $objs = [ "rmd160init.#{$OBJEXT}" ]
+-dir_config("openssl")
+-pkg_config("openssl")
+-require File.expand_path('../../../openssl/deprecation', __FILE__)
++if !with_config("bundled-rmd160")
++  dir_config("openssl")
++  pkg_config("openssl")
++  require File.expand_path('../../../openssl/deprecation', __FILE__)
++  if have_library("crypto") && OpenSSL.check_func("RIPEMD160_Transform", "openssl/ripemd.h")
++    $use_bundled=false
++  else
++    $use_bundled=true
++  end
++else
++  $use_bundled=true
++end
+-if !with_config("bundled-rmd160") &&
+-    have_library("crypto") && OpenSSL.check_func("RIPEMD160_Transform", "openssl/ripemd.h")
++if !$use_bundled
+   $objs << "rmd160ossl.#{$OBJEXT}"
+ else
+   $objs << "rmd160.#{$OBJEXT}"
+--- ruby-2.1.2/ext/digest/sha1/extconf.rb      2012-11-26 22:58:52.000000000 -0200
++++ ruby-2.1.2/ext/digest/sha1/extconf.rb      2014-09-16 19:30:09.359168494 -0300
+@@ -9,12 +9,20 @@
+ $objs = [ "sha1init.#{$OBJEXT}" ]
+-dir_config("openssl")
+-pkg_config("openssl")
+-require File.expand_path('../../../openssl/deprecation', __FILE__)
++if !with_config("bundled-sha1")
++  dir_config("openssl")
++  pkg_config("openssl")
++  require File.expand_path('../../../openssl/deprecation', __FILE__)
++  if have_library("crypto") && OpenSSL.check_func("SHA1_Transform", "openssl/sha.h")
++    $use_bundled=false
++  else
++    $use_bundled=true
++  end
++else
++  $use_bundled=true
++end
+-if !with_config("bundled-sha1") &&
+-    have_library("crypto") && OpenSSL.check_func("SHA1_Transform", "openssl/sha.h")
++if !$use_bundled
+   $objs << "sha1ossl.#{$OBJEXT}"
+ else
+   $objs << "sha1.#{$OBJEXT}"
+--- ruby-2.1.2/ext/digest/sha2/extconf.rb      2012-11-26 22:58:52.000000000 -0200
++++ ruby-2.1.2/ext/digest/sha2/extconf.rb      2014-09-16 19:31:31.833513570 -0300
+@@ -9,14 +9,22 @@
+ $objs = [ "sha2init.#{$OBJEXT}" ]
+-dir_config("openssl")
+-pkg_config("openssl")
+-require File.expand_path('../../../openssl/deprecation', __FILE__)
+-
+-if !with_config("bundled-sha2") &&
+-    have_library("crypto") &&
++if !with_config("bundled-sha2")
++  dir_config("openssl")
++  pkg_config("openssl")
++  require File.expand_path('../../../openssl/deprecation', __FILE__)
++  if have_library("crypto") &&
+     %w[SHA256 SHA512].all? {|d| OpenSSL.check_func("#{d}_Transform", "openssl/sha.h")} &&
+     %w[SHA256 SHA512].all? {|d| have_type("#{d}_CTX", "openssl/sha.h")}
++    $use_bundled=false
++  else
++    $use_bundled=true
++  end
++else
++  $use_bundled=true
++end
++
++if !$use_bundled
+   $objs << "sha2ossl.#{$OBJEXT}"
+   $defs << "-DSHA2_USE_OPENSSL"
+ else
diff --git a/lang/ruby/ruby_find_pkgsdeps b/lang/ruby/ruby_find_pkgsdeps
new file mode 100644 (file)
index 0000000..06587ec
--- /dev/null
@@ -0,0 +1,265 @@
+#!/usr/bin/ruby -Eutf-8
+# encoding: utf-8
+#
+# Find dependencies between ruby packages
+#
+# Must run inside a openwrt with all *ruby* packages installed
+#
+
+failed = false
+
+puts "Looking for installed ruby packages..."
+packages=`opkg list-installed '*ruby*' | cut -d' ' -f 1`.split("\n")
+
+puts "Looking for packages files..."
+package_files=Hash.new([])
+packages.each do
+       |pkg|
+       files=`opkg files "#{pkg}" | sed -e 1d`.split("\n")
+       package_files[pkg]=files if files
+end
+
+require_regex=/^require ["']([^"']+)["'].*/
+require_regex_ignore=/^require ([a-zA-Z\$]|["']$|.*\/$)/
+require_ignore=%w{drb/invokemethod16 foo rubygems/defaults/operating_system win32console java Win32API
+                  builder/xchar json/pure simplecov win32/sspi rdoc/markdown/literals_1_8 enumerator win32/resolv rbtree
+                  nqxml/streamingparser nqxml/treeparser xmlscan/parser xmlscan/scanner xmltreebuilder xml/parser xmlparser xml/encoding-ja xmlencoding-ja
+                  iconv uconv}
+
+builtin_enc=[
+       Encoding.find("ASCII-8BIT"),
+       Encoding.find("UTF-8"),
+       Encoding.find("UTF-7"),
+       Encoding.find("US-ASCII"),
+]
+
+puts "Looking for requires in files..."
+files_requires=Hash.new([])
+packages.each do
+        |pkg|
+       package_files[pkg].each do
+               |file|
+               next if not File.file?(file)
+
+               if not file =~ /.rb$/
+                       if File.executable?(file)
+                               magic=`head -c50 '#{file}' | head -1`
+                               begin
+                                       if not magic =~ /ruby/
+                                               next
+                                       end
+                               rescue
+                                       next
+                               end
+                       else
+                               next
+                       end
+               end
+               #puts "Checking #{file}..."
+               File.open(file, "r") do
+                       |f|
+                       lineno=0
+                       while line=f.gets() do
+                               lineno+=1; encs=[]; requires=[]; need_encdb=false
+
+                               line=line.chomp.gsub!(/^[[:blank:]]*/,"")
+
+                               case line
+                               when /^#.*coding *:/
+                                       if lineno <= 2
+                                               enc=line.sub(/.*coding *: */,"").sub(/ .*/,"")
+                                               encs << Encoding.find(enc)
+                                       end
+                               end
+                               line.gsub!(/#.*/,"")
+                               case line
+                               when "__END__"
+                                       break
+                               when /^require /
+                                       #puts "#{file}:#{line}"
+                                       if require_regex_ignore =~ line
+                                               #puts "Ignoring #{line} at #{file}:#{lineno} (REGEX)..."
+                                               next
+                                       end
+                                       if not require_regex =~ line
+                                               $stderr.puts "Unknown require: '#{line}' at file #{file}:#{lineno}"
+                                               failed=true
+                                       end
+                                       require=line.gsub(require_regex,"\\1")
+                                       require.gsub!(/\.(so|rb)$/,"")
+
+                                       if require_ignore.include?(require)
+                                               #puts "Ignoring #{line} at #{file}:#{lineno} (STR)..."
+                                               next
+                                       end
+
+                                       files_requires[file]=files_requires[file] + [require]
+
+                               when /Encoding::/
+                                       encs=line.scan(/Encoding::[[:alnum:]_]+/).collect {|enc| eval(enc) }.select {|enc| enc.kind_of? Encoding }
+                                       need_encdb=true
+                               end
+
+                               next if encs.empty?
+                               required_encs = (encs - builtin_enc).collect {|enc| "enc/#{enc.name.downcase.gsub("-","_")}" }
+                               required_encs << "enc/encdb" if need_encdb
+
+                               files_requires[file] = files_requires[file] + required_encs
+                       end
+               end
+       end
+end
+exit(1) if failed
+
+# Add deps from .so
+package_files.each do |(pkg,files)| files.each do |file|
+       case file
+       when /\/nkf\.so$/
+               files_requires[file]= files_requires[file] + ["enc/encdb"]
+       end
+end; end
+
+puts "Merging requirements into packages..."
+package_requires = Hash[packages.collect { |pkg| [pkg, package_files[pkg].collect {|file| files_requires[file] }.inject([],:+).uniq] }]
+
+weak_dependency=Hash.new([])
+weak_dependency.merge!({
+"ruby-misc"=>["ruby-openssl"],                                         #securerandom.rb
+"ruby-debuglib"=>["ruby-readline"],                            #debug.rb
+"ruby-drb"=>["ruby-openssl"],                                  #drb/ssl.rb
+"ruby-irb"=>["ruby-rdoc", "ruby-readline"],                    #irb/cmd/help.rb
+"ruby-gems"=>["ruby-openssl","ruby-io-console",                #rubygems/commands/cert_command.rb rubygems/user_interaction.rb
+             "ruby-minitest", "ruby-webrick"],                 #rubygems/test_case.rb rubygems/server.rb
+"ruby-mkmf"=>["ruby-webrick"],                                         #un.rb
+"ruby-net"=>["ruby-openssl","ruby-io-console","ruby-zlib"],    #net/*.rb
+"ruby-optparse"=>["ruby-uri","ruby-datetime"],                 #optparse/date.rb optparse/uri.rb
+"ruby-rake"=>["ruby-net","ruby-testunit","ruby-gems"],         #rake/contrib/ftptools.rb rake/runtest.rb /usr/bin/rake
+"ruby-rdoc"=>["ruby-gems","ruby-readline","ruby-webrick",
+             "ruby-minitest"],                                 #/usr/bin/rdoc and others
+"ruby-testunit"=>["ruby-gems", "ruby-io-console"],             #test/unit/parallel.rb test/unit.rb
+"ruby-webrick"=>["ruby-openssl"],                              #webrick/ssl.rb
+})
+
+puts "Looking for package dependencies..."
+package_provides = {}
+package_dependencies = Hash.new([])
+package_requires.each do
+       |(pkg,requires)|
+
+       requires.each do
+               |require|
+               if package_provides.include?(require)
+                       found = package_provides[require]
+               else
+                       found = package_files.detect {|(pkg,files)| files.detect {|file| $:.detect {|path| "#{path}/#{require}" == file.gsub(/\.(so|rb)$/,"") } } }
+                       if not found
+                               $stderr.puts "#{pkg}: Nobody provides #{require}"
+                               failed = true
+                               next
+                       end
+                       found = found.first
+                       package_provides[require]=found
+               end
+               if weak_dependency[pkg].include?(found)
+                       puts "#{pkg}: #{found} provides #{require} (ignored WEAK dep)"
+               else
+                       puts "#{pkg}: #{found} provides #{require}"
+                       package_dependencies[pkg]=package_dependencies[pkg] + [found]
+               end
+       end
+end
+exit(1) if failed
+
+package_dependencies.each do
+        |(pkg,deps)|
+        package_dependencies[pkg]=deps.uniq.sort - [pkg]
+end
+
+puts "Expanding dependencies..."
+begin
+       changed=false
+       package_dependencies.each do
+               |(pkg,deps)|
+
+               next if deps.empty?
+
+               deps_new = deps.collect {|dep| [dep] + package_dependencies[dep] }.inject([],:+).uniq.sort
+               if not deps == deps_new
+                       puts "#{pkg}: #{deps.join(",")}"
+                       puts "#{pkg}: #{deps_new.join(",")}"
+                       package_dependencies[pkg]=deps_new
+                       changed=true
+               end
+       end
+end if not changed
+
+puts "Checking for mutual dependencies..."
+package_dependencies.each do
+       |(pkg,deps)|
+       if deps.include? pkg
+               $stderr.puts "#{pkg}: Cycle dependency detected! "
+               failed = true
+       end
+end
+exit(1) if failed
+
+puts "Removing redundant dependencies..."
+package_dependencies.each do
+       |(pkg,deps)|
+       package_dependencies[pkg]=deps.uniq - [pkg]
+end
+
+package_dependencies2=package_dependencies.dup
+package_dependencies.each do
+       |(pkg,deps)|
+
+       # Ignore dependencies that are aready required by another dependency
+       deps_clean = deps.reject {|dep_suspect| deps.detect {|dep_provider|
+                       if package_dependencies[dep_provider].include?(dep_suspect)
+                               puts "#{pkg}: #{dep_suspect} is already required by #{dep_provider}"
+                               true
+                       end
+                } }
+
+       if not deps==deps_clean
+               puts "before: #{deps.join(",")}"
+               puts "after: #{deps_clean.join(",")}"
+               package_dependencies2[pkg]=deps_clean
+       end
+end
+package_dependencies=package_dependencies2
+
+puts "Checking current packages dependencies..."
+ok=true
+package_dependencies.each do
+       |(pkg,deps)|
+       current_deps=`opkg depends #{pkg} | sed -r -e '1d;s/^[[:blank:]]*//'`.split("\n")
+       current_deps.reject!{|dep| dep =~ /^lib/ }
+       current_deps -= ["ruby"]
+
+       extra_dep = current_deps - deps
+       $stderr.puts "Package #{pkg} does not need to depend on #{extra_dep.join(" ")} " if not extra_dep.empty?
+       missing_dep = deps - current_deps
+       $stderr.puts "Package #{pkg} need to depend on #{missing_dep.join(" ")} " if not missing_dep.empty?
+
+       if not extra_dep.empty? or not missing_dep.empty?
+               $stderr.puts "define Package/#{pkg}"
+               $stderr.puts "  DEPENDS:=ruby#{([""] +deps).join(" +")}"
+               ok=false
+       end
+end
+
+puts "All dependencies are OK." if ok
+
+
+__END__
+
+puts RUBY_VERSION, RUBY_PLATFORM
+puts 123
+
+puts Object.contants
+
+#RUBY_VER=2.1
+#RUBY_ARCH=i486-linux-gnu
+#RUBYLIB=/usr/lib/ruby/$RUBY_VER/
+#RUBYLIB_A=/usr/lib/ruby/$RUBY_ARCH/$RUBY_VER/
diff --git a/lang/ruby/ruby_missingfiles b/lang/ruby/ruby_missingfiles
new file mode 100644 (file)
index 0000000..f05e9fe
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+
+function list_staging_files {
+       cd staging_dir/target-*/; find \
+               \( \( -name "root-x86" -or -name "packages" -or -name "stamp" -or -name "pkginfo" \) -prune \) -or -true \
+               \( -path "*ruby*" -or -name "erb" -or -name "gem" -or -name "irb" -or -name "rake" -or -name "rdoc" -or -name "ri" -or -name "testrb" \) \
+               -print | sort
+}
+
+function list_ipkg_files {
+       for OPKG in bin/*/packages/packages/*ruby*; do
+        tar --to-stdout -xzf "$OPKG" ./data.tar.gz | tar tz | sed -e 's%/$%%'
+       done | sort -u
+}
+
+
+echo "          Staging                    Packages"
+diff -y <(list_staging_files) <(list_ipkg_files)
+
index da1f1d41f768675c2b9ac9eddaa147e23fcefd4b..27d28ac33633f2d8f3f46101921636d448af1416 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dovecot
 PKG_VERSION:=2.2.13
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.dovecot.org/releases/2.2
@@ -42,7 +42,7 @@ define Package/dovecot/config
                 depends on PACKAGE_dovecot
                 config DOVECOT_LDAP
                         bool "LDAP support"
-                        default y
+                        default n
                         help
                           Implements LDAP support in dovecot.
         endmenu