danj pointed out https://ferd.ca/you-ve-got-to-upgrade-rebar3.html; here's an update for the port to a version which both has a fix for this, and still supports erlang 21 (3.15.x support OTP 19 to 23; 3.16.x supports 22 to 24).
while there I fixed the distfile name from the current bare version number, and got tests to work. i think the existing patches to change these ... - "$BINDIR/erl" -boot start_clean \ + "$BINDIR/erl${ERL_VERSION}" -boot start_clean \ in relx_get_nodename() etc are incorrect, BINDIR refers to /usr/local/lib/erlang21/erts-10.2/bin where the files have no version suffix, so i've dropped those. (of course I've kept the patches for filenames searched in the default PATH). the test suite passes, but i'm not really a user of this, so a real-world test is probably a good idea. Index: Makefile =================================================================== RCS file: /cvs/ports/devel/rebar3/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- Makefile 19 Feb 2021 03:58:34 -0000 1.4 +++ Makefile 24 May 2021 15:43:55 -0000 @@ -2,24 +2,21 @@ COMMENT = Erlang build tool -V= 3.13.2 -PKGNAME= rebar3-${V} -DISTNAME= ${V} -CATEGORIES= devel -HOMEPAGE= https://www.rebar3.org +GH_ACCOUNT = erlang +GH_PROJECT = rebar3 +GH_TAGNAME = 3.15.2 +CATEGORIES = devel +HOMEPAGE = https://www.rebar3.org MAINTAINER = Jonathan Matthew <jmatt...@openbsd.org> # APLv2 -PERMIT_PACKAGE= Yes +PERMIT_PACKAGE = Yes FLAVORS = erlang21 FLAVOR ?= erlang21 -MASTER_SITES = https://github.com/erlang/rebar3/archive/ MASTER_SITES1 = https://repo.hex.pm/tarballs/ -WRKDIST = ${WRKDIR}/rebar3-${V} - .if ${FLAVOR:Merlang21} _EV = ${FLAVOR:C/.*([0-9][0-9]+\$)/\1/} RUN_DEPENDS = lang/erlang/${_EV} @@ -28,22 +25,26 @@ ERL_VERSION = ${_EV} ERRORS += "Invalid FLAVOR set: ${FLAVOR}" .endif -EXTRACT_ONLY = ${V}.tar.gz +EXTRACT_ONLY = rebar3-${GH_TAGNAME}.tar.gz +# certifi held back; >=2.6.0 -> "undefined parse transform 'certifi_pt'" HEX_MODULES = \ - bbmustache 1.8.0 \ - certifi 2.5.1 \ - cf 0.2.2 \ - cth_readable 1.4.6 \ - erlware_commons 1.3.1 \ + bbmustache 1.12.1 \ + certifi 2.5.3 \ + cf 0.3.1 \ + cth_readable 1.5.1 \ + erlware_commons 1.5.0 \ eunit_formatters 0.5.0 \ - getopt 1.0.1 \ - parse_trans 3.3.0 \ + getopt 1.0.2 \ + parse_trans 3.4.0 \ providers 1.8.1 \ - relx 3.33.0 \ - ssl_verify_fun 1.1.5 + relx 4.4.0 \ + ssl_verify_fun 1.1.6 +# for tests +HEX_MODULES += \ + meck 0.8.13 -DISTFILES = ${V}.tar.gz +DISTFILES = rebar3-{}${GH_TAGNAME}.tar.gz .for _m _v in ${HEX_MODULES} DISTFILES += ${_m}-${_v}.tar:1 .endfor @@ -75,5 +76,11 @@ do-build: do-install: ${INSTALL_SCRIPT} ${WRKSRC}/rebar3 ${PREFIX}/bin/rebar3-${ERL_VERSION} + +PORTHOME= ${WRKDIR} +do-test: + cd ${WRKSRC} && \ + ${SETENV} ${ALL_TEST_ENV} ./rebar3 escriptize && \ + ${SETENV} ${ALL_TEST_ENV} ./rebar3 ct .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/devel/rebar3/distinfo,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 distinfo --- distinfo 26 Nov 2020 03:31:56 -0000 1.1.1.1 +++ distinfo 24 May 2021 15:43:55 -0000 @@ -1,24 +1,26 @@ -SHA256 (3.13.2.tar.gz) = 4UzcH1t9Njojip9VX4noeLxPyDbJcFcbQbkO6Uf5FQU= -SHA256 (bbmustache-1.8.0.tar) = GQ6iIGEovfq/XZIAuN+X9lEdnGKVNlWCjijCvHkWElI= -SHA256 (certifi-2.5.1.tar) = gFq9l1Ocr4nsbUcyyR5iup2gzaUaxGI4C70o7ml6jEI= -SHA256 (cf-0.2.2.tar) = SCg7MBm8f61W57IwKKXaTT5s1ZilU6sqmaIVO/XxmyE= -SHA256 (cth_readable-1.4.6.tar) = j3mde/1ESr/itMB8yzHFboAEMzXh7Tkzot+6NfjZdSM= -SHA256 (erlware_commons-1.3.1.tar) = eq2pPzaNCgQwEi45kxt/tKyelNvwQ83JgK1DMP2c0WY= +SHA256 (bbmustache-1.12.1.tar) = 9DIHeMMaghoqZk24iUYYq7ecGve798A8cDyIaNm7Cf4= +SHA256 (certifi-2.5.3.tar) = 7VFqyzkpsQEgip1wAGLVIPOVPaO2uRjYZhBv+pgOHBA= +SHA256 (cf-0.3.1.tar) = MV6NRH06SwK82/o5etA7u5iKbgqm9E063Q9OPDv5dnI= +SHA256 (cth_readable-1.5.1.tar) = aGVBoi7+bKWkGgR7OVFsLdKPs8reXySi8ZFFs5Z/nYA= +SHA256 (erlware_commons-1.5.0.tar) = PnxvsrpMKbDdXf6dAxtmRJ4giOzsGoFGW9n94F7X0Ns= SHA256 (eunit_formatters-0.5.0.tar) = 1si6ITQklE5uBbvAl8MgAc3Qq+OSXQJFTyKbINaHY8k= -SHA256 (getopt-1.0.1.tar) = U+Grg7nOtlyWctPno1uAkum9ybPugHIUcaFhwQxZlZw= -SHA256 (parse_trans-3.3.0.tar) = F+9jq96DetMGgOp/hX3Z587ZR2zdewOUQyr0v8JBuWA= +SHA256 (getopt-1.0.2.tar) = oAKa6kMi+4KmH2h2ptnGbcmHi2y2H6oT3zGHOE/U6iY= +SHA256 (meck-0.8.13.tar) = 008BPBVttRrVfMVWiRuXIOahwd9f4uFa+ZnITWzr6xo= +SHA256 (parse_trans-3.4.0.tar) = +Z42iDC+pEVSIk434ElDpUh08IuFkEhd6NE4MrY6LcM= SHA256 (providers-1.8.1.tar) = 5FdFrenEdqmkaeoIQOQYqxk2DcRPAaIzME4RikRIa6A= -SHA256 (relx-3.33.0.tar) = bgRWE5/HC63gxF/4qBl8XoeaV/15L3cfxjK5TFrsHqw= -SHA256 (ssl_verify_fun-1.1.5.tar) = ExBNeJfjjtfwRMTelTpsKFl9HJUgdesuMovG1vK/xJY= -SIZE (3.13.2.tar.gz) = 380862 -SIZE (bbmustache-1.8.0.tar) = 15872 -SIZE (certifi-2.5.1.tar) = 133120 -SIZE (cf-0.2.2.tar) = 10240 -SIZE (cth_readable-1.4.6.tar) = 18944 -SIZE (erlware_commons-1.3.1.tar) = 53248 +SHA256 (rebar3-3.15.2.tar.gz) = Eba+rYNUIaJ24odWJYhYC2OsHI3LDjxR9nSIfkqzlc0= +SHA256 (relx-4.4.0.tar) = VcDtY7tdVeuYOhnrlNfzB1320Sbb3/QxAqZmCpH86SU= +SHA256 (ssl_verify_fun-1.1.6.tar) = vbDSRx9FPIj/OQjnaG+G+b4yfQZcwewW+kVAGX6gRoA= +SIZE (bbmustache-1.12.1.tar) = 17920 +SIZE (certifi-2.5.3.tar) = 159232 +SIZE (cf-0.3.1.tar) = 10240 +SIZE (cth_readable-1.5.1.tar) = 19968 +SIZE (erlware_commons-1.5.0.tar) = 53760 SIZE (eunit_formatters-0.5.0.tar) = 14848 -SIZE (getopt-1.0.1.tar) = 19456 -SIZE (parse_trans-3.3.0.tar) = 35840 +SIZE (getopt-1.0.2.tar) = 19456 +SIZE (meck-0.8.13.tar) = 34304 +SIZE (parse_trans-3.4.0.tar) = 36352 SIZE (providers-1.8.1.tar) = 14336 -SIZE (relx-3.33.0.tar) = 87552 -SIZE (ssl_verify_fun-1.1.5.tar) = 17408 +SIZE (rebar3-3.15.2.tar.gz) = 432659 +SIZE (relx-4.4.0.tar) = 74240 +SIZE (ssl_verify_fun-1.1.6.tar) = 14848 Index: patches/patch-_build_default_lib_relx_priv_templates_bin =================================================================== RCS file: /cvs/ports/devel/rebar3/patches/patch-_build_default_lib_relx_priv_templates_bin,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 patch-_build_default_lib_relx_priv_templates_bin --- patches/patch-_build_default_lib_relx_priv_templates_bin 26 Nov 2020 03:31:56 -0000 1.1.1.1 +++ patches/patch-_build_default_lib_relx_priv_templates_bin 24 May 2021 15:43:55 -0000 @@ -5,12 +5,12 @@ use versioned erlang binary Index: _build/default/lib/relx/priv/templates/bin --- _build/default/lib/relx/priv/templates/bin.orig +++ _build/default/lib/relx/priv/templates/bin -@@ -21,7 +21,7 @@ find_erts_dir() { +@@ -20,7 +20,7 @@ find_erts_dir() { + if [ -d "$__erts_dir" ]; then ERTS_DIR="$__erts_dir"; - ROOTDIR="$RELEASE_ROOT_DIR" else -- __erl="$(which erl)" -+ __erl="$(which erl${ERL_VERSION})" +- __erl="$(command -v erl)" ++ __erl="$(command -v erl${ERL_VERSION})" code="io:format(\"~s\", [code:root_dir()]), halt()." __erl_root="$("$__erl" -boot no_dot_erlang -noshell -eval "$code")" ERTS_DIR="$__erl_root/erts-$ERTS_VSN" Index: patches/patch-_build_default_lib_relx_priv_templates_extended_bin =================================================================== RCS file: /cvs/ports/devel/rebar3/patches/patch-_build_default_lib_relx_priv_templates_extended_bin,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 patch-_build_default_lib_relx_priv_templates_extended_bin --- patches/patch-_build_default_lib_relx_priv_templates_extended_bin 26 Nov 2020 03:31:56 -0000 1.1.1.1 +++ patches/patch-_build_default_lib_relx_priv_templates_extended_bin 24 May 2021 15:43:55 -0000 @@ -5,39 +5,12 @@ use versioned erlang binary Index: _build/default/lib/relx/priv/templates/extended_bin --- _build/default/lib/relx/priv/templates/extended_bin.orig +++ _build/default/lib/relx/priv/templates/extended_bin -@@ -127,7 +127,7 @@ find_erts_dir() { +@@ -193,7 +193,7 @@ find_erts_dir() { + if [ -d "$__erts_dir" ]; then ERTS_DIR="$__erts_dir"; - ROOTDIR="$RELEASE_ROOT_DIR" else -- __erl="$(which erl)" -+ __erl="$(which erl${ERL_VERSION})" +- __erl="$(command -v erl)" ++ __erl="$(command -v erl${ERL_VERSION})" code="io:format(\"~s\", [code:root_dir()]), halt()." __erl_root="$("$__erl" -boot no_dot_erlang -sasl errlog_type error -noshell -eval "$code")" ERTS_DIR="$__erl_root/erts-$ERTS_VSN" -@@ -150,7 +150,7 @@ relx_get_pid() { - relx_get_nodename() { - id="longname$(relx_gen_id)-${NAME}" - if [ -z "$COOKIE" ]; then -- "$BINDIR/erl" -boot start_clean \ -+ "$BINDIR/erl${ERL_VERSION}" -boot start_clean \ - -mode interactive \ - -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \ - -eval '[_,H]=re:split(atom_to_list(node()),"@",[unicode,{return,list}]), io:format("~s~n",[H]), halt()' \ -@@ -158,7 +158,7 @@ relx_get_nodename() { - -noshell ${NAME_TYPE} $id - else - # running with setcookie prevents a ~/.erlang.cookie from being created -- "$BINDIR/erl" -boot start_clean \ -+ "$BINDIR/erl${ERL_VERSION}" -boot start_clean \ - -mode interactive \ - -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \ - -eval '[_,H]=re:split(atom_to_list(node()),"@",[unicode,{return,list}]), io:format("~s~n",[H]), halt()' \ -@@ -178,7 +178,7 @@ relx_rem_sh() { - TICKTIME="$(relx_nodetool rpcterms net_kernel get_net_ticktime)" - - # Setup remote shell command to control node -- exec "$BINDIR/erl" "$NAME_TYPE" "$id" -remsh "$NAME" -boot start_clean -mode interactive \ -+ exec "$BINDIR/erl${ERL_VERSION}" "$NAME_TYPE" "$id" -remsh "$NAME" -boot start_clean -mode interactive \ - -boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" $MAYBE_DIST_ARGS \ - -setcookie "$COOKIE" -hidden -kernel net_ticktime $TICKTIME - } Index: patches/patch-rebar_config =================================================================== RCS file: /cvs/ports/devel/rebar3/patches/patch-rebar_config,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 patch-rebar_config --- patches/patch-rebar_config 26 Nov 2020 03:31:56 -0000 1.1.1.1 +++ patches/patch-rebar_config 24 May 2021 15:43:55 -0000 @@ -5,12 +5,13 @@ set main module name for escript Index: rebar.config --- rebar.config.orig +++ rebar.config -@@ -24,7 +24,7 @@ - +@@ -25,7 +25,8 @@ {escript_name, rebar3}. - {escript_comment, "%%Rebar3 3.13.2\n"}. + {escript_wrappers_windows, ["cmd", "powershell"]}. + {escript_comment, "%%Rebar3 3.15.2\n"}. -{escript_emu_args, "%%! +sbtu +A1\n"}. +{escript_emu_args, "%%! +sbtu +A1 -escript main rebar3\n"}. ++ %% escript_incl_extra is for internal rebar-private use only. %% Do not use outside rebar. Config interface is not stable. {escript_incl_extra, [{"relx/priv/templates/*", "_build/default/lib/"}, Index: patches/patch-src_rebar_prv_escriptize_erl =================================================================== RCS file: /cvs/ports/devel/rebar3/patches/patch-src_rebar_prv_escriptize_erl,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 patch-src_rebar_prv_escriptize_erl --- patches/patch-src_rebar_prv_escriptize_erl 26 Nov 2020 03:31:56 -0000 1.1.1.1 +++ patches/patch-src_rebar_prv_escriptize_erl 24 May 2021 15:43:55 -0000 @@ -5,7 +5,7 @@ Use versioned escript Index: src/rebar_prv_escriptize.erl --- src/rebar_prv_escriptize.erl.orig +++ src/rebar_prv_escriptize.erl -@@ -126,7 +126,7 @@ escriptize(State0, App) -> +@@ -138,7 +138,7 @@ escriptize(State0, App) -> [AppNameStr, AppNameStr, AppNameStr]), EscriptSections = [ {shebang,