Yes, this was basically what I came up with.

The problem turns out to be that for gl_LightSource[n], n must be a literal int or const int.  I'm not sure why this could be.  Ideas?  

I solved the problem by passing the light source itself to the function.  

There's a few more other problems, but it's mostly done.