Coverage for debputy/plugins/perl_openssl.py: 80%

20 statements  

« prev     ^ index     » next       coverage.py v7.8.2, created at 2026-04-19 20:37 +0000

1import functools 

2import os 

3import subprocess 

4from typing import Any 

5 

6from debputy.plugin.api import ( 

7 define_debputy_plugin, 

8 BinaryCtrlAccessor, 

9 PackageProcessingContext, 

10) 

11from debputy.util import _error 

12 

13plugin_definition = define_debputy_plugin() 

14 

15 

16@functools.lru_cache 

17def _resolve_libssl_abi(cmd: str) -> str: 

18 try: 

19 return subprocess.check_output([cmd]).strip().decode("utf-8") 

20 except FileNotFoundError: 

21 _error( 

22 "The perl-openssl plugin requires that perl-openssl-defaults + libssl-dev is installed" 

23 ) 

24 except subprocess.CalledProcessError as e: 

25 _error(f"Command {cmd} failed. Exit code was: {e.returncode}") 

26 

27 

28@plugin_definition.metadata_or_maintscript_detector 

29def perl_openssl_abi( 

30 _unused: Any, 

31 ctrl: BinaryCtrlAccessor, 

32 _context: PackageProcessingContext, 

33) -> None: 

34 cmd = os.environ.get( 

35 "_PERL_SSL_DEFAULTS_TEST_PATH", 

36 "/usr/share/perl-openssl-defaults/get-libssl-abi", 

37 ) 

38 abi = _resolve_libssl_abi(cmd) 

39 ctrl.substvars.add_dependency("perl:Depends", f"perl-openssl-abi-{abi}")