I've also replaced the /usr/bin/dropbox binary with a wrapper that uses wget to download the required tar file from dropbox.com, fixing the rest of the python script to work seemed like a waste of time...
There are two problems running dropbox on something as ancient as RHEL5
- python 2.6
- glib 2.16
Dropbox compiled against more modern versions of glib and gtk2 and wrote their scripts using the modern constructs of python 2.6. So to get dropbox working, you have to backport all the modern stuff. For python this means taking out all the with and closing statements.
glib is a little more complex, the new function of g_async_queue_new_full has to be replaced with g_async_queue_new, but we need to still handle the destroy when the queue is empty...I haven't fixed that yet.
g_strcmp0 isn't available in 2.12, so I just wrote an inline replacement for it.
g_timeout_add_seconds isn't available also, but that one's easy, you just use g_timeout_add and change the 1 to 1000 (for ms).
Here is my patch nautilus-dropbox-0.6.3-puias.patch
Once you have applied this, you'll need the following rpms as specified in my spec file:
BuildRequires: gtk2-devel, glib2-devel, nautilus-devel, libnotify-devel, nautilus-extensions, gnome-vfs2-devel, pygtk2-devel, pygtk2,python-docutils, vnc-server Requires: nautilus, glib2, gtk2, libnotify, gnome-vfs2, pygtk2,python-docutils
You can then start building, let me know if it doesn't compile cleanly or patch properly for you, I'm still working on it...
After all that, the dropbox python script that gets installed in /usr/bin is still broken, it can't download the binary package from dropbox automatically, you'll have to download that manually and unpack it into your home directory. The url is in the script, http://www.dropbox.com/download?plat=%s where plat is the result of the plat() function.
for 32-bit, it's going to be lnx.x86, for 64 lnx.x86_64
#!/usr/bin/python import sys import platform def plat(): if sys.platform.lower().startswith('linux'): arch = platform.machine() if (arch == 'i' and arch.isdigit() and arch[2:4] == '86'): plat = "x86" elif arch == 'x86_64': plat = arch else: FatalVisibleError("Platform not supported") return "lnx.%s" % plat else: FatalVisibleError("Platform not supported") print plat()
this is just a tar file, so download it and place it in the users home directory.
that should be it, if you do make; make install in the dropbox directory, and then run "dropbox start -i", it should start up and ask you if you already have an account.
one minor note, the png's provided in the dropbox tar file are 64x64, which means once you install everything and have it running, the emblems in nautilus are huge! The overwrite the icons of the files, I used convert (ImageMagick) to resize them to 16x16 which seems a reasonable size.
This is still very much a work in progress...any comments, questions or suggestions appreciated.
The RPMSUpdated 11Oct2010
I still have a little work to do on these, but they should install clean, as usual, let me know if they don't...
How to apply the patch:
[uphill@build nautilus-dropbox]$ \rm -r nautilus-dropbox-0.6.3 [uphill@build nautilus-dropbox]$ tar xf nautilus-dropbox-0.6.3.tar.bz2 [uphill@build nautilus-dropbox]$ patch -p0