On 12/10/25 12:03, Adam Duskett via lists.openembedded.org wrote:
<SNIP>
> diff --git a/meta/recipes-devtools/dnf/dnf_5.3.0.0.bb 
> b/meta/recipes-devtools/dnf/dnf_5.3.0.0.bb
> new file mode 100644
> index 0000000000..961e889fdb
> --- /dev/null
> +++ b/meta/recipes-devtools/dnf/dnf_5.3.0.0.bb
> @@ -0,0 +1,196 @@
> +SUMMARY = "DNF package manager rewritten in C++, using libsolv as a 
> dependency resolver"
> +DESCRIPTION = "\
> +    DNF5 is a command-line package manager that automates the process of \
> +    installing, upgrading, configuring, and removing computer programs in a \
> +    consistent manner. It supports RPM packages, modulemd modules, and comps 
> \
> +    groups and environments. \
> +"
> +HOMEPAGE = "https://github.com/rpm-software-management/dnf5";
> +BUGTRACKER = "https://github.com/rpm-software-management/dnf5/issues";
> +CVE_PRODUCT = "RPM:Dnf5"

While the cpe-vendor is matched case-insensitive way, product matching
is case-sensitive, it should be lowercase. Also, there seem to be at
least 2 valid CVE_PRODUCTS:
$ sqlite3 nvdfkie_1-1.db "select vendor, product from products where
product like 'dnf5';"
rpm|dnf5
rpm-software-management|dnf5

> +SECTION = "base"
> +
> +LICENSE = "GPL-2.0-or-later & LGPL-2.1-only"
> +LIC_FILES_CHKSUM = "\
> +    file://COPYING.md;md5=9733192df318d0f806fd668b92ba0ba6 \
> +    file://gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
> +    file://lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \
> +"
> +
> +DEPENDS = "\
> +    fmt \
> +    glib-2.0 \
> +    json-c \
> +    libcomps \
> +    libmodulemd \
> +    librepo \
> +    libsolv \
> +    libtoml11 \
> +    libxml2 \
> +    sqlite3 \
> +    util-linux \
> +"
> +
> +SRC_URI = "\
> +    
> git://github.com/rpm-software-management/dnf5.git;branch=main;protocol=https \

You could add ;tag=${PV} at the end.

> +    file://0002-cmake-set-CMP0190-to-OLD.patch \
> +    file://0003-Do-not-hardcode-system_cachedir.patch \
> +    file://0004-add-support-for-gcc-12-and-below.patch \
> +    file://0005-fix-string-concatenation-errors-for-musl.patch \
> +    file://0006-add-missing-headers-for-musl.patch \
> +    file://0007-Define-FNM_EXTMATCH-for-musl.patch \
> +    file://0008-libdnf-fix-arm-arch-mapping-issues-for-qemuarmv5.patch \
> +"
> +SRC_URI:append:class-native = " 
> file://0001-Do-not-hardcode-the-systemd-unit-directory.patch"
> +SRCREV = "c6a42c2e7e9ee0a04d46e6820a5962925a99b085"
> +
> +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
> +
> +inherit bash-completion cmake gettext pkgconfig siteinfo systemd
> +inherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python3', 
> 'python3targetconfig', '', d)}
> +
> +PACKAGECONFIG[dnfdaemon-client] = 
> "-DWITH_DNF5DAEMON_CLIENT=ON,-DWITH_DNF5DAEMON_CLIENT=OFF,sdbus-c++"
> +PACKAGECONFIG[dnfdaemon-server] = 
> "-DWITH_DNF5DAEMON_SERVER=ON,-DWITH_DNF5DAEMON_SERVER=OFF,sdbus-c++"
> +PACKAGECONFIG[plugins] = 
> "-DWITH_DNF5_PLUGINS=ON,-DWITH_DNF5_PLUGINS=OFF,curl sdbus-c++ zlib"
> +PACKAGECONFIG[plugin-actions] = 
> "-DWITH_PLUGIN_ACTIONS=ON,-DWITH_PLUGIN_ACTIONS=OFF"
> +PACKAGECONFIG[plugin-appstream] = 
> "-DWITH_PLUGIN_APPSTREAM=ON,-DWITH_PLUGIN_APPSTREAM=OFF,appstream"
> +PACKAGECONFIG[plugin-expired-pgp-keys] = 
> "-DWITH_PLUGIN_EXPIRED_PGP_KEYS=ON,-DWITH_PLUGIN_EXPIRED_PGP_KEYS=OFF,gnupg"
> +PACKAGECONFIG[plugin-manifest] = 
> "-DWITH_PLUGIN_MANIFEST=ON,-DWITH_PLUGIN_MANIFEST=OFF,sdbus-c++ 
> libpkgmanifest"

In which layer is libpkgmanifest? I couldn't find it the layer index.

> +PACKAGECONFIG[plugin-local] = 
> "-DWITH_PLUGIN_LOCAL=ON,-DWITH_PLUGIN_LOCAL=OFF"
> +
> +# sdbus-c++ and journalctl integration.
> +PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF,sdbus-c++"
> +
> +# build options - bindings
> +PACKAGECONFIG[python3] = "-DWITH_PYTHON3=ON,-DWITH_PYTHON3=OFF, python3 
> swig-native"
> +
> +# No sdbus-c++-native package.
> +PACKAGECONFIG:remove:class-native = "\
> +    dnfdaemon-client \
> +    dnfdaemon-server \
> +    plugins \
> +    plugin-manifest \
> +    systemd \
> +"
> +
> +PACKAGE_BEFORE_PN += "\
> +    ${PN}-dnfdaemon-server \
> +    ${PN}-plugins \
> +    ${PN}-python3 \
> +"
> +
> +# manpages generation requires http://www.sphinx-doc.org/
> +EXTRA_OECMAKE:append = " \
> +    -DENABLE_SOLV_FOCUSNEW=ON \
> +    -DWITH_DNF5_OBSOLETES_DNF=OFF \
> +    -DWITH_DNF5=ON \
> +    -DWITH_GO=OFF \
> +    -DWITH_HTML=OFF \
> +    -DWITH_LIBDNF5_CLI=ON \
> +    -DWITH_MAN=OFF \
> +    -DWITH_PERL5=OFF \
> +    -DWITH_PLUGIN_RHSM=OFF \
> +    -DWITH_RUBY=OFF \
> +    -DWITH_TESTS=OFF \
> +"
> +
> +# No sdbus-c++-native package exists so remove all options that depend on it.
> +EXTRA_OECMAKE:append:class-native = " \
> +    -DWITH_DNF5DAEMON_CLIENT=OFF \
> +    -DWITH_DNF5DAEMON_SERVER=OFF \
> +    -DWITH_DNF5_PLUGINS=OFF \
> +    -DWITH_PLUGIN_MANIFEST=OFF \
> +    -DWITH_SYSTEMD=OFF \
> +"
> +
> +# Create a symlink called 'dnf' as 'make install' does not do it, but
> +# .spec file in dnf source tree does (and then Fedora and dnf documentation
> +# says that dnf binary is plain 'dnf').
> +do_install:append() {
> +    ln -rs ${D}/${bindir}/dnf5 ${D}/${bindir}/dnf
> +    install -d ${D}${sysconfdir}/dnf
> +
> +    # DNF always installs service files to /usr/lib/systemd, even if 
> usrmerge is not
> +    # selected. Also, remove systemd files if systemd isn't selected.
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'false', 'true', 
> d)}; then
> +        rm -rf ${D}${libdir}/systemd
> +    fi
> +
> +    # Breaks dnf because the builddep plugin is provided in the
> +    # dnf-plugins-core package which is not available in oe-core.
> +    rm -f ${D}${datadir}/dnf5/aliases.d/compatibility-plugins.conf
> +}
> +
> +do_install:append:${PN}-plugins() {
> +    ln -rs ${D}/${bindir}/dnf5-automatic ${D}/${bindir}/dnf-automatic
> +}

1. Is that ${PN}-plugins override needed? Couldn't it just be part of
the do_install, if the file exists?
2. The cmake file does install[1] a wrapper script[2] with the same name
and location. Does it not have the same function? (I'm asking, it might
be different)

[1]:
https://github.com/rpm-software-management/dnf5/blob/5.3.0.0/dnf5-plugins/automatic_plugin/CMakeLists.txt#L17
[2]:
https://github.com/rpm-software-management/dnf5/blob/5.3.0.0/dnf5-plugins/automatic_plugin/bin/dnf-automatic

> +
> +# Direct dnf-native to read rpm configuration from our sysroot, not the one 
> it was compiled in
> +do_install:append:class-native() {
> +    create_wrapper ${D}/${bindir}/dnf \
> +        
> SEQUOIA_CRYPTO_POLICY=${STAGING_DATADIR_NATIVE}/crypto-policies/back-ends/rpm-sequoia.config
>  \
> +        RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
> +        RPM_NO_CHROOT_FOR_SCRIPTS=1
> +}
> +
> +do_install:append:class-nativesdk() {
> +    create_wrapper ${D}/${bindir}/dnf \
> +        RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
> +        RPM_NO_CHROOT_FOR_SCRIPTS=1
> +}
> +
> +SYSTEMD_SERVICE:${PN} = "\
> +    dnf5-makecache.service \
> +    dnf5-makecache.timer \
> +"
> +
> +SYSTEMD_AUTO_ENABLE ?= "disable"
> +
> +# Packages for testing purposes
> +PACKAGES += "${PN}-test-main ${PN}-test-dep"
> +
> +FILES:${PN} += "\
> +    ${bindir}/dnf* \
> +    ${datadir}/dbus-1/system-services/org.rpm.dnf.v0.service \
> +    ${datadir}/dnf5 \
> +    ${datadir}/polkit-1/actions/org.rpm.dnf* \
> +    ${datadir}/polkit-1/rules.d/org.rpm.dnf* \
> +    ${libdir}/dnf5 \
> +    ${libdir}/libdnf5* \
> +    ${sysconfdir}/dnf \
> +"
> +
> +FILES:${PN}-bash-completion += "\
> +    ${datadir}/bash-completion/completions/dnf5 \
> +"
> +
> +FILES:${PN}-dnfdaemon-server += "\
> +    ${systemd_system_unitdir}/dnf5daemon-server.service \
> +    ${datadir}/dbus-1/interfaces/org.rpm.dnf* \
> +    ${datadir}/dbus-1/system.d/org.rpm.dnf* \
> +"
> +
> +FILES:${PN}-plugins += "\
> +    ${systemd_system_unitdir}/dnf-automatic.service \
> +    ${systemd_system_unitdir}/dnf-automatic.timer \
> +    ${systemd_system_unitdir}/dnf5-automatic.service \
> +    ${systemd_system_unitdir}/dnf5-automatic.timer \
> +"
> +
> +FILES:${PN}-python3 += "\
> +    ${libdir}/${PYTHON_DIR}/site-packages/libdnf* \
> +"
> +
> +FILES:${PN}-systemd += "\
> +    ${systemd_system_unitdir}/dnf5-offline-transaction.service \
> +    ${systemd_system_unitdir}/dnf5-offline-transaction-cleanup.service \
> +"
> +
> +RRECOMMENDS:${PN}:class-target += "bash-completion gnupg"
> +RRECOMMENDS:${PN}-test-main = "${PN}-test-dep"
> +ALLOW_EMPTY:${PN}-test-main = "1"
> +ALLOW_EMPTY:${PN}-test-dep = "1"
> +
> +SKIP_RECIPE[dnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', 
> '', 'does not build without package_rpm in PACKAGE_CLASSES due disabled rpm 
> support in libsolv', d)}"

Since it is being updated, could you please also fix this typo: "due" ->
"due to" ?

> +
> +BBCLASSEXTEND = "native nativesdk"
>
> 
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#227477): 
https://lists.openembedded.org/g/openembedded-core/message/227477
Mute This Topic: https://lists.openembedded.org/mt/116710030/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to