unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* PATCH: LibreOffice
@ 2015-05-31  9:08 Andreas Enge
  2015-05-31 17:42 ` Mark H Weaver
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Enge @ 2015-05-31  9:08 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 112 bytes --]

Patch attached. The binary "soffice" ends up in a subdirectory of "lib", so
I added a symbolic link.

Andreas
 

[-- Attachment #2: 0001-gnu-Add-LibreOffice.patch --]
[-- Type: text/plain, Size: 10712 bytes --]

From c8d4f0269b6494e9d2e84816cb4a149641afc047 Mon Sep 17 00:00:00 2001
From: Andreas Enge <andreas@enge.fr>
Date: Fri, 29 May 2015 23:49:19 +0200
Subject: [PATCH] gnu: Add LibreOffice.

* gnu/packages/libreoffice.scm (xmlsec-src-libreoffice, libreoffice):
  New variables.

Co-authored-by: John Darrington <jmd@gnu.org>
---
 gnu/packages/libreoffice.scm | 230 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 228 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 70f0e8e..a8a745e 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -21,22 +21,50 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module ((guix licenses)
-                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0 non-copyleft))
+                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0
+                          non-copyleft x11-style))
+  #:use-module (guix build utils)
   #:use-module (guix build-system gnu)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages doxygen)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gdb)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages gstreamer)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages openldap)
   #:use-module (gnu packages openssl)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages rdf)
+  #:use-module (gnu packages scanner)
+  #:use-module (gnu packages version-control)
+  #:use-module ((gnu packages which)
+                #:renamer (symbol-prefix-proc 'gnu:))
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip))
 
 (define-public ixion
   (package
@@ -632,3 +660,201 @@ data file and an index file with binary search to look up words and phrases
 and to return information on pronunciations, meaningss and synonyms.")
     (license (non-copyleft "file://COPYING"
                            "See COPYING in the distribution."))))
+
+;; LibreOffice requires an xmlsec source tarball; it does not even check
+;; for the presence of an externally compiled library.
+(define xmlsec-src-libreoffice
+  (package (inherit xmlsec)
+    (name "xmlsec-src-libreoffice")
+    (version "1.2.14")
+    (source
+     (origin
+      (method url-fetch)
+      (uri
+        (string-append
+          "http://dev-www.libreoffice.org/src/"
+          "1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz"))
+      (sha256 (base32
+               "0jnxxygg6z5zi6za94dvxmg1bfar1wh8p5xa2bzbha0qcn2m02ir"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("perl" ,perl)))
+    (arguments
+     `(#:phases
+        ;; Patch shebangs, tar again and copy to store.
+        (modify-phases %standard-phases
+          (replace 'configure
+            (lambda _
+              (substitute* "config.guess"
+                ((" /bin/sh") (string-append " " (which "sh"))))
+              #t))
+          (replace 'build
+            (lambda _
+              (chdir "..")
+              #t))
+          (delete 'check)
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (mkdir out)
+                (zero?
+                  (system* "tar" "czvf"
+                           (string-append out "/xmlsec1-1.2.14.tar.gz")
+                           "xmlsec1-1.2.14"))))))))))
+
+(define-public libreoffice
+  (package
+    (name "libreoffice")
+    (version "4.4.3.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri
+        (string-append
+          "http://download.documentfoundation.org/libreoffice/src/"
+          (string-take version 5) "/libreoffice-" version ".tar.xz"))
+      (sha256 (base32
+               "0rl9x01ngxwnqwzxkrqy4vks4rb024m75z0w4zidwyp0az0m8qdd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf) ; for the patched xmlsec tarball
+       ("automake" ,automake) ; ditto
+       ("bison" ,bison)
+       ("cppunit" ,cppunit)
+       ("flex" ,flex)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python)
+       ("which" ,gnu:which)))
+    (inputs
+     `(("bluez" ,bluez)
+       ("boost" ,boost)
+       ("clucene" ,clucene)
+       ("cups" ,cups)
+       ("dbus-glib" ,dbus-glib)
+       ("fontconfig" ,fontconfig)
+       ("gconf" ,gconf)
+       ("glew" ,glew)
+       ("glm" ,glm)
+       ("gperf" ,gperf)
+       ("graphite2" ,graphite2)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gtk+" ,gtk+-2)
+       ("harfbuzz" ,harfbuzz)
+       ("hunspell" ,hunspell)
+       ("hyphen" ,hyphen)
+       ("libabw" ,libabw)
+       ("libcdr" ,libcdr)
+       ("libcmis" ,libcmis)
+       ("libjpeg" ,libjpeg)
+       ("libe-book" ,libe-book)
+       ("libetonyek" ,libetonyek)
+       ("libexttextcat" ,libexttextcat)
+       ("libfreehand" ,libfreehand)
+       ("libmspub" ,libmspub)
+       ("libmwaw" ,libmwaw)
+       ("libodfgen" ,libodfgen)
+       ("libpagemaker" ,libpagemaker)
+       ("libvisio" ,libvisio)
+       ("libwpg" ,libwpg)
+       ("libwps" ,libwps)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxslt" ,libxslt)
+       ("libxt" ,libxt)
+       ("lpsolve" ,lpsolve)
+       ("mdds" ,mdds)
+       ("mythes" ,mythes)
+       ("neon" ,neon)
+       ("nspr" ,nspr)
+       ("nss" ,nss)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("orcus" ,orcus)
+       ("perl" ,perl)
+       ("perl-zip" ,perl-zip)
+       ("poppler" ,poppler)
+       ("postgresql" ,postgresql)
+       ("python" ,python)
+       ("redland" ,redland)
+       ("sane-backends" ,sane-backends)
+       ("unixodbc" ,unixodbc)
+       ("unzip" ,unzip)
+       ("vigra" ,vigra)
+       ("xmlsec-src" ,xmlsec-src-libreoffice)
+       ("zip" ,zip)))
+    (arguments
+     `(#:parallel-build? #f ; Otherwise the build fails.
+       #:tests? #f ; Building the tests already fails.
+       #:make-flags '("build-nocheck") ; Do not build unit tests, which fails.
+       #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'prepare-src
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((xmlsec (assoc-ref inputs "xmlsec-src")))
+                 (substitute*
+                   (list "sysui/CustomTarget_share.mk"
+                         "solenv/gbuild/gbuild.mk"
+                         "solenv/gbuild/platform/unxgcc.mk"
+                         "external/libxmlsec/xmlsec1-oldlibtool.patch")
+                   (("/bin/sh") (which "bash")))
+                 ;; Adapt patch to patch-shebanged originals.
+                 (substitute*
+                   "external/libxmlsec/xmlsec1-update-config.guess.patch.1"
+                   (("#! /bin/sh") (string-append "#!" (which "sh")))
+                   (("s /bin/sh") (string-append "s " (which "sh"))))
+                 (mkdir "external/tarballs")
+                 (symlink
+                   (string-append xmlsec "/xmlsec1-1.2.14.tar.gz")
+                   (string-append "external/tarballs/"
+                     "1f24ab1d39f4a51faf22244c94a6203f-"
+                     "xmlsec1-1.2.14.tar.gz"))
+                 ;; The following is required for building xmlsec from the
+                 ;; external tarball. Since "autoreconf" is called after
+                 ;; applying the patches shipped with libreoffice, "configure"
+                 ;; again starts with "/bin/sh" and needs to be executed with
+                 ;; a command invoking the shell.
+                 (setenv "SHELL" (which "bash"))
+                 (setenv "CONFIG_SHELL" (which "bash"))
+                 (substitute* "external/libxmlsec/ExternalProject_xmlsec.mk"
+                   (("./configure") "$(CONFIG_SHELL) ./configure" ))
+                 #t)))
+           (add-after 'install 'bin-install
+             ;; Create a symlink bin/libreoffice to the executable script.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (mkdir bin)
+                 (symlink
+                   (string-append out "/lib/libreoffice/program/soffice")
+                   (string-append bin "/libreoffice")))
+               #t)))
+       #:configure-flags
+        (list
+          "--enable-release-build"
+          "--enable-verbose"
+          "--without-parallelism" ; otherwise the build fails
+          "--disable-fetch-external" ; disable downloads
+          "--with-system-libs" ; enable all --with-system-* flags
+          (string-append "--with-boost-libdir="
+                         (assoc-ref %build-inputs "boost") "/lib")
+          ;; Avoid a dependency on ucpp.
+          "--with-idlc-cpp=cpp"
+          ;; The fonts require an external tarball (crosextrafonts).
+          ;; They should not be needed when system fonts are available.
+          "--without-fonts"
+          ;; FIXME: Enable once the corresponding inputs are packaged.
+          "--without-system-npapi-headers"
+          ;; With java, the build fails since sac.jar is missing.
+          "--without-java"
+          "--disable-coinmp"
+          "--disable-firebird-sdbc" ; embedded firebird
+          "--disable-gltf"
+          "--disable-liblangtag")))
+    (home-page "https://www.libreoffice.org/")
+    (synopsis "Office suite")
+    (description "LibreOffice is a comprehensive office suite.  It contains
+a number of components: Writer, a word processor; Calc, a spreadsheet
+application; Impress, a presentation engine; Draw, a drawing and
+flowcharting application; Base, a database and database frontend;
+Math for editing mathematics.")
+    (license mpl2.0)))
-- 
2.2.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-05-31  9:08 PATCH: LibreOffice Andreas Enge
@ 2015-05-31 17:42 ` Mark H Weaver
  2015-05-31 18:19   ` Andreas Enge
  2015-06-01 19:50   ` Andreas Enge
  0 siblings, 2 replies; 11+ messages in thread
From: Mark H Weaver @ 2015-05-31 17:42 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Hi Andreas,

This is not a complete review, just a few problems I've noticed so far:

> From c8d4f0269b6494e9d2e84816cb4a149641afc047 Mon Sep 17 00:00:00 2001
> From: Andreas Enge <andreas@enge.fr>
> Date: Fri, 29 May 2015 23:49:19 +0200
> Subject: [PATCH] gnu: Add LibreOffice.
>
> * gnu/packages/libreoffice.scm (xmlsec-src-libreoffice, libreoffice):
>   New variables.
>
> Co-authored-by: John Darrington <jmd@gnu.org>
> ---
>  gnu/packages/libreoffice.scm | 230 ++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 228 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
> index 70f0e8e..a8a745e 100644
> --- a/gnu/packages/libreoffice.scm
> +++ b/gnu/packages/libreoffice.scm
> @@ -21,22 +21,50 @@
>    #:use-module (guix packages)
>    #:use-module (guix download)
>    #:use-module ((guix licenses)
> -                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0 non-copyleft))
> +                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0
> +                          non-copyleft x11-style))
> +  #:use-module (guix build utils)
>    #:use-module (guix build-system gnu)
> +  #:use-module (gnu packages autotools)
> +  #:use-module (gnu packages bison)
>    #:use-module (gnu packages boost)
>    #:use-module (gnu packages check)
>    #:use-module (gnu packages compression)
> +  #:use-module (gnu packages cups)
>    #:use-module (gnu packages curl)
>    #:use-module (gnu packages cyrus-sasl)
> +  #:use-module (gnu packages databases)
>    #:use-module (gnu packages doxygen)
> +  #:use-module (gnu packages flex)
> +  #:use-module (gnu packages fontutils)
> +  #:use-module (gnu packages gdb)
>    #:use-module (gnu packages ghostscript)
> +  #:use-module (gnu packages gl)
> +  #:use-module (gnu packages glib)
> +  #:use-module (gnu packages gnome)
>    #:use-module (gnu packages gperf)
> +  #:use-module (gnu packages gnuzilla)
> +  #:use-module (gnu packages gstreamer)
> +  #:use-module (gnu packages gtk)
>    #:use-module (gnu packages icu4c)
> +  #:use-module (gnu packages image)
> +  #:use-module (gnu packages java)
> +  #:use-module (gnu packages linux)
> +  #:use-module (gnu packages maths)
> +  #:use-module (gnu packages openldap)
>    #:use-module (gnu packages openssl)
> +  #:use-module (gnu packages pdf)
>    #:use-module (gnu packages perl)
>    #:use-module (gnu packages pkg-config)
>    #:use-module (gnu packages python)
> -  #:use-module (gnu packages xml))
> +  #:use-module (gnu packages rdf)
> +  #:use-module (gnu packages scanner)
> +  #:use-module (gnu packages version-control)
> +  #:use-module ((gnu packages which)
> +                #:renamer (symbol-prefix-proc 'gnu:))

(gnu packages which) has not existed since early March.  'which' was
moved to (gnu packages base) in ce0614ddb0.

I suggest:

Add (gnu packages base) without a renamer, and remove (guix build utils)
from the module imports.  Change 'gnu:which' to 'which' in the code.

> +  #:use-module (gnu packages xml)
> +  #:use-module (gnu packages xorg)
> +  #:use-module (gnu packages zip))
>  
>  (define-public ixion
>    (package
> @@ -632,3 +660,201 @@ data file and an index file with binary search to look up words and phrases
>  and to return information on pronunciations, meaningss and synonyms.")
>      (license (non-copyleft "file://COPYING"
>                             "See COPYING in the distribution."))))
> +
> +;; LibreOffice requires an xmlsec source tarball; it does not even check
> +;; for the presence of an externally compiled library.
> +(define xmlsec-src-libreoffice
> +  (package (inherit xmlsec)
> +    (name "xmlsec-src-libreoffice")
> +    (version "1.2.14")
> +    (source
> +     (origin
> +      (method url-fetch)
> +      (uri
> +        (string-append
> +          "http://dev-www.libreoffice.org/src/"
> +          "1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz"))
> +      (sha256 (base32
> +               "0jnxxygg6z5zi6za94dvxmg1bfar1wh8p5xa2bzbha0qcn2m02ir"))))
> +    (build-system gnu-build-system)
> +    (inputs
> +     `(("perl" ,perl)))
> +    (arguments
> +     `(#:phases
> +        ;; Patch shebangs, tar again and copy to store.
> +        (modify-phases %standard-phases
> +          (replace 'configure
> +            (lambda _
> +              (substitute* "config.guess"
> +                ((" /bin/sh") (string-append " " (which "sh"))))
> +              #t))
> +          (replace 'build
> +            (lambda _
> +              (chdir "..")
> +              #t))
> +          (delete 'check)
> +          (replace 'install
> +            (lambda* (#:key outputs #:allow-other-keys)
> +              (let ((out (assoc-ref outputs "out")))
> +                (mkdir out)
> +                (zero?
> +                  (system* "tar" "czvf"
> +                           (string-append out "/xmlsec1-1.2.14.tar.gz")
> +                           "xmlsec1-1.2.14"))))))))))

The 'configure' and 'build' phases are misleadingly named, given what
they actually do.  However, I wonder whether this package is needed at
all.  How about just including the 'origin' as an input to
'libreoffice', unpack it after the 'unpack' phase, and then let the
standard phases in libreoffice take care of the usual patching jobs.
Would that work?

> +
> +(define-public libreoffice
> +  (package
> +    (name "libreoffice")
> +    (version "4.4.3.2")
> +    (source
> +     (origin
> +      (method url-fetch)
> +      (uri
> +        (string-append
> +          "http://download.documentfoundation.org/libreoffice/src/"
> +          (string-take version 5) "/libreoffice-" version ".tar.xz"))

Please do (version-prefix version 3) instead.  You'll need to import
(guix utils) for it.

> +      (sha256 (base32
> +               "0rl9x01ngxwnqwzxkrqy4vks4rb024m75z0w4zidwyp0az0m8qdd"))))
> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("autoconf" ,autoconf) ; for the patched xmlsec tarball
> +       ("automake" ,automake) ; ditto
> +       ("bison" ,bison)
> +       ("cppunit" ,cppunit)
> +       ("flex" ,flex)
> +       ("pkg-config" ,pkg-config)
> +       ("python" ,python)
> +       ("which" ,gnu:which)))
> +    (inputs
> +     `(("bluez" ,bluez)
> +       ("boost" ,boost)
> +       ("clucene" ,clucene)
> +       ("cups" ,cups)
> +       ("dbus-glib" ,dbus-glib)
> +       ("fontconfig" ,fontconfig)
> +       ("gconf" ,gconf)
> +       ("glew" ,glew)
> +       ("glm" ,glm)
> +       ("gperf" ,gperf)
> +       ("graphite2" ,graphite2)
> +       ("gst-plugins-base" ,gst-plugins-base)
> +       ("gtk+" ,gtk+-2)
> +       ("harfbuzz" ,harfbuzz)
> +       ("hunspell" ,hunspell)
> +       ("hyphen" ,hyphen)
> +       ("libabw" ,libabw)
> +       ("libcdr" ,libcdr)
> +       ("libcmis" ,libcmis)
> +       ("libjpeg" ,libjpeg)
> +       ("libe-book" ,libe-book)
> +       ("libetonyek" ,libetonyek)
> +       ("libexttextcat" ,libexttextcat)
> +       ("libfreehand" ,libfreehand)
> +       ("libmspub" ,libmspub)
> +       ("libmwaw" ,libmwaw)
> +       ("libodfgen" ,libodfgen)
> +       ("libpagemaker" ,libpagemaker)
> +       ("libvisio" ,libvisio)
> +       ("libwpg" ,libwpg)
> +       ("libwps" ,libwps)
> +       ("libxrandr" ,libxrandr)
> +       ("libxrender" ,libxrender)
> +       ("libxslt" ,libxslt)
> +       ("libxt" ,libxt)
> +       ("lpsolve" ,lpsolve)
> +       ("mdds" ,mdds)
> +       ("mythes" ,mythes)
> +       ("neon" ,neon)
> +       ("nspr" ,nspr)
> +       ("nss" ,nss)
> +       ("openldap" ,openldap)
> +       ("openssl" ,openssl)
> +       ("orcus" ,orcus)
> +       ("perl" ,perl)
> +       ("perl-zip" ,perl-zip)
> +       ("poppler" ,poppler)
> +       ("postgresql" ,postgresql)
> +       ("python" ,python)
> +       ("redland" ,redland)
> +       ("sane-backends" ,sane-backends)
> +       ("unixodbc" ,unixodbc)
> +       ("unzip" ,unzip)
> +       ("vigra" ,vigra)
> +       ("xmlsec-src" ,xmlsec-src-libreoffice)
> +       ("zip" ,zip)))
> +    (arguments
> +     `(#:parallel-build? #f ; Otherwise the build fails.
> +       #:tests? #f ; Building the tests already fails.
> +       #:make-flags '("build-nocheck") ; Do not build unit tests, which fails.
> +       #:phases
> +         (modify-phases %standard-phases
> +           (add-before 'configure 'prepare-src
> +             (lambda* (#:key inputs #:allow-other-keys)
> +               (let ((xmlsec (assoc-ref inputs "xmlsec-src")))
> +                 (substitute*
> +                   (list "sysui/CustomTarget_share.mk"
> +                         "solenv/gbuild/gbuild.mk"
> +                         "solenv/gbuild/platform/unxgcc.mk"
> +                         "external/libxmlsec/xmlsec1-oldlibtool.patch")
> +                   (("/bin/sh") (which "bash")))
> +                 ;; Adapt patch to patch-shebanged originals.
> +                 (substitute*
> +                   "external/libxmlsec/xmlsec1-update-config.guess.patch.1"
> +                   (("#! /bin/sh") (string-append "#!" (which "sh")))
> +                   (("s /bin/sh") (string-append "s " (which "sh"))))
> +                 (mkdir "external/tarballs")
> +                 (symlink
> +                   (string-append xmlsec "/xmlsec1-1.2.14.tar.gz")
> +                   (string-append "external/tarballs/"
> +                     "1f24ab1d39f4a51faf22244c94a6203f-"
> +                     "xmlsec1-1.2.14.tar.gz"))
> +                 ;; The following is required for building xmlsec from the
> +                 ;; external tarball. Since "autoreconf" is called after
> +                 ;; applying the patches shipped with libreoffice, "configure"
> +                 ;; again starts with "/bin/sh" and needs to be executed with
> +                 ;; a command invoking the shell.
> +                 (setenv "SHELL" (which "bash"))
> +                 (setenv "CONFIG_SHELL" (which "bash"))
> +                 (substitute* "external/libxmlsec/ExternalProject_xmlsec.mk"
> +                   (("./configure") "$(CONFIG_SHELL) ./configure" ))
> +                 #t)))
> +           (add-after 'install 'bin-install
> +             ;; Create a symlink bin/libreoffice to the executable script.
> +             (lambda* (#:key outputs #:allow-other-keys)
> +               (let* ((out (assoc-ref outputs "out"))
> +                      (bin (string-append out "/bin")))
> +                 (mkdir bin)
> +                 (symlink
> +                   (string-append out "/lib/libreoffice/program/soffice")
> +                   (string-append bin "/libreoffice")))
> +               #t)))
> +       #:configure-flags
> +        (list
> +          "--enable-release-build"
> +          "--enable-verbose"
> +          "--without-parallelism" ; otherwise the build fails
> +          "--disable-fetch-external" ; disable downloads
> +          "--with-system-libs" ; enable all --with-system-* flags
> +          (string-append "--with-boost-libdir="
> +                         (assoc-ref %build-inputs "boost") "/lib")
> +          ;; Avoid a dependency on ucpp.
> +          "--with-idlc-cpp=cpp"
> +          ;; The fonts require an external tarball (crosextrafonts).
> +          ;; They should not be needed when system fonts are available.
> +          "--without-fonts"
> +          ;; FIXME: Enable once the corresponding inputs are packaged.
> +          "--without-system-npapi-headers"
> +          ;; With java, the build fails since sac.jar is missing.
> +          "--without-java"
> +          "--disable-coinmp"
> +          "--disable-firebird-sdbc" ; embedded firebird
> +          "--disable-gltf"
> +          "--disable-liblangtag")))
> +    (home-page "https://www.libreoffice.org/")
> +    (synopsis "Office suite")
> +    (description "LibreOffice is a comprehensive office suite.  It contains
> +a number of components: Writer, a word processor; Calc, a spreadsheet
> +application; Impress, a presentation engine; Draw, a drawing and
> +flowcharting application; Base, a database and database frontend;
> +Math for editing mathematics.")
> +    (license mpl2.0)))

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-05-31 17:42 ` Mark H Weaver
@ 2015-05-31 18:19   ` Andreas Enge
  2015-05-31 20:32     ` Ludovic Courtès
  2015-06-01 19:50   ` Andreas Enge
  1 sibling, 1 reply; 11+ messages in thread
From: Andreas Enge @ 2015-05-31 18:19 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

Hi Marc,

thanks for your comments!

On Sun, May 31, 2015 at 01:42:30PM -0400, Mark H Weaver wrote:
> (gnu packages which) has not existed since early March.  'which' was
> moved to (gnu packages base) in ce0614ddb0.

That is interesting. I think it worked for me since I still had which.go
in my tree.

> The 'configure' and 'build' phases are misleadingly named, given what
> they actually do.  However, I wonder whether this package is needed at
> all.  How about just including the 'origin' as an input to
> 'libreoffice', unpack it after the 'unpack' phase, and then let the
> standard phases in libreoffice take care of the usual patching jobs.
> Would that work?

From what I understood, no. Libreoffice seems to expect the tarball in a
special location, and the libreoffice build system takes care of unpacking it.
But I am not a 100% sure whether the patching we do is needed or not;
maybe everything would compile with the unchanged tarball. One of the problems
is that the patching changes dates and causes an "autoreconf" (or similar)
after unpacking anyway, so part of the /bin/sh-patching is reverted.

Andreas

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-05-31 18:19   ` Andreas Enge
@ 2015-05-31 20:32     ` Ludovic Courtès
  2015-06-01 12:52       ` John Darrington
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2015-05-31 20:32 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> From what I understood, no. Libreoffice seems to expect the tarball in a
> special location, and the libreoffice build system takes care of unpacking it.
> But I am not a 100% sure whether the patching we do is needed or not;
> maybe everything would compile with the unchanged tarball. One of the problems
> is that the patching changes dates and causes an "autoreconf" (or similar)
> after unpacking anyway, so part of the /bin/sh-patching is reverted.

I think we should try hard to not make Libreoffice depend on
Autoconf/Automake; it’s always a good idea to avoid it, but even more so
here given the build time and size of the thing.  :-)

Does that seem doable?

Thanks for the great progress on this!

Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-05-31 20:32     ` Ludovic Courtès
@ 2015-06-01 12:52       ` John Darrington
  2015-06-01 19:40         ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: John Darrington @ 2015-06-01 12:52 UTC (permalink / raw)
  To: Ludovic Court??s; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1509 bytes --]

On Sun, May 31, 2015 at 10:32:39PM +0200, Ludovic Court??s wrote:
     Andreas Enge <andreas@enge.fr> skribis:
     
     > From what I understood, no. Libreoffice seems to expect the tarball in a
     > special location, and the libreoffice build system takes care of unpacking it.
     > But I am not a 100% sure whether the patching we do is needed or not;
     > maybe everything would compile with the unchanged tarball. One of the problems
     > is that the patching changes dates and causes an "autoreconf" (or similar)
     > after unpacking anyway, so part of the /bin/sh-patching is reverted.
     
     I think we should try hard to not make Libreoffice depend on
     Autoconf/Automake; it???s always a good idea to avoid it, but even more so
     here given the build time and size of the thing.  :-)
     
     Does that seem doable?
     
     Thanks for the great progress on this!
     
Libreoffice is big and messy.  But it works (sort of) and a lot of people like it.

Obviously any exercise in Free Software is "doable" (we have the source code!) 
but, my experience in packaging for Guix tells me that it can be very easy to
fall into the trap of making changes to the upstream packages which effectively
forks them.  Then we become the maintainer of a forked package.

J'

     

-- 
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-06-01 12:52       ` John Darrington
@ 2015-06-01 19:40         ` Ludovic Courtès
  0 siblings, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2015-06-01 19:40 UTC (permalink / raw)
  To: John Darrington; +Cc: guix-devel

John Darrington <john@darrington.wattle.id.au> skribis:

> Obviously any exercise in Free Software is "doable" (we have the source code!) 
> but, my experience in packaging for Guix tells me that it can be very easy to
> fall into the trap of making changes to the upstream packages which effectively
> forks them.  Then we become the maintainer of a forked package.

Apart from elogind, I can’t think of any package that Guix provides that
would qualify as “forked.”

Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-05-31 17:42 ` Mark H Weaver
  2015-05-31 18:19   ` Andreas Enge
@ 2015-06-01 19:50   ` Andreas Enge
  2015-06-01 19:56     ` Andreas Enge
  1 sibling, 1 reply; 11+ messages in thread
From: Andreas Enge @ 2015-06-01 19:50 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

On Sun, May 31, 2015 at 01:42:30PM -0400, Mark H Weaver wrote:
> Please do (version-prefix version 3) instead.  You'll need to import
> (guix utils) for it.

Very neat! I knew about version-major+minor, but not this one.

On Sun, May 31, 2015 at 10:32:39PM +0200, Ludovic Courtès wrote:
> I think we should try hard to not make Libreoffice depend on
> Autoconf/Automake; it’s always a good idea to avoid it, but even more so
> here given the build time and size of the thing.  :-)
> Does that seem doable?

I will try it out. Given the build time and the fact that parallel builds
do not work (but they seemed to have worked for John last year, I have no
idea why there is a problem now), things advance at a very leisurely pace.
Now that I deleted my which.go, I need to recompile with the which from base.
So this will be the build process for tonight, tomorrow, I can try out
something else :-)

On Mon, Jun 01, 2015 at 02:52:05PM +0200, John Darrington wrote:
> Obviously any exercise in Free Software is "doable" (we have the source code!)
> but, my experience in packaging for Guix tells me that it can be very easy to
> fall into the trap of making changes to the upstream packages which effectively
> forks them.  Then we become the maintainer of a forked package.

Of course that is something we should avoid. With a bit of luck here, though,
libreoffice will compile with a non-patched xmlsec tarball. After all, we will
not install binaries or scripts from xmlsec (at least I hope so), so maybe
the patch-shebang phase is not really required. We will see.

Andreas

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-06-01 19:50   ` Andreas Enge
@ 2015-06-01 19:56     ` Andreas Enge
  2015-06-03 12:39       ` Andreas Enge
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Enge @ 2015-06-01 19:56 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

On Mon, Jun 01, 2015 at 09:50:15PM +0200, Andreas Enge wrote:
> Now that I deleted my which.go, I need to recompile with the which from base.
> So this will be the build process for tonight

Actually, I was wrong - "which" moved to a new place, but stayed the same,
so there is no recompilation of things that depend on it!

Andreas

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-06-01 19:56     ` Andreas Enge
@ 2015-06-03 12:39       ` Andreas Enge
  2015-06-04 20:37         ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Enge @ 2015-06-03 12:39 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 615 bytes --]

Hello all,

attached is a new patch.

The good news: Patch-shebanging the external xmlsec tarball does indeed not
seem to be necessary, so I replaced the package recipe by a simple origin
declaration. Does this internal variable need to be mentioned in the commit
message?

The bad news: autoreconf is still needed for the xmlsec tarball.

After discussion with Ludovic, I used "bin/soffice" instead of
"bin/libreoffice" as a symbolic link to the binary, which is called "soffice".
This is more consistent with our policy of keeping as close to upstream as
possible.

More comments are of course welcome.

Andreas


[-- Attachment #2: 0001-gnu-Add-LibreOffice.patch --]
[-- Type: text/plain, Size: 9371 bytes --]

From 80325ab4f875ee771fa5b80d6724f2a3f3f4c80c Mon Sep 17 00:00:00 2001
From: Andreas Enge <andreas@enge.fr>
Date: Fri, 29 May 2015 23:49:19 +0200
Subject: [PATCH] gnu: Add LibreOffice.

* gnu/packages/libreoffice.scm (xmlsec-src-libreoffice, libreoffice):
  New variables.

Co-authored-by: John Darrington <jmd@gnu.org>
---
 gnu/packages/libreoffice.scm | 198 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 194 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 70f0e8e..03f45da 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -18,25 +18,52 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages libreoffice)
-  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module ((guix licenses)
-                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0 non-copyleft))
-  #:use-module (guix build-system gnu)
+                #:select (gpl2+ lgpl2.1+ mpl1.1 mpl2.0
+                          non-copyleft x11-style))
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages doxygen)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gdb)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages gstreamer)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages openldap)
   #:use-module (gnu packages openssl)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages rdf)
+  #:use-module (gnu packages scanner)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages zip))
 
 (define-public ixion
   (package
@@ -632,3 +659,166 @@ data file and an index file with binary search to look up words and phrases
 and to return information on pronunciations, meaningss and synonyms.")
     (license (non-copyleft "file://COPYING"
                            "See COPYING in the distribution."))))
+
+;; LibreOffice requires an xmlsec source tarball; it does not even check
+;; for the presence of an externally compiled library.
+(define xmlsec-src-libreoffice
+  (origin
+  (method url-fetch)
+  (uri
+    (string-append
+      "http://dev-www.libreoffice.org/src/"
+      "1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz"))
+  (sha256 (base32
+            "0jnxxygg6z5zi6za94dvxmg1bfar1wh8p5xa2bzbha0qcn2m02ir"))))
+
+(define-public libreoffice
+  (package
+    (name "libreoffice")
+    (version "4.4.3.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri
+        (string-append
+          "http://download.documentfoundation.org/libreoffice/src/"
+          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
+      (sha256 (base32
+               "0rl9x01ngxwnqwzxkrqy4vks4rb024m75z0w4zidwyp0az0m8qdd"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf) ; required for the xmlsec tarball
+       ("automake" ,automake) ; ditto
+       ("bison" ,bison)
+       ("cppunit" ,cppunit)
+       ("flex" ,flex)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python)
+       ("which" ,which)))
+    (inputs
+     `(("bluez" ,bluez)
+       ("boost" ,boost)
+       ("clucene" ,clucene)
+       ("cups" ,cups)
+       ("dbus-glib" ,dbus-glib)
+       ("fontconfig" ,fontconfig)
+       ("gconf" ,gconf)
+       ("glew" ,glew)
+       ("glm" ,glm)
+       ("gperf" ,gperf)
+       ("graphite2" ,graphite2)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gtk+" ,gtk+-2)
+       ("harfbuzz" ,harfbuzz)
+       ("hunspell" ,hunspell)
+       ("hyphen" ,hyphen)
+       ("libabw" ,libabw)
+       ("libcdr" ,libcdr)
+       ("libcmis" ,libcmis)
+       ("libjpeg" ,libjpeg)
+       ("libe-book" ,libe-book)
+       ("libetonyek" ,libetonyek)
+       ("libexttextcat" ,libexttextcat)
+       ("libfreehand" ,libfreehand)
+       ("libmspub" ,libmspub)
+       ("libmwaw" ,libmwaw)
+       ("libodfgen" ,libodfgen)
+       ("libpagemaker" ,libpagemaker)
+       ("libvisio" ,libvisio)
+       ("libwpg" ,libwpg)
+       ("libwps" ,libwps)
+       ("libxrandr" ,libxrandr)
+       ("libxrender" ,libxrender)
+       ("libxslt" ,libxslt)
+       ("libxt" ,libxt)
+       ("lpsolve" ,lpsolve)
+       ("mdds" ,mdds)
+       ("mythes" ,mythes)
+       ("neon" ,neon)
+       ("nspr" ,nspr)
+       ("nss" ,nss)
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)
+       ("orcus" ,orcus)
+       ("perl" ,perl)
+       ("perl-zip" ,perl-zip)
+       ("poppler" ,poppler)
+       ("postgresql" ,postgresql)
+       ("python" ,python)
+       ("redland" ,redland)
+       ("sane-backends" ,sane-backends)
+       ("unixodbc" ,unixodbc)
+       ("unzip" ,unzip)
+       ("vigra" ,vigra)
+       ("xmlsec-src" ,xmlsec-src-libreoffice)
+       ("zip" ,zip)))
+    (arguments
+     `(#:parallel-build? #f ; Otherwise the build fails.
+       #:tests? #f ; Building the tests already fails.
+       #:make-flags '("build-nocheck") ; Do not build unit tests, which fails.
+       #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'prepare-src
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((xmlsec (assoc-ref inputs "xmlsec-src")))
+                 (substitute*
+                   (list "sysui/CustomTarget_share.mk"
+                         "solenv/gbuild/gbuild.mk"
+                         "solenv/gbuild/platform/unxgcc.mk"
+                         "external/libxmlsec/xmlsec1-oldlibtool.patch")
+                   (("/bin/sh") (which "bash")))
+                 (mkdir "external/tarballs")
+                 (symlink
+                   xmlsec
+                   (string-append "external/tarballs/"
+                     "1f24ab1d39f4a51faf22244c94a6203f-"
+                     "xmlsec1-1.2.14.tar.gz"))
+                 ;; The following is required for building xmlsec from the
+                 ;; unpatched external tarball; since "configure" starts with
+                 ;; "/bin/sh", it needs to be executed by a command invoking
+                 ;; the shell.
+                 (setenv "SHELL" (which "bash"))
+                 (setenv "CONFIG_SHELL" (which "bash"))
+                 (substitute* "external/libxmlsec/ExternalProject_xmlsec.mk"
+                   (("./configure") "$(CONFIG_SHELL) ./configure" ))
+                 #t)))
+           (add-after 'install 'bin-install
+             ;; Create a symlink bin/soffice to the executable script.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (mkdir bin)
+                 (symlink
+                   (string-append out "/lib/libreoffice/program/soffice")
+                   (string-append bin "/soffice")))
+               #t)))
+       #:configure-flags
+        (list
+          "--enable-release-build"
+          "--enable-verbose"
+          "--without-parallelism" ; otherwise the build fails
+          "--disable-fetch-external" ; disable downloads
+          "--with-system-libs" ; enable all --with-system-* flags
+          (string-append "--with-boost-libdir="
+                         (assoc-ref %build-inputs "boost") "/lib")
+          ;; Avoid a dependency on ucpp.
+          "--with-idlc-cpp=cpp"
+          ;; The fonts require an external tarball (crosextrafonts).
+          ;; They should not be needed when system fonts are available.
+          "--without-fonts"
+          ;; With java, the build fails since sac.jar is missing.
+          "--without-java"
+          ;; FIXME: Enable once the corresponding inputs are packaged.
+          "--without-system-npapi-headers"
+          "--disable-coinmp"
+          "--disable-firebird-sdbc" ; embedded firebird
+          "--disable-gltf"
+          "--disable-liblangtag")))
+    (home-page "https://www.libreoffice.org/")
+    (synopsis "Office suite")
+    (description "LibreOffice is a comprehensive office suite.  It contains
+a number of components: Writer, a word processor; Calc, a spreadsheet
+application; Impress, a presentation engine; Draw, a drawing and
+flowcharting application; Base, a database and database frontend;
+Math for editing mathematics.")
+    (license mpl2.0)))
-- 
2.2.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-06-03 12:39       ` Andreas Enge
@ 2015-06-04 20:37         ` Ludovic Courtès
  2015-06-04 20:56           ` Andreas Enge
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2015-06-04 20:37 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> The good news: Patch-shebanging the external xmlsec tarball does indeed not
> seem to be necessary, so I replaced the package recipe by a simple origin
> declaration. Does this internal variable need to be mentioned in the commit
> message?

Yes.

> The bad news: autoreconf is still needed for the xmlsec tarball.

Why is that?  Is it because LO’s own build system explicitly runs it, or
because some .am or .ac file is modified?  Would be nice to mention it
in a comment.

> From 80325ab4f875ee771fa5b80d6724f2a3f3f4c80c Mon Sep 17 00:00:00 2001
> From: Andreas Enge <andreas@enge.fr>
> Date: Fri, 29 May 2015 23:49:19 +0200
> Subject: [PATCH] gnu: Add LibreOffice.
>
> * gnu/packages/libreoffice.scm (xmlsec-src-libreoffice, libreoffice):
>   New variables.
>
> Co-authored-by: John Darrington <jmd@gnu.org>

[...]

> +  (origin
> +  (method url-fetch)

Please indent fields.

> +                   (string-append "external/tarballs/"
> +                     "1f24ab1d39f4a51faf22244c94a6203f-"
> +                     "xmlsec1-1.2.14.tar.gz"))

Funny.  :-)  That name is imposed by LO’s build system, right?

The rest looks good to me.  OK to push with these changes.

Thanks for the hard work!

Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: PATCH: LibreOffice
  2015-06-04 20:37         ` Ludovic Courtès
@ 2015-06-04 20:56           ` Andreas Enge
  0 siblings, 0 replies; 11+ messages in thread
From: Andreas Enge @ 2015-06-04 20:56 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Thu, Jun 04, 2015 at 10:37:47PM +0200, Ludovic Courtès wrote:
> > The bad news: autoreconf is still needed for the xmlsec tarball.
> Why is that?  Is it because LO’s own build system explicitly runs it, or
> because some .am or .ac file is modified?  Would be nice to mention it
> in a comment.

Both :-)

The LibreOffice build system applies patches that change Makefile.am,
config.sub, config.guess, configure.in.

Andreas

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-06-04 20:56 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-31  9:08 PATCH: LibreOffice Andreas Enge
2015-05-31 17:42 ` Mark H Weaver
2015-05-31 18:19   ` Andreas Enge
2015-05-31 20:32     ` Ludovic Courtès
2015-06-01 12:52       ` John Darrington
2015-06-01 19:40         ` Ludovic Courtès
2015-06-01 19:50   ` Andreas Enge
2015-06-01 19:56     ` Andreas Enge
2015-06-03 12:39       ` Andreas Enge
2015-06-04 20:37         ` Ludovic Courtès
2015-06-04 20:56           ` Andreas Enge

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).