Saturday, June 11, 2011

"setup.py test" throwing "ValueError: Empty module name"

Running 'setup.py test' suddenly started throwing a ValueError:

$ /usr/bin/python ./setup.py test
running test
running egg_info
writing pyVBox.egg-info/PKG-INFO
writing top-level names to pyVBox.egg-info/top_level.txt
writing dependency_links to pyVBox.egg-info/dependency_links.txt
reading manifest file 'pyVBox.egg-info/SOURCES.txt'
writing manifest file 'pyVBox.egg-info/SOURCES.txt'
running build_ext
Traceback (most recent call last):
  File "./setup.py", line 17, in
    url = "http://github.com/von/pyVBox"
...snip...
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/unittest.py", line 576, in loadTestsFromName
    module = __import__('.'.join(parts_copy))
ValueError: Empty module name
Poking around with pdb, it turns out it was because the name argument to loadTestsFromName():

(Pdb) print parts_copy
['test', '', '#VirtualMachineTests']
(Pdb) print name
test..#VirtualMachineTests

Which turns out to be caused by a Emacs autosave file. I had unsaved changes in my Emacs buffer. Once I saved them, the autosave file went away and 'setup.py test' ran fine.

Obviously some deeper problem here with setup.py tripping over these files.

Wednesday, April 6, 2011

Apple Mail losing all state

Seen this scenario a couple of times:
  1. Mac crashes
  2. Reboot and when Mail starts up, it's lost all of it's state and wants me to re-enter all my accounts information.
Fortunately, all my email is in IMap, so it's just a matter of restoring Mail's state about my IMap accounts. This is done by shutting down Mail, replacing ~/Library/Preferences/com.apple.mail.plist with a good copy from a backup.

Saturday, March 12, 2011

Adding a Tomato router as a Wifi extender

I recently moved into a house with a finished basement, which really puts a crimp into my ability to run cat5 ethernet where I want it. So, I needed some wifi extension and the ability to support some devices without wifi capability.

Since I'm using a Tomato router which supports WDS, I decided to add a second router and use WDS to turn it into an extender and a wired-to-wireless bridge.

I bought another Cisco/Linksys WRT54GL and installed Tomato 1.28. I basically did what I did last time, with a couple tweaks:

  1. I downloaded and unpacked the Tomato firmware.
  2. Since my home LAN is not the default network (192.168.1.0) I was able to connect my laptop to the new router via an ethernet cable and communicate with it directly without having it connected to the rest of my LAN. If you are using 192.168.1.0 for your LAN, you can do the same but you'll probably need to swap back and forth by turning your airport interface on and off, and disconnecting the ethernet cable.
  3. I skipped the factory reset and just did the upgrade. All went smoothly.
  4. After changing the password, under Basic/Identification I changed the router name and under Administration I changed the color scheme.
  5. I then followed the directions in the Tomato FAQ to set up WDS on both routers. The only hitch I had here is initially tried to use "WPA/WPA2 Personal" and "TKIP/AES" instead of "WPA Personal" and "AES" as the FAQ suggests and I couldn't get that to work. Following the directions exactly and things worked fine.

That's it - pretty darn easy. I've ordered a third WRT54GL to add a third repeater which I'll chain to the second to add another wired-to-wireless bridge. I expect that to go smoothly and will post when I've finished that.

Update 3/15: Added a third router, chained to the second and all is working well.