diff mbox

[v2,1/8] package/dhcp: fix SysV init scripts option passing

Message ID 1444728929-46246-1-git-send-email-benoit@wsystem.com
State Superseded
Headers show

Commit Message

Benoît Thébaudeau Oct. 13, 2015, 9:35 a.m. UTC
The SysV init scripts have configuration variables like INTERFACES whose
contents have to be passed to the daemon. These variables are
initialized as empty strings, but some of them are not allowed to be
empty and there was no means of filling them apart from creating a root
FS overlay to overwrite these scripts.

This commit adds support for files under /etc/default/ to set these
configuration variables. Such light files can now be added to the root
FS skeleton or overlays without having to duplicate most of the SysV
init scripts.

Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>

---
Changes v1 -> v2:
 - Rebase.
---
 package/dhcp/S80dhcp-relay  | 4 ++++
 package/dhcp/S80dhcp-server | 4 ++++
 2 files changed, 8 insertions(+)

Comments

Maxime Hadjinlian Oct. 14, 2015, 7:21 a.m. UTC | #1
Hi Benoit,

On Tue, Oct 13, 2015 at 11:35 AM, Benoît Thébaudeau <benoit@wsystem.com>
wrote:

> The SysV init scripts have configuration variables like INTERFACES whose
> contents have to be passed to the daemon. These variables are
> initialized as empty strings, but some of them are not allowed to be
> empty and there was no means of filling them apart from creating a root
> FS overlay to overwrite these scripts.
>
> This commit adds support for files under /etc/default/ to set these
> configuration variables. Such light files can now be added to the root
> FS skeleton or overlays without having to duplicate most of the SysV
> init scripts.
>
> Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com>
>
>
Thanks a lot for your work, I am afraid I am going to add to your work and
maybe be a bit of a kill joy:

What about systemd ?

There's already a service file in the dhcp package, so any changes made to
the init scripts should also be made to the .service to keep the whole
package coherent.

If you need any help/tips, do ask.
Benoît Thébaudeau Oct. 14, 2015, 9:17 a.m. UTC | #2
Hi Maxime,

On 14/10/2015 09:21, Maxime Hadjinlian wrote:
> On Tue, Oct 13, 2015 at 11:35 AM, Benoît Thébaudeau <benoit@wsystem.com <mailto:benoit@wsystem.com>> wrote:
> 
>     The SysV init scripts have configuration variables like INTERFACES whose
>     contents have to be passed to the daemon. These variables are
>     initialized as empty strings, but some of them are not allowed to be
>     empty and there was no means of filling them apart from creating a root
>     FS overlay to overwrite these scripts.
> 
>     This commit adds support for files under /etc/default/ to set these
>     configuration variables. Such light files can now be added to the root
>     FS skeleton or overlays without having to duplicate most of the SysV
>     init scripts.
> 
>     Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com <mailto:benoit@wsystem.com>>
> 
> 
> Thanks a lot for your work, I am afraid I am going to add to your work and maybe be a bit of a kill joy:
> 
> What about systemd ?
> 
> There's already a service file in the dhcp package, so any changes made to the init scripts should also be made to the .service to keep the whole package coherent.
> 
> If you need any help/tips, do ask.

I don't have any experience with systemd. I see the basics from the online
documentation.

In order to switch an existing SysV + BusyBox defconfig to systemd, is there
anything else to tweak than setting the init system to systemd in the
configuration?

Looking at the files, most of this series seems to already be fine with systemd.
The SysV init scripts have not been kept consistent when systemd was added. But
there are a few things to do for systemd though.

For 1/8, would it be OK to change "EnvironmentFile=/etc/default/dhcpd.conf" to
"EnvironmentFile=/etc/default/dhcpd" for systemd in order to share the filename
with SysV? If I look into the /etc/default/ folder on my Ubuntu 15.04 (which
uses systemd), none of the files present has a .conf extension. The purpose of
these files is to set some environment variables, so they're more scripts than
configuration files.

When a change would affect both SysV and systemd, should there be a single patch
common to both, or one patch per init system?

Best regards,
Benoît
Thomas Petazzoni Oct. 14, 2015, 9:38 a.m. UTC | #3
Hello Benoît,

On Wed, 14 Oct 2015 11:17:32 +0200, Benoît Thébaudeau wrote:

> I don't have any experience with systemd. I see the basics from the online
> documentation.
> 
> In order to switch an existing SysV + BusyBox defconfig to systemd, is there
> anything else to tweak than setting the init system to systemd in the
> configuration?
> 
> Looking at the files, most of this series seems to already be fine with systemd.
> The SysV init scripts have not been kept consistent when systemd was added. But
> there are a few things to do for systemd though.
> 
> For 1/8, would it be OK to change "EnvironmentFile=/etc/default/dhcpd.conf" to
> "EnvironmentFile=/etc/default/dhcpd" for systemd in order to share the filename
> with SysV? If I look into the /etc/default/ folder on my Ubuntu 15.04 (which
> uses systemd), none of the files present has a .conf extension. The purpose of
> these files is to set some environment variables, so they're more scripts than
> configuration files.
> 
> When a change would affect both SysV and systemd, should there be a single patch
> common to both, or one patch per init system?

Separate patches. And note that despite Maxime's question on systemd,
you are definitely not forced to add systemd support to the dhcp
package. It is fine if you do only SysV support, and someone else
interested in systemd does the systemd part.

Best regards,

Thomas
Maxime Hadjinlian Oct. 14, 2015, 11:44 a.m. UTC | #4
On Wed, Oct 14, 2015 at 11:17 AM, Benoît Thébaudeau <benoit@wsystem.com>
wrote:

> Hi Maxime,
>
> On 14/10/2015 09:21, Maxime Hadjinlian wrote:
> > On Tue, Oct 13, 2015 at 11:35 AM, Benoît Thébaudeau <benoit@wsystem.com
> <mailto:benoit@wsystem.com>> wrote:
> >
> >     The SysV init scripts have configuration variables like INTERFACES
> whose
> >     contents have to be passed to the daemon. These variables are
> >     initialized as empty strings, but some of them are not allowed to be
> >     empty and there was no means of filling them apart from creating a
> root
> >     FS overlay to overwrite these scripts.
> >
> >     This commit adds support for files under /etc/default/ to set these
> >     configuration variables. Such light files can now be added to the
> root
> >     FS skeleton or overlays without having to duplicate most of the SysV
> >     init scripts.
> >
> >     Signed-off-by: Benoît Thébaudeau <benoit@wsystem.com <mailto:
> benoit@wsystem.com>>
> >
> >
> > Thanks a lot for your work, I am afraid I am going to add to your work
> and maybe be a bit of a kill joy:
> >
> > What about systemd ?
> >
> > There's already a service file in the dhcp package, so any changes made
> to the init scripts should also be made to the .service to keep the whole
> package coherent.
> >
> > If you need any help/tips, do ask.
>
> I don't have any experience with systemd. I see the basics from the online
> documentation.
>
> In order to switch an existing SysV + BusyBox defconfig to systemd, is
> there
> anything else to tweak than setting the init system to systemd in the
> configuration?
>
That's it, that's all you gotta do.

>
> Looking at the files, most of this series seems to already be fine with
> systemd.
> The SysV init scripts have not been kept consistent when systemd was
> added. But
> there are a few things to do for systemd though.
>
> For 1/8, would it be OK to change
> "EnvironmentFile=/etc/default/dhcpd.conf" to
> "EnvironmentFile=/etc/default/dhcpd" for systemd in order to share the
> filename
> with SysV? If I look into the /etc/default/ folder on my Ubuntu 15.04
> (which
> uses systemd), none of the files present has a .conf extension. The
> purpose of
> these files is to set some environment variables, so they're more scripts
> than
> configuration files.
>
Yep that's a good idea.

>
> When a change would affect both SysV and systemd, should there be a single
> patch
> common to both, or one patch per init system?
>
Separate patch would be better I think.

>
> Best regards,
> Benoît
>
diff mbox

Patch

diff --git a/package/dhcp/S80dhcp-relay b/package/dhcp/S80dhcp-relay
index 5ee06c7..0f383e6 100755
--- a/package/dhcp/S80dhcp-relay
+++ b/package/dhcp/S80dhcp-relay
@@ -13,6 +13,10 @@  INTERFACES=""
 # Additional options that are passed to the DHCP relay daemon?
 OPTIONS=""
 
+# Read configuration variable file if it is present
+CFG_FILE="/etc/default/dhcrelay"
+[ -r "${CFG_FILE}" ] && . "${CFG_FILE}"
+
 # Sanity checks
 test -f /usr/sbin/dhcrelay || exit 0
 test -n "$INTERFACES" || exit 0
diff --git a/package/dhcp/S80dhcp-server b/package/dhcp/S80dhcp-server
index 3df14ff..f7907e2 100755
--- a/package/dhcp/S80dhcp-server
+++ b/package/dhcp/S80dhcp-server
@@ -7,6 +7,10 @@ 
 #       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
 INTERFACES=""
 
+# Read configuration variable file if it is present
+CFG_FILE="/etc/default/dhcpd"
+[ -r "${CFG_FILE}" ] && . "${CFG_FILE}"
+
 # Sanity checks
 test -f /usr/sbin/dhcpd || exit 0
 test -f /etc/dhcp/dhcpd.conf || exit 0