genodelabs/goa

abi stubs are not regenerated when versions of api archives changed

Closed this issue · 8 comments

When changing the version of an api archive used by a Goa project, the implemented symbols might change as well. However, the abi stubs stored in the var/abi/ directory are not regenerated automatically. Currently, we therefore need to remove the var/ directories when switching between Goa releases or when using --versions-from-genode-dir.

Fixed by b42988b

atopia commented

On my system this breaks any first build (i.e., goa run) with make: *** No rule to make target '/path/to/goa/examples/hello_rust/var/abi/x86_64/ld.lib.so', needed by 'default'. Stop. A subsequent goa run then succeeds. I haven't looked into the change to figure out why this happens yet.

That is strange. Can you have a look at the content of the var/ directory after the first, failed, build?

atopia commented

The directory just contains var/abi/x86_64/ld.symbols.s because the make breaks right after. For me the effect already happens with the hello_make example and no goarc. With this change reverted this does not happen. Can you reproduce this? I have looked at the commit but I wasn't able to figure out why make wouldn't apply the last rule.

No, I cannot reproduce this. What's your GNU Make version?

atopia commented

GNU Make 4.3

atopia commented

Upgrading my system to GNU Make 4.4 resolves the issue.

I added a fixup commit f96b6b0 that solves the issue with GNU Make 4.3.