summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@uclibc-ng.org>2015-12-03 13:52:07 +0100
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2015-12-03 20:38:12 +0100
commit9d06ffe9c62e8ee3af28997e28c7c95b09aa78df (patch)
tree765af972f600accf2b04686f23e972ce1864c84b
parentb0e2112c460b01d4f8954ec101807f4398a6444e (diff)
add new PKG_KDEPENDS feature to depend on kernel modules required to run a package
-rw-r--r--adk/tools/pkgmaker.c17
-rw-r--r--docs/package-reference.txt4
2 files changed, 20 insertions, 1 deletions
diff --git a/adk/tools/pkgmaker.c b/adk/tools/pkgmaker.c
index be3a1a6e8..fff2c4fba 100644
--- a/adk/tools/pkgmaker.c
+++ b/adk/tools/pkgmaker.c
@@ -327,7 +327,7 @@ int main() {
char dir[MAXPATH];
char variable[2*MAXVAR];
char *key, *value, *token, *cftoken, *sp, *hkey, *val, *pkg_fd;
- char *pkg_name, *pkg_depends, *pkg_needs, *pkg_depends_system, *pkg_depends_libc, *pkg_section, *pkg_descr, *pkg_url;
+ char *pkg_name, *pkg_depends, *pkg_kdepends, *pkg_needs, *pkg_depends_system, *pkg_depends_libc, *pkg_section, *pkg_descr, *pkg_url;
char *pkg_subpkgs, *pkg_cfline, *pkg_dflt;
char *pkgname, *sysname, *pkg_debug, *pkg_bb;
char *pkg_libc_depends, *pkg_host_depends, *pkg_system_depends, *pkg_arch_depends, *pkg_flavours, *pkg_flavours_string, *pkg_choices, *pseudo_name;
@@ -342,6 +342,7 @@ int main() {
pkg_section = NULL;
pkg_url = NULL;
pkg_depends = NULL;
+ pkg_kdepends = NULL;
pkg_needs = NULL;
pkg_depends_system = NULL;
pkg_depends_libc = NULL;
@@ -564,6 +565,8 @@ int main() {
continue;
if ((parse_var(buf, "PKG_DEPENDS", pkg_depends, &pkg_depends)) == 0)
continue;
+ if ((parse_var(buf, "PKG_KDEPENDS", pkg_kdepends, &pkg_kdepends)) == 0)
+ continue;
if ((parse_var(buf, "PKG_NEEDS", pkg_needs, &pkg_needs)) == 0)
continue;
if ((parse_var_with_system(buf, "PKG_DEPENDS_", pkg_depends_system, &pkg_depends_system, &sysname, 12)) == 0)
@@ -908,6 +911,16 @@ int main() {
free(pkg_depends);
pkg_depends = NULL;
}
+ /* create kernel package dependency information */
+ if (pkg_kdepends != NULL) {
+ token = strtok(pkg_kdepends, " ");
+ while (token != NULL) {
+ fprintf(cfg, "\tselect ADK_KERNEL_%s m\n", toupperstr(token));
+ token = strtok(NULL, " ");
+ }
+ free(pkg_kdepends);
+ pkg_kdepends = NULL;
+ }
/* create system specific package dependency information */
if (pkg_depends_system != NULL) {
token = strtok(pkg_depends_system, " ");
@@ -1177,6 +1190,7 @@ int main() {
free(pkg_section);
free(pkg_url);
free(pkg_depends);
+ free(pkg_kdepends);
free(pkg_flavours);
free(pkg_flavours_string);
free(pkg_choices);
@@ -1194,6 +1208,7 @@ int main() {
pkg_section = NULL;
pkg_url = NULL;
pkg_depends = NULL;
+ pkg_kdepends = NULL;
pkg_flavours = NULL;
pkg_flavours_string = NULL;
pkg_choices = NULL;
diff --git a/docs/package-reference.txt b/docs/package-reference.txt
index 4d465d320..54e0a1712 100644
--- a/docs/package-reference.txt
+++ b/docs/package-reference.txt
@@ -48,6 +48,10 @@ information is:
which might be different to the package directory name. See what is used
in PKG_template, to find out the package name used here.
+* +PKG_KDEPENDS+ optional, lists the kernel module dependencies that are required to
+ run the software package on the target. It contains a list of kernel module names
+ in lower case as used in +target/linux/config+. (use minus instead of underscores)
+
* +PKG_NEEDS+ optional, lists the features that are required to build or
run the software package on the target. It contains a list of keywords.
Supported are +threads+ +rt+ +c+++