[ros-users] [Ros-developers] suggest new ros shebang command

Ken Conley kwc at willowgarage.com
Wed Aug 10 17:46:50 UTC 2011


On Wed, Aug 10, 2011 at 9:44 AM, William Woodall <wjwwood at gmail.com> wrote:
> +1
> I wonder if this could also be used to control which version of Python you
> are using without changing the paths and such.  I have been working on
> making ros, ros_comm, and common_msgs more Python 2/3 portable because of
> MORSE, which uses Blender, which requires Python3.  I had considered setting
> something like env['ROS_PYTHON'] and replacing the #!/usr/bin/env python
> lines with something like ros-shebang that would select python executables
> and paths based on the environment variable.  This isn't something I see
> people doing often, but it might be a use case to consider when designing
> this tool.  There might also be a better/existing way of doing what I am
> talking about, but I am just not aware of it.

Michael Karg, Séverin Lemaignan, and Lorenz Mösenlechner have been
working on the above MORSE problem by making the Python code Py3k
compatible. You may want to look at:

https://code.ros.org/trac/ros/ticket/3166
https://code.ros.org/trac/ros/ticket/3576
https://code.ros.org/trac/ros/ticket/3627

Most of the patches have been merged and they have been using MORSE with ROS.

So as to not bomb this thread, please start a new thread if you wish
to discuss the above.

 - Ken

> Looks good,
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> William Woodall
> Graduate Software Engineering
> Auburn University
> w at auburn.edu
> wjwwood at gmail.com
> williamjwoodall.com
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
> On Wed, Aug 10, 2011 at 11:21 AM, Ken Conley <kwc at willowgarage.com> wrote:
>>
>> +1
>>
>> If shorter names are being debated, I offer 'rosbang'.  The placement
>> of the hyphen in ros-shebang doesn't quite feel like a ros command
>> name.
>>
>> I should also note that part of this discussion also includes what
>> distributions ros-shebang should be included in, i.e. should it be
>> backported to diamondback, sneak in through the electric freeze,
>> etc...
>>
>> The hashbang spec has definitely been an impediment for having a good
>> ease-of-use with rosh, so I support at least having this in ROS
>> Electric.  I'm indifferent to ROS Diamondback as my development is
>> always focused on the latest-and-greatest release.
>>
>>  - Ken
>>
>> On Tue, Aug 9, 2011 at 2:40 PM, Thibault Kruse <kruset at in.tum.de> wrote:
>> > Hi,
>> >
>> > I would like to make a suggestion.
>> >
>> > I want to add a command (called ros-shebang for now) to ros/bin that
>> > runs
>> > script files by invoking a second shebang line.
>> >
>> > This allows invoking script interpreters with #! and passing additional
>> > arguments, as well as invoking interpreters that live in ROS packages.
>> >
>> > My stake is calling an interpreter for roslisp scripting. However a
>> > similar concern is invoking of rosh plugins, see
>> > http://www.ros.org/wiki/rosh/Overview/Roshlets
>> >
>> > Example for rosh:
>> > #! /usr/bin/env ros-shebang
>> > #! /usr/bin/env rosrun rosh rosh rosh/echolet.py
>> > --plugins=rosh_common,rosh_geometry
>> >
>> > Example for roslisp:
>> >
>> > #! /usr/bin/env ros-shebang
>> > ;; /usr/bin/env rosrun sbcl run-sbcl.sh --script
>> >
>> > One less known alternative is to use other directives to declare the
>> > script interpreter than #!, (in case you wonder, for lisp, #| and ":";
>> > work) however this does not work with python subprocess.Popen, which
>> > means
>> > roslaunch and rostest would fail to run scripts like that (except using
>> > shell=True, but this is strongly discouraged for security and
>> > portability
>> > reasons).
>> >
>> > Alternatives:
>> > - A modification to roslaunch syntax to allow forcing shell=true
>> >
>> > - an executable in ros/bin that executes roslisp scripts, such that we
>> > could write:
>> > #! /usr/bin/env ros-run-roslisp-script
>> >
>> > - A required fixed installation of our lisp implementation, or some
>> > custom
>> > made variant of /usr/bin/env
>> >
>> >
>> > I wrote a ros-shebang script in python that works, which is no more
>> > magic
>> > than reading the second line and calling python execvp on it (minus the
>> > first two symbols).
>> >
>> > If a new command were introduced to ros/bin, this would affect more
>> > people
>> > than those working with roslisp, so opinions should be heard. There is
>> > no
>> > urgency to this, roslisp works fine as it is without offering
>> > comfortable
>> > scripting, just as rosh works fine by loading plugins after the shebang
>> > line.
>> >
>> > Not sure if there are other scripting interpreter usages with similar
>> > issues in ROS (Java, Lua, Javascript, ...).
>> >
>> > Thoughts?
>> >
>> >  Thibault
>> >
>> > _______________________________________________
>> > ros-developers mailing list
>> > ros-developers at code.ros.org
>> > https://code.ros.org/mailman/listinfo/ros-developers
>> > _______________________________________________
>> > ros-users mailing list
>> > ros-users at code.ros.org
>> > https://code.ros.org/mailman/listinfo/ros-users
>> >
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
>



More information about the ros-users mailing list