[Buildroot] [PATCH] vsftpd: Add systemd services

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Sat Oct 10 20:46:48 UTC 2015


Dear Maxime Hadjinlian,

On Sun,  4 Oct 2015 18:45:43 +0200, Maxime Hadjinlian wrote:
> The systemd services were taken from Arch Linux's repository:
> https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/vsftpd

Can this support be submitted upstream?

> Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian at gmail.com>

I've tested this, and it doesn't seem to work here:


         Starting Serial Getty on ttyAMA0...
         Starting Login Service...
systemd[1]: vsftpd at multi-user.service: Failed to run 'start' task: Invalid argument
[FAILED] Failed to start vsftpd per-connection server.
See 'systemctl status vsftpd at multi-user.service' for details.
systemd[1]: vsftpd at multi-user.service: Unit entered failed state.
systemd[1]: vsftpd at multi-user.service: Failed with result 'resources'.
         Starting vsftpd per-connection server...
[  OK  ] Started D-Bus System Message Bus.
         Starting D-Bus System Message Bus...
[  OK  ] Started vsftpd daemon (legacy implicit SSL).
         Starting vsftpd daemon (legacy implicit SSL)...
[FAILED] Failed to start vsftpd per-connection server (legacy implicit SSL).
See 'systemctl status vsftpd-ssl at multi-user.service' for details.
         Starting vsftpd per-connection server (legacy implicit SSL)...


> +define VSFTPD_INSTALL_INIT_SYSTEMD
> +	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> +	mkdir -p $(TARGET_DIR)/etc/systemd/system/sockets.target.wants
> +
> +	for f in vsftpd.service vsftpd.socket vsftpd at .service \
> +		vsftpd-ssl.service vsftpd-ssl.socket vsftpd-ssl at .service; do \
> +		$(INSTALL) -D -m 644 package/vsftpd/$$f \
> +			$(TARGET_DIR)/usr/lib/systemd/system/$$f; \
> +		wanted_by="multi-user.target.wants"; \
> +		if [ $${f##*.} = "socket" ]; then \
> +			wanted_by="sockets.target.wants"; \
> +		fi; \
> +		ln -sf ../../../../usr/lib/systemd/system/$$f \
> +			$(TARGET_DIR)/etc/systemd/system/$$wanted_by/$$f; \
> +	done

You could also write this in pure make, though I don't know if it's
really more readable:

	$(foreach f,$(wildcard package/vsftpd/*.service),\
		$(INSTALL) -D -m 644 $(f) $(TARGET_DIR)/usr/lib/systemd/system/$(notdir $(f)) && \
		ln -sf ../../../../usr/lib/systemd/system/$(notdir $(f)) \
			$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/$(notdir $(f))$(sep))
	$(foreach f,$(wildcard package/vsftpd/*.socket),\
		$(INSTALL) -D -m 644 $(f) $(TARGET_DIR)/usr/lib/systemd/system/$(notdir $(f)) && \
		ln -sf ../../../../usr/lib/systemd/system/$(notdir $(f)) \
			$(TARGET_DIR)/etc/systemd/system/sockets.target.wants/$(notdir $(f))$(sep))

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com


More information about the buildroot mailing list