RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 31-Mar-2010 14:39:31 Branch: HEAD Handle: 2010033112393000 Modified files: rpm CHANGES rpm/rpmio macro.c Log: - nix: stub-in the '%{nix foo ...:}' macro expansion embedding. Summary: Revision Changes Path 1.3294 +1 -0 rpm/CHANGES 2.245 +57 -3 rpm/rpmio/macro.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3293 -r1.3294 CHANGES --- rpm/CHANGES 31 Mar 2010 12:36:02 -0000 1.3293 +++ rpm/CHANGES 31 Mar 2010 12:39:30 -0000 1.3294 @@ -1,5 +1,6 @@ 5.2b1 -> 5.3a1 + - jbj: nix: stub-in the '%{nix foo ...:}' macro expansion embedding. - jbj: nix: handle both "nix-foo" and "nix foo" invocations in rpmnix ctor. - jbj: nix: refactor popt tables into -lrpmio. - jbj: nix: avoid deadlock, live with a leak, for rpmnix object. todo++. @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/macro.c ============================================================================ $ cvs diff -u -r2.244 -r2.245 macro.c --- rpm/rpmio/macro.c 29 Mar 2010 22:05:21 -0000 2.244 +++ rpm/rpmio/macro.c 31 Mar 2010 12:39:30 -0000 2.245 @@ -1995,11 +1995,64 @@ if (STREQ("nix", f, fn)) { char ** av = NULL; char * script = parseEmbedded(s, (size_t)(se-s), &av); - rpmnix nix = rpmnixNew(av, RPMNIX_FLAGS_NONE, _rpmnixEchoOptions); + int (*_vec) (rpmnix nix) = rpmnixEcho; + uint32_t _flags = RPMNIX_FLAGS_NONE; + rpmnix nix; const char * result = NULL; + int xx; + + if (av == NULL || av[0] == NULL || av[1] == NULL + || !strcmp(av[0], "echo")) + { + _vec = rpmnixEcho; + } else + if (!strcmp(av[1], "build")) { + _vec = rpmnixBuild; + _flags = RPMNIX_FLAGS_NOOUTLINK; + } else + if (!strcmp(av[1], "channel")) { + _vec = rpmnixChannel; + } else + if (!strcmp(av[1], "collect-garbage")) { + _vec = rpmnixCollectGarbage; + } else + if (!strcmp(av[1], "copy-closure")) { + _vec = rpmnixCopyClosure; + } else + if (!strcmp(av[1], "env")) { + _vec = rpmnixEcho; /* XXX NOTYET */ + } else + if (!strcmp(av[1], "hash")) { + _vec = rpmnixEcho; /* XXX NOTYET */ + } else + if (!strcmp(av[1], "install-package")) { + _vec = rpmnixInstallPackage; + _flags = RPMNIX_FLAGS_INTERACTIVE; + } else + if (!strcmp(av[1], "instantiate")) { + _vec = rpmnixEcho; /* XXX NOTYET */ + } else + if (!strcmp(av[1], "prefetch-url")) { + _vec = rpmnixPrefetchURL; + } else + if (!strcmp(av[1], "push")) { + _vec = rpmnixPush; + } else + if (!strcmp(av[1], "pull")) { + _vec = rpmnixPull; + } else + if (!strcmp(av[1], "store")) { + _vec = rpmnixEcho; /* XXX NOTYET */ + } else + if (!strcmp(av[1], "worker")) { + _vec = rpmnixEcho; /* XXX NOTYET */ + } else +assert(0); + + nix = rpmnixNew(av, _flags, NULL); #ifdef NOTYET - if (rpmnixRun(js, script, &result) != RPMRC_OK) + if (rpmnixRun(nix, script, &result) != RPMRC_OK) rc = 1; else { if (result == NULL) result = "FIXME"; @@ -2013,9 +2066,10 @@ } } #else - (void) rpmnixEcho(nix); + xx = (*_vec) (nix); result = xstrdup(""); #endif /* NOTYET */ + nix = rpmnixFree(nix); av = _free(av); script = _free(script); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org