Message ID | 20250702131032.47654-13-mzamazal@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi 2025. 07. 02. 15:10 keltezéssel, Milan Zamazal írta: > A newly introduced LIBCAMERA_CONFIG_DIR environment variable specifies a > directory or a list of directories separated by colons where to look for > the libcamera configuration file before trying the standard locations. > > Signed-off-by: Milan Zamazal <mzamazal@redhat.com> > --- > Documentation/runtime_configuration.rst | 5 +++++ > src/libcamera/global_configuration.cpp | 16 +++++++++++----- > 2 files changed, 16 insertions(+), 5 deletions(-) > > diff --git a/Documentation/runtime_configuration.rst b/Documentation/runtime_configuration.rst > index 5648db7d7..3146cdba6 100644 > --- a/Documentation/runtime_configuration.rst > +++ b/Documentation/runtime_configuration.rst > @@ -19,6 +19,11 @@ order: > - LIBCAMERA_SYSCONF_DIR/configuration.yaml > - /etc/libcamera/configuration.yaml > > +If LIBCAMERA_CONFIG_DIR environment variable is non-empty then it > +specifies additional directories where to look for the configuration > +file, before looking at the standard locations. It can be a single > +directory or multiple directories separated by colons. > + > The default name of the configuration file, configuration.yaml, can be > overridden in LIBCAMERA_CONFIG_NAME environment variable. The variable > can specify just an alternative configuration file name to be looked up > diff --git a/src/libcamera/global_configuration.cpp b/src/libcamera/global_configuration.cpp > index efc293422..13305f8c0 100644 > --- a/src/libcamera/global_configuration.cpp > +++ b/src/libcamera/global_configuration.cpp > @@ -67,11 +67,6 @@ bool GlobalConfiguration::loadFile(const std::filesystem::path &fileName) > > bool GlobalConfiguration::load() > { > - const std::vector<std::filesystem::path> globalConfigurationDirectories = { > - std::filesystem::path(LIBCAMERA_SYSCONF_DIR), > - std::filesystem::path(LIBCAMERA_DATA_DIR), > - }; > - > const char *libcameraConfigName = > utils::secure_getenv("LIBCAMERA_CONFIG_NAME"); > if (!libcameraConfigName) > @@ -86,6 +81,17 @@ bool GlobalConfiguration::load() > if (configName.empty()) > configName = std::filesystem::path("configuration.yaml"); > > + const char *configDir = utils::secure_getenv("LIBCAMERA_CONFIG_DIR"); > + std::vector<std::filesystem::path> globalConfigurationDirectories; > + if (configDir) { > + for (auto const &path : utils::split(configDir, ":")) { > + if (!path.empty()) > + globalConfigurationDirectories.push_back(path); > + } > + } > + globalConfigurationDirectories.push_back(LIBCAMERA_SYSCONF_DIR); > + globalConfigurationDirectories.push_back(LIBCAMERA_DATA_DIR); > + > std::filesystem::path userConfigurationDirectory; > const char *xdgConfigHome = utils::secure_getenv("XDG_CONFIG_HOME"); > if (xdgConfigHome) { `userConfigurationDirectory` will always have priority. Could you add it to `globalConfigurationDirectories` (and maybe rename it to configDirs or such) before `LIBCAMERA_SYSCONF_DIR` is added? So that things in $LIBCAMERA_CONFIG_DIR are always examined first. Regards, Barnabás Pőcze
Hi Barnabás, thank you for review. Barnabás Pőcze <barnabas.pocze@ideasonboard.com> writes: > Hi > > 2025. 07. 02. 15:10 keltezéssel, Milan Zamazal írta: >> A newly introduced LIBCAMERA_CONFIG_DIR environment variable specifies a >> directory or a list of directories separated by colons where to look for >> the libcamera configuration file before trying the standard locations. >> Signed-off-by: Milan Zamazal <mzamazal@redhat.com> >> --- >> Documentation/runtime_configuration.rst | 5 +++++ >> src/libcamera/global_configuration.cpp | 16 +++++++++++----- >> 2 files changed, 16 insertions(+), 5 deletions(-) >> diff --git a/Documentation/runtime_configuration.rst b/Documentation/runtime_configuration.rst >> index 5648db7d7..3146cdba6 100644 >> --- a/Documentation/runtime_configuration.rst >> +++ b/Documentation/runtime_configuration.rst >> @@ -19,6 +19,11 @@ order: >> - LIBCAMERA_SYSCONF_DIR/configuration.yaml >> - /etc/libcamera/configuration.yaml >> +If LIBCAMERA_CONFIG_DIR environment variable is non-empty then it >> +specifies additional directories where to look for the configuration >> +file, before looking at the standard locations. It can be a single >> +directory or multiple directories separated by colons. >> + >> The default name of the configuration file, configuration.yaml, can be >> overridden in LIBCAMERA_CONFIG_NAME environment variable. The variable >> can specify just an alternative configuration file name to be looked up >> diff --git a/src/libcamera/global_configuration.cpp b/src/libcamera/global_configuration.cpp >> index efc293422..13305f8c0 100644 >> --- a/src/libcamera/global_configuration.cpp >> +++ b/src/libcamera/global_configuration.cpp >> @@ -67,11 +67,6 @@ bool GlobalConfiguration::loadFile(const std::filesystem::path &fileName) >> bool GlobalConfiguration::load() >> { >> - const std::vector<std::filesystem::path> globalConfigurationDirectories = { >> - std::filesystem::path(LIBCAMERA_SYSCONF_DIR), >> - std::filesystem::path(LIBCAMERA_DATA_DIR), >> - }; >> - >> const char *libcameraConfigName = >> utils::secure_getenv("LIBCAMERA_CONFIG_NAME"); >> if (!libcameraConfigName) >> @@ -86,6 +81,17 @@ bool GlobalConfiguration::load() >> if (configName.empty()) >> configName = std::filesystem::path("configuration.yaml"); >> + const char *configDir = utils::secure_getenv("LIBCAMERA_CONFIG_DIR"); >> + std::vector<std::filesystem::path> globalConfigurationDirectories; >> + if (configDir) { >> + for (auto const &path : utils::split(configDir, ":")) { >> + if (!path.empty()) >> + globalConfigurationDirectories.push_back(path); >> + } >> + } >> + globalConfigurationDirectories.push_back(LIBCAMERA_SYSCONF_DIR); >> + globalConfigurationDirectories.push_back(LIBCAMERA_DATA_DIR); >> + >> std::filesystem::path userConfigurationDirectory; >> const char *xdgConfigHome = utils::secure_getenv("XDG_CONFIG_HOME"); >> if (xdgConfigHome) { > > > `userConfigurationDirectory` will always have priority. Could you add it to > `globalConfigurationDirectories` (and maybe rename it to configDirs or such) > before `LIBCAMERA_SYSCONF_DIR` is added? So that things in $LIBCAMERA_CONFIG_DIR > are always examined first. OK, will do. > Regards, > Barnabás Pőcze
diff --git a/Documentation/runtime_configuration.rst b/Documentation/runtime_configuration.rst index 5648db7d7..3146cdba6 100644 --- a/Documentation/runtime_configuration.rst +++ b/Documentation/runtime_configuration.rst @@ -19,6 +19,11 @@ order: - LIBCAMERA_SYSCONF_DIR/configuration.yaml - /etc/libcamera/configuration.yaml +If LIBCAMERA_CONFIG_DIR environment variable is non-empty then it +specifies additional directories where to look for the configuration +file, before looking at the standard locations. It can be a single +directory or multiple directories separated by colons. + The default name of the configuration file, configuration.yaml, can be overridden in LIBCAMERA_CONFIG_NAME environment variable. The variable can specify just an alternative configuration file name to be looked up diff --git a/src/libcamera/global_configuration.cpp b/src/libcamera/global_configuration.cpp index efc293422..13305f8c0 100644 --- a/src/libcamera/global_configuration.cpp +++ b/src/libcamera/global_configuration.cpp @@ -67,11 +67,6 @@ bool GlobalConfiguration::loadFile(const std::filesystem::path &fileName) bool GlobalConfiguration::load() { - const std::vector<std::filesystem::path> globalConfigurationDirectories = { - std::filesystem::path(LIBCAMERA_SYSCONF_DIR), - std::filesystem::path(LIBCAMERA_DATA_DIR), - }; - const char *libcameraConfigName = utils::secure_getenv("LIBCAMERA_CONFIG_NAME"); if (!libcameraConfigName) @@ -86,6 +81,17 @@ bool GlobalConfiguration::load() if (configName.empty()) configName = std::filesystem::path("configuration.yaml"); + const char *configDir = utils::secure_getenv("LIBCAMERA_CONFIG_DIR"); + std::vector<std::filesystem::path> globalConfigurationDirectories; + if (configDir) { + for (auto const &path : utils::split(configDir, ":")) { + if (!path.empty()) + globalConfigurationDirectories.push_back(path); + } + } + globalConfigurationDirectories.push_back(LIBCAMERA_SYSCONF_DIR); + globalConfigurationDirectories.push_back(LIBCAMERA_DATA_DIR); + std::filesystem::path userConfigurationDirectory; const char *xdgConfigHome = utils::secure_getenv("XDG_CONFIG_HOME"); if (xdgConfigHome) {
A newly introduced LIBCAMERA_CONFIG_DIR environment variable specifies a directory or a list of directories separated by colons where to look for the libcamera configuration file before trying the standard locations. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> --- Documentation/runtime_configuration.rst | 5 +++++ src/libcamera/global_configuration.cpp | 16 +++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-)