From d5a8805083dbac97bc8798121db20876932bae46 Mon Sep 17 00:00:00 2001 From: Adithya-Vishnu Date: Wed, 10 Sep 2025 20:37:21 +0530 Subject: [PATCH] Adithya Vishnu 230047 --- 240047/turtle_sim/src/build/.built_by | 1 + 240047/turtle_sim/src/build/COLCON_IGNORE | 0 .../build/lib/turtle_pub/__init__.py | 0 .../lib/turtle_pub/draw_circle_client.py | 44 ++ .../lib/turtle_pub/draw_circle_server.py | 84 ++++ .../src/build/turtle_pub/colcon_build.rc | 1 + .../colcon_command_prefix_setup_py.sh | 1 + .../colcon_command_prefix_setup_py.sh.env | 56 +++ .../src/build/turtle_pub/install.log | 17 + .../__pycache__/sitecustomize.cpython-310.pyc | Bin 0 -> 317 bytes .../prefix_override/sitecustomize.py | 4 + .../turtle_pub/turtle_pub.egg-info/PKG-INFO | 12 + .../turtle_pub.egg-info/SOURCES.txt | 17 + .../turtle_pub.egg-info/dependency_links.txt | 1 + .../turtle_pub.egg-info/entry_points.txt | 4 + .../turtle_pub.egg-info/requires.txt | 1 + .../turtle_pub.egg-info/top_level.txt | 1 + .../turtle_pub/turtle_pub.egg-info/zip-safe | 1 + .../src/install/.colcon_install_layout | 1 + 240047/turtle_sim/src/install/COLCON_IGNORE | 0 .../src/install/_local_setup_util_ps1.py | 407 ++++++++++++++++++ .../src/install/_local_setup_util_sh.py | 407 ++++++++++++++++++ .../turtle_sim/src/install/local_setup.bash | 121 ++++++ 240047/turtle_sim/src/install/local_setup.ps1 | 55 +++ 240047/turtle_sim/src/install/local_setup.sh | 137 ++++++ 240047/turtle_sim/src/install/local_setup.zsh | 134 ++++++ 240047/turtle_sim/src/install/setup.bash | 34 ++ 240047/turtle_sim/src/install/setup.ps1 | 30 ++ 240047/turtle_sim/src/install/setup.sh | 49 +++ 240047/turtle_sim/src/install/setup.zsh | 34 ++ .../turtle_pub-0.0.0-py3.10.egg-info/PKG-INFO | 12 + .../SOURCES.txt | 17 + .../dependency_links.txt | 1 + .../entry_points.txt | 4 + .../requires.txt | 1 + .../top_level.txt | 1 + .../turtle_pub-0.0.0-py3.10.egg-info/zip-safe | 1 + .../site-packages/turtle_pub/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 192 bytes .../draw_circle_client.cpython-310.pyc | Bin 0 -> 1572 bytes .../draw_circle_server.cpython-310.pyc | Bin 0 -> 2539 bytes .../turtle_pub/draw_circle_client.py | 44 ++ .../turtle_pub/draw_circle_server.py | 84 ++++ .../lib/turtle_pub/draw_circle_client | 33 ++ .../lib/turtle_pub/draw_circle_server | 33 ++ .../resource_index/packages/turtle_pub | 0 .../share/colcon-core/packages/turtle_pub | 1 + .../turtle_pub/hook/ament_prefix_path.dsv | 1 + .../turtle_pub/hook/ament_prefix_path.ps1 | 3 + .../turtle_pub/hook/ament_prefix_path.sh | 3 + .../share/turtle_pub/hook/pythonpath.dsv | 1 + .../share/turtle_pub/hook/pythonpath.ps1 | 3 + .../share/turtle_pub/hook/pythonpath.sh | 3 + .../turtle_pub/share/turtle_pub/package.bash | 31 ++ .../turtle_pub/share/turtle_pub/package.dsv | 6 + .../turtle_pub/share/turtle_pub/package.ps1 | 116 +++++ .../turtle_pub/share/turtle_pub/package.sh | 87 ++++ .../turtle_pub/share/turtle_pub/package.xml | 29 ++ .../turtle_pub/share/turtle_pub/package.zsh | 42 ++ 240047/turtle_sim/src/log/COLCON_IGNORE | 0 .../log/build_2025-09-10_19-30-46/events.log | 51 +++ .../build_2025-09-10_19-30-46/logger_all.log | 115 +++++ .../turtle_pub/command.log | 2 + .../turtle_pub/stderr.log | 0 .../turtle_pub/stdout.log | 39 ++ .../turtle_pub/stdout_stderr.log | 39 ++ .../turtle_pub/streams.log | 41 ++ 240047/turtle_sim/src/log/latest | 1 + 240047/turtle_sim/src/log/latest_build | 1 + .../turtle_sim/src/turtle_pub/CMakeLists.txt | 30 ++ 240047/turtle_sim/src/turtle_pub/package.xml | 29 ++ .../src/turtle_pub/resource/turtle_pub | 0 240047/turtle_sim/src/turtle_pub/setup.cfg | 4 + 240047/turtle_sim/src/turtle_pub/setup.py | 27 ++ .../src/turtle_pub/srv/DrawCircle.srv | 5 + .../src/turtle_pub/test/test_copyright.py | 25 ++ .../src/turtle_pub/test/test_flake8.py | 25 ++ .../src/turtle_pub/test/test_pep257.py | 23 + .../src/turtle_pub/turtle_pub/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 157 bytes .../draw_circle_server.cpython-310.pyc | Bin 0 -> 2504 bytes .../turtle_pub/draw_circle_client.py | 44 ++ .../turtle_pub/draw_circle_server.py | 84 ++++ 83 files changed, 2796 insertions(+) create mode 100644 240047/turtle_sim/src/build/.built_by create mode 100644 240047/turtle_sim/src/build/COLCON_IGNORE create mode 100644 240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/__init__.py create mode 100644 240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py create mode 100644 240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py create mode 100644 240047/turtle_sim/src/build/turtle_pub/colcon_build.rc create mode 100644 240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh create mode 100644 240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh.env create mode 100644 240047/turtle_sim/src/build/turtle_pub/install.log create mode 100644 240047/turtle_sim/src/build/turtle_pub/prefix_override/__pycache__/sitecustomize.cpython-310.pyc create mode 100644 240047/turtle_sim/src/build/turtle_pub/prefix_override/sitecustomize.py create mode 100644 240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/PKG-INFO create mode 100644 240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/SOURCES.txt create mode 100644 240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/dependency_links.txt create mode 100644 240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/entry_points.txt create mode 100644 240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/requires.txt create mode 100644 240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/top_level.txt create mode 100644 240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/zip-safe create mode 100644 240047/turtle_sim/src/install/.colcon_install_layout create mode 100644 240047/turtle_sim/src/install/COLCON_IGNORE create mode 100644 240047/turtle_sim/src/install/_local_setup_util_ps1.py create mode 100644 240047/turtle_sim/src/install/_local_setup_util_sh.py create mode 100644 240047/turtle_sim/src/install/local_setup.bash create mode 100644 240047/turtle_sim/src/install/local_setup.ps1 create mode 100644 240047/turtle_sim/src/install/local_setup.sh create mode 100644 240047/turtle_sim/src/install/local_setup.zsh create mode 100644 240047/turtle_sim/src/install/setup.bash create mode 100644 240047/turtle_sim/src/install/setup.ps1 create mode 100644 240047/turtle_sim/src/install/setup.sh create mode 100644 240047/turtle_sim/src/install/setup.zsh create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/PKG-INFO create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/SOURCES.txt create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/dependency_links.txt create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/entry_points.txt create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/requires.txt create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/top_level.txt create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/zip-safe create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/__init__.cpython-310.pyc create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_client.cpython-310.pyc create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_server.cpython-310.pyc create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_client.py create mode 100644 240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_server.py create mode 100755 240047/turtle_sim/src/install/turtle_pub/lib/turtle_pub/draw_circle_client create mode 100755 240047/turtle_sim/src/install/turtle_pub/lib/turtle_pub/draw_circle_server create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages/turtle_pub create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/colcon-core/packages/turtle_pub create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/ament_prefix_path.dsv create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/ament_prefix_path.ps1 create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/ament_prefix_path.sh create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/pythonpath.dsv create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/pythonpath.ps1 create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/pythonpath.sh create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.bash create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.dsv create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.ps1 create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.sh create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.xml create mode 100644 240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.zsh create mode 100644 240047/turtle_sim/src/log/COLCON_IGNORE create mode 100644 240047/turtle_sim/src/log/build_2025-09-10_19-30-46/events.log create mode 100644 240047/turtle_sim/src/log/build_2025-09-10_19-30-46/logger_all.log create mode 100644 240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/command.log create mode 100644 240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stderr.log create mode 100644 240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout.log create mode 100644 240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout_stderr.log create mode 100644 240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/streams.log create mode 120000 240047/turtle_sim/src/log/latest create mode 120000 240047/turtle_sim/src/log/latest_build create mode 100644 240047/turtle_sim/src/turtle_pub/CMakeLists.txt create mode 100644 240047/turtle_sim/src/turtle_pub/package.xml create mode 100644 240047/turtle_sim/src/turtle_pub/resource/turtle_pub create mode 100644 240047/turtle_sim/src/turtle_pub/setup.cfg create mode 100644 240047/turtle_sim/src/turtle_pub/setup.py create mode 100644 240047/turtle_sim/src/turtle_pub/srv/DrawCircle.srv create mode 100644 240047/turtle_sim/src/turtle_pub/test/test_copyright.py create mode 100644 240047/turtle_sim/src/turtle_pub/test/test_flake8.py create mode 100644 240047/turtle_sim/src/turtle_pub/test/test_pep257.py create mode 100644 240047/turtle_sim/src/turtle_pub/turtle_pub/__init__.py create mode 100644 240047/turtle_sim/src/turtle_pub/turtle_pub/__pycache__/__init__.cpython-310.pyc create mode 100644 240047/turtle_sim/src/turtle_pub/turtle_pub/__pycache__/draw_circle_server.cpython-310.pyc create mode 100644 240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_client.py create mode 100644 240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_server.py diff --git a/240047/turtle_sim/src/build/.built_by b/240047/turtle_sim/src/build/.built_by new file mode 100644 index 0000000..06e74ac --- /dev/null +++ b/240047/turtle_sim/src/build/.built_by @@ -0,0 +1 @@ +colcon diff --git a/240047/turtle_sim/src/build/COLCON_IGNORE b/240047/turtle_sim/src/build/COLCON_IGNORE new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/__init__.py b/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py b/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py new file mode 100644 index 0000000..aa3e250 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py @@ -0,0 +1,44 @@ +import rclpy +from rclpy.node import Node +from turtle_pub.srv import DrawCircle # Custom service + + +class DrawCircleClient(Node): + def __init__(self): + super().__init__('draw_circle_client') + # Create client for DrawCircle service + self.client = self.create_client(DrawCircle, 'draw_circle') + while not self.client.wait_for_service(timeout_sec=1.0): + self.get_logger().info('⏳ Waiting for service...') + + def send_request(self, x, y, radius): + # Prepare request with x, y, radius + req = DrawCircle.Request() + req.x = x + req.y = y + req.radius = radius + + # Call service asynchronously + future = self.client.call_async(req) + rclpy.spin_until_future_complete(self, future) + return future.result() + + +def main(args=None): + rclpy.init(args=args) + + client = DrawCircleClient() + + # Example request: teleport to (2, 3) and draw a circle of radius 1.0 + resp = client.send_request(2.0, 3.0, 1.0) + + if resp.success: + client.get_logger().info('✅ Circle drawn successfully!') + else: + client.get_logger().info('❌ Failed to draw circle') + + rclpy.shutdown() + + +if __name__ == '__main__': + main() diff --git a/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py b/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py new file mode 100644 index 0000000..6c19498 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py @@ -0,0 +1,84 @@ +import rclpy +from rclpy.node import Node +from geometry_msgs.msg import Twist +from turtlesim.srv import TeleportAbsolute +from turtle_pub.srv import DrawCircle +import math + + +class DrawCircleServer(Node): + def __init__(self): + super().__init__('draw_circle_server') + + # Create service + self.srv = self.create_service(DrawCircle, 'draw_circle', self.draw_circle_callback) + + # Publisher for velocity commands + self.publisher = self.create_publisher(Twist, 'turtle1/cmd_vel', 10) + + # Client for teleportation + self.teleport_client = self.create_client(TeleportAbsolute, 'turtle1/teleport_absolute') + + # Wait until the teleport service is available + while not self.teleport_client.wait_for_service(timeout_sec=1.0): + self.get_logger().info('⏳ Waiting for /turtle1/teleport_absolute service...') + + self.get_logger().info('✅ DrawCircle service ready!') + + def draw_circle_callback(self, request, response): + self.get_logger().info(f'Received: x={request.x}, y={request.y}, r={request.radius}') + + # ---- Step 1: Teleport the turtle ---- + teleport_req = TeleportAbsolute.Request() + teleport_req.x = float(request.x) + teleport_req.y = float(request.y) + teleport_req.theta = 0.0 # start facing right + + future = self.teleport_client.call_async(teleport_req) + rclpy.spin_until_future_complete(self, future) + + if future.result() is None: + self.get_logger().error('❌ Teleport service call failed!') + response.success = False + return response + + self.get_logger().info('🐢 Teleported turtle successfully!') + + # ---- Step 2: Draw a circle ---- + twist = Twist() + + # Move forward briefly (to offset from teleport point) + twist.linear.x = 1.0 + twist.angular.z = 0.0 + start_time = self.get_clock().now().seconds_nanoseconds()[0] + while self.get_clock().now().seconds_nanoseconds()[0] - start_time < request.radius: + self.publisher.publish(twist) + + # Rotate with forward motion (circle) + twist.linear.x = 1.0 + twist.angular.z = 1.0 + start_time = self.get_clock().now().seconds_nanoseconds()[0] + duration = 2 * math.pi * request.radius + while self.get_clock().now().seconds_nanoseconds()[0] - start_time < duration: + self.publisher.publish(twist) + + # Stop + twist.linear.x = 0.0 + twist.angular.z = 0.0 + self.publisher.publish(twist) + + # Response + response.success = True + self.get_logger().info('✅ Finished drawing circle!') + return response + + +def main(args=None): + rclpy.init(args=args) + node = DrawCircleServer() + rclpy.spin(node) + rclpy.shutdown() + + +if __name__ == '__main__': + main() diff --git a/240047/turtle_sim/src/build/turtle_pub/colcon_build.rc b/240047/turtle_sim/src/build/turtle_pub/colcon_build.rc new file mode 100644 index 0000000..573541a --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/colcon_build.rc @@ -0,0 +1 @@ +0 diff --git a/240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh b/240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh new file mode 100644 index 0000000..f9867d5 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh @@ -0,0 +1 @@ +# generated from colcon_core/shell/template/command_prefix.sh.em diff --git a/240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh.env b/240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh.env new file mode 100644 index 0000000..3b22487 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/colcon_command_prefix_setup_py.sh.env @@ -0,0 +1,56 @@ +AMENT_PREFIX_PATH=/home/adithya/turtle_sim/src/install/turtle_pub:/home/adithya/turtle_sim/install/turtle_pub:/opt/ros/humble +COLCON=1 +COLCON_PREFIX_PATH=/home/adithya/turtle_sim/src/install:/home/adithya/turtle_sim/install +COLORTERM=truecolor +DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus +DESKTOP_SESSION=ubuntu +DISPLAY=:0 +GDMSESSION=ubuntu +GNOME_DESKTOP_SESSION_ID=this-is-deprecated +GNOME_SETUP_DISPLAY=:1 +GNOME_SHELL_SESSION_MODE=ubuntu +GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/e5129de6_3122_48bf_9b1e_e99924ac10da +GNOME_TERMINAL_SERVICE=:1.272 +GTK_MODULES=gail:atk-bridge +HOME=/home/adithya +IM_CONFIG_PHASE=1 +LANG=en_US.UTF-8 +LANGUAGE=en_IN:en +LC_ALL=en_US.UTF-8 +LD_LIBRARY_PATH=/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib +LESSCLOSE=/usr/bin/lesspipe %s %s +LESSOPEN=| /usr/bin/lesspipe %s +LOGNAME=adithya +LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: +OLDPWD=/home/adithya/turtle_sim +PATH=/opt/ros/humble/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin +PWD=/home/adithya/turtle_sim/src/build/turtle_pub +PYTHONPATH=/home/adithya/turtle_sim/src/build/turtle_pub:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:/home/adithya/turtle_sim/build/turtle_pub:/home/adithya/turtle_sim/install/turtle_pub/lib/python3.10/site-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages +QT_ACCESSIBILITY=1 +QT_IM_MODULE=ibus +ROS_DISTRO=humble +ROS_LOCALHOST_ONLY=0 +ROS_PYTHON_VERSION=3 +ROS_VERSION=2 +SESSION_MANAGER=local/adithya-ASUS:@/tmp/.ICE-unix/1420,unix/adithya-ASUS:/tmp/.ICE-unix/1420 +SHELL=/bin/bash +SHLVL=1 +SSH_AGENT_LAUNCHER=gnome-keyring +SSH_AUTH_SOCK=/run/user/1000/keyring/ssh +SYSTEMD_EXEC_PID=7119 +TERM=xterm-256color +USER=adithya +USERNAME=adithya +VTE_VERSION=6800 +WAYLAND_DISPLAY=wayland-0 +XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.HZMNC3 +XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg +XDG_CURRENT_DESKTOP=ubuntu:GNOME +XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop +XDG_MENU_PREFIX=gnome- +XDG_RUNTIME_DIR=/run/user/1000 +XDG_SESSION_CLASS=user +XDG_SESSION_DESKTOP=ubuntu +XDG_SESSION_TYPE=wayland +XMODIFIERS=@im=ibus +_=/usr/bin/colcon diff --git a/240047/turtle_sim/src/build/turtle_pub/install.log b/240047/turtle_sim/src/build/turtle_pub/install.log new file mode 100644 index 0000000..db2aa0f --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/install.log @@ -0,0 +1,17 @@ +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_server.py +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_client.py +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_server.cpython-310.pyc +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/__init__.cpython-310.pyc +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_client.cpython-310.pyc +/home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages/turtle_pub +/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.xml +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/dependency_links.txt +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/zip-safe +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/top_level.txt +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/SOURCES.txt +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/PKG-INFO +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/entry_points.txt +/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/requires.txt +/home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub/draw_circle_client +/home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub/draw_circle_server diff --git a/240047/turtle_sim/src/build/turtle_pub/prefix_override/__pycache__/sitecustomize.cpython-310.pyc b/240047/turtle_sim/src/build/turtle_pub/prefix_override/__pycache__/sitecustomize.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf542d7d94160c7a7045389d2745ce9b6a575d7d GIT binary patch literal 317 zcmaJ-F;2ul4D=?eQ*`Jg8Xj@Y?FSIz1=n0hv&v5Q-r_9*ax&7XJ$T8PgNd~W}B*=HZziHG?;XX7Ihd54C5!X|TyogZ=24^ws7 VMVA9!DY4-BR~0N(rOuW9`UaW0T#5hy literal 0 HcmV?d00001 diff --git a/240047/turtle_sim/src/build/turtle_pub/prefix_override/sitecustomize.py b/240047/turtle_sim/src/build/turtle_pub/prefix_override/sitecustomize.py new file mode 100644 index 0000000..80971d9 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/prefix_override/sitecustomize.py @@ -0,0 +1,4 @@ +import sys +if sys.prefix == '/usr': + sys.real_prefix = sys.prefix + sys.prefix = sys.exec_prefix = '/home/adithya/turtle_sim/src/install/turtle_pub' diff --git a/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/PKG-INFO b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/PKG-INFO new file mode 100644 index 0000000..a1963c4 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 2.1 +Name: turtle-pub +Version: 0.0.0 +Summary: TODO: Package description +Home-page: UNKNOWN +Maintainer: adithya +Maintainer-email: adithyavishnu181206@gmail.com +License: TODO: License declaration +Platform: UNKNOWN + +UNKNOWN + diff --git a/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/SOURCES.txt b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/SOURCES.txt new file mode 100644 index 0000000..9faaa94 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/SOURCES.txt @@ -0,0 +1,17 @@ +package.xml +setup.cfg +setup.py +../build/turtle_pub/turtle_pub.egg-info/PKG-INFO +../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt +../build/turtle_pub/turtle_pub.egg-info/dependency_links.txt +../build/turtle_pub/turtle_pub.egg-info/entry_points.txt +../build/turtle_pub/turtle_pub.egg-info/requires.txt +../build/turtle_pub/turtle_pub.egg-info/top_level.txt +../build/turtle_pub/turtle_pub.egg-info/zip-safe +resource/turtle_pub +test/test_copyright.py +test/test_flake8.py +test/test_pep257.py +turtle_pub/__init__.py +turtle_pub/draw_circle_client.py +turtle_pub/draw_circle_server.py \ No newline at end of file diff --git a/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/dependency_links.txt b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/entry_points.txt b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/entry_points.txt new file mode 100644 index 0000000..9940152 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/entry_points.txt @@ -0,0 +1,4 @@ +[console_scripts] +draw_circle_client = turtle_pub.draw_circle_client:main +draw_circle_server = turtle_pub.draw_circle_server:main + diff --git a/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/requires.txt b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/requires.txt new file mode 100644 index 0000000..49fe098 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/requires.txt @@ -0,0 +1 @@ +setuptools diff --git a/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/top_level.txt b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/top_level.txt new file mode 100644 index 0000000..ef5ea36 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/top_level.txt @@ -0,0 +1 @@ +turtle_pub diff --git a/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/zip-safe b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/240047/turtle_sim/src/build/turtle_pub/turtle_pub.egg-info/zip-safe @@ -0,0 +1 @@ + diff --git a/240047/turtle_sim/src/install/.colcon_install_layout b/240047/turtle_sim/src/install/.colcon_install_layout new file mode 100644 index 0000000..3aad533 --- /dev/null +++ b/240047/turtle_sim/src/install/.colcon_install_layout @@ -0,0 +1 @@ +isolated diff --git a/240047/turtle_sim/src/install/COLCON_IGNORE b/240047/turtle_sim/src/install/COLCON_IGNORE new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/install/_local_setup_util_ps1.py b/240047/turtle_sim/src/install/_local_setup_util_ps1.py new file mode 100644 index 0000000..3c6d9e8 --- /dev/null +++ b/240047/turtle_sim/src/install/_local_setup_util_ps1.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"' +FORMAT_STR_USE_ENV_VAR = '$env:{name}' +FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = '' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = '' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/240047/turtle_sim/src/install/_local_setup_util_sh.py b/240047/turtle_sim/src/install/_local_setup_util_sh.py new file mode 100644 index 0000000..f67eaa9 --- /dev/null +++ b/240047/turtle_sim/src/install/_local_setup_util_sh.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"' +FORMAT_STR_USE_ENV_VAR = '${name}' +FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/240047/turtle_sim/src/install/local_setup.bash b/240047/turtle_sim/src/install/local_setup.bash new file mode 100644 index 0000000..03f0025 --- /dev/null +++ b/240047/turtle_sim/src/install/local_setup.bash @@ -0,0 +1,121 @@ +# generated from colcon_bash/shell/template/prefix.bash.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +else + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_bash_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_bash_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_bash_prepend_unique_value_IFS" + unset _colcon_prefix_bash_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_bash_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX diff --git a/240047/turtle_sim/src/install/local_setup.ps1 b/240047/turtle_sim/src/install/local_setup.ps1 new file mode 100644 index 0000000..6f68c8d --- /dev/null +++ b/240047/turtle_sim/src/install/local_setup.ps1 @@ -0,0 +1,55 @@ +# generated from colcon_powershell/shell/template/prefix.ps1.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# check environment variable for custom Python executable +if ($env:COLCON_PYTHON_EXECUTABLE) { + if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) { + echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist" + exit 1 + } + $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE" +} else { + # use the Python executable known at configure time + $_colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) { + if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) { + echo "error: unable to find python3 executable" + exit 1 + } + $_colcon_python_executable="python3" + } +} + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_powershell_source_script { + param ( + $_colcon_prefix_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_powershell_source_script_param'" + } + . "$_colcon_prefix_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'" + } +} + +# get all commands in topological order +$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1 + +# execute all commands in topological order +if ($env:COLCON_TRACE) { + echo "Execute generated script:" + echo "<<<" + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output + echo ">>>" +} +if ($_colcon_ordered_commands) { + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression +} diff --git a/240047/turtle_sim/src/install/local_setup.sh b/240047/turtle_sim/src/install/local_setup.sh new file mode 100644 index 0000000..94e9a6d --- /dev/null +++ b/240047/turtle_sim/src/install/local_setup.sh @@ -0,0 +1,137 @@ +# generated from colcon_core/shell/template/prefix.sh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/adithya/turtle_sim/src/install" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX + return 1 + fi +else + _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_sh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_sh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_sh_prepend_unique_value_IFS" + unset _colcon_prefix_sh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_sh_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "_colcon_prefix_sh_source_script() { + if [ -f \"\$1\" ]; then + if [ -n \"\$COLCON_TRACE\" ]; then + echo \"# . \\\"\$1\\\"\" + fi + . \"\$1\" + else + echo \"not found: \\\"\$1\\\"\" 1>&2 + fi + }" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX diff --git a/240047/turtle_sim/src/install/local_setup.zsh b/240047/turtle_sim/src/install/local_setup.zsh new file mode 100644 index 0000000..b648710 --- /dev/null +++ b/240047/turtle_sim/src/install/local_setup.zsh @@ -0,0 +1,134 @@ +# generated from colcon_zsh/shell/template/prefix.zsh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +else + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +_colcon_prefix_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_zsh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # workaround SH_WORD_SPLIT not being set + _colcon_prefix_zsh_convert_to_array _values + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS" + unset _colcon_prefix_zsh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_zsh_prepend_unique_value +unset _colcon_prefix_zsh_convert_to_array + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX diff --git a/240047/turtle_sim/src/install/setup.bash b/240047/turtle_sim/src/install/setup.bash new file mode 100644 index 0000000..e2cafc6 --- /dev/null +++ b/240047/turtle_sim/src/install/setup.bash @@ -0,0 +1,34 @@ +# generated from colcon_bash/shell/template/prefix_chain.bash.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/adithya/turtle_sim/install" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_bash_source_script diff --git a/240047/turtle_sim/src/install/setup.ps1 b/240047/turtle_sim/src/install/setup.ps1 new file mode 100644 index 0000000..e40948c --- /dev/null +++ b/240047/turtle_sim/src/install/setup.ps1 @@ -0,0 +1,30 @@ +# generated from colcon_powershell/shell/template/prefix_chain.ps1.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_chain_powershell_source_script { + param ( + $_colcon_prefix_chain_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_chain_powershell_source_script_param'" + } + . "$_colcon_prefix_chain_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'" + } +} + +# source chained prefixes +_colcon_prefix_chain_powershell_source_script "/opt/ros/humble\local_setup.ps1" +_colcon_prefix_chain_powershell_source_script "/home/adithya/turtle_sim/install\local_setup.ps1" + +# source this prefix +$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent) +_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1" diff --git a/240047/turtle_sim/src/install/setup.sh b/240047/turtle_sim/src/install/setup.sh new file mode 100644 index 0000000..3227bf7 --- /dev/null +++ b/240047/turtle_sim/src/install/setup.sh @@ -0,0 +1,49 @@ +# generated from colcon_core/shell/template/prefix_chain.sh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/home/adithya/turtle_sim/src/install +if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX + return 1 +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/home/adithya/turtle_sim/install" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_sh_source_script +unset COLCON_CURRENT_PREFIX diff --git a/240047/turtle_sim/src/install/setup.zsh b/240047/turtle_sim/src/install/setup.zsh new file mode 100644 index 0000000..3c3b110 --- /dev/null +++ b/240047/turtle_sim/src/install/setup.zsh @@ -0,0 +1,34 @@ +# generated from colcon_zsh/shell/template/prefix_chain.zsh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/adithya/turtle_sim/install" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_zsh_source_script diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/PKG-INFO b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/PKG-INFO new file mode 100644 index 0000000..a1963c4 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 2.1 +Name: turtle-pub +Version: 0.0.0 +Summary: TODO: Package description +Home-page: UNKNOWN +Maintainer: adithya +Maintainer-email: adithyavishnu181206@gmail.com +License: TODO: License declaration +Platform: UNKNOWN + +UNKNOWN + diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/SOURCES.txt b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/SOURCES.txt new file mode 100644 index 0000000..9faaa94 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/SOURCES.txt @@ -0,0 +1,17 @@ +package.xml +setup.cfg +setup.py +../build/turtle_pub/turtle_pub.egg-info/PKG-INFO +../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt +../build/turtle_pub/turtle_pub.egg-info/dependency_links.txt +../build/turtle_pub/turtle_pub.egg-info/entry_points.txt +../build/turtle_pub/turtle_pub.egg-info/requires.txt +../build/turtle_pub/turtle_pub.egg-info/top_level.txt +../build/turtle_pub/turtle_pub.egg-info/zip-safe +resource/turtle_pub +test/test_copyright.py +test/test_flake8.py +test/test_pep257.py +turtle_pub/__init__.py +turtle_pub/draw_circle_client.py +turtle_pub/draw_circle_server.py \ No newline at end of file diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/dependency_links.txt b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/entry_points.txt b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/entry_points.txt new file mode 100644 index 0000000..9940152 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/entry_points.txt @@ -0,0 +1,4 @@ +[console_scripts] +draw_circle_client = turtle_pub.draw_circle_client:main +draw_circle_server = turtle_pub.draw_circle_server:main + diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/requires.txt b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/requires.txt new file mode 100644 index 0000000..49fe098 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/requires.txt @@ -0,0 +1 @@ +setuptools diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/top_level.txt b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/top_level.txt new file mode 100644 index 0000000..ef5ea36 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/top_level.txt @@ -0,0 +1 @@ +turtle_pub diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/zip-safe b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info/zip-safe @@ -0,0 +1 @@ + diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/__init__.cpython-310.pyc b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f9551989b01ca6d8237e9717537c7b3f0f6a676d GIT binary patch literal 192 zcmd1j<>g`k0<+qK86f&Gh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o10bKO;XkRX;H$ zvm~Q3QNN_Ls3a#fzBn^izqlw_KQphmBrzukCR|XOq@RJTUz}Nz ts#}nloSm4ST8ykNK0Y%qvm`!Vub}c4hfQvNN@-529mw)xCLqDW00879GMxYb literal 0 HcmV?d00001 diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_client.cpython-310.pyc b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_client.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6db6aa51a4f30b40ff2ec3c1a2756f2a1f435480 GIT binary patch literal 1572 zcmZWp&yO256t+D-cbW|WTA-~!Q>h>g5($V~Rl!P&;DT0&9+2i@O~+0$+xd~TJzY}G z_Oe^`Ld8D-QgYlge*tIygE=k-gv5a}m-60BmJQ&@FP>-nv)}u^=W2I1AkhAJ`t$r3 zn~-1eW4nQm>_OLGfe}Q|oW%Iga$2yMQ5;*jRoJmj$rnV}!Z{@E_cN8|GR3*=W^F$7T^L9bQ$b?( zoJ^^pf}Q!XB`jf|k=TAtY!W*UNaVDmE4=+Ylch=N79@@_LPXYIf-&TjtN?FKDQU=x z8B4G=YY4X+a%dkqc)|;+@4}qBCM!=k{mQF3bzKmM4tnGsw66&Who@aUJnb&fUfc5h z24_P1^HT`@n#l@T)rM=C*0;cW@%>NXH%Vr)au!Z26>6y-XQ>>I$C2MUx?V`t`kZHF zW;kzmQza84H>W5JsdYC;j*bC_0|sDs7;P|@_`cjJNU|(l~1nbmOdc)ry~s*lmnO^kw1$iUDOIt^rID~#>N+=( zt46R}y@}>6G&d2|D|br zSLC8z%A}B>mw@x45;c&?+X3fCb&~fp9S17JGj}&iNF~I`w{G+*%qqN=!fa#KH5wl% z8+o1YUv-9Jbf9;%;7el2A#LCdcmZ{0*eN-o4P8O4VSTNw6Cmo)R=2_DK$W?Dm6hH< z-!4`iQ0uMnHNjf*x<@2YGd%-%Y~rL8Fci|EUcn{4p4UcH$7N)xchTD^ z#RlpZTRH4lwTmPx5w~M=KwUPpTs8vX514wt0|TC54W$1Dd|uun=%h9-;nh?Omkl?S t2_-nz>TxIB{+5WM?x49+)RnCK`@IT2!M9MOD3L^<(F$((qk!5k{{~0fjXeMW literal 0 HcmV?d00001 diff --git a/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_server.cpython-310.pyc b/240047/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__pycache__/draw_circle_server.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c9167f56fd754927576efe4e37c13214890e4b3 GIT binary patch literal 2539 zcma)8&5zqe6rZu3#Bn}0-7amnU&=}p5eX8i3Jw)5MXkyO?V(!HT;(UH})DDrk>kDRWP@lI426}!cZFGQu0+jTRZ zM&)k#3&M-MbVztfSO<33;}!1m@*(Y3M3s9FEcuD391vJfx3aHQeF<90W{VnUGvNZ- z!u{P)XSv>-x$pM*xydz4PTGe1S8INMD!BReQ$j+s^`&U{ydz2!8AOtK7+Vc zbT|@8szGp&ehi~8zW=rPl^^Ob?l*ghYwqjFkq17sFsyCknSa;2?>#tYsz4en|=PBG?L^fDd1Z*Sj z{JRaU`VBH0vW!3mLN-t7(0U3553LQY4XyK(JS$@M>B6jdMD}f6!c_-!YBMY2?Tm+9 zhY`s1VR`0F?IXJH=*p}*B~#}JpkwM_mUEI4d1tP#4)uUpU7T8MWom7m*ip*#H4eyr zfxFYf@D#H^dSSTAPQ%_cu=O4I&Van~I@vG2IW{exBWU{rA`ii$v$J#4OxJ&{RLQX} z)cF=&+|%pB^J|&(HL_oNi^LLW{{4SwhIQ(f%(s8}cw#ZHWYJliP!%JCv1-*e_p0|q zAi^ENuQwmv*mFK;PBJQQ^zoSSNjHGJc=la$0ief4h=tVb`C%mZ#@!Tg^3_j2{CvDl z@Md1-O_c_LP^yl(YBVP}UH4a;@JeSSLx&1C^A1ARArg{u7FlUOnncx`SWyS+Q zkeVUJ8keWi*I^RN3m_^d7*DwZ1Q~S;$a~batF%gsv}!?X)q!(p-74Cy?b0=R8Rjm( zb{*s!^dj^wW#sGHC83E|GHT*j}VuwHD8mFYbB^$*0dGPp`&aN~U$qMI3hYFv4t1si&>AwuxN4AUp6tdgOWw>@#PDme zWGvc=ry9mz0;dofG1MM}QKCf{6r5$OMK@cuT#c6{V>=Ut=9^P}0k?pb6E;$P)drGh zT`jL6xDMKIUF8{H&&L>~R5plroV /dev/null && pwd)" +else + _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh script of this package +_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/turtle_pub/package.sh" + +unset _colcon_package_bash_source_script +unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.dsv b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.dsv new file mode 100644 index 0000000..57c0175 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.dsv @@ -0,0 +1,6 @@ +source;share/turtle_pub/hook/pythonpath.ps1 +source;share/turtle_pub/hook/pythonpath.dsv +source;share/turtle_pub/hook/pythonpath.sh +source;share/turtle_pub/hook/ament_prefix_path.ps1 +source;share/turtle_pub/hook/ament_prefix_path.dsv +source;share/turtle_pub/hook/ament_prefix_path.sh diff --git a/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.ps1 b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.ps1 new file mode 100644 index 0000000..1bf67f9 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.ps1 @@ -0,0 +1,116 @@ +# generated from colcon_powershell/shell/template/package.ps1.em + +# function to append a value to a variable +# which uses colons as separators +# duplicates as well as leading separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_append_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + $_duplicate="" + # start with no values + $_all_values="" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -eq $_value) { + $_duplicate="1" + } + if ($_all_values) { + $_all_values="${_all_values};$_" + } else { + $_all_values="$_" + } + } + } + } + # append only non-duplicates + if (!$_duplicate) { + # avoid leading separator + if ($_all_values) { + $_all_values="${_all_values};${_value}" + } else { + $_all_values="${_value}" + } + } + + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_prepend_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + # start with the new value + $_all_values="$_value" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -ne $_value) { + # keep non-duplicate values + $_all_values="${_all_values};$_" + } + } + } + } + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +function colcon_package_source_powershell_script { + param ( + $_colcon_package_source_powershell_script + ) + # source script with conditional trace output + if (Test-Path $_colcon_package_source_powershell_script) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_package_source_powershell_script'" + } + . "$_colcon_package_source_powershell_script" + } else { + Write-Error "not found: '$_colcon_package_source_powershell_script'" + } +} + + +# a powershell script is able to determine its own path +# the prefix is two levels up from the package specific share directory +$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName + +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/turtle_pub/hook/pythonpath.ps1" +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/turtle_pub/hook/ament_prefix_path.ps1" + +Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.sh b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.sh new file mode 100644 index 0000000..fe811e5 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.sh @@ -0,0 +1,87 @@ +# generated from colcon_core/shell/template/package.sh.em + +# This script extends the environment for this package. + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prepend_unique_value_IFS=$IFS + IFS=":" + # start with the new value + _all_values="$_value" + # workaround SH_WORD_SPLIT not being set in zsh + if [ "$(command -v colcon_zsh_convert_to_array)" ]; then + colcon_zsh_convert_to_array _values + fi + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + # restore the field separator + IFS=$_colcon_prepend_unique_value_IFS + unset _colcon_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/adithya/turtle_sim/src/install/turtle_pub" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_package_sh_COLCON_CURRENT_PREFIX + return 1 + fi + COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" +fi +unset _colcon_package_sh_COLCON_CURRENT_PREFIX + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh hooks +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/turtle_pub/hook/pythonpath.sh" +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/turtle_pub/hook/ament_prefix_path.sh" + +unset _colcon_package_sh_source_script +unset COLCON_CURRENT_PREFIX + +# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.xml b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.xml new file mode 100644 index 0000000..70a82f3 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.xml @@ -0,0 +1,29 @@ + + + + turtle_pub + 0.0.0 + TODO: Package description + adithya + TODO: License declaration + + + rclpy + geometry_msgs + std_srvs + rosidl_default_generators + rosidl_default_runtime + + + rosidl_interface_packages + + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.zsh b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.zsh new file mode 100644 index 0000000..bc17fb6 --- /dev/null +++ b/240047/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.zsh @@ -0,0 +1,42 @@ +# generated from colcon_zsh/shell/template/package.zsh.em + +# This script extends the environment for this package. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" +else + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +colcon_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# source sh script of this package +_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/turtle_pub/package.sh" +unset convert_zsh_to_array + +unset _colcon_package_zsh_source_script +unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/240047/turtle_sim/src/log/COLCON_IGNORE b/240047/turtle_sim/src/log/COLCON_IGNORE new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/events.log b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/events.log new file mode 100644 index 0000000..01fc86d --- /dev/null +++ b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/events.log @@ -0,0 +1,51 @@ +[0.000000] (-) TimerEvent: {} +[0.000262] (turtle_pub) JobQueued: {'identifier': 'turtle_pub', 'dependencies': OrderedDict()} +[0.000393] (turtle_pub) JobStarted: {'identifier': 'turtle_pub'} +[0.099593] (-) TimerEvent: {} +[0.199872] (-) TimerEvent: {} +[0.300243] (-) TimerEvent: {} +[0.364090] (turtle_pub) Command: {'cmd': ['/usr/bin/python3', '-W', 'ignore:setup.py install is deprecated', '-W', 'ignore:easy_install command is deprecated', 'setup.py', 'egg_info', '--egg-base', '../build/turtle_pub', 'build', '--build-base', '/home/adithya/turtle_sim/src/build/turtle_pub/build', 'install', '--record', '/home/adithya/turtle_sim/src/build/turtle_pub/install.log', '--single-version-externally-managed', 'install_data'], 'cwd': '/home/adithya/turtle_sim/src/turtle_pub', 'env': {'LESSOPEN': '| /usr/bin/lesspipe %s', 'LANGUAGE': 'en_IN:en', 'USER': 'adithya', 'XDG_SESSION_TYPE': 'wayland', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib', 'HOME': '/home/adithya', 'OLDPWD': '/home/adithya/turtle_sim', 'DESKTOP_SESSION': 'ubuntu', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'SYSTEMD_EXEC_PID': '7119', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'COLORTERM': 'truecolor', 'IM_CONFIG_PHASE': '1', 'WAYLAND_DISPLAY': 'wayland-0', 'COLCON_PREFIX_PATH': '/home/adithya/turtle_sim/src/install:/home/adithya/turtle_sim/install', 'ROS_DISTRO': 'humble', 'LOGNAME': 'adithya', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_SESSION_CLASS': 'user', 'USERNAME': 'adithya', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'ROS_LOCALHOST_ONLY': '0', 'PATH': '/opt/ros/humble/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/adithya-ASUS:@/tmp/.ICE-unix/1420,unix/adithya-ASUS:/tmp/.ICE-unix/1420', 'XDG_MENU_PREFIX': 'gnome-', 'GNOME_TERMINAL_SCREEN': '/org/gnome/Terminal/screen/e5129de6_3122_48bf_9b1e_e99924ac10da', 'GNOME_SETUP_DISPLAY': ':1', 'XDG_RUNTIME_DIR': '/run/user/1000', 'DISPLAY': ':0', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1000/.mutter-Xwaylandauth.HZMNC3', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'GNOME_TERMINAL_SERVICE': ':1.272', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'AMENT_PREFIX_PATH': '/home/adithya/turtle_sim/src/install/turtle_pub:/home/adithya/turtle_sim/install/turtle_pub:/opt/ros/humble', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/adithya/turtle_sim/src/build/turtle_pub', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/adithya/turtle_sim/src/build/turtle_pub/prefix_override:/usr/lib/python3/dist-packages/colcon_core/task/python/colcon_distutils_commands:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:/home/adithya/turtle_sim/src/build/turtle_pub:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:/home/adithya/turtle_sim/build/turtle_pub:/home/adithya/turtle_sim/install/turtle_pub/lib/python3.10/site-packages:/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages', 'COLCON': '1', 'VTE_VERSION': '6800'}, 'shell': False} +[0.400444] (-) TimerEvent: {} +[0.500728] (-) TimerEvent: {} +[0.516592] (turtle_pub) StdoutLine: {'line': b'running egg_info\n'} +[0.516836] (turtle_pub) StdoutLine: {'line': b'creating ../build/turtle_pub/turtle_pub.egg-info\n'} +[0.516933] (turtle_pub) StdoutLine: {'line': b'writing ../build/turtle_pub/turtle_pub.egg-info/PKG-INFO\n'} +[0.517126] (turtle_pub) StdoutLine: {'line': b'writing dependency_links to ../build/turtle_pub/turtle_pub.egg-info/dependency_links.txt\n'} +[0.517242] (turtle_pub) StdoutLine: {'line': b'writing entry points to ../build/turtle_pub/turtle_pub.egg-info/entry_points.txt\n'} +[0.517327] (turtle_pub) StdoutLine: {'line': b'writing requirements to ../build/turtle_pub/turtle_pub.egg-info/requires.txt\n'} +[0.517404] (turtle_pub) StdoutLine: {'line': b'writing top-level names to ../build/turtle_pub/turtle_pub.egg-info/top_level.txt\n'} +[0.517479] (turtle_pub) StdoutLine: {'line': b"writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt'\n"} +[0.518251] (turtle_pub) StdoutLine: {'line': b"reading manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt'\n"} +[0.518581] (turtle_pub) StdoutLine: {'line': b"writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt'\n"} +[0.518735] (turtle_pub) StdoutLine: {'line': b'running build\n'} +[0.518829] (turtle_pub) StdoutLine: {'line': b'running build_py\n'} +[0.518914] (turtle_pub) StdoutLine: {'line': b'creating /home/adithya/turtle_sim/src/build/turtle_pub/build\n'} +[0.518995] (turtle_pub) StdoutLine: {'line': b'creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib\n'} +[0.519075] (turtle_pub) StdoutLine: {'line': b'creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub\n'} +[0.519155] (turtle_pub) StdoutLine: {'line': b'copying turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub\n'} +[0.519234] (turtle_pub) StdoutLine: {'line': b'copying turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub\n'} +[0.519314] (turtle_pub) StdoutLine: {'line': b'copying turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub\n'} +[0.519422] (turtle_pub) StdoutLine: {'line': b'running install\n'} +[0.519551] (turtle_pub) StdoutLine: {'line': b'running install_lib\n'} +[0.519634] (turtle_pub) StdoutLine: {'line': b'creating /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub\n'} +[0.519709] (turtle_pub) StdoutLine: {'line': b'copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub\n'} +[0.519786] (turtle_pub) StdoutLine: {'line': b'copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub\n'} +[0.519866] (turtle_pub) StdoutLine: {'line': b'copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub\n'} +[0.519963] (turtle_pub) StdoutLine: {'line': b'byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_server.py to draw_circle_server.cpython-310.pyc\n'} +[0.520273] (turtle_pub) StdoutLine: {'line': b'byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py to __init__.cpython-310.pyc\n'} +[0.520373] (turtle_pub) StdoutLine: {'line': b'byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_client.py to draw_circle_client.cpython-310.pyc\n'} +[0.520566] (turtle_pub) StdoutLine: {'line': b'running install_data\n'} +[0.520690] (turtle_pub) StdoutLine: {'line': b'creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index\n'} +[0.520771] (turtle_pub) StdoutLine: {'line': b'creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index\n'} +[0.520850] (turtle_pub) StdoutLine: {'line': b'creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages\n'} +[0.520967] (turtle_pub) StdoutLine: {'line': b'copying resource/turtle_pub -> /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages\n'} +[0.521044] (turtle_pub) StdoutLine: {'line': b'copying package.xml -> /home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub\n'} +[0.521117] (turtle_pub) StdoutLine: {'line': b'running install_egg_info\n'} +[0.521769] (turtle_pub) StdoutLine: {'line': b'Copying ../build/turtle_pub/turtle_pub.egg-info to /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info\n'} +[0.522106] (turtle_pub) StdoutLine: {'line': b'running install_scripts\n'} +[0.535893] (turtle_pub) StdoutLine: {'line': b'Installing draw_circle_client script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub\n'} +[0.536052] (turtle_pub) StdoutLine: {'line': b'Installing draw_circle_server script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub\n'} +[0.536166] (turtle_pub) StdoutLine: {'line': b"writing list of installed files to '/home/adithya/turtle_sim/src/build/turtle_pub/install.log'\n"} +[0.549720] (turtle_pub) CommandEnded: {'returncode': 0} +[0.555501] (turtle_pub) JobEnded: {'identifier': 'turtle_pub', 'rc': 0} +[0.556047] (-) EventReactorShutdown: {} diff --git a/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/logger_all.log b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/logger_all.log new file mode 100644 index 0000000..80790fb --- /dev/null +++ b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/logger_all.log @@ -0,0 +1,115 @@ +[0.067s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build', '--packages-select', 'turtle_pub'] +[0.067s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=16, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=['turtle_pub'], packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, mixin_files=None, mixin=None, verb_parser=, verb_extension=, main=>, mixin_verb=('build',)) +[0.161s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.161s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.161s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.161s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.161s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.161s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.161s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/adithya/turtle_sim/src' +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.161s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['cmake', 'python'] +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'cmake' +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python' +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['python_setup_py'] +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python_setup_py' +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extensions ['ignore', 'ignore_ament_install'] +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extension 'ignore' +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(build) ignored +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extensions ['ignore', 'ignore_ament_install'] +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extension 'ignore' +[0.168s] Level 1:colcon.colcon_core.package_identification:_identify(install) ignored +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extensions ['ignore', 'ignore_ament_install'] +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extension 'ignore' +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(log) ignored +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extensions ['ignore', 'ignore_ament_install'] +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extension 'ignore' +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extension 'ignore_ament_install' +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extensions ['colcon_pkg'] +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extension 'colcon_pkg' +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extensions ['colcon_meta'] +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extension 'colcon_meta' +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extensions ['ros'] +[0.169s] Level 1:colcon.colcon_core.package_identification:_identify(turtle_pub) by extension 'ros' +[0.171s] DEBUG:colcon.colcon_core.package_identification:Package 'turtle_pub' with type 'ros.ament_python' and name 'turtle_pub' +[0.171s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.171s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.171s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.171s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.171s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.188s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.188s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.189s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/home/adithya/turtle_sim/src/install/turtle_pub' in the environment variable AMENT_PREFIX_PATH doesn't exist +[0.189s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 0 installed packages in /home/adithya/turtle_sim/src/install +[0.190s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 1 installed packages in /home/adithya/turtle_sim/install +[0.190s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 271 installed packages in /opt/ros/humble +[0.191s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'cmake_args' from command line to 'None' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'cmake_target' from command line to 'None' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'cmake_clean_cache' from command line to 'False' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'cmake_clean_first' from command line to 'False' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'cmake_force_configure' from command line to 'False' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'ament_cmake_args' from command line to 'None' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'catkin_cmake_args' from command line to 'None' +[0.211s] Level 5:colcon.colcon_core.verb:set package 'turtle_pub' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.211s] DEBUG:colcon.colcon_core.verb:Building package 'turtle_pub' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/adithya/turtle_sim/src/build/turtle_pub', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/adithya/turtle_sim/src/install/turtle_pub', 'merge_install': False, 'path': '/home/adithya/turtle_sim/src/turtle_pub', 'symlink_install': False, 'test_result_base': None} +[0.211s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.212s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.212s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/adithya/turtle_sim/src/turtle_pub' with build type 'ament_python' +[0.212s] Level 1:colcon.colcon_core.shell:create_environment_hook('turtle_pub', 'ament_prefix_path') +[0.214s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.214s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/ament_prefix_path.ps1' +[0.214s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/ament_prefix_path.dsv' +[0.215s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/ament_prefix_path.sh' +[0.215s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.215s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[0.376s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/adithya/turtle_sim/src/turtle_pub' +[0.377s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.377s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[0.580s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/adithya/turtle_sim/src/turtle_pub': PYTHONPATH=/home/adithya/turtle_sim/src/build/turtle_pub/prefix_override:/usr/lib/python3/dist-packages/colcon_core/task/python/colcon_distutils_commands:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 -W ignore:setup.py install is deprecated -W ignore:easy_install command is deprecated setup.py egg_info --egg-base ../build/turtle_pub build --build-base /home/adithya/turtle_sim/src/build/turtle_pub/build install --record /home/adithya/turtle_sim/src/build/turtle_pub/install.log --single-version-externally-managed install_data +[0.763s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/adithya/turtle_sim/src/turtle_pub' returned '0': PYTHONPATH=/home/adithya/turtle_sim/src/build/turtle_pub/prefix_override:/usr/lib/python3/dist-packages/colcon_core/task/python/colcon_distutils_commands:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 -W ignore:setup.py install is deprecated -W ignore:easy_install command is deprecated setup.py egg_info --egg-base ../build/turtle_pub build --build-base /home/adithya/turtle_sim/src/build/turtle_pub/build install --record /home/adithya/turtle_sim/src/build/turtle_pub/install.log --single-version-externally-managed install_data +[0.764s] Level 1:colcon.colcon_core.environment:checking '/home/adithya/turtle_sim/src/install/turtle_pub' for CMake module files +[0.764s] Level 1:colcon.colcon_core.environment:checking '/home/adithya/turtle_sim/src/install/turtle_pub' for CMake config files +[0.765s] Level 1:colcon.colcon_core.environment:checking '/home/adithya/turtle_sim/src/install/turtle_pub/lib' +[0.765s] Level 1:colcon.colcon_core.environment:checking '/home/adithya/turtle_sim/src/install/turtle_pub/bin' +[0.765s] Level 1:colcon.colcon_core.environment:checking '/home/adithya/turtle_sim/src/install/turtle_pub/lib/pkgconfig/turtle_pub.pc' +[0.765s] Level 1:colcon.colcon_core.environment:checking '/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages' +[0.765s] Level 1:colcon.colcon_core.shell:create_environment_hook('turtle_pub', 'pythonpath') +[0.765s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/pythonpath.ps1' +[0.765s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/pythonpath.dsv' +[0.766s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/hook/pythonpath.sh' +[0.766s] Level 1:colcon.colcon_core.environment:checking '/home/adithya/turtle_sim/src/install/turtle_pub/bin' +[0.766s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(turtle_pub) +[0.766s] INFO:colcon.colcon_core.shell:Creating package script '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.ps1' +[0.766s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.dsv' +[0.767s] INFO:colcon.colcon_core.shell:Creating package script '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.sh' +[0.767s] INFO:colcon.colcon_core.shell:Creating package script '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.bash' +[0.767s] INFO:colcon.colcon_core.shell:Creating package script '/home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub/package.zsh' +[0.768s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/adithya/turtle_sim/src/install/turtle_pub/share/colcon-core/packages/turtle_pub) +[0.768s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[0.768s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[0.768s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[0.768s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[0.773s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[0.773s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[0.773s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[0.781s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[0.781s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/adithya/turtle_sim/src/install/local_setup.ps1' +[0.782s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/adithya/turtle_sim/src/install/_local_setup_util_ps1.py' +[0.783s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/adithya/turtle_sim/src/install/setup.ps1' +[0.783s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/adithya/turtle_sim/src/install/local_setup.sh' +[0.784s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/adithya/turtle_sim/src/install/_local_setup_util_sh.py' +[0.784s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/adithya/turtle_sim/src/install/setup.sh' +[0.785s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/adithya/turtle_sim/src/install/local_setup.bash' +[0.785s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/adithya/turtle_sim/src/install/setup.bash' +[0.786s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/adithya/turtle_sim/src/install/local_setup.zsh' +[0.786s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/adithya/turtle_sim/src/install/setup.zsh' diff --git a/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/command.log b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/command.log new file mode 100644 index 0000000..c27a477 --- /dev/null +++ b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/command.log @@ -0,0 +1,2 @@ +Invoking command in '/home/adithya/turtle_sim/src/turtle_pub': PYTHONPATH=/home/adithya/turtle_sim/src/build/turtle_pub/prefix_override:/usr/lib/python3/dist-packages/colcon_core/task/python/colcon_distutils_commands:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 -W ignore:setup.py install is deprecated -W ignore:easy_install command is deprecated setup.py egg_info --egg-base ../build/turtle_pub build --build-base /home/adithya/turtle_sim/src/build/turtle_pub/build install --record /home/adithya/turtle_sim/src/build/turtle_pub/install.log --single-version-externally-managed install_data +Invoked command in '/home/adithya/turtle_sim/src/turtle_pub' returned '0': PYTHONPATH=/home/adithya/turtle_sim/src/build/turtle_pub/prefix_override:/usr/lib/python3/dist-packages/colcon_core/task/python/colcon_distutils_commands:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 -W ignore:setup.py install is deprecated -W ignore:easy_install command is deprecated setup.py egg_info --egg-base ../build/turtle_pub build --build-base /home/adithya/turtle_sim/src/build/turtle_pub/build install --record /home/adithya/turtle_sim/src/build/turtle_pub/install.log --single-version-externally-managed install_data diff --git a/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stderr.log b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stderr.log new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout.log b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout.log new file mode 100644 index 0000000..02a6466 --- /dev/null +++ b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout.log @@ -0,0 +1,39 @@ +running egg_info +creating ../build/turtle_pub/turtle_pub.egg-info +writing ../build/turtle_pub/turtle_pub.egg-info/PKG-INFO +writing dependency_links to ../build/turtle_pub/turtle_pub.egg-info/dependency_links.txt +writing entry points to ../build/turtle_pub/turtle_pub.egg-info/entry_points.txt +writing requirements to ../build/turtle_pub/turtle_pub.egg-info/requires.txt +writing top-level names to ../build/turtle_pub/turtle_pub.egg-info/top_level.txt +writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +reading manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +running build +running build_py +creating /home/adithya/turtle_sim/src/build/turtle_pub/build +creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib +creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +copying turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +copying turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +copying turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +running install +running install_lib +creating /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_server.py to draw_circle_server.cpython-310.pyc +byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py to __init__.cpython-310.pyc +byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_client.py to draw_circle_client.cpython-310.pyc +running install_data +creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index +creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index +creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages +copying resource/turtle_pub -> /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages +copying package.xml -> /home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub +running install_egg_info +Copying ../build/turtle_pub/turtle_pub.egg-info to /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info +running install_scripts +Installing draw_circle_client script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub +Installing draw_circle_server script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub +writing list of installed files to '/home/adithya/turtle_sim/src/build/turtle_pub/install.log' diff --git a/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout_stderr.log b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout_stderr.log new file mode 100644 index 0000000..02a6466 --- /dev/null +++ b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/stdout_stderr.log @@ -0,0 +1,39 @@ +running egg_info +creating ../build/turtle_pub/turtle_pub.egg-info +writing ../build/turtle_pub/turtle_pub.egg-info/PKG-INFO +writing dependency_links to ../build/turtle_pub/turtle_pub.egg-info/dependency_links.txt +writing entry points to ../build/turtle_pub/turtle_pub.egg-info/entry_points.txt +writing requirements to ../build/turtle_pub/turtle_pub.egg-info/requires.txt +writing top-level names to ../build/turtle_pub/turtle_pub.egg-info/top_level.txt +writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +reading manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +running build +running build_py +creating /home/adithya/turtle_sim/src/build/turtle_pub/build +creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib +creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +copying turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +copying turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +copying turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +running install +running install_lib +creating /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_server.py to draw_circle_server.cpython-310.pyc +byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py to __init__.cpython-310.pyc +byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_client.py to draw_circle_client.cpython-310.pyc +running install_data +creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index +creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index +creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages +copying resource/turtle_pub -> /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages +copying package.xml -> /home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub +running install_egg_info +Copying ../build/turtle_pub/turtle_pub.egg-info to /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info +running install_scripts +Installing draw_circle_client script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub +Installing draw_circle_server script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub +writing list of installed files to '/home/adithya/turtle_sim/src/build/turtle_pub/install.log' diff --git a/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/streams.log b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/streams.log new file mode 100644 index 0000000..2ab2ce2 --- /dev/null +++ b/240047/turtle_sim/src/log/build_2025-09-10_19-30-46/turtle_pub/streams.log @@ -0,0 +1,41 @@ +[0.367s] Invoking command in '/home/adithya/turtle_sim/src/turtle_pub': PYTHONPATH=/home/adithya/turtle_sim/src/build/turtle_pub/prefix_override:/usr/lib/python3/dist-packages/colcon_core/task/python/colcon_distutils_commands:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 -W ignore:setup.py install is deprecated -W ignore:easy_install command is deprecated setup.py egg_info --egg-base ../build/turtle_pub build --build-base /home/adithya/turtle_sim/src/build/turtle_pub/build install --record /home/adithya/turtle_sim/src/build/turtle_pub/install.log --single-version-externally-managed install_data +[0.516s] running egg_info +[0.516s] creating ../build/turtle_pub/turtle_pub.egg-info +[0.517s] writing ../build/turtle_pub/turtle_pub.egg-info/PKG-INFO +[0.517s] writing dependency_links to ../build/turtle_pub/turtle_pub.egg-info/dependency_links.txt +[0.517s] writing entry points to ../build/turtle_pub/turtle_pub.egg-info/entry_points.txt +[0.517s] writing requirements to ../build/turtle_pub/turtle_pub.egg-info/requires.txt +[0.517s] writing top-level names to ../build/turtle_pub/turtle_pub.egg-info/top_level.txt +[0.517s] writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +[0.518s] reading manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +[0.518s] writing manifest file '../build/turtle_pub/turtle_pub.egg-info/SOURCES.txt' +[0.518s] running build +[0.518s] running build_py +[0.519s] creating /home/adithya/turtle_sim/src/build/turtle_pub/build +[0.519s] creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib +[0.519s] creating /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +[0.519s] copying turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +[0.519s] copying turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +[0.519s] copying turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub +[0.519s] running install +[0.519s] running install_lib +[0.519s] creating /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +[0.519s] copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_server.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +[0.519s] copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/__init__.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +[0.520s] copying /home/adithya/turtle_sim/src/build/turtle_pub/build/lib/turtle_pub/draw_circle_client.py -> /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub +[0.520s] byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_server.py to draw_circle_server.cpython-310.pyc +[0.520s] byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/__init__.py to __init__.cpython-310.pyc +[0.520s] byte-compiling /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub/draw_circle_client.py to draw_circle_client.cpython-310.pyc +[0.520s] running install_data +[0.520s] creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index +[0.520s] creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index +[0.520s] creating /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages +[0.521s] copying resource/turtle_pub -> /home/adithya/turtle_sim/src/install/turtle_pub/share/ament_index/resource_index/packages +[0.521s] copying package.xml -> /home/adithya/turtle_sim/src/install/turtle_pub/share/turtle_pub +[0.521s] running install_egg_info +[0.521s] Copying ../build/turtle_pub/turtle_pub.egg-info to /home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages/turtle_pub-0.0.0-py3.10.egg-info +[0.522s] running install_scripts +[0.536s] Installing draw_circle_client script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub +[0.536s] Installing draw_circle_server script to /home/adithya/turtle_sim/src/install/turtle_pub/lib/turtle_pub +[0.536s] writing list of installed files to '/home/adithya/turtle_sim/src/build/turtle_pub/install.log' +[0.550s] Invoked command in '/home/adithya/turtle_sim/src/turtle_pub' returned '0': PYTHONPATH=/home/adithya/turtle_sim/src/build/turtle_pub/prefix_override:/usr/lib/python3/dist-packages/colcon_core/task/python/colcon_distutils_commands:/home/adithya/turtle_sim/src/install/turtle_pub/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 -W ignore:setup.py install is deprecated -W ignore:easy_install command is deprecated setup.py egg_info --egg-base ../build/turtle_pub build --build-base /home/adithya/turtle_sim/src/build/turtle_pub/build install --record /home/adithya/turtle_sim/src/build/turtle_pub/install.log --single-version-externally-managed install_data diff --git a/240047/turtle_sim/src/log/latest b/240047/turtle_sim/src/log/latest new file mode 120000 index 0000000..b57d247 --- /dev/null +++ b/240047/turtle_sim/src/log/latest @@ -0,0 +1 @@ +latest_build \ No newline at end of file diff --git a/240047/turtle_sim/src/log/latest_build b/240047/turtle_sim/src/log/latest_build new file mode 120000 index 0000000..84976bc --- /dev/null +++ b/240047/turtle_sim/src/log/latest_build @@ -0,0 +1 @@ +build_2025-09-10_19-30-46 \ No newline at end of file diff --git a/240047/turtle_sim/src/turtle_pub/CMakeLists.txt b/240047/turtle_sim/src/turtle_pub/CMakeLists.txt new file mode 100644 index 0000000..8edd0fa --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 3.5) +project(turtle_pub) + +# Dependencies +find_package(ament_cmake REQUIRED) +find_package(rclpy REQUIRED) +find_package(geometry_msgs REQUIRED) +find_package(std_srvs REQUIRED) +find_package(rosidl_default_generators REQUIRED) # ⭐ Needed for srv generation + +# Generate the service interface +rosidl_generate_interfaces(${PROJECT_NAME} + "srv/DrawCircle.srv" + DEPENDENCIES geometry_msgs std_srvs # ⭐ Add dependencies if used in srv +) + +ament_export_dependencies(rosidl_default_runtime) + +# Install Python module +ament_python_install_package(${PROJECT_NAME}) + +# Install Python executables +install( + PROGRAMS + turtle_pub/draw_circle_server.py + turtle_pub/draw_circle_client.py + DESTINATION lib/${PROJECT_NAME} +) + +ament_package() diff --git a/240047/turtle_sim/src/turtle_pub/package.xml b/240047/turtle_sim/src/turtle_pub/package.xml new file mode 100644 index 0000000..7e2c6f9 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/package.xml @@ -0,0 +1,29 @@ + + + + turtle_pub + 0.0.0 + Package for teleport + circle drawing in turtlesim + adithya + TODO: License declaration + + + rclpy + geometry_msgs + std_srvs + + + rosidl_default_generators + rosidl_default_runtime + rosidl_interface_packages + + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/240047/turtle_sim/src/turtle_pub/resource/turtle_pub b/240047/turtle_sim/src/turtle_pub/resource/turtle_pub new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/turtle_pub/setup.cfg b/240047/turtle_sim/src/turtle_pub/setup.cfg new file mode 100644 index 0000000..a84b69e --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/turtle_pub +[install] +install_scripts=$base/lib/turtle_pub diff --git a/240047/turtle_sim/src/turtle_pub/setup.py b/240047/turtle_sim/src/turtle_pub/setup.py new file mode 100644 index 0000000..316f560 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/setup.py @@ -0,0 +1,27 @@ +from setuptools import find_packages, setup + +package_name = 'turtle_pub' + +setup( + name=package_name, + version='0.0.0', + packages=find_packages(exclude=['test']), + data_files=[ + ('share/ament_index/resource_index/packages', + ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer='adithya', + maintainer_email='adithyavishnu181206@gmail.com', + description='TODO: Package description', + license='TODO: License declaration', + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + 'draw_circle_server = turtle_pub.draw_circle_server:main', + 'draw_circle_client = turtle_pub.draw_circle_client:main', + ], + }, +) diff --git a/240047/turtle_sim/src/turtle_pub/srv/DrawCircle.srv b/240047/turtle_sim/src/turtle_pub/srv/DrawCircle.srv new file mode 100644 index 0000000..e798442 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/srv/DrawCircle.srv @@ -0,0 +1,5 @@ +float64 x +float64 y +float64 radius +--- +boolean success diff --git a/240047/turtle_sim/src/turtle_pub/test/test_copyright.py b/240047/turtle_sim/src/turtle_pub/test/test_copyright.py new file mode 100644 index 0000000..97a3919 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/test/test_copyright.py @@ -0,0 +1,25 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_copyright.main import main +import pytest + + +# Remove the `skip` decorator once the source file(s) have a copyright header +@pytest.mark.skip(reason='No copyright header has been placed in the generated source file.') +@pytest.mark.copyright +@pytest.mark.linter +def test_copyright(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found errors' diff --git a/240047/turtle_sim/src/turtle_pub/test/test_flake8.py b/240047/turtle_sim/src/turtle_pub/test/test_flake8.py new file mode 100644 index 0000000..27ee107 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/test/test_flake8.py @@ -0,0 +1,25 @@ +# Copyright 2017 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_flake8.main import main_with_errors +import pytest + + +@pytest.mark.flake8 +@pytest.mark.linter +def test_flake8(): + rc, errors = main_with_errors(argv=[]) + assert rc == 0, \ + 'Found %d code style errors / warnings:\n' % len(errors) + \ + '\n'.join(errors) diff --git a/240047/turtle_sim/src/turtle_pub/test/test_pep257.py b/240047/turtle_sim/src/turtle_pub/test/test_pep257.py new file mode 100644 index 0000000..b234a38 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/test/test_pep257.py @@ -0,0 +1,23 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_pep257.main import main +import pytest + + +@pytest.mark.linter +@pytest.mark.pep257 +def test_pep257(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found code style errors / warnings' diff --git a/240047/turtle_sim/src/turtle_pub/turtle_pub/__init__.py b/240047/turtle_sim/src/turtle_pub/turtle_pub/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/240047/turtle_sim/src/turtle_pub/turtle_pub/__pycache__/__init__.cpython-310.pyc b/240047/turtle_sim/src/turtle_pub/turtle_pub/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc82408935ba33d0e7d1d24164325daf7092524e GIT binary patch literal 157 zcmd1j<>g`k0<+qK86f&Gh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v3KO;XkRX;H$ zvm~Q3QNN_Ls3a#fzBn^iKdCe`Cj}-@P@06yjE~RE%PfhH*DI*J#bJ}1pHiBWY6mj8 Km*Tx>yTekql=E&}9(r9b z=V@H&R=yy-#LGv7mxXm`cYR*v9*xz zk=M1k&7C9CbsiCibltn8?V9F^zPm#13K`NRmB_pBqGt6Fh$e?*3i@W0k_nkw+UC}T z44j!gA3K}mMTj7<4xzI!kDaO9SyNqF+h5U{)Umj-84fwy74Zwa_x<(7s-9<)1@mS!p^OoQSu`xsWA|L|Mu>mbrm(r@)r+1h-onil#Jg`(5xWS8*dPv5mpvbvDAqzL$U zqrGBWm5qcn9%E4wX~s+=1eq3jOrS?%#?9JNWGoEgcsmI18(Ya;)12=gW!rJ2c7&98 zKc;d#H}(0BFpfl`C04juIgY7|euM~S%ijG78# zVH_yM*fa9amzz83P;3S~(mUf|o*Jg2;pTQ0#eA^<4lT3G5f%5>8I5HfoWqM!O&~S8 zYB%i${%GUXs=dE{lF6bzJBzf1i*ko!#GAi2VN}0E*+K~sC@(102_0BZpqpW|VYFd% zo{*;{EG_L$OEYp{>oV>-q!XK2IdA7Y6f&$p84oH`e`3$*fupO_+JsD;8Q{Xi!4l>q zBl6bVUIU69OSUwz*viDZd*Vkqx7R!*2QK#}?%))&K)X9wWvAin8u;An9i@Fm&Hku!F-mMW{&9J#!l1EKRs#Nsy#-Uaq1i) zIrrZK>!UPL!qkqj17xODxCw#bhsyX0qSFik)Ob9TfsWEdUI0}E!F%$dcR}{5>b@if$0P8#OEh;L$QLHg2seBPXVDbtQOigZ7 lUPbPtC~_|M)cdr!m+RPq3OftaTKqiPwEdf2*{9B{e*u*ytS0~f literal 0 HcmV?d00001 diff --git a/240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_client.py b/240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_client.py new file mode 100644 index 0000000..aa3e250 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_client.py @@ -0,0 +1,44 @@ +import rclpy +from rclpy.node import Node +from turtle_pub.srv import DrawCircle # Custom service + + +class DrawCircleClient(Node): + def __init__(self): + super().__init__('draw_circle_client') + # Create client for DrawCircle service + self.client = self.create_client(DrawCircle, 'draw_circle') + while not self.client.wait_for_service(timeout_sec=1.0): + self.get_logger().info('⏳ Waiting for service...') + + def send_request(self, x, y, radius): + # Prepare request with x, y, radius + req = DrawCircle.Request() + req.x = x + req.y = y + req.radius = radius + + # Call service asynchronously + future = self.client.call_async(req) + rclpy.spin_until_future_complete(self, future) + return future.result() + + +def main(args=None): + rclpy.init(args=args) + + client = DrawCircleClient() + + # Example request: teleport to (2, 3) and draw a circle of radius 1.0 + resp = client.send_request(2.0, 3.0, 1.0) + + if resp.success: + client.get_logger().info('✅ Circle drawn successfully!') + else: + client.get_logger().info('❌ Failed to draw circle') + + rclpy.shutdown() + + +if __name__ == '__main__': + main() diff --git a/240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_server.py b/240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_server.py new file mode 100644 index 0000000..6c19498 --- /dev/null +++ b/240047/turtle_sim/src/turtle_pub/turtle_pub/draw_circle_server.py @@ -0,0 +1,84 @@ +import rclpy +from rclpy.node import Node +from geometry_msgs.msg import Twist +from turtlesim.srv import TeleportAbsolute +from turtle_pub.srv import DrawCircle +import math + + +class DrawCircleServer(Node): + def __init__(self): + super().__init__('draw_circle_server') + + # Create service + self.srv = self.create_service(DrawCircle, 'draw_circle', self.draw_circle_callback) + + # Publisher for velocity commands + self.publisher = self.create_publisher(Twist, 'turtle1/cmd_vel', 10) + + # Client for teleportation + self.teleport_client = self.create_client(TeleportAbsolute, 'turtle1/teleport_absolute') + + # Wait until the teleport service is available + while not self.teleport_client.wait_for_service(timeout_sec=1.0): + self.get_logger().info('⏳ Waiting for /turtle1/teleport_absolute service...') + + self.get_logger().info('✅ DrawCircle service ready!') + + def draw_circle_callback(self, request, response): + self.get_logger().info(f'Received: x={request.x}, y={request.y}, r={request.radius}') + + # ---- Step 1: Teleport the turtle ---- + teleport_req = TeleportAbsolute.Request() + teleport_req.x = float(request.x) + teleport_req.y = float(request.y) + teleport_req.theta = 0.0 # start facing right + + future = self.teleport_client.call_async(teleport_req) + rclpy.spin_until_future_complete(self, future) + + if future.result() is None: + self.get_logger().error('❌ Teleport service call failed!') + response.success = False + return response + + self.get_logger().info('🐢 Teleported turtle successfully!') + + # ---- Step 2: Draw a circle ---- + twist = Twist() + + # Move forward briefly (to offset from teleport point) + twist.linear.x = 1.0 + twist.angular.z = 0.0 + start_time = self.get_clock().now().seconds_nanoseconds()[0] + while self.get_clock().now().seconds_nanoseconds()[0] - start_time < request.radius: + self.publisher.publish(twist) + + # Rotate with forward motion (circle) + twist.linear.x = 1.0 + twist.angular.z = 1.0 + start_time = self.get_clock().now().seconds_nanoseconds()[0] + duration = 2 * math.pi * request.radius + while self.get_clock().now().seconds_nanoseconds()[0] - start_time < duration: + self.publisher.publish(twist) + + # Stop + twist.linear.x = 0.0 + twist.angular.z = 0.0 + self.publisher.publish(twist) + + # Response + response.success = True + self.get_logger().info('✅ Finished drawing circle!') + return response + + +def main(args=None): + rclpy.init(args=args) + node = DrawCircleServer() + rclpy.spin(node) + rclpy.shutdown() + + +if __name__ == '__main__': + main()