From 7e5257e44af139a9d9150496d81cc1c8aacb2769 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Tue, 14 Apr 2020 20:12:13 -0700 Subject: x.org: mirror mixin According to my nightly CI/CD tests, x.org is another large provider of software in common build chains that is often down. Added a hand-selected amount of mirrors that is well up-to-sync. Tested with `util-macros` that has a quite "recent" patch release. Other packages to follow in an individual PR. --- lib/spack/spack/build_systems/xorg.py | 37 ++++++++++++++++++++++ lib/spack/spack/pkgkit.py | 1 + .../repos/builtin/packages/util-macros/package.py | 4 +-- 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 lib/spack/spack/build_systems/xorg.py diff --git a/lib/spack/spack/build_systems/xorg.py b/lib/spack/spack/build_systems/xorg.py new file mode 100644 index 0000000000..815bb7c26b --- /dev/null +++ b/lib/spack/spack/build_systems/xorg.py @@ -0,0 +1,37 @@ +# Copyright 2013-2020 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) + +import spack.util.url +import spack.package + + +class XorgPackage(spack.package.PackageBase): + """Mixin that takes care of setting url and mirrors for x.org + packages.""" + #: Path of the package in a x.org mirror + xorg_mirror_path = None + + #: List of x.org mirrors used by Spack + base_mirrors = [ + 'https://www.x.org/archive/individual/', + 'https://mirrors.ircam.fr/pub/x.org/individual/', + 'http://xorg.mirrors.pair.com/individual/' + ] + + @property + def urls(self): + self._ensure_xorg_mirror_path_is_set_or_raise() + return [ + spack.util.url.join(m, self.xorg_mirror_path, + resolve_href=True) + for m in self.base_mirrors + ] + + def _ensure_xorg_mirror_path_is_set_or_raise(self): + if self.xorg_mirror_path is None: + cls_name = type(self).__name__ + msg = ('{0} must define a `xorg_mirror_path` attribute' + ' [none defined]') + raise AttributeError(msg.format(cls_name)) diff --git a/lib/spack/spack/pkgkit.py b/lib/spack/spack/pkgkit.py index e271f27f31..5c9c01ff9f 100644 --- a/lib/spack/spack/pkgkit.py +++ b/lib/spack/spack/pkgkit.py @@ -32,6 +32,7 @@ from spack.build_systems.meson import MesonPackage from spack.build_systems.sip import SIPPackage from spack.build_systems.gnu import GNUMirrorPackage from spack.build_systems.sourceware import SourcewarePackage +from spack.build_systems.xorg import XorgPackage from spack.mixins import filter_compiler_wrappers diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py index c30107033f..aed09613bf 100644 --- a/var/spack/repos/builtin/packages/util-macros/package.py +++ b/var/spack/repos/builtin/packages/util-macros/package.py @@ -6,13 +6,13 @@ from spack import * -class UtilMacros(AutotoolsPackage): +class UtilMacros(AutotoolsPackage, XorgPackage): """This is a set of autoconf macros used by the configure.ac scripts in other Xorg modular packages, and is needed to generate new versions of their configure scripts with autoconf.""" homepage = "http://cgit.freedesktop.org/xorg/util/macros/" - url = "https://www.x.org/archive/individual/util/util-macros-1.19.1.tar.bz2" + xorg_mirror_path = "util/util-macros-1.19.1.tar.bz2" version('1.19.1', sha256='18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6') version('1.19.0', sha256='2835b11829ee634e19fa56517b4cfc52ef39acea0cd82e15f68096e27cbed0ba') -- cgit v1.2.3-60-g2f50