[erlang] Create group and user for EPMD
by Peter Lemenkov
commit 59867aa612beebea9e0eca9ca8b0a305f1ffd32e
Author: Peter Lemenkov <lemenkov(a)gmail.com>
Date: Mon Mar 31 12:39:45 2014 +0400
Create group and user for EPMD
Signed-off-by: Peter Lemenkov <lemenkov(a)gmail.com>
erlang.spec | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/erlang.spec b/erlang.spec
index 6fbba7e..0df6175 100644
--- a/erlang.spec
+++ b/erlang.spec
@@ -32,7 +32,7 @@
Name: erlang
Version: %{upstream_ver}
-Release: %{upstream_rel_for_rpm}.3%{?dist}
+Release: %{upstream_rel_for_rpm}.4%{?dist}
Summary: General-purpose programming language and runtime environment
Group: Development/Languages
@@ -131,6 +131,8 @@ BuildRequires: xemacs-packages-extra-el
%endif
%if 0%{?el7}%{?fedora}
+# for <systemd/sd-daemon.h>
+BuildRequires: systemd-devel
Requires(post): systemd
Requires(preun):systemd
Requires(postun):systemd
@@ -1177,6 +1179,13 @@ install -D -p -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/epmd.socket
%endif
+%pre erts
+getent group epmd >/dev/null || groupadd -r epmd
+getent passwd epmd >/dev/null || \
+useradd -r -g epmd -d /tmp -s /sbin/nologin \
+-c "Erlang Port Mapper Daemon" epmd 2>/dev/null || :
+
+
%clean
rm -rf $RPM_BUILD_ROOT
@@ -2316,6 +2325,9 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Fri Mar 28 2014 Peter Lemenkov <lemenkov(a)gmail.com> - R16B-03.4
+- Create group and user for EPMD
+
* Thu Mar 27 2014 Peter Lemenkov <lemenkov(a)gmail.com> - R16B-03.3
- Ver. R16B03-1 (Bugfix release)
- Enabled systemd support in EPMD
9 years, 8 months
[erlang/f19] (7 commits) ...Removed leftover
by Peter Lemenkov
Summary of changes:
2845f91... Don't generate signature and stats - they are noisy (*)
52d3d2b... A few changes to get EPEL7 boostrapped and built (*)
b87fdb5... Don't bootstrap by default (*)
77ce5ed... Use fedorahosted repo instead of private github forks (*)
f7eb6dd... Update to the R16B03-1 (*)
9467e05... Quick build fix (*)
3f5b8b5... Removed leftover (*)
(*) This commit already existed in another branch; no separate mail sent
9 years, 8 months
[erlang/f20] (7 commits) ...Removed leftover
by Peter Lemenkov
Summary of changes:
2845f91... Don't generate signature and stats - they are noisy (*)
52d3d2b... A few changes to get EPEL7 boostrapped and built (*)
b87fdb5... Don't bootstrap by default (*)
77ce5ed... Use fedorahosted repo instead of private github forks (*)
f7eb6dd... Update to the R16B03-1 (*)
9467e05... Quick build fix (*)
3f5b8b5... Removed leftover (*)
(*) This commit already existed in another branch; no separate mail sent
9 years, 8 months
[erlang] Removed leftover
by Peter Lemenkov
commit 3f5b8b5019140c447c7b2efef92f1250ada7befa
Author: Peter Lemenkov <lemenkov(a)gmail.com>
Date: Thu Mar 27 19:08:30 2014 +0400
Removed leftover
Signed-off-by: Peter Lemenkov <lemenkov(a)gmail.com>
otp_src_R16B03.readme | 718 -------------------------------------------------
1 files changed, 0 insertions(+), 718 deletions(-)
9 years, 8 months
[erlang] Quick build fix
by Peter Lemenkov
commit 9467e052022130f1bdf7d2dc4a1528bf1cbf989f
Author: Peter Lemenkov <lemenkov(a)gmail.com>
Date: Thu Mar 27 19:05:04 2014 +0400
Quick build fix
Signed-off-by: Peter Lemenkov <lemenkov(a)gmail.com>
erlang.spec | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/erlang.spec b/erlang.spec
index e3b55aa..6fbba7e 100644
--- a/erlang.spec
+++ b/erlang.spec
@@ -956,7 +956,7 @@ Erlang mode for XEmacs (source lisp files).
%endif
%prep
-%setup -q -n otp_src_%{upstream_ver}%{upstream_rel}
+%setup -q -n otp_src_%{upstream_ver}%{upstream_rel}-1
# start of autogenerated prep patch list
%patch1 -p1 -b .Do_not_format_man_pages_and_do_not_install_miscellan
9 years, 8 months
[erlang] Update to the R16B03-1
by Peter Lemenkov
commit f7eb6dd95b9352dad5d5a364e3300f508c4f0193
Author: Peter Lemenkov <lemenkov(a)gmail.com>
Date: Thu Mar 27 18:43:47 2014 +0400
Update to the R16B03-1
- Update to the R16B03-1
- Initial systemd support in EPMD (w.i.p.)
Signed-off-by: Peter Lemenkov <lemenkov(a)gmail.com>
.gitignore | 4 +
epmd.service | 18 +++
epmd.socket | 10 ++
erlang.spec | 41 +++++++-
otp-0006-Do-not-install-erlang-sources.patch | 4 +-
...-option-to-empd.-Check-for-include-system.patch | 74 +++++++++++++
otp-0012-Add-systemd-support-to-epmd.patch | 111 ++++++++++++++++++++
sources | 8 +-
8 files changed, 259 insertions(+), 11 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 102f125..99b1241 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,3 +46,7 @@ otp_src_R14A.tar.gz
/otp_doc_html_R16B03.tar.gz
/otp_doc_man_R16B03.tar.gz
/otp_src_R16B03.readme
+/otp_src_R16B03-1.readme
+/otp_doc_html_R16B03-1.tar.gz
+/otp_doc_man_R16B03-1.tar.gz
+/otp_src_R16B03-1.tar.gz
diff --git a/epmd.service b/epmd.service
new file mode 100644
index 0000000..c029ac4
--- /dev/null
+++ b/epmd.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Erlang Port Mapper Daemon
+After=network.target
+Requires=epmd.socket
+
+[Service]
+ExecStart=/usr/bin/epmd -systemd
+ExecStop=/usr/bin/epmd -kill
+Type=simple
+StandardOutput=journal
+StandardError=journal
+User=epmd
+Group=epmd
+
+[Install]
+Also=epmd.socket
+WantedBy=multi-user.target
+
diff --git a/epmd.socket b/epmd.socket
new file mode 100644
index 0000000..8eee066
--- /dev/null
+++ b/epmd.socket
@@ -0,0 +1,10 @@
+[Unit]
+Description=Erlang Port Mapper Daemon Activation Socket
+
+[Socket]
+ListenStream=127.0.0.1:4369
+Accept=false
+
+[Install]
+WantedBy=sockets.target
+
diff --git a/erlang.spec b/erlang.spec
index fe2972a..e3b55aa 100644
--- a/erlang.spec
+++ b/erlang.spec
@@ -32,18 +32,20 @@
Name: erlang
Version: %{upstream_ver}
-Release: %{upstream_rel_for_rpm}.2%{?dist}
+Release: %{upstream_rel_for_rpm}.3%{?dist}
Summary: General-purpose programming language and runtime environment
Group: Development/Languages
License: ERPL
URL: http://www.erlang.org
-Source0: http://www.erlang.org/download/otp_src_%{upstream_ver}%{upstream_rel}.tar.gz
+Source0: http://www.erlang.org/download/otp_src_%{upstream_ver}%{upstream_rel}-1.t...
%if %{use_prebuilt_docs}
-Source1: http://erlang.org/download/otp_doc_html_%{upstream_ver}%{upstream_rel}.ta...
-Source2: http://erlang.org/download/otp_doc_man_%{upstream_ver}%{upstream_rel}.tar.gz
+Source1: http://erlang.org/download/otp_doc_html_%{upstream_ver}%{upstream_rel}-1....
+Source2: http://erlang.org/download/otp_doc_man_%{upstream_ver}%{upstream_rel}-1.t...
%endif
-Source4: http://www.erlang.org/download/otp_src_%{upstream_ver}%{upstream_rel}.readme
+Source4: http://www.erlang.org/download/otp_src_%{upstream_ver}%{upstream_rel}-1.r...
+Source5: epmd.service
+Source6: epmd.socket
Source999: otp-get-patches.sh
@@ -91,6 +93,12 @@ Patch9: otp-0009-TEMPORARILY-disable-ECC-until-dust-settles.patch
# Fedora specific patch
# Fix for powerpc architecture
Patch10: otp-0010-Fix-for-powerpc-architecture.patch
+# Fedora specific patch
+# Add -systemd option to empd. Check for include
+Patch11: otp-0011-Add-systemd-option-to-empd.-Check-for-include-system.patch
+# Fedora specific patch
+# Add systemd support to epmd
+Patch12: otp-0012-Add-systemd-support-to-epmd.patch
# end of autogenerated patch tag list
# BuildRoot not strictly needed since F10, but keep it for spec file robustness
@@ -122,6 +130,13 @@ BuildRequires: emacs-el
BuildRequires: xemacs-packages-extra-el
%endif
+%if 0%{?el7}%{?fedora}
+Requires(post): systemd
+Requires(preun):systemd
+Requires(postun):systemd
+Requires: systemd
+%endif
+
Requires: erlang-appmon%{?_isa} = %{version}-%{release}
Requires: erlang-asn1%{?_isa} = %{version}-%{release}
Requires: erlang-common_test%{?_isa} = %{version}-%{release}
@@ -958,6 +973,8 @@ Erlang mode for XEmacs (source lisp files).
%patch8 -p1 -b .Fix_for_armv7hl_architecture
%patch9 -p1 -b .TEMPORARILY_disable_ECC_until_dust_settles
%patch10 -p1 -b .Fix_for_powerpc_architecture
+%patch11 -p1 -b .Add_systemd_option_to_empd_Check_for_include_system
+%patch12 -p1 -b .Add_systemd_support_to_epmd
# end of autogenerated prep patch list
# FIXME we should come up with a better solution
@@ -1153,6 +1170,12 @@ test -d "$RPM_BUILD_ROOT$jinterface_lib_dir"
install -m 0755 -d "$RPM_BUILD_ROOT%{_javadir}"
ln -s "${jinterface_lib_dir}priv/OtpErlang.jar" "$RPM_BUILD_ROOT%{_javadir}/%{name}/"
+# systemd-related stuff
+%if 0%{?el7}%{?fedora}
+install -D -p -m 0644 %{SOURCE5} %{buildroot}%{_unitdir}/epmd.service
+install -D -p -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/epmd.socket
+%endif
+
%clean
rm -rf $RPM_BUILD_ROOT
@@ -1493,6 +1516,10 @@ rm -rf $RPM_BUILD_ROOT
%endif
%{_libdir}/erlang/releases/*
%{_libdir}/erlang/usr/
+%if 0%{?el7}%{?fedora}
+%{_unitdir}/epmd.service
+%{_unitdir}/epmd.socket
+%endif
%files et
%dir %{_libdir}/erlang/lib/et-*/
@@ -2289,6 +2316,10 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Thu Mar 27 2014 Peter Lemenkov <lemenkov(a)gmail.com> - R16B-03.3
+- Ver. R16B03-1 (Bugfix release)
+- Enabled systemd support in EPMD
+
* Fri Feb 7 2014 Sam Kottler <skottler(a)fedoraproject.org> - R16B-03.2
- Fix macro usage for EPEL7 build and added need_bootstrap
diff --git a/otp-0006-Do-not-install-erlang-sources.patch b/otp-0006-Do-not-install-erlang-sources.patch
index 38c9dd1..843e052 100644
--- a/otp-0006-Do-not-install-erlang-sources.patch
+++ b/otp-0006-Do-not-install-erlang-sources.patch
@@ -460,10 +460,10 @@ index 51167b3..a623824 100644
$(INSTALL_DATA) $(TARGET_FILES) "$(RELSYSDIR)/ebin"
diff --git a/lib/inets/src/http_server/Makefile b/lib/inets/src/http_server/Makefile
-index 67555d5..0620f3a 100644
+index 2660d04..c873a27 100644
--- a/lib/inets/src/http_server/Makefile
+++ b/lib/inets/src/http_server/Makefile
-@@ -125,7 +125,7 @@ include $(ERL_TOP)/make/otp_release_targets.mk
+@@ -126,7 +126,7 @@ include $(ERL_TOP)/make/otp_release_targets.mk
release_spec: opt
$(INSTALL_DIR) "$(RELSYSDIR)/src"
$(INSTALL_DIR) "$(RELSYSDIR)/src/http_server"
diff --git a/otp-0011-Add-systemd-option-to-empd.-Check-for-include-system.patch b/otp-0011-Add-systemd-option-to-empd.-Check-for-include-system.patch
new file mode 100644
index 0000000..bb13893
--- /dev/null
+++ b/otp-0011-Add-systemd-option-to-empd.-Check-for-include-system.patch
@@ -0,0 +1,74 @@
+From: "Matwey V. Kornilov" <matwey.kornilov(a)gmail.com>
+Date: Tue, 17 Dec 2013 18:16:56 +0400
+Subject: [PATCH] Add -systemd option to empd. Check for include
+ systemd/sd-daemon.h and wrap systemd code into ifdef-s.
+
+
+diff --git a/erts/configure.in b/erts/configure.in
+index 9ad3671..125e579 100644
+--- a/erts/configure.in
++++ b/erts/configure.in
+@@ -1565,6 +1565,8 @@ AC_CHECK_MEMBERS([struct ifreq.ifr_enaddr], [], [],
+ #endif
+ ])
+
++AC_CHECK_HEADERS(systemd/sd-daemon.h)
++
+ dnl ----------------------------------------------------------------------
+ dnl Check the availability for libdlpi
+ dnl ----------------------------------------------------------------------
+diff --git a/erts/epmd/src/epmd.c b/erts/epmd/src/epmd.c
+index 2d55b37..fc58882 100644
+--- a/erts/epmd/src/epmd.c
++++ b/erts/epmd/src/epmd.c
+@@ -175,6 +175,9 @@ int main(int argc, char** argv)
+ g->nodes.reg = g->nodes.unreg = g->nodes.unreg_tail = NULL;
+ g->nodes.unreg_count = 0;
+ g->active_conn = 0;
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ g->is_systemd = 0;
++#endif
+
+ for (i = 0; i < MAX_LISTEN_SOCKETS; i++)
+ g->listenfd[i] = -1;
+@@ -248,8 +251,12 @@ int main(int argc, char** argv)
+ else
+ usage(g);
+ epmd_cleanup_exit(g,0);
+- }
+- else
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ } else if (strcmp(argv[0], "-systemd") == 0) {
++ g->is_systemd = 1;
++ argv++; argc--;
++#endif
++ } else
+ usage(g);
+ }
+ dbg_printf(g,1,"epmd running - daemon = %d",g->is_daemon);
+@@ -454,6 +461,11 @@ static void usage(EpmdVars *g)
+ fprintf(stderr, " Forcibly unregisters a name with epmd\n");
+ fprintf(stderr, " (only allowed if -relaxed_command_check was given when \n");
+ fprintf(stderr, " epmd was started).\n");
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ fprintf(stderr, " -systemd\n");
++ fprintf(stderr, " Wait for socket from systemd. The option makes sense\n");
++ fprintf(stderr, " when started from .socket unit.\n");
++#endif
+ epmd_cleanup_exit(g,1);
+ }
+
+diff --git a/erts/epmd/src/epmd_int.h b/erts/epmd/src/epmd_int.h
+index 656dbd1..bf1ddd8 100644
+--- a/erts/epmd/src/epmd_int.h
++++ b/erts/epmd/src/epmd_int.h
+@@ -321,6 +321,9 @@ typedef struct {
+ int listenfd[MAX_LISTEN_SOCKETS];
+ char *addresses;
+ char **argv;
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ int is_systemd;
++#endif
+ } EpmdVars;
+
+ void dbg_printf(EpmdVars*,int,const char*,...);
diff --git a/otp-0012-Add-systemd-support-to-epmd.patch b/otp-0012-Add-systemd-support-to-epmd.patch
new file mode 100644
index 0000000..3535601
--- /dev/null
+++ b/otp-0012-Add-systemd-support-to-epmd.patch
@@ -0,0 +1,111 @@
+From: "Matwey V. Kornilov" <matwey.kornilov(a)gmail.com>
+Date: Tue, 17 Dec 2013 18:57:54 +0400
+Subject: [PATCH] Add systemd support to epmd
+
+
+diff --git a/erts/configure.in b/erts/configure.in
+index 125e579..d9bc1ec 100644
+--- a/erts/configure.in
++++ b/erts/configure.in
+@@ -969,6 +969,8 @@ AC_CHECK_LIB(dl, dlopen)
+ AC_CHECK_LIB(inet, main)
+ AC_CHECK_LIB(util, openpty)
+
++AC_CHECK_LIB(systemd-daemon, sd_listen_fds)
++
+ dnl Try to find a thread library.
+ dnl
+ dnl ETHR_LIB_NAME, ETHR_LIBS, ETHR_X_LIBS, ETHR_THR_LIB_BASE and ETHR_DEFS
+diff --git a/erts/epmd/src/epmd_int.h b/erts/epmd/src/epmd_int.h
+index bf1ddd8..363923e 100644
+--- a/erts/epmd/src/epmd_int.h
++++ b/erts/epmd/src/epmd_int.h
+@@ -110,6 +110,10 @@
+
+ #include <stdarg.h>
+
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++# include <systemd/sd-daemon.h>
++#endif
++
+ /* ************************************************************************ */
+ /* Replace some functions by others by making the function name a macro */
+
+diff --git a/erts/epmd/src/epmd_srv.c b/erts/epmd/src/epmd_srv.c
+index 90df7cc..cb8ca96 100644
+--- a/erts/epmd/src/epmd_srv.c
++++ b/erts/epmd/src/epmd_srv.c
+@@ -208,6 +208,39 @@ void run(EpmdVars *g)
+ node_init(g);
+ g->conn = conn_init(g);
+
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ if (g->is_systemd)
++ {
++ int n;
++
++ dbg_printf(g,2,"try to obtain sockets from systemd");
++
++ n = sd_listen_fds(0);
++ if (n < 0)
++ {
++ dbg_perror(g,"cannot obtain sockets from systemd");
++ epmd_cleanup_exit(g,1);
++ }
++ else if (n == 0)
++ {
++ dbg_tty_printf(g,0,"systemd provides no sockets");
++ epmd_cleanup_exit(g,1);
++ }
++ else if (n > MAX_LISTEN_SOCKETS)
++ {
++ dbg_tty_printf(g,0,"cannot listen on more than %d IP addresses", MAX_LISTEN_SOCKETS);
++ epmd_cleanup_exit(g,1);
++ }
++ num_sockets = n;
++ for (i = 0; i < num_sockets; i++)
++ {
++ g->listenfd[i] = listensock[i] = SD_LISTEN_FDS_START + i;
++ }
++ }
++ else
++ {
++#endif
++
+ dbg_printf(g,2,"try to initiate listening port %d", g->port);
+
+ if (g->addresses != NULL && /* String contains non-separator characters if: */
+@@ -272,6 +305,9 @@ void run(EpmdVars *g)
+ SET_ADDR(iserv_addr[0],EPMD_ADDR_ANY,sport);
+ num_sockets = 1;
+ }
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ }
++#endif
+
+ #if !defined(__WIN32__)
+ /* We ignore the SIGPIPE signal that is raised when we call write
+@@ -289,6 +325,13 @@ void run(EpmdVars *g)
+ FD_ZERO(&g->orig_read_mask);
+ g->select_fd_top = 0;
+
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ if (g->is_systemd)
++ for (i = 0; i < num_sockets; i++)
++ select_fd_set(g, listensock[i]);
++ else
++ {
++#endif
+ for (i = 0; i < num_sockets; i++)
+ {
+ if ((listensock[i] = socket(FAMILY,SOCK_STREAM,0)) < 0)
+@@ -351,6 +394,9 @@ void run(EpmdVars *g)
+ }
+ select_fd_set(g, listensock[i]);
+ }
++#ifdef HAVE_SYSTEMD_SD_DAEMON_H
++ }
++#endif
+
+ dbg_tty_printf(g,2,"entering the main select() loop");
+
diff --git a/sources b/sources
index 3eb8f02..df29746 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
-fb39e206739e43501f6d27edf9b04b37 otp_doc_html_R16B03.tar.gz
-099ed598feadc54e7efea908cc598f08 otp_doc_man_R16B03.tar.gz
-d8b65a1492007f388545176300182d4f otp_src_R16B03.readme
-c330150913556a0fe73e57a441cb6375 otp_src_R16B03.tar.gz
+d27250e9ee98d6388e7f2e65379a0406 otp_src_R16B03-1.readme
+eff44490c9bbae3a5c5741bec2390ba3 otp_doc_html_R16B03-1.tar.gz
+39113c0d2515bdd8cd7e0f975a380122 otp_doc_man_R16B03-1.tar.gz
+e5ece977375197338c1b93b3d88514f8 otp_src_R16B03-1.tar.gz
9 years, 8 months