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

Reply via email to