Bug 217333

Summary: deskutils/calibre: installation failed on FreeBSD-11
Product: Ports & Packages Reporter: Igor Pavlov <igor.arabesc.pavlov>
Component: Individual Port(s)Assignee: Guido Falsi <madpilot>
Status: Closed Not Accepted    
Severity: Affects Only Me CC: madpilot
Priority: ---    
Version: Latest   
Hardware: amd64   
OS: Any   
Bug Depends on: 217220    
Bug Blocks:    
Attachments:
Description Flags
Full build log none

Description Igor Pavlov 2017-02-24 19:49:50 UTC
Created attachment 180272 [details]
Full build log

Setting up command-line completion...
Installing bash completion to: /usr/ports/deskutils/calibre/work/stage/usr/local/share/bash-completion/completions/calibre

____________________ WARNING ____________________
Setting up completion failed with error:
__________________________________________________
	Traceback (most recent call last):
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/linux.py", line 757, in setup_completion
	    write_completion(bash_comp_dest, zsh)
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/linux.py", line 513, in write_completion
	    from calibre.gui2.viewer.main import option_parser as viewer_op
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/gui2/viewer/main.py", line 28, in <module>
	    from calibre.gui2.viewer.ui import Main as MainWindow
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/gui2/viewer/ui.py", line 11, in <module>
	    from PyQt5.Qt import (
	ImportError: cannot import name QWebView

Setting up desktop integration...
Creating un-installer: /usr/ports/deskutils/calibre/work/stage/usr/local/bin/calibre-uninstall
Installing calibre environment module: /usr/ports/deskutils/calibre/work/stage/usr/local/lib/python2.7/site-packages/init_calibre.py


calibre successfully installed. You can start it by running the command calibre
* install took 4.1 seconds

There were 1 warning(s):

* Setting up completion failed with error:

====> Compressing man pages (compress-man)
===> Staging rc.d startup script(s)
===>  Installing for calibre-2.80.0
===>   Registering installation for calibre-2.80.0
pkg-static: Unable to access file /usr/ports/deskutils/calibre/work/stage/usr/local/share/bash-completion/completions/calibre: No such file or directory
*** Error code 74

Stop.
make[1]: stopped in /usr/ports/deskutils/calibre
*** Error code 1

Stop.
make: stopped in /usr/ports/deskutils/calibre
Comment 1 Guido Falsi freebsd_committer freebsd_triage 2017-02-24 22:43:50 UTC
(In reply to Igor Pavlov from comment #0)

> 	  File
> "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/gui2/
> viewer/ui.py", line 11, in <module>
> 	    from PyQt5.Qt import (
> 	ImportError: cannot import name QWebView

This error prompts me to suggest you try reinstalling the qt5-webkit-5.7.1 (origin www/qt5-webkit) port and then try again installing calibre.
Comment 2 Igor Pavlov 2017-02-25 00:12:20 UTC
I've reinstalled the qt5-webkit-5.7.1 port, but it doesn't help.
Comment 3 Guido Falsi freebsd_committer freebsd_triage 2017-02-25 09:34:31 UTC
(In reply to Igor Pavlov from comment #2)
> I've reinstalled the qt5-webkit-5.7.1 port, but it doesn't help.

The error is a caused by a calibre python file not being able to load a required library from py-qt5, which is external to the calibre port, so it looks like some misalignment of ports local to your machine.

Unluckily the error message says it could not load the QWebView component, not the underlying cause. Since recompiling that component did not help it is some underlying dependency of it causing the problem.

Looking again at it I could have misinterpreted "pkg which" output, and the problem could lay in these ports:

py27-qt5-webkit-5.6            www/py-qt5-webkit
py27-qt5-webkitwidgets-5.6     www/py-qt5-webkitwidgets

could you try again by recompiling these two ports?

Thanks.
Comment 4 Igor Pavlov 2017-02-25 13:23:06 UTC
There is another error message:


Setting up command-line completion...
Installing bash completion to: /usr/ports/deskutils/calibre/work/stage/usr/local/share/bash-completion/completions/calibre

____________________ WARNING ____________________
Setting up completion failed with error:
__________________________________________________
	Traceback (most recent call last):
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/linux.py", line 757, in setup_completion
	    write_completion(bash_comp_dest, zsh)
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/linux.py", line 513, in write_completion
	    from calibre.gui2.viewer.main import option_parser as viewer_op
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/gui2/viewer/main.py", line 28, in <module>
	    from calibre.gui2.viewer.ui import Main as MainWindow
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/gui2/viewer/ui.py", line 20, in <module>
	    from calibre.gui2.viewer.documentview import DocumentView
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/gui2/viewer/documentview.py", line 33, in <module>
	    from calibre.gui2.viewer.fake_net import NetworkAccessManager
	  File "/usr/ports/deskutils/calibre/work/calibre-src-2.80.0/src/calibre/gui2/viewer/fake_net.py", line 9, in <module>
	    from PyQt5.Qt import QNetworkReply, QNetworkAccessManager, QUrl, QNetworkRequest, QTimer, pyqtSignal, QByteArray
	ImportError: cannot import name QNetworkReply

Setting up desktop integration...
Creating un-installer: /usr/ports/deskutils/calibre/work/stage/usr/local/bin/calibre-uninstall
Installing calibre environment module: /usr/ports/deskutils/calibre/work/stage/usr/local/lib/python2.7/site-packages/init_calibre.py


calibre successfully installed. You can start it by running the command calibre
* install took 4.8 seconds

There were 1 warning(s):

* Setting up completion failed with error:

====> Compressing man pages (compress-man)
===> Staging rc.d startup script(s)
===>  Installing for calibre-2.80.0
===>   Registering installation for calibre-2.80.0
pkg-static: Unable to access file /usr/ports/deskutils/calibre/work/stage/usr/local/share/bash-completion/completions/calibre: No such file or directory
*** Error code 74

Stop.
make[1]: stopped in /usr/ports/deskutils/calibre
*** Error code 1

Stop.
make: stopped in /usr/ports/deskutils/calibre


I think it's due to the bug #217220 in the net/qt5-network port.
Comment 5 Igor Pavlov 2017-02-25 14:22:54 UTC
net/qt5-network, www/qt5-webkit, www/py-qt5-webkit, www/py-qt5-webkitwidgets - all of them have been successfully reinstalled, but there is a message in the build log:

actual-package-depends: dependency on /usr/local/lib/libQt5Network.so not registered (normal if it belongs to base)

I have no idea what it means.
Comment 6 Guido Falsi freebsd_committer freebsd_triage 2017-02-25 14:43:43 UTC
(In reply to Igor Pavlov from comment #5)
> net/qt5-network, www/qt5-webkit, www/py-qt5-webkit, www/py-qt5-webkitwidgets
> - all of them have been successfully reinstalled, but there is a message in
> the build log:
> 
> actual-package-depends: dependency on /usr/local/lib/libQt5Network.so not
> registered (normal if it belongs to base)
> 
> I have no idea what it means.

Looks like the problem you are seeing is related to all the qt5 ports.

QT5 recently had a major upgrade, your problem could have been caused by some mishap during such upgrade.

Libraries have moved around but you still have references to the old locations.

Cleaning up these problems is not easy.

My suggestion is to use a brute force approach with a sequence of commands like this:

pkg delete calibre
pkg info '*qt5*' (write down the ones you need to reinstall, only leafs are relevant)
pkg delete '*qt5*'
pkg autoremove -y

then reinstall the ports you need like calibre.
Comment 7 Guido Falsi freebsd_committer freebsd_triage 2017-02-25 14:46:30 UTC
(In reply to Guido Falsi from comment #6)

> pkg delete calibre
> pkg info '*qt5*' (write down the ones you need to reinstall, only leafs are
> relevant)
> pkg delete '*qt5*'
> pkg autoremove -y

I made a mistake here, the pkg info command will not show all ports depending on qt5. It will be the pkg-delete '*qt5*' which will inform you of all the additional ports it's going to remove because they depend on qt5. You need to save the output from there and reinstall leaves.
Comment 8 Igor Pavlov 2017-02-25 23:17:28 UTC
I've reinstalled a lot of ports and it works now. Thanks.