ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/tools/util-linux/Makefile b/tools/util-linux/Makefile
new file mode 100644
index 0000000..f9aadba
--- /dev/null
+++ b/tools/util-linux/Makefile
@@ -0,0 +1,55 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=util-linux
+PKG_VERSION:=2.40.2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@KERNEL/linux/utils/$(PKG_NAME)/v2.40
+PKG_HASH:=d78b37a66f5922d70edf3bdfb01a6b33d34ed3c3cafd6628203b2a2b67c8e8b3
+PKG_CPE_ID:=cpe:/a:kernel:util-linux
+
+PKG_FIXUP:=autoreconf
+
+HOST_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/host-build.mk
+
+HOST_CONFIGURE_ARGS += \
+	--with-pic \
+	--disable-shared \
+	--disable-nls \
+	--disable-all-programs \
+	--enable-hexdump \
+	--enable-libuuid \
+	--without-util \
+	--without-selinux \
+	--without-audit \
+	--without-udev \
+	--without-ncursesw \
+	--without-ncurses \
+	--without-slang \
+	--without-tinfo \
+	--without-readline \
+	--without-utempter \
+	--without-cap-ng \
+	--without-libz \
+	--without-libmagic \
+	--without-user \
+	--without-btrfs \
+	--without-systemd \
+	--without-smack \
+	--without-econf \
+	--without-python \
+	--without-cryptsetup
+
+define Host/Uninstall
+	-$(call Host/Compile/Default,uninstall)
+endef
+
+$(eval $(call HostBuild))
diff --git a/tools/util-linux/patches/0001-hexdump-allow-enabling-with-disable-all-programs.patch b/tools/util-linux/patches/0001-hexdump-allow-enabling-with-disable-all-programs.patch
new file mode 100644
index 0000000..a8f1b5e
--- /dev/null
+++ b/tools/util-linux/patches/0001-hexdump-allow-enabling-with-disable-all-programs.patch
@@ -0,0 +1,28 @@
+From 37641f246ee9df7289b4e3054b3ded3912773722 Mon Sep 17 00:00:00 2001
+From: Robert Marko <robimarko@gmail.com>
+Date: Tue, 25 Jun 2024 17:32:08 +0200
+Subject: [PATCH] hexdump: allow enabling with --disable-all-programs
+
+Currently, if --disable-all-programs is used hexdump cannot be built
+as --enable-hexdump is not recognized, so lets add support for it.
+
+Signed-off-by: Robert Marko <robimarko@gmail.com>
+---
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -2240,7 +2240,11 @@ UL_BUILD_INIT([column], [check])
+ UL_REQUIRES_BUILD([column], [libsmartcols])
+ AM_CONDITIONAL([BUILD_COLUMN], [test "x$build_column" = xyes])
+ 
+-UL_BUILD_INIT([hexdump], [yes])
++AC_ARG_ENABLE([hexdump],
++  AS_HELP_STRING([--disable-hexdump], [do not build hexdump]),
++  [], [UL_DEFAULT_ENABLE([hexdump], [check])]
++)
++UL_BUILD_INIT([hexdump])
+ AM_CONDITIONAL([BUILD_HEXDUMP], [test "x$build_hexdump" = xyes])
+ 
+ UL_BUILD_INIT([rev], [yes])
diff --git a/tools/util-linux/patches/101-macos-weak-aliases.patch b/tools/util-linux/patches/101-macos-weak-aliases.patch
new file mode 100644
index 0000000..e5d0f9d
--- /dev/null
+++ b/tools/util-linux/patches/101-macos-weak-aliases.patch
@@ -0,0 +1,26 @@
+From 9445f477cfcfb3615ffde8f93b1b98c809ee4eca Mon Sep 17 00:00:00 2001
+From: Eugene Gershnik <gershnik@users.noreply.github.com>
+Date: Mon, 6 May 2024 09:29:39 -0700
+Subject: [PATCH] This re-enables build on macOS.
+
+Weak aliases are not supported by clang on Darwin.
+Instead this fix uses inline asm to make `_uuid_time` and alias to `___uuid_time`
+
+Fixes util-linux/util-linux#2873
+---
+ libuuid/src/uuid_time.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/libuuid/src/uuid_time.c
++++ b/libuuid/src/uuid_time.c
+@@ -85,6 +85,10 @@ time_t __uuid_time(const uuid_t uu, stru
+ }
+ #if defined(__USE_TIME_BITS64) && defined(__GLIBC__)
+ extern time_t uuid_time64(const uuid_t uu, struct timeval *ret_tv) __attribute__((weak, alias("__uuid_time")));
++#elif defined(__clang__) && defined(__APPLE__)
++__asm__(".globl _uuid_time");
++__asm__(".set _uuid_time, ___uuid_time");
++extern time_t uuid_time(const uuid_t uu, struct timeval *ret_tv);
+ #else
+ extern time_t uuid_time(const uuid_t uu, struct timeval *ret_tv) __attribute__((weak, alias("__uuid_time")));
+ #endif
diff --git a/tools/util-linux/patches/110-pkgconfig-static.patch b/tools/util-linux/patches/110-pkgconfig-static.patch
new file mode 100644
index 0000000..d61ae31
--- /dev/null
+++ b/tools/util-linux/patches/110-pkgconfig-static.patch
@@ -0,0 +1,24 @@
+From 81ea117e0396274808a77d40bf11af44ea047285 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 23 Sep 2024 12:01:40 +0200
+Subject: [PATCH] pkgconfig: adjust for static libraries
+
+OpenWrt builds only static libuuid for tools. Adjust the pkgconfig file
+accordingly.
+
+Addresses: https://github.com/util-linux/util-linux/issues/3210
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ libuuid/uuid.pc.in | 2 +-
+ 1 file changed, 1 insertions(+), 2 deletions(-)
+
+--- a/libuuid/uuid.pc.in
++++ b/libuuid/uuid.pc.in
+@@ -6,6 +6,5 @@ includedir=@includedir@
+ Name: uuid
+ Description: Universally unique id library
+ Version: @LIBUUID_VERSION@
+-Requires:
+ Cflags: -I${includedir}/uuid
+-Libs: -L${libdir} -luuid
++Libs: -L${libdir} -luuid -lpthread