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.

806 lines
29 KiB

  1. #
  2. # Copyright (C) 2006-2016 OpenWrt.org
  3. # Copyright (C) 2017-2018 Luiz Angelo Daros de Luca <luizluca@gmail.com>
  4. #
  5. # This is free software, licensed under the GNU General Public License v2.
  6. # See /LICENSE for more information.
  7. #
  8. # To Do:
  9. # - dirs not removed when uninstalling! opkg bug?
  10. #
  11. include $(TOPDIR)/rules.mk
  12. PKG_NAME:=ruby
  13. PKG_VERSION:=2.5.1
  14. PKG_RELEASE:=1
  15. # First two numbes
  16. PKG_ABI_VERSION:=$(subst $(space),.,$(wordlist 1, 2, $(subst .,$(space),$(PKG_VERSION))))
  17. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
  18. PKG_SOURCE_URL:=https://cache.ruby-lang.org/pub/ruby/$(PKG_ABI_VERSION)/
  19. PKG_HASH:=886ac5eed41e3b5fc699be837b0087a6a5a3d10f464087560d2d21b3e71b754d
  20. PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
  21. PKG_LICENSE:=BSD-2-Clause
  22. PKG_LICENSE_FILES:=COPYING
  23. PKG_BUILD_DEPENDS:=ruby/host
  24. PKG_INSTALL:=1
  25. PKG_BUILD_PARALLEL:=1
  26. PKG_FIXUP:=autoreconf
  27. include $(INCLUDE_DIR)/host-build.mk
  28. include $(INCLUDE_DIR)/package.mk
  29. include $(INCLUDE_DIR)/nls.mk
  30. HOST_CONFIGURE_ARGS += \
  31. --disable-install-doc \
  32. --disable-install-rdoc \
  33. --disable-install-capi \
  34. --without-gmp \
  35. --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
  36. # Does not compile with this. Workaround is --without-gmp
  37. # https://bugs.ruby-lang.org/issues/11940
  38. #--with-static-linked-ext \
  39. # even not used, host build with restricted exts results in gems not being
  40. # compiled for target (probably some cross compiling problem like checking
  41. # host for selecting target features)
  42. # --with-out-ext \
  43. # --with-ext=thread,stringio \
  44. CONFIGURE_ARGS += \
  45. --enable-shared \
  46. --enable-static \
  47. --disable-rpath \
  48. $(call autoconf_bool,CONFIG_IPV6,ipv6) \
  49. --disable-install-doc \
  50. --disable-install-capi \
  51. --with-ruby-version=minor \
  52. --with-iconv-dir=$(ICONV_PREFIX) \
  53. --with-out-ext=win32,win32ole
  54. ifndef CONFIG_RUBY_DIGEST_USE_OPENSSL
  55. CONFIGURE_ARGS += \
  56. --with-bundled-sha1\
  57. --with-bundled-md5\
  58. --with-bundled-rmd160\
  59. --with-bundled-sha2 \
  60. endif
  61. TARGET_LDFLAGS += -L$(PKG_BUILD_DIR)
  62. # Ruby uses DLDFLAGS and not LDFLAGS for libraries. LDFLAGS is only for execs.
  63. # However, DLDFLAGS from configure is not passed to Makefile when target is linux.
  64. # XLDFLAGS is used by both libraries and execs. This is somehow brute force but
  65. # it will fix when some LD_FLAGS is needed for libraries. As side effect, it will
  66. # duplicate ld args for binaries.
  67. CONFIGURE_VARS += XLDFLAGS="$(TARGET_LDFLAGS)"
  68. MAKE_FLAGS += \
  69. DESTDIR="$(PKG_INSTALL_DIR)" \
  70. SHELL="/bin/bash"
  71. define Build/InstallDev
  72. ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
  73. . \
  74. ) | ( cd $(1); $(TAR) -xf - )
  75. endef
  76. define Host/Install
  77. # When ruby version is updated, make install asks in some cases before replace
  78. # an existing different file. Remove them before install and avoid the interaction
  79. rm -f $(STAGING_DIR_HOSTPKG)/bin/rake
  80. $(call Host/Install/Default)
  81. endef
  82. define Package/ruby/Default
  83. SUBMENU:=Ruby
  84. SECTION:=lang
  85. CATEGORY:=Languages
  86. TITLE:=Ruby scripting language
  87. URL:=http://www.ruby-lang.org/
  88. endef
  89. define Package/ruby/Default/description
  90. Ruby is the interpreted scripting language for quick and easy
  91. object-oriented programming. It has many features to process text files
  92. and to do system management tasks (as in perl). It is simple,
  93. straight-forward, and extensible.
  94. endef
  95. define Package/ruby
  96. $(call Package/ruby/Default)
  97. TITLE+= (interpreter)
  98. DEPENDS:=+libruby
  99. endef
  100. define Package/ruby/description
  101. $(call Package/ruby/Default/description)
  102. endef
  103. define RubyDependency
  104. $(eval \
  105. $(call Package/Default)
  106. $(call Package/ruby-$(1))
  107. FILTER_CONFIG:=$$(strip \
  108. $$(foreach config_dep, \
  109. $$(filter @%, \
  110. $$(foreach v, \
  111. $$(DEPENDS), \
  112. $$(if $$(findstring :,$$v),,$$v) \
  113. ) \
  114. ), \
  115. $$(subst @,,$$(config_dep)) \
  116. ) \
  117. )
  118. ifneq (,$$(FILTER_CONFIG))
  119. FILTER_CONFIG:=($$(subst $$(space),&&,$$(FILTER_CONFIG))):
  120. endif
  121. ) \
  122. +$(FILTER_CONFIG)ruby-$(1)
  123. endef
  124. define Package/ruby/config
  125. comment "Standard Library"
  126. depends on PACKAGE_ruby
  127. config PACKAGE_ruby-stdlib
  128. depends on PACKAGE_ruby
  129. default m if ALL
  130. prompt "Select Ruby Complete Standard Library (ruby-stdlib)"
  131. endef
  132. define Package/ruby/install
  133. $(INSTALL_DIR) $(1)/usr/bin
  134. $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_ABI_VERSION)
  135. $(INSTALL_DIR) $(1)/usr/lib/ruby/vendor_ruby/$(PKG_ABI_VERSION)
  136. $(INSTALL_DIR) $(1)/usr/lib/ruby/site_ruby/$(PKG_ABI_VERSION)
  137. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ruby $(1)/usr/lib/ruby/ruby$(PKG_ABI_VERSION)-bin
  138. $(INSTALL_BIN) ./files/ruby $(1)/usr/bin/ruby
  139. $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/vendor_ruby/$(PKG_ABI_VERSION)/* $(1)/usr/lib/ruby/vendor_ruby/$(PKG_ABI_VERSION)/
  140. $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/site_ruby/$(PKG_ABI_VERSION)/* $(1)/usr/lib/ruby/site_ruby/$(PKG_ABI_VERSION)/
  141. $(SED) "s%@RUBY_LIBPATH@%/usr/lib/ruby/$(PKG_ABI_VERSION)%" $(1)/usr/bin/ruby
  142. $(SED) "s%@RUBY_BINPATH@%/usr/lib/ruby/ruby$(PKG_ABI_VERSION)-bin%" $(1)/usr/bin/ruby
  143. endef
  144. define Package/libruby
  145. $(call Package/ruby/Default)
  146. SUBMENU:=
  147. SECTION:=libs
  148. CATEGORY:=Libraries
  149. TITLE+= (shared library)
  150. DEPENDS+= +libpthread +librt +libgmp
  151. ABI_VERSION:=$(PKG_ABI_VERSION)
  152. endef
  153. define Package/libruby/install
  154. $(INSTALL_DIR) $(1)/usr/lib
  155. $(CP) $(PKG_INSTALL_DIR)/usr/lib/libruby.so.* $(1)/usr/lib/
  156. endef
  157. RUBY_STDLIB :=
  158. define Package/ruby-stdlib
  159. $(call Package/ruby/Default)
  160. TITLE:=Ruby standard libraries (metadata for all stdlib subsets)
  161. DEPENDS:=ruby $(foreach subpackage,$(RUBY_STDLIB),$(strip $(call RubyDependency,$(subpackage))))
  162. HIDDEN:=1
  163. endef
  164. define Package/ruby-stdlib/description
  165. This metapackage currently install all ruby-* packages,
  166. providing a complete Ruby Standard Library.
  167. endef
  168. # nothing to do
  169. define Package/ruby-stdlib/install
  170. /bin/true
  171. endef
  172. define Package/ruby-bigdecimal/files
  173. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/bigdecimal.so
  174. /usr/lib/ruby/$(PKG_ABI_VERSION)/bigdecimal/
  175. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/bigdecimal-*.gemspec
  176. endef
  177. define Package/ruby-cgi/files
  178. /usr/lib/ruby/$(PKG_ABI_VERSION)/cgi
  179. /usr/lib/ruby/$(PKG_ABI_VERSION)/cgi.rb
  180. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/cgi/escape.so
  181. endef
  182. define Package/ruby-cmath/files
  183. /usr/lib/ruby/$(PKG_ABI_VERSION)/cmath.rb
  184. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/cmath-*.gemspec
  185. endef
  186. define Package/ruby-csv/files
  187. /usr/lib/ruby/$(PKG_ABI_VERSION)/csv.rb
  188. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/csv-*.gemspec
  189. endef
  190. define Package/ruby-date/files
  191. /usr/lib/ruby/$(PKG_ABI_VERSION)/date.rb
  192. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/date_core.so
  193. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/date-*.gemspec
  194. endef
  195. define Package/ruby-dbm/description
  196. The DBM class provides a wrapper to a Unix-style dbm or Database Manager library.
  197. This package provides dbm.so file.
  198. endef
  199. define Package/ruby-dbm/files
  200. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/dbm.so
  201. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/dbm-*.gemspec
  202. endef
  203. define Package/ruby-debuglib/files
  204. /usr/lib/ruby/$(PKG_ABI_VERSION)/profile.rb
  205. /usr/lib/ruby/$(PKG_ABI_VERSION)/profiler.rb
  206. /usr/lib/ruby/$(PKG_ABI_VERSION)/debug.rb
  207. /usr/lib/ruby/$(PKG_ABI_VERSION)/tracer.rb
  208. /usr/lib/ruby/$(PKG_ABI_VERSION)/benchmark.rb
  209. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/objspace.so
  210. endef
  211. define Package/ruby-did-you-mean/files
  212. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/did_you_mean-*.gemspec
  213. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/
  214. endef
  215. define Package/ruby-did-you-mean/files-excluded
  216. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/benchmark
  217. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/doc
  218. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/evaluation
  219. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/test
  220. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/*.md
  221. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/*.txt
  222. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/did_you_mean-*/.travis.yml
  223. endef
  224. define Package/ruby-digest/description
  225. Provides digest* files. Can be configured to use OpenSSL or
  226. bundled hash functions.
  227. endef
  228. define Package/ruby-digest/config
  229. config RUBY_DIGEST_USE_OPENSSL
  230. bool "Use OpenSSL functions for ruby digest hash functions"
  231. depends on PACKAGE_ruby-digest
  232. help
  233. Ruby can use OpenSSL hash functions or compile alternative implementations. Using
  234. OpenSSL saves about 30KBytes (less when compressed) but requires OpenSSL (that
  235. is way bigger than that). However, if OpenSSL is already needed by another usage,
  236. as ruby-openssl or any other non ruby package, it is better to mark this option.
  237. default n
  238. endef
  239. define Package/ruby-digest/files
  240. /usr/lib/ruby/$(PKG_ABI_VERSION)/digest
  241. /usr/lib/ruby/$(PKG_ABI_VERSION)/digest.rb
  242. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/digest.so
  243. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/digest/*
  244. endef
  245. define Package/ruby-drb/files
  246. /usr/lib/ruby/$(PKG_ABI_VERSION)/drb.rb
  247. /usr/lib/ruby/$(PKG_ABI_VERSION)/drb
  248. endef
  249. define Package/ruby-enc/files
  250. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/enc/encdb.so
  251. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/enc/iso_8859_1.so
  252. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/enc/utf_*.so
  253. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/enc/euc_jp.so
  254. endef
  255. define Package/ruby-enc-extra/files
  256. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/enc
  257. endef
  258. define Package/ruby-enc-extra/files-excluded
  259. $(call Package/ruby-enc/files)
  260. endef
  261. define Package/ruby-erb/files
  262. /usr/bin/erb
  263. /usr/lib/ruby/$(PKG_ABI_VERSION)/erb.rb
  264. endef
  265. define Package/ruby-etc/files
  266. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/etc.so
  267. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/etc-*.gemspec
  268. endef
  269. define Package/ruby-fcntl/files
  270. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/fcntl.so
  271. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/fcntl-*.gemspec
  272. endef
  273. define Package/ruby-fiddle/files
  274. /usr/lib/ruby/$(PKG_ABI_VERSION)/fiddle.rb
  275. /usr/lib/ruby/$(PKG_ABI_VERSION)/fiddle/
  276. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/fiddle.so
  277. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/fiddle-*.gemspec
  278. endef
  279. define Package/ruby-filelib/files
  280. /usr/lib/ruby/$(PKG_ABI_VERSION)/tmpdir.rb
  281. /usr/lib/ruby/$(PKG_ABI_VERSION)/tempfile.rb
  282. /usr/lib/ruby/$(PKG_ABI_VERSION)/pathname.rb
  283. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/pathname.so
  284. /usr/lib/ruby/$(PKG_ABI_VERSION)/find.rb
  285. endef
  286. define Package/ruby-fileutils/files
  287. /usr/lib/ruby/$(PKG_ABI_VERSION)/fileutils.rb
  288. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/fileutils-*.gemspec
  289. endef
  290. define Package/ruby-gdbm/files
  291. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/gdbm.so
  292. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/gdbm-*.gemspec
  293. endef
  294. define Package/ruby-gems/files
  295. /usr/lib/ruby/$(PKG_ABI_VERSION)/rubygems.rb
  296. /usr/lib/ruby/$(PKG_ABI_VERSION)/rubygems
  297. endef
  298. define Package/ruby-gems/files-excluded
  299. /usr/lib/ruby/$(PKG_ABI_VERSION)/rubygems/test_case.rb
  300. /usr/lib/ruby/$(PKG_ABI_VERSION)/rubygems/package/tar_test_case.rb
  301. /usr/lib/ruby/$(PKG_ABI_VERSION)/rubygems/installer_test_case.rb
  302. endef
  303. define Package/ruby-gems/install
  304. $(INSTALL_DIR) $(1)/usr/bin
  305. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gem $(1)/usr/bin/
  306. $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default
  307. $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems
  308. $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_ABI_VERSION)/doc
  309. $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_ABI_VERSION)/cache
  310. $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_ABI_VERSION)/extensions
  311. $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_ABI_VERSION)/build_info
  312. $(call RubyBuildPackage/install,gems,$(1))
  313. endef
  314. define Package/ruby-io-console/files
  315. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/io/console.so
  316. /usr/lib/ruby/$(PKG_ABI_VERSION)/io/console/
  317. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/io-console-*.gemspec
  318. endef
  319. define Package/ruby-ipaddr/files
  320. /usr/lib/ruby/$(PKG_ABI_VERSION)/ipaddr.rb
  321. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/ipaddr-*.gemspec
  322. endef
  323. define Package/ruby-irb/files
  324. /usr/lib/ruby/$(PKG_ABI_VERSION)/irb
  325. /usr/lib/ruby/$(PKG_ABI_VERSION)/irb.rb
  326. endef
  327. define Package/ruby-irb/install
  328. $(INSTALL_DIR) $(1)/usr/bin
  329. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/irb $(1)/usr/bin/
  330. $(call RubyBuildPackage/install,irb,$(1))
  331. endef
  332. define Package/ruby-json/files
  333. /usr/lib/ruby/$(PKG_ABI_VERSION)/json.rb
  334. /usr/lib/ruby/$(PKG_ABI_VERSION)/json
  335. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/json
  336. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/json-*.gemspec
  337. endef
  338. define Package/ruby-json/files-excluded
  339. $(call Package/ruby-psych/files)
  340. endef
  341. define Package/ruby-logger/files
  342. /usr/lib/ruby/$(PKG_ABI_VERSION)/logger.rb
  343. /usr/lib/ruby/$(PKG_ABI_VERSION)/syslog/logger.rb
  344. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/syslog.so
  345. endef
  346. define Package/ruby-math/files
  347. /usr/lib/ruby/$(PKG_ABI_VERSION)/prime.rb
  348. /usr/lib/ruby/$(PKG_ABI_VERSION)/matrix.rb
  349. /usr/lib/ruby/$(PKG_ABI_VERSION)/matrix
  350. endef
  351. define Package/ruby-minitest/files
  352. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/minitest-*.gemspec
  353. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/minitest-*
  354. endef
  355. define Package/ruby-minitest/files-excluded
  356. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/minitest-*/test
  357. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/minitest-*/*.rdoc
  358. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/minitest-*/*.txt
  359. endef
  360. define Package/ruby-misc/files
  361. /usr/lib/ruby/$(PKG_ABI_VERSION)/English.rb
  362. /usr/lib/ruby/$(PKG_ABI_VERSION)/abbrev.rb
  363. /usr/lib/ruby/$(PKG_ABI_VERSION)/base64.rb
  364. /usr/lib/ruby/$(PKG_ABI_VERSION)/delegate.rb
  365. /usr/lib/ruby/$(PKG_ABI_VERSION)/e2mmap.rb
  366. /usr/lib/ruby/$(PKG_ABI_VERSION)/expect.rb
  367. /usr/lib/ruby/$(PKG_ABI_VERSION)/getoptlong.rb
  368. /usr/lib/ruby/$(PKG_ABI_VERSION)/open3.rb
  369. /usr/lib/ruby/$(PKG_ABI_VERSION)/ostruct.rb
  370. /usr/lib/ruby/$(PKG_ABI_VERSION)/securerandom.rb
  371. /usr/lib/ruby/$(PKG_ABI_VERSION)/set.rb
  372. /usr/lib/ruby/$(PKG_ABI_VERSION)/shellwords.rb
  373. /usr/lib/ruby/$(PKG_ABI_VERSION)/tsort.rb
  374. /usr/lib/ruby/$(PKG_ABI_VERSION)/weakref.rb
  375. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/continuation.so
  376. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/coverage.so
  377. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/fiber.so
  378. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/pty.so
  379. endef
  380. define Package/ruby-mkmf/files
  381. /usr/lib/ruby/$(PKG_ABI_VERSION)/mkmf.rb
  382. /usr/lib/ruby/$(PKG_ABI_VERSION)/un.rb
  383. endef
  384. define Package/ruby-multithread/files
  385. /usr/lib/ruby/$(PKG_ABI_VERSION)/monitor.rb
  386. /usr/lib/ruby/$(PKG_ABI_VERSION)/timeout.rb
  387. /usr/lib/ruby/$(PKG_ABI_VERSION)/thwait.rb
  388. /usr/lib/ruby/$(PKG_ABI_VERSION)/mutex_m.rb
  389. /usr/lib/ruby/$(PKG_ABI_VERSION)/sync.rb
  390. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/io/wait.so
  391. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/io/nonblock.so
  392. endef
  393. define Package/ruby-net/files
  394. /usr/lib/ruby/$(PKG_ABI_VERSION)/open-uri.rb
  395. /usr/lib/ruby/$(PKG_ABI_VERSION)/net/*
  396. endef
  397. define Package/ruby-net-telnet/files
  398. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/net-telnet-*.gemspec
  399. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/net-telnet-*/
  400. endef
  401. define Package/ruby-net-telnet/files-excluded
  402. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/net-telnet-*/*.md
  403. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/net-telnet-*/*.txt
  404. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/net-telnet-*/.travis.yml
  405. endef
  406. define Package/ruby-nkf/files
  407. /usr/lib/ruby/$(PKG_ABI_VERSION)/kconv.rb
  408. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/nkf.so
  409. endef
  410. define Package/ruby-openssl/files
  411. /usr/lib/ruby/$(PKG_ABI_VERSION)/openssl
  412. /usr/lib/ruby/$(PKG_ABI_VERSION)/openssl.rb
  413. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/openssl.so
  414. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/openssl-*.gemspec
  415. endef
  416. define Package/ruby-optparse/files
  417. /usr/lib/ruby/$(PKG_ABI_VERSION)/optparse.rb
  418. /usr/lib/ruby/$(PKG_ABI_VERSION)/optionparser.rb
  419. /usr/lib/ruby/$(PKG_ABI_VERSION)/optparse
  420. endef
  421. define Package/ruby-patterns/files
  422. /usr/lib/ruby/$(PKG_ABI_VERSION)/observer.rb
  423. /usr/lib/ruby/$(PKG_ABI_VERSION)/singleton.rb
  424. /usr/lib/ruby/$(PKG_ABI_VERSION)/forwardable.rb
  425. /usr/lib/ruby/$(PKG_ABI_VERSION)/forwardable
  426. endef
  427. define Package/ruby-powerassert/files
  428. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/power_assert-*.gemspec
  429. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/power_assert-*
  430. endef
  431. define Package/ruby-powerassert/files-excluded
  432. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/power_assert-*/*.rdoc
  433. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/power_assert-*/.travis.yml
  434. endef
  435. define Package/ruby-prettyprint/files
  436. /usr/lib/ruby/$(PKG_ABI_VERSION)/pp.rb
  437. /usr/lib/ruby/$(PKG_ABI_VERSION)/prettyprint.rb
  438. endef
  439. define Package/ruby-pstore/files
  440. /usr/lib/ruby/$(PKG_ABI_VERSION)/pstore.rb
  441. endef
  442. define Package/ruby-psych/files
  443. /usr/lib/ruby/$(PKG_ABI_VERSION)/psych
  444. /usr/lib/ruby/$(PKG_ABI_VERSION)/psych.rb
  445. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/psych.so
  446. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/psych-*.gemspec
  447. endef
  448. define Package/ruby-racc/files
  449. /usr/lib/ruby/$(PKG_ABI_VERSION)/racc
  450. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/racc/*.so
  451. endef
  452. define Package/ruby-rake/files
  453. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/rake-*.gemspec
  454. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/rake-*/
  455. endef
  456. define Package/ruby-rake/files-excluded
  457. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/rake-*/doc
  458. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/rake-*/*.rdoc
  459. endef
  460. define Package/ruby-rake/install
  461. $(INSTALL_DIR) $(1)/usr/bin
  462. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rake $(1)/usr/bin/;
  463. $(call RubyBuildPackage/install,rake,$(1))
  464. endef
  465. define Package/ruby-rbconfig/files
  466. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/rbconfig.rb
  467. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/rbconfig/*.so
  468. endef
  469. define Package/ruby-rdoc/files
  470. /usr/lib/ruby/$(PKG_ABI_VERSION)/rdoc.rb
  471. /usr/lib/ruby/$(PKG_ABI_VERSION)/rdoc
  472. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/rdoc-*
  473. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/rdoc-*.gemspec
  474. endef
  475. define Package/ruby-rdoc/files-excluded
  476. /usr/lib/ruby/$(PKG_ABI_VERSION)/rdoc/test_case.rb
  477. /usr/lib/ruby/$(PKG_ABI_VERSION)/rdoc/markup/formatter_test_case.rb
  478. /usr/lib/ruby/$(PKG_ABI_VERSION)/rdoc/markup/text_formatter_test_case.rb
  479. endef
  480. define Package/ruby-rdoc/install
  481. $(INSTALL_DIR) $(1)/usr/bin
  482. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rdoc $(1)/usr/bin/
  483. $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ri $(1)/usr/bin/
  484. $(call RubyBuildPackage/install,rdoc,$(1))
  485. endef
  486. define Package/ruby-readline/files
  487. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/readline.so
  488. endef
  489. define Package/ruby-rexml/files
  490. /usr/lib/ruby/$(PKG_ABI_VERSION)/rexml
  491. endef
  492. define Package/ruby-rinda/files
  493. /usr/lib/ruby/$(PKG_ABI_VERSION)/rinda
  494. endef
  495. define Package/ruby-ripper/files
  496. /usr/lib/ruby/$(PKG_ABI_VERSION)/ripper.rb
  497. /usr/lib/ruby/$(PKG_ABI_VERSION)/ripper
  498. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/ripper.so
  499. endef
  500. define Package/ruby-rss/files
  501. /usr/lib/ruby/$(PKG_ABI_VERSION)/rss
  502. /usr/lib/ruby/$(PKG_ABI_VERSION)/rss.rb
  503. endef
  504. define Package/ruby-scanf/files
  505. /usr/lib/ruby/$(PKG_ABI_VERSION)/scanf.rb
  506. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/scanf-*.gemspec
  507. endef
  508. define Package/ruby-sdbm/files
  509. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/sdbm.so
  510. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/sdbm-*.gemspec
  511. endef
  512. define Package/ruby-shell/files
  513. /usr/lib/ruby/$(PKG_ABI_VERSION)/shell.rb
  514. /usr/lib/ruby/$(PKG_ABI_VERSION)/shell
  515. endef
  516. define Package/ruby-socket/files
  517. /usr/lib/ruby/$(PKG_ABI_VERSION)/resolv-replace.rb
  518. /usr/lib/ruby/$(PKG_ABI_VERSION)/resolv.rb
  519. /usr/lib/ruby/$(PKG_ABI_VERSION)/socket.rb
  520. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/socket.so
  521. endef
  522. define Package/ruby-stringio/files
  523. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/stringio.so
  524. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/stringio-*.gemspec
  525. endef
  526. define Package/ruby-strscan/files
  527. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/strscan.so
  528. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/strscan-*.gemspec
  529. endef
  530. define Package/ruby-testunit/files
  531. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/test-unit-*.gemspec
  532. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/test-unit-*
  533. endef
  534. define Package/ruby-testunit/files-excluded
  535. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/test-unit-*/doc
  536. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/test-unit-*/test
  537. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/test-unit-*/sample
  538. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/test-unit-*/*.md
  539. endef
  540. define Package/ruby-time/files
  541. /usr/lib/ruby/$(PKG_ABI_VERSION)/time.rb
  542. endef
  543. define Package/ruby-unicodenormalize/files
  544. /usr/lib/ruby/$(PKG_ABI_VERSION)/unicode_normalize
  545. endef
  546. define Package/ruby-uri/files
  547. /usr/lib/ruby/$(PKG_ABI_VERSION)/uri.rb
  548. /usr/lib/ruby/$(PKG_ABI_VERSION)/uri
  549. endef
  550. define Package/ruby-webrick/files
  551. /usr/lib/ruby/$(PKG_ABI_VERSION)/webrick
  552. /usr/lib/ruby/$(PKG_ABI_VERSION)/webrick.rb
  553. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/webrick-*.gemspec
  554. endef
  555. define Package/ruby-xmlrpc/files
  556. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/xmlrpc-*
  557. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/xmlrpc-*.gemspec
  558. endef
  559. define Package/ruby-xmlrpc/files-excluded
  560. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/xmlrpc-*/*.md
  561. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/xmlrpc-*/*.txt
  562. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/gems/xmlrpc-*/.travis.yml
  563. endef
  564. define Package/ruby-yaml/files
  565. /usr/lib/ruby/$(PKG_ABI_VERSION)/yaml
  566. /usr/lib/ruby/$(PKG_ABI_VERSION)/yaml.rb
  567. endef
  568. define Package/ruby-zlib/files
  569. /usr/lib/ruby/$(PKG_ABI_VERSION)/*/zlib.so
  570. /usr/lib/ruby/gems/$(PKG_ABI_VERSION)/specifications/default/zlib-*.gemspec
  571. endef
  572. RUBY_FILES = $(strip $(call Package/ruby-$(1)/files))
  573. RUBY_FILES_EXCLUDED = $(strip $(call Package/ruby-$(1)/files-excluded))
  574. # 1: short name
  575. # 2: install dir
  576. define RubyBuildPackage/install
  577. ( \
  578. cd $(PKG_INSTALL_DIR) && \
  579. $(TAR) -cf - \
  580. $(if $(RUBY_FILES_EXCLUDED),--exclude-from <(ls -1d $(patsubst /%,%,$(RUBY_FILES_EXCLUDED)))) \
  581. --files-from <(ls -1d $(patsubst /%,%,$(RUBY_FILES))) \
  582. ) | ( \
  583. [ -n "$(2)" ] && cd $(2) && $(TAR) -xf - \
  584. )
  585. endef
  586. # 1: short name
  587. # 2: description
  588. # 3: dependencies on other packages
  589. define RubyBuildPackage
  590. RUBY_STDLIB += $(1)
  591. # Package definition
  592. ifndef Package/ruby-$(1)
  593. define Package/ruby-$(1)
  594. $(call Package/ruby/Default)
  595. TITLE:=Ruby $(2)
  596. DEPENDS:=ruby $(3)
  597. endef
  598. endif
  599. ifndef Package/ruby-$(1)/description
  600. define Package/ruby-$(1)/description
  601. This package contains the ruby $(2).
  602. endef
  603. endif
  604. # Description
  605. ifndef Package/ruby-$(1)/install
  606. ifndef Package/ruby-$(1)/files
  607. $$(error It must exists either a Package/ruby-$(1)/install or Package/ruby-$(1)/files)
  608. endif
  609. define Package/ruby-$(1)/description +=
  610. Provides:
  611. $(patsubst /%,
  612. - /%,$(RUBY_FILES))
  613. endef
  614. ifneq ($(RUBY_FILES_EXCLUDED),)
  615. define Package/ruby-$(1)/description +=
  616. Except:
  617. $(patsubst /%,
  618. - /%,$(RUBY_FILES_EXCLUDED))
  619. endef
  620. endif
  621. Package/ruby-$(1)/install=$(call RubyBuildPackage/install,$(1),$$(1))
  622. endif
  623. $$(eval $$(call BuildPackage,ruby-$(1)))
  624. endef
  625. $(eval $(call BuildPackage,libruby))
  626. $(eval $(call BuildPackage,ruby))
  627. $(eval $(call RubyBuildPackage,bigdecimal,Arbitrary-precision decimal floating-point library,))
  628. $(eval $(call RubyBuildPackage,cgi,CGI support toolkit,+ruby-filelib +ruby-pstore +ruby-stringio))
  629. $(eval $(call RubyBuildPackage,cmath,Trigonometric and transcendental functions for complex numbers,))
  630. $(eval $(call RubyBuildPackage,csv,CSV Reading and Writing,+ruby-date +ruby-enc +ruby-misc +ruby-patterns +ruby-stringio))
  631. $(eval $(call RubyBuildPackage,date,Comparable module for handling dates,))
  632. $(eval $(call RubyBuildPackage,dbm,Wrapper for the UNIX-style Database Manager Library,+libdb47))
  633. $(eval $(call RubyBuildPackage,debuglib,debug library,+ruby-misc +ruby-prettyprint))
  634. $(eval $(call RubyBuildPackage,did-you-mean,did you mean? experience,+ruby-misc))
  635. $(eval $(call RubyBuildPackage,digest,Digest Library,+RUBY_DIGEST_USE_OPENSSL:libopenssl))
  636. $(eval $(call RubyBuildPackage,drb,distributed object system,+ruby-filelib +ruby-ipaddr +ruby-patterns))
  637. $(eval $(call RubyBuildPackage,enc,character re-coding library charset (small subset),))
  638. $(eval $(call RubyBuildPackage,enc-extra,character re-coding library charset (extra subset),+ruby-enc))
  639. $(eval $(call RubyBuildPackage,erb,(embedded interpreter),+ruby-cgi +ruby-strscan))
  640. $(eval $(call RubyBuildPackage,etc,Access to information typically stored in UNIX /etc directory,))
  641. $(eval $(call RubyBuildPackage,fcntl,Loads constants defined in the OS fcntl.h C header file,))
  642. $(eval $(call RubyBuildPackage,fiddle,Libffi wrapper for Ruby,+libffi))
  643. $(eval $(call RubyBuildPackage,filelib,file utils library,+ruby-fileutils +ruby-misc))
  644. $(eval $(call RubyBuildPackage,fileutils,File utility methods for copying moving removing etc,+ruby-enc +ruby-etc))
  645. $(eval $(call RubyBuildPackage,gdbm,Ruby extension for GNU dbm,+libgdbm))
  646. $(eval $(call RubyBuildPackage,gems,gems packet management,+ruby-net +ruby-rdoc))
  647. $(eval $(call RubyBuildPackage,io-console,Console interface,))
  648. $(eval $(call RubyBuildPackage,ipaddr,Set of methods to manipulate an IP address,+ruby-socket))
  649. $(eval $(call RubyBuildPackage,irb,(interactive shell),+ruby-debuglib +ruby-filelib))
  650. $(eval $(call RubyBuildPackage,json,JSON Implementation for Ruby,+ruby-date +ruby-misc))
  651. $(eval $(call RubyBuildPackage,logger,logger and syslog library,+ruby-multithread))
  652. $(eval $(call RubyBuildPackage,math,math library,+ruby-patterns +ruby-misc))
  653. $(eval $(call RubyBuildPackage,minitest,Gem minitest,+ruby-gems))
  654. $(eval $(call RubyBuildPackage,misc,standard libraries subset (miscellaneous files),))
  655. $(eval $(call RubyBuildPackage,mkmf,makefile library,+ruby-filelib +ruby-optparse +ruby-rbconfig))
  656. $(eval $(call RubyBuildPackage,multithread,multithread library,+ruby-misc))
  657. $(eval $(call RubyBuildPackage,net,Network Protocols Library,+ruby-time +ruby-digest +ruby-filelib +ruby-socket +ruby-stringio +ruby-strscan +ruby-uri))
  658. $(eval $(call RubyBuildPackage,net-telnet,telnet client,+ruby-net))
  659. $(eval $(call RubyBuildPackage,nkf,Network Kanji Filter,+ruby-enc))
  660. $(eval $(call RubyBuildPackage,openssl,SSL TLS and general purpose cryptography,+ruby-enc +ruby-multithread +ruby-stringio +libopenssl))
  661. $(eval $(call RubyBuildPackage,optparse,command-line option analysis,+ruby-misc +ruby-time))
  662. $(eval $(call RubyBuildPackage,patterns,design patterns implementation,))
  663. $(eval $(call RubyBuildPackage,powerassert,Gem power_assert,+ruby-prettyprint +ruby-ripper))
  664. $(eval $(call RubyBuildPackage,prettyprint,PrettyPrint library,+ruby-etc))
  665. $(eval $(call RubyBuildPackage,pstore,file based persistence,+ruby-digest +ruby-enc))
  666. $(eval $(call RubyBuildPackage,psych,YAML parser and emitter,+ruby-bigdecimal +ruby-date +ruby-enc +ruby-stringio +ruby-strscan +libyaml))
  667. $(eval $(call RubyBuildPackage,racc,LALR parser generator,))
  668. $(eval $(call RubyBuildPackage,rake,Rake (make replacement),+ruby-fileutils +ruby-multithread +ruby-optparse +ruby-patterns +ruby-rbconfig))
  669. $(eval $(call RubyBuildPackage,rbconfig,RbConfig,))
  670. $(eval $(call RubyBuildPackage,rdoc,RDoc produces HTML and command-line documentation for Ruby projects,+ruby-debuglib +ruby-did-you-mean +ruby-erb +ruby-json +ruby-racc +ruby-rake +ruby-ripper +ruby-yaml +ruby-zlib))
  671. $(eval $(call RubyBuildPackage,readline,support for readline,+libncurses +libreadline))
  672. $(eval $(call RubyBuildPackage,rexml,XML toolkit,+ruby-enc +ruby-misc +ruby-patterns +ruby-stringio))
  673. $(eval $(call RubyBuildPackage,rinda,Linda paradigm implementation,+ruby-drb))
  674. $(eval $(call RubyBuildPackage,ripper,script parser,))
  675. $(eval $(call RubyBuildPackage,rss,RSS toolkit,+ruby-net +ruby-nkf +ruby-rexml))
  676. $(eval $(call RubyBuildPackage,scanf,Implementation of the C function scanf(3),))
  677. $(eval $(call RubyBuildPackage,sdbm,simple file-based key-value dbm implementation,))
  678. $(eval $(call RubyBuildPackage,shell,idiomatic Ruby interface,+ruby-patterns +ruby-multithread))
  679. $(eval $(call RubyBuildPackage,socket,socket support,+ruby-multithread))
  680. $(eval $(call RubyBuildPackage,stringio,Pseudo `IO` class from/to `String`,))
  681. $(eval $(call RubyBuildPackage,strscan,Lexical scanning operations on a String,))
  682. $(eval $(call RubyBuildPackage,testunit,Gem test-unit,+ruby-csv +ruby-erb +ruby-optparse +ruby-powerassert +ruby-rexml +ruby-yaml))
  683. $(eval $(call RubyBuildPackage,time,Extends Time with additional methods for parsing and converting Times,+ruby-date))
  684. $(eval $(call RubyBuildPackage,unicodenormalize,String additions for Unicode normalization,+ruby-enc +ruby-enc-extra))
  685. $(eval $(call RubyBuildPackage,uri,library to handle URI,+ruby-enc))
  686. $(eval $(call RubyBuildPackage,webrick,HTTP server toolkit,+ruby-erb +ruby-net +ruby-patterns +ruby-rbconfig))
  687. $(eval $(call RubyBuildPackage,xmlrpc,XML-RPC toolkit,+ruby-rexml +ruby-webrick))
  688. $(eval $(call RubyBuildPackage,yaml,YAML toolkit,+ruby-dbm +ruby-pstore +ruby-psych))
  689. $(eval $(call RubyBuildPackage,zlib,compression/decompression library interface,+zlib))
  690. $(eval $(call BuildPackage,ruby-stdlib))
  691. $(eval $(call HostBuild))