]> git.pld-linux.org Git - packages/rpm.git/commitdiff
- port rpmspec tool from rpm.org, usefull to see how spec will look like after parsing auto/th/rpm-5.4.13-4
authorJan Rękorajski <baggins@pld-linux.org>
Tue, 22 Oct 2013 19:08:12 +0000 (21:08 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Tue, 22 Oct 2013 19:08:12 +0000 (21:08 +0200)
- rel 4

rpm-rpmspec.patch [new file with mode: 0644]
rpm.spec

diff --git a/rpm-rpmspec.patch b/rpm-rpmspec.patch
new file mode 100644 (file)
index 0000000..e4d4252
--- /dev/null
@@ -0,0 +1,229 @@
+diff -urN rpm-5.4.13/build/parseSpec.c rpm-5.4.13-rpmspec/build/parseSpec.c
+--- rpm-5.4.13/build/parseSpec.c       2013-10-22 20:18:34.483039876 +0200
++++ rpm-5.4.13-rpmspec/build/parseSpec.c       2013-10-22 18:52:02.550664732 +0200
+@@ -474,6 +474,11 @@
+       spec->line[0] = '\0';
+     }
++    /* Collect parsed line */
++    if (spec->parsed == NULL)
++      spec->parsed = rpmiobNew(0);
++    spec->parsed = rpmiobAppend(spec->parsed, spec->line, 1);
++
+     /*@-compmempass@*/ /* FIX: spec->readStack->next should be dependent */
+     return 0;
+     /*@=compmempass@*/
+diff -urN rpm-5.4.13/build/rpmspec.h rpm-5.4.13-rpmspec/build/rpmspec.h
+--- rpm-5.4.13/build/rpmspec.h 2013-10-22 20:18:34.449706143 +0200
++++ rpm-5.4.13-rpmspec/build/rpmspec.h 2013-10-22 18:44:37.729692113 +0200
+@@ -193,6 +193,8 @@
+ /*@only@*/
+     rpmiob clean;             /*!< %clean scriptlet. */
++    rpmiob parsed;
++
+     size_t nfoo;
+ /*@only@*/ /*@relnull@*/
+     tagStore_t foo;
+diff -urN rpm-5.4.13/tools/Makefile.am rpm-5.4.13-rpmspec/tools/Makefile.am
+--- rpm-5.4.13/tools/Makefile.am       2013-10-22 20:18:34.426372530 +0200
++++ rpm-5.4.13-rpmspec/tools/Makefile.am       2013-10-22 20:02:30.365350944 +0200
+@@ -61,7 +61,7 @@
+ pkgbin_PROGRAMS =     \
+       @WITH_AUGEAS_AUGTOOL@ chroot cp @WITH_CUDF_CUDFTOOL@ find mtree \
+       @WITH_SEMANAGE_SEMODULE@ wget \
+-      rpmcache rpmdigest rpmrepo rpmspecdump \
++      rpmcache rpmdigest rpmrepo rpmspecdump rpmspec \
+       rpmcmp rpmdeps sqlite3 @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@
+ if WITH_DB
+ pkgbin_PROGRAMS +=    dbconvert
+@@ -195,6 +195,9 @@
+ rpmspecdump_SOURCES = rpmspecdump.c
+ rpmspecdump_LDADD =   $(RPMBUILD_LDADD_COMMON)
++rpmspec_SOURCES =     rpmspec.c
++rpmspec_LDADD =       $(RPMBUILD_LDADD_COMMON)
++
+ semodule_SOURCES =    semodule.c
+ semodule_LDADD =      $(RPMIO_LDADD_COMMON)
+diff -urN rpm-5.4.13/tools/rpmspec.c rpm-5.4.13-rpmspec/tools/rpmspec.c
+--- rpm-5.4.13/tools/rpmspec.c 1970-01-01 01:00:00.000000000 +0100
++++ rpm-5.4.13-rpmspec/tools/rpmspec.c 2013-10-22 20:00:06.075242852 +0200
+@@ -0,0 +1,176 @@
++#include "system.h"
++const char *__progname;
++
++#define       _AUTOHELP
++
++#if defined(IAM_RPM) || defined(__LCLINT__)
++#define       IAM_RPMBT
++#define       IAM_RPMDB
++#define       IAM_RPMEIU
++#define       IAM_RPMQV
++#define       IAM_RPMK
++#endif
++
++#include <rpmio.h>
++#include <rpmiotypes.h>
++#include <poptIO.h>
++
++#include <rpmtypes.h>
++#include <rpmtag.h>
++#include "rpmdb.h"
++
++#include "rpmversion.h"
++#include "rpmps.h"
++#include "rpmts.h"
++
++#include <rpmbuild.h>
++
++#ifdef        IAM_RPMBT
++#include "build.h"
++#define GETOPT_REBUILD                1003
++#define GETOPT_RECOMPILE      1004
++#endif
++
++#include <rpmcli.h>
++
++#include "debug.h"
++
++enum modes {
++    MODE_UNKNOWN      = 0,
++    MODE_QUERY                = (1 <<  0),
++    MODE_PARSE                = (1 <<  1),
++};
++
++static int mode = MODE_UNKNOWN;
++static rpmQVSources source = RPMQV_RPM;
++static const char *target = NULL;
++static char *queryformat = NULL;
++
++static struct poptOption specOptsTable[] = {
++    { "parse", 'P', POPT_ARG_VAL, &mode, MODE_PARSE,
++      N_("parse spec file(s) to stdout"), NULL },
++    { "query", 'q', POPT_ARG_VAL, &mode, MODE_QUERY,
++      N_("query spec file(s)"), NULL },
++    { "rpms", 0, POPT_ARG_VAL, &source, RPMQV_RPM,
++      N_("operate on binary rpms generated by spec (default)"), NULL },
++    { "srpm", 0, POPT_ARG_VAL, &source, RPMQV_SPECSRPM,
++      N_("operate on source rpm generated by spec"), NULL },
++    { "target", 0, POPT_ARG_STRING, &target, 0,
++      N_("override target platform"), NULL },
++    { "queryformat", 0, POPT_ARG_STRING, &queryformat, 0,
++      N_("use the following query format"), "QUERYFORMAT" },
++    { "qf", 0, (POPT_ARG_STRING | POPT_ARGFLAG_DOC_HIDDEN), &queryformat, 0,
++      NULL, NULL },
++    POPT_TABLEEND
++};
++
++/* the structure describing the options we take and the defaults */
++static struct poptOption optionsTable[] = {
++    { NULL, '\0', POPT_ARG_INCLUDE_TABLE, specOptsTable, 0,
++      N_("Spec options:"), NULL },
++
++    { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0,
++      N_("Common options for all rpm modes and executables:"), NULL },
++
++   POPT_AUTOALIAS
++   POPT_AUTOHELP
++   POPT_TABLEEND
++};
++
++/*@exits@*/ static void argerror(const char * desc)
++      /*@globals __assert_program_name, fileSystem @*/
++      /*@modifies fileSystem @*/
++{
++    fprintf(stderr, _("%s: %s\n"), __progname, desc);
++    exit(EXIT_FAILURE);
++}
++
++#ifdef        DYING /* XXX rpmIsVerbose alone stops usage spewage with every --eval */
++static void printVersion(FILE * fp)
++      /*@globals rpmEVR, fileSystem @*/
++      /*@modifies *fp, fileSystem @*/
++{
++    fprintf(fp, "%s (" RPM_NAME ") %s\n", __progname, rpmEVR);
++    if (rpmIsVerbose())
++      fprintf(fp, "rpmlib 0x%08x,0x%08x,0x%08x\n",
++          rpmlibVersion(), rpmlibTimestamp(), rpmlibVendor());
++}
++
++static void printUsage(poptContext con, FILE * fp, int flags)
++      /*@globals rpmEVR, fileSystem, internalState @*/
++      /*@modifies *fp, fileSystem, internalState @*/
++{
++    printVersion(fp);
++    fprintf(fp, "\n");
++
++    if (rpmIsVerbose())
++      poptPrintHelp(con, fp, flags);
++    else
++      poptPrintUsage(con, fp, flags);
++}
++#endif
++
++int main(int argc, char *argv[])
++{
++    rpmts ts = NULL;
++    QVA_t qva = &rpmQVKArgs;
++
++    poptContext optCon;
++    int ec = 0;
++
++    optCon = rpmcliInit(argc, argv, optionsTable);
++
++    if (target) {
++      rpmFreeMacros(NULL);
++      rpmFreeRpmrc();
++        rpmcliConfigured();
++    }
++
++    ts = rpmtsCreate();
++    switch (mode) {
++
++    case MODE_QUERY:
++      if (!poptPeekArg(optCon))
++          argerror(_("no arguments given for query"));
++
++      qva->qva_queryFormat = queryformat;
++      qva->qva_source = source;
++      qva->qva_specQuery = rpmspecQuery;
++      ec = rpmcliQuery(ts, qva, (const char **) poptGetArgs(optCon));
++      break;
++
++    case MODE_PARSE: {
++      const char * spath;
++      if (!poptPeekArg(optCon))
++          argerror(_("no arguments given for parse"));
++
++      while ((spath = poptGetArg(optCon)) != NULL) {
++          int ret = parseSpec(ts, spath, "/", 0, NULL, NULL, 1, 1, 0);
++          if (ret != 0) {
++              ec++;
++              continue;
++          }
++          Spec spec = rpmtsSpec(ts);
++          fprintf(stdout, "%s", rpmiobStr(spec->parsed));
++      }
++      break;
++    }
++
++    case MODE_UNKNOWN:
++#ifdef        DYING /* XXX rpmIsVerbose alone stops usage spewage with every --eval */
++      if (poptPeekArg(optCon) != NULL || argc <= 1 || rpmIsVerbose()) {
++          printUsage(optCon, stderr, 0);
++          ec = argc;
++      }
++#endif
++      break;
++    }
++
++    rpmtsFree(ts);
++
++    free(qva->qva_queryFormat);
++
++    rpmcliFini(optCon);
++
++    return ec;
++}
index 246979225cb58002c084fed36b29c5b53d1fea66..70ce5fed97a84336fc2001bf9775bdc89f15c80c 100644 (file)
--- a/rpm.spec
+++ b/rpm.spec
@@ -50,7 +50,7 @@ Summary(ru.UTF-8):    Менеджер пакетов от RPM
 Summary(uk.UTF-8):     Менеджер пакетів від RPM
 Name:          rpm
 Version:       5.4.13
-Release:       3
+Release:       4
 License:       LGPL v2.1
 Group:         Base
 # http://rpm5.org/files/rpm/rpm-5.4/rpm-5.4.13-0.20130819.src.rpm
@@ -165,6 +165,7 @@ Patch75:    %{name}-double_check_file_deps.patch
 Patch76:       %{name}-revert-debugedit-breakage.patch
 Patch77:       %{name}-lua-expat.patch
 Patch78:       %{name}-double_check_unpackaged_subdirs.patch
+Patch79:       %{name}-rpmspec.patch
 
 # Patches imported from Mandriva
 
@@ -912,6 +913,7 @@ Dokumentacja API RPM-a oraz przewodniki w formacie HTML generowane ze
 %patch76 -p0
 %patch77 -p0
 %patch78 -p1
+%patch79 -p1
 
 %patch1000 -p1
 %patch1001 -p1
@@ -1495,6 +1497,7 @@ find %{_rpmlibdir} -name '*-linux' -type l | xargs rm -f
 %attr(755,root,root) %{_rpmlibdir}/bin/install-sh
 %attr(755,root,root) %{_rpmlibdir}/bin/mkinstalldirs
 %attr(755,root,root) %{_rpmlibdir}/bin/pom2spec
+%attr(755,root,root) %{_rpmlibdir}/bin/rpmspec
 %attr(755,root,root) %{_rpmlibdir}/bin/rpmspecdump
 %attr(755,root,root) %{_rpmlibdir}/bin/sqlite3
 %attr(755,root,root) %{_rpmlibdir}/bin/wget
This page took 0.041218 seconds and 4 git commands to generate.