Fix an issue where the PACKAGEORIGIN is not properly stored. Restore the rpmtsCallback fdSetOpen call and related code. Upstream-Status: Submitted [RPM5 maintainer] Signed-off-by: Mark Hatle Index: rpm/python/rpmts-py.c =================================================================== --- rpm.orig/python/rpmts-py.c +++ rpm/python/rpmts-py.c @@ -672,6 +672,8 @@ rpmtsCallback(const void * hd, const rpm Header h = (Header) hd; struct rpmtsCallbackType_s * cbInfo = data; PyObject * pkgObj = (PyObject *) pkgKey; + PyObject * oh = NULL; + const char * origin = NULL; PyObject * args, * result; static FD_t fd; @@ -693,8 +695,16 @@ rpmtsCallback(const void * hd, const rpm pkgObj = Py_None; Py_INCREF(pkgObj); } - } else + } else { Py_INCREF(pkgObj); + /* XXX yum has (h, rpmloc) tuple as pkgKey. Extract the path. */ + if (!(PyTuple_Check(pkgObj) && PyArg_ParseTuple(pkgObj, "|Os", &oh, &origin))) + origin = NULL; + /* XXX clean up the path, yum paths start "//..." */ + if (origin && origin[0] == '/' && origin[1] == '/') + origin++; + } + PyEval_RestoreThread(cbInfo->_save); @@ -723,6 +733,9 @@ SPEW((stderr, "\t%p = fdDup(%d)\n", fd, fcntl(Fileno(fd), F_SETFD, FD_CLOEXEC); + if (origin != NULL) + (void) fdSetOpen(fd, origin, 0, 0); + return fd; } else if (what == RPMCALLBACK_INST_CLOSE_FILE) {