diff options
Diffstat (limited to 'meta/recipes-devtools/opkg')
7 files changed, 166 insertions, 112 deletions
diff --git a/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb b/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb index 0c2dbc9e32..726a259a8c 100644 --- a/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb +++ b/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb @@ -1,8 +1,7 @@ SUMMARY = "Architecture-dependent configuration for opkg" -HOMEPAGE = "http://code.google.com/p/opkg/" +HOMEPAGE = "https://git.yoctoproject.org/opkg/" LICENSE = "MIT" PACKAGE_ARCH = "${MACHINE_ARCH}" -PR = "r1" S = "${WORKDIR}" @@ -26,10 +25,10 @@ do_install () { install -m 0644 ${S}/${sysconfdir}/opkg/* ${D}${sysconfdir}/opkg/ } -FILES_${PN} = "${sysconfdir}/opkg/ " +FILES:${PN} = "${sysconfdir}/opkg/ " -CONFFILES_${PN} += "${sysconfdir}/opkg/arch.conf" +CONFFILES:${PN} += "${sysconfdir}/opkg/arch.conf" -RREPLACES_${PN} = "opkg-config-base" -RCONFLICTS_${PN} = "opkg-config-base" -RPROVIDES_${PN} = "opkg-config-base" +RREPLACES:${PN} = "opkg-config-base" +RCONFLICTS:${PN} = "opkg-config-base" +RPROVIDES:${PN} = "opkg-config-base" diff --git a/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb b/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb index 18d6abdded..84aeb98068 100644 --- a/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb +++ b/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384 # Distro-specific keys can be added to this package in two ways: # # 1) In a .bbappend, add .gpg and/or .asc files to SRC_URI and install them to -# ${D}${datadir}/opkg/keyrings/ in a do_install_append function. These +# ${D}${datadir}/opkg/keyrings/ in a do_install:append function. These # files should not be named 'key-$name.gpg' to ensure they don't conflict # with keys exported as per (2). # @@ -30,19 +30,14 @@ do_install () { done } -FILES_${PN} = "${datadir}/opkg/keyrings" +FILES:${PN} = "${datadir}/opkg/keyrings" # We need 'opkg-key' to run the postinst script -RDEPENDS_${PN} = "opkg" +RDEPENDS:${PN} = "opkg" -pkg_postinst_${PN} () { -#! /bin/sh -set -e - -if [ x"$D" = "x" ]; then - # On target - opkg-key populate -else - exit 1 -fi +pkg_postinst_ontarget:${PN} () { + if test -x ${bindir}/opkg-key + then + ${bindir}/opkg-key populate + fi } diff --git a/meta/recipes-devtools/opkg/opkg/0001-libopkg-Use-libgen.h-to-provide-basename-API.patch b/meta/recipes-devtools/opkg/opkg/0001-libopkg-Use-libgen.h-to-provide-basename-API.patch new file mode 100644 index 0000000000..61581e752b --- /dev/null +++ b/meta/recipes-devtools/opkg/opkg/0001-libopkg-Use-libgen.h-to-provide-basename-API.patch @@ -0,0 +1,62 @@ +From 7a1c13a48cf020c40dda1721d5c2ffd95e8e669a Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 10 Dec 2023 19:39:29 -0800 +Subject: [PATCH v2] libopkg: Use libgen.h to provide basename API + +Also ensure that copy of filename is passed into archive_entry_set_pathname +so it can be operated upon by posix basename which expect non-const +character pointer as input. + +This became evident with latest musl where basename declaration was +dropped from string.h [1] + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 + +Upstream-Status: Backport [74fc3a991f974095644897d18d43846b5f359dae] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- +v2: Do not override basename wholesale + + libopkg/opkg_archive.c | 6 ++++-- + libopkg/opkg_remove.c | 1 + + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/libopkg/opkg_archive.c b/libopkg/opkg_archive.c +index 03a4afb..b099f5b 100644 +--- a/libopkg/opkg_archive.c ++++ b/libopkg/opkg_archive.c +@@ -20,6 +20,7 @@ + + #include <archive.h> + #include <archive_entry.h> ++#include <libgen.h> + #include <stdlib.h> + #include <stdio.h> + #include <string.h> +@@ -797,8 +798,9 @@ int gz_write_archive(const char *filename, const char *gz_filename) + } + + /* Remove path hierarchy, as we are only compressing a single file */ +- archive_entry_set_pathname(entry, basename(filename)); +- ++ char* tmp = xstrdup(filename); ++ archive_entry_set_pathname(entry, basename(tmp)); ++ free(tmp); + r = archive_write_header(a, entry); + if (r != ARCHIVE_OK) { + opkg_msg(ERROR, "Failed to create compressed file: '%s' : %s (errno=%d)", +diff --git a/libopkg/opkg_remove.c b/libopkg/opkg_remove.c +index 889c672..5254388 100644 +--- a/libopkg/opkg_remove.c ++++ b/libopkg/opkg_remove.c +@@ -20,6 +20,7 @@ + + #include "config.h" + ++#include <libgen.h> + #include <stdio.h> + #include <glob.h> + #include <unistd.h> +-- +2.43.0 + diff --git a/meta/recipes-devtools/opkg/opkg/opkg-configure.service b/meta/recipes-devtools/opkg/opkg/opkg-configure.service deleted file mode 100644 index 432c3ddc28..0000000000 --- a/meta/recipes-devtools/opkg/opkg/opkg-configure.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description=Opkg first boot configure -DefaultDependencies=no -After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount -Before=sysinit.target - -[Service] -Type=oneshot -EnvironmentFile=-@SYSCONFDIR@/default/postinst -ExecStart=-@BASE_BINDIR@/sh -c " if [ $POSTINST_LOGGING = '1' ]; then @BINDIR@/opkg configure > $LOGFILE 2>&1; else @BINDIR@/opkg configure; fi" -ExecStartPost=@BASE_BINDIR@/systemctl --no-reload disable opkg-configure.service -StandardOutput=syslog -RemainAfterExit=No - -[Install] -WantedBy=basic.target -WantedBy=sysinit.target diff --git a/meta/recipes-devtools/opkg/opkg/run-ptest b/meta/recipes-devtools/opkg/opkg/run-ptest new file mode 100644 index 0000000000..5fb7077eec --- /dev/null +++ b/meta/recipes-devtools/opkg/opkg/run-ptest @@ -0,0 +1,5 @@ +#!/bin/sh + +OPKG_PATH=$(which opkg) + +make OPKG_PATH=$OPKG_PATH run-tests diff --git a/meta/recipes-devtools/opkg/opkg_0.3.5.bb b/meta/recipes-devtools/opkg/opkg_0.3.5.bb deleted file mode 100644 index 3e511b6bb6..0000000000 --- a/meta/recipes-devtools/opkg/opkg_0.3.5.bb +++ /dev/null @@ -1,75 +0,0 @@ -SUMMARY = "Open Package Manager" -SUMMARY_libopkg = "Open Package Manager library" -SECTION = "base" -HOMEPAGE = "http://code.google.com/p/opkg/" -BUGTRACKER = "http://code.google.com/p/opkg/issues/list" -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ - file://src/opkg.c;beginline=2;endline=21;md5=90435a519c6ea69ef22e4a88bcc52fa0" - -DEPENDS = "libarchive" - -PE = "1" - -SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \ - file://opkg-configure.service \ - file://opkg.conf \ - file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \ -" - -SRC_URI[md5sum] = "d202d09ea0932943071b842626cab13c" -SRC_URI[sha256sum] = "734bc21dea11262113fa86b928d09812618b3966f352350cf916a6ae0d343f32" - -inherit autotools pkgconfig systemd - -SYSTEMD_SERVICE_${PN} = "opkg-configure.service" - -target_localstatedir := "${localstatedir}" -OPKGLIBDIR = "${target_localstatedir}/lib" - -PACKAGECONFIG ??= "libsolv" - -PACKAGECONFIG[gpg] = "--enable-gpg,--disable-gpg,gpgme libgpg-error,gnupg" -PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl" -PACKAGECONFIG[ssl-curl] = "--enable-ssl-curl,--disable-ssl-curl,curl openssl" -PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl" -PACKAGECONFIG[sha256] = "--enable-sha256,--disable-sha256" -PACKAGECONFIG[pathfinder] = "--enable-pathfinder,--disable-pathfinder,pathfinder" -PACKAGECONFIG[libsolv] = "--with-libsolv,--without-libsolv,libsolv" - -EXTRA_OECONF_class-native = "--localstatedir=/${@os.path.relpath('${localstatedir}', '${STAGING_DIR_NATIVE}')} --sysconfdir=/${@os.path.relpath('${sysconfdir}', '${STAGING_DIR_NATIVE}')}" - -do_install_append () { - install -d ${D}${sysconfdir}/opkg - install -m 0644 ${WORKDIR}/opkg.conf ${D}${sysconfdir}/opkg/opkg.conf - echo "option lists_dir ${OPKGLIBDIR}/opkg/lists" >>${D}${sysconfdir}/opkg/opkg.conf - - # We need to create the lock directory - install -d ${D}${OPKGLIBDIR}/opkg - - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then - install -d ${D}${systemd_unitdir}/system - install -m 0644 ${WORKDIR}/opkg-configure.service ${D}${systemd_unitdir}/system/ - sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \ - -e 's,@SYSCONFDIR@,${sysconfdir},g' \ - -e 's,@BINDIR@,${bindir},g' \ - -e 's,@SYSTEMD_UNITDIR@,${systemd_unitdir},g' \ - ${D}${systemd_unitdir}/system/opkg-configure.service - fi -} - -RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config libarchive" -RDEPENDS_${PN}_class-native = "" -RDEPENDS_${PN}_class-nativesdk = "" -RREPLACES_${PN} = "opkg-nogpg opkg-collateral" -RCONFLICTS_${PN} = "opkg-collateral" -RPROVIDES_${PN} = "opkg-collateral" - -PACKAGES =+ "libopkg" - -FILES_libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/" -FILES_${PN} += "${systemd_unitdir}/system/" - -BBCLASSEXTEND = "native nativesdk" - -CONFFILES_${PN} = "${sysconfdir}/opkg/opkg.conf" diff --git a/meta/recipes-devtools/opkg/opkg_0.6.3.bb b/meta/recipes-devtools/opkg/opkg_0.6.3.bb new file mode 100644 index 0000000000..ef7c4f3a72 --- /dev/null +++ b/meta/recipes-devtools/opkg/opkg_0.6.3.bb @@ -0,0 +1,85 @@ +SUMMARY = "Open Package Manager" +SUMMARY:libopkg = "Open Package Manager library" +SECTION = "base" +HOMEPAGE = "https://git.yoctoproject.org/opkg/" +DESCRIPTION = "Opkg is a lightweight package management system based on Ipkg." +BUGTRACKER = "https://bugzilla.yoctoproject.org/buglist.cgi?quicksearch=Product%3Aopkg" +LICENSE = "GPL-2.0-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ + file://src/opkg.c;beginline=4;endline=18;md5=d6200b0f2b41dee278aa5fad333eecae" + +DEPENDS = "libarchive zstd" + +PE = "1" + +SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \ + file://opkg.conf \ + file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \ + file://0001-libopkg-Use-libgen.h-to-provide-basename-API.patch \ + file://run-ptest \ + " + +SRC_URI[sha256sum] = "f3938e359646b406c40d5d442a1467c7e72357f91ab822e442697529641e06de" + +# This needs to be before ptest inherit, otherwise all ptest files end packaged +# in libopkg package if OPKGLIBDIR == libdir, because default +# PTEST_PATH ?= "${libdir}/${BPN}/ptest" +PACKAGES =+ "libopkg" + +inherit autotools pkgconfig ptest + +target_localstatedir := "${localstatedir}" +OPKGLIBDIR ??= "${target_localstatedir}/lib" + +PACKAGECONFIG ??= "libsolv" + +PACKAGECONFIG[gpg] = "--enable-gpg,--disable-gpg,\ + gnupg gpgme libgpg-error,\ + ${@ "gnupg" if ("native" in d.getVar("PN")) else "gnupg-gpg"}\ + " +PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl" +PACKAGECONFIG[ssl-curl] = "--enable-ssl-curl,--disable-ssl-curl,curl openssl" +PACKAGECONFIG[sha256] = "--enable-sha256,--disable-sha256" +PACKAGECONFIG[libsolv] = "--with-libsolv,--without-libsolv,libsolv" + +EXTRA_OECONF = "--enable-zstd" +EXTRA_OECONF:append:class-native = " --localstatedir=/${@os.path.relpath('${localstatedir}', '${STAGING_DIR_NATIVE}')} --sysconfdir=/${@os.path.relpath('${sysconfdir}', '${STAGING_DIR_NATIVE}')}" + +do_install:append () { + install -d ${D}${sysconfdir}/opkg + install -m 0644 ${UNPACKDIR}/opkg.conf ${D}${sysconfdir}/opkg/opkg.conf + echo "option lists_dir ${OPKGLIBDIR}/opkg/lists" >>${D}${sysconfdir}/opkg/opkg.conf + echo "option info_dir ${OPKGLIBDIR}/opkg/info" >>${D}${sysconfdir}/opkg/opkg.conf + echo "option status_file ${OPKGLIBDIR}/opkg/status" >>${D}${sysconfdir}/opkg/opkg.conf + + # We need to create the lock directory + install -d ${D}${OPKGLIBDIR}/opkg +} + +do_install_ptest () { + sed -i -e '/@echo $^/d' ${D}${PTEST_PATH}/tests/Makefile + sed -i -e '/@PYTHONPATH=. $(PYTHON) $^/a\\t@if [ "$$?" != "0" ];then echo "FAIL:"$^;else echo "PASS:"$^;fi' ${D}${PTEST_PATH}/tests/Makefile +} + +WARN_QA:append = " internal-solver-deprecation" +QARECIPETEST[internal-solver-deprecation] = "qa_check_solver_deprecation" +def qa_check_solver_deprecation (pn, d, messages): + pkgconfig = (d.getVar("PACKAGECONFIG") or "").split() + + if "libsolv" not in pkgconfig: + oe.qa.handle_error("internal-solver-deprecation", "The opkg internal solver will be deprecated in future opkg releases. Consider enabling \"libsolv\" in PACKAGECONFIG.", d) + + +RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config libarchive" +RDEPENDS:${PN}:class-native = "" +RDEPENDS:${PN}:class-nativesdk = "" +RDEPENDS:${PN}-ptest += "make binutils python3-core python3-compression bash python3-crypt python3-io" +RREPLACES:${PN} = "opkg-nogpg opkg-collateral" +RCONFLICTS:${PN} = "opkg-collateral" +RPROVIDES:${PN} = "opkg-collateral" + +FILES:libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/" + +BBCLASSEXTEND = "native nativesdk" + +CONFFILES:${PN} = "${sysconfdir}/opkg/opkg.conf" |