1 #include "rpmsystem-py.h"
5 static char rpmb__doc__[] =
9 Do any common preliminary work before python 2 vs python 3 module creation:
11 static int prepareInitModule(void)
13 if (PyType_Ready(&spec_Type) < 0) return 0;
14 if (PyType_Ready(&specPkg_Type) < 0) return 0;
19 static int initModule(PyObject *m)
21 Py_INCREF(&spec_Type);
22 PyModule_AddObject(m, "spec", (PyObject *) &spec_Type);
23 Py_INCREF(&specPkg_Type);
24 PyModule_AddObject(m, "specPkg", (PyObject *) &specPkg_Type);
26 #define REGISTER_ENUM(val) PyModule_AddIntConstant(m, #val, val)
27 REGISTER_ENUM(RPMBUILD_ISSOURCE);
28 REGISTER_ENUM(RPMBUILD_ISPATCH);
29 REGISTER_ENUM(RPMBUILD_ISICON);
30 REGISTER_ENUM(RPMBUILD_ISNO);
32 REGISTER_ENUM(RPMBUILD_NONE);
33 REGISTER_ENUM(RPMBUILD_PREP);
34 REGISTER_ENUM(RPMBUILD_BUILD);
35 REGISTER_ENUM(RPMBUILD_INSTALL);
36 REGISTER_ENUM(RPMBUILD_CHECK);
37 REGISTER_ENUM(RPMBUILD_CLEAN);
38 REGISTER_ENUM(RPMBUILD_FILECHECK);
39 REGISTER_ENUM(RPMBUILD_PACKAGESOURCE);
40 REGISTER_ENUM(RPMBUILD_PACKAGEBINARY);
41 REGISTER_ENUM(RPMBUILD_RMSOURCE);
42 REGISTER_ENUM(RPMBUILD_RMBUILD);
43 REGISTER_ENUM(RPMBUILD_RMSPEC);
45 REGISTER_ENUM(RPMBUILD_PKG_NONE);
46 REGISTER_ENUM(RPMBUILD_PKG_NODIRTOKENS);
48 REGISTER_ENUM(RPMSPEC_NONE);
49 REGISTER_ENUM(RPMSPEC_ANYARCH);
50 REGISTER_ENUM(RPMSPEC_FORCE);
51 REGISTER_ENUM(RPMSPEC_NOLANG);
56 #if PY_MAJOR_VERSION >= 3
57 static struct PyModuleDef moduledef = {
58 PyModuleDef_HEAD_INIT,
60 rpmb__doc__, /* m_doc */
64 NULL, /* m_traverse */
69 PyObject * PyInit__rpmb(void); /* XXX eliminate gcc warning */
70 PyObject * PyInit__rpmb(void)
74 if (!prepareInitModule())
76 m = PyModule_Create(&moduledef);
77 if (m == NULL || !initModule(m)) {
84 void init_rpmb(void); /* XXX eliminate gcc warning */
89 if (!prepareInitModule())
92 m = Py_InitModule3("_rpmb", NULL, rpmb__doc__);