summaryrefslogtreecommitdiff
path: root/dev-lang/erlang
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-04 05:48:38 -0500
commitbfd9c39e4712ebdb442d4ca0673061faed1e70e1 (patch)
tree0d7a74b4463ee387f9cf9368ceb1b757f694f72a /dev-lang/erlang
parentf716a9fe6455d39eef01e718aae68dae61c19704 (diff)
downloadbaldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.gz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.tar.xz
baldeagleos-repo-bfd9c39e4712ebdb442d4ca0673061faed1e70e1.zip
Revert "Adding metadata"
This reverts commit f716a9fe6455d39eef01e718aae68dae61c19704.
Diffstat (limited to 'dev-lang/erlang')
-rw-r--r--dev-lang/erlang/Manifest4
-rw-r--r--dev-lang/erlang/erlang-29.0.1.ebuild187
-rw-r--r--dev-lang/erlang/erlang-29.0.ebuild187
-rw-r--r--dev-lang/erlang/files/50erlang-gentoo.el5
-rw-r--r--dev-lang/erlang/files/epmd.confd-r22
-rw-r--r--dev-lang/erlang/files/epmd.init26
-rw-r--r--dev-lang/erlang/files/epmd.init-r223
-rw-r--r--dev-lang/erlang/files/epmd.init-r323
-rw-r--r--dev-lang/erlang/files/epmd.service9
-rw-r--r--dev-lang/erlang/files/epmd.service-r111
-rw-r--r--dev-lang/erlang/files/erlang-24.0.2-serial-configure.patch12
-rw-r--r--dev-lang/erlang/files/erlang-27.0-dont-ignore-LDFLAGS.patch23
-rw-r--r--dev-lang/erlang/metadata.xml34
13 files changed, 546 insertions, 0 deletions
diff --git a/dev-lang/erlang/Manifest b/dev-lang/erlang/Manifest
new file mode 100644
index 000000000000..b77dbd5324c3
--- /dev/null
+++ b/dev-lang/erlang/Manifest
@@ -0,0 +1,4 @@
+DIST erlang-29.0.1.tar.gz 65084552 BLAKE2B 7c29ecb1ca2dfd48484f8dfc058f10dc9cdcda8c32a62001e8e65a0ef9d72e3e31e2195277773fa2b32230fb05bd66b8c03eb3ebda6f6c24900b80ff67c69dc0 SHA512 43b302613d9d02bc178e0d10718d643c65a9969da6dd2ac21a1d95f7c3c2d06dfbcebafa5eb6854ba807b70d760790b59897b62366c913499f25bc30e2d4fe8b
+DIST erlang-29.0.tar.gz 65074776 BLAKE2B 254b0ae125516a0734f753cc89bd0f18f1a115521eba9f5e5b84d21ca0d2c11f5b423cd9852ce370a30dd8d734ded09e514d78ba689a524b57f4fa312b941506 SHA512 eecee96fca40db445828ccb7271b96dc97a34b5195fe0c7937442c04b7c42af1cab0bc1c8081ea71b1bb2661ac15a2f2c9124535680af4f82ab0d1b98c0dc96e
+DIST erlang_doc_html_29.0.tar.gz 32388245 BLAKE2B ca2c066b2fbae1aedd58b4ac5eb5702adbe20e87f7d15c928f40b64bcb4df6b887881b6e621cf542a4a00d43de469f401d99b02d4acbc66103d6afded5823ca9 SHA512 4fa2ba09b4795080816686216ca5d7a9e28c7a09788f4a2e81615cf5c6c8040d319d2c56dcbb8f6be911a68b028c92af75d4342948ae016517a651bec4b60595
+DIST erlang_doc_man_29.0.tar.gz 1932141 BLAKE2B 037f2faee2667f6cc8451cc92b791809b44183251342b009498d58f9fd6a9a2b440405c1349dd5221b938cd29c8f924fed12e8339e91842de4f0a03a8a0ddbaa SHA512 30ea8715f81d1af77697622b15ac486824e7d2be9dc799377b2059409d5014b6d3de91bdd51c2478b950d41c3e15a8001d8a37fdc96a3c584287ee2218d8bbfa
diff --git a/dev-lang/erlang/erlang-29.0.1.ebuild b/dev-lang/erlang/erlang-29.0.1.ebuild
new file mode 100644
index 000000000000..f043186e549e
--- /dev/null
+++ b/dev-lang/erlang/erlang-29.0.1.ebuild
@@ -0,0 +1,187 @@
+# Copyright 2021-2026 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+WX_GTK_VER="3.2-gtk3"
+
+inherit autotools elisp-common flag-o-matic java-pkg-opt-2 systemd toolchain-funcs wxwidgets
+
+UPSTREAM_V="$(ver_cut 1-2)"
+
+DESCRIPTION="Erlang programming language, runtime environment and libraries (OTP)"
+HOMEPAGE="https://www.erlang.org/"
+SRC_URI="https://github.com/erlang/otp/archive/refs/tags/OTP-${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/erlang/otp/releases/download/OTP-${UPSTREAM_V}/otp_doc_man_${UPSTREAM_V}.tar.gz -> ${PN}_doc_man_${UPSTREAM_V}.tar.gz
+ doc? ( https://github.com/erlang/otp/releases/download/OTP-${UPSTREAM_V}/otp_doc_html_${UPSTREAM_V}.tar.gz -> ${PN}_doc_html_${UPSTREAM_V}.tar.gz )"
+
+LICENSE="Apache-2.0"
+# We use this subslot because Compiled HiPE Code can be loaded on the exact
+# same build of ERTS that was used when compiling the code. See
+# http://erlang.org/doc/system_principles/misc.html for more information.
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="doc emacs java +kpoll odbc sctp ssl systemd tk wxwidgets"
+
+RDEPEND="
+ acct-group/epmd
+ acct-user/epmd
+ sys-libs/ncurses:0
+ sys-libs/zlib
+ emacs? ( >=app-editors/emacs-23.1:* )
+ java? ( >=virtual/jdk-1.8:* )
+ odbc? ( dev-db/unixODBC )
+ sctp? ( net-misc/lksctp-tools )
+ ssl? (
+ >=dev-libs/openssl-0.9.7d:0=
+
+ )
+ systemd? ( sys-apps/systemd )
+ wxwidgets? (
+ dev-libs/glib:2
+ x11-libs/wxGTK:${WX_GTK_VER}[X,opengl]
+ )
+"
+DEPEND="${RDEPEND}
+ dev-lang/perl
+"
+
+S="${WORKDIR}/otp-OTP-${PV}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-27.0-dont-ignore-LDFLAGS.patch
+ "${FILESDIR}"/${PN}-24.0.2-serial-configure.patch
+)
+
+SITEFILE=50"${PN}"-gentoo.el
+
+src_prepare() {
+ default
+
+ tc-export AR CPP CXX LD
+
+ # bug #797886: erlang's VM does unsafe casts for ints
+ # to pointers and back. This breaks on gcc-11 -flto.
+ append-flags -fno-strict-aliasing
+
+ # Ensure that we use erl_interface's libei.a, and not the system
+ # libei.so from dev-libs/libei. Bug #912888.
+ sed -i 's/-lei$/-l:libei.a/' \
+ "${S}"/lib/odbc/c_src/Makefile.in || die
+ (cd "${S}"/lib/odbc &&
+ eautoconf -B "${S}"/make/autoconf &&
+ eautoheader -B "${S}"/make/autoconf) || die
+}
+
+src_configure() {
+ use wxwidgets && setup-wxwidgets
+
+ local myconf=(
+ --disable-builtin-zlib
+
+ # don't search for static zlib
+ --with-ssl-zlib=no
+
+ $(use_enable kpoll kernel-poll)
+ $(use_with java javac)
+ $(use_with odbc)
+ $(use_enable sctp)
+ $(use_with ssl ssl)
+ $(use_enable ssl dynamic-ssl-lib)
+ $(use_enable systemd)
+ $(usex wxwidgets "--with-wx-config=${WX_CONFIG}" "--with-wxdir=/dev/null")
+ )
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ emake
+
+ if use doc ; then
+ emake docs DOC_TARGETS=chunks
+ fi
+
+ if use emacs ; then
+ pushd lib/tools/emacs &>/dev/null || die
+ elisp-compile *.el
+ popd &>/dev/null || die
+ fi
+}
+
+extract_version() {
+ local path="$1"
+ local var_name="$2"
+ sed -n -e "/^${var_name} = \(.*\)$/s::\1:p" "${S}/${path}/vsn.mk" || die "extract_version() failed"
+}
+
+src_install() {
+ local erl_libdir_rel="$(get_libdir)/erlang"
+ local erl_libdir="/usr/${erl_libdir_rel}"
+ local erl_interface_ver="$(extract_version lib/erl_interface EI_VSN)"
+ local erl_erts_ver="$(extract_version erts VSN)"
+ local my_manpath="/usr/share/${PN}/man"
+
+ [[ -z "${erl_erts_ver}" ]] && die "Couldn't determine erts version"
+ [[ -z "${erl_interface_ver}" ]] && die "Couldn't determine interface version"
+
+ emake INSTALL_PREFIX="${D}" install
+
+ if use doc ; then
+ emake INSTALL_PREFIX="${D}" install-docs DOC_TARGETS=chunks
+
+ # Note: we explicitly install docs into:
+ # /usr/share/doc/${PF}/{doc,lib,erts-*}
+ # To maintain that layout we gather everything in 'html-docs'.
+ # See bug #684376.
+ mkdir html-docs || die
+ mv "${WORKDIR}"/doc "${WORKDIR}"/lib "${WORKDIR}"/erts-* html-docs/ || die
+ local DOCS=( "AUTHORS" "HOWTO"/* "README.md" "CONTRIBUTING.md" html-docs/. )
+ docompress -x /usr/share/doc/${PF}
+ else
+ local DOCS=("README.md")
+ fi
+
+ einstalldocs
+
+ dosym "../${erl_libdir_rel}/bin/erl" /usr/bin/erl
+ dosym "../${erl_libdir_rel}/bin/erlc" /usr/bin/erlc
+ dosym "../${erl_libdir_rel}/bin/escript" /usr/bin/escript
+ dosym "../${erl_libdir_rel}/lib/erl_interface-${erl_interface_ver}/bin/erl_call" /usr/bin/erl_call
+ dosym "../${erl_libdir_rel}/erts-${erl_erts_ver}/bin/beam.smp" /usr/bin/beam.smp
+
+ ## Clean up the no longer needed files
+ rm "${ED}/${erl_libdir}/Install" || die
+
+ # Bug #922743
+ docompress "${my_manpath}"
+
+ insinto "${my_manpath}"
+ doins -r "${WORKDIR}"/man/*
+ # extend MANPATH, so the normal man command can find it
+ # see bug 189639
+ newenvd - "90erlang" <<-_EOF_
+ MANPATH="${my_manpath}"
+ _EOF_
+
+ if use emacs ; then
+ elisp-install erlang lib/tools/emacs/*.{el,elc}
+ sed -e "s:/usr/share:${EPREFIX}/usr/share:g" \
+ "${FILESDIR}/${SITEFILE}" > "${T}/${SITEFILE}" || die
+ elisp-site-file-install "${T}/${SITEFILE}"
+ fi
+
+ newinitd "${FILESDIR}"/epmd.init-r3 epmd
+ use systemd && systemd_newunit "${FILESDIR}"/epmd.service-r1 epmd.service
+}
+
+src_test() {
+ # Only run a subset of tests to test that everything was built
+ # successfully, otherwise we will be here for a long time.
+ emake kernel_test ARGS="-suite os_SUITE"
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/dev-lang/erlang/erlang-29.0.ebuild b/dev-lang/erlang/erlang-29.0.ebuild
new file mode 100644
index 000000000000..c39800b6dd21
--- /dev/null
+++ b/dev-lang/erlang/erlang-29.0.ebuild
@@ -0,0 +1,187 @@
+# Copyright 2021-2026 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+WX_GTK_VER="3.2-gtk3"
+
+inherit autotools elisp-common flag-o-matic java-pkg-opt-2 systemd toolchain-funcs wxwidgets
+
+UPSTREAM_V="$(ver_cut 1-2)"
+
+DESCRIPTION="Erlang programming language, runtime environment and libraries (OTP)"
+HOMEPAGE="https://www.erlang.org/"
+SRC_URI="https://github.com/erlang/otp/archive/OTP-${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/erlang/otp/releases/download/OTP-${UPSTREAM_V}/otp_doc_man_${UPSTREAM_V}.tar.gz -> ${PN}_doc_man_${UPSTREAM_V}.tar.gz
+ doc? ( https://github.com/erlang/otp/releases/download/OTP-${UPSTREAM_V}/otp_doc_html_${UPSTREAM_V}.tar.gz -> ${PN}_doc_html_${UPSTREAM_V}.tar.gz )"
+
+LICENSE="Apache-2.0"
+# We use this subslot because Compiled HiPE Code can be loaded on the exact
+# same build of ERTS that was used when compiling the code. See
+# http://erlang.org/doc/system_principles/misc.html for more information.
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="doc emacs java +kpoll odbc sctp ssl systemd tk wxwidgets"
+
+RDEPEND="
+ acct-group/epmd
+ acct-user/epmd
+ sys-libs/ncurses:0
+ sys-libs/zlib
+ emacs? ( >=app-editors/emacs-23.1:* )
+ java? ( >=virtual/jdk-1.8:* )
+ odbc? ( dev-db/unixODBC )
+ sctp? ( net-misc/lksctp-tools )
+ ssl? (
+ >=dev-libs/openssl-0.9.7d:0=
+
+ )
+ systemd? ( sys-apps/systemd )
+ wxwidgets? (
+ dev-libs/glib:2
+ x11-libs/wxGTK:${WX_GTK_VER}[X,opengl]
+ )
+"
+DEPEND="${RDEPEND}
+ dev-lang/perl
+"
+
+S="${WORKDIR}/otp-OTP-${PV}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-27.0-dont-ignore-LDFLAGS.patch
+ "${FILESDIR}"/${PN}-24.0.2-serial-configure.patch
+)
+
+SITEFILE=50"${PN}"-gentoo.el
+
+src_prepare() {
+ default
+
+ tc-export AR CPP CXX LD
+
+ # bug #797886: erlang's VM does unsafe casts for ints
+ # to pointers and back. This breaks on gcc-11 -flto.
+ append-flags -fno-strict-aliasing
+
+ # Ensure that we use erl_interface's libei.a, and not the system
+ # libei.so from dev-libs/libei. Bug #912888.
+ sed -i 's/-lei$/-l:libei.a/' \
+ "${S}"/lib/odbc/c_src/Makefile.in || die
+ (cd "${S}"/lib/odbc &&
+ eautoconf -B "${S}"/make/autoconf &&
+ eautoheader -B "${S}"/make/autoconf) || die
+}
+
+src_configure() {
+ use wxwidgets && setup-wxwidgets
+
+ local myconf=(
+ --disable-builtin-zlib
+
+ # don't search for static zlib
+ --with-ssl-zlib=no
+
+ $(use_enable kpoll kernel-poll)
+ $(use_with java javac)
+ $(use_with odbc)
+ $(use_enable sctp)
+ $(use_with ssl ssl)
+ $(use_enable ssl dynamic-ssl-lib)
+ $(use_enable systemd)
+ $(usex wxwidgets "--with-wx-config=${WX_CONFIG}" "--with-wxdir=/dev/null")
+ )
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ emake
+
+ if use doc ; then
+ emake docs DOC_TARGETS=chunks
+ fi
+
+ if use emacs ; then
+ pushd lib/tools/emacs &>/dev/null || die
+ elisp-compile *.el
+ popd &>/dev/null || die
+ fi
+}
+
+extract_version() {
+ local path="$1"
+ local var_name="$2"
+ sed -n -e "/^${var_name} = \(.*\)$/s::\1:p" "${S}/${path}/vsn.mk" || die "extract_version() failed"
+}
+
+src_install() {
+ local erl_libdir_rel="$(get_libdir)/erlang"
+ local erl_libdir="/usr/${erl_libdir_rel}"
+ local erl_interface_ver="$(extract_version lib/erl_interface EI_VSN)"
+ local erl_erts_ver="$(extract_version erts VSN)"
+ local my_manpath="/usr/share/${PN}/man"
+
+ [[ -z "${erl_erts_ver}" ]] && die "Couldn't determine erts version"
+ [[ -z "${erl_interface_ver}" ]] && die "Couldn't determine interface version"
+
+ emake INSTALL_PREFIX="${D}" install
+
+ if use doc ; then
+ emake INSTALL_PREFIX="${D}" install-docs DOC_TARGETS=chunks
+
+ # Note: we explicitly install docs into:
+ # /usr/share/doc/${PF}/{doc,lib,erts-*}
+ # To maintain that layout we gather everything in 'html-docs'.
+ # See bug #684376.
+ mkdir html-docs || die
+ mv "${WORKDIR}"/doc "${WORKDIR}"/lib "${WORKDIR}"/erts-* html-docs/ || die
+ local DOCS=( "AUTHORS" "HOWTO"/* "README.md" "CONTRIBUTING.md" html-docs/. )
+ docompress -x /usr/share/doc/${PF}
+ else
+ local DOCS=("README.md")
+ fi
+
+ einstalldocs
+
+ dosym "../${erl_libdir_rel}/bin/erl" /usr/bin/erl
+ dosym "../${erl_libdir_rel}/bin/erlc" /usr/bin/erlc
+ dosym "../${erl_libdir_rel}/bin/escript" /usr/bin/escript
+ dosym "../${erl_libdir_rel}/lib/erl_interface-${erl_interface_ver}/bin/erl_call" /usr/bin/erl_call
+ dosym "../${erl_libdir_rel}/erts-${erl_erts_ver}/bin/beam.smp" /usr/bin/beam.smp
+
+ ## Clean up the no longer needed files
+ rm "${ED}/${erl_libdir}/Install" || die
+
+ # Bug #922743
+ docompress "${my_manpath}"
+
+ insinto "${my_manpath}"
+ doins -r "${WORKDIR}"/man/*
+ # extend MANPATH, so the normal man command can find it
+ # see bug 189639
+ newenvd - "90erlang" <<-_EOF_
+ MANPATH="${my_manpath}"
+ _EOF_
+
+ if use emacs ; then
+ elisp-install erlang lib/tools/emacs/*.{el,elc}
+ sed -e "s:/usr/share:${EPREFIX}/usr/share:g" \
+ "${FILESDIR}/${SITEFILE}" > "${T}/${SITEFILE}" || die
+ elisp-site-file-install "${T}/${SITEFILE}"
+ fi
+
+ newinitd "${FILESDIR}"/epmd.init-r3 epmd
+ use systemd && systemd_newunit "${FILESDIR}"/epmd.service-r1 epmd.service
+}
+
+src_test() {
+ # Only run a subset of tests to test that everything was built
+ # successfully, otherwise we will be here for a long time.
+ emake kernel_test ARGS="-suite os_SUITE"
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/dev-lang/erlang/files/50erlang-gentoo.el b/dev-lang/erlang/files/50erlang-gentoo.el
new file mode 100644
index 000000000000..db1ae7636f1d
--- /dev/null
+++ b/dev-lang/erlang/files/50erlang-gentoo.el
@@ -0,0 +1,5 @@
+;;; erlang site-lisp configuration
+
+(add-to-list 'load-path "@SITELISP@")
+(require 'erlang-start)
+(setq erlang-root-dir "/usr/share")
diff --git a/dev-lang/erlang/files/epmd.confd-r2 b/dev-lang/erlang/files/epmd.confd-r2
new file mode 100644
index 000000000000..69fcb0d2aa17
--- /dev/null
+++ b/dev-lang/erlang/files/epmd.confd-r2
@@ -0,0 +1,2 @@
+#arguments for run erlang
+command_args="-address 127.0.0.1"
diff --git a/dev-lang/erlang/files/epmd.init b/dev-lang/erlang/files/epmd.init
new file mode 100644
index 000000000000..92318d051bff
--- /dev/null
+++ b/dev-lang/erlang/files/epmd.init
@@ -0,0 +1,26 @@
+#!/sbin/openrc-run
+# Copyright 2010-2019 Gentoo Authors
+# Distributed under the terms of the Apache License, Version 2.0
+
+ZT_ADDRESS=""
+pidfile="/var/run/epmd.pid"
+command_args="-daemon -relaxed_command_check -address 127.0.0.1"
+
+depend() {
+ need net.lo
+ before sshd
+}
+
+start() {
+ ebegin "Starting Erlang Port Mapper Daemon"
+ start-stop-daemon --start --quiet \
+ --pidfile $pidfile \
+ --exec /usr/bin/epmd -- $command_args
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping Erlang Port Mapper Daemon"
+ /usr/bin/epmd -kill >/dev/null
+ eend $?
+}
diff --git a/dev-lang/erlang/files/epmd.init-r2 b/dev-lang/erlang/files/epmd.init-r2
new file mode 100644
index 000000000000..52f6d72b0fe7
--- /dev/null
+++ b/dev-lang/erlang/files/epmd.init-r2
@@ -0,0 +1,23 @@
+#!/sbin/openrc-run
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the Erlang Public License 1.1
+
+name="Erlang Port Mapper Daemon"
+
+command="/usr/bin/epmd"
+command_user="epmd"
+command_group="epmd"
+
+command_background=yes
+pidfile="/var/run/epmd.pid"
+
+depend() {
+ need net.lo
+ before sshd
+}
+
+stop() {
+ ebegin "Stopping ${name}"
+ ${command} -kill >/dev/null
+ eend $?
+}
diff --git a/dev-lang/erlang/files/epmd.init-r3 b/dev-lang/erlang/files/epmd.init-r3
new file mode 100644
index 000000000000..7748a94c2ac7
--- /dev/null
+++ b/dev-lang/erlang/files/epmd.init-r3
@@ -0,0 +1,23 @@
+#!/sbin/openrc-run
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the Erlang Public License 1.1
+
+name="Erlang Port Mapper Daemon"
+
+command="/usr/bin/epmd"
+command_user="epmd"
+command_group="epmd"
+
+command_background=yes
+pidfile="/var/run/epmd.pid"
+
+depend() {
+ use net
+ before sshd
+}
+
+stop() {
+ ebegin "Stopping ${name}"
+ ${command} -kill >/dev/null
+ eend $?
+}
diff --git a/dev-lang/erlang/files/epmd.service b/dev-lang/erlang/files/epmd.service
new file mode 100644
index 000000000000..57382ff36a40
--- /dev/null
+++ b/dev-lang/erlang/files/epmd.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Erlang Portmapper Daemon
+Wants=network.target
+
+[Service]
+ExecStart=/usr/bin/epmd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dev-lang/erlang/files/epmd.service-r1 b/dev-lang/erlang/files/epmd.service-r1
new file mode 100644
index 000000000000..ca0940055305
--- /dev/null
+++ b/dev-lang/erlang/files/epmd.service-r1
@@ -0,0 +1,11 @@
+[Unit]
+Description=Erlang Portmapper Daemon
+Wants=network.target
+
+[Service]
+ExecStart=/usr/bin/epmd
+User=epmd
+Group=epmd
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dev-lang/erlang/files/erlang-24.0.2-serial-configure.patch b/dev-lang/erlang/files/erlang-24.0.2-serial-configure.patch
new file mode 100644
index 000000000000..5068be153eaa
--- /dev/null
+++ b/dev-lang/erlang/files/erlang-24.0.2-serial-configure.patch
@@ -0,0 +1,12 @@
+https://bugs.gentoo.org/790563
+--- a/configure
++++ b/configure
+@@ -355,7 +355,7 @@ for app_dir in $app_dirs; do
+ echo ""
+ elif test $app_dir != erts; then
+ echo $cmd_str >./configure.result.command
+- eval $cmd_str 1>./configure.result.stdout 2>./configure.result.stderr || echo "fatal" > "./configure.result.failed" &
++ eval $cmd_str 1>./configure.result.stdout 2>./configure.result.stderr || echo "fatal" > "./configure.result.failed"
+ else
+ # ERTS configure gets to use stdout/stderr; the others are printed when done...
+ echo "=== Running configure in $ERL_TOP/erts ==="
diff --git a/dev-lang/erlang/files/erlang-27.0-dont-ignore-LDFLAGS.patch b/dev-lang/erlang/files/erlang-27.0-dont-ignore-LDFLAGS.patch
new file mode 100644
index 000000000000..caa582d1773e
--- /dev/null
+++ b/dev-lang/erlang/files/erlang-27.0-dont-ignore-LDFLAGS.patch
@@ -0,0 +1,23 @@
+--- a/lib/megaco/src/flex/Makefile.in
++++ b/lib/megaco/src/flex/Makefile.in
+@@ -47,7 +47,7 @@
+ CC = @DED_CC@
+ CFLAGS_MT = $(CFLAGS) @DED_THR_DEFS@
+ LD = @DED_LD@
+-LDFLAGS = @DED_LDFLAGS@
++LDFLAGS += @DED_LDFLAGS@
+ LEX = @LEX@
+ LEXLIB = @LEXLIB@
+ PERL = @PERL@
+--- a/lib/odbc/c_src/Makefile.in
++++ b/lib/odbc/c_src/Makefile.in
+@@ -82,7 +82,7 @@
+ CC = @CC@
+ CFLAGS = $(TYPEFLAGS) @CFLAGS@ @THR_DEFS@ @DEFS@
+ EI_LDFLAGS = -L$(EI_ROOT)/obj$(TYPEMARKER)/$(TARGET) $(EI_LIB)
+ LD = @LD@
+-LDFLAGS = $(EI_LDFLAGS) $(ODBC_LIB)
++LDFLAGS += $(EI_LDFLAGS) $(ODBC_LIB)
+ LIBS = @LIBS@ @THR_LIBS@
+ INCLUDES = -I. $(ODBC_INCLUDE) $(EI_INCLUDE)
+ TARGET_FLAGS = @TARGET_FLAGS@
diff --git a/dev-lang/erlang/metadata.xml b/dev-lang/erlang/metadata.xml
new file mode 100644
index 000000000000..5735616518be
--- /dev/null
+++ b/dev-lang/erlang/metadata.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>dev@liguros.net</email>
+ <name>Development</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>slyfox@gentoo.org</email>
+ <name>Sergei Trofimovich</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>arkamar@atlas.cz</email>
+ <name>Petr Vaněk</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription>
+ Erlang is a programming language designed at the Ericsson
+ Computer Science Laboratory. Open-source Erlang is being
+ released to help encourage the spread of Erlang outside
+ Ericsson.
+ </longdescription>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:erlang:erlang</remote-id>
+ </upstream>
+ <use>
+ <flag name="hipe">HIgh Performance Erlang extension</flag>
+ <flag name="kpoll">Enable kernel polling support</flag>
+ </use>
+ <origin>ports</origin>
+</pkgmetadata> \ No newline at end of file