5f720ea
%global __provides_exclude_from ^%{_libdir}/calibre/calibre/plugins/.*\.so$
e849e8b
39cb948
%global _python_bytecompile_extra 0
39cb948
Ionuț Arțăriși dcb82d9
Name:           calibre
8970e53
Version:        5.37.0
0834835
Release:        %autorelease
713d700
Summary:        E-book converter and library manager
Ionuț Arțăriși dcb82d9
License:        GPLv3
e86d3a0
URL:            https://calibre-ebook.com/
Ionuț Arțăriși dcb82d9
5de9bf2
Source0:        https://download.calibre-ebook.com/%{version}/%{name}-%{version}.tar.xz
5f720ea
808130b
# Disable auto update from inside the app
5f720ea
Patch1:         calibre-no-update.patch
5f720ea
808130b
# Do not display multiple apps in desktop files, only the main app
fb6b4b1
# This is so gnome-software only 'sees' calibre once.
141dbe7
Patch3:         calibre-nodisplay.patch
5f720ea
6206f88
ExclusiveArch: %{qt5_qtwebengine_arches}
6cc2f91
5f720ea
BuildRequires:  python3-devel
5f720ea
BuildRequires:  python3-setuptools
5f720ea
BuildRequires:  python3-qt5-devel
5f720ea
BuildRequires:  python3-qt5
Ionuț Arțăriși dcb82d9
BuildRequires:  podofo-devel
Ionuț Arțăriși dcb82d9
BuildRequires:  desktop-file-utils
Ionuț Arțăriși dcb82d9
BuildRequires:  xdg-utils
Ionuț Arțăriși 118cf6d
BuildRequires:  chmlib-devel
Kevin Fenzi 0565b41
BuildRequires:  sqlite-devel
Kevin Fenzi a35b444
BuildRequires:  libicu-devel
39a6a12
BuildRequires:  libpng-devel
f8f4df2
BuildRequires:  libmtp-devel
cc5e06d
BuildRequires:  qt5-qtbase-devel
1fb8f7f
BuildRequires:  web-assets-devel
cc5e06d
BuildRequires:  qt5-qtbase-static
830d201
BuildRequires:  libXrender-devel
7c6cce8
BuildRequires:  openssl-devel
3cf245e
# calibre installer is so smart that it check for the presence of the
3cf245e
# directory (and then installs in the wrong place)
a63a0ae
BuildRequires:  bash-completion
830d201
BuildRequires:  glib2-devel
830d201
BuildRequires:  fontconfig-devel
8cb0aeb
BuildRequires:  libinput-devel
8cb0aeb
BuildRequires:  libxkbcommon-devel
f203c32
BuildRequires:  libappstream-glib
5f720ea
BuildRequires:  optipng
5f720ea
BuildRequires:  python3dist(apsw)
5f720ea
BuildRequires:  python3dist(mechanize)
5f720ea
BuildRequires:  python3dist(lxml)
5f720ea
BuildRequires:  python3dist(python-dateutil)
5f720ea
BuildRequires:  python3dist(pillow)
5f720ea
BuildRequires:  python3dist(css-parser)
5f720ea
BuildRequires:  python3dist(feedparser)
5f720ea
BuildRequires:  python3dist(netifaces)
5f720ea
BuildRequires:  python3dist(beautifulsoup4)
5f720ea
BuildRequires:  python3dist(psutil)
5f720ea
BuildRequires:  python3dist(pygments)
5f720ea
BuildRequires:  python3dist(soupsieve)
5f720ea
BuildRequires:  python3dist(msgpack)
5f720ea
BuildRequires:  python3dist(regex)
61e4828
BuildRequires:  python3dist(html5-parser) >= 0.4.8
5f720ea
BuildRequires:  python3dist(html2text)
5f720ea
BuildRequires:  python3dist(zeroconf)
5f720ea
BuildRequires:  python3dist(markdown) >= 3.0
4d16a20
BuildRequires:  python3dist(sip) >= 5.5
4d16a20
BuildRequires:  python3dist(pyqt-builder)
4d16a20
BuildRequires:  python3dist(pychm)
4d16a20
BuildRequires:  python3dist(pycrypto)
4d16a20
BuildRequires:  python3dist(cchardet)
581efd6
BuildRequires:  python3dist(sgmllib3k)
4d16a20
BuildRequires:  python3-speechd
bd677bd
BuildRequires:  python3-jeepney
6206f88
BuildRequires:  hunspell-devel
6206f88
BuildRequires:  qt5-qtwebengine-devel
6206f88
BuildRequires:  python-qt5-webengine
0b4436a
BuildRequires:  hyphen-devel
4d16a20
BuildRequires:  qt5-qtimageformats
4d16a20
BuildRequires:  libstemmer-devel
d51bee1
# using the bundled mathjax until Fedora updates to 3.0.0
d51bee1
#BuildRequires:  mathjax
5f720ea
# Those are only used for tests. Do not add to runtime deps.
5f720ea
BuildRequires:  /usr/bin/jpegtran
5f720ea
BuildRequires:  /usr/bin/JxrDecApp
Ionuț Arțăriși dcb82d9
Rex Dieter 91ba3df
%{?pyqt5_requires}
Rex Dieter 7ef5371
# once ^^ %%pyqt5_requires is everywhere, can drop python-qt5 dep below -- rex
Rex Dieter f872a85
Rex Dieter f872a85
# Add hard dep to specific qtbase pkg, see build message below -- rex
Rex Dieter f872a85
# Project MESSAGE: This project is using private headers and will therefore be tied to this specific Qt module build version.
Rex Dieter f872a85
# Project MESSAGE: Running this project against other versions of the Qt modules may crash at any arbitrary point.
Rex Dieter f872a85
# Project MESSAGE: This is not a bug, but a result of using Qt internals. You have been warned!
Rex Dieter e37ebeb
BuildRequires:  qt5-qtbase-private-devel
Rex Dieter f0a0313
%{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}}
cc5e06d
5f720ea
Requires:       python3-qt5
6206f88
Requires:       python-qt5-webengine
6206f88
Requires:       qt5-qtwebengine
cc5e06d
Requires:       qt5-qtsvg
e953750
Requires:       qt5-qtsensors
4d16a20
Requires:       qt5-qtimageformats
d4b2a7f
Requires:       poppler-utils
dbcd6d3
Requires:       liberation-sans-fonts
dbcd6d3
Requires:       liberation-serif-fonts
dbcd6d3
Requires:       liberation-mono-fonts
d51bee1
# using the bundled mathjax until Fedora updates to 3.0.0
d51bee1
#Requires:       mathjax
e22ff0f
Requires:       optipng
5f720ea
Requires:       python3dist(odfpy)
5f720ea
Requires:       python3dist(lxml)
5f720ea
Requires:       python3dist(pillow)
5f720ea
Requires:       python3dist(mechanize)
5f720ea
Requires:       python3dist(python-dateutil)
5f720ea
Requires:       python3dist(beautifulsoup4)
5f720ea
Requires:       python3dist(soupsieve)
5f720ea
Requires:       python3dist(css-parser)
5f720ea
Requires:       python3dist(feedparser)
5f720ea
Requires:       python3dist(netifaces)
5f720ea
Requires:       python3dist(dnspython)
5f720ea
Requires:       python3dist(apsw)
5f720ea
Requires:       python3dist(psutil)
5f720ea
Requires:       python3dist(pygments)
5f720ea
Requires:       python3dist(msgpack)
5f720ea
Requires:       python3dist(regex)
61e4828
Requires:       python3dist(html5-parser) >= 0.4.8
5f720ea
Requires:       python3dist(html2text)
5f720ea
Requires:       python3dist(markdown) >= 3.0
4d16a20
Requires:       python3dist(pychm)
4d16a20
Requires:       python3dist(cchardet)
4d16a20
Requires:       python3dist(pyqt5-sip) >= 12.8, python3dist(pyqt5-sip) < 13
6e48ff4
Requires:       udisks2
4d16a20
Requires:       /usr/bin/jpegtran
4d16a20
Requires:       /usr/bin/JxrDecApp
bd677bd
Requires:       python3-jeepney
5f720ea
Recommends:     python3dist(zeroconf)
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
%description
Ionuț Arțăriși dcb82d9
Calibre is meant to be a complete e-library solution. It includes library
Ionuț Arțăriși dcb82d9
management, format conversion, news feeds to ebook conversion as well as
Ionuț Arțăriși dcb82d9
e-book reader sync features.
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
Calibre is primarily a ebook cataloging program. It manages your ebook
Ionuț Arțăriși dcb82d9
collection for you. It is designed around the concept of the logical book,
Ionuț Arțăriși dcb82d9
i.e. a single entry in the database that may correspond to ebooks in several
Ionuț Arțăriși dcb82d9
formats. It also supports conversion to and from a dozen different ebook
Ionuț Arțăriși dcb82d9
formats.
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși 118cf6d
Supported input formats are: MOBI, LIT, PRC, EPUB, CHM, ODT, HTML, CBR, CBZ,
Ionuț Arțăriși 118cf6d
RTF, TXT, PDF and LRS.
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
%prep
5f720ea
%autosetup -n calibre-%{version} -p1
Ionuț Arțăriși 99c628e
Ionuț Arțăriși dcb82d9
# remove shebangs
6cc2f91
sed -i -e '/^#!\//, 1d' src/calibre/*/*/*/*/*.py
e849e8b
sed -i -e '/^#!\//, 1d' src/calibre/*/*/*/*.py
e849e8b
sed -i -e '/^#!\//, 1d' src/calibre/*/*/*.py
e849e8b
sed -i -e '/^#![ ]*\//, 1d' src/calibre/*/*.py
e849e8b
sed -i -e '/^#!\//, 1d' src/calibre/*.py
6cc2f91
sed -i -e '/^#!\//, 1d' src/css_selectors/*.py
6cc2f91
sed -i -e '/^#!\//, 1d' src/polyglot/*.py
e849e8b
sed -i -e '/^#!\//, 1d' src/templite/*.py
6cc2f91
sed -i -e '/^#!\//, 1d' src/tinycss/*/*.py
6cc2f91
sed -i -e '/^#!\//, 1d' src/tinycss/*.py
e849e8b
sed -i -e '/^#!\//, 1d' resources/default_tweaks.py
e849e8b
e849e8b
chmod -x src/calibre/*/*/*/*.py \
e849e8b
    src/calibre/*/*/*.py \
e849e8b
    src/calibre/*/*.py \
e849e8b
    src/calibre/*.py
Ionuț Arțăriși dcb82d9
d51bee1
# Using bundled mathjax until fedora goes to 3.0.0
6cc2f91
# remove bundled MathJax
d51bee1
#rm -rvf resources/mathjax
1fb8f7f
Ionuț Arțăriși dcb82d9
%build
6cc2f91
# unbundle MathJax
d51bee1
# using the bundled mathjax until Fedora updates to 3.0.0
d51bee1
#CALIBRE_PY3_PORT=1 \
d51bee1
#%%__python3 setup.py mathjax \
d51bee1
#    --system-mathjax \
d51bee1
#    --path-to-mathjax %%{_jsdir}/mathjax/
6cc2f91
5f720ea
OVERRIDE_CFLAGS="%{optflags}" \
5f720ea
CALIBRE_PY3_PORT=1 \
5f720ea
%__python3 setup.py build
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
%install
Ionuț Arțăriși dcb82d9
mkdir -p %{buildroot}%{_datadir}
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși 118cf6d
# create directory for calibre environment module
Ionuț Arțăriși 118cf6d
# the install script assumes it's there.
29022bb
mkdir -p %{buildroot}%{python3_sitearch}
Ionuț Arțăriși 118cf6d
a63a0ae
# create directory for completion files, so calibre knows where
a63a0ae
# to install them
a63a0ae
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
a63a0ae
mkdir -p %{buildroot}%{_datadir}/zsh/site-functions
a63a0ae
Ionuț Arțăriși dcb82d9
LIBPATH="%{_libdir}" \
5f720ea
CALIBRE_PY3_PORT=1 \
5f720ea
%__python3 setup.py install --root=%{buildroot}%{_prefix} \
3f2d6da
                            --prefix=%{_prefix} \
3f2d6da
                            --libdir=%{_libdir} \
6cc2f91
                            --staging-root=%{buildroot}%{_prefix} \
3f2d6da
                            --staging-libdir=%{buildroot}%{_libdir} \
3f2d6da
                            --staging-sharedir=%{buildroot}%{_datadir}
Rex Dieter 38e3f77
Ionuț Arțăriși 118cf6d
# remove shebang from init_calibre.py here because
Ionuț Arțăriși 118cf6d
# it just got spawned by the install script
29022bb
sed -i -e '/^#!\//, 1d' %{buildroot}%{python3_sitearch}/init_calibre.py
e849e8b
39cb948
# there are some python files there, do byte-compilation on them
5f720ea
%py_byte_compile %{__python3} %{buildroot}%{_datadir}/calibre
39cb948
Ionuț Arțăriși dcb82d9
# icons
Ionuț Arțăriși dcb82d9
mkdir -p %{buildroot}%{_datadir}/pixmaps/
Ionuț Arțăriși dcb82d9
cp -p resources/images/library.png                \
5f720ea
   %{buildroot}%{_datadir}/pixmaps/calibre-gui.png
Kevin Fenzi beb569c
cp -p resources/images/viewer.png                 \
Kevin Fenzi beb569c
   %{buildroot}%{_datadir}/pixmaps/calibre-viewer.png
3e34c82
cp -p resources/images/tweak.png                 \
3e34c82
   %{buildroot}%{_datadir}/pixmaps/calibre-ebook-edit.png
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
# packages aren't allowed to register mimetypes like this
Ionuț Arțăriși dcb82d9
rm -f %{buildroot}%{_datadir}/applications/defaults.list
dbcd6d3
rm -f %{buildroot}%{_datadir}/applications/mimeinfo.cache
9e686c0
rm -f %{buildroot}%{_datadir}/mime/application/*.xml
9e686c0
rm -f %{buildroot}%{_datadir}/mime/text/*.xml
Ionuț Arțăriși dcb82d9
6cc2f91
# check .desktop files
Ionuț Arțăriși 57d542a
desktop-file-validate \
6cc2f91
    %{buildroot}%{_datadir}/applications/calibre-ebook-edit.desktop \
6cc2f91
    %{buildroot}%{_datadir}/applications/calibre-ebook-viewer.desktop \
6cc2f91
    %{buildroot}%{_datadir}/applications/calibre-gui.desktop \
6cc2f91
    %{buildroot}%{_datadir}/applications/calibre-lrfviewer.desktop
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
# mimetype icon for lrf
Ionuț Arțăriși dcb82d9
rm -rf %{buildroot}%{_datadir}/icons/hicolor/128x128
Ionuț Arțăriși dcb82d9
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable
Ionuț Arțăriși dcb82d9
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/mimetypes
Ionuț Arțăriși dcb82d9
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
Kevin Fenzi beb569c
cp -p resources/images/mimetypes/lrf.png \
Kevin Fenzi beb569c
      %{buildroot}%{_datadir}/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png
Kevin Fenzi beb569c
cp -p resources/images/viewer.png \
Kevin Fenzi beb569c
      %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/calibre-viewer.png
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
# these are provided as separate packages
5f720ea
rm -rf %{buildroot}%{_libdir}/calibre/odf
Ionuț Arțăriși dcb82d9
5de9bf2
# unbundle Liberation fonts
5de9bf2
rm -f %{buildroot}%{_datadir}/calibre/fonts/liberation/*
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-mono/LiberationMono-BoldItalic.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationMono-BoldItalic.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-mono/LiberationMono-Bold.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationMono-Bold.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-mono/LiberationMono-Italic.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationMono-Italic.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-mono/LiberationMono-Regular.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationMono-Regular.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-sans/LiberationSans-BoldItalic.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSans-BoldItalic.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-sans/LiberationSans-Bold.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSans-Bold.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-sans/LiberationSans-Italic.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSans-Italic.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-sans/LiberationSans-Regular.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSans-Regular.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-serif/LiberationSerif-BoldItalic.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSerif-BoldItalic.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-serif/LiberationSerif-Bold.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSerif-Bold.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-serif/LiberationSerif-Italic.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSerif-Italic.ttf
5de9bf2
ln --symbolic --relative \
5de9bf2
    %{buildroot}%{_datadir}/fonts/liberation-serif/LiberationSerif-Regular.ttf \
5de9bf2
    %{buildroot}%{_datadir}/calibre/fonts/liberation/LiberationSerif-Regular.ttf
Ionuț Arțăriși c76318b
f203c32
# Remove these 2 appdata files, we can only include one
f203c32
rm -f %{buildroot}/%{_datadir}/metainfo/calibre-ebook-edit.appdata.xml
f203c32
rm -f %{buildroot}/%{_datadir}/metainfo/calibre-ebook-viewer.appdata.xml
d51bee1
 
f366a26
# rename MathJax folder to allow upgrade from 4.8.0-1 and earlier, which
f366a26
# relied on a symlink handled by the %%preun and %%posttrans scriptlets
d51bee1
#mv %%{buildroot}%%{_datadir}/calibre/mathjax %%{buildroot}%%{_datadir}/calibre/mathjax-fedora
f366a26
5f720ea
%check
5de9bf2
# skip failing tests:
5de9bf2
# - unrar (missing dependencies)
5de9bf2
# - bonjour (problems in mock)
4d16a20
# - 7z (missing dependencies)
5de9bf2
# - qt (fails on 32-bit architectures only)
bd677bd
# - test_searching (python3 porting issue?)
08d1050
CALIBRE_PY3_PORT=1 \
08d1050
%{__python3} setup.py test \
08d1050
    --exclude-test-name unrar \
08d1050
    --exclude-test-name bonjour \
4d16a20
    --exclude-test-name 7z \
bd677bd
    --exclude-test-name test_searching \
bf8cfe1
%ifarch i686 armv7hl x86_64
08d1050
    --exclude-test-name qt
8e76ded
%endif
5f720ea
4d16a20
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/calibre-gui.metainfo.xml
713d700
f366a26
%preun
f366a26
if [ -L %{_datadir}/calibre/mathjax ]; then
f366a26
    rm -f %{_datadir}/calibre/mathjax
f366a26
fi
f366a26
d51bee1
#posttrans
d51bee1
#ln -s -r %{_datadir}/calibre/mathjax-fedora %{_datadir}/calibre/mathjax
f366a26
c7176a1
%files
6cc2f91
%license LICENSE
4d16a20
%doc Changelog.txt COPYRIGHT README.md
Kevin Fenzi 1d9548c
%{_bindir}/calibre
Kevin Fenzi 1d9548c
%{_bindir}/calibre-complete
Kevin Fenzi 1d9548c
%{_bindir}/calibre-customize
Kevin Fenzi 1d9548c
%{_bindir}/calibre-debug
Kevin Fenzi 1d9548c
%{_bindir}/calibre-parallel
Kevin Fenzi 1d9548c
%{_bindir}/calibre-server
Kevin Fenzi 1d9548c
%{_bindir}/calibre-smtp
Kevin Fenzi 1d9548c
%{_bindir}/calibredb
Kevin Fenzi 1d9548c
%{_bindir}/ebook-convert
Kevin Fenzi 1d9548c
%{_bindir}/ebook-device
6cc2f91
%{_bindir}/ebook-edit
Kevin Fenzi 1d9548c
%{_bindir}/ebook-meta
6cc2f91
%{_bindir}/ebook-polish
Kevin Fenzi 1d9548c
%{_bindir}/ebook-viewer
Kevin Fenzi 1d9548c
%{_bindir}/fetch-ebook-metadata
Kevin Fenzi 1d9548c
%{_bindir}/lrf2lrs
Kevin Fenzi 1d9548c
%{_bindir}/lrfviewer
Kevin Fenzi 1d9548c
%{_bindir}/lrs2lrf
Kevin Fenzi 1d9548c
%{_bindir}/markdown-calibre
Kevin Fenzi 1d9548c
%{_bindir}/web2disk
5f720ea
%{_libdir}/calibre/
5f720ea
%{_datadir}/calibre/
Ionuț Arțăriși dcb82d9
%{_datadir}/pixmaps/*
dbcd6d3
%{_datadir}/applications/*.desktop
Ionuț Arțăriși dcb82d9
%{_datadir}/mime/packages/*
4d670a6
%{_datadir}/icons/hicolor/*/mimetypes/*
4d670a6
%{_datadir}/icons/hicolor/*/apps/*
29022bb
%{python3_sitearch}/init_calibre.py
29022bb
%{python3_sitearch}/__pycache__/init_calibre.*.py*
855c0c3
%{_datadir}/bash-completion/completions
5f720ea
%{_datadir}/zsh/site-functions/_calibre
4d16a20
%{_datadir}/metainfo/*.metainfo.xml
Ionuț Arțăriși dcb82d9
Ionuț Arțăriși dcb82d9
%changelog
0834835
%autochangelog