[libcamera-devel] [PATCH LIBCAMERA v4 4/5] libcamera: ipa_proxy: search for proxy in build tree

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Mar 18 16:45:38 CET 2020


Hi Kaaira,

Thank you for the patch.

On Wed, Mar 18, 2020 at 08:54:26PM +0530, Kaaira Gupta wrote:
> When libcamera is built and tested before installing, it will
> be unable to locate the path to proxy workers, or previously
> installed files in the system path may be incorrect to load.
> 
> Hence, when libcamera is not installed, but is running from a build
> tree, identify the location of that tree by using libcameraPath(), and
> from that point add relative path to the proxy workers directory.
> 
> Signed-off-by: Kaaira Gupta <kgupta at es.iitr.ac.in>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  src/libcamera/ipa_proxy.cpp | 23 ++++++++++++++++++++++-
>  1 file changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp
> index b409e1d..2f866cc 100644
> --- a/src/libcamera/ipa_proxy.cpp
> +++ b/src/libcamera/ipa_proxy.cpp
> @@ -91,7 +91,28 @@ std::string IPAProxy::resolvePath(const std::string &file) const
>  		}
>  	}
>  
> -	/* Try finding the exec target from the install directory. */
> +	/*
> +	 * When libcamera is used before it is installed, load proxy workers
> +	 * from the same build directory as the libcamera directory itself.
> +	 * This requires identifying the path of the libcamera.so, and
> +	 * referencing a relative path for the proxy workers from that point.
> +	 */
> +	if (!utils::isLibcameraInstalled()) {
> +		std::string ipaProxyDir = utils::dirname(utils::libcameraPath())
> +					  + "/proxy/worker";
> +
> +		LOG(IPAProxy, Info)
> +			<< "libcamera is not installed. Loading proxy workers from'"
> +			<< ipaProxyDir << "'";
> +
> +		std::string proxyPath = ipaProxyDir + proxyFile;
> +		if (!access(proxyPath.c_str(), X_OK))
> +			return proxyPath;
> +
> +		return std::string();
> +	}
> +
> +	/* Else try finding the exec target from the install directory. */
>  	std::string proxyPath = std::string(IPA_PROXY_DIR) + proxyFile;
>  	if (!access(proxyPath.c_str(), X_OK))
>  		return proxyPath;

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list