add the supports of vcs tag
authorHasan Wan <hasan.wan@intel.com>
Mon, 30 Sep 2013 07:55:39 +0000 (15:55 +0800)
committershuai.fu <shuai01.fu@samsung.com>
Wed, 15 Mar 2017 07:00:40 +0000 (15:00 +0800)
Change-Id: Iabf66283d7ae70eae3171ade658fab0642db729d
Signed-off-by: Hasan Wan <hasan.wan@intel.com>
src/package.c
src/package.h
src/parsehdr.c
src/python/package-py.c
src/xml_dump_primary.c
src/xml_parser_primary.c
tests/python/tests/test_contentstat.py
tests/python/tests/test_xml_file.py

index c026c326bab334dc4dabd315f10bcce85929ca5f..2f978e2fd2462cb4c7df2a3a638f170067aa97d6 100644 (file)
@@ -198,6 +198,7 @@ cr_package_copy(cr_Package *orig)
     pkg->arch             = cr_safe_string_chunk_insert(pkg->chunk, orig->arch);
     pkg->version          = cr_safe_string_chunk_insert(pkg->chunk, orig->version);
     pkg->epoch            = cr_safe_string_chunk_insert(pkg->chunk, orig->epoch);
+    pkg->vcs              = cr_safe_string_chunk_insert(pkg->chunk, orig->vcs);
     pkg->release          = cr_safe_string_chunk_insert(pkg->chunk, orig->release);
     pkg->summary          = cr_safe_string_chunk_insert(pkg->chunk, orig->summary);
     pkg->description      = cr_safe_string_chunk_insert(pkg->chunk, orig->description);
index be061adfe7d76ca33c58a0bb74f84e9589f1d7c5..90d0c5272291c60f218d24274b8dea02f3c9c80f 100644 (file)
@@ -88,6 +88,7 @@ typedef struct {
     char *version;              /*!< version */
     char *epoch;                /*!< epoch */
     char *release;              /*!< release */
+    char *vcs;                  /*!< vcs */
     char *summary;              /*!< summary */
     char *description;          /*!< description */
     char *url;                  /*!< package homepage */
index 5a14f7b0a7d2d56ada6892e092256835eaae57aa..54feb5ccdf9cfc473cdec724fa534e5bb83dec40 100644 (file)
@@ -188,6 +188,7 @@ cr_package_from_header(Header hdr,
     }
 
     pkg->version = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_VERSION));
+    pkg->vcs = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_VCS));
 
 #define MAX_STR_INT_LEN 24
     char tmp_epoch[MAX_STR_INT_LEN];
index e45224b5c2cc20c16d216709f689465c005ef29f..1827757e07e59fa4978cf3b6a5f483406702eadb 100644 (file)
@@ -507,6 +507,8 @@ static PyGetSetDef package_getsetters[] = {
         "Version of the packaged software", OFFSET(version)},
     {"epoch",            (getter)get_str, (setter)set_str,
         "Epoch", OFFSET(epoch)},
+    {"vcs",            (getter)get_str, (setter)set_str,
+        "VCS tag", OFFSET(vcs)},
     {"release",          (getter)get_str, (setter)set_str,
         "Release number of the package", OFFSET(release)},
     {"summary",          (getter)get_str, (setter)set_str,
index 5695e0618b5da60047f5401ed2b11eac6182f9fd..6fcf2716c842d8985ad03d9b70fca0a2864259e1 100644 (file)
@@ -174,6 +174,8 @@ cr_xml_dump_primary_base_items(xmlNodePtr root, cr_Package *package)
     // Write version attribute rel
     cr_xmlNewProp(version, BAD_CAST "rel", BAD_CAST package->release);
 
+    // Write version attribute vcs tag
+    cr_xmlNewProp(version, BAD_CAST "vcs", BAD_CAST package->vcs);
 
     /***********************************
      Element: checksum
index bc2acc35ebbe1c2845fca0bf081bd6e02047add4..3a489269db3ec8c50971d59d48f430fb0df49f38 100644 (file)
@@ -227,6 +227,9 @@ cr_start_handler(void *pdata, const char *element, const char **attr)
         if (!pd->pkg->release)
             pd->pkg->release = cr_safe_string_chunk_insert(pd->pkg->chunk,
                                             cr_find_attr("rel", attr));
+        if (!pd->pkg->vcs)
+            pd->pkg->vcs = cr_safe_string_chunk_insert(pd->pkg->chunk,
+                                            cr_find_attr("vcs", attr));
         break;
 
     case STATE_CHECKSUM:
index 319bd34fddbaff74513e92acf71d2b930a79d8e7..c3cd8911b2ddb10a8c8ba61b76031c57ada37c77 100644 (file)
@@ -38,10 +38,10 @@ class TestCaseContentStat(unittest.TestCase):
 
         self.assertTrue(os.path.isfile(path))
 
-        self.assertEqual(cs.size, 2668)
+        self.assertEqual(cs.size, 2675)
         self.assertEqual(cs.checksum_type, cr.SHA256)
-        self.assertEqual(cs.checksum, "67bc6282915fad80dc11f3d7c3210977a0bde"\
-                                      "05a762256d86083c2447d425776")
+        self.assertEqual(cs.checksum, "4eff31e3ee2cb389aaee7d2891104"\
+                                      "6e8679440f9c5884e02a65b59e2fb0a2dc8")
 
     def test_contentstat_ref_in_xmlfile(self):
         """Test if reference is saved properly"""
index 5e824c816d66fa947a68a2d3321d38a9d19518de..8db3377265236bf8931fdcecfaf21d2b41336c49 100644 (file)
@@ -173,7 +173,7 @@ class TestCaseXmlFile(unittest.TestCase):
 <package type="rpm">
   <name>Archer</name>
   <arch>x86_64</arch>
-  <version epoch="2" ver="3.4.5" rel="6"/>
+  <version epoch="2" ver="3.4.5" rel="6" vcs=""/>
   <checksum type="sha256" pkgid="YES">4e0b775220c67f0f2c1fd2177e626b9c863a098130224ff09778ede25cea9a9e</checksum>
   <summary>Complex package.</summary>
   <description>Archer package</description>