[Buildroot] [RFC PATCH] package/util-linux: build libraries as a separate package

unixmania at gmail.com unixmania at gmail.com
Tue May 7 16:51:58 UTC 2019


From: Carlos Santos <unixmania at gmail.com>

The findmount and lsblk utilities need udev to work correctly but cannot
be built with udev support because the packages providing libudev (eudev
and systemd) depend on util-linux, creating a chicken-egg problem. Solve
it by means of the following changes:

- Add the util-linux-libs package, which provides libblkid, libfdisk,
  libmount, libsmartcols and libuuid. It needs a small patch to
  install the uuidd.h header, used to build the uuidd utility.
- Make util-linux depend on util-linux-libs and build only the programs.
  This requires a quite intrusive patch that modifies Makefile.am and
  some Makemodule.am files, thus requiring AUTORECONF.
- Make eudev, systemd and all other packages that originally depended on
  util-linux depend on util-linux-libs.
- Add legacy options, so defconfigs selecting the libraries by means of
  the old configs (BR2_PACKAGE_UTIL_LINUX_LIBBLKID, etc.) keep working.

Fixes: https://bugs.busybox.net/show_bug.cgi?id=11811
Signed-off-by: Carlos Santos <unixmania at gmail.com>
---
 Config.in.legacy                              |  40 ++
 boot/gummiboot/Config.in                      |   4 +-
 boot/syslinux/Config.in                       |   4 +-
 package/Config.in                             |   1 +
 package/Config.in.host                        |   1 +
 package/abootimg/Config.in                    |   4 +-
 package/apr/apr.mk                            |   2 +-
 package/asterisk/Config.in                    |   4 +-
 package/azure-iot-sdk-c/Config.in             |   4 +-
 package/bcache-tools/Config.in                |   6 +-
 package/btrfs-progs/Config.in                 |   6 +-
 package/cryptsetup/Config.in                  |   6 +-
 package/e2fsprogs/Config.in                   |   6 +-
 package/efl/Config.in                         |   6 +-
 package/eudev/Config.in                       |   4 +-
 package/eudev/eudev.mk                        |   2 +-
 package/f2fs-tools/Config.in                  |   4 +-
 package/f2fs-tools/f2fs-tools.mk              |   2 +-
 package/fontconfig/Config.in                  |   4 +-
 package/freeswitch/Config.in                  |   4 +-
 package/gerbera/Config.in                     |   4 +-
 package/gptfdisk/Config.in                    |   4 +-
 package/gupnp/Config.in                       |   4 +-
 package/libcrossguid/Config.in                |   4 +-
 package/libglib2/Config.in                    |   4 +-
 package/libpjsip/libpjsip.mk                  |   2 +-
 package/lighttpd/lighttpd.mk                  |   2 +-
 package/lttng-babeltrace/Config.in            |   4 +-
 package/lttng-libust/Config.in                |   4 +-
 package/lttng-tools/Config.in                 |   4 +-
 package/mosquitto/mosquitto.mk                |   2 +-
 package/mtd/Config.in                         |   4 +-
 package/network-manager/Config.in             |   4 +-
 package/nilfs-utils/Config.in                 |   8 +-
 package/ntfs-3g/ntfs-3g.mk                    |   2 +-
 package/nvme/nvme.mk                          |   2 +-
 package/parted/Config.in                      |   4 +-
 package/qpid-proton/Config.in                 |   4 +-
 package/rsyslog/rsyslog.mk                    |   2 +-
 package/syslog-ng/syslog-ng.mk                |   2 +-
 package/systemd/Config.in                     |  16 +-
 package/systemd/systemd.mk                    |   2 +-
 package/taskd/Config.in                       |   4 +-
 package/tcf-agent/Config.in                   |   4 +-
 .../0001-libuuid-install-uuidd.h.patch        |  26 ++
 package/util-linux-libs/Config.in             |  47 ++
 package/util-linux-libs/Config.in.host        |  10 +
 package/util-linux-libs/util-linux-libs.hash  |   9 +
 package/util-linux-libs/util-linux-libs.mk    |  96 ++++
 .../0005-Use-installed-libraries.patch        | 432 ++++++++++++++++++
 package/util-linux/Config.in                  | 100 ++--
 package/util-linux/Config.in.host             |   2 +-
 package/util-linux/util-linux.mk              |  91 ++--
 package/wget/wget.mk                          |   2 +-
 package/xen/Config.in                         |   4 +-
 package/xfsprogs/Config.in                    |   6 +-
 package/zeromq/Config.in                      |   4 +-
 57 files changed, 841 insertions(+), 198 deletions(-)
 create mode 100644 package/util-linux-libs/0001-libuuid-install-uuidd.h.patch
 create mode 100644 package/util-linux-libs/Config.in
 create mode 100644 package/util-linux-libs/Config.in.host
 create mode 100644 package/util-linux-libs/util-linux-libs.hash
 create mode 100644 package/util-linux-libs/util-linux-libs.mk
 create mode 100644 package/util-linux/0005-Use-installed-libraries.patch

diff --git a/Config.in.legacy b/Config.in.legacy
index ec5079da65..76bf2975bd 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -146,6 +146,46 @@ endif
 
 comment "Legacy options removed in 2019.05"
 
+config BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	bool "libblkid option moved to util-linux-libs"
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	help
+	  The util-linux libraries are provided by the util-linux-libs
+	  package, now.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBFDISK
+	bool "libfdisk option moved to util-linux-libs"
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_FDISK
+	help
+	  The util-linux libraries are provided by the util-linux-libs
+	  package, now.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	bool "libmount option moved to util-linux-libs"
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	help
+	  The util-linux libraries are provided by the util-linux-libs
+	  package, now.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
+	bool "libsmartcols option moved to util-linux-libs"
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
+	help
+	  The util-linux libraries are provided by the util-linux-libs
+	  package, now.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	bool "libuuid option moved to util-linux-libs"
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	help
+	  The util-linux libraries are provided by the util-linux-libs
+	  package, now.
+
 config BR2_PACKAGE_LUNIT
 	bool "lunit package removed"
 	select BR2_LEGACY
diff --git a/boot/gummiboot/Config.in b/boot/gummiboot/Config.in
index 1b5c4279f7..196f1c82c1 100644
--- a/boot/gummiboot/Config.in
+++ b/boot/gummiboot/Config.in
@@ -3,8 +3,8 @@ config BR2_TARGET_GUMMIBOOT
 	depends on BR2_i386 || BR2_x86_64
 	depends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS
 	select BR2_PACKAGE_GNU_EFI
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
 	help
 	  gummiboot is a simple UEFI boot manager which executes
 	  configured EFI images. The default entry is selected by a
diff --git a/boot/syslinux/Config.in b/boot/syslinux/Config.in
index 339a97f0e4..44a889ac95 100644
--- a/boot/syslinux/Config.in
+++ b/boot/syslinux/Config.in
@@ -6,8 +6,8 @@ config BR2_TARGET_SYSLINUX
 		if !BR2_TARGET_SYSLINUX_PXELINUX && \
 		   !BR2_TARGET_SYSLINUX_MBR && \
 		   !BR2_TARGET_SYSLINUX_EFI
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  The syslinux bootloader for x86 systems.
 	  This includes: syslinux, pxelinux, extlinux.
diff --git a/package/Config.in b/package/Config.in
index f592e74a99..7211133862 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2229,6 +2229,7 @@ menu "System tools"
 	source "package/tpm2-tools/Config.in"
 	source "package/tpm2-totp/Config.in"
 	source "package/unscd/Config.in"
+	source "package/util-linux-libs/Config.in"
 	source "package/util-linux/Config.in"
 	source "package/xen/Config.in"
 	source "package/xvisor/Config.in"
diff --git a/package/Config.in.host b/package/Config.in.host
index bc7e71882b..737ee0fce8 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -65,6 +65,7 @@ menu "Host utilities"
 	source "package/tegrarcm/Config.in.host"
 	source "package/ti-cgt-pru/Config.in.host"
 	source "package/uboot-tools/Config.in.host"
+	source "package/util-linux-libs/Config.in.host"
 	source "package/util-linux/Config.in.host"
 	source "package/utp_com/Config.in.host"
 	source "package/vboot-utils/Config.in.host"
diff --git a/package/abootimg/Config.in b/package/abootimg/Config.in
index 30e5bd1fb0..e2b92b5717 100644
--- a/package/abootimg/Config.in
+++ b/package/abootimg/Config.in
@@ -1,8 +1,8 @@
 config BR2_PACKAGE_ABOOTIMG
 	bool "abootimg"
 	depends on BR2_USE_MMU	# libblkid
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
 	help
 	  Tool to manipulate Android Boot Images, either on files
 	  or directly on /dev block devices.
diff --git a/package/apr/apr.mk b/package/apr/apr.mk
index 8f29e57c59..6bcb1f599d 100644
--- a/package/apr/apr.mk
+++ b/package/apr/apr.mk
@@ -57,7 +57,7 @@ else
 APR_CONF_OPTS += --disable-nonportable-atomics
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 APR_DEPENDENCIES += util-linux
 endif
 
diff --git a/package/asterisk/Config.in b/package/asterisk/Config.in
index c52456f8fc..205e2a0c1b 100644
--- a/package/asterisk/Config.in
+++ b/package/asterisk/Config.in
@@ -12,8 +12,8 @@ config BR2_PACKAGE_ASTERISK
 	select BR2_PACKAGE_LIBILBC
 	select BR2_PACKAGE_LIBXML2
 	select BR2_PACKAGE_SQLITE
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Asterisk is an open source framework for building
 	  communications applications. Asterisk turns an ordinary
diff --git a/package/azure-iot-sdk-c/Config.in b/package/azure-iot-sdk-c/Config.in
index c554d2fb9b..da891dff33 100644
--- a/package/azure-iot-sdk-c/Config.in
+++ b/package/azure-iot-sdk-c/Config.in
@@ -5,8 +5,8 @@ config BR2_PACKAGE_AZURE_IOT_SDK_C
 	select BR2_PACKAGE_LIBCURL
 	select BR2_PACKAGE_LIBXML2
 	select BR2_PACKAGE_OPENSSL
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Microsoft Azure IoT Hub device SDK for C is used
 	  to connect devices running C code to Azure IoT Hub.
diff --git a/package/bcache-tools/Config.in b/package/bcache-tools/Config.in
index c8e3f6d1bf..9b247f6a99 100644
--- a/package/bcache-tools/Config.in
+++ b/package/bcache-tools/Config.in
@@ -2,9 +2,9 @@ config BR2_PACKAGE_BCACHE_TOOLS
 	bool "bcache tools"
 	depends on BR2_PACKAGE_HAS_UDEV
 	depends on BR2_USE_MMU # util-linux (libblkid)
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
 	help
 	  Bcache is a Linux kernel block layer cache. It allows one or
 	  more fast disk drives such as flash-based solid state drives
diff --git a/package/btrfs-progs/Config.in b/package/btrfs-progs/Config.in
index 35dfc39193..6b370e8ccb 100644
--- a/package/btrfs-progs/Config.in
+++ b/package/btrfs-progs/Config.in
@@ -3,9 +3,9 @@ config BR2_PACKAGE_BTRFS_PROGS
 	depends on BR2_USE_MMU # util-linux
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	select BR2_PACKAGE_LZO
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_ZLIB
 	help
 	  Btrfs filesystem utilities
diff --git a/package/cryptsetup/Config.in b/package/cryptsetup/Config.in
index 14b897a8a8..7622b3a6f9 100644
--- a/package/cryptsetup/Config.in
+++ b/package/cryptsetup/Config.in
@@ -6,9 +6,9 @@ config BR2_PACKAGE_CRYPTSETUP
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c
 	select BR2_PACKAGE_POPT
 	select BR2_PACKAGE_LVM2
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
 	select BR2_PACKAGE_JSON_C
 	help
 	  This tool helps manipulate dm-crypt and luks partitions for
diff --git a/package/e2fsprogs/Config.in b/package/e2fsprogs/Config.in
index b3d12b4a63..e9e484466d 100644
--- a/package/e2fsprogs/Config.in
+++ b/package/e2fsprogs/Config.in
@@ -1,9 +1,9 @@
 menuconfig BR2_PACKAGE_E2FSPROGS
 	bool "e2fsprogs"
 	depends on BR2_USE_MMU # util-linux/libblkid
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  The EXT2 file system utilities.
 
diff --git a/package/efl/Config.in b/package/efl/Config.in
index 05be5aae56..5564b6f442 100644
--- a/package/efl/Config.in
+++ b/package/efl/Config.in
@@ -116,10 +116,10 @@ config BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT
 	bool "Enable libmount support (recommended)"
 	default y
 	depends on BR2_PACKAGE_EFL_EEZE
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
 	# libblkid is part of required tools, see EFL's README.
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
 	help
 	  Libmount is used heavily inside Eeze for support of removable
 	  devices etc... and disabling this will hurt support for
diff --git a/package/eudev/Config.in b/package/eudev/Config.in
index 2220265a55..5d03bcc09e 100644
--- a/package/eudev/Config.in
+++ b/package/eudev/Config.in
@@ -5,8 +5,8 @@ config BR2_PACKAGE_EUDEV
 	depends on BR2_USE_WCHAR # needs C99 compiler
 	depends on !BR2_STATIC_LIBS # kmod
 	select BR2_PACKAGE_HAS_UDEV
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
 	select BR2_PACKAGE_KMOD
 	help
 	  eudev is a fork of systemd-udev with the goal of obtaining
diff --git a/package/eudev/eudev.mk b/package/eudev/eudev.mk
index d88e010c28..c03c9afdf1 100644
--- a/package/eudev/eudev.mk
+++ b/package/eudev/eudev.mk
@@ -18,7 +18,7 @@ EUDEV_CONF_OPTS = \
 	--enable-kmod \
 	--enable-blkid
 
-EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux kmod
+EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux-libs kmod
 EUDEV_PROVIDES = udev
 
 ifeq ($(BR2_ROOTFS_MERGED_USR),)
diff --git a/package/f2fs-tools/Config.in b/package/f2fs-tools/Config.in
index e373096380..d95710cad9 100644
--- a/package/f2fs-tools/Config.in
+++ b/package/f2fs-tools/Config.in
@@ -1,8 +1,8 @@
 config BR2_PACKAGE_F2FS_TOOLS
 	bool "f2fs-tools"
 	depends on BR2_USE_WCHAR # uses wchar_t
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Tools for Flash-Friendly File System (F2FS)
 
diff --git a/package/f2fs-tools/f2fs-tools.mk b/package/f2fs-tools/f2fs-tools.mk
index ba16218bda..988ecdaee9 100644
--- a/package/f2fs-tools/f2fs-tools.mk
+++ b/package/f2fs-tools/f2fs-tools.mk
@@ -23,7 +23,7 @@ else
 F2FS_TOOLS_CONF_OPTS += --without-selinux
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID),y)
 # util-linux is a dependency already, no need to list it again
 F2FS_TOOLS_CONF_OPTS += --with-blkid
 else
diff --git a/package/fontconfig/Config.in b/package/fontconfig/Config.in
index d274b06350..a3012e0751 100644
--- a/package/fontconfig/Config.in
+++ b/package/fontconfig/Config.in
@@ -2,8 +2,8 @@ config BR2_PACKAGE_FONTCONFIG
 	bool "fontconfig"
 	select BR2_PACKAGE_FREETYPE
 	select BR2_PACKAGE_EXPAT
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Fontconfig is a library for configuring and customizing font
 	  access.
diff --git a/package/freeswitch/Config.in b/package/freeswitch/Config.in
index bd961314e7..b86802fc9e 100644
--- a/package/freeswitch/Config.in
+++ b/package/freeswitch/Config.in
@@ -20,8 +20,8 @@ config BR2_PACKAGE_FREESWITCH
 	select BR2_PACKAGE_SPEEXDSP
 	select BR2_PACKAGE_SQLITE
 	select BR2_PACKAGE_TIFF
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_ZLIB
 	help
 	  FreeSWITCH is a scalable open source cross-platform
diff --git a/package/gerbera/Config.in b/package/gerbera/Config.in
index e10f78b77e..b8d7e20d4d 100644
--- a/package/gerbera/Config.in
+++ b/package/gerbera/Config.in
@@ -10,8 +10,8 @@ config BR2_PACKAGE_GERBERA
 	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
 	select BR2_PACKAGE_LIBUPNP18
 	select BR2_PACKAGE_SQLITE
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_ZLIB
 	help
 	  A free media server.
diff --git a/package/gptfdisk/Config.in b/package/gptfdisk/Config.in
index 8d94d2bcf8..5f466aead7 100644
--- a/package/gptfdisk/Config.in
+++ b/package/gptfdisk/Config.in
@@ -4,8 +4,8 @@ comment "gptfdisk needs a toolchain w/ C++"
 config BR2_PACKAGE_GPTFDISK
 	bool "gptfdisk"
 	depends on BR2_INSTALL_LIBSTDCPP
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_GPTFDISK_GDISK if \
 		!(BR2_PACKAGE_GPTFDISK_SGDISK || BR2_PACKAGE_GPTFDISK_CGDISK)
 	help
diff --git a/package/gupnp/Config.in b/package/gupnp/Config.in
index 3074a42797..01a078a8fe 100644
--- a/package/gupnp/Config.in
+++ b/package/gupnp/Config.in
@@ -6,8 +6,8 @@ config BR2_PACKAGE_GUPNP
 	select BR2_PACKAGE_LIBGLIB2
 	select BR2_PACKAGE_GSSDP
 	select BR2_PACKAGE_LIBXML2
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  GUPnP implements the UPnP specification: resource announcement
 	  and discovery, description, control, event notification, and
diff --git a/package/libcrossguid/Config.in b/package/libcrossguid/Config.in
index 49060bc837..bd439386f1 100644
--- a/package/libcrossguid/Config.in
+++ b/package/libcrossguid/Config.in
@@ -2,8 +2,8 @@ config BR2_PACKAGE_LIBCROSSGUID
 	bool "libcrossguid"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Lightweight cross platform C++ GUID/UUID library
 
diff --git a/package/libglib2/Config.in b/package/libglib2/Config.in
index ea946ba05e..2e3c0ea406 100644
--- a/package/libglib2/Config.in
+++ b/package/libglib2/Config.in
@@ -7,8 +7,8 @@ config BR2_PACKAGE_LIBGLIB2
 	select BR2_PACKAGE_LIBFFI
 	select BR2_PACKAGE_PCRE
 	select BR2_PACKAGE_PCRE_UCP
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
 	select BR2_PACKAGE_ZLIB
 	help
 	  Low-level core library that forms the basis of GTK+ and GNOME.
diff --git a/package/libpjsip/libpjsip.mk b/package/libpjsip/libpjsip.mk
index 22b922586c..86af4adfc4 100644
--- a/package/libpjsip/libpjsip.mk
+++ b/package/libpjsip/libpjsip.mk
@@ -82,7 +82,7 @@ LIBPJSIP_CONF_OPTS += \
 	--disable-speex-codec
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 LIBPJSIP_DEPENDENCIES += util-linux
 endif
 
diff --git a/package/lighttpd/lighttpd.mk b/package/lighttpd/lighttpd.mk
index f50a4af935..c6c31eb33d 100644
--- a/package/lighttpd/lighttpd.mk
+++ b/package/lighttpd/lighttpd.mk
@@ -55,7 +55,7 @@ endif
 ifeq ($(BR2_PACKAGE_LIGHTTPD_WEBDAV),y)
 LIGHTTPD_DEPENDENCIES += libxml2 sqlite
 LIGHTTPD_CONF_OPTS += --with-webdav-props
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 LIGHTTPD_CONF_OPTS += --with-webdav-locks
 LIGHTTPD_DEPENDENCIES += util-linux
 else
diff --git a/package/lttng-babeltrace/Config.in b/package/lttng-babeltrace/Config.in
index ba6b5543d9..65435a05a5 100644
--- a/package/lttng-babeltrace/Config.in
+++ b/package/lttng-babeltrace/Config.in
@@ -3,8 +3,8 @@ config BR2_PACKAGE_LTTNG_BABELTRACE
 	depends on BR2_USE_WCHAR # libglib2
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
 	depends on BR2_USE_MMU # libglib2
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_LIBGLIB2
 	select BR2_PACKAGE_POPT
 	help
diff --git a/package/lttng-libust/Config.in b/package/lttng-libust/Config.in
index 8472cab7bb..4f4e01ba0f 100644
--- a/package/lttng-libust/Config.in
+++ b/package/lttng-libust/Config.in
@@ -6,8 +6,8 @@ config BR2_PACKAGE_LTTNG_LIBUST
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on !BR2_STATIC_LIBS
 	select BR2_PACKAGE_LIBURCU
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Userspace tracing library for the LTTng 2.x tracing
 	  infrastructure. It allows userspace programs to create
diff --git a/package/lttng-tools/Config.in b/package/lttng-tools/Config.in
index 9c86cc2646..5db435405c 100644
--- a/package/lttng-tools/Config.in
+++ b/package/lttng-tools/Config.in
@@ -7,8 +7,8 @@ config BR2_PACKAGE_LTTNG_TOOLS
 	select BR2_PACKAGE_LIBURCU
 	select BR2_PACKAGE_LIBXML2
 	select BR2_PACKAGE_POPT
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Userspace utilities for the LTTng 2.x tracing
 	  infrastructure.
diff --git a/package/mosquitto/mosquitto.mk b/package/mosquitto/mosquitto.mk
index 51c0abd0ba..2d4bf29167 100644
--- a/package/mosquitto/mosquitto.mk
+++ b/package/mosquitto/mosquitto.mk
@@ -44,7 +44,7 @@ else
 MOSQUITTO_MAKE_OPTS += WITH_SRV=no
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 MOSQUITTO_DEPENDENCIES += util-linux
 MOSQUITTO_MAKE_OPTS += WITH_UUID=yes
 else
diff --git a/package/mtd/Config.in b/package/mtd/Config.in
index 590ca7f5ef..6c5bd079cd 100644
--- a/package/mtd/Config.in
+++ b/package/mtd/Config.in
@@ -18,8 +18,8 @@ config BR2_PACKAGE_MTD_JFFS_UTILS
 config BR2_PACKAGE_MTD_UBIFS_UTILS
 	bool
 	select BR2_PACKAGE_LZO
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_ZLIB
 
 comment "MTD tools selection"
diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in
index 2d854fe003..3744d75c06 100644
--- a/package/network-manager/Config.in
+++ b/package/network-manager/Config.in
@@ -13,8 +13,8 @@ config BR2_PACKAGE_NETWORK_MANAGER
 	select BR2_PACKAGE_LIBGCRYPT
 	select BR2_PACKAGE_LIBNL
 	select BR2_PACKAGE_LIBGUDEV
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_WIRELESS_TOOLS
 	select BR2_PACKAGE_WIRELESS_TOOLS_LIB
 	select BR2_PACKAGE_READLINE
diff --git a/package/nilfs-utils/Config.in b/package/nilfs-utils/Config.in
index 7b239b1af5..e5cca92d48 100644
--- a/package/nilfs-utils/Config.in
+++ b/package/nilfs-utils/Config.in
@@ -2,10 +2,10 @@ config BR2_PACKAGE_NILFS_UTILS
 	bool "nilfs-utils"
 	depends on BR2_USE_MMU # util-linux libmount, libblkid
 	depends on BR2_TOOLCHAIN_HAS_THREADS # sem_open()
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
 	help
 	  Tools for creating and managing NILFS2 filesystems.
 
diff --git a/package/ntfs-3g/ntfs-3g.mk b/package/ntfs-3g/ntfs-3g.mk
index 5f23eae9c9..9d38e4803b 100644
--- a/package/ntfs-3g/ntfs-3g.mk
+++ b/package/ntfs-3g/ntfs-3g.mk
@@ -18,7 +18,7 @@ NTFS_3G_CONF_OPTS += --with-fuse=external
 NTFS_3G_DEPENDENCIES += libfuse
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 NTFS_3G_DEPENDENCIES += util-linux
 endif
 
diff --git a/package/nvme/nvme.mk b/package/nvme/nvme.mk
index 1762a756c6..e10223dd53 100644
--- a/package/nvme/nvme.mk
+++ b/package/nvme/nvme.mk
@@ -11,7 +11,7 @@ NVME_LICENSE_FILES = LICENSE
 
 # Yes, LIBUUID=0 means libuuid support enabled.
 # LIBUUID=1 means libuuid support disabled.
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 NVME_DEPENDENCIES += util-linux
 NVME_MAKE_OPTS += LIBUUID=0
 else
diff --git a/package/parted/Config.in b/package/parted/Config.in
index 9d78f0f1f9..0ae01dad67 100644
--- a/package/parted/Config.in
+++ b/package/parted/Config.in
@@ -1,8 +1,8 @@
 config BR2_PACKAGE_PARTED
 	bool "parted"
 	depends on BR2_USE_WCHAR
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  parted, the GNU partition resizing program
 
diff --git a/package/qpid-proton/Config.in b/package/qpid-proton/Config.in
index b49a2afa7e..1936dc4e54 100644
--- a/package/qpid-proton/Config.in
+++ b/package/qpid-proton/Config.in
@@ -1,8 +1,8 @@
 config BR2_PACKAGE_QPID_PROTON
 	bool "qpid-proton"
 	depends on !BR2_STATIC_LIBS # build a shared library
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  The AMQP messaging toolkit
 
diff --git a/package/rsyslog/rsyslog.mk b/package/rsyslog/rsyslog.mk
index fcd476cee3..e034cb0381 100644
--- a/package/rsyslog/rsyslog.mk
+++ b/package/rsyslog/rsyslog.mk
@@ -52,7 +52,7 @@ else
 RSYSLOG_CONF_OPTS += --disable-pgsql
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 RSYSLOG_DEPENDENCIES += util-linux
 RSYSLOG_CONF_OPTS += --enable-uuid
 else
diff --git a/package/syslog-ng/syslog-ng.mk b/package/syslog-ng/syslog-ng.mk
index 4ac25a675b..16c8b79d63 100644
--- a/package/syslog-ng/syslog-ng.mk
+++ b/package/syslog-ng/syslog-ng.mk
@@ -60,7 +60,7 @@ else
 SYSLOG_NG_CONF_OPTS += --disable-json
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 SYSLOG_NG_DEPENDENCIES += util-linux
 endif
 
diff --git a/package/systemd/Config.in b/package/systemd/Config.in
index 92ffc7cc5a..cf9c37b0ae 100644
--- a/package/systemd/Config.in
+++ b/package/systemd/Config.in
@@ -22,14 +22,14 @@ menuconfig BR2_PACKAGE_SYSTEMD
 	select BR2_PACKAGE_HAS_UDEV
 	select BR2_PACKAGE_DBUS # runtime dependency only
 	select BR2_PACKAGE_LIBCAP
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX_BINARIES
-	select BR2_PACKAGE_UTIL_LINUX_AGETTY
-	select BR2_PACKAGE_UTIL_LINUX_MOUNT
-	select BR2_PACKAGE_UTIL_LINUX_NOLOGIN
-	select BR2_PACKAGE_UTIL_LINUX_FSCK
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BINARIES
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_AGETTY
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_NOLOGIN
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_FSCK
 	select BR2_PACKAGE_KMOD
 	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools
 	select BR2_PACKAGE_KMOD_TOOLS
diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
index edc4a9ecc1..757664cd32 100644
--- a/package/systemd/systemd.mk
+++ b/package/systemd/systemd.mk
@@ -15,7 +15,7 @@ SYSTEMD_DEPENDENCIES = \
 	host-intltool \
 	kmod \
 	libcap \
-	util-linux
+	util-linux-libs
 
 SYSTEMD_PROVIDES = udev
 
diff --git a/package/taskd/Config.in b/package/taskd/Config.in
index 19d123fb59..7fbd2fdd4b 100644
--- a/package/taskd/Config.in
+++ b/package/taskd/Config.in
@@ -5,8 +5,8 @@ config BR2_PACKAGE_TASKD
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_INSTALL_LIBSTDCPP
 	select BR2_PACKAGE_GNUTLS
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Task management synchronization daemon.
 
diff --git a/package/tcf-agent/Config.in b/package/tcf-agent/Config.in
index 50e58642b0..e850de3ad4 100644
--- a/package/tcf-agent/Config.in
+++ b/package/tcf-agent/Config.in
@@ -3,8 +3,8 @@ config BR2_PACKAGE_TCF_AGENT
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS
 	depends on BR2_USE_MMU # util-linux
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Target Communication Framework Agent is an example
 	  application using the Target Communication Framework
diff --git a/package/util-linux-libs/0001-libuuid-install-uuidd.h.patch b/package/util-linux-libs/0001-libuuid-install-uuidd.h.patch
new file mode 100644
index 0000000000..4f5438376e
--- /dev/null
+++ b/package/util-linux-libs/0001-libuuid-install-uuidd.h.patch
@@ -0,0 +1,26 @@
+From f7b77eaf6719e64c64179794f79c9d9cd0f7c778 Mon Sep 17 00:00:00 2001
+From: Carlos Santos <unixmania at gmail.com>
+Date: Mon, 6 May 2019 19:58:51 -0300
+Subject: [PATCH] libuuid: install uuidd.h
+
+Signed-off-by: Carlos Santos <unixmania at gmail.com>
+---
+ libuuid/src/Makemodule.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libuuid/src/Makemodule.am b/libuuid/src/Makemodule.am
+index e58fa261c..4387666f4 100644
+--- a/libuuid/src/Makemodule.am
++++ b/libuuid/src/Makemodule.am
+@@ -6,7 +6,7 @@ test_uuid_parser_CFLAGS = $(AM_CFLAGS) -I$(ul_libuuid_incdir)
+ 
+ # includes
+ uuidincdir = $(includedir)/uuid
+-uuidinc_HEADERS = libuuid/src/uuid.h
++uuidinc_HEADERS = libuuid/src/uuid.h libuuid/src/uuidd.h
+ 
+ usrlib_exec_LTLIBRARIES += libuuid.la
+ 
+-- 
+2.20.1
+
diff --git a/package/util-linux-libs/Config.in b/package/util-linux-libs/Config.in
new file mode 100644
index 0000000000..b4240acdf0
--- /dev/null
+++ b/package/util-linux-libs/Config.in
@@ -0,0 +1,47 @@
+menuconfig BR2_PACKAGE_UTIL_LINUX_LIBS
+	bool "util-linux-libs"
+	help
+	  Various useful/essential linux libraries. The utilities are
+	  provided by the util-linux package.
+
+	  Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc.
+	  depend on these libraries.
+
+	  http://www.kernel.org/pub/linux/utils/util-linux/
+
+if BR2_PACKAGE_UTIL_LINUX_LIBS
+
+config BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	bool "libblkid"
+	depends on BR2_USE_MMU # fork()
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	help
+	  Install libblkid.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBS_FDISK
+	bool "libfdisk"
+	depends on BR2_USE_MMU # fork()
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	help
+	  Install libfdisk.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	bool "libmount"
+	depends on BR2_USE_MMU # fork()
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	help
+	  Install libmount.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
+	bool "libsmartcols"
+	depends on BR2_USE_MMU # fork()
+	help
+	  Install libsmartcols.
+
+config BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	bool "libuuid"
+	help
+	  Install libuuid.
+
+endif
diff --git a/package/util-linux-libs/Config.in.host b/package/util-linux-libs/Config.in.host
new file mode 100644
index 0000000000..6268a8acc2
--- /dev/null
+++ b/package/util-linux-libs/Config.in.host
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_HOST_UTIL_LINUX_LIBS
+	bool
+	help
+	  Various useful/essential linux libraries. The utilities are
+	  provided by the util-linux package.
+
+	  Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc.
+	  depend on these libraries.
+
+	  http://www.kernel.org/pub/linux/utils/util-linux/
diff --git a/package/util-linux-libs/util-linux-libs.hash b/package/util-linux-libs/util-linux-libs.hash
new file mode 100644
index 0000000000..ed503a12ed
--- /dev/null
+++ b/package/util-linux-libs/util-linux-libs.hash
@@ -0,0 +1,9 @@
+# From https://www.kernel.org/pub/linux/utils/util-linux/v2.33/sha256sums.asc
+sha256 f261b9d73c35bfeeea04d26941ac47ee1df937bd3b0583e748217c1ea423658a  util-linux-2.33.tar.xz
+# License files, locally calculated
+sha256 4335620e8f478ee4dc4d26540448d39469091ef1d8e3fbbbb8bf753206ceac74  README.licensing
+sha256 9b718a9460fed5952466421235bc79eb49d4e9eacc920d7a9dd6285ab8fd6c6d  Documentation/licenses/COPYING.BSD-3-Clause
+sha256 ba7640f00d93e72e92b94b9d71f25ec53bac2f1682f5c4adcccb0018359f60f8  Documentation/licenses/COPYING.BSD-4-Clause-UC
+sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  Documentation/licenses/COPYING.GPL-2.0-or-later
+sha256 e53348ce276358e9997014071c5294b36a18c4b34f32f00ee57b9acce0aafd63  Documentation/licenses/COPYING.ISC
+sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  Documentation/licenses/COPYING.LGPL-2.1-or-later
diff --git a/package/util-linux-libs/util-linux-libs.mk b/package/util-linux-libs/util-linux-libs.mk
new file mode 100644
index 0000000000..ec730203fa
--- /dev/null
+++ b/package/util-linux-libs/util-linux-libs.mk
@@ -0,0 +1,96 @@
+################################################################################
+#
+# util-linux-libs
+#
+################################################################################
+
+UTIL_LINUX_LIBS_VERSION_MAJOR = 2.33
+UTIL_LINUX_LIBS_VERSION = $(UTIL_LINUX_LIBS_VERSION_MAJOR)
+UTIL_LINUX_LIBS_SOURCE = util-linux-$(UTIL_LINUX_LIBS_VERSION).tar.xz
+UTIL_LINUX_LIBS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_LIBS_VERSION_MAJOR)
+
+# README.licensing claims that some files are GPL-2.0 only, but this is not true.
+# Some files are GPL-3.0+ but only in tests. rfkill uses an ISC-style license.
+UTIL_LINUX_LIBS_LICENSE = LGPL-2.1+ (libblkid, libfdisk, libmount, libsmartcols), BSD-3-Clause (libuuid)
+UTIL_LINUX_LIBS_LICENSE_FILES = README.licensing \
+	Documentation/licenses/COPYING.BSD-3-Clause \
+	Documentation/licenses/COPYING.LGPL-2.1-or-later
+UTIL_LINUX_LIBS_INSTALL_STAGING = YES
+UTIL_LINUX_LIBS_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)
+UTIL_LINUX_LIBS_AUTORECONF = YES
+UTIL_LINUX_LIBS_CONF_OPTS += \
+	--disable-rpath \
+	--disable-makeinstall-chown
+UTIL_LINUX_LIBS_LINK_LIBS = $(TARGET_NLS_LIBS)
+
+# systemd depends on util-linux so we enable systemd support
+# (which needs systemd to be installed)
+UTIL_LINUX_LIBS_CONF_OPTS += \
+	--without-systemd \
+	--with-systemdsystemunitdir=no
+
+HOST_UTIL_LINUX_LIBS_DEPENDENCIES = host-pkgconf
+HOST_UTIL_LINUX_LIBS_CONF_OPTS = --disable-makeinstall-chown
+
+# We also don't want the host-python dependency
+HOST_UTIL_LINUX_LIBS_CONF_OPTS += --without-python
+
+# Prevent the installation from attempting to move shared libraries from
+# ${usrlib_execdir} (/usr/lib) to ${libdir} (/lib), since both paths are
+# the same when merged usr is in use.
+ifeq ($(BR2_ROOTFS_MERGED_USR),y)
+UTIL_LINUX_LIBS_CONF_OPTS += --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib
+endif
+
+# Unfortunately, the util-linux does LIBS="" at the end of its
+# configure script. So we have to pass the proper LIBS value when
+# calling the configure script to make configure tests pass properly,
+# and then pass it again at build time.
+UTIL_LINUX_LIBS_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS_LINK_LIBS)"
+UTIL_LINUX_LIBS_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS_LINK_LIBS)"
+
+# libmount optionally uses selinux
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT)$(BR2_PACKAGE_LIBSELINUX),yy)
+UTIL_LINUX_LIBS_DEPENDENCIES += libselinux
+UTIL_LINUX_LIBS_CONF_OPTS += --with-selinux
+else
+UTIL_LINUX_LIBS_CONF_OPTS += --without-selinux
+endif
+
+# Disable utilities
+UTIL_LINUX_LIBS_CONF_OPTS += \
+	--disable-all-programs \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID),--enable-libblkid,--disable-libblkid) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_FDISK),--enable-libfdisk,--disable-libfdisk) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT),--enable-libmount,--disable-libmount) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS),--enable-libsmartcols,--disable-libsmartcols) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),--enable-libuuid,--disable-libuuid)
+
+# In the host version of util-linux-libs, we only require libuuid and libmount
+# (plus libblkid as an indirect dependency of libmount). So disable libfdisk
+# and libsmartcols, unless BR2_PACKAGE_HOST_UTIL_LINUX is set.
+HOST_UTIL_LINUX_LIBS_CONF_OPTS += \
+	--enable-libblkid \
+	$(if $(BR2_PACKAGE_HOST_UTIL_LINUX),--enable-libfdisk,--disable-libfdisk) \
+	--enable-libmount \
+	$(if $(BR2_PACKAGE_HOST_UTIL_LINUX),--enable-libsmartcols,--disable-libsmartcols) \
+	--enable-libuuid \
+	--without-ncurses \
+	--without-ncursesw \
+	--without-tinfo
+
+# Install libmount Python bindings
+ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)
+UTIL_LINUX_LIBS_CONF_OPTS += --with-python
+UTIL_LINUX_LIBS_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT),y)
+UTIL_LINUX_LIBS_CONF_OPTS += --enable-pylibmount
+else
+UTIL_LINUX_LIBS_CONF_OPTS += --disable-pylibmount
+endif
+else
+UTIL_LINUX_LIBS_CONF_OPTS += --without-python
+endif
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
diff --git a/package/util-linux/0005-Use-installed-libraries.patch b/package/util-linux/0005-Use-installed-libraries.patch
new file mode 100644
index 0000000000..6a06dc2a22
--- /dev/null
+++ b/package/util-linux/0005-Use-installed-libraries.patch
@@ -0,0 +1,432 @@
+From 93b324c48d4eb9b41d81db51d76ff30eee34d2f4 Mon Sep 17 00:00:00 2001
+From: Carlos Santos <unixmania at gmail.com>
+Date: Tue, 7 May 2019 09:04:16 -0300
+Subject: [PATCH] Use installed libraries
+
+Signed-off-by: Carlos Santos <unixmania at gmail.com>
+---
+ Makefile.am               | 16 ----------------
+ disk-utils/Makemodule.am  | 26 +++++++++++++-------------
+ login-utils/Makemodule.am |  2 +-
+ misc-utils/Makemodule.am  | 28 ++++++++++++++--------------
+ sys-utils/Makemodule.am   | 38 +++++++++++++++++++-------------------
+ text-utils/Makemodule.am  |  2 +-
+ 6 files changed, 48 insertions(+), 64 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index e7657afe9..06ce9df4a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,17 +17,6 @@ LDADD = $(LTLIBINTL)
+ # Work the bug around until it is fixed:
+ dist_noinst_DATA = $(dist_man_MANS)
+ 
+-# Paths to in-tree libraries (use ul_ prefix to avoid possible collisions) Note
+-# that blkid.h, libmount.h, libfdisk.h and libsmartcols.h are generated and
+-# stored in build dirs.
+-#
+-ul_libblkid_incdir = $(top_builddir)/libblkid/src
+-ul_libmount_incdir = $(top_builddir)/libmount/src
+-ul_libsmartcols_incdir = $(top_builddir)/libsmartcols/src
+-ul_libfdisk_incdir  = $(top_builddir)/libfdisk/src
+-
+-ul_libuuid_incdir  = $(top_srcdir)/libuuid/src
+-
+ pkgconfigdir = $(usrlib_execdir)/pkgconfig
+ 
+ bashcompletiondir = @bashcompletiondir@
+@@ -77,11 +66,6 @@ EXTRA_DIST += \
+ include tools/Makemodule.am
+ include include/Makemodule.am
+ include lib/Makemodule.am
+-include libuuid/Makemodule.am
+-include libblkid/Makemodule.am
+-include libmount/Makemodule.am
+-include libsmartcols/Makemodule.am
+-include libfdisk/Makemodule.am
+ 
+ include schedutils/Makemodule.am
+ include text-utils/Makemodule.am
+diff --git a/disk-utils/Makemodule.am b/disk-utils/Makemodule.am
+index bea0ed6a6..15cc77fd9 100644
+--- a/disk-utils/Makemodule.am
++++ b/disk-utils/Makemodule.am
+@@ -55,11 +55,11 @@ mkswap_LDADD = $(LDADD) libcommon.la
+ mkswap_CFLAGS = $(AM_CFLAGS)
+ if BUILD_LIBUUID
+ mkswap_CFLAGS += -I$(ul_libuuid_incdir)
+-mkswap_LDADD += libuuid.la
++mkswap_LDADD += -luuid
+ endif
+ if BUILD_LIBBLKID
+ mkswap_CFLAGS += -I$(ul_libblkid_incdir)
+-mkswap_LDADD += libblkid.la
++mkswap_LDADD += -lblkid
+ endif
+ if HAVE_SELINUX
+ mkswap_LDADD += -lselinux
+@@ -76,10 +76,10 @@ swaplabel_SOURCES = \
+ 	include/swapprober.h
+ 
+ swaplabel_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir)
+-swaplabel_LDADD = $(LDADD) libblkid.la libcommon.la
++swaplabel_LDADD = $(LDADD) -lblkid libcommon.la
+ 
+ if BUILD_LIBUUID
+-swaplabel_LDADD += libuuid.la
++swaplabel_LDADD += -luuid
+ swaplabel_CFLAGS += -I$(ul_libuuid_incdir)
+ endif
+ endif #BUILD_SWAPLABEL
+@@ -89,7 +89,7 @@ if BUILD_FSCK
+ sbin_PROGRAMS += fsck
+ dist_man_MANS += disk-utils/fsck.8
+ fsck_SOURCES = disk-utils/fsck.c lib/monotonic.c
+-fsck_LDADD = $(LDADD) libmount.la libblkid.la libcommon.la $(REALTIME_LIBS)
++fsck_LDADD = $(LDADD) -lmount -lblkid libcommon.la $(REALTIME_LIBS)
+ fsck_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir) -I$(ul_libblkid_incdir)
+ endif
+ 
+@@ -139,8 +139,8 @@ fdisk_SOURCES = \
+ 	disk-utils/fdisk-list.c \
+ 	disk-utils/fdisk-list.h
+ 
+-fdisk_LDADD = $(LDADD) libcommon.la libfdisk.la \
+-	      libsmartcols.la libtcolors.la $(READLINE_LIBS)
++fdisk_LDADD = $(LDADD) libcommon.la -lfdisk \
++	      -lsmartcols libtcolors.la $(READLINE_LIBS)
+ fdisk_CFLAGS = $(AM_CFLAGS) -I$(ul_libfdisk_incdir) -I$(ul_libsmartcols_incdir)
+ 
+ if HAVE_STATIC_FDISK
+@@ -161,8 +161,8 @@ sfdisk_SOURCES = \
+ 	disk-utils/fdisk-list.c \
+ 	disk-utils/fdisk-list.h
+ 
+-sfdisk_LDADD = $(LDADD) libcommon.la libfdisk.la \
+-	       libsmartcols.la libtcolors.la $(READLINE_LIBS)
++sfdisk_LDADD = $(LDADD) libcommon.la -lfdisk \
++	       -lsmartcols libtcolors.la $(READLINE_LIBS)
+ sfdisk_CFLAGS = $(AM_CFLAGS) -I$(ul_libfdisk_incdir) -I$(ul_libsmartcols_incdir)
+ 
+ if HAVE_STATIC_SFDISK
+@@ -181,9 +181,9 @@ dist_man_MANS += disk-utils/cfdisk.8
+ cfdisk_SOURCES = disk-utils/cfdisk.c
+ cfdisk_LDADD = \
+ 	$(LDADD) \
+-	libsmartcols.la \
++	-lsmartcols \
+ 	libcommon.la \
+-	libfdisk.la \
++	-lfdisk \
+ 	libtcolors.la
+ cfdisk_CFLAGS = \
+ 	$(AM_CFLAGS) \
+@@ -192,7 +192,7 @@ cfdisk_CFLAGS = \
+ 
+ if BUILD_LIBMOUNT
+ cfdisk_CFLAGS += -I$(ul_libmount_incdir)
+-cfdisk_LDADD += libmount.la
++cfdisk_LDADD += -lmount
+ endif
+ 
+ if HAVE_SLANG
+@@ -223,6 +223,6 @@ resizepart_LDADD = $(LDADD) libcommon.la
+ 
+ partx_SOURCES = disk-utils/partx.c
+ partx_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir) -I$(ul_libsmartcols_incdir)
+-partx_LDADD = $(LDADD) libblkid.la libcommon.la libsmartcols.la
++partx_LDADD = $(LDADD) -lblkid libcommon.la -lsmartcols
+ 
+ endif # BUILD_PARTX
+diff --git a/login-utils/Makemodule.am b/login-utils/Makemodule.am
+index aafbea307..940afc249 100644
+--- a/login-utils/Makemodule.am
++++ b/login-utils/Makemodule.am
+@@ -190,7 +190,7 @@ lslogins_SOURCES = \
+ 	login-utils/lslogins.c \
+ 	login-utils/logindefs.c \
+ 	login-utils/logindefs.h
+-lslogins_LDADD = $(LDADD) libcommon.la libsmartcols.la
++lslogins_LDADD = $(LDADD) libcommon.la -lsmartcols
+ lslogins_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ if HAVE_SELINUX
+ lslogins_LDADD += -lselinux
+diff --git a/misc-utils/Makemodule.am b/misc-utils/Makemodule.am
+index c44cdda67..4c108b071 100644
+--- a/misc-utils/Makemodule.am
++++ b/misc-utils/Makemodule.am
+@@ -69,7 +69,7 @@ endif
+ if BUILD_LSLOCKS
+ usrbin_exec_PROGRAMS += lslocks
+ dist_man_MANS += misc-utils/lslocks.8
+-lslocks_LDADD = $(LDADD) libcommon.la libmount.la libsmartcols.la
++lslocks_LDADD = $(LDADD) libcommon.la -lmount -lsmartcols
+ lslocks_SOURCES = misc-utils/lslocks.c
+ lslocks_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir) -I$(ul_libsmartcols_incdir)
+ endif
+@@ -82,7 +82,7 @@ lsblk_SOURCES = \
+ 	misc-utils/lsblk-mnt.c \
+ 	misc-utils/lsblk-properties.c \
+ 	misc-utils/lsblk.h
+-lsblk_LDADD = $(LDADD) libblkid.la libmount.la libcommon.la libsmartcols.la
++lsblk_LDADD = $(LDADD) -lblkid -lmount libcommon.la -lsmartcols
+ lsblk_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir) -I$(ul_libmount_incdir) -I$(ul_libsmartcols_incdir)
+ if HAVE_UDEV
+ lsblk_LDADD += -ludev
+@@ -93,7 +93,7 @@ if BUILD_UUIDGEN
+ usrbin_exec_PROGRAMS += uuidgen
+ dist_man_MANS += misc-utils/uuidgen.1
+ uuidgen_SOURCES = misc-utils/uuidgen.c
+-uuidgen_LDADD = $(LDADD) libuuid.la
++uuidgen_LDADD = $(LDADD) -luuid
+ uuidgen_CFLAGS = $(AM_CFLAGS) -I$(ul_libuuid_incdir)
+ endif
+ 
+@@ -101,14 +101,14 @@ if BUILD_UUIDPARSE
+ usrbin_exec_PROGRAMS += uuidparse
+ dist_man_MANS += misc-utils/uuidparse.1
+ uuidparse_SOURCES = misc-utils/uuidparse.c
+-uuidparse_LDADD = $(LDADD) libcommon.la libuuid.la libsmartcols.la
++uuidparse_LDADD = $(LDADD) libcommon.la -luuid -lsmartcols
+ uuidparse_CFLAGS = $(AM_CFLAGS) -I$(ul_libuuid_incdir) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+ if BUILD_UUIDD
+ usrsbin_exec_PROGRAMS += uuidd
+ dist_man_MANS += misc-utils/uuidd.8
+-uuidd_LDADD = $(LDADD) libuuid.la libcommon.la $(REALTIME_LIBS)
++uuidd_LDADD = $(LDADD) -luuid libcommon.la $(REALTIME_LIBS)
+ uuidd_CFLAGS = $(DAEMON_CFLAGS) $(AM_CFLAGS) -I$(ul_libuuid_incdir)
+ uuidd_LDFLAGS = $(DAEMON_LDFLAGS) $(AM_LDFLAGS)
+ uuidd_SOURCES = misc-utils/uuidd.c lib/monotonic.c lib/timer.c
+@@ -122,7 +122,7 @@ endif
+ 
+ check_PROGRAMS += test_uuidd
+ test_uuidd_SOURCES = misc-utils/test_uuidd.c
+-test_uuidd_LDADD =  $(LDADD) libcommon.la libuuid.la -lpthread
++test_uuidd_LDADD =  $(LDADD) libcommon.la -luuid -lpthread
+ test_uuidd_CFLAGS = $(AM_CFLAGS) -I$(ul_libuuid_incdir)
+ endif # BUILD_UUIDD
+ 
+@@ -136,14 +136,14 @@ if BUILD_BLKID
+ sbin_PROGRAMS += blkid
+ dist_man_MANS += misc-utils/blkid.8
+ blkid_SOURCES = misc-utils/blkid.c
+-blkid_LDADD = $(LDADD) libblkid.la libcommon.la
++blkid_LDADD = $(LDADD) -lblkid libcommon.la
+ blkid_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir)
+ 
+ if HAVE_STATIC_BLKID
+ sbin_PROGRAMS += blkid.static
+ blkid_static_SOURCES = $(blkid_SOURCES)
+ blkid_static_LDFLAGS = -all-static
+-blkid_static_LDADD = $(LDADD) libblkid.la
++blkid_static_LDADD = $(LDADD) -lblkid
+ blkid_static_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir)
+ endif
+ endif # BUILD_BLKID
+@@ -152,7 +152,7 @@ endif # BUILD_BLKID
+ if BUILD_FINDFS
+ sbin_PROGRAMS += findfs
+ dist_man_MANS += misc-utils/findfs.8
+-findfs_LDADD = $(LDADD) libblkid.la
++findfs_LDADD = $(LDADD) -lblkid
+ findfs_SOURCES = misc-utils/findfs.c
+ findfs_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir)
+ endif
+@@ -161,17 +161,17 @@ if BUILD_WIPEFS
+ sbin_PROGRAMS += wipefs
+ dist_man_MANS += misc-utils/wipefs.8
+ wipefs_SOURCES = misc-utils/wipefs.c
+-wipefs_LDADD = $(LDADD) libblkid.la libcommon.la libsmartcols.la
++wipefs_LDADD = $(LDADD) -lblkid libcommon.la -lsmartcols
+ wipefs_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+ if BUILD_FINDMNT
+ bin_PROGRAMS += findmnt
+ dist_man_MANS += misc-utils/findmnt.8
+-findmnt_LDADD = $(LDADD) libmount.la \
++findmnt_LDADD = $(LDADD) -lmount \
+ 		libcommon.la \
+-		libsmartcols.la \
+-		libblkid.la
++		-lsmartcols \
++		-lblkid
+ findmnt_CFLAGS = $(AM_CFLAGS) \
+ 		-I$(ul_libmount_incdir) \
+ 		-I$(ul_libsmartcols_incdir) \
+@@ -212,6 +212,6 @@ if BUILD_FINCORE
+ usrbin_exec_PROGRAMS += fincore
+ dist_man_MANS += misc-utils/fincore.1
+ fincore_SOURCES = misc-utils/fincore.c
+-fincore_LDADD = $(LDADD) libsmartcols.la libcommon.la
++fincore_LDADD = $(LDADD) -lsmartcols libcommon.la
+ fincore_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+diff --git a/sys-utils/Makemodule.am b/sys-utils/Makemodule.am
+index 825a7335b..7f2f4cd85 100644
+--- a/sys-utils/Makemodule.am
++++ b/sys-utils/Makemodule.am
+@@ -2,7 +2,7 @@ if BUILD_LSMEM
+ usrbin_exec_PROGRAMS += lsmem
+ dist_man_MANS += sys-utils/lsmem.1
+ lsmem_SOURCES = sys-utils/lsmem.c
+-lsmem_LDADD = $(LDADD) libcommon.la libsmartcols.la
++lsmem_LDADD = $(LDADD) libcommon.la -lsmartcols
+ lsmem_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+@@ -56,7 +56,7 @@ dist_man_MANS += sys-utils/lsipc.1
+ lsipc_SOURCES =	sys-utils/lsipc.c \
+ 		sys-utils/ipcutils.c \
+ 		sys-utils/ipcutils.h
+-lsipc_LDADD = $(LDADD) libcommon.la libsmartcols.la
++lsipc_LDADD = $(LDADD) libcommon.la -lsmartcols
+ lsipc_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+@@ -70,7 +70,7 @@ if BUILD_RFKILL
+ usrsbin_exec_PROGRAMS += rfkill
+ dist_man_MANS += sys-utils/rfkill.8
+ rfkill_SOURCES = sys-utils/rfkill.c
+-rfkill_LDADD = $(LDADD) libcommon.la libsmartcols.la
++rfkill_LDADD = $(LDADD) libcommon.la -lsmartcols
+ rfkill_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+@@ -97,7 +97,7 @@ if BUILD_FSTRIM
+ sbin_PROGRAMS += fstrim
+ dist_man_MANS += sys-utils/fstrim.8
+ fstrim_SOURCES = sys-utils/fstrim.c
+-fstrim_LDADD = $(LDADD) libcommon.la libmount.la
++fstrim_LDADD = $(LDADD) libcommon.la -lmount
+ fstrim_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir)
+ if HAVE_SYSTEMD
+ systemdsystemunit_DATA += \
+@@ -222,7 +222,7 @@ endif # BUILD_SETARCH
+ if BUILD_EJECT
+ usrbin_exec_PROGRAMS += eject
+ eject_SOURCES =  sys-utils/eject.c lib/monotonic.c
+-eject_LDADD = $(LDADD) libmount.la libcommon.la $(REALTIME_LIBS)
++eject_LDADD = $(LDADD) -lmount libcommon.la $(REALTIME_LIBS)
+ eject_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir)
+ dist_man_MANS += sys-utils/eject.1
+ endif
+@@ -232,7 +232,7 @@ if BUILD_LOSETUP
+ sbin_PROGRAMS += losetup
+ dist_man_MANS += sys-utils/losetup.8
+ losetup_SOURCES = sys-utils/losetup.c
+-losetup_LDADD = $(LDADD) libcommon.la libsmartcols.la
++losetup_LDADD = $(LDADD) libcommon.la -lsmartcols
+ losetup_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ 
+ if HAVE_STATIC_LOSETUP
+@@ -249,7 +249,7 @@ if BUILD_ZRAMCTL
+ sbin_PROGRAMS += zramctl
+ dist_man_MANS += sys-utils/zramctl.8
+ zramctl_SOURCES = sys-utils/zramctl.c
+-zramctl_LDADD = $(LDADD) libcommon.la libsmartcols.la
++zramctl_LDADD = $(LDADD) libcommon.la -lsmartcols
+ zramctl_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+@@ -258,7 +258,7 @@ if BUILD_PRLIMIT
+ usrbin_exec_PROGRAMS += prlimit
+ dist_man_MANS += sys-utils/prlimit.1
+ prlimit_SOURCES = sys-utils/prlimit.c
+-prlimit_LDADD = $(LDADD) libcommon.la libsmartcols.la
++prlimit_LDADD = $(LDADD) libcommon.la -lsmartcols
+ prlimit_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+@@ -267,7 +267,7 @@ if BUILD_LSNS
+ usrbin_exec_PROGRAMS += lsns
+ dist_man_MANS += sys-utils/lsns.8
+ lsns_SOURCES =	sys-utils/lsns.c
+-lsns_LDADD = $(LDADD) libcommon.la libsmartcols.la libmount.la
++lsns_LDADD = $(LDADD) libcommon.la -lsmartcols -lmount
+ lsns_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir) -I$(ul_libmount_incdir)
+ endif
+ 
+@@ -279,12 +279,12 @@ dist_man_MANS += \
+ 	sys-utils/fstab.5 \
+ 	sys-utils/umount.8
+ mount_SOURCES = sys-utils/mount.c
+-mount_LDADD = $(LDADD) libcommon.la libmount.la $(SELINUX_LIBS)
++mount_LDADD = $(LDADD) libcommon.la -lmount $(SELINUX_LIBS)
+ mount_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS) -I$(ul_libmount_incdir)
+ mount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS)
+ 
+ umount_SOURCES = sys-utils/umount.c
+-umount_LDADD = $(LDADD) libcommon.la libmount.la
++umount_LDADD = $(LDADD) libcommon.la -lmount
+ umount_CFLAGS = $(AM_CFLAGS) $(SUID_CFLAGS) -I$(ul_libmount_incdir)
+ umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS)
+ 
+@@ -339,10 +339,10 @@ swapon_CFLAGS = $(AM_CFLAGS) \
+ 	-I$(ul_libmount_incdir) \
+ 	-I$(ul_libsmartcols_incdir)
+ swapon_LDADD = $(LDADD) \
+-	libblkid.la \
++	-lblkid \
+ 	libcommon.la \
+-	libmount.la \
+-	libsmartcols.la
++	-lmount \
++	-lsmartcols
+ 
+ swapoff_SOURCES = \
+ 	sys-utils/swapoff.c \
+@@ -354,8 +354,8 @@ swapoff_CFLAGS = $(AM_CFLAGS) \
+ 	-I$(ul_libblkid_incdir) \
+ 	-I$(ul_libmount_incdir)
+ swapoff_LDADD = $(LDADD) \
+-	libmount.la \
+-	libblkid.la \
++	-lmount \
++	-lblkid \
+ 	libcommon.la
+ endif
+ 
+@@ -366,7 +366,7 @@ lscpu_SOURCES = \
+ 	sys-utils/lscpu.h \
+ 	sys-utils/lscpu-arm.c \
+ 	sys-utils/lscpu-dmi.c
+-lscpu_LDADD = $(LDADD) libcommon.la libsmartcols.la $(RTAS_LIBS)
++lscpu_LDADD = $(LDADD) libcommon.la -lsmartcols $(RTAS_LIBS)
+ lscpu_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ dist_man_MANS += sys-utils/lscpu.1
+ endif
+@@ -382,13 +382,13 @@ if BUILD_WDCTL
+ bin_PROGRAMS += wdctl
+ dist_man_MANS += sys-utils/wdctl.8
+ wdctl_SOURCES = sys-utils/wdctl.c
+-wdctl_LDADD = $(LDADD) libcommon.la libsmartcols.la
++wdctl_LDADD = $(LDADD) libcommon.la -lsmartcols
+ wdctl_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+ if BUILD_MOUNTPOINT
+ bin_PROGRAMS += mountpoint
+-mountpoint_LDADD = $(LDADD) libmount.la
++mountpoint_LDADD = $(LDADD) -lmount
+ mountpoint_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir)
+ dist_man_MANS += sys-utils/mountpoint.1
+ mountpoint_SOURCES = sys-utils/mountpoint.c
+diff --git a/text-utils/Makemodule.am b/text-utils/Makemodule.am
+index 7478eb427..8559c1189 100644
+--- a/text-utils/Makemodule.am
++++ b/text-utils/Makemodule.am
+@@ -22,7 +22,7 @@ if BUILD_COLUMN
+ usrbin_exec_PROGRAMS += column
+ dist_man_MANS += text-utils/column.1
+ column_SOURCES = text-utils/column.c
+-column_LDADD = $(LDADD) libcommon.la libsmartcols.la
++column_LDADD = $(LDADD) libcommon.la -lsmartcols
+ column_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir)
+ endif
+ 
+-- 
+2.20.1
+
diff --git a/package/util-linux/Config.in b/package/util-linux/Config.in
index a5a137bfe0..d0a577e84e 100644
--- a/package/util-linux/Config.in
+++ b/package/util-linux/Config.in
@@ -9,47 +9,15 @@ menuconfig BR2_PACKAGE_UTIL_LINUX
 
 if BR2_PACKAGE_UTIL_LINUX
 
-config BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	bool "libblkid"
-	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
-	help
-	  Install libblkid.
-
-config BR2_PACKAGE_UTIL_LINUX_LIBFDISK
-	bool "libfdisk"
-	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
-	help
-	  Install libfdisk.
-
-config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	bool "libmount"
-	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	help
-	  Install libmount.
-
-config BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
-	bool "libsmartcols"
-	depends on BR2_USE_MMU # fork()
-	help
-	  Install libsmartcols.
-
-config BR2_PACKAGE_UTIL_LINUX_LIBUUID
-	bool "libuuid"
-	help
-	  Install libuuid.
-
 config BR2_PACKAGE_UTIL_LINUX_BINARIES
 	bool "basic set"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX_LIBFDISK
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_FDISK
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Install the basic set of util-linux binaries.
 
@@ -110,9 +78,10 @@ config BR2_PACKAGE_UTIL_LINUX_CRAMFS
 config BR2_PACKAGE_UTIL_LINUX_EJECT
 	bool "eject"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Eject removable media
 
@@ -129,9 +98,10 @@ config BR2_PACKAGE_UTIL_LINUX_FDFORMAT
 config BR2_PACKAGE_UTIL_LINUX_FSCK
 	bool "fsck"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Check and repair a linux filesystem
 
@@ -188,21 +158,24 @@ comment "login needs a uClibc or glibc toolchain w/ wchar, locale, dynamic libra
 config BR2_PACKAGE_UTIL_LINUX_LOSETUP
 	bool "losetup"
 	depends on BR2_USE_MMU # libsmartcols
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
 	help
 	  Set up and control loop devices
 
 config BR2_PACKAGE_UTIL_LINUX_LSLOGINS
 	bool "lslogins"
 	depends on BR2_USE_MMU # libsmartcols
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
 	help
 	  Display information about known users in the system
 
 config BR2_PACKAGE_UTIL_LINUX_LSMEM
 	bool "lsmem"
 	depends on BR2_USE_MMU # libsmartcols
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
 	help
 	  List the ranges of available memory with their online status
 
@@ -226,18 +199,20 @@ config BR2_PACKAGE_UTIL_LINUX_MORE
 config BR2_PACKAGE_UTIL_LINUX_MOUNT
 	bool "mount/umount"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Mount/unmount filesystems
 
 config BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT
 	bool "mountpoint"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  See if a directory is a mountpoint
 
@@ -271,9 +246,10 @@ config BR2_PACKAGE_UTIL_LINUX_PG
 config BR2_PACKAGE_UTIL_LINUX_PARTX
 	bool "partition utilities"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  Partition utilities (addpart, delpart, partx)
 
@@ -295,7 +271,8 @@ config BR2_PACKAGE_UTIL_LINUX_RENAME
 config BR2_PACKAGE_UTIL_LINUX_RFKILL
 	bool "rfkill"
 	depends on BR2_USE_MMU # libsmartcols
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
 	help
 	  Tool for enabling and disabling wireless devices. This new
 	  implementation is based upon, and backward compatible with,
@@ -386,7 +363,8 @@ config BR2_PACKAGE_UTIL_LINUX_UTMPDUMP
 config BR2_PACKAGE_UTIL_LINUX_UUIDD
 	bool "uuidd"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  UUID generation daemon
 
@@ -405,7 +383,8 @@ config BR2_PACKAGE_UTIL_LINUX_WALL
 config BR2_PACKAGE_UTIL_LINUX_WDCTL
 	bool "wdctl"
 	depends on BR2_USE_MMU # libsmartcols
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
 	help
 	  Shows hardware watchdog status
 
@@ -417,7 +396,8 @@ config BR2_PACKAGE_UTIL_LINUX_WRITE
 config BR2_PACKAGE_UTIL_LINUX_ZRAMCTL
 	bool "zramctl"
 	depends on BR2_USE_MMU # libsmartcols
-	select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS
 	help
 	  Set up and control zram devices
 
diff --git a/package/util-linux/Config.in.host b/package/util-linux/Config.in.host
index f73dc43dbc..ca2f8944f2 100644
--- a/package/util-linux/Config.in.host
+++ b/package/util-linux/Config.in.host
@@ -1,5 +1,5 @@
 config BR2_PACKAGE_HOST_UTIL_LINUX
-	bool "host util-linux"
+	bool
 	help
 	  Various useful/essential linux libraries and utilities.
 
diff --git a/package/util-linux/util-linux.mk b/package/util-linux/util-linux.mk
index c176d364ce..d9890ea740 100644
--- a/package/util-linux/util-linux.mk
+++ b/package/util-linux/util-linux.mk
@@ -4,37 +4,61 @@
 #
 ################################################################################
 
-UTIL_LINUX_VERSION_MAJOR = 2.33
-UTIL_LINUX_VERSION = $(UTIL_LINUX_VERSION_MAJOR)
-UTIL_LINUX_SOURCE = util-linux-$(UTIL_LINUX_VERSION).tar.xz
-UTIL_LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_VERSION_MAJOR)
+UTIL_LINUX_VERSION = $(UTIL_LINUX_LIBS_VERSION)
+UTIL_LINUX_SOURCE = $(UTIL_LINUX_LIBS_SOURCE)
+UTIL_LINUX_SITE = $(UTIL_LINUX_LIBS_SITE)
 
 # README.licensing claims that some files are GPL-2.0 only, but this is not true.
 # Some files are GPL-3.0+ but only in tests. rfkill uses an ISC-style license.
-UTIL_LINUX_LICENSE = GPL-2.0+, BSD-4-Clause, LGPL-2.1+ (libblkid, libfdisk, libmount), BSD-3-Clause (libuuid) ISC (rfkill)
+UTIL_LINUX_LICENSE = GPL-2.0+, BSD-4-Clause, LGPL-2.1+ (libblkid, libfdisk, libmount, libsmartcols), BSD-3-Clause (libuuid) ISC (rfkill)
 UTIL_LINUX_LICENSE_FILES = README.licensing \
 	Documentation/licenses/COPYING.BSD-3-Clause \
 	Documentation/licenses/COPYING.BSD-4-Clause-UC \
 	Documentation/licenses/COPYING.GPL-2.0-or-later \
 	Documentation/licenses/COPYING.ISC \
 	Documentation/licenses/COPYING.LGPL-2.1-or-later
-UTIL_LINUX_INSTALL_STAGING = YES
 UTIL_LINUX_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)
-UTIL_LINUX_CONF_OPTS += \
+UTIL_LINUX_AUTORECONF = YES
+UTIL_LINUX_INCLUDES = \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID),-I$(STAGING_DIR)/usr/include/blkid,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_FDISK),-I$(STAGING_DIR)/usr/include/libfdisk,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT),-I$(STAGING_DIR)/usr/include/libmount,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS),-I$(STAGING_DIR)/usr/include/libsmartcols,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),-I$(STAGING_DIR)/usr/include/uuid,)
+UTIL_LINUX_CONF_ENV = CPPFLAGS="$(TARGET_CPPFLAGS) $(UTIL_LINUX_INCLUDES)"
+UTIL_LINUX_CONF_OPTS = \
 	--disable-rpath \
 	--disable-makeinstall-chown
-UTIL_LINUX_LIBS = $(TARGET_NLS_LIBS)
+UTIL_LINUX_LINK_LIBS = $(TARGET_NLS_LIBS)
 
-# system depends on util-linux so we enable systemd support
-# (which needs systemd to be installed)
-UTIL_LINUX_CONF_OPTS += \
-	--without-systemd \
-	--with-systemdsystemunitdir=no
+# udev support, provided by either eudev or systemd
+ifeq ($(BR2_PACKAGE_EUDEV),y)
+UTIL_LINUX_DEPENDENCIES += eudev
+endif
+ifeq ($(BR2_PACKAGE_SYSTEMD),y)
+UTIL_LINUX_CONF_OPTS += --with-systemd --with-systemdsystemunitdir=/usr/lib/systemd/system
+UTIL_LINUX_DEPENDENCIES += systemd
+else
+UTIL_LINUX_CONF_OPTS += --without-systemd --with-systemdsystemunitdir=no
+endif
+ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
+UTIL_LINUX_CONF_OPTS += --with-udev
+else
+UTIL_LINUX_CONF_OPTS += --without-udev
+endif
 
-HOST_UTIL_LINUX_DEPENDENCIES = host-pkgconf
+HOST_UTIL_LINUX_DEPENDENCIES = host-pkgconf host-util-linux-libs
+HOST_UTIL_LINUX_INCLUDES = \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID),-I$(HOST_DIR)/include/blkid,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_FDISK),-I$(HOST_DIR)/include/libfdisk,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT),-I$(HOST_DIR)/include/libmount,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_SMARTCOLS),-I$(HOST_DIR)/include/libsmartcols,) \
+	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),-I$(HOST_DIR)/include/uuid,)
+HOST_UTIL_LINUX_CONF_ENV = CPPFLAGS="$(HOST_CPPFLAGS) $(HOST_UTIL_LINUX_INCLUDES)"
+HOST_UTIL_LINUX_CONF_OPTS = --disable-makeinstall-chown
 
 # We also don't want the host-python dependency
-HOST_UTIL_LINUX_CONF_OPTS = --without-python
+HOST_UTIL_LINUX_CONF_OPTS += --without-python
 
 # Prevent the installation from attempting to move shared libraries from
 # ${usrlib_execdir} (/usr/lib) to ${libdir} (/lib), since both paths are
@@ -69,8 +93,8 @@ endif
 # configure script. So we have to pass the proper LIBS value when
 # calling the configure script to make configure tests pass properly,
 # and then pass it again at build time.
-UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS)"
-UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS)"
+UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LINK_LIBS)"
+UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LINK_LIBS)"
 
 ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
 UTIL_LINUX_DEPENDENCIES += libselinux
@@ -88,7 +112,7 @@ endif
 # Used by cramfs utils
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)
 
-# Used by login-utils
+# Used by login utils (chfn, chsh, login, runuser, su)
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LINUX_PAM),linux-pam)
 
 # Disable/Enable utilities
@@ -109,11 +133,6 @@ UTIL_LINUX_CONF_OPTS += \
 	$(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) \
-	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),--enable-libfdisk,--disable-libfdisk) \
-	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),--enable-libmount,--disable-libmount) \
-	$(if $(BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS),--enable-libsmartcols,--disable-libsmartcols) \
-	$(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_LOGGER),--enable-logger,--disable-logger) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_LOGIN),--enable-login,--disable-login) \
@@ -152,22 +171,6 @@ UTIL_LINUX_CONF_OPTS += \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_WRITE),--enable-write,--disable-write) \
 	$(if $(BR2_PACKAGE_UTIL_LINUX_ZRAMCTL),--enable-zramctl,--disable-zramctl)
 
-# In the host version of util-linux, we only require libuuid and
-# libmount (plus libblkid as an indirect dependency of libmount).
-# So disable all of the programs, unless BR2_PACKAGE_HOST_UTIL_LINUX is set
-
-HOST_UTIL_LINUX_CONF_OPTS += \
-	--enable-libblkid \
-	--enable-libmount \
-	--enable-libuuid \
-	--without-ncurses \
-	--without-ncursesw \
-	--without-tinfo
-
-ifeq ($(BR2_PACKAGE_HOST_UTIL_LINUX),y)
-HOST_UTIL_LINUX_CONF_OPTS += --disable-makeinstall-chown
-# disable commands that have ncurses dependency, as well as
-# other ones that are useless on the host
 HOST_UTIL_LINUX_CONF_OPTS += \
 	--disable-agetty \
 	--disable-chfn-chsh \
@@ -195,17 +198,15 @@ HOST_UTIL_LINUX_CONF_OPTS += \
 	--disable-wdctl \
 	--disable-write \
 	--disable-zramctl
+
 # Used by cramfs utils
 HOST_UTIL_LINUX_DEPENDENCIES += host-zlib
-else
-HOST_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
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3)
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_MOUNT),y)
 UTIL_LINUX_CONF_OPTS += --enable-pylibmount
 else
 UTIL_LINUX_CONF_OPTS += --disable-pylibmount
@@ -216,7 +217,7 @@ endif
 
 ifeq ($(BR2_PACKAGE_READLINE),y)
 UTIL_LINUX_CONF_OPTS += --with-readline
-UTIL_LINUX_LIBS += $(if $(BR2_STATIC_LIBS),-lcurses)
+UTIL_LINUX_LINK_LIBS += $(if $(BR2_STATIC_LIBS),-lcurses)
 UTIL_LINUX_DEPENDENCIES += readline
 else
 UTIL_LINUX_CONF_OPTS += --without-readline
@@ -232,7 +233,7 @@ endif
 # Install PAM configuration files
 ifeq ($(BR2_PACKAGE_UTIL_LINUX_SU)$(BR2_PACKAGE_LINUX_PAM),yy)
 define UTIL_LINUX_INSTALL_PAMFILES
-	$(INSTALL) -m 0644 package/util-linux/su.pam \
+	$(INSTALL) -D -m 0644 package/util-linux/su.pam \
 		$(TARGET_DIR)/etc/pam.d/su
 	$(INSTALL) -m 0644 package/util-linux/su.pam \
 		$(TARGET_DIR)/etc/pam.d/su-l
diff --git a/package/wget/wget.mk b/package/wget/wget.mk
index 7b9c3e75d9..b107f03048 100644
--- a/package/wget/wget.mk
+++ b/package/wget/wget.mk
@@ -28,7 +28,7 @@ else
 WGET_CONF_OPTS += --without-libidn
 endif
 
-ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
+ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS_UUID),y)
 WGET_DEPENDENCIES += util-linux
 endif
 
diff --git a/package/xen/Config.in b/package/xen/Config.in
index 57ab40eba8..6cee4af2a0 100644
--- a/package/xen/Config.in
+++ b/package/xen/Config.in
@@ -28,8 +28,8 @@ config BR2_PACKAGE_XEN_TOOLS
 	select BR2_PACKAGE_NCURSES
 	select BR2_PACKAGE_OPENSSL
 	select BR2_PACKAGE_PIXMAN
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	select BR2_PACKAGE_YAJL
 	select BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC
 	help
diff --git a/package/xfsprogs/Config.in b/package/xfsprogs/Config.in
index 024cde9fe6..0d26bb7847 100644
--- a/package/xfsprogs/Config.in
+++ b/package/xfsprogs/Config.in
@@ -6,9 +6,9 @@ config BR2_PACKAGE_XFSPROGS
 	bool "xfsprogs"
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
-	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_BLKID
 	help
 	  The XFS file system utilities and libraries
 
diff --git a/package/zeromq/Config.in b/package/zeromq/Config.in
index aeedff17b8..5092e5413b 100644
--- a/package/zeromq/Config.in
+++ b/package/zeromq/Config.in
@@ -5,8 +5,8 @@ config BR2_PACKAGE_ZEROMQ
 	bool "zeromq"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	select BR2_PACKAGE_UTIL_LINUX
-	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_UTIL_LINUX_LIBS
+	select BR2_PACKAGE_UTIL_LINUX_LIBS_UUID
 	help
 	  ØMQ (ZeroMQ, 0MQ, zmq) looks like an embeddable networking
 	  library but acts like a concurrency framework. It gives you
-- 
2.20.1



More information about the buildroot mailing list