forked from Lainports/freebsd-ports
Since ruby detects this if it's installed, and it's more often installed now due to other deps, and ruby provides no way to not depend on it if it's found, pull it in as a dependency unconditionally. While here, fix plist for ruby 2.4 with the CAPIDOCS option on, and restore the MAKE_JOBS_UNSAFE flag when using that build option since it's not fixed like I thought it was. PR: 219796 Reported by: Grzegorz Junka <list1@gjunka.com>
219 lines
6.4 KiB
Makefile
219 lines
6.4 KiB
Makefile
# Created by: Akinori MUSHA aka knu <knu@idaemons.org>
|
|
# $FreeBSD$
|
|
|
|
PORTNAME= ruby
|
|
PORTVERSION= ${RUBY_PORTVERSION}
|
|
PORTREVISION= ${RUBY_PORTREVISION}
|
|
PORTEPOCH= ${RUBY_PORTEPOCH}
|
|
CATEGORIES= lang ruby ipv6
|
|
MASTER_SITES= RUBY/${MASTER_SITE_SUBDIR_RUBY}
|
|
DISTNAME= ${RUBY_DISTNAME}
|
|
DIST_SUBDIR= ruby
|
|
|
|
MAINTAINER= ruby@FreeBSD.org
|
|
COMMENT= Object-oriented interpreted scripting language
|
|
|
|
LICENSE= BSD2CLAUSE RUBY
|
|
LICENSE_COMB= dual
|
|
LICENSE_FILE_BSD2CLAUSE=${WRKSRC}/BSDL
|
|
LICENSE_FILE_RUBY= ${WRKSRC}/COPYING
|
|
|
|
# Using LIB_DEPENDS finds the libffi from gcc which causes problems
|
|
BUILD_DEPENDS= libffi>=0:devel/libffi
|
|
LIB_DEPENDS= libyaml.so:textproc/libyaml
|
|
RUN_DEPENDS= libffi>=0:devel/libffi
|
|
|
|
CONFIGURE_ARGS= ${RUBY_CONFIGURE_ARGS} \
|
|
--disable-rpath \
|
|
--enable-pthread \
|
|
--enable-shared \
|
|
--enable-install-static-library \
|
|
--with-ruby-version=minor \
|
|
--with-sitedir="${PREFIX}/lib/ruby/site_ruby" \
|
|
--with-vendordir="${PREFIX}/lib/ruby/vendor_ruby"
|
|
CONFIGURE_ENV= debugflags=
|
|
CPPFLAGS+= -I${LOCALBASE}/include
|
|
GNU_CONFIGURE= yes
|
|
# Keep this, else ruby will fail to load libraries dependent of libpthread.
|
|
LIBS+= -lpthread -L${LOCALBASE}/lib
|
|
USE_LDCONFIG= yes
|
|
USES= autoreconf cpe execinfo ssl tar:xz
|
|
WRKSRC= ${RUBY_WRKSRC}
|
|
|
|
RUBY_VER= 2.4
|
|
USE_RUBY= yes
|
|
RUBY_NO_BUILD_DEPENDS= yes
|
|
RUBY_NO_RUN_DEPENDS= yes
|
|
|
|
NOT_FOR_ARCHS= ia64
|
|
NOT_FOR_ARCHS_REASON_ia64= does not build
|
|
|
|
OPTIONS_DEFINE= CAPIDOCS DEBUG DOCS EXAMPLES GMP RDOC
|
|
OPTIONS_DEFAULT= RDOC LIBEDIT
|
|
OPTIONS_SINGLE= EDIT
|
|
OPTIONS_SINGLE_EDIT= LIBEDIT READLINE
|
|
OPTIONS_SUB= yes
|
|
CAPIDOCS_DESC= Build and install C API documents
|
|
GMP_DESC= Use GMP to accelerate Bignum operations
|
|
RDOC_DESC= Build and install Rdoc indexes
|
|
EDIT_DESC= Which line editing lib to use
|
|
LIBEDIT_DESC= Use libedit
|
|
READLINE_DESC= Use libreadline
|
|
CAPIDOCS_BUILD_DEPENDS= doxygen>=1.8.13,2:devel/doxygen \
|
|
dot:graphics/graphviz
|
|
CAPIDOCS_CONFIGURE_ENABLE= install-capi
|
|
GMP_CONFIGURE_WITH= gmp
|
|
GMP_LIB_DEPENDS= libgmp.so:math/gmp
|
|
LIBEDIT_CONFIGURE_ON= --enable-libedit --with-libedit-dir=${LOCALBASE}
|
|
LIBEDIT_USES= libedit
|
|
RDOC_CONFIGURE_ENABLE= install-rdoc
|
|
READLINE_CONFIGURE_ON= --disable-libedit --with-readline-dir=${LOCALBASE}
|
|
READLINE_USES= readline:port
|
|
|
|
CPE_VENDOR= ruby-lang
|
|
CPE_VERSION= ${RUBY_RELVERSION}
|
|
CPE_UPDATE= p${RUBY_PATCHLEVEL}
|
|
|
|
.include <bsd.port.pre.mk>
|
|
|
|
# PORTREVISION/PORTEPOCH hack
|
|
|
|
.if ${PORTREVISION} != 0
|
|
_SUF1= _${PORTREVISION}
|
|
.endif
|
|
|
|
.if ${PORTEPOCH} != 0
|
|
_SUF2= ,${PORTEPOCH}
|
|
.endif
|
|
|
|
.if ${OPSYS} == "FreeBSD"
|
|
.if exists(/usr/sbin/dtrace) && (${OSVERSION} > 1100032) && (${ARCH} == "amd64" || ${ARCH} == "i386")
|
|
CONFIGURE_ARGS+=--enable-dtrace
|
|
.else
|
|
CONFIGURE_ARGS+=--disable-dtrace
|
|
.endif
|
|
.endif
|
|
|
|
# keep in sync with all platforms where libunwind is available
|
|
.if (${ARCH} == "amd64" || ${ARCH} == "i386")
|
|
LIB_DEPENDS+= libunwind.so:devel/libunwind
|
|
.endif
|
|
|
|
.if (${ARCH} == "powerpc64" || ${ARCH} == "powerpc")
|
|
USE_GCC= yes
|
|
.endif
|
|
|
|
.if ${ARCH} == "armv6" || ${ARCH} == "armv6hf"
|
|
CONFIGURE_ARGS+=--with-setjmp-type=_setjmp
|
|
CONFIGURE_ENV+= ac_cv_func__setjmp=yes
|
|
.endif
|
|
|
|
.if ${PORT_OPTIONS:MCAPIDOCS}
|
|
MAKE_JOBS_UNSAFE= yes
|
|
.endif
|
|
|
|
.if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
|
|
MLINKS= ${RUBY_NAME}.1 ruby.1
|
|
PLIST_SUB+= IF_DEFAULT=""
|
|
.else
|
|
PKGNAMESUFFIX= ${RUBY_VER:C/\.//}
|
|
PLIST_SUB+= IF_DEFAULT="@comment "
|
|
.endif
|
|
|
|
INSTALLED_SCRIPTS= irb erb rdoc ri ruby
|
|
|
|
EXTSAMPLES= bigdecimal/sample/*.rb
|
|
|
|
EXTDOCS= readline/README \
|
|
ripper/README \
|
|
stringio/README.md \
|
|
syslog/syslog.txt
|
|
|
|
# Macros to change variables in rbconfig.rb
|
|
RB_SET_CONF_VAR=${SH} -c '${REINPLACE_CMD} -E -e "s,(CONFIG\[\"$$0\"\][[:space:]]*=[[:space:]]*)(\(?)(.*)(\)?),\1\2$$1\4," ${WRKSRC}/rbconfig.rb' --
|
|
|
|
post-patch:
|
|
@${FIND} ${WRKSRC}/ -name "*.orig" -delete
|
|
# We get these from other ports
|
|
.for d in bin/rake doc/rake lib/rake test/rake man/rake.1 lib/rake.rb ext/win32ole bin/gem
|
|
@${RM} -r ${BUILD_WRKSRC}/${d}
|
|
.endfor
|
|
# Used by databases/ruby-gdbm port
|
|
@${MV} ${BUILD_WRKSRC}/ext/gdbm ${WRKDIR}/
|
|
|
|
post-build:
|
|
#
|
|
# Hack to allow modules to be installed into separate PREFIX and/or under user
|
|
# privilegies
|
|
#
|
|
@${RB_SET_CONF_VAR} "prefix" "ENV['PREFIX'] || \3"
|
|
@${RB_SET_CONF_VAR} "INSTALL" "'/usr/bin/install -c'"
|
|
@${RB_SET_CONF_VAR} "INSTALL_PROGRAM" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} ${STRIP} -m ${BINMODE}' : '${INSTALL_PROGRAM}'"
|
|
@${RB_SET_CONF_VAR} "INSTALL_SCRIPT" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} -m ${BINMODE}' : '${INSTALL_SCRIPT}'"
|
|
@${RB_SET_CONF_VAR} "INSTALL_DATA" "ENV['RB_USER_INSTALL'] ? '${INSTALL} ${COPY} -m ${SHAREMODE}' : '${INSTALL_DATA}'"
|
|
|
|
post-build-CAPIDOCS-on:
|
|
@${FIND} ${WRKSRC}/doc -type d -empty -delete
|
|
|
|
pre-install:
|
|
${MKDIR} ${STAGEDIR}${RUBY_SITEARCHLIBDIR}
|
|
${MKDIR} ${STAGEDIR}${RUBY_VENDORARCHLIBDIR}
|
|
|
|
pre-install-DOCS-on:
|
|
${MKDIR} ${STAGEDIR}${RUBY_DOCDIR}
|
|
|
|
pre-install-EXAMPLES-on:
|
|
${MKDIR} ${STAGEDIR}${RUBY_EXAMPLESDIR}
|
|
|
|
pre-install-RDOC-on:
|
|
${MKDIR} ${STAGEDIR}${RUBY_RIDIR}
|
|
${MKDIR} ${STAGEDIR}${RUBY_SITERIDIR}
|
|
|
|
post-install:
|
|
#
|
|
# Link just installed "ruby" to "ruby24", etc.
|
|
#
|
|
.if ${RUBY_VER} == ${RUBY_DEFAULT_VER}
|
|
. for FILE in ${INSTALLED_SCRIPTS}
|
|
${LN} -fs ${FILE}${RUBY_SUFFIX} ${STAGEDIR}${PREFIX}/bin/${FILE}
|
|
. endfor
|
|
.endif
|
|
|
|
post-install-DEBUG-off:
|
|
#
|
|
# XXX: hack to strip ruby binary. Ruby uses its own install script that seems
|
|
# bogus to hack.
|
|
#
|
|
.if defined(STRIP) && ${STRIP} == -s
|
|
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${RUBY_NAME}
|
|
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libruby${RUBY_SHLIBVER}.so.${RUBY_SHLIBVER}
|
|
${FIND} ${STAGEDIR}${RUBY_ARCHLIBDIR} -type f -name '*\.so' -exec ${STRIP_CMD} {} \;
|
|
.endif
|
|
|
|
post-install-DOCS-on:
|
|
# Create all dirs required (":u" isn't avaiable in STABLE yet :-()
|
|
${MKDIR} ${EXTDOCS:C|^([^/]+)/.*|\1|:S|^|${STAGEDIR}${RUBY_DOCDIR}/|}
|
|
.for FILE in ${EXTDOCS}
|
|
${INSTALL_DATA} ${WRKSRC}/ext/${FILE} \
|
|
${STAGEDIR}${RUBY_DOCDIR}/${FILE:C|^([^/]+)/.*|\1|}/
|
|
.endfor
|
|
@(cd ${WRKSRC}/doc/ && ${COPYTREE_SHARE} \* ${STAGEDIR}${RUBY_DOCDIR}/)
|
|
${INSTALL_DATA} ${WRKSRC}/COPYING* \
|
|
${WRKSRC}/ChangeLog \
|
|
${WRKSRC}/LEGAL \
|
|
${WRKSRC}/README* \
|
|
${STAGEDIR}${RUBY_DOCDIR}/
|
|
|
|
post-install-EXAMPLES-on:
|
|
# Create all dirs required (":u" isn't avaiable in STABLE yet :-()
|
|
${MKDIR} ${EXTSAMPLES:C|^([^/]+)/.*|\1|:S|^|${STAGEDIR}${RUBY_EXAMPLESDIR}/|}
|
|
.for FILE in ${EXTSAMPLES}
|
|
${INSTALL_DATA} ${WRKSRC}/ext/${FILE} \
|
|
${STAGEDIR}${RUBY_EXAMPLESDIR}/${FILE:C|^([^/]+)/.*|\1|}/
|
|
.endfor
|
|
(cd ${WRKSRC}/sample/ && ${COPYTREE_SHARE} . ${STAGEDIR}${RUBY_EXAMPLESDIR}/)
|
|
|
|
do-test:
|
|
cd ${WRKSRC} && ${MAKE_CMD} test
|
|
|
|
.include <bsd.port.post.mk>
|