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.
Features of Ruby are shown below.
+ Simple Syntax
+ *Normal* Object-Oriented features(ex. class, method calls)
+ *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method)
+ Operator Overloading
+ Exception Handling
+ Iterators and Closures
+ Garbage Collection
+ Dynamic Loading of Object files(on some architecture)
+ Highly Portable(works on many UNIX machines, and on DOS,
Windows, Mac, BeOS etc.)
===> The following configuration options are available for ruby32-3.2.11,1:
CAPIDOCS=off: Build and install C API documents
DEBUG=off: Build with debugging support
DOCS=on: Build and/or install documentation
EXAMPLES=on: Build and/or install examples
GMP=off: Use GMP to accelerate Bignum operations
RDOC=on: Build and install Rdoc indexes
YJIT=off: Enable YJIT (Yet Another Ruby JIT)
====> Which line editing lib to use: you have to select exactly one of them
LIBEDIT=on: Use libedit
READLINE=off: Use libreadline
===> Use 'make config' to modify these settings
Some of the standard commands and libraries are provided as separate
ports for ease of upgrading:
devel/ruby-gems: gem - RubyGems package manager
devel/rubygem-debug: debug - Debugging functionality for Ruby
devel/rubygem-erb: erb - Templating system for Ruby
devel/rubygem-irb: irb - Interactive Ruby
devel/rubygem-minitest: minitest - Complete suite of testing facilities
devel/rubygem-power_assert: power_assert - Power Assert for Ruby
devel/rubygem-rake: rake - Ruby Make
devel/rubygem-rbs: rbs - Language for type signatures for Ruby and standard library definitions
devel/rubygem-rdoc: rdoc - Ruby Documentation System
devel/rubygem-test-unit: test-unit - Unit testing framework for Ruby
devel/rubygem-typeprof: typeprof - Type analysis tool for Ruby code
ftp/rubygem-net-ftp: net-ftp - Support for the File Transfer Protocol
mail/rubygem-net-imap: net-imap - Ruby client api for Internet Message Access Protocol
mail/rubygem-net-pop: net-pop - Ruby client library for POP3
mail/rubygem-net-smtp: net-smtp - Simple Mail Transfer Protocol client library for Ruby
math/rubygem-matrix: matrix - Implementation of Matrix and Vector classes
math/rubygem-prime: prime - Prime numbers and factorization library
sysutils/rubygem-bundler: bundler - Tool that manages gem dependencies for ruby applications
textproc/rubygem-rexml: rexml - XML toolkit for Ruby
www/rubygem-rss: rss - Family of libraries that support various formats of XML "feeds"
Install them as occasion demands.
lang/ruby32: Mark DEPRECATED and set EXPIRATION_DATE
Default version of Ruby has changed to 3.3. And Ruby 3.2 series has
already switch to security fix only phase with the release of
3.2.8. So mark DEPRECATED to encourage user to migrate to newer
version,
History shows that upstream has released the last version of each
series after the planed EoL date. So set EXPIRATION_DATE to
2026-04-30, one month after the day.
Approved by: self (with hat of ruby)
Mk/Uses/ruby.mk: Remove RUBY_WRKSRC
Currently it is only used to set WRKSRC in ruby
ports (lang/ruby3[2-5]). But it is unnecessary to set it explicitly as
default value of WRKSRC is same as that of RUBY_WRKSRC.
lang/ruby3{1,2,3}: Fix build with POSIX-compliant `sh -c`
This chanes nothing in the built package, so bumping PORTREVISION is not
required.
PR: 222872
Reported by: jilles
Tested by: John Hein
Approved by: meta (myself, with ruby hat)
Sponsored by: Cybertrust Japan
lang/ruby32: Fix CPE_STR
RUBY_RELVERSION and RUBY_PATCHLEVEL have been removed in
a1a91e4c937a8664ae4b4bedca114e40c46e3d14.
This commit fixes the CPE_STR.
For example:
- Before:
cpe:2.3:a:ruby-lang:ruby::p::::freebsd14:x64
- After:
cpe:2.3:a:ruby-lang:ruby:3.2.7:p0::::freebsd14:x64
lang/ruby3[1-3]: Update pkg-message
* Remove description about DBM and GDBM libraries. Ruby 3.1 and later
don't distribute them any more.
* Update list of standard commands and libraries that are included in
distribution source archive but provided as separate ports.
lang/ruby3[1-3]: Refine ports
* Skip extracting unnecessary files by setting EXTRACT_AFTER_ARGS
instead of removing them with post-patch target after they are
extracted.
* Use 'USES=localbase' to set path of header and library files.
PR: 278764
Mk/**ruby.mk: Switch from USE_RUBY=yes to USES=ruby
Switch from Mk/bsd.ruby.mk to Mk/Uses/ruby.mk
Notable changes are.
- Mk/bsd.ruby.mk is moved to Mk/Uses/ruby.mk.
- USE_RUBY=yes is replaced with USES=ruby.
- USE_RUBY_EXTCONF is replaced with USES=ruby:extconf.
- USE_RUBY_RDOC is replaced with USES=ruby:rdoc.
- USE_RUBY_SETUP is replaces with USES=ruby:setup.
- RUBY_NO_BUILD_DEPENDS and RUBY_NO_RUN_DEPENDS are replaced with
USES=ruby:{build,none,run}.
- RUBY_REQUIRE isn't used anywhere, so removed.
- USES=gem now implies USES=ruby.
This is mainly the work of yasu@ at https://reviews.freebsd.org/D27863
I have just made some cosmetic changes and ran exp-run to test that the
tree is not in a BROKEN state.
Approved by: portmgr
Differential Revision: https://reviews.freebsd.org/D37925
lang/ruby32: Fix orphaned .timestamp in b49bdb1fe4680488411546540e6f737770a6003b
When both CAPIDOCS and DOCS options are enabled, the following commands are
executed:
1. post-install-CAPIDOCS-on: removed the installed .timestamp (in STAGEDIR).
2. post-install-DOCS-on: copied the generated .timestamp (in capi directory) to
the STAGEDIR again.
Therefore, the installed .timestamp is orphaned.
To fix this, we remove both the generated and installed .timestamp in
post-install-CAPIDOCS-on:.
PR: 267775
Reported by: yasu
lang/ruby32: Fix plist error when both CAPIDOCS and DOCS options are on.
When the both options are on, post-install-DOCS-on target is called
after post-install-CAPIDOCS-on has completed. And in the former files
under ${WRKSRC}/doc/ are copied to ${STAGEDIR}${RUBY_DOCDIR}. This
means files under ${WRKSRC}/doc/capi are copied to
${STAGEDIR}${RUBY_DOCDIR}/capi again. And of course
${WRKSRC}/doc/capi/.timestamp is included in them. As a result, even
though ${STAGEDIR}${RUBY_DOCDIR}/capi/.timestamp is removed in
post-install-CAPIDOCS-on target, it is detected as orphaned file at
check-plist phase. So fix it by adding 3rd argument to
${COPYTREE_SHARE} command so .timestamp is excluded from files to be
copied.
PR: 267775
Approved by: meta (ruby@)
Fixes: b49bdb1fe468 lang/ruby32: Simplify CAPIDOCS handling
lang/ruby{27,30,31,32}: Improve qsort_r() detection.
This change merges the following upstream pull request into the Ruby
interpreter:
https://github.com/ruby/ruby/pull/6332
Adding this patch is no-op right now because we are not using POSIX (GNU)
qsort_r(3) interface yet. It will fix build when the change is applied.
Reviewed by: bapt (portmgr@), sunpoet (ruby@)
PR: ports/266227
MFH: 2022Q3
Differential Revision: https://reviews.freebsd.org/D36492
Remove WWW entries moved into port Makefiles
Commit b7f05445c00f has added WWW entries to port Makefiles based on
WWW: lines in pkg-descr files.
This commit removes the WWW: lines of moved-over URLs from these
pkg-descr files.
Approved by: portmgr (tcberner)
Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.
Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.
There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.
(Only the first 15 lines of the commit message are shown above )
lang/ruby*: add a patch to keep amd64-freebsd* as arch
In preparation for the update of config.guess/config.sub, where
amd64-portbld-freebsd14.0 is reported as x86_64-portbld-freebsd14.0,
Add a patch to keep the arch specific directory on amd64 being named amd64
lang/ruby3[0-2]: Fix build with certain CPUTYPE
When CPUTYPE is set and the CPU supports lzcnt instruction, it fails to
build because x86intrin.h is not included. Fix the test to make it work
on FreeBSD.
PR: 260791
Approved by: ruby (maintainer timeout)