Source code for spack.build_systems.sourceforge

# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from typing import Optional

import spack.package_base
import spack.util.url


[docs] class SourceforgePackage(spack.package_base.PackageBase): """Mixin that takes care of setting url and mirrors for Sourceforge packages.""" #: Path of the package in a Sourceforge mirror sourceforge_mirror_path: Optional[str] = None #: List of Sourceforge mirrors used by Spack base_mirrors = [ "https://prdownloads.sourceforge.net/", "https://freefr.dl.sourceforge.net/", "https://netcologne.dl.sourceforge.net/", "https://pilotfiber.dl.sourceforge.net/", "https://downloads.sourceforge.net/", "http://kent.dl.sourceforge.net/sourceforge/", ] @property def urls(self): self._ensure_sourceforge_mirror_path_is_set_or_raise() return [ spack.util.url.join(m, self.sourceforge_mirror_path, resolve_href=True) for m in self.base_mirrors ] def _ensure_sourceforge_mirror_path_is_set_or_raise(self): if self.sourceforge_mirror_path is None: cls_name = type(self).__name__ msg = "{0} must define a `sourceforge_mirror_path` attribute" " [none defined]" raise AttributeError(msg.format(cls_name))