File: defs.py

package info (click to toggle)
libzstd 1.5.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 10,352 kB
  • sloc: ansic: 89,030; sh: 3,788; python: 3,466; cpp: 2,927; makefile: 2,329; asm: 390
file content (64 lines) | stat: -rw-r--r-- 1,349 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
# SPDX-License-Identifier: BSD-2-Clause
"""Common definitions for the check-build library."""

from __future__ import annotations

import dataclasses
from typing import TYPE_CHECKING


if TYPE_CHECKING:
    import logging
    import pathlib


VERSION = "0.1.0"


@dataclasses.dataclass
class CBuildError(Exception):
    """An error that occurred during the check-build routines operation."""


@dataclasses.dataclass
class SkippedProgramError(CBuildError):
    """A program had to be skipped."""

    prog: str


@dataclasses.dataclass(frozen=True)
class Commands:
    """The commands to build and test a program."""

    clean: list[list[str]]
    build: list[list[str]]
    test: list[list[str]]


@dataclasses.dataclass(frozen=True)
class Prerequisites:
    """The prerequisites to check for before attempting to build the program."""

    programs: list[str] | None


@dataclasses.dataclass(frozen=True)
class Program:
    """The definition of a single program."""

    executable: str
    prerequisites: Prerequisites | None
    commands: Commands


@dataclasses.dataclass(frozen=True)
class Config:
    """Runtime configuration for the check-build routines."""

    force: bool
    log: logging.Logger
    program: dict[str, Program]
    selected: list[str]
    topdir: pathlib.Path