From 73e5558c9a7ec3c804fe4ba0093a68b563f3572a Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Tue, 1 Sep 2026 22:18:31 +1200 Subject: Migrate to chimerautils from GNU coreutils/busybox --- meta-yerba/conf/distro/yerba.conf | 12 ++- .../chimerautils/chimerautils_15.1.0.bb | 95 ++++++++++++++++++++++ meta-yerba/recipes-core/images/yerba-image.bb | 5 +- meta-yerba/recipes-core/libpam/libpam_%.bbappend | 13 +++ meta-yerba/recipes-core/libxo/libxo_1.7.5.bb | 73 +++++++++++++++++ .../package-groups/packagegroup-yerba-boot.bb | 23 ++++++ meta-yerba/recipes-core/runit/runit_2.3.1.bb | 2 +- 7 files changed, 215 insertions(+), 8 deletions(-) create mode 100644 meta-yerba/recipes-core/chimerautils/chimerautils_15.1.0.bb create mode 100644 meta-yerba/recipes-core/libpam/libpam_%.bbappend create mode 100644 meta-yerba/recipes-core/libxo/libxo_1.7.5.bb create mode 100644 meta-yerba/recipes-core/package-groups/packagegroup-yerba-boot.bb diff --git a/meta-yerba/conf/distro/yerba.conf b/meta-yerba/conf/distro/yerba.conf index fd0eacd..b1368a1 100644 --- a/meta-yerba/conf/distro/yerba.conf +++ b/meta-yerba/conf/distro/yerba.conf @@ -1,7 +1,6 @@ DISTRO = "yerba" DISTRO_NAME = "Yerba Linux" -# No versioning, this is rolling-release -DISTRO_VERSION = "rolling" +DISTRO_VERSION = "1.0.0" MAINTAINER = "Arslaan Pathan " TCLIBC = "musl" @@ -14,8 +13,13 @@ DISTRO_FEATURES = " pam" VIRTUAL-RUNTIME_init_manager = "runit" VIRTUAL-RUNTIME_initscripts = "" -VIRTUAL-RUNTIME_base-utils = "busybox" -VIRTUAL_RUNTIME_login_manager = "util-linux" +PREFERRED_PROVIDER_virtual/base-utils = "chimerautils" +VIRTUAL-RUNTIME_base-utils = "chimerautils" +# Use PAM instead +# VIRTUAL-RUNTIME_login_manager = "util-linux" + +SKIP_RECIPE[busybox] = "Using chimerautils instead" +SKIP_RECIPE[coreutils] = "Using chimerautils instead" # some quality assurance stuff? idk tbh ERROR_QA:append = " textrel host-user-contaminated" diff --git a/meta-yerba/recipes-core/chimerautils/chimerautils_15.1.0.bb b/meta-yerba/recipes-core/chimerautils/chimerautils_15.1.0.bb new file mode 100644 index 0000000..13fe60d --- /dev/null +++ b/meta-yerba/recipes-core/chimerautils/chimerautils_15.1.0.bb @@ -0,0 +1,95 @@ +SUMMARY = "chimerautils - Chimera Linux utilities/userspace" +DESCRIPTION = "Custom userspace/coreutils for replacing busybox and GNU coreutils" +HOMEPAGE = "https://github.com/chimera-linux/chimerautils" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1ba384e96ff42e28d5560af83e8fb18f" + +SRC_URI = "git://github.com/chimera-linux/chimerautils;protocol=https;branch=master" +SRCREV = "8a71251d1846185899600a7484ac0f522dea8740" +S = "${WORKDIR}/git" + +PROVIDES += "virtual/base-utils" +RPROVIDES:${PN} += "virtual/base-utils" + +DEPENDS = "meson-native ninja-native bison-native acl-native libedit-native openssl-native zlib-native xz-native ncurses-native zstd-native zstd bison acl libedit openssl libxo zlib xz ncurses" + +inherit meson + +inherit pkgconfig + +EXTRA_OEMESON = "--buildtype plain" + +do_install() { + install -d ${D}${bindir} \ + ${D}${sbindir} \ + ${D}${libdir} \ + ${D}${base_sbindir} \ + ${D}${base_bindir} + + if [ -d "${B}/src.custom" ]; then + for binary in $(find ${B}/src.custom -maxdepth 2 -type f -executable ! -name "*.o" ! -name "*.p" 2>/dev/null); do + base_name=$(basename $binary) + case $base_name in + maketab|mksyntax|mknodes|proctab) + continue + ;; + addpart|delpart|resizepart) + install -m 0755 $binary ${D}${sbindir}/ + ;; + pivot_root|switch_root) + install -m 0755 $binary ${D}${base_sbindir}/ + ;; + *) + install -m 0755 $binary ${D}${bindir}/ + ;; + esac + done + fi + + if [ -d "${B}/src.freebsd" ]; then + for binary in $(find ${B}/src.freebsd -mindepth 2 -maxdepth 3 -type f -executable ! -name "*.o" ! -name "*.a" ! -name "*.so*" ! -name "*.h" ! -name "*.c" ! -name "*.cc" ! -name "*.tab.*" ! -name "*.p" 2>/dev/null); do + base_name=$(basename $binary) + case $base_name in + maketab|mksyntax|mknodes|proctab|*.o|*.a|*.so*|*.h|*.c|*.cc|*.tab.*|*.p|*.sh|*.pl|*.py|*.awk) + continue + ;; + *) + case $base_name in + init|halt|poweroff|reboot|shutdown|swap*|pivot_root|switch_root) + install -m 0755 $binary ${D}${base_sbindir}/ + ;; + mount|umount|fsck|mkfs|fdisk|cfdisk|sfdisk|losetup|addpart|delpart|resizepart) + install -m 0755 $binary ${D}${sbindir}/ + ;; + *) + install -m 0755 $binary ${D}${bindir}/ + ;; + esac + ;; + esac + done + fi + + if [ -d "${B}/src.freebsd" ]; then + find ${B}/src.freebsd -name "*.so*" -exec install -m 0755 {} ${D}${libdir}/ \; 2>/dev/null || true + fi +} + +FILES:${PN} = " \ + ${bindir}/* \ + ${sbindir}/* \ + ${base_bindir}/* \ + ${base_sbindir}/* \ + ${libdir}/*.so* \ + ${datadir}/* \ + /bin \ + /usr/share \ +" + +FILES:${PN}-staticdev = " \ + ${libdir}/*.a \ +" + +FILES:${PN}-dev = " \ + ${includedir}/* \ +" diff --git a/meta-yerba/recipes-core/images/yerba-image.bb b/meta-yerba/recipes-core/images/yerba-image.bb index d19702e..b5b5bbd 100644 --- a/meta-yerba/recipes-core/images/yerba-image.bb +++ b/meta-yerba/recipes-core/images/yerba-image.bb @@ -5,9 +5,9 @@ inherit core-image IMAGE_FEATURES += "ssh-server-dropbear" +# Not using packagegroup-core-base-utils anymore because chimerautils IMAGE_INSTALL = "\ - packagegroup-core-boot \ - packagegroup-core-base-utils \ + packagegroup-yerba-boot \ ${CORE_IMAGE_EXTRA_INSTALL} \ yerba-user \ runit \ @@ -15,7 +15,6 @@ IMAGE_INSTALL = "\ runit-tty0-getty \ runit-dhcpcd \ runit-config \ - busybox \ util-linux-agetty \ bash \ zsh \ diff --git a/meta-yerba/recipes-core/libpam/libpam_%.bbappend b/meta-yerba/recipes-core/libpam/libpam_%.bbappend new file mode 100644 index 0000000..573fe1c --- /dev/null +++ b/meta-yerba/recipes-core/libpam/libpam_%.bbappend @@ -0,0 +1,13 @@ +RDEPENDS:${PN}-runtime = "${PN}-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-deny-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-permit-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-warn-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-unix-${libpam_suffix} \ + " +RDEPENDS:${PN}-xtests = "${PN}-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-access-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-debug-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-pwhistory-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-succeed-if-${libpam_suffix} \ + ${MLPREFIX}pam-plugin-time-${libpam_suffix} \ + bash chimerautils" diff --git a/meta-yerba/recipes-core/libxo/libxo_1.7.5.bb b/meta-yerba/recipes-core/libxo/libxo_1.7.5.bb new file mode 100644 index 0000000..72a1f51 --- /dev/null +++ b/meta-yerba/recipes-core/libxo/libxo_1.7.5.bb @@ -0,0 +1,73 @@ +SUMMARY = "libxo - Library for programs to output XML, JSON and HTML" +DESCRIPTION = "Library for programs to output XML, JSON and HTML" +HOMEPAGE = "https://github.com/Juniper/libxo" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d38b267964c4d7712bb316e31cceb0a2" + +SRC_URI="git://github.com/Juniper/libxo;protocol=https;branch=main" +SRCREV="fd5db1b4fba49e1f4c35d6c466710c0e89f54043" +S = "${WORKDIR}/git" + +DEPENDS = "libtool-native" + +inherit autotools pkgconfig + +EXTRA_OECONF = "" + +do_configure:prepend() { + if [ -f ${S}/configure ]; then + sed -i 's|/usr/include||g' ${S}/configure + sed -i 's|/usr/lib||g' ${S}/configure + sed -i 's|/usr/local||g' ${S}/configure + fi +} + +INSANE_SKIP:${PN} = "configure-unsafe unknown-configure-option ldflags dev-so staticdev buildpaths" +INSANE_SKIP:${PN}-dev = "configure-unsafe unknown-configure-option ldflags" +INSANE_SKIP:${PN}-staticdev = "configure-unsafe unknown-configure-option ldflags" + +EXTRA_OECONF += "--disable-gettext" + +LDFLAGS += "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed" + +do_install:append() { + if [ -f ${D}${bindir}/libxo-config ]; then + sed -i 's|${TMPDIR}||g' ${D}${bindir}/libxo-config + sed -i 's|${WORKDIR}||g' ${D}${bindir}/libxo-config + sed -i 's|${D}||g' ${D}${bindir}/libxo-config + fi +} + +FILES:${PN} = " \ + ${libdir}/libxo/encoder/libenc_cbor.so.0.0.0 \ + ${libdir}/libxo/encoder/libenc_cbor.so.0 \ + ${libdir}/libxo/encoder/libenc_cbor.so \ + ${libdir}/libxo/encoder/libenc_cbor.a \ + ${libdir}/libxo/encoder/cbor.enc \ + ${libdir}/libxo/encoder/libenc_csv.so.0.0.0 \ + ${libdir}/libxo/encoder/libenc_csv.so.0 \ + ${libdir}/libxo/encoder/libenc_csv.so \ + ${libdir}/libxo/encoder/libenc_csv.a \ + ${libdir}/libxo/encoder/csv.enc \ + ${libdir}/libxo/encoder/libenc_test.so.0.0.0 \ + ${libdir}/libxo/encoder/libenc_test.so.0 \ + ${libdir}/libxo/encoder/libenc_test.so \ + ${libdir}/libxo/encoder/libenc_test.a \ + ${libdir}/libxo/encoder/test.enc \ + ${libdir}/libxo.so.0.0.0 \ + ${libdir}/libxo.so.0 \ + ${datadir}/libxo \ + ${datadir}/libxo/xohtml.js \ + ${datadir}/libxo/xohtml.css \ + ${datadir}/libxo/external \ + ${datadir}/libxo/external/jquery.js \ + ${datadir}/libxo/external/jquery.qtip.css \ + ${datadir}/libxo/external/jquery.qtip.js \ + ${bindir}/xo \ + ${bindir}/xopo \ + ${bindir}/xolint \ + ${bindir}/xohtml \ + ${bindir}/libxo-config \ +" + +BBCLASSEXTEND = "native" diff --git a/meta-yerba/recipes-core/package-groups/packagegroup-yerba-boot.bb b/meta-yerba/recipes-core/package-groups/packagegroup-yerba-boot.bb new file mode 100644 index 0000000..0a28f12 --- /dev/null +++ b/meta-yerba/recipes-core/package-groups/packagegroup-yerba-boot.bb @@ -0,0 +1,23 @@ +SUMMARY = "Yerba Linux boot package group" +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-yerba-boot \ + " + +RDEPENDS:packagegroup-yerba-boot = "\ + base-files \ + base-passwd \ + initscripts \ + init-ifupdown \ + modutils-initscripts \ + netbase \ + runit \ + udev \ + util-linux-mount \ + util-linux-umount \ + chimerautils \ + bash \ + " diff --git a/meta-yerba/recipes-core/runit/runit_2.3.1.bb b/meta-yerba/recipes-core/runit/runit_2.3.1.bb index 3dc5d9b..45a3805 100644 --- a/meta-yerba/recipes-core/runit/runit_2.3.1.bb +++ b/meta-yerba/recipes-core/runit/runit_2.3.1.bb @@ -37,7 +37,7 @@ do_install() { } FILES:${PN} = "/sbin/runit-init /usr/sbin/runsvdir /usr/bin/sv /usr/sbin/svlogd /sbin/runit /sbin/init /usr/sbin/runsv /usr/sbin/runsvchdir /usr/bin/chpst /sbin/runsv /sbin/runsvdir" -RDEPENDS:${PN} += "busybox runit-config" +RDEPENDS:${PN} += "chimerautils runit-config" PROVIDES += "runit-init" -- cgit v1.2.3