diff --git a/lang/erlang/Makefile b/lang/erlang/Makefile index 42de230a6e49..724dace970df 100644 --- a/lang/erlang/Makefile +++ b/lang/erlang/Makefile @@ -1,228 +1,225 @@ # Created by: ruslan@shevchenko.kiev.ua PORTNAME= erlang DISTVERSIONPREFIX= OTP- -DISTVERSION= 21.3.8.24 -PORTREVISION= 1 +DISTVERSION= 24.0.6 +PORTREVISION= 0 PORTEPOCH= 4 CATEGORIES= lang parallel java DIST_SUBDIR= erlang MAINTAINER= erlang@FreeBSD.org COMMENT= Functional programming language from Ericsson LICENSE= APACHE20 BROKEN_sparc64= Fails to build: error: fp_except undeclared -USES= autoreconf:build compiler:c11 cpe gmake ncurses perl5 +USES= autoreconf:build cpe gmake ncurses perl5 +CPE_VENDOR= erlang +CPE_PRODUCT= erlang/otp USE_GITHUB= nodefault GH_ACCOUNT= erlang:otp,corba GH_PROJECT= otp:otp corba:corba -GH_TAGNAME= 4.5.2:corba +GH_TAGNAME= 5.0.2:corba USE_PERL5= build USE_RC_SUBR= epmd GNU_CONFIGURE= yes -CONFIGURE_ARGS= --enable-smp-support +CONFIGURE_ARGS= --enable-dirty-schedulers \ + --enable-kernel-poll \ + --enable-smp-support \ + --enable-threads +MAKE_ARGS= all -MAKE_JOBS_UNSAFE= yes SUB_FILES= pkg-message SUB_LIST= TOOLS_VSN=${TOOLS_VSN} WRKSRC= ${WRKSRC_otp} ERLANG_LIB= ${PORTNAME} -EI_VSN= 3.11.3.2 -SNMP_VSN= 5.2.12 -TOOLS_VSN= 3.1.0.1 +EI_VSN= 5.0.1 +SNMP_VSN= 5.9.1 +TOOLS_VSN= 3.5 -# On Erlang 22, native code generation does not currently work for all modules -# due to new BEAM instructions not supported by HiPE the native compiler. -# Remove HIPE from OPTIONS_DEFAULT if this is still the case when the port is -# upgraded to such version. - -OPTIONS_DEFINE= CORBA DIRTY DTRACE FOP HIPE JAVA KQUEUE MANPAGES NATIVE \ - ODBC OPENSSL PDF SCTP THREADS WX -OPTIONS_DEFAULT= CORBA DIRTY DTRACE HIPE KQUEUE MANPAGES OPENSSL SCTP \ - THREADS +OPTIONS_DEFINE= CHUNKS CORBA DIRTY DTRACE FOP JAVA KQUEUE MANPAGES ODBC \ + OPENSSL PDF SCTP SHARING WX +OPTIONS_DEFAULT= CHUNKS CORBA DIRTY DTRACE KQUEUE MANPAGES OPENSSL SCTP .if !exists(/usr/sbin/dtrace) OPTIONS_EXCLUDE+= DTRACE .endif -OPTIONS_EXCLUDE_DragonFly= HIPE NATIVE SCTP +OPTIONS_EXCLUDE_DragonFly= SCTP # ld(1) fails to link probes: missing __dtrace_erlang___* symbols +# see also https://reviews.freebsd.org/D22360 OPTIONS_EXCLUDE_aarch64= DTRACE OPTIONS_EXCLUDE_armv6= DTRACE OPTIONS_EXCLUDE_armv7= DTRACE -OPTIONS_EXCLUDE_i386= DTRACE HIPE NATIVE -OPTIONS_EXCLUDE_powerpc64= ${OPTIONS_EXCLUDE_${ARCH}_${OSREL:R}} HIPE +OPTIONS_EXCLUDE_i386= DTRACE +OPTIONS_EXCLUDE_powerpc64= ${OPTIONS_EXCLUDE_${ARCH}_${OSREL:R}} OPTIONS_EXCLUDE_powerpc64_11= DTRACE OPTIONS_EXCLUDE_powerpc64_12= DTRACE -OPTIONS_EXCLUDE_powerpc64le= HIPE OPTIONS_EXCLUDE_riscv64= DTRACE OPTIONS_SUB= yes +CHUNKS_DESC= Enable in-line documentation in Erlang console CORBA_DESC= Enable Corba support -DIRTY_DESC= Enable Dirty schedulers +DIRTY_DESC= Enable dirty schedulers FOP_DESC= Build full documentation with Apache FOP -HIPE_DESC= Build native HiPE compiler KQUEUE_DESC= Enable Kernel Poll (kqueue) support -NATIVE_DESC= Enable native libraries PDF_DESC= Build PDF documentation SCTP_DESC= Enable SCTP support +SHARING_DESC= Enable term copy-and-share support WX_DESC= Enable WX application # If you run Erlang and get a message resembling "WARNING: number of # probes fixed does not match the number of defined probes (54 != 132, # respectively)" you probably misconfigured DTrace in some way. -DIRTY_CONFIGURE_ENABLE= dirty-schedulers +CHUNKS_MAKE_ARGS+= docs DOC_TARGETS=chunks +DIRTY_CONFIGURE_WITH= dirty-schedulers DTRACE_CONFIGURE_WITH= dynamic-trace=dtrace DTRACE_CFLAGS= -fno-omit-frame-pointer DTRACE_VARS= STRIP="" FOP_PREVENTS= MANPAGES FOP_BUILD_DEPENDS= fop:textproc/fop \ xsltproc:textproc/libxslt -HIPE_CONFIGURE_ENABLE= hipe JAVA_CONFIGURE_WITH= javac JAVA_CONFIGURE_ENV= ac_cv_prog_JAVAC="${JAVAC}" JAVA_VARS= USE_JAVA=yes KQUEUE_CONFIGURE_ENABLE= kernel-poll MANPAGES_RUN_DEPENDS= ${LOCALBASE}/etc/man.d/erlang.conf:lang/erlang-man -NATIVE_IMPLIES= HIPE -NATIVE_CONFIGURE_ENABLE= native-libs ODBC_LIB_DEPENDS= libodbc.so:databases/unixODBC +ODBC_USES= localbase ODBC_CONFIGURE_WITH= odbc ODBC_CFLAGS= -I/usr/local/include ODBC_LDFLAGS= -L/usr/local/lib OPENSSL_USES= ssl OPENSSL_CONFIGURE_WITH= ssl=${OPENSSLBASE} PDF_IMPLIES= FOP SCTP_CONFIGURE_ENABLE= sctp -THREADS_CONFIGURE_ENABLE= threads +SHARING_CONFIGURE_ENABLE= sharing-preserving WX_USES= gl WX_CONFIGURE_WITH= wx-config=${WX_CONFIG} WX_VARS= USE_GL="gl glu" \ USE_WX=3.1+ \ WX_COMPS="wx" .include .if ${OPSYS} == FreeBSD CFLAGS+= -DMAP_NORESERVE=0 .endif .if ${ARCH} == i386 MAKE_ARGS+= ARCH=x86 .endif .if ${ARCH} == armv6 || ${ARCH} == armv7 MAKE_ARGS+= ARCH=arm .endif pre-configure: @if [ ! $$(${CAT} ${WRKSRC}/lib/erl_interface/vsn.mk | ${GREP} "EI_VSN *=" | ${CUT} -w -f3) = ${EI_VSN} ]; then \ ${ECHO_MSG} "===> EI_VSN (${EI_VSN}) in Makefile does not match value in lib/erl_interface/vsn.mk"; exit 1; \ fi @if [ ! $$(${CAT} ${WRKSRC}/lib/tools/vsn.mk | ${GREP} "TOOLS_VSN *=" | ${CUT} -w -f3) = ${TOOLS_VSN} ]; then \ ${ECHO_MSG} "===> TOOLS_VSN (${TOOLS_VSN}) in Makefile does not match value in lib/tools/vsn.mk"; exit 1; \ fi @if [ ! $$(${CAT} ${WRKSRC}/lib/snmp/vsn.mk | ${GREP} -E "SNMP_VSN *=" | ${CUT} -w -f3) = ${SNMP_VSN} ]; then \ ${ECHO_MSG} "===> SNMP_VSN (${SNMP_VSN}) in Makefile does not match value in lib/snmp/vsn.mk"; exit 1; \ fi - @cd ${WRKSRC} && ./otp_build autoconf pre-configure-WX-off: echo "disabled by port options" > ${WRKSRC}/lib/debugger/SKIP echo "disabled by port options" > ${WRKSRC}/lib/et/SKIP echo "disabled by port options" > ${WRKSRC}/lib/observer/SKIP echo "disabled by port options" > ${WRKSRC}/lib/wx/SKIP post-configure-ODBC-on: ${RM} ${WRKSRC}/lib/odbc/SKIP -pre-build-NATIVE-on: - @cd ${WRKSRC} && ${MAKE_CMD} clean +post-configure-ODBC-off: + echo "disabled by port options" > ${WRKSRC}/lib/odbc/SKIP post-build-CORBA-on: cd ${WRKSRC_corba} \ && ${SETENV} OVERRIDE_TARGET=${CONFIGURE_TARGET} ERL_TOP=${WRKSRC_otp} ${MAKE_CMD} # The man-pages are put (in spite of FreeBSD's port convention) in a private # subdir. This is to avoid cluttering up the man page name space. Also the # Erlang man pages are more of internal documentation using the man format than # actual system man pages. (erl.1 and epmd.1 perhaps being the exception). post-build-FOP-on: @cd ${WRKSRC} && ${MAKE_CMD} docs .if ${PORT_OPTIONS:MCORBA} cd ${WRKSRC_corba} \ && ${SETENV} OVERRIDE_TARGET=${CONFIGURE_TARGET} ERL_TOP=${WRKSRC_otp} ${MAKE_CMD} docs .endif post-install: ${LN} -sf ../lib/${ERLANG_LIB}/lib/erl_interface-${EI_VSN}/bin/erl_call ${STAGEDIR}${PREFIX}/bin/erl_call ${LN} -sf ../lib/${ERLANG_LIB}/lib/snmp-${SNMP_VSN}/bin/snmpc ${STAGEDIR}${PREFIX}/bin/snmpc post-install-CORBA-on: cd ${WRKSRC_corba} \ && ${SETENV} OVERRIDE_TARGET=${CONFIGURE_TARGET} ERL_TOP=${WRKSRC_otp} \ ${MAKE_CMD} release RELEASE_ROOT=${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB} post-install-DTRACE-on: ${MKDIR} ${STAGEDIR}${DATADIR}/dtrace ${INSTALL_DATA} ${WRKSRC}/erts/emulator/beam/*.d \ ${WRKSRC}/lib/runtime_tools/c_src/*.d \ ${WRKSRC}/lib/runtime_tools/examples/*.d \ ${STAGEDIR}${DATADIR}/dtrace post-install-FOP-on: @${ECHO_CMD} "MANPATH ${PREFIX}/lib/erlang/man" > ${WRKDIR}/erlang.conf ${INSTALL_DATA} ${WRKDIR}/erlang.conf ${STAGEDIR}${PREFIX}/etc/man.d/erlang.conf for SECTION in 1 3 4 6 7; do \ ${MKDIR} ${STAGEDIR}${PREFIX}/lib/erlang/man/man$${SECTION}; \ - ${FIND} ${WRKSRC}/erts ${WRKSRC}/lib -type f | ${GREP} doc/man$${SECTION} \ + ${FIND} ${WRKSRC}/erts ${WRKSRC}/lib -type f | ${GREP} doc/man$${SECTION} \ | ${XARGS} -J % ${CP} -v % ${STAGEDIR}${PREFIX}/lib/erlang/man/man$${SECTION}; \ done .if ${PORT_OPTIONS:MCORBA} ${FIND} ${WRKSRC_corba}/lib -type f | ${GREP} doc/man3 \ | ${XARGS} -J % ${CP} -v % ${STAGEDIR}${PREFIX}/lib/erlang/man/man3 .endif post-install-JAVA-off: ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/jinterface-* post-install-ODBC-off: ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/odbc-* post-install-OPENSSL-off: ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/crypto-* ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/ssh-* ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/ssl-* post-install-PDF-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} ${FIND} ${WRKSRC} -name \*.pdf | ${XARGS} -J % ${CP} -v % ${STAGEDIR}${DOCSDIR} .if ${PORT_OPTIONS:MCORBA} ${FIND} ${WRKSRC_corba} -name \*.pdf | ${XARGS} -J % ${CP} -v % ${STAGEDIR}${DOCSDIR} .endif post-install-WX-off: ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/debugger-* ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/et-* ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/observer-* ${RM} -r ${STAGEDIR}${PREFIX}/lib/erlang/lib/wx-* post-stage: ${FIND} ${STAGEDIR}${PREFIX}/lib/${ERLANG_LIB}/* -type d -empty -delete @cd ${STAGEDIR}${PREFIX}; ${FIND} lib/${ERLANG_LIB}/* ${DATADIR_REL}/* -type f -o -type l \ | ${SORT} >> ${TMPPLIST} @if [ -d ${STAGEDIR}/${DOCSDIR} ]; then \ cd ${STAGEDIR}${PREFIX}; ${FIND} ${DOCSDIR_REL}/* -name \*.pdf \ | ${SORT} >> ${TMPPLIST}; \ fi .include diff --git a/lang/erlang/distinfo b/lang/erlang/distinfo index 8991e4dd1932..f52cbf9f48cd 100644 --- a/lang/erlang/distinfo +++ b/lang/erlang/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1622539043 -SHA256 (erlang/erlang-otp-OTP-21.3.8.24_GH0.tar.gz) = 90017fe0b844cf3ba7dc9faf7f6f690050f3138f3d3f7532a9343174f5f9febc -SIZE (erlang/erlang-otp-OTP-21.3.8.24_GH0.tar.gz) = 54104215 -SHA256 (erlang/erlang-corba-4.5.2_GH0.tar.gz) = 36f397e6aef97eebda629badb0570cb4ddc979a6d1557bc487a9e13671facf8f -SIZE (erlang/erlang-corba-4.5.2_GH0.tar.gz) = 1422685 +TIMESTAMP = 1631542362 +SHA256 (erlang/erlang-otp-OTP-24.0.6_GH0.tar.gz) = a60a7d776a4573e2018d6fad6df957e3911ecbce5f11497a8ec537f613aca0a1 +SIZE (erlang/erlang-otp-OTP-24.0.6_GH0.tar.gz) = 58894872 +SHA256 (erlang/erlang-corba-5.0.2_GH0.tar.gz) = d82b3efb0330870ac59a86ed96130b3e2caa7df5304e46b06dd79ad237686703 +SIZE (erlang/erlang-corba-5.0.2_GH0.tar.gz) = 1393602 diff --git a/lang/erlang/files/patch-configure b/lang/erlang/files/patch-configure new file mode 100644 index 000000000000..9713b597b9dc --- /dev/null +++ b/lang/erlang/files/patch-configure @@ -0,0 +1,40 @@ +--- configure.orig 2021-09-13 14:43:59 UTC ++++ configure +@@ -55,7 +55,7 @@ skip_applications= + while test $# != 0; do + case $1 in + -srcdir=* | --srcdir=*) +- user_srcdir=`expr "$1" : '[^=]*=\(.*\)'` ++ user_srcdir=`expr -- "$1" : '[^=]*=\(.*\)'` + if test "$ERL_TOP" != ""; then + echo "WARNING: Overriding ERL_TOP with $user_srcdir" 1>&2 + echo "" 1>&2 +@@ -95,7 +95,7 @@ while test $# != 0; do + echo "" 1>&2 + ;; + -cache-file=* | --cache-file=* ) +- static_cache=`expr "$1" : '[^=]*=\(.*\)'` ++ static_cache=`expr -- "$1" : '[^=]*=\(.*\)'` + if test "$static_cache" != "/dev/null"; then + echo "WARNING: Only using config cache file '$static_cache' as static cache" 1>&2 + echo "" 1>&2 +@@ -140,8 +140,8 @@ while test $# != 0; do + pie_ldflags="-no-pie" + ;; + CFLAGS=* | LDFLAGS=*) +- flgs_var=`expr "$1" : '\([^=]*\)=.*'` +- flgs_val=`expr "$1" : '[^=]*=\(.*\)'` ++ flgs_var=`expr -- "$1" : '\([^=]*\)=.*'` ++ flgs_val=`expr -- "$1" : '[^=]*=\(.*\)'` + eval $flgs_var=\$flgs_val + ;; + --help=r* | -help=r*) +@@ -151,7 +151,7 @@ while test $# != 0; do + *) + case $1 in + --without-*) +- skip_app=`expr "$1" : '--without-\(.*\)'` ++ skip_app=`expr -- "$1" : '--without-\(.*\)'` + if [ "$skip_app" = "stdlib" ] || + [ "$skip_app" = "kernel" ] || + [ "$skip_app" = "sasl" ] || diff --git a/lang/erlang/files/patch-erts_etc_unix_run__erl.c b/lang/erlang/files/patch-erts_etc_unix_run__erl.c index b76c5127d2a8..1a9d2edc6ffe 100644 --- a/lang/erlang/files/patch-erts_etc_unix_run__erl.c +++ b/lang/erlang/files/patch-erts_etc_unix_run__erl.c @@ -1,12 +1,12 @@ ---- erts/etc/unix/run_erl.c.orig 2015-03-31 12:32:52 UTC +--- erts/etc/unix/run_erl.c.orig 2021-09-02 10:21:16 UTC +++ erts/etc/unix/run_erl.c -@@ -73,9 +73,6 @@ - #ifdef HAVE_UTMP_H - # include +@@ -81,9 +81,6 @@ + #ifdef HAVE_LIBUTIL_H + # include #endif -#ifdef HAVE_UTIL_H -# include -#endif #ifdef HAVE_SYS_IOCTL_H # include #endif diff --git a/lang/erlang/files/patch-lib_crypto_c__src_Makefile.in b/lang/erlang/files/patch-lib_crypto_c__src_Makefile.in index 65e1b759ad66..8397bcac2200 100644 --- a/lang/erlang/files/patch-lib_crypto_c__src_Makefile.in +++ b/lang/erlang/files/patch-lib_crypto_c__src_Makefile.in @@ -1,11 +1,11 @@ ---- lib/crypto/c_src/Makefile.in.orig 2016-03-14 20:11:15 UTC +--- lib/crypto/c_src/Makefile.in.orig 2021-05-27 09:40:45 UTC +++ lib/crypto/c_src/Makefile.in -@@ -90,7 +90,7 @@ endif - DYNAMIC_CRYPTO_LIB=@SSL_DYNAMIC_ONLY@ +@@ -136,7 +136,7 @@ endif + endif - ifeq ($(DYNAMIC_CRYPTO_LIB),yes) + ifeq ($(DYNAMIC_OR_WIN_CRYPTO_LIB),yes) -SSL_DED_LD_RUNTIME_LIBRARY_PATH = @SSL_DED_LD_RUNTIME_LIBRARY_PATH@ +SSL_DED_LD_RUNTIME_LIBRARY_PATH = CRYPTO_LINK_LIB=$(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) -l$(SSL_CRYPTO_LIBNAME) EXTRA_FLAGS = -DHAVE_DYNAMIC_CRYPTO_LIB else diff --git a/lang/erlang/files/patch-lib_crypto_priv_Makefile b/lang/erlang/files/patch-lib_crypto_priv_Makefile deleted file mode 100644 index 26f2c38e360d..000000000000 --- a/lang/erlang/files/patch-lib_crypto_priv_Makefile +++ /dev/null @@ -1,11 +0,0 @@ ---- lib/crypto/priv/Makefile.orig 2016-03-14 20:11:15 UTC -+++ lib/crypto/priv/Makefile -@@ -61,7 +61,7 @@ OBJS = $(OBJDIR)/crypto.o - # ---------------------------------------------------- - - $(SO_NIFLIB): $(OBJS) -- $(SO_LD) $(SO_LDFLAGS) -L$(SO_SSL_LIBDIR) -Wl,-R$(SO_SSL_LIBDIR) \ -+ $(SO_LD) $(SO_LDFLAGS) -L$(SO_SSL_LIBDIR) \ - -o $@ $^ -lcrypto - - $(DLL_NIFLIB): $(OBJS) diff --git a/lang/erlang/files/patch-lib_hipe_llvm_hipe__llvm__main.erl b/lang/erlang/files/patch-lib_hipe_llvm_hipe__llvm__main.erl deleted file mode 100644 index 633d84504d99..000000000000 --- a/lang/erlang/files/patch-lib_hipe_llvm_hipe__llvm__main.erl +++ /dev/null @@ -1,11 +0,0 @@ ---- lib/hipe/llvm/hipe_llvm_main.erl.orig 2015-06-27 20:52:09 UTC -+++ lib/hipe/llvm/hipe_llvm_main.erl -@@ -474,7 +474,7 @@ unique_folder(FunName, Arity, Options) - - true -> %% Store folder in current directory - DirName; - false -> %% Temporarily store folder in tempfs (/dev/shm/) -- "/dev/shm/" ++ DirName -+ "/tmp/" ++ DirName - end, - %% Make sure it does not exist - case dir_exists(Dir) of diff --git a/lang/erlang/files/patch-lib_stdlib_src_calendar.erl b/lang/erlang/files/patch-lib_stdlib_src_calendar.erl index 34b753d85b27..30bb7423b8d4 100644 --- a/lang/erlang/files/patch-lib_stdlib_src_calendar.erl +++ b/lang/erlang/files/patch-lib_stdlib_src_calendar.erl @@ -1,26 +1,26 @@ ---- lib/stdlib/src/calendar.erl.orig 2015-03-31 12:32:52 UTC +--- lib/stdlib/src/calendar.erl.orig 2021-09-02 10:21:16 UTC +++ lib/stdlib/src/calendar.erl -@@ -279,11 +279,19 @@ local_time_to_universal_time(DateTime, I +@@ -297,11 +297,19 @@ local_time_to_universal_time(DateTime, IsDst) -> DateTime1 :: datetime1970(), DateTime :: datetime1970(). local_time_to_universal_time_dst(DateTime) -> - UtDst = erlang:localtime_to_universaltime(DateTime, true), - Ut = erlang:localtime_to_universaltime(DateTime, false), %% Reverse check the universal times - LtDst = erlang:universaltime_to_localtime(UtDst), - Lt = erlang:universaltime_to_localtime(Ut), + {UtDst, LtDst} = + try + UtDst0 = erlang:localtime_to_universaltime(DateTime, true), + {UtDst0, erlang:universaltime_to_localtime(UtDst0)} + catch error:badarg -> {error, error} + end, + {Ut, Lt} = + try + Ut0 = erlang:localtime_to_universaltime(DateTime, false), + {Ut0, erlang:universaltime_to_localtime(Ut0)} + catch error:badarg -> {error, error} + end, %% Return the valid universal times case {LtDst,Lt} of {DateTime,DateTime} when UtDst =/= Ut ->