From 247eb74e2a98c556b1cf06f87b0da0c2fcc82b73 Mon Sep 17 00:00:00 2001 From: Stefan Tatschner Date: Wed, 26 Jun 2024 15:06:32 +0200 Subject: [PATCH] chore: Add windows support as tier2 It will be guaranteed that gallia does not use any linux only interfaces and crashes on windows systems. That's all. --- src/gallia/command/base.py | 26 ++++++++++++++++---------- src/gallia/transports/__init__.py | 29 +++++++++++++++++------------ 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/gallia/command/base.py b/src/gallia/command/base.py index 3cba4e3e3..aa169d166 100644 --- a/src/gallia/command/base.py +++ b/src/gallia/command/base.py @@ -4,7 +4,6 @@ import argparse import asyncio -import fcntl import os import os.path import shutil @@ -20,6 +19,9 @@ from tempfile import gettempdir from typing import cast +if sys.platform != "windows": + import fcntl + import exitcode import msgspec @@ -344,7 +346,9 @@ def prepare_artifactsdir( artifacts_dir.mkdir(parents=True) self._dump_environment(artifacts_dir.joinpath(FileNames.ENV.value)) - self._add_latest_link(command_dir) + + if sys.platform != "windows": + self._add_latest_link(command_dir) return artifacts_dir.absolute() @@ -369,12 +373,13 @@ def _release_flock(self) -> None: os.close(self._lock_file_fd) def entry_point(self, args: Namespace) -> int: - if (p := args.lock_file) is not None: - try: - self._aquire_flock(p) - except OSError as e: - logger.critical(f"Unable to lock {p}: {e}") - return exitcode.OSFILE + if sys.platform != "windows": + if (p := args.lock_file) is not None: + try: + self._aquire_flock(p) + except OSError as e: + logger.critical(f"Unable to lock {p}: {e}") + return exitcode.OSFILE if self.HAS_ARTIFACTS_DIR: self.artifacts_dir = self.prepare_artifactsdir( @@ -433,8 +438,9 @@ def entry_point(self, args: Namespace) -> int: if args.hooks: self.run_hook(HookVariant.POST, args, exit_code) - if self._lock_file_fd is not None: - self._release_flock() + if sys.platform != "windows": + if self._lock_file_fd is not None: + self._release_flock() return exit_code diff --git a/src/gallia/transports/__init__.py b/src/gallia/transports/__init__.py index 2c70173ba..6d03abd6c 100644 --- a/src/gallia/transports/__init__.py +++ b/src/gallia/transports/__init__.py @@ -5,37 +5,42 @@ import sys from gallia.transports.base import BaseTransport, TargetURI -from gallia.transports.can import RawCANTransport from gallia.transports.doip import DoIPTransport -from gallia.transports.isotp import ISOTPTransport from gallia.transports.tcp import TCPLinesTransport, TCPTransport -from gallia.transports.unix import UnixLinesTransport, UnixTransport registry: list[type[BaseTransport]] = [ DoIPTransport, - ISOTPTransport, - RawCANTransport, TCPLinesTransport, TCPTransport, - UnixLinesTransport, - UnixTransport, ] __all__ = [ "BaseTransport", "DoIPTransport", - "ISOTPTransport", - "RawCANTransport", "TCPLinesTransport", "TCPTransport", - "UnixLinesTransport", - "UnixTransport", "TargetURI", ] +if sys.platform == "linux": + from gallia.transports.isotp import ISOTPTransport + registry.append(ISOTPTransport) + __all__.append("ISOTPTransport") + + from gallia.transports.can import RawCANTransport + registry.append(RawCANTransport) + __all__.append("RawCANTransport") + + from gallia.transports.unix import UnixLinesTransport, UnixTransport + registry.append(UnixLinesTransport) + __all__.append("UnixLinesTransport") + registry.append(UnixTransport) + __all__.append("UnixTransport") + + if sys.platform == "windows": - from gallia.transports import vector + from gallia.transports.vector import vector registry.append(vector.FlexrayTransport) __all__.append("FlexrayTransport")