Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 793986 - app-text/calibre-5.16.1: [Errno 2] No such file or directory: 'sip' with >=dev-python/sip-5
Summary: app-text/calibre-5.16.1: [Errno 2] No such file or directory: 'sip' with >=de...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal with 1 vote (vote)
Assignee: Zac Medico
URL:
Whiteboard:
Keywords:
: 799365 (view as bug list)
Depends on: 744958 796005 805965
Blocks: 794679 820464
  Show dependency tree
 
Reported: 2021-06-02 22:30 UTC by Samuel Bernardo
Modified: 2023-10-20 00:53 UTC (History)
15 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build log (build.log,44.26 KB, text/x-log)
2021-06-02 22:30 UTC, Samuel Bernardo
Details
emerge info (emerge.info,9.57 KB, text/plain)
2021-06-02 22:30 UTC, Samuel Bernardo
Details
emerge -pqv (emerge.pqv,282 bytes, text/plain)
2021-06-02 22:30 UTC, Samuel Bernardo
Details
build log (calibre-bug.log,42.50 KB, text/plain)
2021-06-04 16:57 UTC, John Covici
Details
app-text/calibre: support SIP v5 (calibre-enable-sip-5.patch,1.13 KB, patch)
2021-06-04 19:35 UTC, Zac Medico
Details | Diff
diff -U1 calibre-5.16.1.ebuild calibre-5.21.0.ebuild (calibre-5.21.0.ebuild.diff,898 bytes, patch)
2021-06-18 02:04 UTC, Zac Medico
Details | Diff
build.log (build.log,45.15 KB, text/x-log)
2021-11-07 12:58 UTC, Samuel Bernardo
Details
emerge.info (emerge.info,8.66 KB, text/plain)
2021-11-07 12:59 UTC, Samuel Bernardo
Details
emerge.pqv (emerge.pqv,292 bytes, text/plain)
2021-11-07 12:59 UTC, Samuel Bernardo
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Samuel Bernardo 2021-06-02 22:30:05 UTC
Created attachment 713364 [details]
build log

build log in attachment
Comment 1 Samuel Bernardo 2021-06-02 22:30:27 UTC
Created attachment 713367 [details]
emerge info
Comment 2 Samuel Bernardo 2021-06-02 22:30:39 UTC
Created attachment 713370 [details]
emerge -pqv
Comment 3 John Covici 2021-06-04 16:52:28 UTC
I get the same result, I emerge two packages with sip, but no difference..  I will send my build log
Comment 4 John Covici 2021-06-04 16:57:24 UTC
Created attachment 713649 [details]
build log
Comment 5 Zac Medico gentoo-dev 2021-06-04 19:35:01 UTC
Created attachment 713664 [details, diff]
app-text/calibre: support SIP v5

If someone with ">=dev-python/sip-5" could test this patch then I'll go ahead and merge it.

https://github.com/gentoo/gentoo/pull/21122
Comment 6 Samuel Bernardo 2021-06-05 10:56:38 UTC
With latest portage snapshot, calibre-5.16.1 installed without any error.

Don't know what was the difference between the time I reported this bug and now.
Comment 7 Samuel Bernardo 2021-06-05 10:59:47 UTC
I have sip-4 installed, but now I will upgrade to sip-5. I will leave the feedback here, but suppose I would need Zac Medico PR changes.
Comment 8 Larry the Git Cow gentoo-dev 2021-06-14 18:03:45 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cc35e31c02fb8baaee555f0d4033be58dd62363d

commit cc35e31c02fb8baaee555f0d4033be58dd62363d
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2021-06-04 19:28:19 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2021-06-14 18:02:27 +0000

    app-text/calibre: support SIP v5
    
    Closes: https://bugs.gentoo.org/793986
    Package-Manager: Portage-3.0.19, Repoman-3.0.3
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 app-text/calibre/calibre-5.16.1.ebuild | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
Comment 9 Larry the Git Cow gentoo-dev 2021-06-14 19:15:24 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=875872c2297b31dd08b3ef11a7f7bb06b96b0edf

commit 875872c2297b31dd08b3ef11a7f7bb06b96b0edf
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2021-06-14 19:13:09 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2021-06-14 19:13:50 +0000

    app-text/calibre: unpin dev-python/sip version for SIP v5
    
    Bug: https://bugs.gentoo.org/793986
    Package-Manager: Portage-3.0.20, Repoman-3.0.3
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 app-text/calibre/calibre-5.16.1.ebuild | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Comment 10 Larry the Git Cow gentoo-dev 2021-06-14 20:50:42 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=11af861c0aa0675c2c58f1f6c7ca506c45c0f64f

commit 11af861c0aa0675c2c58f1f6c7ca506c45c0f64f
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2021-06-14 20:45:26 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2021-06-14 20:49:03 +0000

    Revert "app-text/calibre: unpin dev-python/sip version for SIP v5"
    
    This reverts commit 875872c2297b31dd08b3ef11a7f7bb06b96b0edf.
    The SIP v5 migration depends on a dev-python/PyQt-builder
    ebuild requested in bug 796005.
    
    Bug: https://bugs.gentoo.org/744958
    Bug: https://bugs.gentoo.org/793986
    Bug: https://bugs.gentoo.org/796005
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 app-text/calibre/calibre-5.16.1.ebuild | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Comment 11 Zac Medico gentoo-dev 2021-06-18 00:40:43 UTC
I'm upgrading to PyQt5-5.15.4-r1 now, since calibre fails to build with my installed PyQt5-5.15.2 instance like this:

> SIPing 3 files...
> /usr/bin/python3.8 -c from sipbuild.tools.build import main; main(); --verbose --no-make --qmake /usr/lib64/qt5/bin/qmake
> Querying qmake about your Qt installation...
> /usr/lib64/qt5/bin/qmake -query
> These bindings will be built: pictureflow.
> Generating the pictureflow bindings...
> -c: Unable to find file "QtWidgets/QtWidgetsmod.sip"
> 
> 
>  * ERROR: app-text/calibre-5.21.0::gentoo failed (install phase):
Comment 12 Zac Medico gentoo-dev 2021-06-18 02:02:47 UTC
With PyQt5-5.15.4-r1, I have /usr/share/sip/PyQt5/QtWidgets/QtWidgetsmod.sip installed, however the calibre build doesn't find it and still fails with the same error as before the PyQt5-5.15.4-r1 upgrade:

> SIPing 3 files...
> /usr/bin/python3.8 -c from sipbuild.tools.build import main; main(); --verbose --no-make --qmake /usr/lib64/qt5/bin/qmake
> Querying qmake about your Qt installation...
> /usr/lib64/qt5/bin/qmake -query
> These bindings will be built: pictureflow.
> Generating the pictureflow bindings...
> -c: Unable to find file "QtWidgets/QtWidgetsmod.sip"
> 
> 
>  * ERROR: app-text/calibre-5.21.0::gentoo failed (install phase):

This is my current ebuild diff:

> --- calibre-5.16.1.ebuild	2021-06-15 09:55:01.962385579 -0700
> +++ calibre-5.21.0.ebuild	2021-06-17 18:48:24.457532898 -0700
> @@ -71,3 +71,3 @@
>  		>=dev-python/python-dateutil-2.5.3[${PYTHON_MULTI_USEDEP}]
> -		>=dev-python/PyQt5-5.12[gui,svg,widgets,network,printsupport,${PYTHON_MULTI_USEDEP}]
> +		>=dev-python/PyQt5-5.15.4-r1[gui,svg,widgets,network,printsupport,${PYTHON_MULTI_USEDEP}]
>  		>=dev-python/PyQtWebEngine-5.12[${PYTHON_MULTI_USEDEP}]
> @@ -106,4 +106,5 @@
>  	$(python_gen_cond_dep '
> +		dev-python/PyQt-builder[${PYTHON_MULTI_USEDEP}]
>  		>=dev-python/setuptools-23.1.0[${PYTHON_MULTI_USEDEP}]
> -		<dev-python/sip-5[${PYTHON_MULTI_USEDEP}]
> +		>=dev-python/sip-5[${PYTHON_MULTI_USEDEP}]
>  	')
> @@ -127,7 +128,2 @@
>  
> -	if ! has_version ">=dev-python/sip-5"; then
> -		einfo "Applying SIP v4 patch because SIP v5 was not detected"
> -		eapply "${WORKDIR}/${PN}-5.16.0-SIP-v4.patch"
> -	fi
> -
>  	eapply_user
Comment 13 Zac Medico gentoo-dev 2021-06-18 02:04:33 UTC
Created attachment 716655 [details, diff]
diff -U1 calibre-5.16.1.ebuild  calibre-5.21.0.ebuild
Comment 14 James L. Hammons 2021-06-22 16:53:24 UTC
Dunno if this helps or not, but it's failing to install for me as well:

>>> Install app-text/calibre-5.16.1 into /var/tmp/portage/app-text/calibre-5.16.1/image

*
* Running build
*

Building 24 extensions
SIPing 3 files...
/usr/bin/python3.9 -c import os; os.chdir('/var/tmp/portage/app-text/calibre-5.16.1/work/calibre-5.16.1/build/pyqt/pictureflow'); from sipbuild.tools.build import main; main(); --verbose --no-make --qmake /usr/lib64/qt5/bin/qmake
-c: Unable to import 'pyqtbuild': No module named 'pyqtbuild'

 * ERROR: app-text/calibre-5.16.1::gentoo failed (install phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line 127:  Called src_install
 *   environment, line 2796:  Called die
 * The specific snippet of code:
 *       PATH=${T}/bin:${PATH} PYTHONPATH=${S}/src${PYTHONPATH:+:}${PYTHONPATH} "${PYTHON}" setup.py install --root="${D}" --prefix="${EPREFIX}/usr" --libdir="${EPREFIX}/usr/${libdir}" --staging-root="${ED}/usr" --staging-libdir="${ED}/usr/${libdir}" || die;
 * 

Just for the record, I have both sip-4.19.25-r1 and sip-5.5.0-r2 installed, though I have no idea which one it's picking up here.
Comment 15 A.J. 2021-06-23 15:09:36 UTC
I had to install PyQt-builder to get past the error "No module named 'pyqtbuild'".  I am still struggling to figure out what fixes the error with QtWidgets/QtWidgetsmod.sip .  I have both sip-4 and sip-5.

It appears the calibre version bump was premature, particularly when there are python upgrades in the works.  Maybe don't remove older versions?

Anyway, a build dependency on PyQt-builder seems to be required.
Comment 16 A.J. 2021-06-23 15:10:10 UTC
I had to install PyQt-builder to get past the error "No module named 'pyqtbuild'".  I am still struggling to figure out what fixes the error with QtWidgets/QtWidgetsmod.sip .  I have both sip-4 and sip-5.

It appears the calibre version bump was premature, particularly when there are python upgrades in the works.  Maybe don't remove older versions?

Anyway, a build dependency on PyQt-builder seems to be required.
Comment 17 A.J. 2021-06-23 16:17:12 UTC
Sorry for double post, must have fat fingered the submit button.

Pointless "upstream" discussion specific to 5.16.1:  http://www.mobileread.mobi/forums/showthread.php?p=4132792#post4132792

Downgrading to PyQt5-5.15.2 did not work.

Downgrading to calibre-5.13.0 worked.  Moving the portage tree to a git repo was the best idea Gentoo ever had, it saves me time with issues like this.

I moved back to PyQt-5.15.4-r1 and calibre-5.13.0 still built.

I removed PyQt-builder and calibre-5.13.0 still built.

I recommend masking calibre-5.16.1 and restoring calibre-5.13.0 until this is resolved.  Please add PyQt-builder dependencies to future ebuilds.

As an aside, I've had run-ins with the developer before saying he tends to go a little too bleeding-edge with his feature bloat but he doesn't care.  He uses his binary distribution as justification.

Thanks for your continued support.
Comment 18 John Covici 2021-07-21 11:24:12 UTC
I tried to compile 5.13.0 which is apparently what I was using before and after portage reinstalled several packages to python3.8 I get the error:

Installing calibre environment module: /var/tmp/portage/app-text/calibre-5.13.0/image/usr/lib/python3.8/site-packages/init_calibre.py
Traceback (most recent call last):
  File "setup.py", line 119, in <module>
    sys.exit(main())
  File "setup.py", line 104, in main
    command.run_all(opts)
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/__init__.py", line 203, in run_all
    self.run_cmd(self, opts)
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/__init__.py", line 199, in run_cmd
    cmd.run(opts)
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/install.py", line 150, in run
    self.run_postinstall()
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/install.py", line 173, in run_postinstall
    from calibre.linux import PostInstall
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/linux.py", line 13, in <module>
    from calibre.customize.ui import all_input_formats
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/customize/ui.py", line 18, in <module>
    from calibre.customize.builtins import plugins as builtin_plugins
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/customize/builtins.py", line 752, in <module>
    from calibre.devices.smart_device_app.driver import SMART_DEVICE_APP
  File "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/devices/smart_device_app/driver.py", line 2044, in <module>
    from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z,
ImportError: cannot import name '_HAS_A_TO_Z' from 'zeroconf' (/usr/lib/python3.8/site-packages/zeroconf/__init__.py)
 * ERROR: app-text/calibre-5.13.0::local_ebuilds failed (install phase)
Comment 19 Bernd Feige 2021-07-24 12:14:32 UTC
(In reply to John Covici from comment #18)
> I tried to compile 5.13.0 which is apparently what I was using before and
> after portage reinstalled several packages to python3.8 I get the error:
> 
> Installing calibre environment module:
> /var/tmp/portage/app-text/calibre-5.13.0/image/usr/lib/python3.8/site-
> packages/init_calibre.py
> Traceback (most recent call last):
>   File "setup.py", line 119, in <module>
>     sys.exit(main())
>   File "setup.py", line 104, in main
>     command.run_all(opts)
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/__init__.
> py", line 203, in run_all
>     self.run_cmd(self, opts)
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/__init__.
> py", line 199, in run_cmd
>     cmd.run(opts)
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/install.
> py", line 150, in run
>     self.run_postinstall()
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/setup/install.
> py", line 173, in run_postinstall
>     from calibre.linux import PostInstall
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/
> linux.py", line 13, in <module>
>     from calibre.customize.ui import all_input_formats
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/
> customize/ui.py", line 18, in <module>
>     from calibre.customize.builtins import plugins as builtin_plugins
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/
> customize/builtins.py", line 752, in <module>
>     from calibre.devices.smart_device_app.driver import SMART_DEVICE_APP
>   File
> "/var/tmp/portage/app-text/calibre-5.13.0/work/calibre-5.13.0/src/calibre/
> devices/smart_device_app/driver.py", line 2044, in <module>
>     from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z,
> ImportError: cannot import name '_HAS_A_TO_Z' from 'zeroconf'
> (/usr/lib/python3.8/site-packages/zeroconf/__init__.py)
>  * ERROR: app-text/calibre-5.13.0::local_ebuilds failed (install phase)

That's https://bugs.gentoo.org/800233 ... We're quite well served with calibre build problems atm...
Comment 20 Eli Schwartz 2021-08-01 16:09:15 UTC
> I have both sip-4 and sip-5

calibre's ebuild depends on sip-4, seemingly, but https://gitweb.gentoo.org/repo/gentoo.git/commit/app-text/calibre?id=cc35e31c02fb8baaee555f0d4033be58dd62363d caused the ebuild to use sip-5 if it happened to be installed as an unannounced dependency because other applications used it. Meanwhile the actual fix for this bug was commit https://gitweb.gentoo.org/repo/gentoo.git/commit/app-text/calibre?id=d929291be3262b89b522d1ef0c209fe57158131e

This then failed because:

- using sip-5 isn't enough, you need to use PyQt-builder too but the if/elsed code building against an unannounced sip-5 DEPEND which wasn't in DEPEND didn't take that into account

- using sip-5 requires fixing bug 805965 first, ideally as part of exploring the distro-wide upgrade to sip-5. My understanding is, you can't build sip-5 applications against components using sip-4.


It seems like the ebuild should never have included if/elsed code to build against something that wasn't in the DEPEND list and was never actually tested, but merged after requests for testing failed to elicit feedback. Don't you have USE flags for this?
Comment 21 Bogdan 2021-08-10 21:04:53 UTC
calibre-5.24.0 compilation fails with:
> Unable to import 'pyqtbuild': No module named 'pyqtbuild'

E.g., calibre-5.24.0 ebuild still needs patch to add dev-python/PyQt-builder into dependency list.
Comment 22 Bogdan 2021-08-10 21:07:33 UTC
calibre-5.24.0 compilation fails with error:
> Unable to find file "QtWidgets/QtWidgetsmod.sip"

Packages installed:
- dev-python/PyQt-builder-1.10.3
- dev-python/PyQt5-5.15.4-r1
- dev-python/PyQt5-sip-12.9.0
- dev-python/PyQtWebEngine-5.15.4
Comment 23 Cecil Curry 2021-10-04 06:37:26 UTC
For users still suffering breakage, here's the tl;dr:

1. Unmask unstable Calibre, PyQt-builder, PyQt5, PyOt5-sip, and sip:5 ebuilds:

   $ cat <<EOF >>/etc/portage/package.accept_keywords
   ~app-text/calibre-5.25.0-r2
   ~dev-python/PyQt-builder-1.10.3
   ~dev-python/PyQt5-5.15.5_pre2107091435
   ~dev-python/sip-6.2.0_pre2108241238
   EOF

2. Manually emerge all of the above:

   $ emerge calibre PyQt-builder PyQt5 PyOt5-sip sip:5

For Gentoo developers, here's the tl;dr:

1. The "stable" dev-python/PyQt5-5.15.4-r1 ebuild is fundamentally broken *AND SHOULD BE IMMEDIATELY REMOVED FROM THE PORTAGE TREE.*

No, really. That ebuild is substantially less stable than the "unstable" dev-python/PyQt5-5.15.5_pre2107091435 ebuild, which actually behaves as expected. What the...? Let me now explicate. Gentoo's PyQt5 build process has been subtly broken for the past two years, but nobody on our side noticed because PyQt5 has continued shipping two parallel build systems -- only one of which reliably works:

* A broken sip 4-based build system managed by a deprecated "./configure" script, which our broken PyQt5 ebuilds continued using because we didn't know any better. This includes the "stable" dev-python/PyQt5-5.15.4-r1 ebuild -- which, of course, is anything but stable. Now we know. And knowledge is half the battle, right?
* A working sip 5-based build system, which only the "unstable" dev-python/PyQt5-5.15.5_pre2107091435 ebuild currently uses.

2. The "stable" app-text/calibre-5.16.1-r1 ebuild is also fundamentally broken *AND SHOULD BE IMMEDIATELY REMOVED FROM THE PORTAGE TREE.*

No, really. That ebuild is also substantially less stable than the "unstable" dev-python/calibre-5.25.0-r2 ebuild, which actually behaves as expected. What the...? Again, the reason is similar. The "stable" calibre ebuild erroneously:

* Omits a mandatory build-time and runtime dependency on dev-python/PyQt-builder.
* Attempts to concurrently support both the obsolete sip 4-based build system employed by older broken PyQt5 ebuilds (like the "stable" dev-python/PyQt5-5.15.4-r1 ebuild) *AND* the working sip 5-based build system employed by newer working PyQt5 ebuilds (like the "unstable" dev-python/PyQt5-5.15.5_pre2107091435 ebuild). Unsurprisingly, this black magic fails with spectacular fireworks.

The "unstable" dev-python/calibre-5.25.0-r2 ebuild resolves both of these issues. It also works.

Would someone mind submitting a Portage PR resolving this issue by removing the non-working "stable" ebuilds of both Calibre and PyQt5? Since official devs are out-to-lunch on this one, we'll have to roll up our greasy neckbeard collars and get this done ourselves.

If Gentoo wasn't so short on enthusiastic volunteer manpower, I'd publicly call for heads (and Portage privileges) to roll into a bloody hand-woven guillotine basket. Like, seriously. This sort of open shoddiness is embarrassing. Come on! It reflects poorly on the entire distro and source-based methodology. The upstream Calibre dev even excoriated us about our broken PyQt5 and Calibre ebuilds across several upstream issues -- and he was entirely right. You know it's bad when the packages you're packaging openly mock your distro.

But we are short on enthusiastic volunteer manpower... so let's not persecute anyone, even if they justifiably deserve to be culled. Instead, let's reflect on how and why our QA has gotten so bad that we can no longer even reliably package core Python dependencies.

** TL;DR **

Unstable ebuilds are stable. Stable ebuilds are broken. Remove stable ebuilds. Emerge unstable ebuilds. Calibre will work. I now sigh.
Comment 24 Cecil Curry 2021-10-05 00:52:10 UTC
Addendum: in addition to everything noted above, users also need to unmask and manually install the unstable "dev-python/dev-python/PyQtWebEngine-5.15.5_pre2108100905" ebuild. If you don't, you'll be hit by the following non-human-readable CLI error at Calibre runtime on attempting to view (i.e., read) any book:

    *** stack smashing detected ***: terminated
    The Qt WebEngine Render process crashed with termination type: 1 and exit code: 64000
    Restarting Qt WebEngine

Whenever that occurs, Qt WebEngine fails to restart (of course) and the Calibre Reader silently fails to render the book. *shrug*
Comment 25 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-10-05 01:27:46 UTC
(In reply to Cecil Curry from comment #23)
> For users still suffering breakage, here's the tl;dr:
> 
> 1. Unmask unstable Calibre, PyQt-builder, PyQt5, PyOt5-sip, and sip:5
> ebuilds:
> 
>    $ cat <<EOF >>/etc/portage/package.accept_keywords
>    ~app-text/calibre-5.25.0-r2
>    ~dev-python/PyQt-builder-1.10.3
>    ~dev-python/PyQt5-5.15.5_pre2107091435
>    ~dev-python/sip-6.2.0_pre2108241238
>    EOF
> 
> 2. Manually emerge all of the above:
> 
>    $ emerge calibre PyQt-builder PyQt5 PyOt5-sip sip:5
> 
> For Gentoo developers, here's the tl;dr:
> 
> 1. The "stable" dev-python/PyQt5-5.15.4-r1 ebuild is fundamentally broken
> *AND SHOULD BE IMMEDIATELY REMOVED FROM THE PORTAGE TREE.*
> 
> No, really. That ebuild is substantially less stable than the "unstable"
> dev-python/PyQt5-5.15.5_pre2107091435 ebuild, which actually behaves as
> expected. What the...? Let me now explicate. Gentoo's PyQt5 build process
> has been subtly broken for the past two years, but nobody on our side
> noticed because PyQt5 has continued shipping two parallel build systems --
> only one of which reliably works:

> 
> * A broken sip 4-based build system managed by a deprecated "./configure"
> script, which our broken PyQt5 ebuilds continued using because we didn't
> know any better. This includes the "stable" dev-python/PyQt5-5.15.4-r1
> ebuild -- which, of course, is anything but stable. Now we know. And
> knowledge is half the battle, right?
> * A working sip 5-based build system, which only the "unstable"
> dev-python/PyQt5-5.15.5_pre2107091435 ebuild currently uses.
> 
> 2. The "stable" app-text/calibre-5.16.1-r1 ebuild is also fundamentally
> broken *AND SHOULD BE IMMEDIATELY REMOVED FROM THE PORTAGE TREE.*
> 
> No, really. That ebuild is also substantially less stable than the
> "unstable" dev-python/calibre-5.25.0-r2 ebuild, which actually behaves as
> expected. What the...? Again, the reason is similar. The "stable" calibre
> ebuild erroneously:
> 
> * Omits a mandatory build-time and runtime dependency on
> dev-python/PyQt-builder.
> * Attempts to concurrently support both the obsolete sip 4-based build
> system employed by older broken PyQt5 ebuilds (like the "stable"
> dev-python/PyQt5-5.15.4-r1 ebuild) *AND* the working sip 5-based build
> system employed by newer working PyQt5 ebuilds (like the "unstable"
> dev-python/PyQt5-5.15.5_pre2107091435 ebuild). Unsurprisingly, this black
> magic fails with spectacular fireworks.
> 
> The "unstable" dev-python/calibre-5.25.0-r2 ebuild resolves both of these
> issues. It also works.
> 
> Would someone mind submitting a Portage PR resolving this issue by removing
> the non-working "stable" ebuilds of both Calibre and PyQt5? Since official
> devs are out-to-lunch on this one, we'll have to roll up our greasy
> neckbeard collars and get this done ourselves.

I'm no expert on Qt or anything related to it, so I'm reluctant to meddle.

I've CC'd qt@ because pesa or somebody else might be able to understand
the issue here.

> 
> If Gentoo wasn't so short on enthusiastic volunteer manpower, I'd publicly
> call for heads (and Portage privileges) to roll into a bloody hand-woven
> guillotine basket. Like, seriously. This sort of open shoddiness is
> embarrassing. Come on! It reflects poorly on the entire distro and
> source-based methodology. The upstream Calibre dev even excoriated us about
> our broken PyQt5 and Calibre ebuilds across several upstream issues -- and
> he was entirely right. You know it's bad when the packages you're packaging
> openly mock your distro.
> 

It's not really helpful to make comments like this. And fwiw, the Calibre
maintainer in Gentoo has been away for some time as he needed some time.

I'm sorry that there's bugs in packages, and of course we want to fix them,
but making angry comments like this is just upsetting and counterproductive.

You'd also do well to actually link to issues so we can address them.

> But we are short on enthusiastic volunteer manpower... so let's not
> persecute anyone, even if they justifiably deserve to be culled. Instead,
> let's reflect on how and why our QA has gotten so bad that we can no longer
> even reliably package core Python dependencies.
> 

Or maybe there's just a bug in a few packages? Please stop being so rude.

The bug tracker is for bugs and for discussing how to solve them, not for
you to rant. We welcome more help and comments like this don't really
help any developer's motivation.

> Unstable ebuilds are stable. Stable ebuilds are broken. Remove stable
> ebuilds. Emerge unstable ebuilds. Calibre will work. I now sigh.

Leave this out, thanks. The information that the ~arch versions are working
_is_ helpful, and all you really needed to say.
Comment 26 Larry the Git Cow gentoo-dev 2021-10-05 04:58:04 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fd9d73b28e96631a98b505ac084180d0b1d6382a

commit fd9d73b28e96631a98b505ac084180d0b1d6382a
Author:     Cecil Curry <leycec@gmail.com>
AuthorDate: 2021-10-05 04:56:21 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2021-10-05 04:57:59 +0000

    app-text/calibre: Require latest PyQtWebEngine
    
    Bug: https://bugs.gentoo.org/793986#c24
    Package-Manager: Portage-3.0.26, Repoman-3.0.3
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 app-text/calibre/calibre-5.25.0-r2.ebuild | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Comment 27 Eli Schwartz 2021-10-05 11:50:03 UTC
> It seems like the ebuild should never have included if/elsed code to build against something that wasn't in the DEPEND list and was never actually tested, but merged after requests for testing failed to elicit feedback. Don't you have USE flags for this?

No heads in baskets are required. :) I am not a Gentoo user, so I can't test this, but my understanding is that you can simply revert https://gitweb.gentoo.org/repo/gentoo.git/commit/app-text/calibre?id=cc35e31c02fb8baaee555f0d4033be58dd62363d

The root of the problem is that this commit broke a working, if deprecation-filled, package. By moving some vital code into an if block that, when evaluating false, prevented that vital code from being run, which is why it only sometimes broke.

This will revert back to the status quo of correctly building deprecated software, and the unstable versions which correctly build not-deprecated software can continue to be masked for mysterious reasons that as a non-Gentoo user I don't comprehend.

P.S. Since apparently at least one Gentoo dev is *not* on vacation and present in this ticket, thus available to patch calibre, it would be nice if this helpful advice didn't go entirely ignored.

I would venture to say that while being on vacation and no one being available to devote time into developing a fix is understandable...

... ignoring clear analysis and instructions on fixing the problem ***via reverting a bad commit*** is a bit more... unfortunate... and your users could, at least, feel justified in being unhappy even if angrily demanding heads is a counterproductive way of demonstrating that unhappiness.

Seriously, reverting a bad commit after someone has analyzed the entire problem for you shouldn't be that hard to do after months of cricket chirping. That doesn't take expert domain knowledge as the primary packager.
Comment 28 Zac Medico gentoo-dev 2021-10-05 20:43:10 UTC
(In reply to Eli Schwartz from comment #27)
> > It seems like the ebuild should never have included if/elsed code to build against something that wasn't in the DEPEND list and was never actually tested, but merged after requests for testing failed to elicit feedback. Don't you have USE flags for this?
> 
> No heads in baskets are required. :) I am not a Gentoo user, so I can't test
> this, but my understanding is that you can simply revert
> https://gitweb.gentoo.org/repo/gentoo.git/commit/app-text/
> calibre?id=cc35e31c02fb8baaee555f0d4033be58dd62363d
> 
> The root of the problem is that this commit broke a working, if
> deprecation-filled, package. By moving some vital code into an if block
> that, when evaluating false, prevented that vital code from being run, which
> is why it only sometimes broke.

That patch was needed for sip v4 support back when I tested it. I no longer have a sip v4 system to test with, but if someone else can test a fix then I would be happy to apply it.
Comment 29 Eli Schwartz 2021-10-22 00:25:33 UTC
(In reply to Zac Medico from comment #28)
> That patch was needed for sip v4 support back when I tested it. I no longer
> have a sip v4 system to test with, but if someone else can test a fix then I
> would be happy to apply it.


I agree it is needed for sip 4 support! I explained in comment 27, which you are replying to, why I agree...

... and then pointed out that it is not actually being applied.


So I *literally* don't understand the reply you gave. It doesn't actually seem to be a response to anything I said.

And no, I can't "test a fix", I don't use Gentoo... but now that the issue has been extensively debugged across around a dozen comments, I had sort of assumed you'd have enough information on the topic in order to have the confidence to, well... do this incredibly, horrifyingly controversial change called...

... revert back to a previous ebuild that was known to reliably work.



Reverting this broken change (using the command "git revert" should do it) will have the effect of:

- removing code that tests if a package that isn't in DEPEND, is installed, and if it is installed, compile against that instead

Again, I'm not a Gentoo user, just a calibre contributor. I'm not really knowledgeable about how Gentoo works.

I'm surprised and shocked that a Gentoo package is deliberately ignoring its own DEPEND and including special code in the ebuild to deselect the package in DEPEND and compile against ***something else instead*** (which has a different ABI!!!) just because it happens to be installed by accident.

My understanding is that this sort of thing is usually supposed to be controlled by USE flags.

But hey, for all I know, I'm completely off base, that's a Gentoo tradition, and I should stop arguing against it. If so, then I apologize for interrupting, and I'll remove myself from the conversation.

TBH it was probably a bad idea for me to say anything in the first place.
Comment 30 Larry the Git Cow gentoo-dev 2021-10-22 05:45:57 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=797e48fc572e31870215cba1559198909ad363f3

commit 797e48fc572e31870215cba1559198909ad363f3
Author:     Zac Medico <zmedico@gentoo.org>
AuthorDate: 2021-10-22 05:41:09 +0000
Commit:     Zac Medico <zmedico@gentoo.org>
CommitDate: 2021-10-22 05:44:34 +0000

    app-text/calibre: remove 5.16.1-r1 sipv4 conditional
    
    The ebuild explicitly requires sipv4 via DEPEND, and
    therefore the conditional is inappropriate.
    
    Bug: https://bugs.gentoo.org/793986#c29
    Reported-by: Eli Schwartz <eschwartz@archlinux.org>
    Package-Manager: Portage-3.0.28, Repoman-3.0.3
    Signed-off-by: Zac Medico <zmedico@gentoo.org>

 app-text/calibre/calibre-5.16.1-r1.ebuild | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
Comment 31 Zac Medico gentoo-dev 2021-10-22 05:47:33 UTC
(In reply to Eli Schwartz from comment #29)
> TBH it was probably a bad idea for me to say anything in the first place.

Makes sense. Thanks for elaborating! :-)
Comment 32 Eli Schwartz 2021-10-22 18:09:52 UTC
Thanks. :)
Comment 33 Samuel Bernardo 2021-11-07 12:58:31 UTC
Created attachment 749316 [details]
build.log

compilation error remains with current portage snapshot:
sip: /usr/lib/python3.9/site-packages/PyQt5/bindings//QtCore/QtCoremod.sip:23: syntax error
Comment 34 Samuel Bernardo 2021-11-07 12:59:22 UTC
Created attachment 749319 [details]
emerge.info

emerge info for previous uploaded build.log
Comment 35 Samuel Bernardo 2021-11-07 12:59:57 UTC
Created attachment 749322 [details]
emerge.pqv

emerge -pqv for previous uploaded build.log
Comment 36 Samuel Bernardo 2021-11-07 14:44:44 UTC
Solve this issue keyword unmasking ~amd64 calibre 5.31.1.
Comment 37 Andreas Sturmlechner gentoo-dev 2022-04-15 20:24:34 UTC
So, this bug is actually fixed?
Comment 38 Zac Medico gentoo-dev 2022-04-15 22:25:33 UTC
(In reply to Samuel Bernardo from comment #36)
> Solve this issue keyword unmasking ~amd64 calibre 5.31.1.

Correct.

(In reply to Andreas Sturmlechner from comment #37)
> So, this bug is actually fixed?

Yes, I suppose we can close it now.
Comment 39 Eli Schwartz 2023-10-20 00:53:44 UTC
*** Bug 799365 has been marked as a duplicate of this bug. ***