unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: Michael Heerdegen <michael_heerdegen@web.de>
Cc: 33005@debbugs.gnu.org
Subject: bug#33005: 27.0.50; Data loss with Gnus registry
Date: Thu, 17 Oct 2019 08:53:11 -0700	[thread overview]
Message-ID: <87sgnr74ig.fsf@ericabrahamsen.net> (raw)
In-Reply-To: <87lftjkcj7.fsf@web.de> (Michael Heerdegen's message of "Thu, 17 Oct 2019 10:21:32 +0200")

Michael Heerdegen <michael_heerdegen@web.de> writes:

> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>> People are expected to use `gnus-mock-start' to start it, which does
>> "emacs -Q" internally.
>
> Ah, I remember.
>
>> The only requirement is that the emacs be run
>> from a build directory, and not an installation.
>
> I tried it from my normal Emacs session and got this:
>
> Debugger entered--Lisp error: (buffer-read-only #<buffer .newsrc.eld>)
>   replace-match("/tmp/emacs-gnus-mock-738lXO" t)
>   gnus-mock-start()
>   funcall-interactively(gnus-mock-start)
>   call-interactively(gnus-mock-start record nil)
>   command-execute(gnus-mock-start record)
>
> Is that because it is an installed Emacs, or something else?  Should I
> investigate?

Man, who would have guessed this would be so difficult... I have no idea
why a data file that ships with the package would become read-only.
I suppose I could wrap that in `inhibit-read-only', but if it's read
only for a reason that will only fail later down the line. Can you check
two things, and then I'll give up for now?

1. Put a breakpoint or edebug or otherwise slow the function down, and
after the data directory has been copied to /tmp, make sure that it
belongs to your user and you have the right permissions?

2. Try this version of gnus-mock-start and see if it works:

(defun gnus-mock-start ()
  (interactive)
  (let ((mock-tmp-dir (make-temp-file "emacs-gnus-mock-" t)))
    (condition-case-unless-debug err
	(let ((init-file (expand-file-name "init.el" mock-tmp-dir)))
	  (with-temp-buffer
	    (let ((standard-output (current-buffer))
		  (print-circle nil))
	      (prin1
	       `(setq gnus-home-directory ,mock-tmp-dir
		      init-file-user "mockturtle"
		      sendmail-program
		      ,(expand-file-name gnus-mock-sendmail-program
					 mock-tmp-dir)
		      message-directory ,mock-tmp-dir
		      gnus-startup-file
		      ,(expand-file-name ".newsrc" mock-tmp-dir)
		      gnus-init-file
		      ,(expand-file-name ".gnus.el" mock-tmp-dir)
		      nndraft-directory
		      ,(expand-file-name "drafts/" mock-tmp-dir)
		      gnus-agent-directory
		      ,(expand-file-name "agent/" mock-tmp-dir)
		      gnus-directory
		      ,(expand-file-name "News/" mock-tmp-dir)))
	      (princ "\n\n")
	      ;; Constant that can be checked if we need to know it's a mock
	      ;; session.
	      (prin1 '(defconst gnus-mock-p t))
	      (princ "\n")
	      ;; Constant for use in `gnus-mock-reload', which is defined in
	      ;; the .gnus.el startup file.
 	      (prin1 `(defconst gnus-mock-data-dir ,gnus-mock-data-dir))
	      (when gnus-mock-cleanup-p
		(princ "\n")
		(prin1 `(add-hook 'kill-emacs-hook
				  (lambda () (delete-directory
					      ,mock-tmp-dir t)))))
	      (when gnus-mock-use-images
		(princ "\n")
		(prin1 `(add-to-list 'load-path
				     ,(format "%s/data" mock-tmp-dir))))
	      (write-file init-file)))
	  ;; Put our data and config in place.
	  (copy-directory
	   gnus-mock-data-dir
	   (file-name-as-directory mock-tmp-dir) nil nil t)
	  ;; Git doesn't let us commit empty directories, so create our
	  ;; necessary empty maildir bits, and draft directories.
	  (mapc (lambda (path) (make-directory path t))
		(mapcar (lambda (dir)
			  (format "%s/test/%s" mock-tmp-dir dir))
			'("Welcome/new" "Welcome/tmp" "Welcome/.nnmaildir/marks"
			  "incoming/tmp" "incoming/new" "incoming/cur"
			  "incoming/.nnmaildir/marks" "incoming/.nnmaildir/nov"
			  "mails/tmp" "mails/new" "mails/.nnmaildir/marks")))
	  (make-directory (format "%s/drafts/drafts" mock-tmp-dir) t)
	  (make-directory (format "%s/drafts/queue" mock-tmp-dir))
	  ;; Possibly insert additional config.
	  (when gnus-mock-init-file
	    (with-temp-buffer
	      (insert-file-contents gnus-mock-init-file)
	      (append-to-file
	       (point-min) (point-max) init-file)))
	  (when gnus-mock-gnus-file
	    (with-temp-buffer
	      (insert-file-contents gnus-mock-gnus-file)
	      (append-to-file
	       (point-min) (point-max)
	       (expand-file-name ".gnus.el" mock-tmp-dir))))
	  ;; Possibly add an nnimap server.
	  (when gnus-mock-dovecot-imap-program
	    (with-temp-buffer
	      (insert "\n\n")
	      (prin1
	       `(add-to-list
		 'gnus-secondary-select-methods
		 (quote (nnimap
			 "Mocky"
			 (nnimap-stream shell)
			 (nnimap-shell-program
			  ,(concat
			    gnus-mock-dovecot-imap-program
			    (format " -o mail_location=maildir:%s/imapmail/mail"
				    mock-tmp-dir))))))
	       (current-buffer))
	      (append-to-file
	       (point-min) (point-max)
	       (expand-file-name ".gnus.el" mock-tmp-dir))))
	  ;; There are absolute paths in the .newsrc.eld file, so doctor
	  ;; that file.
	  (let ((inhibit-read-only t))
	   (with-current-buffer (find-file-noselect
				 (expand-file-name ".newsrc.eld" mock-tmp-dir))
	     (while (re-search-forward "REPLACE_ME" (point-max) t)
	       (replace-match mock-tmp-dir t))
	     (when gnus-mock-dovecot-imap-program
	       (goto-char (point-max))
	       (insert "\n\n")
	       (prin1
		'(setq
		  gnus-newsrc-alist
		  (append
		   gnus-newsrc-alist
		   '(("nnimap+Mocky:INBOX" 3 nil ((unexist) (seen (1 . 32)))
		      "nnimap:Mocky" ((modseq . "33") (uidvalidity . "1541087103")
				      (active 1 . 32)
				      (permanent-flags %Answered %Flagged %Deleted
						       %Seen %Draft %*)))
		     ("nnimap+Mocky:emacs-devel" 3 nil ((unexist 0))
		      "nnimap:Mocky" ((modseq . "21") (uidvalidity . "1541087104")
				      (active 0 . 20)
				      (permanent-flags %Answered %Flagged %Deleted
						       %Seen %Draft %*)))
		     ("nnimap+Mocky:\320\237\321\200\320\270\320\262\320\265\321\202\320\274\320\270\321\200"
		      3 nil ((unexist) (seen 1))
		      "nnimap:Mocky" ((modseq . "2") (uidvalidity . "1541087105")
				      (active 1 . 1)
				      (permanent-flags %Answered %Flagged %Deleted
						       %Seen %Draft %*))))))
		(current-buffer)))
	     (basic-save-buffer)))
	  (let ((default-directory
		  (expand-file-name
		   "lisp/gnus"
		   (file-name-as-directory
		    (expand-file-name "../.."
				      gnus-mock-emacs-program)))))
	    (make-process :name "gnus-mock" :buffer nil
			  :command (list gnus-mock-emacs-program
					 "-Q" "--load" init-file)
			  :stderr "*gnus mock errors*")))
      (error (when (and gnus-mock-cleanup-p
			(file-exists-p mock-tmp-dir))
	       (delete-directory mock-tmp-dir t))
	     (signal (car err) (cdr err))))))





  reply	other threads:[~2019-10-17 15:53 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-10 13:24 bug#33005: 27.0.50; Data loss with Gnus registry Michael Heerdegen
2018-10-10 14:56 ` Eric Abrahamsen
2018-10-10 15:17   ` Michael Heerdegen
2018-10-10 16:08     ` Eric Abrahamsen
2018-10-10 20:23       ` Michael Heerdegen
2018-10-10 21:24       ` Michael Heerdegen
2018-10-10 23:05         ` Eric Abrahamsen
2018-10-11 12:44           ` Michael Heerdegen
2018-10-11 13:10             ` Michael Heerdegen
2018-10-11 18:12               ` Eric Abrahamsen
2018-10-11 20:28                 ` Michael Heerdegen
2018-10-11 22:09                   ` Eric Abrahamsen
2018-10-11 22:20                     ` Michael Heerdegen
2018-10-11 22:26                       ` Eric Abrahamsen
2018-10-12 14:22                     ` Michael Heerdegen
2018-10-12 16:57                       ` Eric Abrahamsen
2018-10-11 18:53           ` Eli Zaretskii
2018-10-11 18:57             ` Eric Abrahamsen
2018-10-11 20:08             ` Michael Heerdegen
2018-10-12  4:24               ` Eli Zaretskii
2018-10-12 11:04                 ` Michael Heerdegen
2018-10-12 12:51                   ` Eli Zaretskii
2018-10-12 14:46           ` Michael Heerdegen
2018-10-12 16:58             ` Eric Abrahamsen
2019-09-24  1:35             ` Michael Heerdegen
2019-09-24  3:34               ` Eric Abrahamsen
2019-10-01 23:37                 ` Eric Abrahamsen
2019-10-14  9:53                   ` Michael Heerdegen
2019-10-14 17:51                     ` Eric Abrahamsen
2019-10-15 14:28                       ` Michael Heerdegen
2019-10-15 20:11                         ` Eric Abrahamsen
2019-10-16  9:03                           ` Michael Heerdegen
2019-10-16 15:46                             ` Eric Abrahamsen
2019-10-17  8:21                               ` Michael Heerdegen
2019-10-17 15:53                                 ` Eric Abrahamsen [this message]
2019-10-18  9:18                                   ` Michael Heerdegen
2019-10-18 14:44                                     ` Michael Heerdegen
2019-10-19  2:05                                       ` Phil Sainty
2019-10-19 14:31                                         ` Michael Heerdegen
2019-10-19 22:12                                           ` Phil Sainty
2019-10-26  8:02                                             ` Michael Heerdegen
2019-10-26 15:35                                               ` Eric Abrahamsen
2019-11-18  9:17                                                 ` Phil Sainty
2019-10-18 14:46                                     ` Michael Heerdegen
2019-10-18 19:07                                       ` Eric Abrahamsen
2019-10-18 19:09                                       ` Eric Abrahamsen
2019-10-18 19:23                                         ` Michael Heerdegen
2019-10-18 19:24                                           ` Eric Abrahamsen
2019-10-19 14:25                                             ` Michael Heerdegen
2019-10-19 18:06                                               ` Eric Abrahamsen
2019-10-18 19:06                                     ` Eric Abrahamsen
2019-10-16  9:30                           ` Michael Heerdegen
2019-10-16 15:49                             ` Eric Abrahamsen
2019-10-17  8:32                               ` Michael Heerdegen
2019-10-17 10:23                                 ` Michael Heerdegen
2019-10-17 15:54                                   ` Eric Abrahamsen
2019-10-18  3:08                             ` Richard Stallman
2019-10-18  9:50                               ` Michael Heerdegen
2019-11-26  0:17 ` Michael Heerdegen
2019-11-26  0:51   ` Eric Abrahamsen
2019-11-26 16:32     ` Michael Heerdegen
2019-11-26 18:45       ` Eric Abrahamsen
2019-11-26 20:08         ` Michael Heerdegen
2019-11-26 20:41           ` Eric Abrahamsen
2019-11-26 20:45             ` Michael Heerdegen
2019-11-26 20:48               ` Eric Abrahamsen
2019-11-26 20:54                 ` Michael Heerdegen
2019-11-28  8:43                   ` Eric Abrahamsen
2019-11-28 16:25                     ` Michael Heerdegen
2019-11-28 23:55                       ` Eric Abrahamsen
2019-11-29 12:36                         ` Michael Heerdegen
2019-12-03  9:19                           ` Eric Abrahamsen
2019-12-04 16:10                             ` Michael Heerdegen
2019-12-04 17:26                               ` Eric Abrahamsen
2019-12-04 20:41                                 ` Michael Heerdegen
2019-12-04 20:53                                   ` Eric Abrahamsen
2019-12-04 21:02                                     ` Michael Heerdegen
2019-12-04 21:16                                       ` Eric Abrahamsen
2019-12-04 21:51                                         ` Michael Heerdegen
2019-12-05  0:51                                           ` Eric Abrahamsen
2019-12-08 15:48                                             ` Michael Heerdegen
2019-12-08 20:52                                               ` Eric Abrahamsen
2019-12-09 19:38                                                 ` Michael Heerdegen
2019-12-09 22:29                                                   ` Eric Abrahamsen
2019-12-09 23:07                                                     ` Michael Heerdegen
2019-12-10  0:24                                                       ` Eric Abrahamsen
2019-12-10  2:30                                                         ` Michael Heerdegen
2019-12-10 23:31                                                           ` Eric Abrahamsen
2019-12-15 17:07                                                             ` Michael Heerdegen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sgnr74ig.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=33005@debbugs.gnu.org \
    --cc=michael_heerdegen@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).