Coder Social home page Coder Social logo

Comments (1)

130s avatar 130s commented on July 17, 2024

Changed 15 months ago by bhaskara

I see the problem but don't understand your solution. Can you give an example of the specific paths that would be used?

Changed 15 months ago by kruset

Fasls for ROS package /opt/ros/electric/stacks/common_msgs/geometry_msgs would go into ~/.ros/roslisp/opt/ros/electric/stacks/common_msgs/geometry_msgs

/opt/ros/diamondback/stacks/common_msgs/geometry_msgs would go into ~/.ros/roslisp/opt/ros/diamondback/stacks/common_msgs/geometry_msgs

/home/username/work/ros/sandbox/common_msgs/geometry_msgs would go into ~/.ros/roslisp/home/username/work/ros/sandbox/common_msgs/geometry_msgs

Changed 15 months ago by kruset

Hm, actually this still does not quite help. When switching between electric and diamondback the fasls at

~/.ros/roslisp/home/username/work/ros/sandbox/common_msgs/geometry_msgs 

could still conflict. So it would be even better to combine ROS_ROOT and path/to/file. That still leaves ambiguity for manually switching sbcl versions, so if we can also encode sbcl version, even better. Like: ~/.ros/roslisp/geometry_msgs/opt/ros/electric/sbcl-1.0.50/home/username/work/ros/sandbox/common_msgs/geometry_msgs The path could be somewhat reduced without too much risk by replacing "/opt/ros/electric" with just "electric" and starting at ~ for local files.

e.g. ~/.ros/roslisp/geometry_msgs/electric/sbcl-1.0.50/work/ros/sandbox/common_msgs/geometry_msgs

better ideas?

Changed 15 months ago by moesenle

Actually, I don't see that as an issue. Using the same package with different ROS distros at the same time is always a bad idea and you can run into all different kinds of inconsistencies not only with roslisp. Normally, I think users have one checkout per distro and not one checkout for all distros.

I think we shouldn't complicate this too much and try to find the minimal working solution. Just using $ROS_HOME/roslisp/ is fine and the corresponding patch should be pretty straight forward. Also, encoding the sbcl version shouldn't really be necessary since we catch the 'incompatible fasl' error and trigger recompilation in that case anyway.

To summarize, the only case where I see problems are lisp packages that lie in /opt/ros, mostly messages. When the user uses multiple distros at the same time, we either need to have the fasls at distinct locations or make sure that they are recompiled whenever the distro is switched. Currently, we (I guess) sort of implement the latter case. This might lead to lot's of unnecessary compilations and depending on asdf might even cause problems when the file dates don't indicate that recompilation is necessary. That means we actually want the former case implemented.

I will have a look at the source code and see if I can provide a quick patch as soon as I find some time.

Changed 11 months ago by kruset

Given similar issues with rosjava, I suggested a solution of either making rosinstall set a different ROS_HOME for each distro/rosinstall location, or a new ros env variable for binaries that rosinstall would set, leaving ROS_HOME fixed for non-conflicting data.

from roslisp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.