mbox series

[v5,00/13] use host-systemd to enable units

Message ID 20191216103052.35220-1-jeremy.rosen@smile.fr
Headers show
Series use host-systemd to enable units | expand

Message

Jérémy ROSEN Dec. 16, 2019, 10:30 a.m. UTC
As discussed during the buildroot dev days, upstream systemd now relies
on systemctl to enable units at install time.

The patch bumping systemd to v243 in buildroot did add the logic to
handle that through Makefiles.

This patch adds support for compiling host-systemd and using it to
enable all units.

* 0001-new-recipe-host-systemd.patch
I might have missed some build-dependencies. Please review carefully

* 0002-use-host-systemctl-preset-all-to-enable-units.patch
Use the previous patch to simplify the systemd recipe

* 0003-fix-tty-handling.patch
TTY handling is tricky. Separate it in its own patch

Everything else deals with updating the packages


version 5:
* rework all commit messages
* minor typos in systemd.mk
* removal of host_eudev is now in patch #2
* add a big explanation of the RPATH trick in patch #1

Jérémy Rosen (13):
  package/systemd: add host variant
  package/systemd: use host-systemctl preset all to enable units
  package/systemd: fix tty handling
  package: rely on systemctl preset-all for buildroot-provided services
  package: rely on systemctl preset-all for upstream-provided services
  package/connman: adapt to systemctl preset-all
  package/linuxptp adapt to systemctl preset-all
  package/network-manager: adapt to systemctl preset-all
  package/wpa_supplicant: adapt to systemctl preset-all
  package/sysrepo: adapt to systemctl preset-all
  package/syslog-ng: implement systemd enablement using DefaultInstance
  package/rauc: add a WantedBy section to the systemd unit file
  package/alsa-utils: add a WantedBy section to the systemd unit file

 docs/manual/adding-packages-generic.txt       |   4 +
 package/Config.in.host                        |   1 +
 package/acpid/acpid.mk                        |   3 -
 package/alsa-utils/alsa-utils.mk              |   9 +-
 package/apache/apache.mk                      |   3 -
 package/audit/audit.mk                        |   4 -
 package/avahi/avahi.mk                        |   8 -
 package/babeld/babeld.mk                      |   5 -
 package/bandwidthd/bandwidthd.mk              |   5 -
 package/bind/bind.mk                          |   5 -
 package/bluez5_utils/bluez5_utils.mk          |   8 -
 package/boinc/boinc.mk                        |   5 -
 package/brltty/brltty.mk                      |   4 -
 package/chrony/chrony.mk                      |   3 -
 package/collectd/collectd.mk                  |   3 -
 package/connman/connman.mk                    |   6 -
 package/darkhttpd/darkhttpd.mk                |   3 -
 package/dcron/dcron.mk                        |   3 -
 package/dhcp/dhcp.mk                          |   5 -
 package/dhcpcd/dhcpcd.mk                      |   3 -
 package/docker-engine/docker-engine.mk        |   3 -
 package/domoticz/domoticz.mk                  |   3 -
 package/dropbear/dropbear.mk                  |   3 -
 package/exim/exim.mk                          |   3 -
 package/fail2ban/fail2ban.mk                  |   3 -
 package/freescale-imx/imx-uuc/imx-uuc.mk      |   3 -
 package/gerbera/gerbera.mk                    |   6 -
 package/haveged/haveged.mk                    |   3 -
 package/i2pd/i2pd.mk                          |   3 -
 package/ifupdown-scripts/ifupdown-scripts.mk  |   3 -
 package/igd2-for-linux/igd2-for-linux.mk      |   3 -
 package/inadyn/inadyn.mk                      |   3 -
 .../input-event-daemon/input-event-daemon.mk  |   3 -
 package/iputils/iputils.mk                    |  16 --
 package/irqbalance/irqbalance.mk              |   3 -
 package/iucode-tool/iucode-tool.mk            |   3 -
 package/kodi/kodi.mk                          |   5 -
 package/lighttpd/lighttpd.mk                  |   6 -
 .../linuxptp/linuxptp-system-clock.service    |   1 -
 package/linuxptp/linuxptp.mk                  |   3 -
 package/lldpd/lldpd.mk                        |   6 -
 package/mariadb/mariadb.mk                    |   3 -
 package/mender/mender.mk                      |   3 -
 package/mini-snmpd/mini-snmpd.mk              |   3 -
 package/minidlna/minidlna.mk                  |   5 -
 package/minissdpd/minissdpd.mk                |   3 -
 package/mosquitto/mosquitto.mk                |   3 -
 package/motion/motion.mk                      |   3 -
 package/netplug/netplug.mk                    |   3 -
 package/network-manager/network-manager.mk    |   7 -
 package/nfs-utils/nfs-utils.mk                |  16 --
 package/nginx/nginx.mk                        |   5 -
 package/nss-pam-ldapd/nss-pam-ldapd.mk        |   3 -
 package/ntp/ntp.mk                            |   3 -
 package/ofono/ofono.mk                        |   6 -
 package/olsr/olsr.mk                          |   3 -
 package/openntpd/openntpd.mk                  |   3 -
 package/openssh/openssh.mk                    |   3 -
 package/openvmtools/openvmtools.mk            |   3 -
 package/oracle-mysql/oracle-mysql.mk          |   3 -
 package/pcsc-lite/pcsc-lite.mk                |   6 -
 package/php/php.mk                            |   3 -
 package/postgresql/postgresql.mk              |   3 -
 package/proftpd/proftpd.mk                    |   3 -
 package/psplash/psplash.mk                    |   6 -
 package/ptpd/ptpd.mk                          |   3 -
 package/ptpd2/ptpd2.mk                        |   3 -
 package/pulseaudio/pulseaudio.mk              |   3 -
 package/python-web2py/python-web2py.mk        |   3 -
 package/rabbitmq-server/rabbitmq-server.mk    |   5 -
 package/rauc/rauc.mk                          |   5 +-
 package/redis/redis.mk                        |   3 -
 package/rng-tools/rng-tools.mk                |   3 -
 package/rpcbind/rpcbind.mk                    |   3 -
 package/rsyslog/rsyslog.mk                    |  14 --
 package/rygel/rygel.mk                        |   3 -
 package/samba4/samba4.mk                      |   7 -
 package/sane-backends/sane-backends.mk        |   6 -
 package/squid/squid.mk                        |   3 -
 package/sshguard/sshguard.mk                  |   3 -
 package/supervisor/supervisor.mk              |   3 -
 package/suricata/suricata.mk                  |   3 -
 package/sysklogd/sysklogd.mk                  |   5 -
 package/syslog-ng/syslog-ng.mk                |   7 +-
 package/sysrepo/sysrepo.mk                    |  10 +-
 .../systemd-bootchart/systemd-bootchart.mk    |   6 -
 package/systemd/80-buildroot.preset           |   4 +
 package/systemd/Config.in                     |   2 +-
 package/systemd/Config.in.host                |   3 +
 package/systemd/systemd.mk                    | 225 ++++++++++--------
 package/tcf-agent/tcf-agent.mk                |   3 -
 package/thttpd/thttpd.mk                      |   3 -
 package/ti-gfx/ti-gfx.mk                      |   3 -
 package/tinyhttpd/tinyhttpd.mk                |   3 -
 package/transmission/transmission.mk          |   3 -
 package/triggerhappy/triggerhappy.mk          |   3 -
 package/upmpdcli/upmpdcli.mk                  |   3 -
 .../wpa_supplicant/50-wpa_supplicant.preset   |   4 +
 package/wpa_supplicant/wpa_supplicant.mk      |   2 +
 99 files changed, 155 insertions(+), 484 deletions(-)
 create mode 100644 package/systemd/80-buildroot.preset
 create mode 100644 package/systemd/Config.in.host
 create mode 100644 package/wpa_supplicant/50-wpa_supplicant.preset

Comments

Yann E. MORIN Dec. 18, 2019, 5:48 p.m. UTC | #1
Jérémy, All,

On 2019-12-16 11:30 +0100, Jérémy Rosen spake thusly:
> As discussed during the buildroot dev days, upstream systemd now relies
> on systemctl to enable units at install time.
> 
> The patch bumping systemd to v243 in buildroot did add the logic to
> handle that through Makefiles.
> 
> This patch adds support for compiling host-systemd and using it to
> enable all units.

Thanks for working this difficult series. I have it all applied to
master now. :-)

However, I did quite a few changes:

35c11a027c package/systemd: add host variant
      - reformatting in commit log
      - declare host variant after target variant
      - simplify comments
      - slight reordering of variable (HOST_SYSTEMD_NINJA_ENV moved)
      - reformatting for mutli-line variable (HOST_SYSTEMD_HOST_TOOLS)
      - don't split HOST_SYSTEMD_CONF_OPTS in two sets

873e6573d3 package/sysrepo: fix install path for systemd units
      - split into its own commit
      - expand commit log

231ad359bc package/systemd: use host-systemctl preset all to enable units
      - also remove the hwdb sources on fs generation
      - fix check-package errors
      - few typoes and reformatting in commit log

6c3944a057 package/systemd: fix tty handling
      - fold long lines
      - drop spurious empty lines removals

3e092163e5 package: rely on systemctl preset-all for buildroot-provided services
      [untouched]

1640fca208 package: rely on systemctl preset-all for upstream-provided services
      - fix check-package errors

f7869ef30f package/connman: adapt to systemctl preset-all
      - fix check-package errors

c561bcbf5f package/linuxptp adapt to systemctl preset-all
eb075916f4 package/network-manager: adapt to systemctl preset-all
      [untouched]

54ea03ccd7 package/syslog-ng: implement systemd enablement using DefaultInstance
      - split long line
      - no need for continued line (no use for ';\' )

c27708e148 package/wpa_supplicant: adapt to systemctl preset-all
      [untouched]

583cb5b6e6 package/rauc: add a WantedBy section to the systemd unit file
      - split long line
      - no need for continued line (no use for ';\' )

4974f7941f package/alsa-utils: add a WantedBy section to the systemd unit file
      - split logn lines
      - no need for continued line (no use for ';\' )

Please review the whole new set, and watch the autobuilders now! ;-)

Thanks!

Regards,
Yann E. MORIN.

> * 0001-new-recipe-host-systemd.patch
> I might have missed some build-dependencies. Please review carefully
> 
> * 0002-use-host-systemctl-preset-all-to-enable-units.patch
> Use the previous patch to simplify the systemd recipe
> 
> * 0003-fix-tty-handling.patch
> TTY handling is tricky. Separate it in its own patch
> 
> Everything else deals with updating the packages
> 
> 
> version 5:
> * rework all commit messages
> * minor typos in systemd.mk
> * removal of host_eudev is now in patch #2
> * add a big explanation of the RPATH trick in patch #1
> 
> Jérémy Rosen (13):
>   package/systemd: add host variant
>   package/systemd: use host-systemctl preset all to enable units
>   package/systemd: fix tty handling
>   package: rely on systemctl preset-all for buildroot-provided services
>   package: rely on systemctl preset-all for upstream-provided services
>   package/connman: adapt to systemctl preset-all
>   package/linuxptp adapt to systemctl preset-all
>   package/network-manager: adapt to systemctl preset-all
>   package/wpa_supplicant: adapt to systemctl preset-all
>   package/sysrepo: adapt to systemctl preset-all
>   package/syslog-ng: implement systemd enablement using DefaultInstance
>   package/rauc: add a WantedBy section to the systemd unit file
>   package/alsa-utils: add a WantedBy section to the systemd unit file
> 
>  docs/manual/adding-packages-generic.txt       |   4 +
>  package/Config.in.host                        |   1 +
>  package/acpid/acpid.mk                        |   3 -
>  package/alsa-utils/alsa-utils.mk              |   9 +-
>  package/apache/apache.mk                      |   3 -
>  package/audit/audit.mk                        |   4 -
>  package/avahi/avahi.mk                        |   8 -
>  package/babeld/babeld.mk                      |   5 -
>  package/bandwidthd/bandwidthd.mk              |   5 -
>  package/bind/bind.mk                          |   5 -
>  package/bluez5_utils/bluez5_utils.mk          |   8 -
>  package/boinc/boinc.mk                        |   5 -
>  package/brltty/brltty.mk                      |   4 -
>  package/chrony/chrony.mk                      |   3 -
>  package/collectd/collectd.mk                  |   3 -
>  package/connman/connman.mk                    |   6 -
>  package/darkhttpd/darkhttpd.mk                |   3 -
>  package/dcron/dcron.mk                        |   3 -
>  package/dhcp/dhcp.mk                          |   5 -
>  package/dhcpcd/dhcpcd.mk                      |   3 -
>  package/docker-engine/docker-engine.mk        |   3 -
>  package/domoticz/domoticz.mk                  |   3 -
>  package/dropbear/dropbear.mk                  |   3 -
>  package/exim/exim.mk                          |   3 -
>  package/fail2ban/fail2ban.mk                  |   3 -
>  package/freescale-imx/imx-uuc/imx-uuc.mk      |   3 -
>  package/gerbera/gerbera.mk                    |   6 -
>  package/haveged/haveged.mk                    |   3 -
>  package/i2pd/i2pd.mk                          |   3 -
>  package/ifupdown-scripts/ifupdown-scripts.mk  |   3 -
>  package/igd2-for-linux/igd2-for-linux.mk      |   3 -
>  package/inadyn/inadyn.mk                      |   3 -
>  .../input-event-daemon/input-event-daemon.mk  |   3 -
>  package/iputils/iputils.mk                    |  16 --
>  package/irqbalance/irqbalance.mk              |   3 -
>  package/iucode-tool/iucode-tool.mk            |   3 -
>  package/kodi/kodi.mk                          |   5 -
>  package/lighttpd/lighttpd.mk                  |   6 -
>  .../linuxptp/linuxptp-system-clock.service    |   1 -
>  package/linuxptp/linuxptp.mk                  |   3 -
>  package/lldpd/lldpd.mk                        |   6 -
>  package/mariadb/mariadb.mk                    |   3 -
>  package/mender/mender.mk                      |   3 -
>  package/mini-snmpd/mini-snmpd.mk              |   3 -
>  package/minidlna/minidlna.mk                  |   5 -
>  package/minissdpd/minissdpd.mk                |   3 -
>  package/mosquitto/mosquitto.mk                |   3 -
>  package/motion/motion.mk                      |   3 -
>  package/netplug/netplug.mk                    |   3 -
>  package/network-manager/network-manager.mk    |   7 -
>  package/nfs-utils/nfs-utils.mk                |  16 --
>  package/nginx/nginx.mk                        |   5 -
>  package/nss-pam-ldapd/nss-pam-ldapd.mk        |   3 -
>  package/ntp/ntp.mk                            |   3 -
>  package/ofono/ofono.mk                        |   6 -
>  package/olsr/olsr.mk                          |   3 -
>  package/openntpd/openntpd.mk                  |   3 -
>  package/openssh/openssh.mk                    |   3 -
>  package/openvmtools/openvmtools.mk            |   3 -
>  package/oracle-mysql/oracle-mysql.mk          |   3 -
>  package/pcsc-lite/pcsc-lite.mk                |   6 -
>  package/php/php.mk                            |   3 -
>  package/postgresql/postgresql.mk              |   3 -
>  package/proftpd/proftpd.mk                    |   3 -
>  package/psplash/psplash.mk                    |   6 -
>  package/ptpd/ptpd.mk                          |   3 -
>  package/ptpd2/ptpd2.mk                        |   3 -
>  package/pulseaudio/pulseaudio.mk              |   3 -
>  package/python-web2py/python-web2py.mk        |   3 -
>  package/rabbitmq-server/rabbitmq-server.mk    |   5 -
>  package/rauc/rauc.mk                          |   5 +-
>  package/redis/redis.mk                        |   3 -
>  package/rng-tools/rng-tools.mk                |   3 -
>  package/rpcbind/rpcbind.mk                    |   3 -
>  package/rsyslog/rsyslog.mk                    |  14 --
>  package/rygel/rygel.mk                        |   3 -
>  package/samba4/samba4.mk                      |   7 -
>  package/sane-backends/sane-backends.mk        |   6 -
>  package/squid/squid.mk                        |   3 -
>  package/sshguard/sshguard.mk                  |   3 -
>  package/supervisor/supervisor.mk              |   3 -
>  package/suricata/suricata.mk                  |   3 -
>  package/sysklogd/sysklogd.mk                  |   5 -
>  package/syslog-ng/syslog-ng.mk                |   7 +-
>  package/sysrepo/sysrepo.mk                    |  10 +-
>  .../systemd-bootchart/systemd-bootchart.mk    |   6 -
>  package/systemd/80-buildroot.preset           |   4 +
>  package/systemd/Config.in                     |   2 +-
>  package/systemd/Config.in.host                |   3 +
>  package/systemd/systemd.mk                    | 225 ++++++++++--------
>  package/tcf-agent/tcf-agent.mk                |   3 -
>  package/thttpd/thttpd.mk                      |   3 -
>  package/ti-gfx/ti-gfx.mk                      |   3 -
>  package/tinyhttpd/tinyhttpd.mk                |   3 -
>  package/transmission/transmission.mk          |   3 -
>  package/triggerhappy/triggerhappy.mk          |   3 -
>  package/upmpdcli/upmpdcli.mk                  |   3 -
>  .../wpa_supplicant/50-wpa_supplicant.preset   |   4 +
>  package/wpa_supplicant/wpa_supplicant.mk      |   2 +
>  99 files changed, 155 insertions(+), 484 deletions(-)
>  create mode 100644 package/systemd/80-buildroot.preset
>  create mode 100644 package/systemd/Config.in.host
>  create mode 100644 package/wpa_supplicant/50-wpa_supplicant.preset
> 
> -- 
> 2.24.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Jérémy ROSEN Dec. 19, 2019, 1:50 p.m. UTC | #2
Ok, my bad for having you work on it that much, I have still lot to learn
about all
those conventions

One specific point I don't agree with below, but it's just a detail at this
point

>
> 35c11a027c package/systemd: add host variant
>       - reformatting in commit log
>       - declare host variant after target variant
>       - simplify comments
>       - slight reordering of variable (HOST_SYSTEMD_NINJA_ENV moved)
>       - reformatting for mutli-line variable (HOST_SYSTEMD_HOST_TOOLS)
>       - don't split HOST_SYSTEMD_CONF_OPTS in two sets
>
well, it's applied now, but I did that in a very specific way

* Variables I specifically set were in the first set
* Disabling all optional features was in the second set

The point was to help maintainability.

Apart from that, nothing suspicious on my side
thx a lot
Yann E. MORIN Dec. 19, 2019, 4:50 p.m. UTC | #3
Jérémy, All,

On 2019-12-19 14:50 +0100, Jérémy ROSEN spake thusly:
> Ok, my bad for having you work on it that much, I have still lot to learn about all 
> those conventions 

Well, what I did was mostly cosmetics, so that did not warrant a respin.

> One specific point I don't agree with below, but it's just a detail at this point
> 
>   35c11a027c package/systemd: add host variant
>         - reformatting in commit log
>         - declare host variant after target variant
>         - simplify comments
>         - slight reordering of variable (HOST_SYSTEMD_NINJA_ENV moved)
>         - reformatting for mutli-line variable (HOST_SYSTEMD_HOST_TOOLS)
>         - don't split HOST_SYSTEMD_CONF_OPTS in two sets
> 
> well, it's applied now, but I did that in a very specific way
> * Variables I specifically set were in the first set
> * Disabling all optional features was in the second set
> The point was to help maintainability.

We almost never do that in Buildroot (I was about to say 'never', but we
may or may not have a few cases), but overall, it is not needed. We only
do additive settings for those parts that are conditional, which is not
the case here.

Still, the two sets are properly separated, with all the =yes first, and
the =false last.

> Apart from that, nothing suspicious on my side

Thanks! :-)

Regards,
Yann E. MORIN.

> thx a lot
> --
> 
> +---------------------------------------------------------------------------------------------------------------------+
> |                               | Jérémy ROSEN                                                              |
> | [1]3D"SMILE"[2]          | Architecte technique                                                                |
> |                               | [3]3D"email"   [4]jeremy.rosen@smile.fr                                   |
> | 20 rue des Jardins            | [5]3D"phone"   +33 6 88 25 87 42                                          |
> | 92600 Asnières-sur-Seine | [6]3D"url"   [7]http://www.smile.eu                                            |
> |                               | [8]3D"Twitter"   [9]3D"Facebook"   [10]3D"LinkedIn"   [11]3D"Github" |
> +---------------------------------------------------------------------------------------------------------------------+
> 
> [12]3D"Découvrez
> 
> Links:
> 1. http://www.smile.eu/
> 2. http://www.smile.eu/
> 3. Image: http://ftp.smile.fr/client/Communication/signature/img/mail.png
> 4. mailto:jeremy.rosen@smile.fr
> 5. Image: http://ftp.smile.fr/client/Communication/signature/img/phone.png
> 6. Image: http://ftp.smile.fr/client/Communication/signature/img/web.png
> 7. http://www.smile.eu/
> 8. https://twitter.com/GroupeSmile
> 9. https://www.facebook.com/smileopensource
> 10. https://www.linkedin.com/company/smile
> 11. https://github.com/Smile-SA
> 12. https://www.smile.eu/fr/publications/livres-blancs/yocto?utm_source=signature&utm_medium=email&utm_campaign=signature