Ports,

Here's a patch to help the erlang tools find their versioned selves. Before the patch a simple command line compile would fail:

$ erlc16 user_default.erl
erlc: Error 2 executing 'erl'.

With this patch:
$ erlc16 user_default.erl

(it works)

Tested on amd64 for erlang16 through erlang19. No problems building rebar, tsung, or erl-mochiweb with this patch.

Thanks,
Bill Karh
Index: Makefile.inc
===================================================================
RCS file: /depot/cvs/openbsd/ports/lang/erlang/Makefile.inc,v
retrieving revision 1.15
diff -u -p -r1.15 Makefile.inc
--- Makefile.inc	9 Dec 2017 21:28:58 -0000	1.15
+++ Makefile.inc	13 Mar 2018 17:03:28 -0000
@@ -78,7 +78,13 @@ gen-versions: extract
 
 pre-configure:
 	${SUBST_CMD} ${WRKSRC}/make/install_bin \
+		     ${WRKSRC}/Makefile.in \
+		     ${WRKSRC}/erts/etc/common/ct_run.c \
+		     ${WRKSRC}/erts/etc/common/dialyzer.c \
+		     ${WRKSRC}/erts/etc/common/erlc.c \
 		     ${WRKSRC}/erts/etc/common/escript.c \
+		     ${WRKSRC}/erts/etc/common/typer.c \
+		     ${WRKSRC}/lib/dialyzer/src/dialyzer_plt.erl \
 		     ${WRKSRC}/lib/wx/configure.in
 
 post-install:
Index: 16/Makefile
===================================================================
RCS file: /depot/cvs/openbsd/ports/lang/erlang/16/Makefile,v
retrieving revision 1.19
diff -u -p -r1.19 Makefile
--- 16/Makefile	9 Dec 2017 21:28:58 -0000	1.19
+++ 16/Makefile	3 Mar 2018 19:46:00 -0000
@@ -12,7 +12,7 @@ DISTNAME=	otp_src_${V}
 PKGNAME-main=	erlang-16b.03
 PKGNAME-wx=	erlang-wx-16b.03
 
-REVISION-main=	13
+REVISION-main=	14
 REVISION-wx=	2
 
 VERSION_SPEC=	>=16v0,<17v0
Index: 16/patches/patch-Makefile_in
===================================================================
RCS file: 16/patches/patch-Makefile_in
diff -N 16/patches/patch-Makefile_in
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 16/patches/patch-Makefile_in	15 Mar 2018 17:01:52 -0000
@@ -0,0 +1,15 @@
+$OpenBSD$
+
+Create symlink so the build can handle versioned binaries
+
+Index: Makefile.in
+--- Makefile.in.orig
++++ Makefile.in
+@@ -516,6 +516,7 @@ $(BOOTSTRAP_ROOT)/bootstrap/bin/erl: $(ERL_TOP)/erts/e
+ 	        $(ERL_TOP)/erts/etc/unix/erl.src.src > \
+ 			$(BOOTSTRAP_ROOT)/bootstrap/bin/erl
+ 	@chmod 755 $(BOOTSTRAP_ROOT)/bootstrap/bin/erl
++	@(cd $(BOOTSTRAP_ROOT)/bootstrap/bin && $(LN_S) ./erl erl${MAJ_V})
+ 
+ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc: $(ERL_TOP)/bin/$(TARGET)/erlc $(BOOTSTRAP_ROOT)/bootstrap/target
+ 	@rm -f $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc
Index: 16/patches/patch-erts_etc_common_ct_run_c
===================================================================
RCS file: 16/patches/patch-erts_etc_common_ct_run_c
diff -N 16/patches/patch-erts_etc_common_ct_run_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 16/patches/patch-erts_etc_common_ct_run_c	15 Mar 2018 16:56:42 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang test runner handle versioned binaries.
+
+Index: erts/etc/common/ct_run.c
+--- erts/etc/common/ct_run.c.orig
++++ erts/etc/common/ct_run.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 16/patches/patch-erts_etc_common_dialyzer_c
===================================================================
RCS file: 16/patches/patch-erts_etc_common_dialyzer_c
diff -N 16/patches/patch-erts_etc_common_dialyzer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 16/patches/patch-erts_etc_common_dialyzer_c	15 Mar 2018 16:56:08 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let static analyzer handle versioned binaries.
+
+Index: erts/etc/common/dialyzer.c
+--- erts/etc/common/dialyzer.c.orig
++++ erts/etc/common/dialyzer.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 16/patches/patch-erts_etc_common_erlc_c
===================================================================
RCS file: 16/patches/patch-erts_etc_common_erlc_c
diff -N 16/patches/patch-erts_etc_common_erlc_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 16/patches/patch-erts_etc_common_erlc_c	15 Mar 2018 16:55:01 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang compiler handle versioned binaries.
+
+Index: erts/etc/common/erlc.c
+--- erts/etc/common/erlc.c.orig
++++ erts/etc/common/erlc.c
+@@ -52,7 +52,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 16/patches/patch-erts_etc_common_typer_c
===================================================================
RCS file: 16/patches/patch-erts_etc_common_typer_c
diff -N 16/patches/patch-erts_etc_common_typer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 16/patches/patch-erts_etc_common_typer_c	15 Mar 2018 16:57:52 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang type inspection handle versioned binaries.
+
+Index: erts/etc/common/typer.c
+--- erts/etc/common/typer.c.orig
++++ erts/etc/common/typer.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 16/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
===================================================================
RCS file: 16/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
diff -N 16/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 16/patches/patch-lib_dialyzer_src_dialyzer_plt_erl	15 Mar 2018 17:12:37 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Prevent collisions during static analysis when multiple versions of
+erlang are installed
+
+Index: lib/dialyzer/src/dialyzer_plt.erl
+--- lib/dialyzer/src/dialyzer_plt.erl.orig
++++ lib/dialyzer/src/dialyzer_plt.erl
+@@ -231,7 +231,7 @@ get_default_plt() ->
+ 	false ->
+ 	  plt_error("The HOME environment variable needs to be set " ++
+ 		    "so that Dialyzer knows where to find the default PLT");
+-	HomeDir -> filename:join(HomeDir, ".dialyzer_plt")
++	HomeDir -> filename:join(HomeDir, ".dialyzer${MAJ_V}_plt")
+       end;
+     UserSpecPlt -> UserSpecPlt
+   end.
Index: 17/Makefile
===================================================================
RCS file: /depot/cvs/openbsd/ports/lang/erlang/17/Makefile,v
retrieving revision 1.19
diff -u -p -r1.19 Makefile
--- 17/Makefile	9 Dec 2017 21:28:58 -0000	1.19
+++ 17/Makefile	3 Mar 2018 19:46:00 -0000
@@ -12,7 +12,7 @@ DISTNAME=	otp_src_$V
 PKGNAME-main=	erlang-$V
 PKGNAME-wx=	erlang-wx-$V
 
-REVISION-main=	9
+REVISION-main=	10
 REVISION-wx=	2
 
 VERSION_SPEC=	>=17v0,<18v0
Index: 17/patches/patch-Makefile_in
===================================================================
RCS file: 17/patches/patch-Makefile_in
diff -N 17/patches/patch-Makefile_in
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 17/patches/patch-Makefile_in	16 Mar 2018 03:26:45 -0000
@@ -0,0 +1,15 @@
+$OpenBSD$
+
+Create symlink so the build can handle versioned binaries
+
+Index: Makefile.in
+--- Makefile.in.orig
++++ Makefile.in
+@@ -528,6 +528,7 @@ $(BOOTSTRAP_ROOT)/bootstrap/bin/erl: $(ERL_TOP)/erts/e
+ 	        $(ERL_TOP)/erts/etc/unix/erl.src.src > \
+ 			$(BOOTSTRAP_ROOT)/bootstrap/bin/erl
+ 	@chmod 755 $(BOOTSTRAP_ROOT)/bootstrap/bin/erl
++	@(cd $(BOOTSTRAP_ROOT)/bootstrap/bin && $(LN_S) ./erl erl${MAJ_V})
+ 
+ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc: $(ERL_TOP)/bin/$(TARGET)/erlc $(BOOTSTRAP_ROOT)/bootstrap/target
+ 	@rm -f $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc
Index: 17/patches/patch-erts_etc_common_ct_run_c
===================================================================
RCS file: 17/patches/patch-erts_etc_common_ct_run_c
diff -N 17/patches/patch-erts_etc_common_ct_run_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 17/patches/patch-erts_etc_common_ct_run_c	16 Mar 2018 03:27:04 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang test runner handle versioned binaries.
+
+Index: erts/etc/common/ct_run.c
+--- erts/etc/common/ct_run.c.orig
++++ erts/etc/common/ct_run.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 17/patches/patch-erts_etc_common_dialyzer_c
===================================================================
RCS file: 17/patches/patch-erts_etc_common_dialyzer_c
diff -N 17/patches/patch-erts_etc_common_dialyzer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 17/patches/patch-erts_etc_common_dialyzer_c	16 Mar 2018 03:27:17 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let static analyzer handle versioned binaries.
+
+Index: erts/etc/common/dialyzer.c
+--- erts/etc/common/dialyzer.c.orig
++++ erts/etc/common/dialyzer.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 17/patches/patch-erts_etc_common_erlc_c
===================================================================
RCS file: 17/patches/patch-erts_etc_common_erlc_c
diff -N 17/patches/patch-erts_etc_common_erlc_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 17/patches/patch-erts_etc_common_erlc_c	16 Mar 2018 03:27:41 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang compiler handle versioned binaries.
+
+Index: erts/etc/common/erlc.c
+--- erts/etc/common/erlc.c.orig
++++ erts/etc/common/erlc.c
+@@ -52,7 +52,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 17/patches/patch-erts_etc_common_typer_c
===================================================================
RCS file: 17/patches/patch-erts_etc_common_typer_c
diff -N 17/patches/patch-erts_etc_common_typer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 17/patches/patch-erts_etc_common_typer_c	16 Mar 2018 03:28:01 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang type inspection handle versioned binaries.
+
+Index: erts/etc/common/typer.c
+--- erts/etc/common/typer.c.orig
++++ erts/etc/common/typer.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 17/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
===================================================================
RCS file: 17/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
diff -N 17/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 17/patches/patch-lib_dialyzer_src_dialyzer_plt_erl	16 Mar 2018 03:28:24 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Prevent collisions during static analysis when multiple versions of
+erlang are installed
+
+Index: lib/dialyzer/src/dialyzer_plt.erl
+--- lib/dialyzer/src/dialyzer_plt.erl.orig
++++ lib/dialyzer/src/dialyzer_plt.erl
+@@ -231,7 +231,7 @@ get_default_plt() ->
+ 	false ->
+ 	  plt_error("The HOME environment variable needs to be set " ++
+ 		    "so that Dialyzer knows where to find the default PLT");
+-	HomeDir -> filename:join(HomeDir, ".dialyzer_plt")
++	HomeDir -> filename:join(HomeDir, ".dialyzer${MAJ_V}_plt")
+       end;
+     UserSpecPlt -> UserSpecPlt
+   end.
Index: 17/pkg/PLIST-main
===================================================================
RCS file: /depot/cvs/openbsd/ports/lang/erlang/17/pkg/PLIST-main,v
retrieving revision 1.3
diff -u -p -r1.3 PLIST-main
--- 17/pkg/PLIST-main	29 Jun 2016 16:14:41 -0000	1.3
+++ 17/pkg/PLIST-main	3 Mar 2018 19:46:00 -0000
@@ -4558,7 +4558,7 @@ lib/erlang${SYSTEM_VSN}/lib/${XMERL}/src
 lib/erlang${SYSTEM_VSN}/lib/${XMERL}/src/xmerl_xs.erl
 lib/erlang${SYSTEM_VSN}/lib/${XMERL}/src/xmerl_xsd.erl
 lib/erlang${SYSTEM_VSN}/lib/${XMERL}/src/xmerl_xsd_type.erl
-@comment lib/erlang${SYSTEM_VSN}/man/
+lib/erlang${SYSTEM_VSN}/man/
 lib/erlang${SYSTEM_VSN}/man/man1/
 @man lib/erlang${SYSTEM_VSN}/man/man1/cdv.1
 @man lib/erlang${SYSTEM_VSN}/man/man1/ct_run.1
Index: 18/Makefile
===================================================================
RCS file: /depot/cvs/openbsd/ports/lang/erlang/18/Makefile,v
retrieving revision 1.15
diff -u -p -r1.15 Makefile
--- 18/Makefile	9 Dec 2017 21:28:58 -0000	1.15
+++ 18/Makefile	3 Mar 2018 19:48:22 -0000
@@ -12,7 +12,7 @@ DISTNAME=	otp_src_$V
 PKGNAME-main=	erlang-$V
 PKGNAME-wx=	erlang-wx-$V
 
-REVISION-main=	4
+REVISION-main=	5
 REVISION-wx=	2
 
 VERSION_SPEC=	>=18v0,<19v0
Index: 18/patches/patch-Makefile_in
===================================================================
RCS file: 18/patches/patch-Makefile_in
diff -N 18/patches/patch-Makefile_in
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 18/patches/patch-Makefile_in	16 Mar 2018 04:30:04 -0000
@@ -0,0 +1,15 @@
+$OpenBSD$
+
+Create symlink so the build can handle versioned binaries
+
+Index: Makefile.in
+--- Makefile.in.orig
++++ Makefile.in
+@@ -528,6 +528,7 @@ $(BOOTSTRAP_ROOT)/bootstrap/bin/erl: $(ERL_TOP)/erts/e
+ 	        $(ERL_TOP)/erts/etc/unix/erl.src.src > \
+ 			$(BOOTSTRAP_ROOT)/bootstrap/bin/erl
+ 	@chmod 755 $(BOOTSTRAP_ROOT)/bootstrap/bin/erl
++	@(cd $(BOOTSTRAP_ROOT)/bootstrap/bin && $(LN_S) ./erl erl${MAJ_V})
+ 
+ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc: $(ERL_TOP)/bin/$(TARGET)/erlc $(BOOTSTRAP_ROOT)/bootstrap/target
+ 	@rm -f $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc
Index: 18/patches/patch-erts_etc_common_ct_run_c
===================================================================
RCS file: 18/patches/patch-erts_etc_common_ct_run_c
diff -N 18/patches/patch-erts_etc_common_ct_run_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 18/patches/patch-erts_etc_common_ct_run_c	16 Mar 2018 04:30:26 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang test runner handle versioned binaries.
+
+Index: erts/etc/common/ct_run.c
+--- erts/etc/common/ct_run.c.orig
++++ erts/etc/common/ct_run.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 18/patches/patch-erts_etc_common_dialyzer_c
===================================================================
RCS file: 18/patches/patch-erts_etc_common_dialyzer_c
diff -N 18/patches/patch-erts_etc_common_dialyzer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 18/patches/patch-erts_etc_common_dialyzer_c	16 Mar 2018 04:30:43 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let static analyzer handle versioned binaries.
+
+Index: erts/etc/common/dialyzer.c
+--- erts/etc/common/dialyzer.c.orig
++++ erts/etc/common/dialyzer.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 18/patches/patch-erts_etc_common_erlc_c
===================================================================
RCS file: 18/patches/patch-erts_etc_common_erlc_c
diff -N 18/patches/patch-erts_etc_common_erlc_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 18/patches/patch-erts_etc_common_erlc_c	16 Mar 2018 04:31:03 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang compiler handle versioned binaries.
+
+Index: erts/etc/common/erlc.c
+--- erts/etc/common/erlc.c.orig
++++ erts/etc/common/erlc.c
+@@ -52,7 +52,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 18/patches/patch-erts_etc_common_typer_c
===================================================================
RCS file: 18/patches/patch-erts_etc_common_typer_c
diff -N 18/patches/patch-erts_etc_common_typer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 18/patches/patch-erts_etc_common_typer_c	16 Mar 2018 04:33:00 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang type inspection handle versioned binaries.
+
+Index: erts/etc/common/typer.c
+--- erts/etc/common/typer.c.orig
++++ erts/etc/common/typer.c
+@@ -49,7 +49,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 18/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
===================================================================
RCS file: 18/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
diff -N 18/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 18/patches/patch-lib_dialyzer_src_dialyzer_plt_erl	16 Mar 2018 04:33:27 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Prevent collisions during static analysis when multiple versions of
+erlang are installed
+
+Index: lib/dialyzer/src/dialyzer_plt.erl
+--- lib/dialyzer/src/dialyzer_plt.erl.orig
++++ lib/dialyzer/src/dialyzer_plt.erl
+@@ -231,7 +231,7 @@ get_default_plt() ->
+ 	false ->
+ 	  plt_error("The HOME environment variable needs to be set " ++
+ 		    "so that Dialyzer knows where to find the default PLT");
+-	HomeDir -> filename:join(HomeDir, ".dialyzer_plt")
++	HomeDir -> filename:join(HomeDir, ".dialyzer${MAJ_V}_plt")
+       end;
+     UserSpecPlt -> UserSpecPlt
+   end.
Index: 19/Makefile
===================================================================
RCS file: /depot/cvs/openbsd/ports/lang/erlang/19/Makefile,v
retrieving revision 1.9
diff -u -p -r1.9 Makefile
--- 19/Makefile	9 Dec 2017 21:28:58 -0000	1.9
+++ 19/Makefile	3 Mar 2018 19:46:00 -0000
@@ -13,7 +13,7 @@ PKGNAME-main=	erlang-$V
 PKGNAME-wx=	erlang-wx-$V
 REVISION-wx=	0
 
-REVISION-main=	2
+REVISION-main=	3
 
 VERSION_SPEC=	>=19v0,<20v0
 PKGSPEC-main=	erlang-${VERSION_SPEC}
Index: 19/patches/patch-Makefile_in
===================================================================
RCS file: 19/patches/patch-Makefile_in
diff -N 19/patches/patch-Makefile_in
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 19/patches/patch-Makefile_in	16 Mar 2018 04:37:16 -0000
@@ -0,0 +1,15 @@
+$OpenBSD$
+
+Create symlink so the build can handle versioned binaries
+
+Index: Makefile.in
+--- Makefile.in.orig
++++ Makefile.in
+@@ -529,6 +529,7 @@ $(BOOTSTRAP_ROOT)/bootstrap/bin/erl: $(ERL_TOP)/erts/e
+ 	        $(ERL_TOP)/erts/etc/unix/erl.src.src > \
+ 			$(BOOTSTRAP_ROOT)/bootstrap/bin/erl
+ 	@chmod 755 $(BOOTSTRAP_ROOT)/bootstrap/bin/erl
++	@(cd $(BOOTSTRAP_ROOT)/bootstrap/bin && $(LN_S) ./erl erl${MAJ_V})
+ 
+ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc: $(ERL_TOP)/bin/$(TARGET)/erlc $(BOOTSTRAP_ROOT)/bootstrap/target
+ 	@rm -f $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc
Index: 19/patches/patch-erts_etc_common_ct_run_c
===================================================================
RCS file: 19/patches/patch-erts_etc_common_ct_run_c
diff -N 19/patches/patch-erts_etc_common_ct_run_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 19/patches/patch-erts_etc_common_ct_run_c	16 Mar 2018 04:37:34 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang test runner handle versioned binaries.
+
+Index: erts/etc/common/ct_run.c
+--- erts/etc/common/ct_run.c.orig
++++ erts/etc/common/ct_run.c
+@@ -50,7 +50,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 19/patches/patch-erts_etc_common_dialyzer_c
===================================================================
RCS file: 19/patches/patch-erts_etc_common_dialyzer_c
diff -N 19/patches/patch-erts_etc_common_dialyzer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 19/patches/patch-erts_etc_common_dialyzer_c	16 Mar 2018 04:38:50 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let static analyzer handle versioned binaries.
+
+Index: erts/etc/common/dialyzer.c
+--- erts/etc/common/dialyzer.c.orig
++++ erts/etc/common/dialyzer.c
+@@ -50,7 +50,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 19/patches/patch-erts_etc_common_erlc_c
===================================================================
RCS file: 19/patches/patch-erts_etc_common_erlc_c
diff -N 19/patches/patch-erts_etc_common_erlc_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 19/patches/patch-erts_etc_common_erlc_c	16 Mar 2018 04:39:09 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang compiler handle versioned binaries.
+
+Index: erts/etc/common/erlc.c
+--- erts/etc/common/erlc.c.orig
++++ erts/etc/common/erlc.c
+@@ -53,7 +53,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 19/patches/patch-erts_etc_common_typer_c
===================================================================
RCS file: 19/patches/patch-erts_etc_common_typer_c
diff -N 19/patches/patch-erts_etc_common_typer_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 19/patches/patch-erts_etc_common_typer_c	16 Mar 2018 04:39:27 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Let erlang type inspection handle versioned binaries.
+
+Index: erts/etc/common/typer.c
+--- erts/etc/common/typer.c.orig
++++ erts/etc/common/typer.c
+@@ -50,7 +50,7 @@ static int eargc;		/* Number of arguments in eargv. */
+ #else
+ #  define QUOTE(s) s
+ #  define IS_DIRSEP(c) ((c) == '/')
+-#  define ERL_NAME "erl"
++#  define ERL_NAME "erl${MAJ_V}"
+ #endif
+ 
+ #define UNSHIFT(s) eargc++, eargv--; eargv[0] = QUOTE(s)
Index: 19/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
===================================================================
RCS file: 19/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
diff -N 19/patches/patch-lib_dialyzer_src_dialyzer_plt_erl
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ 19/patches/patch-lib_dialyzer_src_dialyzer_plt_erl	16 Mar 2018 04:40:05 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Prevent collisions during static analysis when multiple versions of
+erlang are installed
+
+Index: lib/dialyzer/src/dialyzer_plt.erl
+--- lib/dialyzer/src/dialyzer_plt.erl.orig
++++ lib/dialyzer/src/dialyzer_plt.erl
+@@ -235,7 +235,7 @@ get_default_plt() ->
+   case os:getenv("DIALYZER_PLT") of
+     false ->
+       {ok,[[HomeDir]]} = init:get_argument(home),
+-      filename:join(HomeDir, ".dialyzer_plt");
++      filename:join(HomeDir, ".dialyzer${MAJ_V}_plt");
+     UserSpecPlt -> UserSpecPlt
+   end.
+ 

Reply via email to