Patcher problems with new files.

Malcolm Purvis malcolmp at xemacs.org
Wed Apr 16 07:54:36 EDT 2008


>>>>> "Didier" == Didier Verna <didier at xemacs.org> writes:

Didier>       Could you give me a backtrace please ?

The backtrace is:

  # bind (standard-output stack-trace-on-signal debug-on-signal stack-trace-on-error debug-on-error)
  # (unwind-protect ...)
  signal(error ("/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure/dev/: no such directory"))
  # bind (args datum)
  cerror("%s: no such directory" "/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure/dev/")
  apply(cerror "%s: no such directory" "/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure/dev/")
  # bind (args datum)
  error("%s: no such directory" "/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure/dev/")
  # bind (dir)
  cd-absolute("/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure/dev")
  # bind (dir)
  cd("/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure/dev")
  # (unwind-protect ...)
  (save-current-buffer (set-buffer temp-buffer) (cd (expand-file-name dirname default-directory)) (find-change-log))
  (with-current-buffer temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log))
  # (unwind-protect ...)
  (unwind-protect (with-current-buffer temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  # bind (temp-buffer)
  (let ((temp-buffer (get-buffer-create (generate-new-buffer-name " *temp*")))) (unwind-protect (with-current-buffer temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (with-temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log))
  (setq change-log (with-temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log)))
  (while (re-search-forward file-re max t) (setq file (match-string 1)) (if (string-match basename-re file) (setq dirname (match-string 1 file)) (setq dirname "")) (setq absfile (expand-file-name file default-directory)) (setq beg (point-at-bol)) (setq end (or (save-excursion (and (re-search-forward file-re max t) (point-at-bol))) max)) (setq change-log (with-temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log))) (let ((extent (make-extent beg end))) (set-extent-properties extent (quote (start-open t duplicable t))) (set-extent-property extent (if (string= change-log absfile) (quote patcher-change-log) (quote patcher-source)) absfile)))
  # (unwind-protect ...)
  (save-excursion (goto-char min) (save-excursion (and (re-search-forward file-re1 max t) (setq file-re file-re1))) (while (re-search-forward file-re max t) (setq file (match-string 1)) (if (string-match basename-re file) (setq dirname (match-string 1 file)) (setq dirname "")) (setq absfile (expand-file-name file default-directory)) (setq beg (point-at-bol)) (setq end (or (save-excursion (and (re-search-forward file-re max t) (point-at-bol))) max)) (setq change-log (with-temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log))) (let ((extent (make-extent beg end))) (set-extent-properties extent (quote (start-open t duplicable t))) (set-extent-property extent (if (string= change-log absfile) (quote patcher-change-log) (quote patcher-source)) absfile))) (goto-char min) (re-search-forward (patcher-project-option patcher-project :failed-command-regexp) max t))
  # bind (end beg dirname absfile file change-log max min basename-re file-re file-re1)
  (let ((file-re1 "^Index: \\(\\S-*\\)") (file-re "^\\+\\+\\+ \\(\\S-*\\)") (basename-re "\\`\\(.*\\)/\\(.*\\)\\'") (min (or min (point-min))) (max (or max (point-max))) change-log file absfile dirname beg end) (save-excursion (goto-char min) (save-excursion (and (re-search-forward file-re1 max t) (setq file-re file-re1))) (while (re-search-forward file-re max t) (setq file (match-string 1)) (if (string-match basename-re file) (setq dirname (match-string 1 file)) (setq dirname "")) (setq absfile (expand-file-name file default-directory)) (setq beg (point-at-bol)) (setq end (or (save-excursion (and (re-search-forward file-re max t) (point-at-bol))) max)) (setq change-log (with-temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log))) (let ((extent (make-extent beg end))) (set-extent-properties extent (quote (start-open t duplicable t))) (set-extent-property extent (if (string= change-log absfile) (quote patcher-change-log) (quote patcher-source)) absfi!
 le))) (goto-char min) (re-search-forward (patcher-project-option patcher-project :failed-command-regexp) max t)))
  # (unwind-protect ...)
  (save-current-buffer (set-buffer (or buffer (current-buffer))) (let ((file-re1 "^Index: \\(\\S-*\\)") (file-re "^\\+\\+\\+ \\(\\S-*\\)") (basename-re "\\`\\(.*\\)/\\(.*\\)\\'") (min (or min (point-min))) (max (or max (point-max))) change-log file absfile dirname beg end) (save-excursion (goto-char min) (save-excursion (and (re-search-forward file-re1 max t) (setq file-re file-re1))) (while (re-search-forward file-re max t) (setq file (match-string 1)) (if (string-match basename-re file) (setq dirname (match-string 1 file)) (setq dirname "")) (setq absfile (expand-file-name file default-directory)) (setq beg (point-at-bol)) (setq end (or (save-excursion (and (re-search-forward file-re max t) (point-at-bol))) max)) (setq change-log (with-temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log))) (let ((extent (make-extent beg end))) (set-extent-properties extent (quote (start-open t duplicable t))) (set-extent-property extent (if (string= change-log ab!
 sfile) (quote patcher-change-log) (quote patcher-source)) absfile))) (goto-char min) (re-search-forward (patcher-project-option patcher-project :failed-command-regexp) max t))))
  (with-current-buffer (or buffer (current-buffer)) (let ((file-re1 "^Index: \\(\\S-*\\)") (file-re "^\\+\\+\\+ \\(\\S-*\\)") (basename-re "\\`\\(.*\\)/\\(.*\\)\\'") (min (or min (point-min))) (max (or max (point-max))) change-log file absfile dirname beg end) (save-excursion (goto-char min) (save-excursion (and (re-search-forward file-re1 max t) (setq file-re file-re1))) (while (re-search-forward file-re max t) (setq file (match-string 1)) (if (string-match basename-re file) (setq dirname (match-string 1 file)) (setq dirname "")) (setq absfile (expand-file-name file default-directory)) (setq beg (point-at-bol)) (setq end (or (save-excursion (and (re-search-forward file-re max t) (point-at-bol))) max)) (setq change-log (with-temp-buffer (cd (expand-file-name dirname default-directory)) (find-change-log))) (let ((extent (make-extent beg end))) (set-extent-properties extent (quote (start-open t duplicable t))) (set-extent-property extent (if (string= change-log absfile) (quote!
  patcher-change-log) (quote patcher-source)) absfile))) (goto-char min) (re-search-forward (patcher-project-option patcher-project :failed-command-regexp) max t))))
  # bind (buffer max min)
  patcher-parse-region(nil nil #<buffer " *Patcher Process Output*">)
  (if (patcher-parse-region nil nil buffer) (progn (display-buffer buffer t) (patcher-error "Error during diff.  Please fix the problem and type \\[patcher-generate-diff] to try again.")))
  (when (patcher-parse-region nil nil buffer) (display-buffer buffer t) (patcher-error "Error during diff.  Please fix the problem and type \\[patcher-generate-diff] to try again."))
  # bind (buffer)
  patcher-diff-base(#<buffer " *Patcher Process Output*">)
  # bind (change-logs-extent generate-change-logs)
  (let ((generate-change-logs t) (change-logs-extent (patcher-extent (quote patcher-change-logs)))) (when regenerate (patcher-with-information (format "ChangeLog skeletons for this patch have already been generated%s.\n\nIf you answer `yes' to the question below, both the diff and the ChangeLog\nentries will be regenerated.  This means that current ChangeLog entries will be\nlost.  If otherwise your answer is `no', only the diff will be regenerated." (if change-logs-extent " and inserted" "")) (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (when generate-change-logs (patcher-delete-extent-and-region change-logs-extent) (patcher-ungenerate-change-logs))) (patcher-diff-base buffer) (when (if regenerate (and generate-change-logs (not patcher-sources) (patcher-change-logs buffer)) (and (not patcher-sources) (patcher-change-logs buffer))) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (!
 if generate-change-logs (progn (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to %s them." (if (eq appearance (quote verbatim)) "insert" "diff"))) (if change-logs-extent (patcher-message "To commit your changes, type \\[patcher-commit-change].") (patcher-message "Please type \\[patcher-insert-change-logs] to %s the ChangeLogs" (if (eq appearance (quote verbatim)) "insert" "diff")))))
  (cond ((or (eq appearance (quote verbatim)) (eq appearance (quote packed))) (let ((generate-change-logs t) (change-logs-extent (patcher-extent (quote patcher-change-logs)))) (when regenerate (patcher-with-information (format "ChangeLog skeletons for this patch have already been generated%s.\n\nIf you answer `yes' to the question below, both the diff and the ChangeLog\nentries will be regenerated.  This means that current ChangeLog entries will be\nlost.  If otherwise your answer is `no', only the diff will be regenerated." (if change-logs-extent " and inserted" "")) (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (when generate-change-logs (patcher-delete-extent-and-region change-logs-extent) (patcher-ungenerate-change-logs))) (patcher-diff-base buffer) (when (if regenerate (and generate-change-logs (not patcher-sources) (patcher-change-logs buffer)) (and (not patcher-sources) (patcher-change-logs buffer))) (patcher-change-logs-diff-error)) (!
 patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (if generate-change-logs (progn (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to %s them." (if (eq appearance (quote verbatim)) "insert" "diff"))) (if change-logs-extent (patcher-message "To commit your changes, type \\[patcher-commit-change].") (patcher-message "Please type \\[patcher-insert-change-logs] to %s the ChangeLogs" (if (eq appearance (quote verbatim)) "insert" "diff")))))) ((eq appearance (quote patch)) (let ((generate-change-logs t)) (when regenerate (patcher-with-information "ChangeLog skeletons for this patch have already been generated.\n\nIf you answer `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise your\nanswer is `no', it is assumed that y!
 ou have edited the skeletons, and the\nproject will be rediff'!
 ed with 
them." (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (and generate-change-logs (patcher-ungenerate-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-generate-change-logs nil nil buffer) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to create the whole diff.")) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (patcher-diff-all) (patcher-insert-diff-prologue (quote mixed))) ((stringp command) (patcher-diff-all) (patcher-convert-change-log-diffs command) (patcher-insert-diff-prologue command)) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command)))) (patcher-message "To commit your changes, type \\[patcher-commit-change].")))) ((not appearance) (let ((generate-change-logs t)) (w!
 hen regenerate (patcher-with-information "ChangeLog skeletons for this patch have already been generated.\n\nIf you answer `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise your\nanswer is `no', the current CHangeLog entries won't be touched." (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (and generate-change-logs (patcher-ungenerate-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (message "Please don't forget to annotate the ChangeLog skeletons.")) (patcher-diff-base buffer) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-di!
 ff-prologue (quote sources)) (patcher-message "To commit your !
 changes,
 type \\[patcher-commit-change].")))) (t (patcher-error "invalid `change-logs-appearance' option: %s" appearance)))
  (cond ((eq updating (quote automatic)) (cond ((or (eq appearance (quote verbatim)) (eq appearance (quote packed))) (let ((generate-change-logs t) (change-logs-extent (patcher-extent (quote patcher-change-logs)))) (when regenerate (patcher-with-information (format "ChangeLog skeletons for this patch have already been generated%s.\n\nIf you answer `yes' to the question below, both the diff and the ChangeLog\nentries will be regenerated.  This means that current ChangeLog entries will be\nlost.  If otherwise your answer is `no', only the diff will be regenerated." (if change-logs-extent " and inserted" "")) (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (when generate-change-logs (patcher-delete-extent-and-region change-logs-extent) (patcher-ungenerate-change-logs))) (patcher-diff-base buffer) (when (if regenerate (and generate-change-logs (not patcher-sources) (patcher-change-logs buffer)) (and (not patcher-sources) (patcher-change-logs buffer!
 ))) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (if generate-change-logs (progn (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to %s them." (if (eq appearance (quote verbatim)) "insert" "diff"))) (if change-logs-extent (patcher-message "To commit your changes, type \\[patcher-commit-change].") (patcher-message "Please type \\[patcher-insert-change-logs] to %s the ChangeLogs" (if (eq appearance (quote verbatim)) "insert" "diff")))))) ((eq appearance (quote patch)) (let ((generate-change-logs t)) (when regenerate (patcher-with-information "ChangeLog skeletons for this patch have already been generated.\n\nIf you answer `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise you!
 r\nanswer is `no', it is assumed that you have edited the skel!
 etons, a
nd the\nproject will be rediff'ed with them." (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (and generate-change-logs (patcher-ungenerate-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-generate-change-logs nil nil buffer) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to create the whole diff.")) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (patcher-diff-all) (patcher-insert-diff-prologue (quote mixed))) ((stringp command) (patcher-diff-all) (patcher-convert-change-log-diffs command) (patcher-insert-diff-prologue command)) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command)))) (patcher-message "To commit your changes, type \\[patcher-commit-change].")))) ((not appeara!
 nce) (let ((generate-change-logs t)) (when regenerate (patcher-with-information "ChangeLog skeletons for this patch have already been generated.\n\nIf you answer `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise your\nanswer is `no', the current CHangeLog entries won't be touched." (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (and generate-change-logs (patcher-ungenerate-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (message "Please don't forget to annotate the ChangeLog skeletons.")) (patcher-diff-base buffer) (patcher-remove-change-logs buffer) (patcher!
 -insert-diff buffer) (patcher-insert-diff-prologue (quote sour!
 ces)) (p
atcher-message "To commit your changes, type \\[patcher-commit-change].")))) (t (patcher-error "invalid `change-logs-appearance' option: %s" appearance)))) ((eq updating (quote manual)) (patcher-diff-base buffer) (when (and (not patcher-sources) (not (equal (patcher-change-logs buffer) (mapcar (quote car) patcher-change-logs)))) (patcher-error "Some ChangeLog files are not updated.  Please update them before running Patcher.")) (cond ((eq appearance (quote verbatim)) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-insert-change-logs-verbatim))) ((eq appearance (quote packed)) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (if (not patcher-sources) (progn (and regenerate (patcher-remove-change-logs buffer)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-pack-change-log!
 s))) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-diff-change-logs patcher-diff-command)))) ((stringp command) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-diff-change-logs command))) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command))))) ((eq appearance (quote patch)) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (if patcher-sources (progn (patcher-diff-all) (patcher-insert-diff-prologue (quote mixed))) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote mixed)))) ((stringp command) (if (not patcher-sources) (progn (patcher-insert-diff buffer) (patcher-insert-diff-prologue command) (patcher-convert-change-log-diffs command)) (patcher-diff-all) (patcher-insert-diff-prologue command) (patc!
 her-convert-change-log-diffs command))) (t (patcher-error "inv!
 alid `ch
ange-logs-diff-command' option: %s" command))))) ((not appearance) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources))) (t (patcher-error "invalid `change-logs-appearance' option: %s" appearance))) (patcher-message "To commit your changes, type \\[patcher-commit-change].")) (t (patcher-error "invalid `change-logs-updating' option: %s" updating)))
  (if (not updating) (progn (patcher-diff-base buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-message "To commit your changes, type \\[patcher-commit-change].")) (cond ((eq updating (quote automatic)) (cond ((or (eq appearance (quote verbatim)) (eq appearance (quote packed))) (let ((generate-change-logs t) (change-logs-extent (patcher-extent (quote patcher-change-logs)))) (when regenerate (patcher-with-information (format "ChangeLog skeletons for this patch have already been generated%s.\n\nIf you answer `yes' to the question below, both the diff and the ChangeLog\nentries will be regenerated.  This means that current ChangeLog entries will be\nlost.  If otherwise your answer is `no', only the diff will be regenerated." (if change-logs-extent " and inserted" "")) (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (when generate-change-logs (patcher-delete-extent-and-region change-logs-extent) (patcher-!
 ungenerate-change-logs))) (patcher-diff-base buffer) (when (if regenerate (and generate-change-logs (not patcher-sources) (patcher-change-logs buffer)) (and (not patcher-sources) (patcher-change-logs buffer))) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (if generate-change-logs (progn (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to %s them." (if (eq appearance (quote verbatim)) "insert" "diff"))) (if change-logs-extent (patcher-message "To commit your changes, type \\[patcher-commit-change].") (patcher-message "Please type \\[patcher-insert-change-logs] to %s the ChangeLogs" (if (eq appearance (quote verbatim)) "insert" "diff")))))) ((eq appearance (quote patch)) (let ((generate-change-logs t)) (when regenerate (patcher-with-information "ChangeLog!
  skeletons for this patch have already been generated.\n\nIf y!
 ou answe
r `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise your\nanswer is `no', it is assumed that you have edited the skeletons, and the\nproject will be rediff'ed with them." (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (and generate-change-logs (patcher-ungenerate-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-generate-change-logs nil nil buffer) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to create the whole diff.")) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (patcher-diff-all) (patcher-insert-diff-prologue (quote mixed))) ((stringp command) (patcher-diff-all) (patcher-convert-change-log-diffs command) (pat!
 cher-insert-diff-prologue command)) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command)))) (patcher-message "To commit your changes, type \\[patcher-commit-change].")))) ((not appearance) (let ((generate-change-logs t)) (when regenerate (patcher-with-information "ChangeLog skeletons for this patch have already been generated.\n\nIf you answer `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise your\nanswer is `no', the current CHangeLog entries won't be touched." (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (and generate-change-logs (patcher-ungenerate-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-generate-change-logs patcher-diff-mar!
 ker (extent-end-position (patcher-extent (quote patcher-diff))!
 )) (mess
age "Please don't forget to annotate the ChangeLog skeletons.")) (patcher-diff-base buffer) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-message "To commit your changes, type \\[patcher-commit-change].")))) (t (patcher-error "invalid `change-logs-appearance' option: %s" appearance)))) ((eq updating (quote manual)) (patcher-diff-base buffer) (when (and (not patcher-sources) (not (equal (patcher-change-logs buffer) (mapcar (quote car) patcher-change-logs)))) (patcher-error "Some ChangeLog files are not updated.  Please update them before running Patcher.")) (cond ((eq appearance (quote verbatim)) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-insert-change-logs-verbatim))) ((eq appearance (quote packed)) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote di!
 ff)) (if (not patcher-sources) (progn (and regenerate (patcher-remove-change-logs buffer)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-pack-change-logs))) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-diff-change-logs patcher-diff-command)))) ((stringp command) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-diff-change-logs command))) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command))))) ((eq appearance (quote patch)) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (if patcher-sources (progn (patcher-diff-all) (patcher-insert-diff-prologue (quote mixed))) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote mixed)))) ((stringp command) (i!
 f (not patcher-sources) (progn (patcher-insert-diff buffer) (p!
 atcher-i
nsert-diff-prologue command) (patcher-convert-change-log-diffs command)) (patcher-diff-all) (patcher-insert-diff-prologue command) (patcher-convert-change-log-diffs command))) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command))))) ((not appearance) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources))) (t (patcher-error "invalid `change-logs-appearance' option: %s" appearance))) (patcher-message "To commit your changes, type \\[patcher-commit-change].")) (t (patcher-error "invalid `change-logs-updating' option: %s" updating))))
  # bind (regenerate appearance updating buffer)
  (let ((buffer (patcher-process-output-buffer)) (updating (patcher-project-option patcher-project :change-logs-updating)) (appearance (patcher-project-option patcher-project :change-logs-appearance)) (regenerate (or (patcher-extent (quote patcher-diff)) patcher-change-logs))) (and regenerate (patcher-delete-extent-and-region (patcher-extent (quote patcher-diff)))) (if (not updating) (progn (patcher-diff-base buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-message "To commit your changes, type \\[patcher-commit-change].")) (cond ((eq updating (quote automatic)) (cond ((or (eq appearance (quote verbatim)) (eq appearance (quote packed))) (let ((generate-change-logs t) (change-logs-extent (patcher-extent (quote patcher-change-logs)))) (when regenerate (patcher-with-information (format "ChangeLog skeletons for this patch have already been generated%s.\n\nIf you answer `yes' to the question below, both the diff and the ChangeLog\nentri!
 es will be regenerated.  This means that current ChangeLog entries will be\nlost.  If otherwise your answer is `no', only the diff will be regenerated." (if change-logs-extent " and inserted" "")) (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (when generate-change-logs (patcher-delete-extent-and-region change-logs-extent) (patcher-ungenerate-change-logs))) (patcher-diff-base buffer) (when (if regenerate (and generate-change-logs (not patcher-sources) (patcher-change-logs buffer)) (and (not patcher-sources) (patcher-change-logs buffer))) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (if generate-change-logs (progn (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (patcher-message "Please annotate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to %s them." (if (eq appearance (quote verbatim)) "insert" "!
 diff"))) (if change-logs-extent (patcher-message "To commit yo!
 ur chang
es, type \\[patcher-commit-change].") (patcher-message "Please type \\[patcher-insert-change-logs] to %s the ChangeLogs" (if (eq appearance (quote verbatim)) "insert" "diff")))))) ((eq appearance (quote patch)) (let ((generate-change-logs t)) (when regenerate (patcher-with-information "ChangeLog skeletons for this patch have already been generated.\n\nIf you answer `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise your\nanswer is `no', it is assumed that you have edited the skeletons, and the\nproject will be rediff'ed with them." (setq generate-change-logs (yes-or-no-p "Regenerate ChangeLog skeletons ? "))) (and generate-change-logs (patcher-ungenerate-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-generate-change-logs nil nil buffer) (patcher-message "Please anno!
 tate the ChangeLog skeletons, and type \\[patcher-insert-change-logs] to create the whole diff.")) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (patcher-diff-all) (patcher-insert-diff-prologue (quote mixed))) ((stringp command) (patcher-diff-all) (patcher-convert-change-log-diffs command) (patcher-insert-diff-prologue command)) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command)))) (patcher-message "To commit your changes, type \\[patcher-commit-change].")))) ((not appearance) (let ((generate-change-logs t)) (when regenerate (patcher-with-information "ChangeLog skeletons for this patch have already been generated.\n\nIf you answer `yes' to the question below, the ChangeLog entries will be\nregenerated.  This means that current ones will be lost.  If otherwise your\nanswer is `no', the current CHangeLog entries won't be touched." (setq generate-change-logs (yes-or-no-p "Regenerate !
 ChangeLog skeletons ? "))) (and generate-change-logs (patcher-!
 ungenera
te-change-logs))) (if generate-change-logs (progn (patcher-diff-base buffer) (when (and (not patcher-sources) (patcher-change-logs buffer)) (patcher-change-logs-diff-error)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-generate-change-logs patcher-diff-marker (extent-end-position (patcher-extent (quote patcher-diff)))) (message "Please don't forget to annotate the ChangeLog skeletons.")) (patcher-diff-base buffer) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (patcher-message "To commit your changes, type \\[patcher-commit-change].")))) (t (patcher-error "invalid `change-logs-appearance' option: %s" appearance)))) ((eq updating (quote manual)) (patcher-diff-base buffer) (when (and (not patcher-sources) (not (equal (patcher-change-logs buffer) (mapcar (quote car) patcher-change-logs)))) (patcher-error "Some ChangeLog files are not updated.  Please update them before runni!
 ng Patcher.")) (cond ((eq appearance (quote verbatim)) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-insert-change-logs-verbatim))) ((eq appearance (quote packed)) (let ((command (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (if (not patcher-sources) (progn (and regenerate (patcher-remove-change-logs buffer)) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-pack-change-logs))) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-diff-change-logs patcher-diff-command)))) ((stringp command) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources)) (or regenerate (patcher-diff-change-logs command))) (t (patcher-error "invalid `change-logs-diff-comma!
 nd' option: %s" command))))) ((eq appearance (quote patch)) (l!
 et ((com
mand (patcher-project-option patcher-project :change-logs-diff-command))) (cond ((eq command (quote diff)) (if patcher-sources (progn (patcher-diff-all) (patcher-insert-diff-prologue (quote mixed))) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote mixed)))) ((stringp command) (if (not patcher-sources) (progn (patcher-insert-diff buffer) (patcher-insert-diff-prologue command) (patcher-convert-change-log-diffs command)) (patcher-diff-all) (patcher-insert-diff-prologue command) (patcher-convert-change-log-diffs command))) (t (patcher-error "invalid `change-logs-diff-command' option: %s" command))))) ((not appearance) (patcher-remove-change-logs buffer) (patcher-insert-diff buffer) (patcher-insert-diff-prologue (quote sources))) (t (patcher-error "invalid `change-logs-appearance' option: %s" appearance))) (patcher-message "To commit your changes, type \\[patcher-commit-change].")) (t (patcher-error "invalid `change-logs-updating' option: %s" updating)))))
  patcher-generate-diff-1()
  (progn (and arg (setq patcher-diff-command (read-shell-command "Diff command: " patcher-diff-command))) (patcher-generate-diff-1))
  (if (or (and (not (patcher-extent (quote patcher-diff))) (not patcher-change-logs)) (y-or-n-p "Really regenerate the diff ? ")) (progn (and arg (setq patcher-diff-command (read-shell-command "Diff command: " patcher-diff-command))) (patcher-generate-diff-1)))
  (when (or (and (not (patcher-extent (quote patcher-diff))) (not patcher-change-logs)) (y-or-n-p "Really regenerate the diff ? ")) (and arg (setq patcher-diff-command (read-shell-command "Diff command: " patcher-diff-command))) (patcher-generate-diff-1))
  # bind (arg)
  patcher-generate-diff(nil)
  # (unwind-protect ...)
  (save-excursion (insert "\n\n") (when (patcher-project-option project :change-logs-updating) (let ((appearance (patcher-project-option project :change-logs-appearance))) (when (and appearance (not (eq appearance (quote patch)))) (setq patcher-change-logs-marker (point-marker)) (insert "\n")))) (setq patcher-diff-marker (point-marker)) (patcher-generate-diff override))
  # bind (override files subject project)
  patcher-mail-1(("carbon-configure" "/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure" :themes (mercurial) :log-message-items (subject change-logs) :mail-method gnus :gnus-group "nnimap+home:xemacs-patches" :to-address "xemacs-patches at xemacs.org") "This is a test." nil nil)
  # bind (arg subject project)
  (lambda (project subject &optional arg) "Prepare a mail about a patch to apply on a project.\nPROJECT is the name of the project (see the variables `patcher-projects'\nand `patcher-subprojects').\nSUBJECT is the subject of the mail.\n\nWhen called interactively, use a prefix (ARG) to override the value of\nthe diff command to use for this project.  Note that this is *not* the way\nto restrict the diff to certain files.  If you want to work on a subset of\nthe project (e.g. some files, subdirectories etc), you have two\nalternatives:\n\n- for temporary subprojects, you can use the function\n  `patcher-mail-subproject', which lets you specify the list of modified\n  files / directories.\n- otherwise, you can also define the subprojects in the variable\n  `patcher-subprojects' and continue using this function.\n\nPlease note that you can have multiple occurrences of a Patcher mail at\nthe same time, but not more than one at a time on the same project unless\nyou use `patcher-!
 mail-subproject' and the sections of the project don't\noverlap." (interactive (let* ((prj (assoc (completing-read "Project: " (append patcher-subprojects patcher-projects) nil t nil (quote patcher-projects-history)) (append patcher-subprojects patcher-projects))) (sbj (read-string "Subject: " (let ((s (patcher-project-option prj :subject))) (when (> (length s) 0) (patcher-substitute-name prj s))) patcher-subjects-history))) (list prj sbj current-prefix-arg))) (patcher-mail-1 project subject (patcher-project-option project :files) (and (interactive-p) arg)))(("carbon-configure" "/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure" :themes (mercurial) :log-message-items (subject change-logs) :mail-method gnus :gnus-group "nnimap+home:xemacs-patches" :to-address "xemacs-patches at xemacs.org") "This is a test." nil)
  call-interactively(patcher-mail)
  command-execute(patcher-mail t)
  # bind (_execute_command_keys_ _execute_command_name_ prefix-arg)
  execute-extended-command(nil)
  # bind (command-debug-status)
  call-interactively(execute-extended-command)
  (dispatch-event "[internal]")
  # (condition-case ... . error)
  # (catch top-level ...)

The entry in patcher-projects is:

("carbon-configure" "/Users/malcolmp/builds/xemacs/sandboxen.hg/carbon2-configure"
 :themes (mercurial)
 :log-message-items (subject change-logs)
 :mail-method gnus
 :gnus-group "nnimap+home:xemacs-patches"
 :to-address "xemacs-patches at xemacs.org")


Didier> What I suggest for now is to play with either the
Didier> diff-line-filter or after-diff-hook project options in order to
Didier> clean up the diff.

Thanks for the suggestion.  I'll see what I can do.

Malcolm

-- 
		     Malcolm Purvis <malcolmp at xemacs.org>




More information about the XEmacs-Beta mailing list