/* * Add a upgrade operation to the transaction * @param [Package] pkg Package to upgrade */ VALUE rpm_transaction_upgrade(VALUE trans, VALUE pkg, VALUE key) { VALUE keys; if (rb_obj_is_kind_of(pkg, rpm_cPackage) == Qfalse || TYPE(key) != T_STRING) { rb_raise(rb_eTypeError, "illegal argument type"); } keys = rb_ivar_get(trans, id_keys); if (NIL_P(keys)) { keys = rb_ary_new(); rb_ivar_set(trans, id_keys, keys); } if (rb_ary_includes(keys, key) == Qtrue) { rb_raise(rb_eArgError, "key must be unique"); } rb_ary_push(keys, key); #if RPM_VERSION_CODE < RPM_VERSION(4,1,0) rpmtransAddPackage(RPM_TRANSACTION(trans), RPM_HEADER(pkg), NULL, RSTRING_PTR(key), 1, NULL); #else rpmtsAddInstallElement(RPM_TRANSACTION(trans), RPM_HEADER(pkg), RSTRING_PTR(key), 1, NULL); #endif return Qnil; }
void RpmTransaction::addToTransactionInstall(const StringVector& files) { for (StringVector::size_type i = 0;i < files.size();i++) { FD_t fd = Fopen(files[i].c_str(), "r.ufdio"); if (fd == NULL) throw PkgBackEndException("Fopen(" + files[i] + ")"); Header hdr; int rc = rpmReadPackageHeader(fd, &hdr, 0, NULL, NULL); if (rc != 0) throw PkgBackEndException("rpmReadPackageHeader()"); rc = rpmtransAddPackage(m_ts, hdr, NULL, files[i].c_str(), 0, 0); if (rc != 0) throw PkgBackEndException("rpmtransAddPackage()"); headerFree(hdr); Fclose(fd); } }
void RpmTransaction::addToTransactionUpgrade(const StringToStringMap& files) { for (StringToStringMap::const_iterator it = files.begin();it != files.end();it++) { FD_t fd = Fopen(it->second.c_str(), "r.ufdio"); if (fd == NULL) throw PkgBackEndException("Fopen(" + it->second + ")"); Header hdr; int rc = rpmReadPackageHeader(fd, &hdr, 0, NULL, NULL); if (rc != 0) throw PkgBackEndException("rpmReadPackageHeader()"); rc = rpmtransAddPackage(m_ts, hdr, NULL, it->second.c_str(), 1, 0); if (rc != 0) throw PkgBackEndException("rpmtransAddPackage()"); headerFree(hdr); Fclose(fd); } }
void RpmTransaction::addToTransactionUpgrade(const StringVector& files) { for (StringVector::size_type i = 0;i < files.size();i++) { FD_t fd = Fopen(files[i].c_str(), "r.ufdio"); if (fd == NULL) RPMSTOP("Fopen()"); Header hdr; int rc = rpmReadPackageHeader(fd, &hdr, 0, NULL, NULL); if (rc != 0) RPMSTOP("rpmReadPackageHeader()"); rc = rpmtransAddPackage(m_ts, hdr, NULL, files[i].c_str(), 1, 0); if (rc != 0) RPMSTOP("rpmtransAddPackage()"); headerFree(hdr); Fclose(fd); } }