summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2020-02-21 03:40:44 +0100
committerJakub Kądziołka <kuba@kadziolka.net>2020-02-22 15:31:01 +0100
commit582a79d3a9593d969757ec398c84ef8d63a94fb0 (patch)
treee89910a89b7468db18024e6e665fa60e7f993cda
parente36826b2baed8ec39f968a6859584206160c46b8 (diff)
gnu: Add unoconv.
* gnu/packages/libreoffice.scm (unoconv): New public variable. Signed-off-by: Jakub Kądziołka <kuba@kadziolka.net>
-rw-r--r--gnu/packages/libreoffice.scm60
1 files changed, 59 insertions, 1 deletions
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index b2f18984ad..e7878ea014 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -31,11 +31,12 @@
(define-module (gnu packages libreoffice)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses)
- #:select (gpl2+ lgpl2.1+ lgpl3+ mpl1.1 mpl2.0
+ #:select (gpl2 gpl2+ lgpl2.1+ lgpl3+ mpl1.1 mpl2.0
non-copyleft x11-style bsd-3))
#:use-module (guix packages)
#:use-module (guix utils)
@@ -141,6 +142,63 @@ Plain Text, Gnumeric XML, Generic XML. It also includes low-level parsers for
CSV, CSS and XML.")
(license mpl2.0)))
+(define-public unoconv
+ (package
+ (name "unoconv")
+ (version "0.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "unoconv" version))
+ (sha256
+ (base32 "0cb0bvyxib3xrj0jdgizhp6p057lr8kqnd3n921rin37ivcvz3ih"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'stop-hash-sniffing
+ ;; Fixes <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39647#11>.
+ ;; Submitted upsteam: <https://github.com/unoconv/unoconv/pull/531>.
+ (lambda _
+ (substitute* "unoconv"
+ (("sys.argv\\[0\\]\\.split\\('2'\\)")
+ "os.path.basename(sys.argv[0]).split('2')"))
+ #t))
+ (add-after 'unpack 'patch-find_offices
+ ;; find_offices is a convoluted cross-platform treasure hunt.
+ ;; Keep things simple and return the correct paths immediately.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((libreoffice (assoc-ref inputs "libreoffice")))
+ (substitute* "unoconv"
+ (("def find_offices\\(\\):" match)
+ (string-append
+ match "\n"
+ " return [Office("
+ "'" libreoffice "/lib/libreoffice', "
+ "'" libreoffice "/lib/libreoffice/program', "
+ "'" libreoffice "/lib/libreoffice/program', "
+ "'" libreoffice "/lib/libreoffice/program/pyuno.so', "
+ "'" libreoffice "/bin/soffice', "
+ "sys.executable, "
+ "None)]\n")))
+ #t))))))
+ (inputs
+ `(("libreoffice" ,libreoffice)))
+ (home-page "http://dag.wiee.rs/home-made/unoconv/")
+ (synopsis "Convert between any document format supported by LibreOffice")
+ (description
+ "Unoconv is a command-line utility to convert documents from any format
+that LibreOffice can import, to any format it can export. It can be used for
+batch processing and can apply custom style templates and filters.
+
+Unoconv converts between over a hundred formats, including Open Document
+Format (@file{.odt}, @file{.ods}, @file{.odp})), Portable Document Format
+(@file{.pdf}), HTML and XHTML, RTF, DocBook (@file{.xml}), @file{.doc} and
+@file{.docx}), @file{.xls} and @file{.xlsx}).
+
+All required fonts must be installed on the converting system.")
+ (license gpl2)))
+
(define-public librevenge
(package
(name "librevenge")