import libcomps-0.1.16-4.el9
This commit is contained in:
commit
a72546f2f1
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
SOURCES/libcomps-0.1.16.tar.gz
|
1
.libcomps.metadata
Normal file
1
.libcomps.metadata
Normal file
@ -0,0 +1 @@
|
||||
2837109aca4e610c57e35e43c7cbb0e296cfdaa9 SOURCES/libcomps-0.1.16.tar.gz
|
388
SOURCES/0001-Fix-several-covscan-warnings.patch
Normal file
388
SOURCES/0001-Fix-several-covscan-warnings.patch
Normal file
@ -0,0 +1,388 @@
|
||||
From 879e67e5f6fa01f5ae745c9287e95f74541d32ad Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
|
||||
Date: Mon, 19 Jul 2021 14:53:04 +0200
|
||||
Subject: [PATCH 1/3] Fix several covscan warnings
|
||||
|
||||
- don't reuse `tmp` variable across the entire function
|
||||
- don't reuse `it` variable across the entire function
|
||||
- check whether malloc was successful
|
||||
- do not copy strings unnecessarily
|
||||
- remove couple of macros which were confusing covscans and are too
|
||||
verbose
|
||||
- add missing return value checks
|
||||
---
|
||||
libcomps/src/comps_doc.c | 7 +++----
|
||||
libcomps/src/comps_doccategory.c | 9 +++++++--
|
||||
libcomps/src/comps_docenv.c | 10 ++++++++--
|
||||
libcomps/src/comps_docgroup.c | 9 +++++++--
|
||||
libcomps/src/comps_parse.c | 12 ++++--------
|
||||
libcomps/src/comps_set.c | 18 ++++++++++--------
|
||||
libcomps/src/python/src/pycomps.c | 5 ++---
|
||||
libcomps/src/python/src/pycomps_sequence.c | 13 +++++++++++++
|
||||
8 files changed, 54 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/libcomps/src/comps_doc.c b/libcomps/src/comps_doc.c
|
||||
index 9e6005b..c5e65cd 100644
|
||||
--- a/libcomps/src/comps_doc.c
|
||||
+++ b/libcomps/src/comps_doc.c
|
||||
@@ -644,7 +644,6 @@ static signed char comps_doc_xml(COMPS_Doc *doc, xmlTextWriterPtr writer,
|
||||
COMPS_ObjMDict *mdict;
|
||||
COMPS_HSList *hslist;
|
||||
COMPS_HSListItem *hsit;
|
||||
- char *tmp;
|
||||
int retc;
|
||||
signed char ret = 0, tmpret;
|
||||
|
||||
@@ -709,7 +708,7 @@ static signed char comps_doc_xml(COMPS_Doc *doc, xmlTextWriterPtr writer,
|
||||
xmlTextWriterWriteAttribute(writer, BAD_CAST "name",
|
||||
(xmlChar*) ((COMPS_ObjRTreePair*)hsit->data)->key);
|
||||
|
||||
- tmp = comps_object_tostr(((COMPS_ObjRTreePair*)hsit->data)->data);
|
||||
+ char *tmp = comps_object_tostr(((COMPS_ObjRTreePair*)hsit->data)->data);
|
||||
xmlTextWriterWriteAttribute(writer, BAD_CAST "install", BAD_CAST tmp);
|
||||
free(tmp);
|
||||
|
||||
@@ -749,7 +748,7 @@ static signed char comps_doc_xml(COMPS_Doc *doc, xmlTextWriterPtr writer,
|
||||
xmlTextWriterWriteAttribute(writer, BAD_CAST "name",
|
||||
(xmlChar*) ((COMPS_ObjRTreePair*)hsit->data)->key);
|
||||
|
||||
- tmp = comps_object_tostr(it->comps_obj);
|
||||
+ char *tmp = comps_object_tostr(it->comps_obj);
|
||||
xmlTextWriterWriteAttribute(writer, BAD_CAST "arch", BAD_CAST tmp);
|
||||
free(tmp);
|
||||
|
||||
@@ -789,7 +788,7 @@ static signed char comps_doc_xml(COMPS_Doc *doc, xmlTextWriterPtr writer,
|
||||
xmlTextWriterWriteAttribute(writer, BAD_CAST "requires",
|
||||
(xmlChar*) ((COMPS_ObjRTreePair*)hsit->data)->key);
|
||||
|
||||
- tmp = comps_object_tostr(it->comps_obj);
|
||||
+ char *tmp = comps_object_tostr(it->comps_obj);
|
||||
xmlTextWriterWriteAttribute(writer, BAD_CAST "package", BAD_CAST tmp);
|
||||
free(tmp);
|
||||
|
||||
diff --git a/libcomps/src/comps_doccategory.c b/libcomps/src/comps_doccategory.c
|
||||
index 9c36633..59f9772 100644
|
||||
--- a/libcomps/src/comps_doccategory.c
|
||||
+++ b/libcomps/src/comps_doccategory.c
|
||||
@@ -317,8 +317,13 @@ char* comps_doccategory_tostr_u(COMPS_Object* cat) {
|
||||
total_len += strlen(desc_by_lang_str);
|
||||
group_ids_str = comps_object_tostr((COMPS_Object*)_cat_->group_ids);
|
||||
total_len += strlen(group_ids_str);
|
||||
-
|
||||
- ret = malloc(sizeof(char) * (total_len+2+(6*2)+strlen(head)));
|
||||
+
|
||||
+ if ((ret = malloc(sizeof(char) * (total_len+2+(6*2)+strlen(head)))) == NULL) {
|
||||
+ free(name_by_lang_str);
|
||||
+ free(desc_by_lang_str);
|
||||
+ free(group_ids_str);
|
||||
+ return NULL;
|
||||
+ }
|
||||
ret[0] = 0;
|
||||
strcat(ret, head);
|
||||
for (int i=0; i<4; i++) {
|
||||
diff --git a/libcomps/src/comps_docenv.c b/libcomps/src/comps_docenv.c
|
||||
index 11b9b72..c93d7be 100644
|
||||
--- a/libcomps/src/comps_docenv.c
|
||||
+++ b/libcomps/src/comps_docenv.c
|
||||
@@ -415,8 +415,14 @@ char* comps_docenv_tostr_u(COMPS_Object* env) {
|
||||
total_len += strlen(group_list_str);
|
||||
option_list_str = comps_object_tostr((COMPS_Object*)_env_->option_list);
|
||||
total_len += strlen(option_list_str);
|
||||
-
|
||||
- ret = malloc(sizeof(char) * (total_len+2+(8*2)+strlen(head)));
|
||||
+
|
||||
+ if ((ret = malloc(sizeof(char) * (total_len+2+(8*2)+strlen(head)))) == NULL) {
|
||||
+ free(name_by_lang_str);
|
||||
+ free(desc_by_lang_str);
|
||||
+ free(group_list_str);
|
||||
+ free(option_list_str);
|
||||
+ return NULL;
|
||||
+ }
|
||||
ret[0] = 0;
|
||||
strcat(ret, head);
|
||||
for (int i=0; i<4; i++) {
|
||||
diff --git a/libcomps/src/comps_docgroup.c b/libcomps/src/comps_docgroup.c
|
||||
index 6c0eb14..6f89ed6 100644
|
||||
--- a/libcomps/src/comps_docgroup.c
|
||||
+++ b/libcomps/src/comps_docgroup.c
|
||||
@@ -399,8 +399,13 @@ char* comps_docgroup_tostr_u(COMPS_Object* group) {
|
||||
total_len += strlen(desc_by_lang_str);
|
||||
group_packages_str = comps_object_tostr((COMPS_Object*)_group_->packages);
|
||||
total_len += strlen(group_packages_str);
|
||||
-
|
||||
- ret = malloc(sizeof(char) * (total_len+2+(8*2)+strlen(head)));
|
||||
+
|
||||
+ if ((ret = malloc(sizeof(char) * (total_len+2+(8*2)+strlen(head)))) == NULL) {
|
||||
+ free(name_by_lang_str);
|
||||
+ free(desc_by_lang_str);
|
||||
+ free(group_packages_str);
|
||||
+ return NULL;
|
||||
+ }
|
||||
ret[0] = 0;
|
||||
strcat(ret, head);
|
||||
for (int i=0; i<6; i++) {
|
||||
diff --git a/libcomps/src/comps_parse.c b/libcomps/src/comps_parse.c
|
||||
index 55dbd2f..18133a2 100644
|
||||
--- a/libcomps/src/comps_parse.c
|
||||
+++ b/libcomps/src/comps_parse.c
|
||||
@@ -436,19 +436,16 @@ void comps_parse_char_data_handler(void *userData,
|
||||
}
|
||||
|
||||
void comps_parse_check_attributes(COMPS_Parsed *parsed, COMPS_Elem* elem) {
|
||||
- #define parser_line XML_GetCurrentLineNumber(parsed->parser)
|
||||
- #define parser_col XML_GetCurrentColumnNumber(parsed->parser)
|
||||
const COMPS_ElemInfo *info;
|
||||
info = COMPS_ElemInfos[elem->type];
|
||||
int attr_count;
|
||||
COMPS_HSList *keys;
|
||||
char *val;
|
||||
- COMPS_HSListItem *it;
|
||||
|
||||
for (attr_count = 0; info->attributes[attr_count] != NULL; attr_count++);
|
||||
keys = comps_dict_keys(elem->attrs);
|
||||
for (int x =0; x<attr_count; x++) {
|
||||
- for (it = keys->first; it != NULL; it = it->next) {
|
||||
+ for (COMPS_HSListItem *it = keys->first; it != NULL; it = it->next) {
|
||||
if (strcmp((char*)it->data, info->attributes[x]->name) == 0) {
|
||||
if (info->attributes[x]->val_check) {
|
||||
val = comps_dict_get(elem->attrs, it->data);
|
||||
@@ -464,12 +461,11 @@ void comps_parse_check_attributes(COMPS_Parsed *parsed, COMPS_Elem* elem) {
|
||||
}
|
||||
}
|
||||
}
|
||||
- for (it = keys->first; it != NULL; it = it->next) {
|
||||
+ for (COMPS_HSListItem *it = keys->first; it != NULL; it = it->next) {
|
||||
comps_log_warning_x(parsed->log, COMPS_ERR_ATTR_UNKNOWN, 4,
|
||||
comps_str(it->data), comps_str(info->name),
|
||||
- comps_num(parser_line), comps_num(parser_col));
|
||||
+ comps_num(XML_GetCurrentLineNumber(parsed->parser)),
|
||||
+ comps_num(XML_GetCurrentColumnNumber(parsed->parser)));
|
||||
}
|
||||
comps_hslist_destroy(&keys);
|
||||
- #undef parser_line
|
||||
- #undef parser_col
|
||||
}
|
||||
diff --git a/libcomps/src/comps_set.c b/libcomps/src/comps_set.c
|
||||
index e3eecfa..9ea048a 100644
|
||||
--- a/libcomps/src/comps_set.c
|
||||
+++ b/libcomps/src/comps_set.c
|
||||
@@ -113,14 +113,16 @@ char comps_set_add(COMPS_Set * set, void *item) {
|
||||
}
|
||||
|
||||
void* comps_set_remove(COMPS_Set *set, void *item) {
|
||||
- void * ret;
|
||||
- COMPS_HSListItem * it;
|
||||
- for (it = set->data->first; it != NULL; it = it->next) {
|
||||
- if (set->eqf(it->data, item)) {
|
||||
- comps_hslist_remove(set->data, it);
|
||||
- ret = it->data;
|
||||
- free(it);
|
||||
- return ret;
|
||||
+ if (set && set->data) {
|
||||
+ void * ret;
|
||||
+ COMPS_HSListItem * it;
|
||||
+ for (it = set->data->first; it != NULL; it = it->next) {
|
||||
+ if (set->eqf(it->data, item)) {
|
||||
+ comps_hslist_remove(set->data, it);
|
||||
+ ret = it->data;
|
||||
+ free(it);
|
||||
+ return ret;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
diff --git a/libcomps/src/python/src/pycomps.c b/libcomps/src/python/src/pycomps.c
|
||||
index aa73a8e..1c1cb3b 100644
|
||||
--- a/libcomps/src/python/src/pycomps.c
|
||||
+++ b/libcomps/src/python/src/pycomps.c
|
||||
@@ -499,7 +499,6 @@ PyObject* PyCOMPS_filter_arches(PyObject *self, PyObject *other) {
|
||||
PyCOMPS *doc;
|
||||
COMPS_Doc *comps_doc;
|
||||
PyObject *item;
|
||||
- char *str;
|
||||
char created = 0;
|
||||
if ((Py_TYPE(other) != &PyCOMPS_StrSeqType) &&
|
||||
(Py_TYPE(other) != &PyList_Type)) {
|
||||
@@ -512,9 +511,9 @@ PyObject* PyCOMPS_filter_arches(PyObject *self, PyObject *other) {
|
||||
arches = COMPS_OBJECT_CREATE(COMPS_ObjList, NULL);
|
||||
for (Py_ssize_t x=0; x < PyList_Size(other); x++) {
|
||||
item = PyList_GetItem(other, x);
|
||||
+ char *str;
|
||||
__pycomps_arg_to_char(item, &str);
|
||||
- comps_objlist_append_x(arches, (COMPS_Object*)comps_str(str));
|
||||
- free(str);
|
||||
+ comps_objlist_append_x(arches, (COMPS_Object*)comps_str_x(str));
|
||||
}
|
||||
} else {
|
||||
arches = ((PyCOMPS_Sequence*)other)->list;
|
||||
diff --git a/libcomps/src/python/src/pycomps_sequence.c b/libcomps/src/python/src/pycomps_sequence.c
|
||||
index acd2e71..4f5f886 100644
|
||||
--- a/libcomps/src/python/src/pycomps_sequence.c
|
||||
+++ b/libcomps/src/python/src/pycomps_sequence.c
|
||||
@@ -307,12 +307,14 @@ int list_set_slice(PyObject *self, PyObject *key, PyObject *val) {
|
||||
n = _seq_->list->len;
|
||||
uret = PySlice_GetIndicesEx((PyObject*)key, n,
|
||||
&istart, &istop, &istep, &ilen);
|
||||
+ if (uret) return -1;
|
||||
if (ilen == 0) {
|
||||
uret = PySlice_GetIndicesEx((PyObject*)key, n+istart,
|
||||
&istart, &istop, &istep, &ilen);
|
||||
}
|
||||
if (uret) return -1;
|
||||
if (val) {
|
||||
+ // set val for list items indexed by given slice
|
||||
if (Py_TYPE(self) != Py_TYPE(val)) {
|
||||
PyErr_SetString(PyExc_TypeError, "different object class");
|
||||
return -1;
|
||||
@@ -340,6 +342,11 @@ int list_set_slice(PyObject *self, PyObject *key, PyObject *val) {
|
||||
for (i=0 ; i<istart && it != NULL; it=it->next, i++);
|
||||
if (istep != 1) {
|
||||
while (clen != ilen) {
|
||||
+ if (!it) {
|
||||
+ PyErr_SetString(PyExc_ValueError,
|
||||
+ "failed to index list using the given slice");
|
||||
+ return -1;
|
||||
+ }
|
||||
COMPS_OBJECT_DESTROY(it->comps_obj);
|
||||
it->comps_obj = comps_object_incref(it2->comps_obj);
|
||||
clen += 1;
|
||||
@@ -372,10 +379,16 @@ int list_set_slice(PyObject *self, PyObject *key, PyObject *val) {
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
+ // if val is NULL we want to delete list items indexed by given slice
|
||||
clen = 0;
|
||||
it = ((PyCOMPS_Sequence*)self)->list->first;
|
||||
for (i=0 ; i<istart && it != NULL; it=it->next, i++);
|
||||
while (clen != ilen) {
|
||||
+ if (!it) {
|
||||
+ PyErr_SetString(PyExc_ValueError,
|
||||
+ "failed to index list using the given slice");
|
||||
+ return -1;
|
||||
+ }
|
||||
if (it->comps_obj) {
|
||||
COMPS_OBJECT_DESTROY(it->comps_obj);
|
||||
it->comps_obj = NULL;
|
||||
|
||||
From 50f3b3b80c8f21987ddfc726bcc75980e0db1b95 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
|
||||
Date: Tue, 20 Jul 2021 11:44:35 +0200
|
||||
Subject: [PATCH 2/3] Add missing undef for _seq_ macro and use it everywhere
|
||||
|
||||
---
|
||||
libcomps/src/python/src/pycomps_sequence.c | 19 +++++++++----------
|
||||
1 file changed, 9 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/libcomps/src/python/src/pycomps_sequence.c b/libcomps/src/python/src/pycomps_sequence.c
|
||||
index 4f5f886..9b42341 100644
|
||||
--- a/libcomps/src/python/src/pycomps_sequence.c
|
||||
+++ b/libcomps/src/python/src/pycomps_sequence.c
|
||||
@@ -352,7 +352,7 @@ int list_set_slice(PyObject *self, PyObject *key, PyObject *val) {
|
||||
clen += 1;
|
||||
it2 = it2->next;
|
||||
for (i=0 ; i<istep && it != NULL; it=it->next, i++);
|
||||
- if (!it) it = ((PyCOMPS_Sequence*)self)->list->first;
|
||||
+ if (!it) it = _seq_->list->first;
|
||||
for (; i<istep; it=it->next, i++);
|
||||
}
|
||||
} else {
|
||||
@@ -366,14 +366,12 @@ int list_set_slice(PyObject *self, PyObject *key, PyObject *val) {
|
||||
}
|
||||
if (it == NULL) {
|
||||
for (;it2 != NULL; it2 = it2->next) {
|
||||
- comps_objlist_append(((PyCOMPS_Sequence*)self)->list,
|
||||
- it2->comps_obj);
|
||||
+ comps_objlist_append(_seq_->list, it2->comps_obj);
|
||||
}
|
||||
}
|
||||
if (it != NULL) {
|
||||
for (c = i; c < istop; c++) {
|
||||
- comps_objlist_remove_at(((PyCOMPS_Sequence*)self)->list,
|
||||
- i);
|
||||
+ comps_objlist_remove_at(_seq_->list, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -381,7 +379,7 @@ int list_set_slice(PyObject *self, PyObject *key, PyObject *val) {
|
||||
} else {
|
||||
// if val is NULL we want to delete list items indexed by given slice
|
||||
clen = 0;
|
||||
- it = ((PyCOMPS_Sequence*)self)->list->first;
|
||||
+ it = _seq_->list->first;
|
||||
for (i=0 ; i<istart && it != NULL; it=it->next, i++);
|
||||
while (clen != ilen) {
|
||||
if (!it) {
|
||||
@@ -395,23 +393,24 @@ int list_set_slice(PyObject *self, PyObject *key, PyObject *val) {
|
||||
}
|
||||
clen+=1;
|
||||
for (i=0 ; i<istep && it != NULL; it=it->next, i++);
|
||||
- if (!it) it = ((PyCOMPS_Sequence*)self)->list->first;
|
||||
+ if (!it) it = _seq_->list->first;
|
||||
for (; i<istep; it=it->next, i++);
|
||||
}
|
||||
it2 = NULL;
|
||||
- for (i=0, it = ((PyCOMPS_Sequence*)self)->list->first;
|
||||
+ for (i=0, it = _seq_->list->first;
|
||||
it != NULL; it2 = it, it = it->next, i++) {
|
||||
if (it2 && !it2->comps_obj) {
|
||||
- comps_objlist_remove_at(((PyCOMPS_Sequence*)self)->list, i);
|
||||
+ comps_objlist_remove_at(_seq_->list, i);
|
||||
}
|
||||
}
|
||||
if (it2 && !it2->comps_obj) {
|
||||
- comps_objlist_remove_at(((PyCOMPS_Sequence*)self)->list, i);
|
||||
+ comps_objlist_remove_at(_seq_->list, i);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
+ #undef _seq_
|
||||
}
|
||||
|
||||
int __PyCOMPSSeq_set(PyObject *self, PyObject *key, PyObject *val,
|
||||
|
||||
From e7521d21bba6407957325a63cb9d65c07a2e0a94 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
|
||||
Date: Tue, 10 Aug 2021 08:12:28 +0200
|
||||
Subject: [PATCH 3/3] Check return value of `__pycomps_arg_to_char` and add a
|
||||
test
|
||||
|
||||
It fixes a crash when the conversion to char is not successful.
|
||||
---
|
||||
libcomps/src/python/src/pycomps.c | 5 ++++-
|
||||
libcomps/src/python/tests/__test.py | 5 +++++
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libcomps/src/python/src/pycomps.c b/libcomps/src/python/src/pycomps.c
|
||||
index 1c1cb3b..ee6f691 100644
|
||||
--- a/libcomps/src/python/src/pycomps.c
|
||||
+++ b/libcomps/src/python/src/pycomps.c
|
||||
@@ -512,7 +512,10 @@ PyObject* PyCOMPS_filter_arches(PyObject *self, PyObject *other) {
|
||||
for (Py_ssize_t x=0; x < PyList_Size(other); x++) {
|
||||
item = PyList_GetItem(other, x);
|
||||
char *str;
|
||||
- __pycomps_arg_to_char(item, &str);
|
||||
+ if (__pycomps_arg_to_char(item, &str)) {
|
||||
+ COMPS_OBJECT_DESTROY(arches);
|
||||
+ return NULL;
|
||||
+ }
|
||||
comps_objlist_append_x(arches, (COMPS_Object*)comps_str_x(str));
|
||||
}
|
||||
} else {
|
||||
diff --git a/libcomps/src/python/tests/__test.py b/libcomps/src/python/tests/__test.py
|
||||
index 35a41f7..4152c7d 100644
|
||||
--- a/libcomps/src/python/tests/__test.py
|
||||
+++ b/libcomps/src/python/tests/__test.py
|
||||
@@ -1088,6 +1088,11 @@ def test_arches(self):
|
||||
comps5.fromxml_str(s)
|
||||
self.assertTrue(comps == comps5)
|
||||
|
||||
+ def test_arches_invalid_input(self):
|
||||
+ INVALID_UTF8_CHAR = '\udcfd'
|
||||
+ c = libcomps.Comps()
|
||||
+ self.assertRaises(TypeError, c.arch_filter, [INVALID_UTF8_CHAR])
|
||||
+
|
||||
#@unittest.skip("")
|
||||
def test_validate(self):
|
||||
c = libcomps.Comps()
|
363
SPECS/libcomps.spec
Normal file
363
SPECS/libcomps.spec
Normal file
@ -0,0 +1,363 @@
|
||||
%define __cmake_in_source_build 1
|
||||
|
||||
Name: libcomps
|
||||
Version: 0.1.16
|
||||
Release: 4%{?dist}
|
||||
Summary: Comps XML file manipulation library
|
||||
|
||||
License: GPLv2+
|
||||
URL: https://github.com/rpm-software-management/libcomps
|
||||
Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
|
||||
Patch1: 0001-Fix-several-covscan-warnings.patch
|
||||
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc
|
||||
BuildRequires: libxml2-devel
|
||||
BuildRequires: check-devel
|
||||
BuildRequires: expat-devel
|
||||
BuildRequires: zlib-devel
|
||||
|
||||
%description
|
||||
Libcomps is library for structure-like manipulation with content of
|
||||
comps XML files. Supports read/write XML file, structure(s) modification.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for libcomps library
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
Development files for libcomps library.
|
||||
|
||||
%package doc
|
||||
Summary: Documentation files for libcomps library
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
BuildRequires: doxygen
|
||||
|
||||
%description doc
|
||||
Documentation files for libcomps library.
|
||||
|
||||
%package -n python-%{name}-doc
|
||||
Summary: Documentation files for python bindings libcomps library
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
BuildRequires: python3-sphinx
|
||||
|
||||
|
||||
%description -n python-%{name}-doc
|
||||
Documentation files for python bindings libcomps library.
|
||||
|
||||
%package -n python3-%{name}
|
||||
Summary: Python 3 bindings for libcomps library
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: make
|
||||
%{?python_provide:%python_provide python3-%{name}}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Obsoletes: platform-python-%{name} < %{version}-%{release}
|
||||
|
||||
%description -n python3-%{name}
|
||||
Python3 bindings for libcomps library.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-%{version}
|
||||
|
||||
mkdir build-py3
|
||||
mkdir build-doc
|
||||
|
||||
%build
|
||||
pushd build-py3
|
||||
%cmake ../libcomps/
|
||||
%make_build
|
||||
popd
|
||||
|
||||
pushd build-doc
|
||||
%cmake ../libcomps/
|
||||
make %{?_smp_mflags} docs
|
||||
make %{?_smp_mflags} pydocs
|
||||
popd
|
||||
|
||||
%install
|
||||
pushd build-py3
|
||||
%make_install
|
||||
popd
|
||||
|
||||
%check
|
||||
pushd build-py3
|
||||
make test
|
||||
make pytest
|
||||
popd
|
||||
|
||||
%if %{undefined ldconfig_scriptlets}
|
||||
%post -p /sbin/ldconfig
|
||||
%postun -p /sbin/ldconfig
|
||||
%else
|
||||
%ldconfig_scriptlets
|
||||
%endif
|
||||
|
||||
%files
|
||||
%license COPYING
|
||||
%doc README.md
|
||||
%{_libdir}/%{name}.so.*
|
||||
|
||||
%files devel
|
||||
%{_libdir}/%{name}.so
|
||||
%{_libdir}/pkgconfig/%{name}.pc
|
||||
%{_includedir}/%{name}/
|
||||
|
||||
%files doc
|
||||
%doc build-doc/docs/libcomps-doc/html
|
||||
|
||||
%files -n python-%{name}-doc
|
||||
%doc build-doc/src/python/docs/html
|
||||
|
||||
%files -n python3-%{name}
|
||||
%{python3_sitearch}/%{name}/
|
||||
%{python3_sitearch}/%{name}-%{version}-py%{python3_version}.egg-info
|
||||
|
||||
%changelog
|
||||
* Mon Aug 16 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.1.16-4
|
||||
- Fix issues detected by static analyzers
|
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.1.16-3
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
|
||||
* Tue Apr 27 2021 Pavla Kratochvilova <pkratoch@redhat.com> - 0.1.16-1
|
||||
- Update to 0.1.16
|
||||
- Fix a crash when clearing COMPS_ObjRTree (RhBug:1888343)
|
||||
- Fix memory leaks and resource leaks
|
||||
|
||||
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.1.15-7
|
||||
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.15-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Aug 07 2020 Nicola Sella <nsella@redhat.com> - 0.1.15-5
|
||||
- spec: Fix building with new cmake macros
|
||||
|
||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.15-4
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.15-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Fri May 22 2020 Miro Hrončok <mhroncok@redhat.com> - 0.1.15-2
|
||||
- Rebuilt for Python 3.9
|
||||
|
||||
* Wed Apr 01 2020 Ales Matej <amatej@redhat.com> - 0.1.15-1
|
||||
- Update to 0.1.15
|
||||
- Do not skip type=mandatory in xml output (RhBug:1771224)
|
||||
|
||||
* Fri Jan 31 2020 Ales Matej <amatej@redhat.com> - 0.1.14-4
|
||||
- Fix global header variable defined without extern for gcc-10
|
||||
|
||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.14-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Sat Dec 14 2019 Jeff Law <law@redhat.com> - 0.1.14-2
|
||||
- Fix inline vs static inline issue for gcc-10
|
||||
|
||||
* Fri Nov 29 2019 Ales Matej <amatej@redhat.com> - 0.1.14-1
|
||||
- Update to 0.1.14
|
||||
|
||||
* Fri Nov 29 2019 Ales Matej <amatej@redhat.com> - 0.1.12-1
|
||||
- Update to 0.1.12
|
||||
|
||||
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 0.1.11-5
|
||||
- Rebuilt for Python 3.8.0rc1 (#1748018)
|
||||
|
||||
* Thu Aug 15 2019 Miro Hrončok <mhroncok@redhat.com> - 0.1.11-4
|
||||
- Rebuilt for Python 3.8
|
||||
|
||||
* Wed Jul 31 2019 Miro Hrončok <mhroncok@redhat.com> - 0.1.11-3
|
||||
- Fix Python method descriptors for Python 3.8 (#1734777)
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.11-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Mon Mar 11 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.1.11-1
|
||||
- Update to 0.1.11
|
||||
|
||||
* Wed Feb 13 2019 Pavla Kratochvilova <pkratoch@redhat.com> - 0.1.10-1
|
||||
- Update to 0.1.10
|
||||
|
||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.9-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Tue Nov 27 2018 Marek Blaha <mblaha@redhat.com> - 0.1.8-15
|
||||
- Disable Python 2 bindings for Fedora >= 30
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.8-14
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Fri Jun 15 2018 Miro Hrončok <mhroncok@redhat.com> - 0.1.8-13
|
||||
- Rebuilt for Python 3.7
|
||||
|
||||
* Tue Feb 20 2018 Iryna Shcherbina <ishcherb@redhat.com> - 0.1.8-12
|
||||
- Update Python 2 dependency declarations to new packaging standards
|
||||
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.8-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Wed Jan 31 2018 Igor Gnatenko <ignatenko@redhat.com> - 0.1.8-10
|
||||
- Switch to %%ldconfig_scriptlets
|
||||
|
||||
* Tue Nov 07 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.1.8-9
|
||||
- Use better Obsoletes for platform-python
|
||||
|
||||
* Fri Nov 03 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.1.8-8
|
||||
- Remove platform-python subpackage
|
||||
|
||||
* Fri Sep 01 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.1.8-7
|
||||
- Disable platform python on old releases
|
||||
|
||||
* Thu Aug 10 2017 Lumír Balhar <lbalhar@redhat.com> - 0.1.8-6
|
||||
- Add Platform Python subpackage (https://fedoraproject.org/wiki/Changes/Platform_Python_Stack)
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.8-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.8-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.8-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Tue Dec 13 2016 Stratakis Charalampos <cstratak@redhat.com> - 0.1.8-2
|
||||
- Rebuild for Python 3.6
|
||||
|
||||
* Thu Sep 22 2016 Igor Gnatenko <ignatenko@redhat.com> - 0.1.8-1
|
||||
- Update to 0.1.8
|
||||
|
||||
* Tue Aug 09 2016 Igor Gnatenko <ignatenko@redhat.com> - 0.1.7-6
|
||||
- Add %%{?system_python_abi}
|
||||
|
||||
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.1.7-5
|
||||
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||
|
||||
* Tue Apr 12 2016 Igor Gnatenko <ignatenko@redhat.com> - 0.1.7-4
|
||||
- Adopt to new packaging guidelines
|
||||
- Use %%license macro
|
||||
- Fix file ownerships
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.7-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Oct 14 2015 Robert Kuska <rkuska@redhat.com> - 0.1.7-2
|
||||
- Rebuilt for Python3.5 rebuild
|
||||
|
||||
* Thu Jul 02 2015 Jindrich Luza <jluza@redhat.com> 0.1.7
|
||||
- added langpacks to union process
|
||||
- comps DOCTYPE read-write-read fix
|
||||
- support biarchonly attribute
|
||||
- fixed rhbz#1073885 rhbz#1073890 rhbz#1073907 rhbz#1073979
|
||||
- fix rhbz#1073079
|
||||
- comps_*_match() now support fnmatching
|
||||
- added libpycomps.MATCH_IGNORECASE as matching flag
|
||||
- added group.packages_match
|
||||
- added comps.groups_match, comps.categories_match, comps.entironments_match
|
||||
- PyCOMPS_Package hash
|
||||
- cmake-2.6, python-2.6, RHEL-6 compatible
|
||||
- '_arch' attribute change to 'arch'
|
||||
- empty 'arch' attribute will be ommited from output from now
|
||||
|
||||
* Wed Jan 29 2014 Jindrich Luza <jluza@redhat.com> 0.1.6
|
||||
- version bumped
|
||||
- added libcomps.MDict.keys()
|
||||
- libcomps.MDict.values()
|
||||
- libcomps.MDict.items()
|
||||
- libcomps.MDict.clear()
|
||||
- libcomps.MDict.update()
|
||||
- libcomps.MDict.copy()
|
||||
- COMPS_List replaced with COMPS_HSList
|
||||
- added missing basearchonly to DocGroupPackage
|
||||
- python3/CMakeLists.txt fixed
|
||||
- added explicit attributes support for xml options
|
||||
- added arch_filter test for python
|
||||
- insert method in libcomps.Sequence
|
||||
- Unioning is now accomplished with replace x append policy
|
||||
- Weaker package equality check (comparing only name now)
|
||||
- Fixed leeks in unioning
|
||||
- modified test_merge_comps test_libcomps
|
||||
- dictionaries are now storing keys in alphabetical order
|
||||
- comps parser redesigned
|
||||
- change python/tests directory composition
|
||||
- added elem attributes check in parser
|
||||
- xml output '_arch' attribute support
|
||||
- parser and xml output defaults options for specify defaults values
|
||||
- comps object validation in python
|
||||
- added validity checker before append/set object to list (python only)
|
||||
- .validate() method
|
||||
- added libcomps.Dict.keys
|
||||
- libcomps.Dict.values
|
||||
- libcomps.Dict.items
|
||||
- libcomps.Dict.clear
|
||||
- libcomps.Dict.update
|
||||
- libcomps.Dict.copy
|
||||
- added xml output options (comps.xml_str([options = {}]), comps.xml_f(options = {}))
|
||||
|
||||
* Wed Oct 23 2013 Jindrich Luza <jluza@redhat.com> 0.1.4-4
|
||||
- group.uservisible is true by default now.
|
||||
- fixed comps_mobjradix parent node problem
|
||||
- implemented bindings for blacklist, whiteout and langpacks
|
||||
- COMPS_Logger redesigned
|
||||
|
||||
* Tue Oct 08 2013 Jindrich Luza <jluza@redhat.com> 0.1.5
|
||||
- version bump
|
||||
- PyCOMPS_Sequence.__getitem__["objectid"] implemented for libcomps.GroupList, libcomps.CategoryList, libcomps.EnvList
|
||||
- added missing files
|
||||
- missing display_order fix for libcomps.Environment
|
||||
|
||||
* Tue Oct 01 2013 Jindrich Luza <jluza@redhat.com> 0.1.4
|
||||
- added missing files
|
||||
- architectural redesign finished
|
||||
- fixed #1003986 by Gustavo Luiz Duarte guidelines (but not tested on ppc)
|
||||
- fixed bug #1000449
|
||||
- fixed bug #1000442
|
||||
- added GroupId.default test
|
||||
- some minor unreported bugs discovered during testing fixed
|
||||
- finished default attribute support in groupid object
|
||||
- Comps.get_last_parse_errors and Comps.get_last_parse_log has been renamed
|
||||
- as Comps.get_last_errors and Comps.get_last_log
|
||||
- version bumped. Python bindings is now easier.
|
||||
- added missing files
|
||||
|
||||
* Tue Aug 20 2013 Jindrich Luza <jluza@redhat.com> 0.1.3
|
||||
- finished default attribute support in groupid object
|
||||
- Comps.get_last_parse_errors and Comps.get_last_parse_log has been renamed
|
||||
- as Comps.get_last_errors and Comps.get_last_log
|
||||
- finished default attribute support in groupid object
|
||||
- Comps.get_last_parse_errors and Comps.get_last_parse_log has been renamed
|
||||
- as Comps.get_last_errors and Comps.get_last_log
|
||||
|
||||
* Thu Jul 18 2013 Jindrich Luza <jluza@redhat.com> 0.1.2
|
||||
- automatic changelog system
|
||||
- fixed issue #14
|
||||
- libcomps.Dict is now behave more like python dict. Implemented iter(libcomps.Dict)
|
||||
- libcomps.iteritems() and libcomps.itervalues()
|
||||
- remaked error reporting system.
|
||||
- libcomps.Comps.fromxml_f and libcomps.Comps.fromxml_str now return
|
||||
- -1, 0 or 1. 0 means parse procedure completed without any problem,
|
||||
- 1 means there's some errors or warnings but not fatal. -1 indicates
|
||||
- fatal error problem (some results maybe given, but probably incomplete
|
||||
- and invalid)
|
||||
- errors catched during parsing can be obtained by calling
|
||||
- libcomps.Comps.get_last_parse_errors
|
||||
- all log is given by
|
||||
- libcomps.Comps.get_last_parse_log
|
||||
- prop system complete
|
||||
- fixed issue 1
|
||||
- fixed issue 3
|
||||
- added <packagereq requires=...> support
|
||||
- new prop system in progress....
|
||||
- separated doc package
|
||||
- some minor fixes in CMakeFiles
|
||||
- improved integrated tests
|
||||
|
||||
* Tue Jun 25 2013 Jindrich Luza <jluza@redhat.com> 0.1.1-1
|
||||
- Automatic commit of package [libcomps] release [0.1.1-1].
|
||||
|
Loading…
Reference in New Issue
Block a user