-# Copyright (C) 2006 OpenWrt.org
+#
+# Copyright (C) 2006-2010 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# $Id$
+
+#
+# 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?
include $(TOPDIR)/rules.mk
PKG_NAME:=ruby
-PKG_VERSION:=1.8.4
-PKG_RELEASE:=1
+PKG_VERSION:=1.9.1-p376
+PKG_RELEASE:=3
+
+PKG_LIBVER:=1.9
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=ftp://ftp.ruby-lang.org/pub/ruby/1.8/
-PKG_MD5SUM:=bd8c2e593e1fa4b01fd98eaf016329bb
-PKG_CAT:=zcat
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=ftp://ftp.ruby-lang.org/pub/ruby/$(PKG_LIBVER)/
+PKG_MD5SUM:=e019ae9c643c5efe91be49e29781fb94
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+PKG_BUILD_DEPENDS:=ruby/host
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
-define Package/ruby
+define Package/ruby/Default
+ SUBMENU:=Ruby
SECTION:=lang
CATEGORY:=Languages
- TITLE:=Ruby object-oriented scripting language interpreter
- 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.
+ TITLE:=Ruby scripting language
URL:=http://www.ruby-lang.org/
endef
-#use Build/Configure/Default
+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 Package/libruby
+$(call Package/ruby/Default)
+ SUBMENU:=
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE+= (shared library)
+ DEPENDS+= +libpthread
+endef
+
+# Ongoing work to break up ruby's standard library into coherent pieces
+# with minimal dependencies between them
+
+define Package/ruby-core
+$(call Package/ruby/Default)
+ TITLE:=Ruby standard libraries
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-cgi
+$(call Package/ruby/Default)
+ TITLE:=Ruby CGI support toolkit
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-dl
+$(call Package/ruby/Default)
+ TITLE+= (dynamic linker support) (adds 5MB+)
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-enc
+$(call Package/ruby/Default)
+ TITLE+= (character re-coding library) (adds 2MB+)
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-erb
+$(call Package/ruby/Default)
+ TITLE+= (embedded interpreter)
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-gdbm
+$(call Package/ruby/Default)
+ TITLE:=Ruby support for gdbm
+ DEPENDS:=ruby +libgdbm
+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
+endef
+
+define Package/ruby-irb
+$(call Package/ruby/Default)
+ TITLE+= (interactive shell)
+ DEPENDS:=ruby +ruby-core
+endef
+
+define Package/ruby-json
+$(call Package/ruby/Default)
+ TITLE:=Ruby support for JSON
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-ncurses
+$(call Package/ruby/Default)
+ TITLE:=Ruby support for ncurses
+ DEPENDS:=ruby +libncurses
+endef
+
+define Package/ruby-nkf
+$(call Package/ruby/Default)
+ TITLE:=Ruby Network Kanji Filter
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-openssl
+$(call Package/ruby/Default)
+ TITLE:=Ruby support for openssl
+ DEPENDS:=ruby +libopenssl
+endef
+
+define Package/ruby-rdoc
+$(call Package/ruby/Default)
+ TITLE+= (documentation generator)
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-rake
+$(call Package/ruby/Default)
+ TITLE+=Ruby Rake (make replacement)
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-readline
+$(call Package/ruby/Default)
+ TITLE:=Ruby support for readline
+ DEPENDS:=ruby +libncurses +libreadline
+endef
+
+define Package/ruby-rexml
+$(call Package/ruby/Default)
+ TITLE:=Ruby XML toolkit
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-rss
+$(call Package/ruby/Default)
+ TITLE:=Ruby RSS toolkit
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-unit
+$(call Package/ruby/Default)
+ TITLE:=Ruby unit testing toolkit
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-webrick
+$(call Package/ruby/Default)
+ TITLE:=Ruby Web server toolkit
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-xmlrpc
+$(call Package/ruby/Default)
+ TITLE:=Ruby XML-RPC toolkit
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-yaml
+$(call Package/ruby/Default)
+ TITLE:=Ruby YAML toolkit
+ DEPENDS:=ruby
+endef
+
+define Package/ruby-zlib
+$(call Package/ruby/Default)
+ TITLE:=Ruby support for zlib
+ DEPENDS:=ruby +zlib
+endef
+
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --enable-static \
+ --disable-rpath \
+ --enable-ipv6 \
+ --enable-wide-getaddrinfo \
+ --with-ruby-version=minor \
+ --with-iconv-dir=$(STAGING_DIR_ROOT)/../usr/lib/libiconv \
+
+TARGET_LDFLAGS += -L$(PKG_BUILD_DIR)
+
+MAKE_FLAGS += \
+ DESTDIR="$(PKG_INSTALL_DIR)" \
+ SHELL="/bin/bash"
+
+define Build/Prepare
+$(call Build/Prepare/Default)
+ ( cd $(PKG_BUILD_DIR) ; \
+ autoconf ; \
+ )
endef
define Package/ruby/install
$(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ruby $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ruby $(1)/usr/bin/
endef
-$(eval $(call BuildPackage,ruby))
+define Package/libruby/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(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
+endef
+
+define Package/ruby-cgi/install
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/cgi $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/cgi.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-dl/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/*/dl.so \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-enc/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/*/enc \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-erb/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/erb $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/erb.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-gdbm/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/*/gdbm.so \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+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)/rubygems.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-irb/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/irb $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/irb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/irb.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-json/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/json.rb \
+ usr/lib/ruby/$(PKG_LIBVER)/json \
+ usr/lib/ruby/$(PKG_LIBVER)/*/json \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-ncurses/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/*/curses.so \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-nkf/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/kconv.rb \
+ usr/lib/ruby/$(PKG_LIBVER)/*/nkf.so \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
-$(eval $(call RequireCommand,/usr/bin/ruby, \
- Ruby requires ruby installed on the host-system. \
-))
+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 \
+ usr/lib/ruby/$(PKG_LIBVER)/webrick/ssl.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/
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-rake/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rake $(1)/usr/bin/
+ $(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)/
+endef
+
+define Package/ruby-readline/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/*/readline.so \
+ usr/lib/ruby/$(PKG_LIBVER)/irb/completion.rb \
+ usr/lib/ruby/$(PKG_LIBVER)/irb/ext/save-history.rb \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/ruby-rexml/install
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rexml $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+
+define Package/ruby-rss/install
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rss $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rss.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+endef
+
+define Package/ruby-unit/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)/
+endef
+
+define Package/ruby-webrick/install
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/webrick $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/webrick.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
+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)/
+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
+
+define Package/ruby-zlib/install
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ usr/lib/ruby/$(PKG_LIBVER)/*/zlib.so \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Build/InstallDev
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ . \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+$(eval $(call BuildPackage,ruby))
+$(eval $(call BuildPackage,libruby))
+$(eval $(call BuildPackage,ruby-core))
+$(eval $(call BuildPackage,ruby-cgi))
+$(eval $(call BuildPackage,ruby-dl))
+$(eval $(call BuildPackage,ruby-enc))
+$(eval $(call BuildPackage,ruby-erb))
+$(eval $(call BuildPackage,ruby-gdbm))
+$(eval $(call BuildPackage,ruby-gems))
+$(eval $(call BuildPackage,ruby-json))
+$(eval $(call BuildPackage,ruby-irb))
+$(eval $(call BuildPackage,ruby-ncurses))
+$(eval $(call BuildPackage,ruby-nkf))
+$(eval $(call BuildPackage,ruby-openssl))
+$(eval $(call BuildPackage,ruby-rake))
+$(eval $(call BuildPackage,ruby-rdoc))
+$(eval $(call BuildPackage,ruby-readline))
+$(eval $(call BuildPackage,ruby-rexml))
+$(eval $(call BuildPackage,ruby-rss))
+$(eval $(call BuildPackage,ruby-unit))
+$(eval $(call BuildPackage,ruby-webrick))
+$(eval $(call BuildPackage,ruby-xmlrpc))
+$(eval $(call BuildPackage,ruby-yaml))
+$(eval $(call BuildPackage,ruby-zlib))
+$(eval $(call HostBuild))