diff options
Diffstat (limited to 'add_openeuler_pkg.patch')
-rw-r--r-- | add_openeuler_pkg.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/add_openeuler_pkg.patch b/add_openeuler_pkg.patch new file mode 100644 index 0000000..69f5438 --- /dev/null +++ b/add_openeuler_pkg.patch @@ -0,0 +1,68 @@ +diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py b/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py +index 527c73d1..0874214d 100644 +--- a/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py ++++ b/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py +@@ -1,7 +1,10 @@ ++from os.path import dirname,basename ++import requests + import flask + + from flask import stream_with_context + from flask import send_file ++from copr_common.enums import StatusEnum + from coprs import app + from coprs import db + from coprs import forms +@@ -27,7 +30,6 @@ from coprs.exceptions import (ActionInProgressException, ObjectNotFound, NoPacka + InsufficientRightsException, MalformedArgumentException) + + +- + @coprs_ns.route("/<username>/<coprname>/packages/") + @coprs_ns.route("/g/<group_name>/<coprname>/packages/") + @req_with_copr +@@ -122,6 +124,44 @@ def copr_rebuild_all_packages(copr): + form=form, copr=copr) + + ++@coprs_ns.route("/<username>/<coprname>/package/<package_name>/add_openeuler_pkg") ++@coprs_ns.route("/g/<group_name>/<coprname>/package/<package_name>/add_openeuler_pkg") ++@req_with_copr ++def copr_add_openeuler_package(copr, package_name): ++ base_url = app.config.get("OPENEULER_PKG_ENDPOINT", "") ++ if not base_url: ++ flask.flash(f"Package contribute service is not configured.", "error") ++ return flask.redirect(helpers.copr_url("coprs_ns.copr_package", copr, package_name=package_name)) ++ ++ build = ComplexLogic.get_package_safe(copr, package_name).last_build(True) ++ if not build: ++ flask.flash(f"Package {package_name} doest not contain any successful build.", "error") ++ return flask.redirect(helpers.copr_url("coprs_ns.copr_package", copr, package_name=package_name)) ++ ++ src_rpm_url = "/".join([build.result_dir_url, basename(build.srpm_url)]) ++ if not requests.get(src_rpm_url).ok: ++ flask.flash(f"Package {package_name} srpm url{src_rpm_url} is invalid, maybe the build was pruned, please rebuild and try again.", "error") ++ return flask.redirect(helpers.copr_url("coprs_ns.copr_package", copr, package_name=package_name)) ++ ++ spec_url = "/".join([build.result_dir_url, f"{package_name}.spec"]) ++ if not requests.get(spec_url).ok: ++ bcs = build.get_chroots_by_status([StatusEnum("succeeded")]) ++ spec_url = "" ++ for bc in bcs: ++ tmp_url = "/".join([bc.result_dir_url, f"{package_name}.spec"]) ++ if requests.get(tmp_url).ok: ++ spec_url = tmp_url ++ break ++ if not spec_url: ++ flask.flash(f"Package {package_name} spec url is invalid, maybe the build was pruned, please rebuild and try again.", "error") ++ return flask.redirect(helpers.copr_url("coprs_ns.copr_package", copr, package_name=package_name)) ++ ++ pkg_url = flask.request.url_root + dirname(flask.request.path) ++ desc = f"This package is imported from EUR: {pkg_url}" ++ url = f"{base_url}?pkg_name={package_name}&desc={desc}&src_rpm_url={src_rpm_url}&spec_url={spec_url}&sig=ecopkg" ++ return flask.redirect(url) ++ ++ + @coprs_ns.route("/<username>/<coprname>/package/<package_name>/rebuild") + @coprs_ns.route("/g/<group_name>/<coprname>/package/<package_name>/rebuild") + @req_with_copr |