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 )