From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:45739) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1igH6s-0003AJ-5F for guix-patches@gnu.org; Sat, 14 Dec 2019 18:46:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1igH6q-0006ob-4S for guix-patches@gnu.org; Sat, 14 Dec 2019 18:46:06 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:58149) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1igH6o-0006nl-Rv for guix-patches@gnu.org; Sat, 14 Dec 2019 18:46:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1igH6n-0007uI-Pw for guix-patches@gnu.org; Sat, 14 Dec 2019 18:46:01 -0500 Subject: [bug#38616] emacs: fix odt export Resent-Message-ID: Received: from eggs.gnu.org ([2001:470:142:3::10]:39657) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1igH66-00031f-8Z for guix-patches@gnu.org; Sat, 14 Dec 2019 18:45:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1igH64-0005aP-6n for guix-patches@gnu.org; Sat, 14 Dec 2019 18:45:18 -0500 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:35885) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1igH62-0005YF-DW for guix-patches@gnu.org; Sat, 14 Dec 2019 18:45:15 -0500 Received: by mail-wr1-x42e.google.com with SMTP id z3so2872707wru.3 for ; Sat, 14 Dec 2019 15:45:13 -0800 (PST) Received: from guixSD (host1-200-dynamic.5-87-r.retail.telecomitalia.it. [87.5.200.1]) by smtp.gmail.com with ESMTPSA id b17sm15749388wrp.49.2019.12.14.15.45.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Dec 2019 15:45:11 -0800 (PST) From: anothersms@gmail.com (=?UTF-8?Q?Nicol=C3=B2?= Balzarotti) Date: Sun, 15 Dec 2019 00:45:09 +0100 Message-ID: <87a77ueaka.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 38616@debbugs.gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello Guix! Neither on NixOS or in guix I've ever been able to export an org file to otd. The error was 'OpenDocument export failed: Buffer is read-only: #'. I've seen some report of this error on the web, like: - https://lists.gnu.org/archive/html/emacs-orgmode/2018-05/msg00545.html - https://github.com/syl20bnr/spacemacs/issues/1482 but also on our IRC: - http://logs.guix.gnu.org/guix/2019-05-07.log - http://logs.guix.gnu.org/guix/2019-07-25.log but I was not able to find a fix for it. Today I checked the source and figured it out. The explanation, as written in the patch, is the following > Files inside the guix store are read only. "styles.xml" is copied from the > store (/share/emacs/26.3/etc/org/OrgOdtStyles.xml), so it's read only too. > ox-odt needs this file, so if it's not writable it will fail. This patch > adjust the permissions. So, this patches fixes the permissions on the file. I've two questions: 1. Is it fine to have a .patch, or should I add a phase where I fix the file? this seemed to be easier 2. If the same error happens for other programs, might it make sense to "fake" rw permissions in the store (by using a virtual fs or something) so that files are copied as rw, but files in the store are still ro? Thanks! Nicol=C3=B2 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-gnu-packages-emascs.scm-emacs-patches-Fix-odt-export.patch >From c1ad3fff9bda5935651f26e460907a77d1b3d003 Mon Sep 17 00:00:00 2001 From: nixo Date: Sat, 14 Dec 2019 15:17:11 +0100 Subject: [PATCH] * gnu/packages/emascs.scm (emacs)[patches]: Fix odt export. ox-odt copyes the file /share/emacs/26.3/etc/org/OrgOdtStyles.xml under /tmp/odt-*/styles.xml and tries to modify it. Since files in the guix store are read-only, it will fail. This patch fixes the export by adjusting permissions during the export. --- gnu/packages/emacs.scm | 1 + .../patches/emacs-fix-odt-export.patch | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 gnu/packages/patches/emacs-fix-odt-export.patch diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index eba7f88551..8183b69eb3 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -80,6 +80,7 @@ "119ldpk7sgn9jlpyngv5y4z3i7bb8q3xp4p0qqi7i5nq39syd42d")) (patches (search-patches "emacs-exec-path.patch" "emacs-fix-scheme-indent-function.patch" + "emacs-fix-odt-export.patch" "emacs-source-date-epoch.patch")) (modules '((guix build utils))) (snippet diff --git a/gnu/packages/patches/emacs-fix-odt-export.patch b/gnu/packages/patches/emacs-fix-odt-export.patch new file mode 100644 index 0000000000..0c3c44a2e3 --- /dev/null +++ b/gnu/packages/patches/emacs-fix-odt-export.patch @@ -0,0 +1,25 @@ +Files inside the guix store are read only. "styles.xml" is copied from the +store (/share/emacs/26.3/etc/org/OrgOdtStyles.xml), so it's read only too. +ox-odt needs this file, so if it's not writable it will fail. This patch +adjust the permissions. + +--- + lisp/org/ox-odt.el | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el +index f9c4a93cc8..61988ffcc4 100644 +--- a/lisp/org/ox-odt.el ++++ b/lisp/org/ox-odt.el +@@ -1384,6 +1384,8 @@ original parsed data. INFO is a plist holding export options." + ;; create a manifest entry for styles.xml + (org-odt-create-manifest-file-entry "text/xml" "styles.xml") + ++ ;; guix store files are ro. This file need to be modified, make it rw ++ (set-file-modes (concat org-odt-zip-dir "styles.xml") #o600) + ;; FIXME: Who is opening an empty styles.xml before this point? + (with-current-buffer + (find-file-noselect (concat org-odt-zip-dir "styles.xml") t) +-- +2.24.0 + -- 2.24.0 --=-=-=--