summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/opkg
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/opkg')
-rw-r--r--meta/recipes-devtools/opkg/opkg-collateral.bb24
-rw-r--r--meta/recipes-devtools/opkg/opkg-collateral/dest1
-rw-r--r--meta/recipes-devtools/opkg/opkg-collateral/opkg.conf.comments26
-rw-r--r--meta/recipes-devtools/opkg/opkg-collateral/src0
-rw-r--r--meta/recipes-devtools/opkg/opkg-config-base_1.0.bb30
-rw-r--r--meta/recipes-devtools/opkg/opkg.inc76
-rw-r--r--meta/recipes-devtools/opkg/opkg/add-exclude.patch131
-rw-r--r--meta/recipes-devtools/opkg/opkg/libopkg-opkg_remove.c-avoid-remove-pkg-repeatly-with.patch38
-rw-r--r--meta/recipes-devtools/opkg/opkg/no-install-recommends.patch91
-rw-r--r--meta/recipes-devtools/opkg/opkg/opkg-configure.service17
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.2.2.bb13
11 files changed, 447 insertions, 0 deletions
diff --git a/meta/recipes-devtools/opkg/opkg-collateral.bb b/meta/recipes-devtools/opkg/opkg-collateral.bb
new file mode 100644
index 0000000000..b121827ac7
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg-collateral.bb
@@ -0,0 +1,24 @@
1SUMMARY = "Constructs the main configuration file for opkg"
2SECTION = "base"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
5PR = "r2"
6
7SRC_URI = "file://opkg.conf.comments \
8 file://dest \
9 file://src "
10
11OPKGLIBDIR = "${localstatedir}/lib"
12do_compile () {
13 cat ${WORKDIR}/opkg.conf.comments >${WORKDIR}/opkg.conf
14 cat ${WORKDIR}/src >>${WORKDIR}/opkg.conf
15 cat ${WORKDIR}/dest >>${WORKDIR}/opkg.conf
16 echo "lists_dir ext ${OPKGLIBDIR}/opkg" >>${WORKDIR}/opkg.conf
17}
18
19do_install () {
20 install -d ${D}${sysconfdir}/opkg
21 install -m 0644 ${WORKDIR}/opkg.conf ${D}${sysconfdir}/opkg/opkg.conf
22}
23
24CONFFILES_${PN} = "${sysconfdir}/opkg/opkg.conf"
diff --git a/meta/recipes-devtools/opkg/opkg-collateral/dest b/meta/recipes-devtools/opkg/opkg-collateral/dest
new file mode 100644
index 0000000000..088ca403da
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg-collateral/dest
@@ -0,0 +1 @@
dest root /
diff --git a/meta/recipes-devtools/opkg/opkg-collateral/opkg.conf.comments b/meta/recipes-devtools/opkg/opkg-collateral/opkg.conf.comments
new file mode 100644
index 0000000000..e1fdada9b5
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg-collateral/opkg.conf.comments
@@ -0,0 +1,26 @@
1# Must have one or more source entries of the form:
2#
3# src <src-name> <source-url>
4#
5# and one or more destination entries of the form:
6#
7# dest <dest-name> <target-path>
8#
9# where <src-name> and <dest-names> are identifiers that
10# should match [a-zA-Z0-9._-]+, <source-url> should be a
11# URL that points to a directory containing a Familiar
12# Packages file, and <target-path> should be a directory
13# that exists on the target system.
14
15# Proxy Support
16#option http_proxy http://proxy.tld:3128
17#option ftp_proxy http://proxy.tld:3128
18#option proxy_username <username>
19#option proxy_password <password>
20
21# Enable GPGME signature
22# option check_signature 1
23
24# Offline mode (for use in constructing flash images offline)
25#option offline_root target
26
diff --git a/meta/recipes-devtools/opkg/opkg-collateral/src b/meta/recipes-devtools/opkg/opkg-collateral/src
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg-collateral/src
diff --git a/meta/recipes-devtools/opkg/opkg-config-base_1.0.bb b/meta/recipes-devtools/opkg/opkg-config-base_1.0.bb
new file mode 100644
index 0000000000..acbe1296bf
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg-config-base_1.0.bb
@@ -0,0 +1,30 @@
1SUMMARY = "Base configuration files for opkg"
2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
4PACKAGE_ARCH = "${MACHINE_ARCH}"
5PR = "r1"
6
7do_compile() {
8 mkdir -p ${S}/${sysconfdir}/opkg/
9
10 archconf=${S}/${sysconfdir}/opkg/arch.conf
11
12 rm -f $archconf
13 ipkgarchs="${ALL_MULTILIB_PACKAGE_ARCHS}"
14 priority=1
15 for arch in $ipkgarchs; do
16 echo "arch $arch $priority" >> $archconf
17 priority=$(expr $priority + 5)
18 done
19}
20
21
22do_install () {
23 install -d ${D}${sysconfdir}/opkg
24 install -m 0644 ${S}/${sysconfdir}/opkg/* ${D}${sysconfdir}/opkg/
25}
26
27FILES_${PN} = "${sysconfdir}/opkg/ "
28
29CONFFILES_${PN} += "${sysconfdir}/opkg/arch.conf"
30
diff --git a/meta/recipes-devtools/opkg/opkg.inc b/meta/recipes-devtools/opkg/opkg.inc
new file mode 100644
index 0000000000..56c54b6ab7
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg.inc
@@ -0,0 +1,76 @@
1SUMMARY = "Open Package Manager"
2SUMMARY_libopkg = "Open Package Manager library"
3SECTION = "base"
4HOMEPAGE = "http://code.google.com/p/opkg/"
5BUGTRACKER = "http://code.google.com/p/opkg/issues/list"
6LICENSE = "GPLv2+"
7LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
8 file://src/opkg-cl.c;beginline=1;endline=20;md5=321f658c3f6b6c832e25c8850b5dffba"
9
10PE = "1"
11
12# Werror gives all kinds bounds issuses with gcc 4.3.3
13do_configure_prepend() {
14 sed -i -e s:-Werror::g ${S}/libopkg/Makefile.am
15}
16
17inherit autotools pkgconfig systemd
18
19python () {
20 if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
21 pn = d.getVar('PN', True)
22 d.setVar('SYSTEMD_SERVICE_%s' % (pn), 'opkg-configure.service')
23}
24
25target_localstatedir := "${localstatedir}"
26OPKGLIBDIR = "${target_localstatedir}/lib"
27
28PACKAGECONFIG ??= ""
29
30PACKAGECONFIG[gpg] = "--enable-gpg,--disable-gpg,gpgme libgpg-error,gnupg"
31PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
32PACKAGECONFIG[ssl-curl] = "--enable-ssl-curl,--disable-ssl-curl,curl openssl"
33PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
34PACKAGECONFIG[sha256] = "--enable-sha256,--disable-sha256"
35PACKAGECONFIG[pathfinder] = "--enable-pathfinder,--disable-pathfinder,pathfinder"
36
37EXTRA_OECONF = "\
38 --with-opkglibdir=${OPKGLIBDIR} \
39"
40
41RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-config-base run-postinsts"
42RDEPENDS_${PN}_class-native = ""
43RDEPENDS_${PN}_class-nativesdk = ""
44RREPLACES_${PN} = "opkg-nogpg"
45
46PACKAGES =+ "libopkg-dev libopkg-staticdev libopkg"
47
48FILES_libopkg-dev = "${libdir}/*.la ${libdir}/*.so ${includedir}/libopkg"
49FILES_libopkg-staticdev = "${libdir}/*.a"
50FILES_libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/"
51FILES_${PN} += "${systemd_unitdir}/system/"
52
53do_install_append() {
54 # We need to create the lock directory
55 install -d ${D}${OPKGLIBDIR}/opkg
56
57 if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','false','true',d)};then
58 install -d ${D}${systemd_unitdir}/system
59 install -m 0644 ${WORKDIR}/opkg-configure.service ${D}${systemd_unitdir}/system/
60 sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
61 -e 's,@SYSCONFDIR@,${sysconfdir},g' \
62 -e 's,@BINDIR@,${bindir},g' \
63 -e 's,@SYSTEMD_UNITDIR@,${systemd_unitdir},g' \
64 ${D}${systemd_unitdir}/system/opkg-configure.service
65 fi
66
67 # The installed binary is 'opkg-cl' but people and scripts often expect
68 # it to just be 'opkg'
69 ln -sf opkg-cl ${D}${bindir}/opkg
70}
71
72do_install_append() {
73 rm ${D}${bindir}/update-alternatives
74}
75
76BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/opkg/opkg/add-exclude.patch b/meta/recipes-devtools/opkg/opkg/add-exclude.patch
new file mode 100644
index 0000000000..c684534efb
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/add-exclude.patch
@@ -0,0 +1,131 @@
1From 5d707bbfcafd88b8b5b5821972c8c958fc3b2039 Mon Sep 17 00:00:00 2001
2From: Paul Barker <paul@paulbarker.me.uk>
3Date: Fri, 28 Mar 2014 15:20:22 +0000
4Subject: [PATCH 2/2] opkg-0.2.x: add-exclude
5
6Add a way to exclude specific packages from the install
7
8When an excluded package is required by another package an error
9will be generated. If the excluded package is only recommended,
10no error will be generated.
11
12The lifespan of the exclude_list covers the execution of the process,
13so there is no need to free the data.
14
15v2: Use xmalloc instead of malloc and xrealloc instead of realloc. In opkg,
16these functions are guaranteed not to return NULL.
17
18Upstream-Status: Pending
19
20Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
21Signed-off-by: Jonathan Liu <net147@gmail.com>
22Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
23---
24 libopkg/opkg_conf.c | 1 +
25 libopkg/opkg_conf.h | 2 ++
26 libopkg/pkg_depends.c | 16 ++++++++++++++++
27 src/opkg-cl.c | 15 +++++++++++++++
28 4 files changed, 34 insertions(+)
29
30diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c
31index 1e65bad..9c4c854 100644
32--- a/libopkg/opkg_conf.c
33+++ b/libopkg/opkg_conf.c
34@@ -442,6 +442,7 @@ opkg_conf_init(void)
35 pkg_dest_list_init(&conf->pkg_dest_list);
36 pkg_dest_list_init(&conf->tmp_dest_list);
37 nv_pair_list_init(&conf->arch_list);
38+ conf->exclude_list = NULL;
39
40 return 0;
41 }
42diff --git a/libopkg/opkg_conf.h b/libopkg/opkg_conf.h
43index 6045a58..ad58849 100644
44--- a/libopkg/opkg_conf.h
45+++ b/libopkg/opkg_conf.h
46@@ -51,6 +51,8 @@ struct opkg_conf
47 pkg_dest_list_t pkg_dest_list;
48 pkg_dest_list_t tmp_dest_list;
49 nv_pair_list_t arch_list;
50+ size_t exclude_count;
51+ char ** exclude_list;
52
53 int restrict_to_default_dest;
54 pkg_dest_t *default_dest;
55diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c
56index d2d279e..b572e18 100644
57--- a/libopkg/pkg_depends.c
58+++ b/libopkg/pkg_depends.c
59@@ -212,6 +212,22 @@ pkg_hash_fetch_unsatisfied_dependencies(pkg_t * pkg, pkg_vec_t *unsatisfied,
60 continue;
61 }
62
63+ /* Check for excluded packages */
64+ if (satisfying_pkg != NULL && conf->exclude_list) {
65+ int i, exclude = 0;
66+ for (i = 0; i < conf->exclude_count; i++) {
67+ if (!strcmp(satisfying_pkg->name, conf->exclude_list[i])) {
68+ opkg_msg(NOTICE, "%s: exclude required package %s"
69+ "at users request\n",
70+ pkg->name, satisfying_pkg->name);
71+ exclude = 1;
72+ break;
73+ }
74+ }
75+ if (exclude)
76+ continue;
77+ }
78+
79 opkg_msg(DEBUG, "satisfying_pkg=%p\n", satisfying_pkg);
80 if (satisfying_pkg != NULL) {
81 satisfier_entry_pkg = satisfying_pkg;
82diff --git a/src/opkg-cl.c b/src/opkg-cl.c
83index 0315d41..67366b9 100644
84--- a/src/opkg-cl.c
85+++ b/src/opkg-cl.c
86@@ -45,6 +45,7 @@ enum {
87 ARGS_OPT_PREFER_ARCH_TO_VERSION,
88 ARGS_OPT_ADD_ARCH,
89 ARGS_OPT_ADD_DEST,
90+ ARGS_OPT_ADD_EXCLUDE,
91 ARGS_OPT_NOACTION,
92 ARGS_OPT_DOWNLOAD_ONLY,
93 ARGS_OPT_NODEPS,
94@@ -95,6 +96,7 @@ static struct option long_options[] = {
95 {"offline-root", 1, 0, 'o'},
96 {"add-arch", 1, 0, ARGS_OPT_ADD_ARCH},
97 {"add-dest", 1, 0, ARGS_OPT_ADD_DEST},
98+ {"add-exclude", 1, 0, ARGS_OPT_ADD_EXCLUDE},
99 {"test", 0, 0, ARGS_OPT_NOACTION},
100 {"tmp-dir", 1, 0, 't'},
101 {"tmp_dir", 1, 0, 't'},
102@@ -198,6 +200,18 @@ args_parse(int argc, char *argv[])
103 }
104 free(tuple);
105 break;
106+ case ARGS_OPT_ADD_EXCLUDE:
107+ tuple = xstrdup(optarg);
108+ if (!conf->exclude_list) {
109+ conf->exclude_count = 1;
110+ conf->exclude_list = xmalloc(sizeof(char *) * conf->exclude_count);
111+ conf->exclude_list[conf->exclude_count - 1] = tuple;
112+ } else {
113+ conf->exclude_count++;
114+ conf->exclude_list = xrealloc(conf->exclude_list, sizeof(char *) * conf->exclude_count);
115+ conf->exclude_list[conf->exclude_count - 1] = tuple;
116+ }
117+ break;
118 case ARGS_OPT_NOACTION:
119 conf->noaction = 1;
120 break;
121@@ -282,6 +296,7 @@ usage()
122 printf("\t--offline-root <dir> offline installation of packages.\n");
123 printf("\t--add-arch <arch>:<prio> Register architecture with given priority\n");
124 printf("\t--add-dest <name>:<path> Register destination with given path\n");
125+ printf("\t--add-exclude <name> Register package to be excluded from install\n");
126 printf("\t--prefer-arch-to-version Use the architecture priority package rather\n");
127 printf("\t than the higher version one if more\n");
128 printf("\t than one candidate is found.\n");
129--
1302.0.4
131
diff --git a/meta/recipes-devtools/opkg/opkg/libopkg-opkg_remove.c-avoid-remove-pkg-repeatly-with.patch b/meta/recipes-devtools/opkg/opkg/libopkg-opkg_remove.c-avoid-remove-pkg-repeatly-with.patch
new file mode 100644
index 0000000000..d618206a62
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/libopkg-opkg_remove.c-avoid-remove-pkg-repeatly-with.patch
@@ -0,0 +1,38 @@
1From 41425d67d3589b1912416a17f740d6407c7834f2 Mon Sep 17 00:00:00 2001
2From: Hongxu Jia <hongxu.jia@windriver.com>
3Date: Wed, 8 Oct 2014 19:53:13 +0800
4Subject: [PATCH] libopkg/opkg_remove.c: avoid remove pkg repeatly with option
5 --force-removal-of-dependent-packages
6
7While remove pkg with '--force-removal-of-dependent-packages',
8pkg may be added to pkgs remove list multiple times, add status
9check to make sure pkg only be removed once.
10
11Upstream-Status: Backport
12Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
13
14---
15 libopkg/opkg_remove.c | 8 ++++++++
16 1 file changed, 8 insertions(+)
17
18diff --git a/libopkg/opkg_remove.c b/libopkg/opkg_remove.c
19index 34f9154..a225e41 100644
20--- a/libopkg/opkg_remove.c
21+++ b/libopkg/opkg_remove.c
22@@ -250,6 +250,14 @@ opkg_remove_pkg(pkg_t *pkg, int from_upgrade)
23 if ((parent_pkg = pkg->parent) == NULL)
24 return 0;
25
26+ /* While remove pkg with '--force-removal-of-dependent-packages',
27+ pkg may be added to remove list multiple times, add status
28+ check to make sure pkg only be removed once. */
29+ if (conf->force_removal_of_dependent_packages &&
30+ pkg->state_flag & SF_FILELIST_CHANGED &&
31+ pkg->state_status == SS_NOT_INSTALLED)
32+ return 0;
33+
34 /* only attempt to remove dependent installed packages if
35 * force_depends is not specified or the package is being
36 * replaced.
37--
381.9.1
diff --git a/meta/recipes-devtools/opkg/opkg/no-install-recommends.patch b/meta/recipes-devtools/opkg/opkg/no-install-recommends.patch
new file mode 100644
index 0000000000..bcca56c6ce
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/no-install-recommends.patch
@@ -0,0 +1,91 @@
1From 610207c9bc82f20c77d6f234465e36857c997ea0 Mon Sep 17 00:00:00 2001
2From: Paul Barker <paul@paulbarker.me.uk>
3Date: Fri, 28 Mar 2014 15:19:08 +0000
4Subject: [PATCH 1/2] opkg-0.2.x: no-install-recommends
5
6Add the ability to not install ANY recommended packages.
7
8Upstream-Status: Pending
9
10Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
11---
12 libopkg/opkg_conf.h | 1 +
13 libopkg/pkg_depends.c | 3 ++-
14 src/opkg-cl.c | 7 +++++++
15 3 files changed, 10 insertions(+), 1 deletion(-)
16
17diff --git a/libopkg/opkg_conf.h b/libopkg/opkg_conf.h
18index 38fa375..6045a58 100644
19--- a/libopkg/opkg_conf.h
20+++ b/libopkg/opkg_conf.h
21@@ -82,6 +82,7 @@ struct opkg_conf
22 int prefer_arch_to_version;
23 int check_signature;
24 int nodeps; /* do not follow dependencies */
25+ int noinstall_recommends;
26 char *offline_root;
27 char *overlay_root;
28 int query_all;
29diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c
30index a4df7de..d2d279e 100644
31--- a/libopkg/pkg_depends.c
32+++ b/libopkg/pkg_depends.c
33@@ -19,6 +19,7 @@
34 #include <ctype.h>
35
36 #include "pkg.h"
37+#include "opkg_conf.h"
38 #include "opkg_utils.h"
39 #include "pkg_hash.h"
40 #include "opkg_message.h"
41@@ -204,7 +205,7 @@ pkg_hash_fetch_unsatisfied_dependencies(pkg_t * pkg, pkg_vec_t *unsatisfied,
42 /* user request overrides package recommendation */
43 if (satisfying_pkg != NULL
44 && (compound_depend->type == RECOMMEND || compound_depend->type == SUGGEST)
45- && (satisfying_pkg->state_want == SW_DEINSTALL || satisfying_pkg->state_want == SW_PURGE)) {
46+ && (satisfying_pkg->state_want == SW_DEINSTALL || satisfying_pkg->state_want == SW_PURGE || conf->noinstall_recommends)) {
47 opkg_msg(NOTICE, "%s: ignoring recommendation for "
48 "%s at user request\n",
49 pkg->name, satisfying_pkg->name);
50diff --git a/src/opkg-cl.c b/src/opkg-cl.c
51index b711511..0315d41 100644
52--- a/src/opkg-cl.c
53+++ b/src/opkg-cl.c
54@@ -50,6 +50,7 @@ enum {
55 ARGS_OPT_NODEPS,
56 ARGS_OPT_AUTOREMOVE,
57 ARGS_OPT_CACHE,
58+ ARGS_OPT_NOINSTALL_RECOMMENDS,
59 };
60
61 static struct option long_options[] = {
62@@ -89,6 +90,7 @@ static struct option long_options[] = {
63 {"noaction", 0, 0, ARGS_OPT_NOACTION},
64 {"download-only", 0, 0, ARGS_OPT_DOWNLOAD_ONLY},
65 {"nodeps", 0, 0, ARGS_OPT_NODEPS},
66+ {"no-install-recommends", 0, 0, ARGS_OPT_NOINSTALL_RECOMMENDS},
67 {"offline", 1, 0, 'o'},
68 {"offline-root", 1, 0, 'o'},
69 {"add-arch", 1, 0, ARGS_OPT_ADD_ARCH},
70@@ -199,6 +201,9 @@ args_parse(int argc, char *argv[])
71 case ARGS_OPT_NOACTION:
72 conf->noaction = 1;
73 break;
74+ case ARGS_OPT_NOINSTALL_RECOMMENDS:
75+ conf->noinstall_recommends = 1;
76+ break;
77 case ARGS_OPT_DOWNLOAD_ONLY:
78 conf->download_only = 1;
79 break;
80@@ -293,6 +298,8 @@ usage()
81 printf("\t--noaction No action -- test only\n");
82 printf("\t--download-only No action -- download only\n");
83 printf("\t--nodeps Do not follow dependencies\n");
84+ printf("\t--no-install-recommends\n");
85+ printf("\t Do not install any recommended packages\n");
86 printf("\t--force-removal-of-dependent-packages\n");
87 printf("\t Remove package and all dependencies\n");
88 printf("\t--autoremove Remove packages that were installed\n");
89--
901.9.1
91
diff --git a/meta/recipes-devtools/opkg/opkg/opkg-configure.service b/meta/recipes-devtools/opkg/opkg/opkg-configure.service
new file mode 100644
index 0000000000..b18295b45e
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg/opkg-configure.service
@@ -0,0 +1,17 @@
1[Unit]
2Description=Opkg first boot configure
3DefaultDependencies=no
4After=systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount
5Before=sysinit.target
6
7[Service]
8Type=oneshot
9EnvironmentFile=-@SYSCONFDIR@/default/postinst
10ExecStart=-@BASE_BINDIR@/sh -c " if [ $POSTINST_LOGGING = '1' ]; then @BINDIR@/opkg-cl configure > $LOGFILE 2>&1; else @BINDIR@/opkg-cl configure; fi"
11ExecStartPost=@BASE_BINDIR@/systemctl disable opkg-configure.service
12StandardOutput=syslog
13RemainAfterExit=No
14
15[Install]
16WantedBy=basic.target
17WantedBy=sysinit.target
diff --git a/meta/recipes-devtools/opkg/opkg_0.2.2.bb b/meta/recipes-devtools/opkg/opkg_0.2.2.bb
new file mode 100644
index 0000000000..867ff7a8ee
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg_0.2.2.bb
@@ -0,0 +1,13 @@
1require opkg.inc
2
3SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
4 file://no-install-recommends.patch \
5 file://add-exclude.patch \
6 file://opkg-configure.service \
7 file://libopkg-opkg_remove.c-avoid-remove-pkg-repeatly-with.patch \
8"
9
10S = "${WORKDIR}/${BPN}-${PV}"
11
12SRC_URI[md5sum] = "b3ecef90d67d2aed2a14c2116a027482"
13SRC_URI[sha256sum] = "aa554ce7538544aac4f69e8274a0f9b8b433b8c3b1d00704bd393f713303a12b"