[PATCH i-g-t v4 3/5] runner/settings: Add function to set IGT_DATA_PATH environment variable

Kamil Konieczny kamil.konieczny at linux.intel.com
Fri Apr 4 15:21:38 UTC 2025


Hi Naladala,
On 2025-03-26 at 02:31:44 +0530, Naladala Ramanaidu wrote:
> Add environment variable to obtain absolute path for PNG files
> at runtime.
> 
> v2: Fix review comments. (Kamil)
> v3: Fix review comments. (kamil)
> V4: Fix review comments. (kamil)
> 
> Signed-off-by: Naladala Ramanaidu <ramanaidu.naladala at intel.com>
> ---
>  runner/settings.c | 22 ++++++++++++++++++++++
>  runner/settings.h |  1 +
>  2 files changed, 23 insertions(+)
> 
> diff --git a/runner/settings.c b/runner/settings.c
> index 1ccf345d9..94c95f26e 100644
> --- a/runner/settings.c
> +++ b/runner/settings.c
> @@ -612,6 +612,21 @@ char *absolute_path(const char *path)
>  	return result;
>  }
>  
> +int set_tests_datadir(void)
> +{
> +	const char *datapath = "../share/igt-gpu-tools";

Hmm, maybe try also a build folder for local runs?

../build/data
../../build/data

> +	char *abpath;
> +
> +	abpath = absolute_path(datapath);

Make sure abpath is not NULL before using it.

> +
> +	if (getenv("IGT_DATA_PATH") == NULL)

Please make it simpler:
	if (getenv("IGT_DATA_PATH"))
		return 0;

And here add checks and settings.

> +		return setenv("IGT_DATA_PATH", abpath, 1);

Btw no need for "1" - you already checked it is unset.

> +
> +	return 0;
> +}
> +
> +
> +
>  static char *bin_path(char *fname)
>  {
>  	char *path, *p;
> @@ -654,6 +669,10 @@ void init_settings(struct settings *settings)
>  {
>  	memset(settings, 0, sizeof(*settings));
>  	IGT_INIT_LIST_HEAD(&settings->env_vars);
> +
> +	if (set_tests_datadir())
> +		fprintf(stderr, "Data dir path not set\n");

Could you also add printing of data path here?

	else
		printf("IGT data/ path: %s/\n", setting->data_path);

> +
>  	igt_vec_init(&settings->hook_strs, sizeof(char *));
>  }
>  
> @@ -671,6 +690,9 @@ void clear_settings(struct settings *settings)
>  	free_hook_strs(&settings->hook_strs);
>  	free_array_deep((void **)settings->cmdline.argv, settings->cmdline.argc);
>  
> +	if (getenv("IGT_DATA_PATH") != NULL)
> +		unsetenv("IGT_DATA_PATH");
> +

Please remember that is was set by runner so only unset this
if runner was setting this env var.

Overall looks good,

Regards,
Kamil

>  	init_settings(settings);
>  }
>  
> diff --git a/runner/settings.h b/runner/settings.h
> index 30743fc40..cbcf624b0 100644
> --- a/runner/settings.h
> +++ b/runner/settings.h
> @@ -156,5 +156,6 @@ bool serialize_settings(struct settings *settings);
>  
>  bool read_settings_from_file(struct settings *settings, FILE* f);
>  bool read_settings_from_dir(struct settings *settings, int dirfd);
> +int set_tests_datadir(void);
>  
>  #endif
> -- 
> 2.43.0
> 


More information about the igt-dev mailing list