if (disable_tests)
flags |= PAKFIRE_BUILD_DISABLE_TESTS;
- Py_BEGIN_ALLOW_THREADS
-
// Create a new build environment
r = pakfire_build_create(&build, self->pakfire, build_id, flags);
- if (r)
+ if (r) {
+ PyErr_SetFromErrno(PyExc_OSError);
goto ERROR;
+ }
// Set target
if (target) {
r = pakfire_build_set_target(build, target);
- if (r)
+ if (r) {
+ PyErr_SetFromErrno(PyExc_OSError);
goto ERROR;
+ }
}
+ Py_BEGIN_ALLOW_THREADS
+
// Run build
r = pakfire_build_exec(build, path);
+ if (r) {
+ Py_BLOCK_THREADS;
+
+ if (r < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+
+ // Raise a command execution error
+ } else {
+ PyObject* code = PyLong_FromLong(r);
+
+ PyErr_SetObject(PyExc_CommandExecutionError, code);
+ Py_DECREF(code);
+ }
+
+ goto ERROR;
+ }
+
+ Py_END_ALLOW_THREADS
ERROR:
if (build)
pakfire_build_unref(build);
- Py_END_ALLOW_THREADS
+ if (r)
+ return NULL;
- return execute_return_value(r);
+ Py_RETURN_NONE;
}
static PyObject* Pakfire_shell(PakfireObject* self, PyObject* args, PyObject* kwargs) {