Hey there @defunctzombie, thanks for posting here!
The issue actually comes down to the rosdistro you’re using (Indigo) and the Ubuntu version on which you’re building (Xenial). Since Indigo isn’t available in the ROS archives for Xenial, the Catkin plugin actually uses the Trusty repos. Unfortunately for you, that actually means you’re mixing repo sources in this particular YAML: desktop-qt4 will actually be satisfied by the Xenial repos, and rviz by the Trusty repos, which means if they happen to use any package that differs between the two repos, you’ll have conflicts (which is to be expected, and is the case here: fontconfig is different, looks like Qt4 is different, and so on). That means that each part (desktop-qt4 and rviz) are trying to stage the same files, but each set of files comes from different versions of the package, and Snapcraft doesn’t know which ones you want to stage!
Snapcraft offers the stage and prime keywords that can be used to filter out select files from specific parts-- one of its uses is for exactly this case. So you could filter out conflicting files from, say, the rviz part with something like this (note the minus signs indicating that these files should not be staged):
# ...
rviz-workspace:
after: [desktop-qt4]
plugin: catkin
rosdistro: indigo
catkin-packages:
- rviz
stage:
- -etc/fonts/conf.avail/10-no-sub-pixel.conf
- -etc/fonts/conf.avail/10-scale-bitmap-fonts.conf
# ...
However, that assumes that Trusty’s rviz will run just fine against the libs in Xenial, which may very well not be the case. If you need to use Indigo (as opposed to Kinetic), for a snap like this you honestly probably need to build on Trusty. This is harder than it sounds right now, I’m afraid. We’re super close to having the snap work there which will make things painless, but you can prototype by following this guide.
I’ll post back here as soon as the snap suitably runs on Trusty. The PRs have been proposed, they just need to land.