summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/opkg/opkg
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/opkg/opkg')
-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
4 files changed, 277 insertions, 0 deletions
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