From a301779304f1a9779b4bd2874d5a8c583e886d03 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sat, 4 Jan 2020 00:54:23 +0300 Subject: boost/build: download older Boost releases from SourceForge --- boost/build/build.py | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'boost') diff --git a/boost/build/build.py b/boost/build/build.py index 7668330..032bdab 100755 --- a/boost/build/build.py +++ b/boost/build/build.py @@ -12,8 +12,10 @@ import abc import argparse +from collections import namedtuple from contextlib import contextmanager from enum import Enum +from functools import total_ordering import logging import os.path import platform @@ -98,18 +100,41 @@ def _parse_configuration(s): raise argparse.ArgumentTypeError(f'invalid configuration: {s}') +Version = namedtuple('Version', ['major', 'minor', 'patch']) + + +@total_ordering class BoostVersion: def __init__(self, major, minor, patch): - self.major = major - self.minor = minor - self.patch = patch + self._impl = Version(major, minor, patch) + + @property + def major(self): + return self._impl.major + + @property + def minor(self): + return self._impl.minor + + @property + def patch(self): + return self._impl.patch + + def __lt__(self, other): + return self._impl < other._impl + + def __eq__(self, other): + return self._impl == other._impl @staticmethod def from_string(s): result = re.match(r'^(\d+)\.(\d+)\.(\d+)$', s) if result is None: raise ValueError(f'invalid Boost version: {s}') - return BoostVersion(result.group(1), result.group(2), result.group(3)) + major = int(result.group(1)) + minor = int(result.group(2)) + patch = int(result.group(3)) + return BoostVersion(major, minor, patch) def __str__(self): return f'{self.major}.{self.minor}.{self.patch}' @@ -130,6 +155,8 @@ class BoostVersion: return f'{self.dir_name}{self.archive_ext}' def get_download_url(self): + if self._impl < Version(1, 63, 0): + return f'https://sourceforge.net/projects/boost/files/boost/{self}/{self.archive_name}/download' return f'https://dl.bintray.com/boostorg/release/{self}/source/{self.archive_name}' -- cgit v1.2.3