diff mbox

[1/1] util-linux: allow programs to be disabled by default

Message ID 1435635368-26928-1-git-send-email-danomimanchego123@gmail.com
State Superseded
Headers show

Commit Message

Danomi Manchego June 30, 2015, 3:36 a.m. UTC
When even a single extra util-linux utility is enabled, the
default build and install will install many more programs,
including many that overlap with those offered by busybox.
Finer control of util-linux can be realized by disabling
everything by default (with --disable-all-programs) and then
overriding the default with specific enables (--enable-<name>).
This patch adds a config switch to disable everything by default.

Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
---
 package/util-linux/Config.in     | 6 ++++++
 package/util-linux/util-linux.mk | 4 ++++
 2 files changed, 10 insertions(+)

Comments

Thomas Petazzoni June 30, 2015, 8:59 p.m. UTC | #1
Dear Danomi Manchego,

On Mon, 29 Jun 2015 23:36:08 -0400, Danomi Manchego wrote:

> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_DISABLE_BY_DEFAULT),y)
> +UTIL_LINUX_CONF_OPTS += --disable-all-programs
> +endif

I understand the idea, but it's a bit weird to have an option to enable
to say that you want to disable everything.

Also, we are already passing --disable-all-programs when
BR2_PACKAGE_UTIL_LINUX_BINARIES is not enabled. Maybe we should instead
pass --disable-all-programs unconditionally. However this would change
the visible behavior for users, since programs that used to be built
would no longer be built. But it seems the most correct solution
nonetheless.

Any opinions from other Buildroot developers?

Thanks,

Thomas
Danomi Manchego June 30, 2015, 9:35 p.m. UTC | #2
Thomas,

On Tue, Jun 30, 2015 at 4:59 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Danomi Manchego,
>
> On Mon, 29 Jun 2015 23:36:08 -0400, Danomi Manchego wrote:
>
>> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_DISABLE_BY_DEFAULT),y)
>> +UTIL_LINUX_CONF_OPTS += --disable-all-programs
>> +endif
>
> I understand the idea, but it's a bit weird to have an option to enable
> to say that you want to disable everything.
>
> Also, we are already passing --disable-all-programs when
> BR2_PACKAGE_UTIL_LINUX_BINARIES is not enabled. Maybe we should instead
> pass --disable-all-programs unconditionally. However this would change
> the visible behavior for users, since programs that used to be built
> would no longer be built. But it seems the most correct solution
> nonetheless.
>
> Any opinions from other Buildroot developers?

I use util-linux only as a last resort for when busybox does not have
what I need - so I'm totally on-board with that idea, as my interest
is for minimal impact on the target.  The only reason that I didn't do
that is for precisely what you said - that it would change the current
behavior.  Also, I supposed that we would still need an option to
*not* set --disable-all-programs anyway, to support enabling all the
programs that are currently enabled by default (and don't have
existing buildroot switches), to be able to get back to the previous
behavior.  (For those who need it.)

An alternative might be to add --enable/--disable switches for all the
apps that are enabled by default.  But that's a lot of new switches,
and a maintenance hassle on package upgrades, so I was afraid that
this option might not be well received by the community.  (I'm willing
to give that a go if that seems like a good idea.)

Danomi -
Arnout Vandecappelle July 7, 2015, 9:01 p.m. UTC | #3
On 06/30/15 23:35, Danomi Manchego wrote:
> Thomas,
> 
> On Tue, Jun 30, 2015 at 4:59 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
>> Dear Danomi Manchego,
>>
>> On Mon, 29 Jun 2015 23:36:08 -0400, Danomi Manchego wrote:
>>
>>> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_DISABLE_BY_DEFAULT),y)
>>> +UTIL_LINUX_CONF_OPTS += --disable-all-programs
>>> +endif
>>
>> I understand the idea, but it's a bit weird to have an option to enable
>> to say that you want to disable everything.
>>
>> Also, we are already passing --disable-all-programs when
>> BR2_PACKAGE_UTIL_LINUX_BINARIES is not enabled. Maybe we should instead
>> pass --disable-all-programs unconditionally. However this would change
>> the visible behavior for users, since programs that used to be built
>> would no longer be built. But it seems the most correct solution
>> nonetheless.
>>
>> Any opinions from other Buildroot developers?
> 
> I use util-linux only as a last resort for when busybox does not have
> what I need - so I'm totally on-board with that idea, as my interest
> is for minimal impact on the target.  The only reason that I didn't do
> that is for precisely what you said - that it would change the current
> behavior.  Also, I supposed that we would still need an option to
> *not* set --disable-all-programs anyway, to support enabling all the
> programs that are currently enabled by default (and don't have
> existing buildroot switches), to be able to get back to the previous
> behavior.  (For those who need it.)

 I think it should be --disable-all-programs by default, and a new
BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES that does --enable-all-programs and that
hides all the individual tool options.

 I'm also not really worried about changing the default, since it will affect
only a single program (see below).

> An alternative might be to add --enable/--disable switches for all the
> apps that are enabled by default.  But that's a lot of new switches,
> and a maintenance hassle on package upgrades, so I was afraid that
> this option might not be well received by the community.  (I'm willing
> to give that a go if that seems like a good idea.)

 Indeed, too much hassle.

 However, unless I'm mistaken, pg is the only one missing at the moment... All
the other configure options seem to be covered, and Makefile.in has a condition
in front of each installed program. So it doesn't look like so much of a hassle
after all.


 Regards,
 Arnout
Arnout Vandecappelle July 7, 2015, 9:32 p.m. UTC | #4
On 06/30/15 23:35, Danomi Manchego wrote:
> Thomas,
> 
> On Tue, Jun 30, 2015 at 4:59 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
>> Dear Danomi Manchego,
>>
>> On Mon, 29 Jun 2015 23:36:08 -0400, Danomi Manchego wrote:
>>
>>> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_DISABLE_BY_DEFAULT),y)
>>> +UTIL_LINUX_CONF_OPTS += --disable-all-programs
>>> +endif
>>
>> I understand the idea, but it's a bit weird to have an option to enable
>> to say that you want to disable everything.
>>
>> Also, we are already passing --disable-all-programs when
>> BR2_PACKAGE_UTIL_LINUX_BINARIES is not enabled. Maybe we should instead
>> pass --disable-all-programs unconditionally. However this would change
>> the visible behavior for users, since programs that used to be built
>> would no longer be built. But it seems the most correct solution
>> nonetheless.
>>
>> Any opinions from other Buildroot developers?
> 
> I use util-linux only as a last resort for when busybox does not have
> what I need - so I'm totally on-board with that idea, as my interest
> is for minimal impact on the target.  The only reason that I didn't do
> that is for precisely what you said - that it would change the current
> behavior.  Also, I supposed that we would still need an option to
> *not* set --disable-all-programs anyway, to support enabling all the
> programs that are currently enabled by default (and don't have
> existing buildroot switches), to be able to get back to the previous
> behavior.  (For those who need it.)

 I think it should be --disable-all-programs by default, and a new
BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES that does --enable-all-programs and that
hides all the individual tool options.

 As to changing the default, I'm not too worried about it, since only the pg
tool is "new".

> An alternative might be to add --enable/--disable switches for all the
> apps that are enabled by default.  But that's a lot of new switches,
> and a maintenance hassle on package upgrades, so I was afraid that
> this option might not be well received by the community.  (I'm willing
> to give that a go if that seems like a good idea.)

 Indeed, too much hassle.

 However, unless I'm mistaken, pg is the only one missing at the moment... So it
doesn't seem to be *that* much hassle.


 Regards,
 Arnout
diff mbox

Patch

diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in
index 39df11c..9981889 100644
--- a/package/util-linux/Config.in
+++ b/package/util-linux/Config.in
@@ -47,6 +47,12 @@  config BR2_PACKAGE_UTIL_LINUX_BINARIES
 
 if BR2_PACKAGE_UTIL_LINUX_BINARIES
 
+config BR2_PACKAGE_UTIL_LINUX_DISABLE_BY_DEFAULT
+	bool "Disable programs by default"
+	help
+	  Disable programs by default; only explicitly enabled utilities
+	  and libraries will be built.
+
 config BR2_PACKAGE_UTIL_LINUX_AGETTY
 	bool "agetty"
 	help
diff --git a/package/util-linux/util-linux.mk b/package/util-linux/util-linux.mk
index 3ca147a..3749a71 100644
--- a/package/util-linux/util-linux.mk
+++ b/package/util-linux/util-linux.mk
@@ -25,6 +25,10 @@  UTIL_LINUX_CONF_OPTS += \
 	--disable-rpath \
 	--disable-makeinstall-chown \
 	--without-python
+ 
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_DISABLE_BY_DEFAULT),y)
+UTIL_LINUX_CONF_OPTS += --disable-all-programs
+endif
 
 ifeq ($(BR2_PACKAGE_BASH),)
 UTIL_LINUX_CONF_OPTS += \