diff mbox

[v5] util-linux: rework utilities menu for finer control

Message ID 1465266353-5834-1-git-send-email-casantos@datacom.ind.br
State Superseded, archived
Headers show

Commit Message

Carlos Santos June 7, 2016, 2:25 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.

Fix by reworking the install-utilies menu to take advantage
of the new --disable-all-programs config option.  This option
make it possible to disable the basic set of apps, and then
enable only the desired apps.

Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
---

Changes v1 -> v2:
  - Rework to incorporate ideas and suggestions from Thomas Petazzoni
    and Arnout Vandecappelle.  At least, in spirit.

Changes v2 -> v3:
  - Change BR2_PACKAGE_UTIL_LINUX_SELECTED_BINARIES to
    BR2_PACKAGE_UTIL_LINUX_BINARIES, to conserve backwards-
    compatibility without need for a legacy option.
  - Enable 'Basic set' by default to match output of previous
    build when binaries were selected.

Changes v3 -> v4:
  - Rework to apply on top of master branch

Changes v4 -> v5:
  - Add option to control installation of libfdisk.
  - Fine-grained selection of libraries in custom selection of
    utilities.
  - Document that linux32, linux64, uname26, i386 and x86_64 are
    setarch aliases.
  - Add options to instal cal, ipcrm, ipcs, logger, lslogin and pg.
  - Remove options to install findfs and lsblk because there are no
    corresponding --enable- and --disable- configure options.
---
 package/util-linux/Config.in     | 117 ++++++++++++++++++++++++++++++++++-----
 package/util-linux/util-linux.mk |  23 +++++---
 2 files changed, 116 insertions(+), 24 deletions(-)

Comments

Romain Naour July 5, 2016, 3:11 p.m. UTC | #1
Hi Carlos,

Le 07/06/2016 à 04:25, Carlos Santos a écrit :
> 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.
> 
> Fix by reworking the install-utilies menu to take advantage
> of the new --disable-all-programs config option.  This option
> make it possible to disable the basic set of apps, and then
> enable only the desired apps.
> 
> Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
> Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
> ---
> 
> Changes v1 -> v2:
>   - Rework to incorporate ideas and suggestions from Thomas Petazzoni
>     and Arnout Vandecappelle.  At least, in spirit.
> 
> Changes v2 -> v3:
>   - Change BR2_PACKAGE_UTIL_LINUX_SELECTED_BINARIES to
>     BR2_PACKAGE_UTIL_LINUX_BINARIES, to conserve backwards-
>     compatibility without need for a legacy option.
>   - Enable 'Basic set' by default to match output of previous
>     build when binaries were selected.
> 
> Changes v3 -> v4:
>   - Rework to apply on top of master branch
> 
> Changes v4 -> v5:
>   - Add option to control installation of libfdisk.
>   - Fine-grained selection of libraries in custom selection of
>     utilities.
>   - Document that linux32, linux64, uname26, i386 and x86_64 are
>     setarch aliases.
>   - Add options to instal cal, ipcrm, ipcs, logger, lslogin and pg.
>   - Remove options to install findfs and lsblk because there are no
>     corresponding --enable- and --disable- configure options.
> ---
>  package/util-linux/Config.in     | 117 ++++++++++++++++++++++++++++++++++-----
>  package/util-linux/util-linux.mk |  23 +++++---
>  2 files changed, 116 insertions(+), 24 deletions(-)
> 
> diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in
> index 8a36c0a..d002495 100644
> --- a/package/util-linux/Config.in
> +++ b/package/util-linux/Config.in
> @@ -18,6 +18,14 @@ config BR2_PACKAGE_UTIL_LINUX_LIBBLKID
>  	help
>  	  Install libblkid.
>  
> +config BR2_PACKAGE_UTIL_LINUX_LIBFDISK
> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
> +	depends on BR2_USE_MMU # fork
> +	bool "libfdisk"
> +	help
> +	  Install libfdisk.
> +
>  config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
>  	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
>  	depends on BR2_USE_MMU # util-linux/libblkid
> @@ -36,18 +44,62 @@ config BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
>  	  Install libuuid.
>  
> +choice
> +	prompt "Install utilities"
> +	default BR2_PACKAGE_UTIL_LINUX_NO_BINARIES
> +
> +config BR2_PACKAGE_UTIL_LINUX_NO_BINARIES
> +	bool "none"
> +	help
> +	  Disable all util-linux binaries.
> +
> +config BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES
> +	bool "all"
> +	depends on BR2_USE_MMU # fork()
> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID     # findmnt, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT     # findmnt, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK     # fdisk, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS # findmnt, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID      # findmnt, etc
> +	select BR2_PACKAGE_LINUX_PAM  # login utils
> +	select BR2_PACKAGE_ZLIB  # cramfs
> +	select BR2_PACKAGE_NCURSES  # more, setterm, ul
> +	select BR2_PACKAGE_LIBCAP_NG  # setpriv
> +	help
> +	  Install the complete set of util-linux binaries.
> +
>  config BR2_PACKAGE_UTIL_LINUX_BINARIES
> -	bool "install utilities"
> +	bool "custom"
>  	depends on BR2_USE_MMU # fork()
> -	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> -	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> -	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
> -	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
> -	  Install the basic set of util-linux binaries.
> +	  Manually select which util-linux binaries to install.
> +
> +endchoice
>  
>  if BR2_PACKAGE_UTIL_LINUX_BINARIES
>  
> +config BR2_PACKAGE_UTIL_LINUX_BASIC_SET
> +	bool "Basic set"

Use "basic set" instead since all other option are lowercase.

> +	default y

missing depends on BR2_USE_MMU # fork()

> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID     # findmnt, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT     # findmnt, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK     # fdisk, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS # findmnt, etc
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID      # findmnt, etc
> +	help
> +	  Install a basic set of util-linux binaries.
> +
> +	  blkdiscard, blkid, blockdev, chcpu, col, colcrt, colrm,
> +	  column, ctrlaltdel, dmesg, fdisk, findfs, findmnt, flock,
> +	  fsfreeze, fstrim, getopt, hexdump, ipcmk, isosize, ldattach,
> +	  look, lsblk, lscpu, lsipc, lslocks, lsns, mcookie, mkfs,
> +	  mkswap, namei, prlimit, readprofile, renice, rev, rtcwake,
> +	  script, scriptreplay, setarch, setsid, sfdisk, swaplabel,
> +	  swapoff, swapon, tailf, uuidgen, whereis, wipefs
> +
> +	  The setarch utility may also install architecture-specific
> +	  "aliases" like linux32, linux64, uname26, i386 and x86_64.
> +
>  config BR2_PACKAGE_UTIL_LINUX_AGETTY
>  	bool "agetty"
>  	help
> @@ -58,6 +110,11 @@ config BR2_PACKAGE_UTIL_LINUX_BFS
>  	help
>  	  SCO bfs filesystem support
>  
> +config BR2_PACKAGE_UTIL_LINUX_CAL
> +	bool "cal"
> +	help
> +	  Display a calendar, or some part of it
> +
>  config BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH
>  	bool "chfn/chsh"
>  	depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam
> @@ -79,6 +136,9 @@ config BR2_PACKAGE_UTIL_LINUX_CRAMFS
>  
>  config BR2_PACKAGE_UTIL_LINUX_EJECT
>  	bool "eject"

missing depends on BR2_USE_MMU # fork()

> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
>  	  Eject removable media
>  
> @@ -92,13 +152,11 @@ config BR2_PACKAGE_UTIL_LINUX_FDFORMAT
>  	help
>  	  Low-level format a floppy disk
>  
> -config BR2_PACKAGE_UTIL_LINUX_FINDFS
> -	bool "findfs"
> -	help
> -	  Find a filesystem by label or UUID
> -
>  config BR2_PACKAGE_UTIL_LINUX_FSCK
>  	bool "fsck"

missing depends on BR2_USE_MMU # fork()

> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
>  	  Check and repair a linux filesystem
>  
> @@ -107,6 +165,16 @@ config BR2_PACKAGE_UTIL_LINUX_HWCLOCK
>  	help
>  	  Query or set the hardware clock (RTC)
>  
> +config BR2_PACKAGE_UTIL_LINUX_IPCRM
> +	bool "ipcrm"
> +	help
> +	  Remove certain IPC resources
> +
> +config BR2_PACKAGE_UTIL_LINUX_IPCS
> +	bool "ipcs"
> +	help
> +	  Show information on IPC facilities
> +
>  config BR2_PACKAGE_UTIL_LINUX_KILL
>  	bool "kill"
>  	help
> @@ -135,15 +203,20 @@ comment "login utilities needs a uClibc or (e)glibc toolchain w/ wchar, locale,
>  	depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \
>  		|| BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL
>  
> +config BR2_PACKAGE_UTIL_LINUX_LOGGER
> +	bool "logger"
> +	help
> +	  Enter messages into the system log
> +
>  config BR2_PACKAGE_UTIL_LINUX_LOSETUP
>  	bool "losetup"
>  	help
>  	  Set up and control loop devices
>  
> -config BR2_PACKAGE_UTIL_LINUX_LSBLK
> -	bool "lsblk"
> +config BR2_PACKAGE_UTIL_LINUX_LSLOGINS
> +	bool "lslogin"
>  	help
> -	  List block devices.
> +	  Display information about known users in the system
>  
>  config BR2_PACKAGE_UTIL_LINUX_MESG
>  	bool "mesg"
> @@ -163,11 +236,17 @@ config BR2_PACKAGE_UTIL_LINUX_MORE
>  
>  config BR2_PACKAGE_UTIL_LINUX_MOUNT
>  	bool "mount/umount"

missing depends on BR2_USE_MMU # fork()

> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
>  	  Mount/unmount filesystems
>  
>  config BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT
>  	bool "mountpoint"

missing depends on BR2_USE_MMU # fork()

> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
>  	  See if a directory is a mountpoint
>  
> @@ -185,13 +264,20 @@ config BR2_PACKAGE_UTIL_LINUX_NSENTER
>  	bool "nsenter"
>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
>  	help
> -	  Enter the namespaces of another process.
> +	  Enter the namespaces of another process
>  
>  comment "nsenter needs a toolchain w/ headers >= 3.0"
>  	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
>  
> +config BR2_PACKAGE_UTIL_LINUX_PG
> +	bool "pg"
> +	help
> +	  Browse pagewise through text files
> +
>  config BR2_PACKAGE_UTIL_LINUX_PARTX
>  	bool "partition utilities"

missing depends on BR2_USE_MMU # fork()

> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
>  	  Partition tools (addpart, delpart, partx)
>  
> @@ -261,6 +347,7 @@ config BR2_PACKAGE_UTIL_LINUX_UTMPDUMP
>  
>  config BR2_PACKAGE_UTIL_LINUX_UUIDD
>  	bool "uuidd"

missing depends on BR2_USE_MMU # fork()

With that fixed:
  Reviewed-by: Romain Naour <romain.naour@gmail.com>

Best regards,
Romain


> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>  	help
>  	  UUID generation daemon
>  
> diff --git a/package/util-linux/util-linux.mk b/package/util-linux/util-linux.mk
> index 93f45c2..d979852 100644
> --- a/package/util-linux/util-linux.mk
> +++ b/package/util-linux/util-linux.mk
> @@ -63,18 +63,26 @@ UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)
>  # Used by login-utils
>  UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LINUX_PAM),linux-pam)
>  
> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_NO_BINARIES),y)
> +UTIL_LINUX_CONF_OPTS += --disable-all-programs
> +else ifeq ($(BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES),y)
> +UTIL_LINUX_CONF_OPTS += --enable-all-programs
> +else
>  # Disable/Enable utilities
>  UTIL_LINUX_CONF_OPTS += \
> +	$(if $(BR2_PACKAGE_UTIL_LINUX_BASIC_SET),,--disable-all-programs) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_AGETTY),--enable-agetty,--disable-agetty) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_BFS),--enable-bfs,--disable-bfs) \
> +	$(if $(BR2_PACKAGE_UTIL_LINUX_CAL),--enable-cal,--disable-cal) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH),--enable-chfn-chsh,--disable-chfn-chsh) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_CRAMFS),--enable-cramfs,--disable-cramfs) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_EJECT),--enable-eject,--disable-eject) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_FALLOCATE),--enable-fallocate,--disable-fallocate) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_FDFORMAT),--enable-fdformat,--disable-fdformat) \
> -	$(if $(BR2_PACKAGE_UTIL_LINUX_FINDFS),--enable-findfs,--disable-findfs) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_FSCK),--enable-fsck,--disable-fsck) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_HWCLOCK),--enable-hwclock,--disable-hwclock) \
> +	$(if $(BR2_PACKAGE_UTIL_LINUX_IPCRM),--enable-ipcrm,--disable-ipcrm) \
> +	$(if $(BR2_PACKAGE_UTIL_LINUX_IPCS),--enable-ipcs,--disable-ipcs) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_KILL),--enable-kill,--disable-kill) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_LAST),--enable-last,--disable-last) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),--enable-libblkid,--disable-libblkid) \
> @@ -83,8 +91,9 @@ UTIL_LINUX_CONF_OPTS += \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBUUID),--enable-libuuid,--disable-libuuid) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_LINE),--enable-line,--disable-line) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS),--enable-last --enable-login --enable-runuser --enable-su --enable-sulogin,--disable-last --disable-login --disable-runuser --disable-su --disable-sulogin) \
> +	$(if $(BR2_PACKAGE_UTIL_LINUX_LOGGER),--enable-logger,--disable-logger) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_LOSETUP),--enable-losetup,--disable-losetup) \
> -	$(if $(BR2_PACKAGE_UTIL_LINUX_LSBLK),--enable-lsblk,--disable-lsblk) \
> +	$(if $(BR2_PACKAGE_UTIL_LINUX_LSLOGINS),--enable-lslogins,--disable-lslogins) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_MESG),--enable-mesg,--disable-mesg) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_MINIX),--enable-minix,--disable-minix) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_MORE),--enable-more,--disable-more) \
> @@ -94,6 +103,7 @@ UTIL_LINUX_CONF_OPTS += \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),--enable-nologin,--disable-nologin) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_NSENTER),--enable-nsenter,--disable-nsenter) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_PARTX),--enable-partx,--disable-partx) \
> +	$(if $(BR2_PACKAGE_UTIL_LINUX_PG),--enable-pg,--disable-pg) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT),--enable-pivot_root,--disable-pivot_root) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_RAW),--enable-raw,--disable-raw) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_RENAME),--enable-rename,--disable-rename) \
> @@ -112,6 +122,7 @@ UTIL_LINUX_CONF_OPTS += \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_WDCTL),--enable-wdctl,--disable-wdctl) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_WRITE),--enable-write,--disable-write) \
>  	$(if $(BR2_PACKAGE_UTIL_LINUX_ZRAMCTL),--enable-zramctl,--disable-zramctl)
> +endif
>  
>  # In the host version of util-linux, we so far only require libuuid,
>  # and none of the util-linux utilities, so we disable all of them, unless
> @@ -130,12 +141,6 @@ else
>  HOST_UTIL_LINUX_CONF_OPTS += --disable-all-programs
>  endif
>  
> -# Avoid building the tools if they are disabled since we can't install on
> -# a per-directory basis.
> -ifeq ($(BR2_PACKAGE_UTIL_LINUX_BINARIES),)
> -UTIL_LINUX_CONF_OPTS += --disable-all-programs
> -endif
> -
>  # Install libmount Python bindings
>  ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)
>  UTIL_LINUX_CONF_OPTS += --with-python
> @@ -162,7 +167,7 @@ endif
>  UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_INSTALL_PAMFILES
>  
>  # Install agetty->getty symlink to avoid breakage when there's no busybox
> -ifeq ($(BR2_PACKAGE_UTIL_LINUX_AGETTY),y)
> +ifneq ($(BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES)$(BR2_PACKAGE_UTIL_LINUX_AGETTY),)
>  ifeq ($(BR2_PACKAGE_BUSYBOX),)
>  define UTIL_LINUX_GETTY_SYMLINK
>  	ln -sf agetty $(TARGET_DIR)/sbin/getty
>
Carlos Santos July 6, 2016, 2:43 a.m. UTC | #2
> From: "Romain Naour" <romain.naour@gmail.com>
> To: "Carlos Santos" <casantos@datacom.ind.br>, buildroot@buildroot.org
> Cc: "thomas petazzoni" <thomas.petazzoni@free-electrons.com>
> Sent: Tuesday, July 5, 2016 12:11:33 PM
> Subject: Re: [Buildroot] [PATCH v5] util-linux: rework utilities menu for finer control

> Hi Carlos,
> 
> Le 07/06/2016 à 04:25, Carlos Santos a écrit :
>> 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.
>> 
>> Fix by reworking the install-utilies menu to take advantage
>> of the new --disable-all-programs config option.  This option
>> make it possible to disable the basic set of apps, and then
>> enable only the desired apps.
>> 
>> Signed-off-by: Danomi Manchego <danomimanchego123@gmail.com>
>> Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
>> ---
>> 
>> Changes v1 -> v2:
>>   - Rework to incorporate ideas and suggestions from Thomas Petazzoni
>>     and Arnout Vandecappelle.  At least, in spirit.
>> 
>> Changes v2 -> v3:
>>   - Change BR2_PACKAGE_UTIL_LINUX_SELECTED_BINARIES to
>>     BR2_PACKAGE_UTIL_LINUX_BINARIES, to conserve backwards-
>>     compatibility without need for a legacy option.
>>   - Enable 'Basic set' by default to match output of previous
>>     build when binaries were selected.
>> 
>> Changes v3 -> v4:
>>   - Rework to apply on top of master branch
>> 
>> Changes v4 -> v5:
>>   - Add option to control installation of libfdisk.
>>   - Fine-grained selection of libraries in custom selection of
>>     utilities.
>>   - Document that linux32, linux64, uname26, i386 and x86_64 are
>>     setarch aliases.
>>   - Add options to instal cal, ipcrm, ipcs, logger, lslogin and pg.
>>   - Remove options to install findfs and lsblk because there are no
>>     corresponding --enable- and --disable- configure options.
>> ---
>>  package/util-linux/Config.in     | 117 ++++++++++++++++++++++++++++++++++-----
>>  package/util-linux/util-linux.mk |  23 +++++---
>>  2 files changed, 116 insertions(+), 24 deletions(-)
>> 
>> diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in
>> index 8a36c0a..d002495 100644
>> --- a/package/util-linux/Config.in
>> +++ b/package/util-linux/Config.in
>> @@ -18,6 +18,14 @@ config BR2_PACKAGE_UTIL_LINUX_LIBBLKID
>>  	help
>>  	  Install libblkid.
>>  
>> +config BR2_PACKAGE_UTIL_LINUX_LIBFDISK
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>> +	depends on BR2_USE_MMU # fork
>> +	bool "libfdisk"
>> +	help
>> +	  Install libfdisk.
>> +
>>  config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
>>  	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
>>  	depends on BR2_USE_MMU # util-linux/libblkid
>> @@ -36,18 +44,62 @@ config BR2_PACKAGE_UTIL_LINUX_LIBUUID
>>  	help
>>  	  Install libuuid.
>>  
>> +choice
>> +	prompt "Install utilities"
>> +	default BR2_PACKAGE_UTIL_LINUX_NO_BINARIES
>> +
>> +config BR2_PACKAGE_UTIL_LINUX_NO_BINARIES
>> +	bool "none"
>> +	help
>> +	  Disable all util-linux binaries.
>> +
>> +config BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES
>> +	bool "all"
>> +	depends on BR2_USE_MMU # fork()
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID     # findmnt, etc
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT     # findmnt, etc
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK     # fdisk, etc
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS # findmnt, etc
>> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID      # findmnt, etc
>> +	select BR2_PACKAGE_LINUX_PAM  # login utils
>> +	select BR2_PACKAGE_ZLIB  # cramfs
>> +	select BR2_PACKAGE_NCURSES  # more, setterm, ul
>> +	select BR2_PACKAGE_LIBCAP_NG  # setpriv
>> +	help
>> +	  Install the complete set of util-linux binaries.
>> +
>>  config BR2_PACKAGE_UTIL_LINUX_BINARIES
>> -	bool "install utilities"
>> +	bool "custom"
>>  	depends on BR2_USE_MMU # fork()
>> -	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
>> -	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
>> -	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
>> -	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>>  	help
>> -	  Install the basic set of util-linux binaries.
>> +	  Manually select which util-linux binaries to install.
>> +
>> +endchoice
>>  
>>  if BR2_PACKAGE_UTIL_LINUX_BINARIES
>>  
>> +config BR2_PACKAGE_UTIL_LINUX_BASIC_SET
>> +	bool "Basic set"
> 
> Use "basic set" instead since all other option are lowercase.

Lowercase options correspond to package/utility/library names. I will change the other options to match this criterion.

> 
>> +	default y
> 
> missing depends on BR2_USE_MMU # fork()

OK, I will fine-tune the declaration of these dependencies.

Carlos Santos (Casantos)
DATACOM, P&D
diff mbox

Patch

diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in
index 8a36c0a..d002495 100644
--- a/package/util-linux/Config.in
+++ b/package/util-linux/Config.in
@@ -18,6 +18,14 @@  config BR2_PACKAGE_UTIL_LINUX_LIBBLKID
 	help
 	  Install libblkid.
 
+config BR2_PACKAGE_UTIL_LINUX_LIBFDISK
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	depends on BR2_USE_MMU # fork
+	bool "libfdisk"
+	help
+	  Install libfdisk.
+
 config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
 	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
 	depends on BR2_USE_MMU # util-linux/libblkid
@@ -36,18 +44,62 @@  config BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
 	  Install libuuid.
 
+choice
+	prompt "Install utilities"
+	default BR2_PACKAGE_UTIL_LINUX_NO_BINARIES
+
+config BR2_PACKAGE_UTIL_LINUX_NO_BINARIES
+	bool "none"
+	help
+	  Disable all util-linux binaries.
+
+config BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES
+	bool "all"
+	depends on BR2_USE_MMU # fork()
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID     # findmnt, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT     # findmnt, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK     # fdisk, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS # findmnt, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID      # findmnt, etc
+	select BR2_PACKAGE_LINUX_PAM  # login utils
+	select BR2_PACKAGE_ZLIB  # cramfs
+	select BR2_PACKAGE_NCURSES  # more, setterm, ul
+	select BR2_PACKAGE_LIBCAP_NG  # setpriv
+	help
+	  Install the complete set of util-linux binaries.
+
 config BR2_PACKAGE_UTIL_LINUX_BINARIES
-	bool "install utilities"
+	bool "custom"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
-	  Install the basic set of util-linux binaries.
+	  Manually select which util-linux binaries to install.
+
+endchoice
 
 if BR2_PACKAGE_UTIL_LINUX_BINARIES
 
+config BR2_PACKAGE_UTIL_LINUX_BASIC_SET
+	bool "Basic set"
+	default y
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID     # findmnt, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT     # findmnt, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK     # fdisk, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS # findmnt, etc
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID      # findmnt, etc
+	help
+	  Install a basic set of util-linux binaries.
+
+	  blkdiscard, blkid, blockdev, chcpu, col, colcrt, colrm,
+	  column, ctrlaltdel, dmesg, fdisk, findfs, findmnt, flock,
+	  fsfreeze, fstrim, getopt, hexdump, ipcmk, isosize, ldattach,
+	  look, lsblk, lscpu, lsipc, lslocks, lsns, mcookie, mkfs,
+	  mkswap, namei, prlimit, readprofile, renice, rev, rtcwake,
+	  script, scriptreplay, setarch, setsid, sfdisk, swaplabel,
+	  swapoff, swapon, tailf, uuidgen, whereis, wipefs
+
+	  The setarch utility may also install architecture-specific
+	  "aliases" like linux32, linux64, uname26, i386 and x86_64.
+
 config BR2_PACKAGE_UTIL_LINUX_AGETTY
 	bool "agetty"
 	help
@@ -58,6 +110,11 @@  config BR2_PACKAGE_UTIL_LINUX_BFS
 	help
 	  SCO bfs filesystem support
 
+config BR2_PACKAGE_UTIL_LINUX_CAL
+	bool "cal"
+	help
+	  Display a calendar, or some part of it
+
 config BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH
 	bool "chfn/chsh"
 	depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam
@@ -79,6 +136,9 @@  config BR2_PACKAGE_UTIL_LINUX_CRAMFS
 
 config BR2_PACKAGE_UTIL_LINUX_EJECT
 	bool "eject"
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
 	  Eject removable media
 
@@ -92,13 +152,11 @@  config BR2_PACKAGE_UTIL_LINUX_FDFORMAT
 	help
 	  Low-level format a floppy disk
 
-config BR2_PACKAGE_UTIL_LINUX_FINDFS
-	bool "findfs"
-	help
-	  Find a filesystem by label or UUID
-
 config BR2_PACKAGE_UTIL_LINUX_FSCK
 	bool "fsck"
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
 	  Check and repair a linux filesystem
 
@@ -107,6 +165,16 @@  config BR2_PACKAGE_UTIL_LINUX_HWCLOCK
 	help
 	  Query or set the hardware clock (RTC)
 
+config BR2_PACKAGE_UTIL_LINUX_IPCRM
+	bool "ipcrm"
+	help
+	  Remove certain IPC resources
+
+config BR2_PACKAGE_UTIL_LINUX_IPCS
+	bool "ipcs"
+	help
+	  Show information on IPC facilities
+
 config BR2_PACKAGE_UTIL_LINUX_KILL
 	bool "kill"
 	help
@@ -135,15 +203,20 @@  comment "login utilities needs a uClibc or (e)glibc toolchain w/ wchar, locale,
 	depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \
 		|| BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL
 
+config BR2_PACKAGE_UTIL_LINUX_LOGGER
+	bool "logger"
+	help
+	  Enter messages into the system log
+
 config BR2_PACKAGE_UTIL_LINUX_LOSETUP
 	bool "losetup"
 	help
 	  Set up and control loop devices
 
-config BR2_PACKAGE_UTIL_LINUX_LSBLK
-	bool "lsblk"
+config BR2_PACKAGE_UTIL_LINUX_LSLOGINS
+	bool "lslogin"
 	help
-	  List block devices.
+	  Display information about known users in the system
 
 config BR2_PACKAGE_UTIL_LINUX_MESG
 	bool "mesg"
@@ -163,11 +236,17 @@  config BR2_PACKAGE_UTIL_LINUX_MORE
 
 config BR2_PACKAGE_UTIL_LINUX_MOUNT
 	bool "mount/umount"
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
 	  Mount/unmount filesystems
 
 config BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT
 	bool "mountpoint"
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
 	  See if a directory is a mountpoint
 
@@ -185,13 +264,20 @@  config BR2_PACKAGE_UTIL_LINUX_NSENTER
 	bool "nsenter"
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
 	help
-	  Enter the namespaces of another process.
+	  Enter the namespaces of another process
 
 comment "nsenter needs a toolchain w/ headers >= 3.0"
 	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
 
+config BR2_PACKAGE_UTIL_LINUX_PG
+	bool "pg"
+	help
+	  Browse pagewise through text files
+
 config BR2_PACKAGE_UTIL_LINUX_PARTX
 	bool "partition utilities"
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
 	  Partition tools (addpart, delpart, partx)
 
@@ -261,6 +347,7 @@  config BR2_PACKAGE_UTIL_LINUX_UTMPDUMP
 
 config BR2_PACKAGE_UTIL_LINUX_UUIDD
 	bool "uuidd"
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	help
 	  UUID generation daemon
 
diff --git a/package/util-linux/util-linux.mk b/package/util-linux/util-linux.mk
index 93f45c2..d979852 100644
--- a/package/util-linux/util-linux.mk
+++ b/package/util-linux/util-linux.mk
@@ -63,18 +63,26 @@  UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)
 # Used by login-utils
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LINUX_PAM),linux-pam)
 
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_NO_BINARIES),y)
+UTIL_LINUX_CONF_OPTS += --disable-all-programs
+else ifeq ($(BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES),y)
+UTIL_LINUX_CONF_OPTS += --enable-all-programs
+else
 # Disable/Enable utilities
 UTIL_LINUX_CONF_OPTS += \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_BASIC_SET),,--disable-all-programs) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_AGETTY),--enable-agetty,--disable-agetty) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_BFS),--enable-bfs,--disable-bfs) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_CAL),--enable-cal,--disable-cal) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH),--enable-chfn-chsh,--disable-chfn-chsh) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_CRAMFS),--enable-cramfs,--disable-cramfs) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_EJECT),--enable-eject,--disable-eject) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_FALLOCATE),--enable-fallocate,--disable-fallocate) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_FDFORMAT),--enable-fdformat,--disable-fdformat) \
-	$(if $(BR2_PACKAGE_UTIL_LINUX_FINDFS),--enable-findfs,--disable-findfs) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_FSCK),--enable-fsck,--disable-fsck) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_HWCLOCK),--enable-hwclock,--disable-hwclock) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_IPCRM),--enable-ipcrm,--disable-ipcrm) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_IPCS),--enable-ipcs,--disable-ipcs) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_KILL),--enable-kill,--disable-kill) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_LAST),--enable-last,--disable-last) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),--enable-libblkid,--disable-libblkid) \
@@ -83,8 +91,9 @@  UTIL_LINUX_CONF_OPTS += \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBUUID),--enable-libuuid,--disable-libuuid) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_LINE),--enable-line,--disable-line) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS),--enable-last --enable-login --enable-runuser --enable-su --enable-sulogin,--disable-last --disable-login --disable-runuser --disable-su --disable-sulogin) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LOGGER),--enable-logger,--disable-logger) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_LOSETUP),--enable-losetup,--disable-losetup) \
-	$(if $(BR2_PACKAGE_UTIL_LINUX_LSBLK),--enable-lsblk,--disable-lsblk) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LSLOGINS),--enable-lslogins,--disable-lslogins) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_MESG),--enable-mesg,--disable-mesg) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_MINIX),--enable-minix,--disable-minix) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_MORE),--enable-more,--disable-more) \
@@ -94,6 +103,7 @@  UTIL_LINUX_CONF_OPTS += \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),--enable-nologin,--disable-nologin) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_NSENTER),--enable-nsenter,--disable-nsenter) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_PARTX),--enable-partx,--disable-partx) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_PG),--enable-pg,--disable-pg) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT),--enable-pivot_root,--disable-pivot_root) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_RAW),--enable-raw,--disable-raw) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_RENAME),--enable-rename,--disable-rename) \
@@ -112,6 +122,7 @@  UTIL_LINUX_CONF_OPTS += \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_WDCTL),--enable-wdctl,--disable-wdctl) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_WRITE),--enable-write,--disable-write) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_ZRAMCTL),--enable-zramctl,--disable-zramctl)
+endif
 
 # In the host version of util-linux, we so far only require libuuid,
 # and none of the util-linux utilities, so we disable all of them, unless
@@ -130,12 +141,6 @@  else
 HOST_UTIL_LINUX_CONF_OPTS += --disable-all-programs
 endif
 
-# Avoid building the tools if they are disabled since we can't install on
-# a per-directory basis.
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_BINARIES),)
-UTIL_LINUX_CONF_OPTS += --disable-all-programs
-endif
-
 # Install libmount Python bindings
 ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)
 UTIL_LINUX_CONF_OPTS += --with-python
@@ -162,7 +167,7 @@  endif
 UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_INSTALL_PAMFILES
 
 # Install agetty->getty symlink to avoid breakage when there's no busybox
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_AGETTY),y)
+ifneq ($(BR2_PACKAGE_UTIL_LINUX_ALL_BINARIES)$(BR2_PACKAGE_UTIL_LINUX_AGETTY),)
 ifeq ($(BR2_PACKAGE_BUSYBOX),)
 define UTIL_LINUX_GETTY_SYMLINK
 	ln -sf agetty $(TARGET_DIR)/sbin/getty