diff options
Diffstat (limited to 'devel/py-avocado-framework/files/patch-allow-to-override-etc-dir-location')
-rw-r--r-- | devel/py-avocado-framework/files/patch-allow-to-override-etc-dir-location | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/devel/py-avocado-framework/files/patch-allow-to-override-etc-dir-location b/devel/py-avocado-framework/files/patch-allow-to-override-etc-dir-location new file mode 100644 index 000000000000..55af28d4fd5c --- /dev/null +++ b/devel/py-avocado-framework/files/patch-allow-to-override-etc-dir-location @@ -0,0 +1,122 @@ +From 4612dfa7a36c9f5520b427557dc0150bbe3af887 Mon Sep 17 00:00:00 2001 +From: Roman Bogorodskiy <bogorodskiy@gmail.com> +Date: Sun, 18 May 2025 07:11:18 +0200 +Subject: [PATCH] Allow to override /etc dir location + +Some systems, e.g. FreeBSD, place third-part software configuration +files in /usr/local/etc instead of /etc. + +Extend the install command to accept "etcprefix" option used for global +configuration paths. By default it's "/", so it keeps the current +behaviour unchanged. + +Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> +--- + avocado/core/settings.py | 3 ++- + avocado/core/utils/path.py | 4 +++- + avocado/paths.py | 2 ++ + setup.py | 23 +++++++++++++++++++++++ + 4 files changed, 30 insertions(+), 2 deletions(-) + create mode 100644 avocado/paths.py + +diff --git avocado/core/settings.py avocado/core/settings.py +index b497bf0f..b76d0d0d 100644 +--- avocado/core/settings.py ++++ avocado/core/settings.py +@@ -46,6 +46,7 @@ import re + from pkg_resources import resource_exists, resource_filename + + from avocado.core.settings_dispatcher import SettingsDispatcher ++from avocado import paths + + + def sorted_dict(dict_object): +@@ -407,7 +408,7 @@ class Settings: + self.all_config_paths.append(self._config_path_local) + + def _prepare_base_dirs(self): +- cfg_dir = "/etc" ++ cfg_dir = os.path.join(paths.ETCPREFIX, "/etc") + user_dir = os.path.expanduser("~") + + if "VIRTUAL_ENV" in os.environ: +diff --git avocado/core/utils/path.py avocado/core/utils/path.py +index 8037bdd5..5f1f9ce5 100644 +--- avocado/core/utils/path.py ++++ avocado/core/utils/path.py +@@ -1,5 +1,7 @@ + import os + ++from avocado import paths ++ + from pkg_resources import get_distribution + + +@@ -32,7 +34,7 @@ def system_wide_or_base_path(file_path): + if os.path.isabs(file_path): + abs_path = file_path + else: +- abs_path = os.path.join(os.path.sep, file_path) ++ abs_path = os.path.join(paths.ETCPREFIX, file_path) + if os.path.exists(abs_path): + return abs_path + return prepend_base_path(file_path) +diff --git avocado/paths.py avocado/paths.py +new file mode 100644 +index 00000000..4d2b2f88 +--- /dev/null ++++ avocado/paths.py +@@ -0,0 +1,2 @@ ++# To be overriden by setup.py ++ETCPREFIX = "/" +diff --git setup.py setup.py +index d9e1d795..58671d03 100755 +--- setup.py ++++ setup.py +@@ -23,6 +23,7 @@ from pathlib import Path + from subprocess import CalledProcessError, run + + import setuptools.command.develop ++import setuptools.command.install + from setuptools import Command, find_packages, setup + + # pylint: disable=E0611 +@@ -203,6 +204,27 @@ class Develop(setuptools.command.develop.develop): + self.handle_uninstall() + + ++class Install(setuptools.command.install.install): ++ """Custom install command.""" ++ ++ user_options = setuptools.command.install.install.user_options + [ ++ ("etcprefix=", None, "The etc directory prefix [default: /]"), ++ ] ++ ++ def initialize_options(self): ++ super().initialize_options() ++ self.etcprefix = "/usr/local" # pylint: disable=W0201 ++ ++ def run(self): ++ pkg_dir = os.path.join(self.build_lib, 'avocado') ++ os.makedirs(pkg_dir, exist_ok=True) ++ ++ with open(os.path.join(pkg_dir, 'paths.py'), 'w') as f: ++ f.write(f'ETCPREFIX = "{self.etcprefix}"') ++ ++ super().run() ++ ++ + class SimpleCommand(Command): + """Make Command implementation simpler.""" + +@@ -504,6 +526,7 @@ if __name__ == "__main__": + cmdclass={ + "clean": Clean, + "develop": Develop, ++ "install": Install, + "lint": Linter, + "man": Man, + "plugin": Plugin, +-- +2.49.0 + |