Initial commit
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
# To allow util-linux to optionally build-depend on cryptsetup, libuuid is
|
||||
# split out of the main recipe, as it's needed by cryptsetup
|
||||
|
||||
require util-linux.inc
|
||||
|
||||
inherit autotools gettext pkgconfig
|
||||
|
||||
S = "${WORKDIR}/util-linux-${PV}"
|
||||
EXTRA_OECONF += "--disable-all-programs --enable-libuuid"
|
||||
LICENSE = "BSD-3-Clause"
|
||||
|
||||
do_install:append() {
|
||||
rm -rf ${D}${datadir} ${D}${bindir} ${D}${base_bindir} ${D}${sbindir} ${D}${base_sbindir} ${D}${exec_prefix}/sbin
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
@@ -0,0 +1,42 @@
|
||||
SUMMARY = "A suite of basic system administration utilities"
|
||||
HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux"
|
||||
DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \
|
||||
commonly found on most Linux systems. Some of the more important utilities include \
|
||||
disk partitioning, kernel message management, filesystem creation, and system login."
|
||||
|
||||
SECTION = "base"
|
||||
|
||||
LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & BSD-3-Clause & BSD-4-Clause"
|
||||
LICENSE:${PN}-libblkid = "LGPL-2.1-or-later"
|
||||
LICENSE:${PN}-libfdisk = "LGPL-2.1-or-later"
|
||||
LICENSE:${PN}-libmount = "LGPL-2.1-or-later"
|
||||
LICENSE:${PN}-libsmartcols = "LGPL-2.1-or-later"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
|
||||
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
|
||||
file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \
|
||||
file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \
|
||||
file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
|
||||
file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
|
||||
file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
|
||||
file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
|
||||
file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
|
||||
"
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/util-linux:"
|
||||
MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
|
||||
SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-linux-${PV}.tar.xz \
|
||||
file://configure-sbindir.patch \
|
||||
file://runuser.pamd \
|
||||
file://runuser-l.pamd \
|
||||
file://ptest.patch \
|
||||
file://run-ptest \
|
||||
file://display_testname_for_subtest.patch \
|
||||
file://avoid_parallel_tests.patch \
|
||||
file://0001-check-for-sys-pidfd.h.patch \
|
||||
file://0001-configure.ac-Improve-check-for-magic.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "60492a19b44e6cf9a3ddff68325b333b8b52b6c59ce3ebd6a0ecaa4c5117e84f"
|
||||
@@ -0,0 +1,53 @@
|
||||
From 548bc568f3c735e53fb5b0a5ab6473a3f1457b91 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sun, 7 Aug 2022 14:39:19 -0700
|
||||
Subject: [PATCH] check for sys/pidfd.h
|
||||
|
||||
This header in newer glibc defines the signatures of functions
|
||||
pidfd_send_signal() and pidfd_open() and when these functions are
|
||||
defined by libc then we need to include the relevant header to get
|
||||
the definitions. Clang 15+ has started to error out when function
|
||||
signatures are missing.
|
||||
|
||||
Fixes errors like
|
||||
misc-utils/kill.c:402:6: error: call to undeclared function 'pidfd_send_signal'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
|
||||
if (pidfd_send_signal(pfd, ctl->numsig, &info, 0) < 0)
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/util-linux/util-linux/pull/1769]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
configure.ac | 1 +
|
||||
include/pidfd-utils.h | 4 +++-
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a511e93de..fd7d9245f 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -342,6 +342,7 @@ AC_CHECK_HEADERS([ \
|
||||
sys/mkdev.h \
|
||||
sys/mount.h \
|
||||
sys/param.h \
|
||||
+ sys/pidfd.h \
|
||||
sys/prctl.h \
|
||||
sys/resource.h \
|
||||
sys/sendfile.h \
|
||||
diff --git a/include/pidfd-utils.h b/include/pidfd-utils.h
|
||||
index eddede976..d9e33cbc5 100644
|
||||
--- a/include/pidfd-utils.h
|
||||
+++ b/include/pidfd-utils.h
|
||||
@@ -4,8 +4,10 @@
|
||||
#ifdef HAVE_SYS_SYSCALL_H
|
||||
# include <sys/syscall.h>
|
||||
# if defined(SYS_pidfd_send_signal) && defined(SYS_pidfd_open)
|
||||
+# ifdef HAVE_SYS_PIDFD_H
|
||||
+# include <sys/pidfd.h>
|
||||
+# endif
|
||||
# include <sys/types.h>
|
||||
-
|
||||
# ifndef HAVE_PIDFD_SEND_SIGNAL
|
||||
static inline int pidfd_send_signal(int pidfd, int sig, siginfo_t *info,
|
||||
unsigned int flags)
|
||||
--
|
||||
2.37.1
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
From 263381ddd46eea2293c70bc811273b66bc52087b Mon Sep 17 00:00:00 2001
|
||||
From: Mateusz Marciniec <mateuszmar2@gmail.com>
|
||||
Date: Fri, 19 Aug 2022 14:47:49 +0200
|
||||
Subject: [PATCH] configure.ac: Improve check for magic
|
||||
|
||||
Check whether magic.h header exists before defining HAVE_MAGIC.
|
||||
|
||||
Despite library availability there still can be missing header.
|
||||
Current test doesn't cover that possibility which will lead compilation
|
||||
to fail in case of separate sysroot.
|
||||
|
||||
Upstream-Status: Backport
|
||||
[https://github.com/util-linux/util-linux/commit/263381ddd46eea2293c70bc811273b66bc52087b]
|
||||
|
||||
Signed-off-by: Mateusz Marciniec <mateuszmar2@gmail.com>
|
||||
Signed-off-by: Tomasz Dziendzielski <tomasz.dziendzielski@gmail.com>
|
||||
---
|
||||
configure.ac | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index daa8f0dca..968a0daf0 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1570,8 +1570,10 @@ AC_ARG_WITH([libmagic],
|
||||
)
|
||||
AS_IF([test "x$with_libmagic" = xno], [have_magic=no], [
|
||||
AC_CHECK_LIB([magic], [magic_open], [
|
||||
- AC_DEFINE([HAVE_MAGIC], [1], [Define to 1 if you have the libmagic present.])
|
||||
- MAGIC_LIBS="-lmagic"
|
||||
+ AC_CHECK_HEADER(magic.h, [
|
||||
+ AC_DEFINE([HAVE_MAGIC], [1], [Define to 1 if you have the libmagic present.])
|
||||
+ MAGIC_LIBS="-lmagic"
|
||||
+ ])
|
||||
])
|
||||
])
|
||||
AC_SUBST([MAGIC_LIBS])
|
||||
--
|
||||
2.37.1
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From ee3c7812e1efa6719af68b994804f0e6caceabd8 Mon Sep 17 00:00:00 2001
|
||||
From: Tudor Florea <tudor.florea@enea.com>
|
||||
Date: Mon, 14 Jun 2021 14:00:31 +0200
|
||||
Subject: [PATCH] util-linux: Add ptest
|
||||
|
||||
Ptest needs buildtest-TESTS and runtest-TESTS targets.
|
||||
serial-tests is required to generate those targets.
|
||||
Revert run.sh script accordingly to serialize running tests
|
||||
|
||||
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
|
||||
Upstream-Status: Inappropriate
|
||||
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 5664f9f..075ef27 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -11,7 +11,7 @@ AC_CONFIG_MACRO_DIR([m4])
|
||||
dnl AC_USE_SYSTEM_EXTENSIONS must be called before any macros that run
|
||||
dnl the compiler (like LT_INIT) to avoid autoconf errors.
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
-AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects])
|
||||
+AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects serial-tests])
|
||||
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
|
||||
[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
|
||||
@@ -0,0 +1,23 @@
|
||||
util-linux: take ${sbindir} from the environment if it is set there
|
||||
fix the test, the [ ] syntax was getting eaten by autoconf
|
||||
|
||||
Signed-off-by: Phil Blundell <pb@pbcl.net>
|
||||
Signed-off-by: Saul Wold <sgw@linux.intel.com
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
|
||||
Index: util-linux-2.31/configure.ac
|
||||
===================================================================
|
||||
--- util-linux-2.31.orig/configure.ac
|
||||
+++ util-linux-2.31/configure.ac
|
||||
@@ -89,7 +89,10 @@ AC_SUBST([runstatedir])
|
||||
usrbin_execdir='${exec_prefix}/bin'
|
||||
AC_SUBST([usrbin_execdir])
|
||||
|
||||
-usrsbin_execdir='${exec_prefix}/sbin'
|
||||
+if test -z "$usrsbin_execdir" ;
|
||||
+then
|
||||
+ usrsbin_execdir='${exec_prefix}/sbin'
|
||||
+fi
|
||||
AC_SUBST([usrsbin_execdir])
|
||||
|
||||
AS_CASE([$libdir],
|
||||
@@ -0,0 +1,25 @@
|
||||
Display testname for subtest
|
||||
|
||||
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
|
||||
Upstream-Status: Pending
|
||||
|
||||
---
|
||||
tests/functions.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/functions.sh b/tests/functions.sh
|
||||
index 5246605..b24dc15 100644
|
||||
--- a/tests/functions.sh
|
||||
+++ b/tests/functions.sh
|
||||
@@ -320,7 +320,7 @@ function ts_init_subtest {
|
||||
|
||||
if [ "$TS_PARSABLE" != "yes" ]; then
|
||||
[ $TS_NSUBTESTS -eq 1 ] && echo
|
||||
- printf "%16s: %-27s ..." "" "$TS_SUBNAME"
|
||||
+ printf "%13s: %-30s ..." "$TS_COMPONENT" "$TS_SUBNAME"
|
||||
fi
|
||||
}
|
||||
|
||||
--
|
||||
2.8.3
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From af073c13ef184ca75811df688e0a0a25827b36c3 Mon Sep 17 00:00:00 2001
|
||||
From: Tudor Florea <tudor.florea@enea.com>
|
||||
Date: Thu, 3 Dec 2015 04:08:00 +0100
|
||||
Subject: [PATCH] Define TESTS variable
|
||||
|
||||
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
|
||||
Upstream-Status: Pending
|
||||
|
||||
---
|
||||
Makefile.am | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 886598d..1cf4346 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -57,6 +57,7 @@ systemdsystemunit_DATA =
|
||||
dist_bashcompletion_DATA =
|
||||
check_PROGRAMS =
|
||||
dist_check_SCRIPTS =
|
||||
+TESTS = $(check_PROGRAMS)
|
||||
|
||||
PATHFILES =
|
||||
ADOCFILES_COMMON =
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
# When udevd (from eudev) is running most eject/mount tests will fail because
|
||||
# of automount. We need to stop udevd before executing util-linux's tests.
|
||||
# The systemd-udevd daemon doesn't change the outcome of util-linux's tests.
|
||||
UDEV_PID="`pidof "@base_sbindir@/udevd"`"
|
||||
if [ "x$UDEV_PID" != "x" ]; then
|
||||
/etc/init.d/udev stop
|
||||
fi
|
||||
|
||||
current_path=$(readlink -f $0)
|
||||
export bindir=$(dirname $current_path)
|
||||
export PATH=$bindir/bin:$PATH
|
||||
|
||||
# losetup tests will be skipped and/or fail otherwise
|
||||
modprobe loop
|
||||
|
||||
./tests/run.sh --use-system-commands --parsable --show-diff | sed -u '{
|
||||
s/^\(.*\):\(.*\) \.\.\. OK$/PASS: \1:\2/
|
||||
s/^\(.*\):\(.*\) \.\.\. FAILED \(.*\)$/FAIL: \1:\2 \3/
|
||||
s/^\(.*\):\(.*\) \.\.\. SKIPPED \(.*\)$/SKIP: \1:\2 \3/
|
||||
}'
|
||||
|
||||
if [ "x$UDEV_PID" != "x" ]; then
|
||||
/etc/init.d/udev start
|
||||
fi
|
||||
@@ -0,0 +1,3 @@
|
||||
auth include runuser
|
||||
session optional pam_keyinit.so force revoke
|
||||
session include runuser
|
||||
@@ -0,0 +1,4 @@
|
||||
auth sufficient pam_rootok.so
|
||||
session optional pam_keyinit.so revoke
|
||||
session required pam_limits.so
|
||||
session required pam_unix.so
|
||||
@@ -0,0 +1,324 @@
|
||||
require util-linux.inc
|
||||
|
||||
#gtk-doc is not enabled as it requires xmlto which requires util-linux
|
||||
inherit autotools gettext manpages pkgconfig systemd update-alternatives python3-dir bash-completion ptest
|
||||
DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-libuuid"
|
||||
|
||||
PACKAGES =+ "${PN}-swaponoff"
|
||||
PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', '${PN}-pylibmount', '', d)}"
|
||||
|
||||
python util_linux_binpackages () {
|
||||
def pkg_hook(f, pkg, file_regex, output_pattern, modulename):
|
||||
pn = d.getVar('PN')
|
||||
d.appendVar('RRECOMMENDS:%s' % pn, ' %s' % pkg)
|
||||
|
||||
if d.getVar('ALTERNATIVE:' + pkg):
|
||||
return
|
||||
if d.getVarFlag('ALTERNATIVE_LINK_NAME', modulename):
|
||||
d.setVar('ALTERNATIVE:' + pkg, modulename)
|
||||
|
||||
bindirs = sorted(list(set(d.expand("${base_sbindir} ${base_bindir} ${sbindir} ${bindir}").split())))
|
||||
for dir in bindirs:
|
||||
do_split_packages(d, root=dir,
|
||||
file_regex=r'(.*)', output_pattern='${PN}-%s',
|
||||
description='${PN} %s',
|
||||
hook=pkg_hook, extra_depends='')
|
||||
|
||||
# There are some symlinks for some binaries which we have ignored
|
||||
# above. Add them to the package owning the binary they are
|
||||
# pointing to
|
||||
extras = {}
|
||||
dvar = d.getVar('PKGD')
|
||||
for root in bindirs:
|
||||
for walkroot, dirs, files in os.walk(dvar + root):
|
||||
for f in files:
|
||||
file = os.path.join(walkroot, f)
|
||||
if not os.path.islink(file):
|
||||
continue
|
||||
|
||||
pkg = os.path.basename(os.readlink(file))
|
||||
extras.setdefault(pkg, [])
|
||||
extras[pkg].append(file.replace(dvar, '', 1))
|
||||
|
||||
pn = d.getVar('PN')
|
||||
for pkg, links in extras.items():
|
||||
of = d.getVar('FILES:' + pn + '-' + pkg)
|
||||
links = of + " " + " ".join(sorted(links))
|
||||
d.setVar('FILES:' + pn + '-' + pkg, links)
|
||||
}
|
||||
|
||||
# we must execute before update-alternatives PACKAGE_PREPROCESS_FUNCS
|
||||
PACKAGE_PREPROCESS_FUNCS =+ "util_linux_binpackages "
|
||||
|
||||
# skip libuuid as it will be packaged by the util-linux-libuuid recipe
|
||||
python util_linux_libpackages() {
|
||||
do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(?!uuid)(.*)\.so\..*$',
|
||||
output_pattern='${PN}-lib%s',
|
||||
description='${PN} lib%s',
|
||||
extra_depends='', prepend=True, allow_links=True)
|
||||
}
|
||||
|
||||
PACKAGESPLITFUNCS =+ "util_linux_libpackages"
|
||||
|
||||
PACKAGES_DYNAMIC = "^${PN}-.*"
|
||||
|
||||
CACHED_CONFIGUREVARS += "scanf_cv_alloc_modifier=ms"
|
||||
UTIL_LINUX_LIBDIR = "${libdir}"
|
||||
UTIL_LINUX_LIBDIR:class-target = "${base_libdir}"
|
||||
EXTRA_OECONF = "\
|
||||
--enable-libuuid --enable-libblkid \
|
||||
\
|
||||
--enable-fsck --enable-kill --enable-last --enable-mesg \
|
||||
--enable-mount --enable-partx --enable-rfkill \
|
||||
--enable-unshare --enable-write \
|
||||
\
|
||||
--disable-bfs --disable-login \
|
||||
--disable-makeinstall-chown --disable-minix --disable-newgrp \
|
||||
--disable-use-tty-group --disable-vipw --disable-raw \
|
||||
\
|
||||
--without-udev \
|
||||
\
|
||||
usrsbin_execdir='${sbindir}' \
|
||||
--libdir='${UTIL_LINUX_LIBDIR}' \
|
||||
"
|
||||
|
||||
EXTRA_OECONF:append:class-target = " --enable-setpriv"
|
||||
EXTRA_OECONF:append:class-native = " --without-cap-ng --disable-setpriv"
|
||||
EXTRA_OECONF:append:class-nativesdk = " --without-cap-ng --disable-setpriv"
|
||||
EXTRA_OECONF:append = " --disable-hwclock-gplv3"
|
||||
|
||||
# enable pcre2 for native/nativesdk to match host distros
|
||||
# this helps to keep same expectations when using the SDK or
|
||||
# build host versions during development
|
||||
#
|
||||
PACKAGECONFIG ?= "pcre2"
|
||||
PACKAGECONFIG:class-target ?= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'chfn-chsh pam', '', d)}"
|
||||
# inherit manpages requires this to be present, however util-linux does not have
|
||||
# configuration options, and installs manpages always
|
||||
PACKAGECONFIG[manpages] = ""
|
||||
PACKAGECONFIG[pam] = "--enable-su --enable-runuser,--disable-su --disable-runuser, libpam,"
|
||||
# Respect the systemd feature for uuidd
|
||||
PACKAGECONFIG[systemd] = "--with-systemd --with-systemdsystemunitdir=${systemd_system_unitdir}, --without-systemd --without-systemdsystemunitdir,systemd"
|
||||
# Build python bindings for libmount
|
||||
PACKAGECONFIG[pylibmount] = "--with-python=3 --enable-pylibmount,--without-python --disable-pylibmount,python3"
|
||||
# Readline support
|
||||
PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
|
||||
# PCRE support in hardlink
|
||||
PACKAGECONFIG[pcre2] = ",,libpcre2"
|
||||
PACKAGECONFIG[cryptsetup] = "--with-cryptsetup,--without-cryptsetup,cryptsetup"
|
||||
PACKAGECONFIG[chfn-chsh] = "--enable-chfn-chsh,--disable-chfn-chsh,"
|
||||
PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
|
||||
|
||||
EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} CPU= CPUOPT= 'OPT=${CFLAGS}'"
|
||||
|
||||
ALLOW_EMPTY:${PN} = "1"
|
||||
FILES:${PN} = ""
|
||||
FILES:${PN}-doc += "${datadir}/getopt/getopt-*.*"
|
||||
FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.la"
|
||||
FILES:${PN}-mount = "${sysconfdir}/default/mountall"
|
||||
FILES:${PN}-runuser = "${sysconfdir}/pam.d/runuser*"
|
||||
FILES:${PN}-su = "${sysconfdir}/pam.d/su-l"
|
||||
CONFFILES:${PN}-su = "${sysconfdir}/pam.d/su-l"
|
||||
FILES:${PN}-pylibmount = "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.so \
|
||||
${PYTHON_SITEPACKAGES_DIR}/libmount/__init__.* \
|
||||
${PYTHON_SITEPACKAGES_DIR}/libmount/__pycache__/*"
|
||||
|
||||
# Util-linux' blkid replaces the e2fsprogs one
|
||||
RCONFLICTS:${PN}-blkid = "${MLPREFIX}e2fsprogs-blkid"
|
||||
RREPLACES:${PN}-blkid = "${MLPREFIX}e2fsprogs-blkid"
|
||||
|
||||
RRECOMMENDS:${PN}:class-native = ""
|
||||
RRECOMMENDS:${PN}:class-nativesdk = ""
|
||||
RDEPENDS:${PN}:class-native = ""
|
||||
RDEPENDS:${PN}:class-nativesdk = ""
|
||||
|
||||
RDEPENDS:${PN} += " util-linux-libuuid"
|
||||
RDEPENDS:${PN}-dev += " util-linux-libuuid-dev"
|
||||
|
||||
RPROVIDES:${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev"
|
||||
|
||||
RDEPENDS:${PN}-bash-completion += "${PN}-lsblk"
|
||||
RDEPENDS:${PN}-ptest += "bash bc btrfs-tools coreutils e2fsprogs findutils grep iproute2 kmod mdadm procps sed socat which xz"
|
||||
RRECOMMENDS:${PN}-ptest += "kernel-module-scsi-debug kernel-module-sd-mod kernel-module-loop kernel-module-algif-hash"
|
||||
RDEPENDS:${PN}-swaponoff = "${PN}-swapon ${PN}-swapoff"
|
||||
ALLOW_EMPTY:${PN}-swaponoff = "1"
|
||||
|
||||
#SYSTEMD_PACKAGES = "${PN}-uuidd ${PN}-fstrim"
|
||||
SYSTEMD_SERVICE:${PN}-uuidd = "uuidd.socket uuidd.service"
|
||||
SYSTEMD_AUTO_ENABLE:${PN}-uuidd = "disable"
|
||||
SYSTEMD_SERVICE:${PN}-fstrim = "fstrim.timer fstrim.service"
|
||||
SYSTEMD_AUTO_ENABLE:${PN}-fstrim = "disable"
|
||||
|
||||
do_install () {
|
||||
# with ccache the timestamps on compiled files may
|
||||
# end up earlier than on their inputs, this allows
|
||||
# for the resultant compilation in the install step.
|
||||
oe_runmake 'CC=${CC}' 'LD=${LD}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'DESTDIR=${D}' install
|
||||
|
||||
mkdir -p ${D}${base_bindir}
|
||||
|
||||
sbinprogs="agetty ctrlaltdel cfdisk vipw vigr"
|
||||
sbinprogs_a="pivot_root hwclock mkswap losetup swapon swapoff fdisk fsck blkid blockdev fstrim sulogin switch_root nologin"
|
||||
binprogs_a="dmesg getopt kill more umount mount login su mountpoint"
|
||||
|
||||
if [ "${base_sbindir}" != "${sbindir}" ]; then
|
||||
mkdir -p ${D}${base_sbindir}
|
||||
for p in $sbinprogs $sbinprogs_a; do
|
||||
if [ -f "${D}${sbindir}/$p" ]; then
|
||||
mv "${D}${sbindir}/$p" "${D}${base_sbindir}/$p"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "${base_bindir}" != "${bindir}" ]; then
|
||||
mkdir -p ${D}${base_bindir}
|
||||
for p in $binprogs_a; do
|
||||
if [ -f "${D}${bindir}/$p" ]; then
|
||||
mv "${D}${bindir}/$p" "${D}${base_bindir}/$p"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
install -d ${D}${sysconfdir}/default/
|
||||
echo 'MOUNTALL="-t nonfs,nosmbfs,noncpfs"' > ${D}${sysconfdir}/default/mountall
|
||||
|
||||
rm -f ${D}${bindir}/chkdupexe
|
||||
}
|
||||
|
||||
do_install:append:class-target () {
|
||||
if [ "${@bb.utils.filter('PACKAGECONFIG', 'pam', d)}" ]; then
|
||||
install -d ${D}${sysconfdir}/pam.d
|
||||
install -m 0644 ${WORKDIR}/runuser.pamd ${D}${sysconfdir}/pam.d/runuser
|
||||
install -m 0644 ${WORKDIR}/runuser-l.pamd ${D}${sysconfdir}/pam.d/runuser-l
|
||||
# Required for "su -" aka "su --login" because
|
||||
# otherwise it uses "other", which has "auth pam_deny.so"
|
||||
# and thus prevents the operation.
|
||||
ln -s su ${D}${sysconfdir}/pam.d/su-l
|
||||
fi
|
||||
}
|
||||
# nologin causes a conflict with shadow-native
|
||||
# kill causes a conflict with coreutils-native (if ${bindir}==${base_bindir})
|
||||
do_install:append:class-native () {
|
||||
rm -f ${D}${base_sbindir}/nologin
|
||||
rm -f ${D}${base_bindir}/kill
|
||||
}
|
||||
|
||||
# dm-verity support introduces a circular build dependency, so util-linux-libuuid is split out for target builds
|
||||
# Need to build libuuid for uuidgen, but then delete it and let the other recipe ship it
|
||||
do_install:append () {
|
||||
rm -rf ${D}${includedir}/uuid ${D}${libdir}/pkgconfig/uuid.pc ${D}${libdir}/libuuid* ${D}${base_libdir}/libuuid*
|
||||
}
|
||||
|
||||
ALTERNATIVE_PRIORITY = "80"
|
||||
|
||||
ALTERNATIVE_LINK_NAME[blkid] = "${base_sbindir}/blkid"
|
||||
ALTERNATIVE_LINK_NAME[blockdev] = "${base_sbindir}/blockdev"
|
||||
ALTERNATIVE_LINK_NAME[cal] = "${bindir}/cal"
|
||||
ALTERNATIVE_LINK_NAME[chfn] = "${bindir}/chfn"
|
||||
ALTERNATIVE_LINK_NAME[chsh] = "${bindir}/chsh"
|
||||
ALTERNATIVE_LINK_NAME[chrt] = "${bindir}/chrt"
|
||||
ALTERNATIVE_LINK_NAME[dmesg] = "${base_bindir}/dmesg"
|
||||
ALTERNATIVE_LINK_NAME[eject] = "${bindir}/eject"
|
||||
ALTERNATIVE_LINK_NAME[fallocate] = "${bindir}/fallocate"
|
||||
ALTERNATIVE_LINK_NAME[fdisk] = "${base_sbindir}/fdisk"
|
||||
ALTERNATIVE_LINK_NAME[findfs] = "${sbindir}/findfs"
|
||||
ALTERNATIVE_LINK_NAME[flock] = "${bindir}/flock"
|
||||
ALTERNATIVE_LINK_NAME[fsck] = "${base_sbindir}/fsck"
|
||||
ALTERNATIVE_LINK_NAME[fsfreeze] = "${sbindir}/fsfreeze"
|
||||
ALTERNATIVE_LINK_NAME[fstrim] = "${base_sbindir}/fstrim"
|
||||
ALTERNATIVE_LINK_NAME[getopt] = "${base_bindir}/getopt"
|
||||
ALTERNATIVE:${PN}-agetty = "getty"
|
||||
ALTERNATIVE_LINK_NAME[getty] = "${base_sbindir}/getty"
|
||||
ALTERNATIVE_TARGET[getty] = "${base_sbindir}/agetty"
|
||||
ALTERNATIVE_LINK_NAME[hexdump] = "${bindir}/hexdump"
|
||||
ALTERNATIVE_LINK_NAME[hwclock] = "${base_sbindir}/hwclock"
|
||||
ALTERNATIVE_LINK_NAME[ionice] = "${bindir}/ionice"
|
||||
ALTERNATIVE_LINK_NAME[ipcrm] = "${bindir}/ipcrm"
|
||||
ALTERNATIVE_LINK_NAME[ipcs] = "${bindir}/ipcs"
|
||||
ALTERNATIVE_LINK_NAME[kill] = "${base_bindir}/kill"
|
||||
ALTERNATIVE:${PN}-last = "last lastb"
|
||||
ALTERNATIVE_LINK_NAME[last] = "${bindir}/last"
|
||||
ALTERNATIVE_LINK_NAME[lastb] = "${bindir}/lastb"
|
||||
ALTERNATIVE_LINK_NAME[logger] = "${bindir}/logger"
|
||||
ALTERNATIVE_LINK_NAME[losetup] = "${base_sbindir}/losetup"
|
||||
ALTERNATIVE_LINK_NAME[mesg] = "${bindir}/mesg"
|
||||
ALTERNATIVE_LINK_NAME[mkswap] = "${base_sbindir}/mkswap"
|
||||
ALTERNATIVE_LINK_NAME[mcookie] = "${bindir}/mcookie"
|
||||
ALTERNATIVE_LINK_NAME[more] = "${base_bindir}/more"
|
||||
ALTERNATIVE_LINK_NAME[mount] = "${base_bindir}/mount"
|
||||
ALTERNATIVE_LINK_NAME[mountpoint] = "${base_bindir}/mountpoint"
|
||||
ALTERNATIVE_LINK_NAME[nologin] = "${base_sbindir}/nologin"
|
||||
ALTERNATIVE_LINK_NAME[nsenter] = "${bindir}/nsenter"
|
||||
ALTERNATIVE_LINK_NAME[pivot_root] = "${base_sbindir}/pivot_root"
|
||||
ALTERNATIVE_LINK_NAME[prlimit] = "${bindir}/prlimit"
|
||||
ALTERNATIVE_LINK_NAME[readprofile] = "${sbindir}/readprofile"
|
||||
ALTERNATIVE_LINK_NAME[renice] = "${bindir}/renice"
|
||||
ALTERNATIVE_LINK_NAME[rev] = "${bindir}/rev"
|
||||
ALTERNATIVE_LINK_NAME[rfkill] = "${sbindir}/rfkill"
|
||||
ALTERNATIVE_LINK_NAME[rtcwake] = "${sbindir}/rtcwake"
|
||||
ALTERNATIVE_LINK_NAME[setpriv] = "${bindir}/setpriv"
|
||||
ALTERNATIVE_LINK_NAME[setsid] = "${bindir}/setsid"
|
||||
ALTERNATIVE_LINK_NAME[su] = "${base_bindir}/su"
|
||||
ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin"
|
||||
ALTERNATIVE_LINK_NAME[swapoff] = "${base_sbindir}/swapoff"
|
||||
ALTERNATIVE_LINK_NAME[swapon] = "${base_sbindir}/swapon"
|
||||
ALTERNATIVE_LINK_NAME[switch_root] = "${base_sbindir}/switch_root"
|
||||
ALTERNATIVE_LINK_NAME[taskset] = "${bindir}/taskset"
|
||||
ALTERNATIVE_LINK_NAME[umount] = "${base_bindir}/umount"
|
||||
ALTERNATIVE_LINK_NAME[unshare] = "${bindir}/unshare"
|
||||
ALTERNATIVE_LINK_NAME[utmpdump] = "${bindir}/utmpdump"
|
||||
ALTERNATIVE_LINK_NAME[uuidgen] = "${bindir}/uuidgen"
|
||||
ALTERNATIVE_LINK_NAME[wall] = "${bindir}/wall"
|
||||
|
||||
ALTERNATIVE:${PN}-doc = "\
|
||||
blkid.8 eject.1 findfs.8 fsck.8 kill.1 last.1 lastb.1 libblkid.3 logger.1 mesg.1 \
|
||||
mountpoint.1 nologin.8 rfkill.8 sulogin.8 utmpdump.1 uuid.3 wall.1\
|
||||
"
|
||||
ALTERNATIVE:${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'pam', 'su.1', '', d)}"
|
||||
|
||||
ALTERNATIVE_LINK_NAME[blkid.8] = "${mandir}/man8/blkid.8"
|
||||
ALTERNATIVE_LINK_NAME[eject.1] = "${mandir}/man1/eject.1"
|
||||
ALTERNATIVE_LINK_NAME[findfs.8] = "${mandir}/man8/findfs.8"
|
||||
ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8"
|
||||
ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
|
||||
ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1"
|
||||
ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1"
|
||||
ALTERNATIVE_LINK_NAME[libblkid.3] = "${mandir}/man3/libblkid.3"
|
||||
ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
|
||||
ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1"
|
||||
ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1"
|
||||
ALTERNATIVE_LINK_NAME[nologin.8] = "${mandir}/man8/nologin.8"
|
||||
ALTERNATIVE_LINK_NAME[rfkill.8] = "${mandir}/man8/rfkill.8"
|
||||
ALTERNATIVE_LINK_NAME[setpriv.1] = "${mandir}/man1/setpriv.1"
|
||||
ALTERNATIVE_LINK_NAME[su.1] = "${mandir}/man1/su.1"
|
||||
ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8"
|
||||
ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1"
|
||||
ALTERNATIVE_LINK_NAME[uuid.3] = "${mandir}/man3/uuid.3"
|
||||
ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
|
||||
PTEST_BINDIR = "1"
|
||||
do_compile_ptest() {
|
||||
oe_runmake buildtest-TESTS
|
||||
}
|
||||
|
||||
do_install_ptest() {
|
||||
mkdir -p ${D}${PTEST_PATH}/tests/ts
|
||||
find . -name 'test*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
|
||||
find ./.libs -name 'sample*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
|
||||
find ./.libs -name 'test*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
|
||||
|
||||
cp ${S}/tests/*.sh ${D}${PTEST_PATH}/tests/
|
||||
cp -pR ${S}/tests/expected ${D}${PTEST_PATH}/tests/expected
|
||||
cp -pR ${S}/tests/ts ${D}${PTEST_PATH}/tests/
|
||||
cp ${WORKDIR}/build/config.h ${D}${PTEST_PATH}
|
||||
|
||||
sed -i 's|@base_sbindir@|${base_sbindir}|g' ${D}${PTEST_PATH}/run-ptest
|
||||
|
||||
# chfn needs PAM
|
||||
if ! ${@bb.utils.contains('PACKAGECONFIG', 'pam', 'true', 'false', d)}; then
|
||||
rm -rf ${D}${PTEST_PATH}/tests/ts/chfn
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user