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

20 statements  

« prev     ^ index     » next       coverage.py v7.8.2, created at 2025-09-07 09:27 +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 

13 

14plugin_definition = define_debputy_plugin() 

15 

16 

17@functools.lru_cache 

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

19 try: 

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

21 except FileNotFoundError: 

22 _error( 

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

24 ) 

25 except subprocess.CalledProcessError as e: 

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

27 

28 

29@plugin_definition.metadata_or_maintscript_detector 

30def perl_openssl_abi( 

31 _unused: Any, 

32 ctrl: BinaryCtrlAccessor, 

33 _context: PackageProcessingContext, 

34) -> None: 

35 cmd = os.environ.get( 

36 "_PERL_SSL_DEFAULTS_TEST_PATH", 

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

38 ) 

39 abi = _resolve_libssl_abi(cmd) 

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