[Buildroot] [PATCH 1/9] dumb-init: new package
Arnout Vandecappelle
arnout at mind.be
Thu Sep 21 21:23:09 UTC 2017
On 20-09-17 05:02, Christian Stewart wrote:
> dumb-init is a minimal init process to act as PID 1 for containers.
>
> dumb-init can be used to satisfy docker-engine's docker-init binary
> requirement.
>
> In many cases docker-init backing processes like dumb-init must be static, as
> they are executed inside a container in an unknown environment.
I really don't understand this requirement. The container is supposed to
contain this dumb-init executable as well as the rest of the Buildroot-generated
filesystem, right? So all required libs + dynamic loader will be there. Why does
it need to be static, then? Is it going to be executed outside of the container?
For docker-client, I can understand, because there the point is that
docker-engine runs outside of the container while within the container you have
some other OS, and docker-client is supposed to run inside the container as well.
So please improve your explanation :-) Also, add it to the help text, so that
the user gets an idea why they would want to enable the option.
> This
> patch includes an option to specifically compile dumb-init statically, even if
> the system is compiled dynamically.
>
> Signed-off-by: Christian Stewart <christian at paral.in>
[snip]
> diff --git a/package/dumb-init/Config.in b/package/dumb-init/Config.in
> new file mode 100644
> index 0000000000..aaad119a15
> --- /dev/null
> +++ b/package/dumb-init/Config.in
> @@ -0,0 +1,16 @@
> +config BR2_PACKAGE_DUMB_INIT
> + bool "dumb-init"
> + help
> + dumb-init is a simple but valid init binary to
> + act as PID 1 for containers.
Please wrap at 72 columns, not less.
> +
> + https://github.com/Yelp/dumb-init
> +
> +if BR2_PACKAGE_DUMB_INIT
> +
> +config BR2_PACKAGE_DUMB_INIT_STATIC
> + bool "build static"
> + help
> + Enables static compilation for dumb-init.
> +
> +endif
> diff --git a/package/dumb-init/dumb-init.hash b/package/dumb-init/dumb-init.hash
> new file mode 100644
> index 0000000000..4705ce4368
> --- /dev/null
> +++ b/package/dumb-init/dumb-init.hash
> @@ -0,0 +1,2 @@
> +# Locally computed
> +sha256 74486997321bd939cad2ee6af030f481d39751bc9aa0ece84ed55f864e309a3f v1.2.0.tar.gz
> diff --git a/package/dumb-init/dumb-init.mk b/package/dumb-init/dumb-init.mk
> new file mode 100644
> index 0000000000..cc24ffafa1
> --- /dev/null
> +++ b/package/dumb-init/dumb-init.mk
> @@ -0,0 +1,27 @@
> +################################################################################
> +#
> +# dumb-init
> +#
> +################################################################################
> +
> +DUMB_INIT_VERSION = v1.2.0
> +DUMB_INIT_SITE = https://github.com/Yelp/dumb-init/archive
> +DUMB_INIT_SOURCE = $(DUMB_INIT_VERSION).tar.gz
> +DUMB_INIT_LICENSE = MIT
> +DUMB_INIT_LICENSE_FILES = LICENSE
> +
> +ifeq ($(BR2_PACKAGE_DUMB_INIT_STATIC),y)
> +DUMB_INIT_CFLAGS += -static
> +endif
> +
> +define DUMB_INIT_BUILD_CMDS
> + $(TARGET_CC) \
> + $(DUMB_INIT_CFLAGS) \
You also have to pass TARGET_CFLAGS and TARGET_LDFLAGS. Probably the easiest is
to collect those in DUMB_INIT_CFLAGS as well. Well, that's assuming you don't
remove that option :-)
Regards,
Arnout
> + -o $(@D)/dumb-init $(@D)/dumb-init.c
> +endef
> +
> +define DUMB_INIT_INSTALL_TARGET_CMDS
> + $(INSTALL) -D -m 0755 $(@D)/dumb-init $(TARGET_DIR)/usr/bin/dumb-init
> +endef
> +
> +$(eval $(generic-package))
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
More information about the buildroot
mailing list