depot/build creates target directory with missing dependencies

Norman Feske norman.feske at genode-labs.com
Fri Jul 6 11:43:08 CEST 2018


Hi Guido,

> I think I start to get the hang of the depot system. However, I get this
> behaviour with missing depencencies:
> 
> $ tool/depot/create guido/src/feather
> created guido/src/feather/2018-07-04-c
> 
> $ tool/depot/build guido/bin/x86_64/feather/2018-07-04-c KEEP_BUILD_DIR=1
> ...
> Library description file libc_lwip.mk is missing
> Library description file libc_lwip_nic_dhcp.mk is missing
> created guido/bin/x86_64/feather/2018-07-04-c
> 
> But that directory is completely empty.

this can be explained: The binary archive is built by creating a build
directory with all src and api archives incorporated as REPOSITORIES,
and executing 'make' within this build directory. The latter will build
all targets that are available under this build-directory configuration.
It's the regular build system of Genode at work. If it encounters a
target that cannot be built because a library is missing or a SPEC value
is not set, it prints a message, skips the target, and proceeds with
building all other targets.

Since your src archive has no other target, the <build-dir>/bin/
directory remains empty. From the perspective of the depot/build tool,
the package is complete. The tool does not care about the content of
bin/ (or the absence of any content). It just copies is to the binary
archive.

So the problem comes down to the missing library definitions as printed
in the messages.

There are no API archives for those because they are meant to be
replaced by the VFS-based networking stacks like the vfs_lxip plugin. So
it is not worth further cultivating those old libraries. As reference of
how to use and configure lxIP, you may find the fetchurl.run script [1]
useful. BTW, an lwIP-based VFS plugin is currently in the works too [2].

[1]
https://github.com/genodelabs/genode/blob/master/repos/libports/run/fetchurl.run
[2] https://github.com/genodelabs/genode/issues/2335

> Running the command a second time give me:
> 
> make[1]: Nothing to be done for 'all'.

That is because the binary archive was built already. Granted, it's
empty. But rebuilding it would also create an empty one.

> As there are missing dependencies, I'd expect the second run to give the
> same error as the first run, not a message that everything is fine. To
> retry I currently rm -r depot/guido and create and build again or add
> the REBUILD=1 flag.

The REBUILD flag must be combined with FORCE=1 as it tweaks the
operation of FORCE. FORCE=1 implies REBUILD=1.

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth



More information about the users mailing list