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 <[email protected]>
# 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,