From 94c9652cc3f4d33604b09155638b327cdbe9676e Mon Sep 17 00:00:00 2001 From: Tobias Breckle Date: Tue, 17 May 2011 14:52:33 +0200 Subject: added functionality for string flavours and flavour dependencies Signed-off-by: Tobias Breckle --- tools/adk/pkgmaker.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 2 deletions(-) (limited to 'tools') diff --git a/tools/adk/pkgmaker.c b/tools/adk/pkgmaker.c index 7c04b6b74..7b79bfb72 100644 --- a/tools/adk/pkgmaker.c +++ b/tools/adk/pkgmaker.c @@ -271,7 +271,7 @@ int main() { char *pkg_name, *pkg_depends, *pkg_section, *pkg_descr, *pkg_url; char *pkg_cxx, *pkg_subpkgs, *pkg_cfline, *pkg_dflt, *pkg_multi; char *pkg_need_cxx, *pkg_need_java, *pkgname; - char *pkg_host_depends, *pkg_arch_depends, *pkg_flavours, *pkg_choices, *pseudo_name; + char *pkg_host_depends, *pkg_arch_depends, *pkg_flavours, *pkg_flavours_string, *pkg_choices, *pseudo_name; char *packages, *pkg_name_u, *pkgs; char *saveptr, *p_ptr, *s_ptr; int result; @@ -283,6 +283,7 @@ int main() { pkg_url = NULL; pkg_depends = NULL; pkg_flavours = NULL; + pkg_flavours_string = NULL; pkg_choices = NULL; pkg_subpkgs = NULL; pkg_arch_depends = NULL; @@ -412,12 +413,18 @@ int main() { continue; if ((parse_var(buf, "PKG_DEPENDS", pkg_depends, &pkg_depends)) == 0) continue; + if ((parse_var_with_pkg(buf, "PKG_FLAVOURS_STRING_", pkg_flavours_string, &pkg_flavours_string, &pkgname, 20)) == 0) + continue; if ((parse_var_with_pkg(buf, "PKG_FLAVOURS_", pkg_flavours, &pkg_flavours, &pkgname, 13)) == 0) continue; if ((parse_var_hash(buf, "PKGFD_", pkgmap)) == 0) continue; + if ((parse_var_hash(buf, "PKGFX_", pkgmap)) == 0) + continue; if ((parse_var_hash(buf, "PKGFS_", pkgmap)) == 0) continue; + if ((parse_var_hash(buf, "PKGFC_", pkgmap)) == 0) + continue; if ((parse_var_with_pkg(buf, "PKG_CHOICES_", pkg_choices, &pkg_choices, &pkgname, 12)) == 0) continue; if ((parse_var_hash(buf, "PKGCD_", pkgmap)) == 0) @@ -452,6 +459,8 @@ int main() { fprintf(stderr, "Package subpackages are %s\n", pkg_subpkgs); if (pkg_flavours != NULL && pkgname != NULL) fprintf(stderr, "Package flavours for %s are %s\n", pkgname, pkg_flavours); + if (pkg_flavours_string != NULL && pkgname != NULL) + fprintf(stderr, "Package string flavours for %s are %s\n", pkgname, pkg_flavours_string); if (pkg_choices != NULL && pkgname != NULL) fprintf(stderr, "Package choices for %s are %s\n", pkgname, pkg_choices); if (pkg_url != NULL) @@ -695,6 +704,30 @@ int main() { token = strtok(pkg_flavours, " "); while (token != NULL) { fprintf(cfg, "\nconfig ADK_PACKAGE_%s_%s\n", pkgname, toupperstr(token)); + + // process default value + strncat(hkey, "PKGFX_", 6); + strncat(hkey, token, strlen(token)); + memset(hvalue, 0 , MAXVALUE); + strmap_get(pkgmap, hkey, hvalue, sizeof(hvalue)); + memset(hkey, 0 , MAXVAR); + pkg_fd = strdup(hvalue); + if (strlen(pkg_fd) > 0) + fprintf(cfg, "\tdefault %s\n", pkg_fd); + else + fprintf(cfg, "\tdefault n\n"); + + + // process flavour cfline + strncat(hkey, "PKGFC_", 6); + strncat(hkey, token, strlen(token)); + memset(hvalue, 0 , MAXVALUE); + strmap_get(pkgmap, hkey, hvalue, sizeof(hvalue)); + memset(hkey, 0 , MAXVAR); + pkg_fd = strdup(hvalue); + if (strlen(pkg_fd) > 0) + fprintf(cfg, "\t%s\n", pkg_fd); + fprintf(cfg, "\tboolean "); strncat(hkey, "PKGFD_", 6); strncat(hkey, token, strlen(token)); @@ -704,7 +737,6 @@ int main() { pkg_fd = strdup(hvalue); fprintf(cfg, "\"%s\"\n", pkg_fd); - fprintf(cfg, "\tdefault n\n"); fprintf(cfg, "\tdepends on ADK_PACKAGE_%s\n", pkgname); strncat(hkey, "PKGFS_", 6); strncat(hkey, token, strlen(token)); @@ -729,6 +761,65 @@ int main() { pkg_flavours = NULL; } + /* package flavours string */ + if (pkg_flavours_string != NULL) { + token = strtok(pkg_flavours_string, " "); + while (token != NULL) { + fprintf(cfg, "\nconfig ADK_PACKAGE_%s_%s\n", pkgname, toupperstr(token)); + + // process default value + strncat(hkey, "PKGFX_", 6); + strncat(hkey, token, strlen(token)); + memset(hvalue, 0 , MAXVALUE); + strmap_get(pkgmap, hkey, hvalue, sizeof(hvalue)); + memset(hkey, 0 , MAXVAR); + pkg_fd = strdup(hvalue); + if (strlen(pkg_fd) > 0) + fprintf(cfg, "\tdefault \"%s\"\n", pkg_fd); + + // process flavour cfline + strncat(hkey, "PKGFC_", 6); + strncat(hkey, token, strlen(token)); + memset(hvalue, 0 , MAXVALUE); + strmap_get(pkgmap, hkey, hvalue, sizeof(hvalue)); + memset(hkey, 0 , MAXVAR); + pkg_fd = strdup(hvalue); + if (strlen(pkg_fd) > 0) + fprintf(cfg, "\t%s\n", pkg_fd); + + fprintf(cfg, "\tstring "); + strncat(hkey, "PKGFD_", 6); + strncat(hkey, token, strlen(token)); + memset(hvalue, 0 , MAXVALUE); + strmap_get(pkgmap, hkey, hvalue, sizeof(hvalue)); + memset(hkey, 0 , MAXVAR); + pkg_fd = strdup(hvalue); + fprintf(cfg, "\"%s\"\n", pkg_fd); + + fprintf(cfg, "\tdepends on ADK_PACKAGE_%s\n", pkgname); + strncat(hkey, "PKGFS_", 6); + strncat(hkey, token, strlen(token)); + + result = strmap_get(pkgmap, hkey, hvalue, sizeof(hvalue)); + if (result == 1) { + val = strtok_r(hvalue, " ", &saveptr); + while (val != NULL) { + if (strncmp(val, "kmod", 4) == 0) + fprintf(cfg, "\tselect ADK_KPACKAGE_%s\n", toupperstr(val)); + else + fprintf(cfg, "\tselect ADK_PACKAGE_%s\n", toupperstr(val)); + val = strtok_r(NULL, " ", &saveptr); + } + } + memset(hkey, 0, MAXVAR); + fprintf(cfg, "\thelp\n"); + fprintf(cfg, "\t %s\n", pkg_fd); + token = strtok(NULL, " "); + } + free(pkg_flavours_string); + pkg_flavours_string = NULL; + } + /* package choices */ if (pkg_choices != NULL) { fprintf(cfg, "\nchoice\n"); @@ -785,6 +876,7 @@ int main() { free(pkg_url); free(pkg_depends); free(pkg_flavours); + free(pkg_flavours_string); free(pkg_choices); free(pkg_subpkgs); free(pkg_arch_depends); @@ -799,6 +891,7 @@ int main() { pkg_url = NULL; pkg_depends = NULL; pkg_flavours = NULL; + pkg_flavours_string = NULL; pkg_choices = NULL; pkg_subpkgs = NULL; pkg_arch_depends = NULL; -- cgit v1.2.3