diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/patches/sioyek-fix-build.patch | 82 | ||||
-rw-r--r-- | gnu/packages/pdf.scm | 120 |
3 files changed, 61 insertions, 142 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 74be04adfe..74ff7cae58 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2071,7 +2071,6 @@ dist_patch_DATA = \ %D%/packages/patches/sdl-pango-header-guard.patch \ %D%/packages/patches/sdl-pango-matrix_declarations.patch \ %D%/packages/patches/sdl-pango-sans-serif.patch \ - %D%/packages/patches/sioyek-fix-build.patch \ %D%/packages/patches/smalltalk-multiplication-overflow.patch \ %D%/packages/patches/sqlite-hurd.patch \ %D%/packages/patches/strace-readlink-tests.patch \ diff --git a/gnu/packages/patches/sioyek-fix-build.patch b/gnu/packages/patches/sioyek-fix-build.patch deleted file mode 100644 index 521b361f2a..0000000000 --- a/gnu/packages/patches/sioyek-fix-build.patch +++ /dev/null @@ -1,82 +0,0 @@ -Patch fetched from https://git.alpinelinux.org/aports/tree/community/sioyek/mupdf-0.23.0.patch - -From 86e913eccf19b97a16f25d9b6cdf0f50232f1226 Mon Sep 17 00:00:00 2001 -From: ptrcnull <git@ptrcnull.me> -Date: Fri, 25 Aug 2023 22:44:26 +0200 -Subject: community/sioyek: fix build with mupdf-0.23.0 - ---- - -diff --git a/pdf_viewer/document_view.cpp b/pdf_viewer/document_view.cpp -index f48d05e..0bc3855 100644 ---- a/pdf_viewer/document_view.cpp -+++ b/pdf_viewer/document_view.cpp -@@ -1121,7 +1121,7 @@ std::vector<DocumentPos> DocumentView::find_line_definitions() { - - std::optional<PdfLink> pdf_link = current_document->get_link_in_page_rect(get_center_page_number(), line_rects[line_index]); - if (pdf_link.has_value()) { -- auto parsed_uri = parse_uri(mupdf_context, pdf_link.value().uri); -+ auto parsed_uri = parse_uri(mupdf_context, current_document->doc, pdf_link.value().uri); - result.push_back({ parsed_uri.page - 1, parsed_uri.x, parsed_uri.y }); - return result; - } -diff --git a/pdf_viewer/main_widget.cpp b/pdf_viewer/main_widget.cpp -index 19b568b..335a93f 100644 ---- a/pdf_viewer/main_widget.cpp -+++ b/pdf_viewer/main_widget.cpp -@@ -170,7 +170,7 @@ void MainWidget::set_overview_position(int page, float offset) { - - void MainWidget::set_overview_link(PdfLink link) { - -- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, link.uri); -+ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, link.uri); - if (page >= 1) { - set_overview_position(page - 1, offset_y); - } -@@ -3178,7 +3178,7 @@ void MainWidget::handle_pending_text_command(std::wstring text) { - open_web_url(utf8_decode(selected_link->uri)); - } - else{ -- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, selected_link->uri); -+ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, selected_link->uri); - long_jump_to_destination(page-1, offset_y); - } - } -@@ -3863,7 +3863,7 @@ void MainWidget::handle_link_click(const PdfLink& link) { - return; - } - -- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, link.uri); -+ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, link.uri); - - // convert one indexed page to zero indexed page - page--; -diff --git a/pdf_viewer/utils.cpp b/pdf_viewer/utils.cpp -index 22d4265..3150e66 100644 ---- a/pdf_viewer/utils.cpp -+++ b/pdf_viewer/utils.cpp -@@ -116,8 +116,9 @@ bool rects_intersect(fz_rect rect1, fz_rect rect2) { - return range_intersects(rect1.x0, rect1.x1, rect2.x0, rect2.x1) && range_intersects(rect1.y0, rect1.y1, rect2.y0, rect2.y1); - } - --ParsedUri parse_uri(fz_context* mupdf_context, std::string uri) { -- fz_link_dest dest = pdf_parse_link_uri(mupdf_context, uri.c_str()); -+ParsedUri parse_uri(fz_context* mupdf_context, fz_document* fz_doc, std::string uri) { -+ pdf_document* doc = pdf_document_from_fz_document(mupdf_context, fz_doc); -+ fz_link_dest dest = pdf_resolve_link_dest(mupdf_context, doc, uri.c_str()); - return { dest.loc.page + 1, dest.x, dest.y }; - } - -diff --git a/pdf_viewer/utils.h b/pdf_viewer/utils.h -index 2a12211..643b030 100644 ---- a/pdf_viewer/utils.h -+++ b/pdf_viewer/utils.h -@@ -55,7 +55,7 @@ void get_flat_toc(const std::vector<TocNode*>& roots, std::vector<std::wstring>& - int mod(int a, int b); - bool range_intersects(float range1_start, float range1_end, float range2_start, float range2_end); - bool rects_intersect(fz_rect rect1, fz_rect rect2); --ParsedUri parse_uri(fz_context* mupdf_context, std::string uri); -+ParsedUri parse_uri(fz_context* mupdf_context, fz_document* fz_doc, std::string uri); - char get_symbol(int key, bool is_shift_pressed, const std::vector<char>&special_symbols); - - template<typename T> diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 18c9f1bf52..fa3d40b7ae 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -1835,65 +1835,67 @@ Keywords: html2pdf, htmltopdf") (license license:bsd-3))) (define-public sioyek - (package - (name "sioyek") - (version "2.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ahrm/sioyek") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1vmmp2s032ygh1byz77pg9aljmp8hx745fr7mmz11831f96mlmhq")) - (modules '((guix build utils))) - ;; libmupdf-third.so no longer available since mupdf 1.18.0. - (snippet '(substitute* "pdf_viewer_build_config.pro" - (("-lmupdf-third") ""))) - ;; XXX: Fix build with mupdf-0.23.0+. - ;; See also: https://github.com/ahrm/sioyek/issues/804 - (patches (search-patches "sioyek-fix-build.patch")))) - (build-system qt-build-system) - (arguments - (list - #:configure-flags - #~(list (string-append "PREFIX=" #$output)) - #:test-target "check" - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'patch-paths - (lambda _ - (substitute* "pdf_viewer/main.cpp" - (("/usr/share") - (string-append #$output "/share")) - (("/etc") - (string-append #$output "/etc"))))) - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (apply invoke "qmake" configure-flags))) - (add-after 'install 'instal-man-page - (lambda _ - (install-file "resources/sioyek.1" - (string-append #$output "/share/man/man1"))))))) - (inputs - (list freetype - gumbo-parser - harfbuzz - jbig2dec - libjpeg-turbo - mujs - mupdf - openjpeg - qt3d-5 - qtbase-5 - qtwayland-5 - zlib)) - (home-page "https://sioyek.info/") - (synopsis "PDF viewer with a focus on technical books and research papers") - (description - "Sioyek is a PDF viewer with a focus on textbooks and research papers.") - (license license:gpl3+))) + (let ((commit "8d173d993738d78559da035cc051f2eb40df41e6") + (revision "1")) + (package + (name "sioyek") + (version (git-version "2.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ahrm/sioyek") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10d08ajcm5ckvrj5xkgi0dj9ibndi961v2yacw7a8mxkdqki6ck6")) + (modules '((guix build utils))) + ;; libmupdf-third.so no longer available since mupdf 1.18.0. + (snippet '(substitute* "pdf_viewer_build_config.pro" + (("-lmupdf-third") ""))))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list (string-append "PREFIX=" #$output)) + #:test-target "check" + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda _ + (substitute* "pdf_viewer/main.cpp" + (("/usr/share") + (string-append #$output "/share")) + (("/etc") + (string-append #$output "/etc"))))) + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (apply invoke "qmake" configure-flags))) + (add-after 'install 'instal-man-page + (lambda _ + (install-file "resources/sioyek.1" + (string-append #$output "/share/man/man1"))))))) + (inputs + (list freetype + gumbo-parser + harfbuzz + jbig2dec + libjpeg-turbo + mujs + mupdf + openjpeg + qtbase + qtdeclarative + qtsvg + qt3d + qtspeech + qtwayland + zlib)) + (home-page "https://sioyek.info/") + (synopsis "PDF viewer with a focus on technical books and research papers") + (description + "Sioyek is a PDF viewer with a focus on textbooks and research papers.") + (license license:gpl3+)))) (define-public pdftk (package |