Adding manifest support for rpmbuild
authorElena Reshetova <elena.reshetova@intel.com>
Fri, 4 Jan 2013 11:46:32 +0000 (13:46 +0200)
committerAnas Nashif <anas.nashif@intel.com>
Sun, 3 Feb 2013 00:44:44 +0000 (16:44 -0800)
build/files.c
build/parsePreamble.c
lib/rpmfi.h
lib/rpmtag.h

index d12e324..63cac8b 100644 (file)
@@ -826,6 +826,7 @@ static VFA_t const virtualAttrs[] = {
     { "%readme",       RPMFILE_README },
     { "%license",      RPMFILE_LICENSE },
     { "%pubkey",       RPMFILE_PUBKEY },
+    { "%manifest",     RPMFILE_SECMANIFEST },
     { NULL, 0 }
 };
 
@@ -840,7 +841,7 @@ static rpmRC parseForSimple(char * buf, FileEntry cur, ARGV_t * fileNames)
 {
     char *s, *t;
     rpmRC res = RPMRC_OK;
-    int allow_relative = (RPMFILE_PUBKEY|RPMFILE_DOC|RPMFILE_LICENSE);
+    int allow_relative = (RPMFILE_PUBKEY|RPMFILE_DOC|RPMFILE_LICENSE|RPMFILE_SECMANIFEST);
 
     t = buf;
     while ((s = strtokWithQuotes(t, " \t\n")) != NULL) {
@@ -1554,6 +1555,15 @@ static rpmRC processMetadataFile(Package pkg, FileList fl,
        apkt = pgpArmorWrap(PGPARMOR_PUBKEY, pkt, pktlen);
        break;
     }
+    case RPMTAG_SECMANIFEST: {
+       if ((xx = rpmioSlurp(fn, &pkt, &pktlen)) != 0 || pkt == NULL) {
+           rpmlog(RPMLOG_ERR, _("%s: Security manifest file read failed.\n"), fn);
+           goto exit;
+       }
+       apkt = rpmBase64Encode(pkt, pktlen, -1);
+       rpmlog(RPMLOG_INFO, _("Aptk: %s\n"), apkt);
+       break;
+    }
     }
 
     if (!apkt) {
@@ -1896,6 +1906,8 @@ static rpmRC processPackageFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags,
                argvAdd(&(fl.docDirs), *fn);
            } else if (fl.cur.attrFlags & RPMFILE_PUBKEY) {
                (void) processMetadataFile(pkg, &fl, *fn, RPMTAG_PUBKEYS);
+           } else if (fl.cur.attrFlags & RPMFILE_SECMANIFEST) {
+               (void) processMetadataFile(pkg, &fl, *fn, RPMTAG_SECMANIFEST);
            } else {
                if (fl.cur.attrFlags & RPMFILE_DIR)
                    fl.cur.isDir = 1;
index 78891db..523e452 100644 (file)
@@ -919,6 +919,7 @@ static struct PreambleRec_s const preambleList[] = {
     {RPMTAG_BUILDSUGGESTS,     0, 0, LEN_AND_STR("buildsuggests")},
     {RPMTAG_BUILDENHANCES,     0, 0, LEN_AND_STR("buildsupplements")},
     {RPMTAG_BUILDENHANCES,     0, 0, LEN_AND_STR("buildenhances")},
+    {RPMTAG_SECMANIFEST,       0, 0, LEN_AND_STR("manifest")},
     {0, 0, 0, 0}
 };
 
index c526c90..b77c828 100644 (file)
@@ -61,6 +61,7 @@ enum rpmfileAttrs_e {
     RPMFILE_README     = (1 <<  8),    /*!< from %%readme */
     /* bits 9-10 unused */
     RPMFILE_PUBKEY     = (1 << 11),    /*!< from %%pubkey */
+    RPMFILE_SECMANIFEST        = (1 << 12),    /*!< from %%manifest */
 };
 
 typedef rpmFlags rpmfileAttrs;
index 1295a71..025a0a4 100644 (file)
@@ -299,8 +299,8 @@ typedef enum rpmTag_e {
     RPMTAG_ORDERNAME           = 5035, /* s[] */
     RPMTAG_ORDERVERSION                = 5036, /* s[] */
     RPMTAG_ORDERFLAGS          = 5037, /* i[] */
-    RPMTAG_MSSFMANIFEST                = 5038, /* s[] reservation (unimplemented) */
-    RPMTAG_MSSFDOMAIN          = 5039, /* s[] reservation (unimplemented) */
+    RPMTAG_SECMANIFEST         = 5038, /* s[] security manifest file */
+    RPMTAG_SECSWSOURCE         = 5039, /* s[] security software source */
     RPMTAG_INSTFILENAMES       = 5040, /* s[] extension */
     RPMTAG_REQUIRENEVRS                = 5041, /* s[] extension */
     RPMTAG_PROVIDENEVRS                = 5042, /* s[] extension */