python-nautilus: Feisty: Python script's methods seem to be not called by extension.

Bug #145811 reported by ciukes
20
Affects Status Importance Assigned to Milestone
nautilus-python
Fix Released
Medium
nautilus-python (Ubuntu)
Fix Released
Undecided
Unassigned
Nominated for Feisty by Jonathan Rogers
Nominated for Gutsy by Jonathan Rogers
Declined for Hardy by Daniel Holbach

Bug Description

Feisty Fawn amd64.

$> dpkg-query --show python-nautilus
python-nautilus 0.4.3-1.1
$> python --version
Python 2.5.1

None of the example scripts (/usr/share/doc/python-nautilus/examples/) is working.
Tried copying to either /usr/lib/nautilus/extensions-1.0/python/ or /.nautilus/python-extensions/

Observation: Changed one of the scripts by adding "print" statement to trace execution flow. The script is compiled and loaded for sure, confirmed by .pyc existence. However none of the Python methods gets called.

Following advice given here https://bugs.launchpad.net/ubuntu/+source/nautilus-python/+bug/49921
installed python2.5-dev. It didn't helped.

Revision history for this message
ciukes (ciukes) wrote :

Because of above I couldn't get nautilus-bzr working.

Revision history for this message
Jonathan Rogers (jonner) wrote :

I am seeing exactly the same problem on both Feisty and Gutsy amd64. A python extension I am writing works on Edgy amd64. On Feisty and Gutsy, the code is being loaded, since a .pyc file is created and I can print to nautilus's stdout with a "print" statement at the toplevel. However, the methods in my derived class are never called to modify the contents of columns.

Revision history for this message
Jonathan Rogers (jonner) wrote :

Feisty i386 seems to be fine. This seems to be a very strange amd64-specific bug that only appeared after Edgy.

Revision history for this message
Jonathan Rogers (jonner) wrote :

Although I don't know why this issue only seems to have surfaced after Edgy, I think I found the root problem. I replaced one local int declaration with the correct Py_ssize_t. I assume that Py_ssize_t is the same size as int on i386, but not amd64.

Revision history for this message
Jonathan Rogers (jonner) wrote :

I think I know why this became an issue in Feisty. Feisty was the first to use Python 2.5 by default. Python 2.5 changed its C API to use Py_ssize_t in the PyDict_Next function instead of int.

Revision history for this message
Jonathan Rogers (jonner) wrote :

I've uploaded patched packages to my personal package archive: <URL:https://edge.launchpad.net/%7Ejonner/+archive>, so try them out. At least the Gutsy amd64 and i386 ones work for me.

Changed in nautilus-python:
status: Unknown → New
Revision history for this message
MattMartin (mgmspam1) wrote :

YES ! Works for me. Thank you very much for fixing this !

Changed in nautilus-python:
status: New → Fix Released
Revision history for this message
Jonathan Rogers (jonner) wrote :

Now that this bug has been fixed upstream, perhaps it won't be long till it's fixed in Ubuntu.

Revision history for this message
Daniel Holbach (dholbach) wrote :

Fixed in Hardy.

Needs to follow http://wiki.ubuntu.com/StableReleaseUpdates for other releases.

Changed in nautilus-python:
status: New → Fix Released
Changed in nautilus-python:
importance: Unknown → Medium
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.