Skip to content

Commit 991c6b2

Browse files
Migrate AbstractBuilder to abc
1 parent 5d8ec9a commit 991c6b2

1 file changed

Lines changed: 78 additions & 26 deletions

File tree

Tools/ssl/multissltests.py

Lines changed: 78 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"""
2525
from __future__ import print_function
2626

27+
import abc
2728
import argparse
2829
from datetime import datetime
2930
import logging
@@ -146,18 +147,34 @@
146147
)
147148

148149

149-
class AbstractBuilder(object):
150-
library = None
151-
url_templates = None
152-
src_template = None
153-
build_template = None
150+
class AbstractBuilder(object, metaclass=abc.ABCMeta):
154151
depend_target = None
155152
install_target = 'install'
156153
if hasattr(os, 'process_cpu_count'):
157154
jobs = os.process_cpu_count()
158155
else:
159156
jobs = os.cpu_count()
160157

158+
@property
159+
@abstractmethod
160+
def library(self):
161+
pass
162+
163+
@property
164+
@abstractmethod
165+
def url_templates(self):
166+
pass
167+
168+
@property
169+
@abstractmethod
170+
def src_template(self):
171+
pass
172+
173+
@property
174+
@abstractmethod
175+
def build_template(self):
176+
pass
177+
161178
module_files = (
162179
os.path.join(PYTHONROOT, "Modules/_ssl.c"),
163180
os.path.join(PYTHONROOT, "Modules/_hashopenssl.c"),
@@ -167,9 +184,10 @@ class AbstractBuilder(object):
167184
def __init__(self, version, args):
168185
self.version = version
169186
self.args = args
187+
libdir = self.library.lower().replace("-", "")
170188
# installation directory
171189
self.install_dir = os.path.join(
172-
os.path.join(args.base_directory, self.library.lower()), version
190+
os.path.join(args.base_directory, libdir), version
173191
)
174192
# source file
175193
self.src_dir = os.path.join(args.base_directory, 'src')
@@ -396,18 +414,30 @@ def run_python_tests(self, tests, network=True):
396414

397415

398416
class BuildOpenSSL(AbstractBuilder):
399-
library = "OpenSSL"
400-
url_templates = (
401-
"https://github.com/openssl/openssl/releases/download/openssl-{v}/openssl-{v}.tar.gz",
402-
"https://www.openssl.org/source/openssl-{v}.tar.gz",
403-
"https://www.openssl.org/source/old/{s}/openssl-{v}.tar.gz"
404-
)
405-
src_template = "openssl-{}.tar.gz"
406-
build_template = "openssl-{}"
407417
# only install software, skip docs
408418
install_target = 'install_sw'
409419
depend_target = 'depend'
410420

421+
@property
422+
def library(self):
423+
return "OpenSSL"
424+
425+
@property
426+
def url_templates(self):
427+
return (
428+
"https://github.com/openssl/openssl/releases/download/openssl-{v}/openssl-{v}.tar.gz",
429+
"https://www.openssl.org/source/openssl-{v}.tar.gz",
430+
"https://www.openssl.org/source/old/{s}/openssl-{v}.tar.gz",
431+
)
432+
433+
@property
434+
def src_template(self):
435+
return "openssl-{}.tar.gz"
436+
437+
@property
438+
def build_template(self):
439+
return "openssl-{}"
440+
411441
def _post_install(self):
412442
if self.version.startswith("3."):
413443
self._post_install_3xx()
@@ -443,21 +473,43 @@ def short_version(self):
443473

444474

445475
class BuildLibreSSL(AbstractBuilder):
446-
library = "LibreSSL"
447-
url_templates = (
448-
"https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-{v}.tar.gz",
449-
)
450-
src_template = "libressl-{}.tar.gz"
451-
build_template = "libressl-{}"
476+
@property
477+
def library(self):
478+
return "LibreSSL"
479+
480+
@property
481+
def url_templates(self):
482+
return (
483+
"https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-{v}.tar.gz",
484+
)
485+
486+
@property
487+
def src_template(self):
488+
return "libressl-{}.tar.gz"
489+
490+
@property
491+
def build_template(self):
492+
"libressl-{}"
452493

453494

454495
class BuildAWSLC(AbstractBuilder):
455-
library = "AWS-LC"
456-
url_templates = (
457-
"https://github.com/aws/aws-lc/archive/refs/tags/v{v}.tar.gz",
458-
)
459-
src_template = "aws-lc-{}.tar.gz"
460-
build_template = "aws-lc-{}"
496+
@property
497+
def library(self):
498+
return "AWS-LC"
499+
500+
@property
501+
def url_templates(self):
502+
return (
503+
"https://github.com/aws/aws-lc/archive/refs/tags/v{v}.tar.gz",
504+
)
505+
506+
@property
507+
def src_template(self):
508+
return "aws-lc-{}.tar.gz"
509+
510+
@property
511+
def build_template(self):
512+
return "aws-lc-{}"
461513

462514
def _build_src(self, config_args=()):
463515
cwd = self.build_dir

0 commit comments

Comments
 (0)