Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bitbake runtime vs build dependency

I am having trouble understanding the bitbake recipes. (I have some poorly written I need to modify, I usually would read and understand the whole mechanism but sadly I am on a tight schedule). Can you please help me understand the difference between RDEPENDS and DEPENDS. I read the reference and I know that they stand for runtime dependency and build dependency respectively, but what is the effect on it in a bitbake recipe? As far as I understand, if a package A depends on another B, B has to be built and ready to enable A to build. Bitbake isn't related to the runtime, it's only there for building and deploying the packages. So what is the difference?

like image 232
lulijeta Avatar asked Jun 12 '15 12:06

lulijeta


People also ask

What is a build dependency?

A dependency is something that a package requires either to run the package (a run-time dependency) or to build the package (a build-time or compile-time, dependency).

What is difference between Depends and Rdepends?

In other words, DEPENDS are those set of packages that should be available while building package, whereas RDEPENDS are set of packages that should be available during execution of the program.

What does BitBake command do?

The bitbake command builds platform projects, application source, and packages. BitBake is the overall control program, which manages builds of all the packages and of the overall system. It builds platform projects, application source, and packages.


1 Answers

As you say, bitbake is concerned with building and deploying the packages, and it needs to deploy all the packages that are needed to satisfy runtime dependencies on the target system.

If your recipe says that target T DEPENDS on a target P, that tells bitbake that it must build P before T, because T can't be built without P.

If your recipe says that T RDEPENDS on P, that tells bitbake that it must deploy P to the target system if it deploys T, because T can't be used without P.

For example, you can't build tar without the C compiler, but you don't need the C compiler to use tar. You can deploy tar without deploying the C compiler. So that's a DEPEND.

On the other hand, you can't use tar without the runtime C library. If tar is deployed, the runtime C library must also be deployed. So that's an RDEPEND.

The bitake technicalities are:

  • If T DEPENDS on P then T's do_configure task is made to depend on P's do_populate_sysroot task.

  • If T RDEPENDS on P then T's do_build task ia made to depend on P's do_package_write task.

like image 176
Mike Kinghan Avatar answered Oct 05 '22 02:10

Mike Kinghan