summaryrefslogtreecommitdiff
path: root/add_openeuler_pkg.patch
diff options
context:
space:
mode:
Diffstat (limited to 'add_openeuler_pkg.patch')
-rw-r--r--add_openeuler_pkg.patch68
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