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,

Reply via email to