From 792b2ac5fca3d9e66ad199ed8a6fad5965e30907 Mon Sep 17 00:00:00 2001 From: Lars Karlitski Date: Sat, 17 Oct 2020 19:18:53 +0200 Subject: [PATCH] tools/mpp-depsolve: ensure canonical urls Technically, a few extra "/"s don't matter, but in practice, it sometimes does. In particular, rpmrepo returns `500 Internal Server Error` when a path contains additional "/"s. --- tools/mpp-depsolve.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/mpp-depsolve.py b/tools/mpp-depsolve.py index caf2ebf2..9839f6ab 100755 --- a/tools/mpp-depsolve.py +++ b/tools/mpp-depsolve.py @@ -49,6 +49,7 @@ import json import os import sys import tempfile +import urllib.parse import dnf import hawkey @@ -169,7 +170,11 @@ def _manifest_depsolve(state, stage): deps = _dnf_resolve(state, options_mpp) for dep in deps: options_packages.append(dep["checksum"]) - state.manifest_urls[dep["checksum"]] = baseurl + "/" + dep["path"] + # dep["path"] often starts with a "/", even though it's meant to be + # relative to `baseurl`. Strip any leading slashes, but ensure there's + # exactly one between `baseurl` and the path. + url = urllib.parse.urljoin(baseurl + "/", dep["path"].lstrip("/")) + state.manifest_urls[dep["checksum"]] = url def _main_args(argv):