2424"""
2525from __future__ import print_function
2626
27+ import abc
2728import argparse
2829from datetime import datetime
2930import logging
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
398416class 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
445475class 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
454495class 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