Need help understanding packaging
Guido Witmond
guido at witmond.nl
Sun Jul 1 23:15:36 CEST 2018
On 06/27/2018 03:36 PM, Norman Feske wrote:
Hi Norman,
Here's my experiences with packaging my app.
1. As I'm in the role of system integrator (not genode developer), I
originally placed my feather-package in genode/projects/feather and
added that path to REPOSITORIES in genode/build/x86_64/etc/build.conf.
While that works for the make run/feather mechanism, it does not work
for the packaging. That requires the source code in
genode/repos/feather. It's in the manual but was my first stumbling block.
2. I needed to add the content.mk as well as the hash file to my recipes
directory to make the depot/create work. Without either I got the error:
"incomplete or missing recipe (guido/src/feather). It's probably in the
book but the error message is quite vague. A message "missing
file<genodedir>/repo/<repo>/recipes/src/<project>/hash" would be more
helpful. I'll add it after I get the hang of the packaging system (to
prevent adding stuff that's not needed).
3. The part where I found the documentation lacking was the description
of the content.mk file. The documentation did not lead me to a working
version. Ultimately, I copied the one from gems/.../depot_deploy and
adapted it.
After that depot/create worked. It gave me a depot/guido/src/feather
directory with the same structure as my repo/feather.
Question: do you foresee that third party developers place their git
source in repos/<developer> like I did or in depot/<developer> and
bypassing that recipes/hash/content.mk part.
4. I did a depot/build guido/bin/x86_64/feather/2018-06-30 KEEP_BUILD_DIR=1
That gave me this error:
Makefile: 131: *** "g++ version 6.3.0 is required, we got
/usr/bin/g++".
I added that last part to builddir/build.mk to diagnose what compiler
ran. It seems that this code in
depot/guido/bin/...<version>.build/etc/tools.conf expects SPECS to be
just x86_64 while specs.conf contains: SPECS += genode x86_64
ifeq ($(filter-out $(SPECS),x86_64),)
CROSS_DEV_PREFIX ?= /usr/local/genode-gcc/bin/genode-x86-
endif
It left CROSS_DEV_PREFIX unset, falling back to the compiler in $PATH.
Is this a bug or did I miss something?
5. Setting export CROSS_DEV_PREFIX=/usr/local/.../genode-x86- by hand
made the build get further. I got these errors.
"Library-description file libc.mk is missing."
(And so for libc_lwip.mk, libc_lwip_nic_dhcp.mk and posix.mk).
Here the error message is correct but lacks the hint to add the
dependencies to used_apis in the previous step.
6. After setting the dependencies in used_apis, and running create
again, I get this error at build:
checking library dependencies...
Skip target feather because it requires
libc_support_for_your_target_platform
created guido/bin/x84_64/feather/2018-07-01-b
The libc_support... 'target' suggests that it can't determine the
platform. Is that the SPECS += genode x86_64 bug again?
Yet it did create a that directory it specfied but it's empty and
further invocations of build happily tell me that there is everything is
up to date. I expect it would not make that directory or retry builing
until it has more deliverables.
Hope my feedback helps you to improve Genode.
Cheers, Guido.
More information about the users
mailing list