ESROCOS / gui-vizkit3d_taste

C wrappers of vizkit3d plugins for use in TASTE applications.
4 stars 1 forks source link

Absolute paths in the aadl #3

Closed Kynneb closed 6 years ago

Kynneb commented 6 years ago

Hey, I stumbled upon this, because of an error in the current build, but this may be a more general problem of all packages including taste projects.

Error: File '/home/esrocos/esrocos_workspace/install/types/base/base.asn' referenced in '/root/esrocos_workspace/gui/vizkit3d_taste/build/models/bodystate/DataView.aadl' could not be found.

This ist caused by dataview aadl files relating to asn files at their respective absolute paths which will break when the home folder is at a different path than in the aadl - for example at my test environment.

find /root/esrocos_workspace/install/types/ -name base.asn 

resolves for:

/root/esrocos_workspace/install/types/base/base.asn

For me this can be easly resolved by creating a symlink, changing the home path or any other creative solution. Of course it is also possible to just guarantee portability on one environment (probably the VM) but in general it would be great to be able to solve this problem differently.

Perhaps we can replace '/home/esrocos' and '/root/' by '$HOME' or perhaps directly the path to the esrocos_worspace folder?

mmunoz-gmv commented 6 years ago

This is a known issue with TASTE models. I think it's difficult to solve at TASTE level, because several tools from different contributors process the AADL files and would need to be updated. As an alternative, I was thinking on doing a path substitution file after the download of the TASTE model, and trigger it from the autoproj update method. Please, see which substitution could work (for instance, with a sed command), and then we can try to integrate it in the autoproj configuration.

Kynneb commented 6 years ago

I see. The sed command should be something like

find . -name "*.aadl" -exec sed -i -e "s+/home/esrocos+$HOME+g" {} \;
find . -name "*.aadl" -exec sed -i -e "s+/root+$HOME+g" {} \;

to have all paths converted to the platform specific home path.

but now I get a different error

[INFO]  Building C subSystems
sh: eq: command not found
sh: gnulinux: command not found
gcc: fatal error: no input files
compilation terminated.
Failed while executing:
"$GNATGCC" -c -I . -DSTATIC="" -g   -I "/usr/include/eigen3" -I "/root/esrocos_workspace/install/include" -I "/root/esrocos_workspace/install/include/orocos"  -std=c99   -I /root/esrocos_workspace/gui/vizkit3d_taste/models/bodystate/binary.c/GlueAndBuild/deploymentview_final/x86_partition -I /root/tool-inst/include/ocarina/runtime/polyorb-hi-c/include/  -DOROCOS_TARGET&eq;gnulinux -DPOSIX -D_POSIX_SOURCE -D_GNU_SOURCE  -g -Wall -Wextra -fdiagnostics-show-option -Wcast-align -Wswitch-enum -D__PO_HI_USE_TRANSPORT  -I ../../GlueAndBuild/gluevizkit3d_bodystate/  -I ../../GlueAndBuild/gluevizkit3d_bodystate/ -I ../../auto-src/ *.c
From this directory:
/root/esrocos_workspace/gui/vizkit3d_taste/models/bodystate/binary.c/vizkit3d_bodystate/vizkit3d_bodystate

do you see the problem?

mmunoz-gmv commented 6 years ago

Yes, this is a TASTE error that has already been reported and should be fixed in a future release of TASTE (it's reported as solved in Ellidiss' repository, but I think it has not yet been updated in the global TASTE setup).

The current workaround is to patch the script ~/tool-inst/bin/assert-builder-ocarina.py. In the function checkDirectives, you need to insert the following line just after the calculation of "opt" (in my current version, it's in line 515):

opt = opt.replace("&eq;", "=")

You can find more information in the following link (you need to request an account to read): https://taste.tuxfamily.org/mantis/view.php?id=775

Kynneb commented 6 years ago

That worked out, thank you.

mmunoz-gmv commented 6 years ago

Finally, instead of adding a string substitution, I followed Raquel's advice and created a script to update the DataView.aadl using paths derived from AUTOPROJ_CURRENT_ROOT.