diff options
Diffstat (limited to 'pkgs/applications/misc/calibre/default.nix')
-rw-r--r-- | pkgs/applications/misc/calibre/default.nix | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix deleted file mode 100644 index 10bbeefd03f1..000000000000 --- a/pkgs/applications/misc/calibre/default.nix +++ /dev/null @@ -1,229 +0,0 @@ -{ lib -, stdenv -, fetchurl -, cmake -, fetchpatch -, fontconfig -, hunspell -, hyphen -, icu -, imagemagick -, libjpeg -, libmtp -, libpng -, libstemmer -, libuchardet -, libusb1 -, pkg-config -, podofo -, poppler_utils -, python3Packages -, qmake -, qtbase -, qtwayland -, speechd-minimal -, sqlite -, wrapQtAppsHook -, xdg-utils -, wrapGAppsHook3 -, popplerSupport ? true -, speechSupport ? true -, unrarSupport ? false -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "calibre"; - version = "7.16.0"; - - src = fetchurl { - url = "https://download.calibre-ebook.com/${finalAttrs.version}/calibre-${finalAttrs.version}.tar.xz"; - hash = "sha256-EWQfaoTwO9BdZQgJQrxfj6b8tmtukvlW5hFo/USjNhU="; - }; - - patches = [ - # allow for plugin update check, but no calibre version check - (fetchpatch { - name = "0001-only-plugin-update.patch"; - url = "https://raw.githubusercontent.com/debian-calibre/calibre/debian/${finalAttrs.version}+ds-1/debian/patches/0001-only-plugin-update.patch"; - hash = "sha256-mHZkUoVcoVi9XBOSvM5jyvpOTCcM91g9+Pa/lY6L5p8="; - }) - (fetchpatch { - name = "0007-Hardening-Qt-code.patch"; - url = "https://raw.githubusercontent.com/debian-calibre/calibre/debian/${finalAttrs.version}+ds-1/debian/patches/hardening/0007-Hardening-Qt-code.patch"; - hash = "sha256-a6yyG0RUsQJBBNxeJsTtQSBV2lxdzz1hnTob88O+SKg="; - }) - ] - ++ lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch; - - prePatch = '' - sed -i "s@\[tool.sip.project\]@[tool.sip.project]\nsip-include-dirs = [\"${python3Packages.pyqt6}/${python3Packages.python.sitePackages}/PyQt6/bindings\"]@g" \ - setup/build.py - - # Remove unneeded files and libs - rm -rf src/odf resources/calibre-portable.* - ''; - - dontUseQmakeConfigure = true; - dontUseCmakeConfigure = true; - - nativeBuildInputs = [ - cmake - pkg-config - qmake - wrapGAppsHook3 - wrapQtAppsHook - ]; - - buildInputs = [ - fontconfig - hunspell - hyphen - icu - imagemagick - libjpeg - libmtp - libpng - libstemmer - libuchardet - libusb1 - podofo - poppler_utils - qtbase - qtwayland - sqlite - (python3Packages.python.withPackages - (ps: with ps; [ - (apsw.overrideAttrs (oldAttrs: { - setupPyBuildFlags = [ "--enable=load_extension" ]; - })) - beautifulsoup4 - css-parser - cssselect - python-dateutil - dnspython - faust-cchardet - feedparser - html2text - html5-parser - lxml - markdown - mechanize - msgpack - netifaces - pillow - pychm - pyqt-builder - pyqt6 - python - regex - sip - setuptools - zeroconf - jeepney - pycryptodome - xxhash - # the following are distributed with calibre, but we use upstream instead - odfpy - ] ++ lib.optionals (lib.lists.any (p: p == stdenv.hostPlatform.system) pyqt6-webengine.meta.platforms) [ - # much of calibre's functionality is usable without a web - # browser, so we enable building on platforms which qtwebengine - # does not support by simply omitting qtwebengine. - pyqt6-webengine - ] ++ lib.optional (unrarSupport) unrardll) - ) - xdg-utils - ] ++ lib.optional (speechSupport) speechd-minimal; - - installPhase = '' - runHook preInstall - - export HOME=$TMPDIR/fakehome - export POPPLER_INC_DIR=${poppler_utils.dev}/include/poppler - export POPPLER_LIB_DIR=${poppler_utils.out}/lib - export MAGICK_INC=${imagemagick.dev}/include/ImageMagick - export MAGICK_LIB=${imagemagick.out}/lib - export FC_INC_DIR=${fontconfig.dev}/include/fontconfig - export FC_LIB_DIR=${fontconfig.lib}/lib - export PODOFO_INC_DIR=${podofo.dev}/include/podofo - export PODOFO_LIB_DIR=${podofo.lib}/lib - export XDG_DATA_HOME=$out/share - export XDG_UTILS_INSTALL_MODE="user" - - python setup.py install --root=$out \ - --prefix=$out \ - --libdir=$out/lib \ - --staging-root=$out \ - --staging-libdir=$out/lib \ - --staging-sharedir=$out/share - - PYFILES="$out/bin/* $out/lib/calibre/calibre/web/feeds/*.py - $out/lib/calibre/calibre/ebooks/metadata/*.py - $out/lib/calibre/calibre/ebooks/rtf2xml/*.py" - - sed -i "s/env python[0-9.]*/python/" $PYFILES - sed -i "2i import sys; sys.argv[0] = 'calibre'" $out/bin/calibre - - mkdir -p $out/share - cp -a man-pages $out/share/man - - runHook postInstall - ''; - - # Wrap manually - dontWrapQtApps = true; - dontWrapGApps = true; - - preFixup = - let - popplerArgs = "--prefix PATH : ${poppler_utils.out}/bin"; - in - '' - for program in $out/bin/*; do - wrapProgram $program \ - ''${qtWrapperArgs[@]} \ - ''${gappsWrapperArgs[@]} \ - ${if popplerSupport then popplerArgs else ""} - done - ''; - - doInstallCheck = true; - installCheckInputs = with python3Packages; [ - fonttools - psutil - ]; - installCheckPhase = '' - runHook preInstallCheck - - ETN='--exclude-test-name' - EXCLUDED_FLAGS=( - $ETN 'test_7z' # we don't include 7z support - $ETN 'test_zstd' # we don't include zstd support - $ETN 'test_qt' # we don't include svg or webp support - $ETN 'test_import_of_all_python_modules' # explores actual file paths, gets confused - $ETN 'test_websocket_basic' # flakey - ${lib.optionalString (!unrarSupport) "$ETN 'test_unrar'"} - ) - - python setup.py test ''${EXCLUDED_FLAGS[@]} - - runHook postInstallCheck - ''; - - meta = { - homepage = "https://calibre-ebook.com"; - description = "Comprehensive e-book software"; - longDescription = '' - calibre is a powerful and easy to use e-book manager. Users say it’s - outstanding and a must-have. It’ll allow you to do nearly everything and - it takes things a step beyond normal e-book software. It’s also completely - free and open source and great for both casual users and computer experts. - ''; - changelog = "https://github.com/kovidgoyal/calibre/releases/tag/v${finalAttrs.version}"; - license = if unrarSupport - then lib.licenses.unfreeRedistributable - else lib.licenses.gpl3Plus; - maintainers = with lib.maintainers; [ pSub ]; - platforms = lib.platforms.unix; - broken = stdenv.isDarwin; - }; -}) |