JTAGWhisperer turns an Arduino into an JTAG programmer for CPLDs and FPGAs. It uses the same Xilinx XAPP58 [PDF] XSVF programmer we ported to the Bus Pirate. Mike has successfully programed a XC9572XL CPLD breakout board, but it should work with many JTAG targets. Python and pyserial are required.
Via the forum.