12 #define _RPMTAG_INTERNAL
14 #define _RPMEVR_INTERNAL
28 #include "rpmkeyring-py.h"
29 #include "rpmmacro-py.h"
41 #define PyObject_HEAD int _PyObjectHead
57 static PyObject *
archScore(PyObject * s, PyObject * args,
63 char * kwlist[] = {
"arch", NULL};
65 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"s", kwlist, &arch))
68 #if defined(RPM_VENDOR_WINDRIVER)
69 platform =
rpmExpand(arch,
"-%{_host_vendor}",
"-%{_host_os}%{?_gnu}", NULL);
71 platform =
rpmExpand(arch,
"-",
"%{_vendor}",
"-",
"%{_os}", NULL);
74 platform =
_free(platform);
76 return Py_BuildValue(
"i", score);
86 char * kwlist[] = {
"platform", NULL};
88 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"s", kwlist, &platform))
93 return Py_BuildValue(
"i", score);
100 PyObject *caught, *o;
103 sigset_t newMask, oldMask;
105 if (!PyList_Check(check)) {
106 PyErr_SetString(PyExc_TypeError,
"list expected");
110 llen = PyList_Size(check);
111 caught = PyList_New(0);
114 (void) sigfillset(&newMask);
115 (void) sigprocmask(SIG_BLOCK, &newMask, &oldMask);
117 for (i = 0; i < llen; i++) {
118 o = PyList_GetItem(check, i);
119 signum = PyInt_AsLong(o);
121 PyList_Append(caught, o);
124 (void) sigprocmask(SIG_SETMASK, &oldMask, NULL);
133 if (!PyArg_ParseTuple(args,
":checkSignals"))
return NULL;
144 PyObject * fop = NULL;
146 char * kwlist[] = {
"fileObject", NULL};
148 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|O:logSetFile", kwlist, &fop))
152 if (!PyFile_Check(fop)) {
153 PyErr_SetString(
pyrpmError,
"requires file object");
156 fp = PyFile_AsFile(fop);
162 return (PyObject *) Py_None;
171 char * kwlist[] = {
"level", NULL};
173 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &level))
179 return (PyObject *) Py_None;
187 char * kwlist[] = {
"promote", NULL};
189 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist,
194 return (PyObject *) Py_None;
199 static PyObject *
setStats (PyObject * s, PyObject * args,
202 char * kwlist[] = {
"stats", NULL};
204 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmts_stats))
208 return (PyObject *) Py_None;
215 {
"TransactionSet", (PyCFunction)
rpmts_Create, METH_VARARGS|METH_KEYWORDS,
216 "rpm.TransactionSet([rootDir, [db]]) -> ts\n\
217 - Create a transaction set.\n" },
219 {
"addMacro", (PyCFunction) rpmmacro_AddMacro, METH_VARARGS|METH_KEYWORDS,
221 {
"delMacro", (PyCFunction) rpmmacro_DelMacro, METH_VARARGS|METH_KEYWORDS,
223 {
"expandMacro", (PyCFunction)rpmmacro_ExpandMacro, METH_VARARGS|METH_KEYWORDS,
225 {
"getMacros", (PyCFunction) rpmmacro_GetMacros, METH_VARARGS|METH_KEYWORDS,
228 {
"archscore", (PyCFunction)
archScore, METH_VARARGS|METH_KEYWORDS,
230 {
"platformscore", (PyCFunction)
platformScore, METH_VARARGS|METH_KEYWORDS,
235 {
"checkSignals", (PyCFunction)
checkSignals, METH_VARARGS,
238 {
"headerLoad", (PyCFunction)
hdrLoad, METH_VARARGS|METH_KEYWORDS,
241 {
"readHeaderListFromFD", (PyCFunction)
rpmHeaderFromFD, METH_VARARGS|METH_KEYWORDS,
243 {
"readHeaderListFromFile", (PyCFunction)
rpmHeaderFromFile, METH_VARARGS|METH_KEYWORDS,
247 {
"writeHeaderListToFD", (PyCFunction)
rpmHeaderToFD, METH_VARARGS|METH_KEYWORDS,
249 {
"writeHeaderListToFile", (PyCFunction)
rpmHeaderToFile, METH_VARARGS|METH_KEYWORDS,
252 {
"setLogFile", (PyCFunction)
setLogFile, METH_VARARGS|METH_KEYWORDS,
255 {
"versionCompare", (PyCFunction)
versionCompare, METH_VARARGS|METH_KEYWORDS,
257 {
"labelCompare", (PyCFunction)
labelCompare, METH_VARARGS|METH_KEYWORDS,
259 {
"setVerbosity", (PyCFunction)
setVerbosity, METH_VARARGS|METH_KEYWORDS,
261 {
"setEpochPromote", (PyCFunction)
setEpochPromote, METH_VARARGS|METH_KEYWORDS,
263 {
"setStats", (PyCFunction)
setStats, METH_VARARGS|METH_KEYWORDS,
266 {
"dsSingle", (PyCFunction)
rpmds_Single, METH_VARARGS|METH_KEYWORDS,
267 "rpm.dsSingle(TagN, N, [EVR, [Flags]] -> ds\n\
268 - Create a single element dependency set.\n" },
285 PyObject * dict = PyDict_New();
289 PyObject *pyval, *pyname;
290 rpmtd names = rpmtdNew();
291 rpmTagGetNames(names, 1);
292 const char *tagname, *shortname;
295 while ((tagname = rpmtdNextString(names))) {
296 shortname = tagname + strlen(
"RPMTAG_");
297 tagval = rpmTagGetValue(shortname);
299 PyModule_AddIntConstant(module, tagname, tagval);
300 pyval = PyInt_FromLong(tagval);
301 pyname = PyString_FromString(shortname);
302 PyDict_SetItem(dict, pyval, pyname);
306 PyModule_AddObject(module,
"tagnames", dict);
307 rpmtdFreeData(names);
312 PyObject * d = PyModule_GetDict(module);
315 {
const struct headerTagTableEntry_s * t;
318 PyDict_SetItemString(d, (
char *) t->name, to=PyInt_FromLong(t->val));
320 PyDict_SetItem(dict, to, o=PyString_FromString(t->name + 7));
329 for (ext = exts, extNum = 0; ext != NULL && ext->type != HEADER_EXT_LAST;
330 ext = (ext->type == HEADER_EXT_MORE ? *ext->u.more : ext+1), extNum++)
332 if (ext->name == NULL || ext->type != HEADER_EXT_TAG)
334 PyDict_SetItemString(d, (
char *) ext->name, to=PyCObject_FromVoidPtr((
void *)ext, NULL));
336 PyDict_SetItem(dict, to, o=PyString_FromString(ext->name + 7));
341 PyDict_SetItemString(d,
"tagnames", dict);
357 PyObject * d, * o, * m;
359 #if Py_TPFLAGS_HAVE_ITER
360 if (PyType_Ready(&
hdr_Type) < 0)
return;
369 if (PyType_Ready(&rpmtd_Type) < 0)
return;
370 if (PyType_Ready(&rpmKeyring_Type) < 0)
return;
371 if (PyType_Ready(&rpmPubkey_Type) < 0)
return;
375 if (PyType_Ready(&
spec_Type) < 0)
return;
391 d = PyModule_GetDict(m);
394 pyrpmError = PyString_FromString(
"_rpm.error");
398 pyrpmError = PyErr_NewException(
"_rpm.error", NULL, NULL);
403 #if Py_TPFLAGS_HAVE_ITER
405 PyModule_AddObject(m,
"hdr", (PyObject *) &
hdr_Type);
408 PyModule_AddObject(m,
"al", (PyObject *) &
rpmal_Type);
411 PyModule_AddObject(m,
"ds", (PyObject *) &
rpmds_Type);
414 PyModule_AddObject(m,
"fd", (PyObject *) &
rpmfd_Type);
417 PyModule_AddObject(m,
"fts", (PyObject *) &
rpmfts_Type);
420 PyModule_AddObject(m,
"fi", (PyObject *) &
rpmfi_Type);
422 Py_INCREF(&rpmKeyring_Type);
423 PyModule_AddObject(m,
"Keyring", (PyObject *) &rpmKeyring_Type);
424 Py_INCREF(&rpmPubkey_Type);
425 PyModule_AddObject(m,
"Pubkey", (PyObject *) &rpmPubkey_Type);
428 PyModule_AddObject(m,
"mi", (PyObject *) &
rpmmi_Type);
431 PyModule_AddObject(m,
"ps", (PyObject *) &
rpmps_Type);
433 Py_INCREF(&rpmtd_Type);
434 PyModule_AddObject(m,
"td", (PyObject *) &rpmtd_Type);
437 PyModule_AddObject(m,
"te", (PyObject *) &
rpmte_Type);
440 PyModule_AddObject(m,
"ts", (PyObject *) &
rpmts_Type);
443 PyModule_AddObject(m,
"spec", (PyObject *) &
spec_Type);
460 #define REGISTER_ENUM(val) \
461 PyDict_SetItemString(d, #val, o=PyInt_FromLong( val )); \