I am currently working through dependency hell with #ros. It is not fun.

"What's that? You want to run a ros2-ros1 bridge in a container? AND run a #ros2 node on the host? So you can test that some newer ros2 code can publish to a topic and see if the old ros1 device picks up the messages like advertised? HAHAHAHAHAHAHAHAHA FUCK YOU"

Fine. You want a separate IP address per node. *That* makes sense at least.

/me proceeds to figure out how to get macvlan shit working for podman so that a rootful container can get an ip address from dhcp and have its own IP. This also involves, on #Debian at least, introducing some systemd unit files that the official package doesn't include for whatever reason.

"HAHAHAHAHAHA NICE TRY. WE'RE STILL GONNA RESOLVE ROS_MASTER_URI WITH THE HOSTNAME EVEN IF YOU PUT THE IP IN ROS_MASTER_URI ENV VAR"

But the container is ephemeral! I don't know the IP-Hostname pairs ahead of time!

/me proceeds to study ROS_IP

JFC. I've resorted to this god-awful hack in my podman run call for executing the bridge:

bash -c 'ROS_IP=$(ifconfig | grep eth0 -A 1 | tail -n 1 | awk '"'"'{print $2}'"'"') ros2 run ros1_bridge dynamic_bridge --bridge-all-topics'

IT'S QUOTE ESCAPING ALL THE WAY DOWN, FOLKS!

I know the docs say "fuck you, make the names resolve," but I'd rather not fuck around with modifying /etc/hosts on a bunch of nodes just to make ros happy.

Oh. And once you use ROS_IP, you are married to it. EVERY node's gotta use it. All or nothing.

FFFFFFFUUUUUUUUUUUU

Yeah. I'm glad I switched careers to nursing. (all of this has been an exercise in helping someone else navigate the ros landscape, which I was blissfully unaware of until now. But at least they're gonna get my help :P )

#DependencyHell #dev #development #SoftwareEngineering

I mean just LOOK AT ALL THE FUCKING TABS I HAVE OPEN GOD DAMMIT

#TreeStyleTabs