On Mon, May 24, 2021 at 05:07:12PM +0100, Stuart Henderson wrote:
> 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).
Thanks for looking at this.
>
> 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).
I'm a bit confused about this. BINDIR can also be the erts/bin
directory of a release generated by rebar3/relx, and in those, the erl
binary does have the version suffix. I'm not sure how it gets there.
I'll look into this more.
>
> the test suite passes, but i'm not really a user of this, so a
> real-world test is probably a good idea.
My main use for rebar3 is building current versions of databases/riak
(not yet in the ports tree), and last time I tried, it didn't work with
newer versions of rebar3. I may be able to find something else.
>
> 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,
>