Open RavenB opened 9 years ago
/cc
This is because Fedora 22 comes with wxpython 3.0.2 and metamorphose is looking strictly at 2.8. By the way PIL seems not anymore available on Fedora 22, replaced by Pillow but it looks compatible.
I forced the usage of wxpython to 3.0.2 by modifying the required script.
The application starts and requests the language configuration. (removed ~/.metamorphose2)
Then a dialogbox appears with a message "Please take a moment to set your preferences.
". I click "OK".
And the application fails with this :
[uggla@ugglalaptop metamorphose2]$ ./metamorphose2 -d
`
src/metamorphose2.py:60: wxPyDeprecationWarning: Call to deprecated item.
wx.InitAllImageHandlers()
Running in debug mode
Version : 0.8.3 (beta)
Python 2.7.10, wxPython 3.0.2.0
Operating System : Linux
System encoding : None
Interface language : enUS
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. ``
(metamorphose2.py:24229): GLib-GObject-WARNING *: The property
GtkButton:use-stock is deprecated and shouldn't be used anymore. It will be
removed in a future version. ``
(metamorphose2.py:24229): GLib-GObject-WARNING _: The property
GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It
will be removed in a future version.
Traceback (most recent call last):
File "src/metamorphose2.py", line 85, in
main()
File "src/metamorphose2.py", line 76, in main
application = BoaApp(0)
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line 8628,
in init
self._BootstrapApp()
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line 8196,
in _BootstrapApp
return core.PyApp__BootstrapApp(_args,
File "src/metamorphose2.py", line 61, in OnInit
self.main = MainWindow.create(None)
File "/home/uggla/workspace/metamorphose2/src/MainWindow/init.py", line
45, in create
return MainWindow(parent)
File "/home/uggla/workspace/metamorphose2/src/MainWindow/init.py", line
662, in init
self.init_ctrls(prnt)
File "/home/uggla/workspace/metamorphose2/src/MainWindow/__init.py", line
412, in init_ctrls
self.bottomWindow = bottomWindow.MainPanel(self.splitter, self)
File "/home/uggla/workspace/metamorphose2/src/MainWindow/bottomWindow.py",
line 286, in __init
self.init_ctrls(prnt)
File "/home/uggla/workspace/metamorphose2/src/MainWindow/bottomWindow.py",
line 237, in __init_ctrls
self.display = ListCtrl(self, -1, size=wx.Size(520, -1))
File "/home/uggla/workspace/metamorphose2/src/MainWindow/bottomWindow.py",
line 52, in __init
self.set_preferences()
File "/home/uggla/workspace/metamorphose2/src/MainWindow/bottomWindow.py",
line 57, in set_preferences
self.green.SetBackgroundColour(prefs.get(u'renamedColor'))
File "/home/uggla/workspace/metamorphose2/src/preferences/init.py", line
166, in get
self.load_preferences()
File "/home/uggla/workspace/metamorphose2/src/preferences/__init.py", line
92, in load_preferences
self.__create_new()
File "/home/uggla/workspace/metamorphose2/src/preferences/__init.py", line
58, in create_new
prefDiag = Dialog(None, self, initial=True)
File "/home/uggla/workspace/metamorphose2/src/preferences/dialog.py", line
113, in __init
self.init_ctrls(parent)
File "/home/uggla/workspace/metamorphose2/src/preferences/dialog.py", line
95, in __init_ctrls
self.notebook = Notebook(id=-1, name=u'notebook', parent=self)
File "/home/uggla/workspace/metamorphose2/src/preferences/dialog.py", line
52, in __init
page = page(self)
File "/home/uggla/workspace/metamorphose2/src/preferences/logging.py", line
100, in init
self.init_ctrls(parent)
File "/home/uggla/workspace/metamorphose2/src/preferences/logging.py", line
97, in __init_ctrls
self.init_sizers()
File "/home/uggla/workspace/metamorphose2/src/preferences/logging.py", line
52, in __init_sizers
self.init_logoptions_sizer(self.logOptionsSizer)
File "/home/uggla/workspace/metamorphose2/src/preferences/logging.py", line
44, in init_logoptions_sizer
flag=wx.ALIGN_CENTER_VERTICAL)
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line
14711, in AddWindow
return self.Add(_args, _kw)
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line
14453, in Add
return core.Sizer_Add(_args, _kwargs)
wx._core.PyAssertionError: C++ assertion "Assert failure" failed at
./src/common/sizer.cpp(1401) in DoInsert(): too many items (3 > 2*1) in grid
sizer (maybe you should omit the number of either rows or columns?)`
``
Is wxPython 2.8 not available in Fedora 22? On Ubuntu I have 2.8 and 3.0, and I admit not having tried running under 3.0.
Hello @ianare,
Yes Fedora 22 is shipped only with 3.0.2. It was part of the main changes : https://fedoraproject.org/wiki/Releases/22/ChangeSet#wxPython_3 Fedora is bleeding edge this is cool, but sometimes it causes some compatibility issues. That's a pity because metamorphose2 is a really powerful program that I used to do some mass renaming.
I tried to investigate a bit more on the issue but I was unable to get the main window working. I'm lacking too much knowledge on wxpython and metamorphose2 internals to make it working. If you could upgrade metamorphose2 to have it running with wxpython 3.0.2 even if it is in a bad shape, then maybe I could help correcting some issues.
I've added a new release 0.8.4 which allows specifying the wxPython version:
./metamorphose2 -w 3.0
I was able to get it running on wxPython 3.0.0.0 on Mint 17 (Ubuntu 14.04 LTS), although not everything worked - preferences menu for example did not show up.
I will try with a newer version of wx and see if it crashes.
Sorry, upon re-reading your output log, I see the problem is actually with the preferences menu... I'll see what I can do ;-)
@ianare wahou ! Thanks for your support ! I'll follow this thread and I will test it as soon as you will give me the green light.
OK it should be working now, can you test the latest master branch?
Thanks!
Hello @ianare,
It is better, but unfortunately I still get a core dump. :( Here is a report of the encountered issues.
messages/update_langs.sh --> ok make build --> ok
[uggla@ugglalaptop metamorphose2]$ sudo make install
install -d /usr/share/man/man1/
gzip -c9 manpage.1 > metamorphose2.1.gz
install -m 644 metamorphose2.1.gz /usr/share/man/man1/
cp *.html /usr/share/doc/metamorphose2/
cp: cannot stat ‘*.html’: No such file or directory
Makefile:105: recipe for target 'install-doc' failed
make: *** [install-doc] Error 1
Installation is looking for a html file and none is available. This is a minor issue, fixed by creating a html file at the root of the project.
Language selection --> ok Popup 'Please take a moment to set your preferences' --> ok Preferences window --> ok (was not the case before) Click on ok is working but then metamorphose crashes. :(
[uggla@ugglalaptop ~]$ metamorphose2 -d
Running in debug mode
Version: 0.8.4 (beta)
(metamorphose2.py:6545): GLib-GObject-WARNING **: The property
GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It
will be removed in a future version.
(metamorphose2.py:6545): GLib-GObject-WARNING **: The property
GtkAlignment:xalign is deprecated and shouldn't be used anymore. It will be
removed in a future version.
(metamorphose2.py:6545): GLib-GObject-WARNING **: The property
GtkAlignment:yalign is deprecated and shouldn't be used anymore. It will be
removed in a future version.
(metamorphose2.py:6545): GLib-GObject-WARNING **: The property
GtkButton:use-stock is deprecated and shouldn't be used anymore. It will be
removed in a future version.
Operating System: Linux - 4.1.3-200.fc22.x86_64 - #1 SMP Wed Jul 22 19:51:58
UTC 2015
System encoding: None
Python version: 2.7.10
wxPython version: 3.0.2.0
Interface language: en_US
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug
*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug
Opening as 'w' : /home/uggla/.metamorphose2/preferences.ini
clearUndo (CheckBox) = 0
useDirTree (CheckBox) = 1
showHiddenDirs (CheckBox) = 0
encodingGroup (Choice) = 0
encodingSelect (ComboBox) = None
showPreviewIcons (CheckBox) = 1
onlyShowChangedItems (CheckBox) = 0
showPreviewHighlight (CheckBox) = 1
renRefreshMin (SpinCtrl) = 80
showProgressDialog (CheckBox) = 1
itemCountForProgDialog (SpinCtrl) = 200
willChangeColor (ColourPickerCtrl) = #E5FFE5
renamedColor (ColourPickerCtrl) = #97F27F
errorColor (ColourPickerCtrl) = #FF1616
warnColor (ColourPickerCtrl) = #FDEB22
autoSelectAll (CheckBox) = 1
reloadAfterRename (CheckBox) = 0
alwaysMakeLog (CheckBox) = 0
previewOnConfig (CheckBox) = 1
autoShowError (CheckBox) = 0
logLocation (DirPickerCtrl) = /home/uggla/.metamorphose2/undo
logSeparator (TextCtrl) = :::
logEnclose (TextCtrl) =
logFextension (TextCtrl) = log
useWinChars (CheckBox) = 1
markWarning (RadioButton) = 1
markBadChars (RadioButton) = 0
deleteBadChars (RadioButton) = 0
useWinNames (CheckBox) = 0
winNamesWarn (RadioButton) = 1
winNamesBad (RadioButton) = 0
Opening as 'r' : /home/uggla/.metamorphose2/preferences.ini
(metamorphose2.py:6545): GLib-GObject-WARNING **: invalid (NULL) pointer
instance
(metamorphose2.py:6545): GLib-GObject-CRITICAL **: g_signal_handler_disconnect:
assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(metamorphose2.py:6545): Gtk-CRITICAL **: gtk_window_set_modal: assertion
'GTK_IS_WINDOW (window)' failed
Traceback (most recent call last):
File "/usr/share/metamorphose2/metamorphose2.py", line 187, in <module>
main(wx_version, cli_options)
File "/usr/share/metamorphose2/metamorphose2.py", line 181, in main
application = BoaApp(0)
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line 8628,
in __init__
self._BootstrapApp()
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line 8196,
in _BootstrapApp
return _core_.PyApp__BootstrapApp(*args, **kwargs)
File "/usr/share/metamorphose2/metamorphose2.py", line 176, in OnInit
self.main = MainWindow.create(None, cli_options)
File "/usr/share/metamorphose2/MainWindow/__init__.py", line 45, in create
return MainWindow(parent, options)
File "/usr/share/metamorphose2/MainWindow/__init__.py", line 554, in __init__
self.__init_ctrls(prnt)
File "/usr/share/metamorphose2/MainWindow/__init__.py", line 405, in
__init_ctrls
self.bottomWindow = bottomWindow.MainPanel(self.splitter, self)
File "/usr/share/metamorphose2/MainWindow/bottomWindow.py", line 284, in
__init__
self.__init_ctrls(prnt)
File "/usr/share/metamorphose2/MainWindow/bottomWindow.py", line 236, in
__init_ctrls
self.display = ListCtrl(self, -1, size=wx.Size(520, -1))
File "/usr/share/metamorphose2/MainWindow/bottomWindow.py", line 53, in
__init__
self.set_preferences()
File "/usr/share/metamorphose2/MainWindow/bottomWindow.py", line 58, in
set_preferences
self.green.SetBackgroundColour(prefs.get(u'renamedColor'))
File "/usr/share/metamorphose2/preferences/__init__.py", line 178, in get
self.__load_preferences()
File "/usr/share/metamorphose2/preferences/__init__.py", line 102, in
__load_preferences
self.__create_new()
File "/usr/share/metamorphose2/preferences/__init__.py", line 66, in
__create_new
prefDiag.Destroy()
File "/usr/lib64/python2.7/site-packages/wx-3.0-gtk3/wx/_core.py", line
16707, in __getattr__
raise PyDeadObjectError(self.attrStr % self._name)
wx._core.PyDeadObjectError: The C++ part of the Dialog object has been deleted,
attribute access no longer allowed.
Then metamorphose refuses to start. I guess this is normal because the configuration phase was not completed.
[uggla@ugglalaptop ~]$ metamorphose2 -d
Running in debug mode
Version: 0.8.4 (beta)
Operating System: Linux - 4.1.3-200.fc22.x86_64 - #1 SMP Wed Jul 22 19:51:58 UTC 2015
System encoding: None
Python version: 2.7.10
wxPython version: 3.0.2.0
Interface language: en_US
Opening as 'r' : /home/uggla/.metamorphose2/preferences.ini
(metamorphose2.py:6987): GLib-GObject-WARNING **: The property GtkButton:use-stock is deprecated and shouldn't be used anymore. It will be removed in a future version.
(metamorphose2.py:6987): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version.
loading picker core
loading sorting core
loading errors core
loading renamer core
loading operations parser
loading operations parser
loading operations parser
loading renamer preview
loading renamer engine
(metamorphose2.py:6987): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version.
Segmentation fault (core dumped)
Strange, I am not getting any of these warnings and no error on startup. I will see if I can find some info on them.
Which desktop environment are you using?
I noticed some files are missing in the master branch compared to the source code for 0.8.2.
make install fails because readme_en.html is missing in the root directory. I got the latest version to install by adding it back.
I was missing a dependency python-wxgtk3.0. Once that was taken care of launching metamorphose worked fine by using the command metamorphose2 -w 3
I'm using Debian Stretch, Gnome 3
I'll be testing it out more soon. Have a pile of files to be renamed. ;)
@ianare, sorry for the late answer. I did not noticed your message above before. I'm using Fedora 22 and Gnome 3.16.2.
This is also related to https://github.com/metamorphose/metamorphose2/issues/13 .
@javierpra not sure if the above comment is related to mine. However in my case I manage to build the application. The problem is when I try to run it, I have a segfault and a coredump... I tested on my 2 Fedora 22 systems and I got the same on both.
I was able to launch metamorphose2 on Fedora 23 by extracting only wx-2.8-gtk2-unicode directory to /usr/lib64/python2.7/site-packages from wxPython-2.8.12.0-8.fc21.x86_64.rpm.
Hi! I am on Fedora 22, and can run metamorphose2 (either from fc-repo or from git) properly, but only once downgrading wxpython to 2.8. I get the PIL-message at beginning thou...
What's the actual situation of this issue? Is there a work around that may work for fc22?
Many thanks!
I think the last commit to master fixes this bug definitely.
After much fighting with this problem, I simply removed the preferences dialog on first start. I'm thinking it was more of an annoyance anyway ;-)
Preferences are of course still available after the application starts up.
Please test, if it works for you I'll release a new version.
Thanks!
Master still segfaults when launched with -w=3
Edit: it segfaults even when launched without -w=3. Edit2: it runs when launched with -w=2.
Damn it!
Can you run with the -d option and post the results here?
Thanks much
$ metamorphose2 -d
Running in debug mode
Application Version: 0.9.0 (beta)
Preferences Version: 0.1.1
Init MainWindow
======== System Info =======
Operating System: Linux - 4.3.5-300.fc23.x86_64 - #1 SMP Mon Feb 1 03:18:41 UTC 2016
Python version: 2.7.10
wxPython version: 3.0.2.0 gtk3 (classic)
============================
== Interface Localization ==
04:23:19 PM: Debug: Failed to connect to session manager: SESSION_MANAGER environment variable not defined
Set language: en_US
Set encoding: None
============================
======== Preferences =======
Try to load preferences from file
Opening as 'r': /home/nerijus/.metamorphose2/preferences.ini
Old version found
Loaded 37 preferences
============================
loading picker core
loading sorting core
loading errors core
loading renamer core
loading operations parser
loading operations parser
loading operations parser
loading renamer preview
loading renamer engine
Segmentavimo klaida (core dumped)
Try to delete your preferences file: /home/nerijus/.metamorphose2/preferences.ini
It might fix it...
Still the same:
======== Preferences =======
Try to load preferences from file
File does not exist or is empty: Using default preferences
Opening as 'r': /usr/share/metamorphose2/preferences/default.ini
Old version found
Loaded 37 preferences
============================
loading picker core
loading sorting core
loading errors core
loading renamer core
loading operations parser
loading operations parser
loading operations parser
loading renamer preview
loading renamer engine
Segmentavimo klaida (core dumped)
BTW, I see /usr/share/metamorphose2/preferences/default.ini has the path: logLocation=/home/ianare/.metamorphose2/undo
It launched when I deleted /home/nerijus/.metamorphose2/language.ini, but after choosing language it segfaulted again.
Well back to work... will let you know when I have something. Thnaks for the patience ;-)
any news? doesn't work on Ubuntu 16.04 either (wxpython 3)
I am unable to launch on Fedora 24 even with the -w
comand
("\nwxPython 2.8 is required!\nRefer to 'readme_xx.html'", ' for installation instructions.\n')
[Abhinav@abhinav-f24 ~] $ metamorphose2 -w 3.0
("\nwxPython 2.8 is required!\nRefer to 'readme_xx.html'", ' for installation instructions.\n')
[Abhinav@abhinav-f24 ~] $ metamorphose2 -w 3
("\nwxPython 2.8 is required!\nRefer to 'readme_xx.html'", ' for installation instructions.\n')
[Abhinav@abhinav-f24 ~] $ metamorphose2 -d
("\nwxPython 2.8 is required!\nRefer to 'readme_xx.html'", ' for installation instructions.\n')
Still an issue in 2017 Fedora 24
Hi ianare, any progress resolving this issue please? I just upgraded from Ubuntu Trusty LTS to Ubunt Xenial LTS and heartbroken to discover that my best ever file renaming app for linux will not run with latest Python. I messed around for 3 hours trying the tips suggested above and no luck :-(
Here's a trace which I believe may be related.
(gdb) run /usr/share/metamorphose2/metamorphose2.py Starting program: /usr/bin/python /usr/share/metamorphose2/metamorphose2.py [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Detaching after fork from child process 2905. [New Thread 0x7fffd53da700 (LWP 2907)] [New Thread 0x7fffd4bd9700 (LWP 2908)] Detaching after fork from child process 2909. Detaching after fork from child process 2911. Detaching after fork from child process 2913. Detaching after fork from child process 2915. Detaching after fork from child process 2917. [New Thread 0x7fffccdfc700 (LWP 2919)]
Thread 1 "python" received signal SIGSEGV, Segmentation fault. 0x00007fffee6e3d96 in wxGetTopLevelParent(wxWindow*) () from /lib64/libwx_gtk3u_core-3.0.so.0
NOTE: The following may break other applications that rely on wxPython 3
As a workaround the following works. You can downgrade wxPython to 2.8.12. This worked for me on Fedora 24 as follows:
$sudo dnf downgrade wxPython-2.8.12.0-9.el7.x86_64.rpm
$cd metamorphose2/
$sudo make all
@ianare I was on fire today and I decided to really look at this issue.
Here is an early report of my findings, I probably need to look deeper in the code however, I think I have found the reason of the segfault.
I'm using Fedora 24 (wxPython 3.0.2)
The line which is causing the segfault is in /usr/share/metamorphose2/renamer/wxRenamerView.py. Line 144.
`class IntroTextPanel(wx.Panel):
123 """
124 Show intro text, set app size
125 """
126 def __init__(self, prnt, id):
127 ┆ wx.Panel.__init__(self, id=id, name=u'IntroTextPanel',
128 ┆ ┆ ┆ ┆ ┆ ┆ parent=prnt, style=wx.TAB_TRAVERSAL)
129
130 ┆ # create info text of available operations
131 ┆ # Find largest panel, use it to set this panel size
132 ┆ txt = ''
133 ┆ txtSize = (0, 0)
134 ┆ for i in range(prnt.availableOperations.GetItemCount()):
135 ┆ ┆ op = prnt.availableOperations.GetItemText(i)
136 ┆ ┆ txt += "%s : %s\n\n" % (op, operations.defs[op][1])
137
138 ┆ ┆ # create temporary instance of panel to get size
139 ┆ ┆ op = operations.defs[op][0]
140 ┆ ┆ opPanel = getattr(operations, op).OpPanel(prnt, main)
141 ┆ ┆ size = opPanel.GetSizeTuple()
142 ┆ ┆ if size > txtSize:
143 ┆ ┆ ┆ txtSize = size
144 # opPanel.Destroy() --> commenting this line will avoid the segfault.
So right now metamorphose is not segfaulting anymore, but the gui is screwed. That sounds normal as the panel size was probably not defined correctly.
Here is a screenshot: https://framapic.org/xsFia1T7PtN4/uEligUWjU07t.png https://framapic.org/a9vSQK9k2QSM/RxCq5Jg39Wj3.png
If someone else could do the same and confirm it is resolving the segfault, that will be great.
@uggla @ianare So Uggla seems to have found the issue. I played with this a bit. I don't know the reason for it yet, but it doesn't seem to specifically like the Destroy() function. Changing this to Close() removes the segfault for me. I don't have much time to play with this as I used to.
line 144 opPanel.Close()
@javierpra 👍 Thanks for checking on your side.
Awesome work on troubleshooting this issue guys! Any chance this might result in a bug-fix release in the near future?
Alternatively.....
Would it be safe to install a parallel (older/compatible) version of python alongside the one which comes bundled with Ubuntu Studio Xenial?
Thanks a bunch :-)
I have created Metamorphose2 Fedora RPMS. The fix is probably a bit raw. However Metamorphose can be used despite some interface glitches, probably due to wxpython3. https://copr.fedorainfracloud.org/coprs/uggla/metamorphose2/
refuses to launch on fedora 22 claiming wxpythion 2.8 is needed while latest wxpython is installed.