unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Taiju HIGASHI <higashi@taiju.info>
To: 55495@debbugs.gnu.org
Cc: Taiju HIGASHI <higashi@taiju.info>
Subject: bug#55495: [PATCH v2] gnu: emacs-haskell-mode: Fix build.
Date: Fri, 20 May 2022 18:59:30 +0900	[thread overview]
Message-ID: <20220520095930.3983-1-higashi@taiju.info> (raw)
In-Reply-To: <87o7zvtf8z.fsf@taiju.info>

* gnu/packages/emacs-xyz.scm (emacs-haskell-mode): Fix build.
---
 gnu/packages/emacs-xyz.scm                    |  14 +-
 .../emacs-haskell-mode-fix-tests.patch        | 273 ++++++++++++++++++
 2 files changed, 286 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/emacs-haskell-mode-fix-tests.patch

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 529e9329d6..767a214641 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -1553,7 +1553,12 @@ (define-public emacs-haskell-mode
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0zxbacqzr84krmhqpvzndnvlcjh1gs1x20ys0dykgd7chyhci5j5"))))
+        (base32 "0zxbacqzr84krmhqpvzndnvlcjh1gs1x20ys0dykgd7chyhci5j5"))
+        ;; Submitted for inclusion upstream.
+        ;; Not identical patches due to different target versions.
+        ;; (see: https://github.com/haskell/haskell-mode/pull/1780)
+       (patches
+        (search-patches "emacs-haskell-mode-fix-tests.patch"))))
     (propagated-inputs
      (list emacs-dash))
     (native-inputs
@@ -1572,6 +1577,13 @@ (define-public emacs-haskell-mode
                            (guix build emacs-utils))
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-vc-handled-backends
+            (lambda _
+              ;; Suppresses problems with git commands being called and tests
+              ;; failing.
+              (substitute* "tests/haskell-mode-tests.el"
+                (("\\(require 'haskell-test-utils\\)" all)
+                 (string-append all " (setq vc-handled-backends nil)")))))
           (delete 'configure)
           (add-before 'build 'pre-build
             (lambda* (#:key inputs #:allow-other-keys)
diff --git a/gnu/packages/patches/emacs-haskell-mode-fix-tests.patch b/gnu/packages/patches/emacs-haskell-mode-fix-tests.patch
new file mode 100644
index 0000000000..cc14d5ca60
--- /dev/null
+++ b/gnu/packages/patches/emacs-haskell-mode-fix-tests.patch
@@ -0,0 +1,273 @@
+diff --git a/haskell-cabal.el b/haskell-cabal.el
+index a2de2ea..dd08ab6 100644
+--- a/haskell-cabal.el
++++ b/haskell-cabal.el
+@@ -361,7 +361,8 @@ OTHER-WINDOW use `find-file-other-window'."
+ (defconst haskell-cabal-conditional-regexp "^[ \t]*\\(\\if\\|else\\|}\\)")
+ 
+ (defun haskell-cabal-classify-line ()
+-  "Classify the current line into 'section-header 'subsection-header 'section-data 'comment and 'empty '"
++  "Classify the current line into 'section-header 'subsection-header
++'section-data 'comment and 'empty '"
+   (save-excursion
+     (beginning-of-line)
+     (cond
+@@ -494,7 +495,8 @@ OTHER-WINDOW use `find-file-other-window'."
+           ((equal component-type "benchmark")  "bench"))))
+ 
+ (defun haskell-cabal-enum-targets (&optional process-type)
+-  "Enumerate .cabal targets. PROCESS-TYPE determines the format of the returned target."
++  "Enumerate .cabal targets. PROCESS-TYPE determines the format of the
++returned target."
+   (let ((cabal-file (haskell-cabal-find-file))
+         (process-type (if process-type process-type 'ghci)))
+     (when (and cabal-file (file-readable-p cabal-file))
+@@ -926,7 +928,9 @@ resulting buffer-content.  Unmark line at the end."
+ (defun haskell-cabal-line-filename ()
+   "Expand filename in current line according to the subsection type
+ 
+-Module names in exposed-modules and other-modules are expanded by replacing each dot (.) in the module name with a forward slash (/) and appending \".hs\"
++Module names in exposed-modules and other-modules are expanded by
++replacing each dot (.) in the module name with a forward slash (/) and
++appending \".hs\"
+ 
+ Example: Foo.Bar.Quux ==> Foo/Bar/Quux.hs
+ 
+diff --git a/haskell-compile.el b/haskell-compile.el
+index 667102c..2e808ed 100644
+--- a/haskell-compile.el
++++ b/haskell-compile.el
+@@ -41,35 +41,40 @@
+ 
+ (defcustom haskell-compile-cabal-build-command
+   "cabal build --ghc-option=-ferror-spans"
+-  "Default build command to use for `haskell-cabal-build' when a cabal file is detected.
++  "Default build command to use for `haskell-cabal-build' when a cabal
++file is detected.
+ For legacy compat, `%s' is replaced by the cabal package top folder."
+   :group 'haskell-compile
+   :type 'string)
+ 
+ (defcustom haskell-compile-cabal-build-alt-command
+   "cabal clean -s && cabal build --ghc-option=-ferror-spans"
+-  "Alternative build command to use when `haskell-cabal-build' is called with a negative prefix argument.
++  "Alternative build command to use when `haskell-cabal-build' is
++called with a negative prefix argument.
+ For legacy compat, `%s' is replaced by the cabal package top folder."
+   :group 'haskell-compile
+   :type 'string)
+ 
+ (defcustom haskell-compile-stack-build-command
+   "stack build --fast"
+-  "Default build command to use for `haskell-stack-build' when a stack file is detected.
++  "Default build command to use for `haskell-stack-build' when a stack
++file is detected.
+ For legacy compat, `%s' is replaced by the stack package top folder."
+   :group 'haskell-compile
+   :type 'string)
+ 
+ (defcustom haskell-compile-stack-build-alt-command
+   "stack clean && stack build --fast"
+-  "Alternative build command to use when `haskell-stack-build' is called with a negative prefix argument.
++  "Alternative build command to use when `haskell-stack-build' is
++called with a negative prefix argument.
+ For legacy compat, `%s' is replaced by the stack package top folder."
+   :group 'haskell-compile
+   :type 'string)
+ 
+ (defcustom haskell-compile-command
+   "ghc -Wall -ferror-spans -fforce-recomp -c %s"
+-  "Default build command to use for `haskell-cabal-build' when no cabal or stack file is detected.
++  "Default build command to use for `haskell-cabal-build' when no
++cabal or stack file is detected.
+ The `%s' placeholder is replaced by the current buffer's filename."
+   :group 'haskell-compile
+   :type 'string)
+@@ -82,9 +87,9 @@ The `%s' placeholder is replaced by the current buffer's filename."
+ 
+ (defcustom haskell-compiler-type
+   'auto
+-  "Controls whether to use cabal, stack, or ghc to compile.
+-   Auto (the default) means infer from the presence of a cabal or stack spec file,
+-   following same rules as haskell-process-type."
++  "Controls whether to use cabal, stack, or ghc to compile.  Auto (the
++   default) means infer from the presence of a cabal or stack spec
++   file, following same rules as haskell-process-type."
+     :type '(choice (const auto) (const ghc) (const stack) (const cabal))
+     :group 'haskell-compile)
+ (make-variable-buffer-local 'haskell-compiler-type)
+diff --git a/haskell-customize.el b/haskell-customize.el
+index c316de2..235a3c4 100644
+--- a/haskell-customize.el
++++ b/haskell-customize.el
+@@ -172,7 +172,8 @@ pass additional flags to `ghc'."
+ 
+ (defcustom haskell-process-do-cabal-format-string
+   ":!cd %s && %s"
+-  "The way to run cabal comands. It takes two arguments -- the directory and the command.
++  "The way to run cabal comands. It takes two arguments -- the
++directory and the command.
+ See `haskell-process-do-cabal' for more details."
+   :group 'haskell-interactive
+   :type 'string)
+@@ -241,7 +242,8 @@ is a member of the hidden package, blah blah."
+ 
+ (defcustom haskell-process-suggest-overloaded-strings
+   t
+-  "Suggest adding OverloadedStrings pragma to file when getting type mismatches with [Char]."
++  "Suggest adding OverloadedStrings pragma to file when getting type
++mismatches with [Char]."
+   :type 'boolean
+   :group 'haskell-interactive)
+ 
+@@ -409,9 +411,9 @@ imports."
+ presence of a *.cabal file or stack.yaml file or something similar.")
+ 
+ (defun haskell-build-type ()
+-  "Looks for cabal and stack spec files. 
+-   When found, returns a pair (TAG . DIR) 
+-   where TAG is 'cabal-project, 'cabal-sandbox. 'cabal, or 'stack; 
++  "Looks for cabal and stack spec files.
++   When found, returns a pair (TAG . DIR)
++   where TAG is 'cabal-project, 'cabal-sandbox. 'cabal, or 'stack;
+    and DIR is the directory containing cabal or stack file.
+    When none found, DIR is nil, and TAG is 'ghc"
+   ;; REVIEW maybe just 'cabal is enough.
+diff --git a/haskell-indent.el b/haskell-indent.el
+index afa5585..83eb1de 100644
+--- a/haskell-indent.el
++++ b/haskell-indent.el
+@@ -435,7 +435,8 @@ Returns the location of the start of the comment, nil otherwise."
+         (haskell-indent-skip-blanks-and-newlines-forward end))))
+ 
+ (defun haskell-indent-next-symbol-safe (end)
+-  "Puts point to the next following symbol, or to end if there are no more symbols in the sexp."
++  "Puts point to the next following symbol, or to end if there are no
++more symbols in the sexp."
+   (condition-case _errlist (haskell-indent-next-symbol end)
+     (error (goto-char end))))
+ 
+diff --git a/haskell-interactive-mode.el b/haskell-interactive-mode.el
+index f4fb325..ae5fcd3 100644
+--- a/haskell-interactive-mode.el
++++ b/haskell-interactive-mode.el
+@@ -48,7 +48,7 @@
+   "Mark used for the old beginning of the prompt.")
+ 
+ (defun haskell-interactive-prompt-regex ()
+-  "Generate a regex for searching for any occurrence of the prompt\
++  "Generate a regex for searching for any occurrence of the prompt
+ at the beginning of the line.  This should prevent any
+ interference with prompts that look like haskell expressions."
+   (concat "^" (regexp-quote haskell-interactive-prompt)))
+diff --git a/haskell-lexeme.el b/haskell-lexeme.el
+index 622f53f..198c994 100644
+--- a/haskell-lexeme.el
++++ b/haskell-lexeme.el
+@@ -452,8 +452,10 @@ Possible results are:
+ - 'string: for strings literals
+ - 'char: for char literals
+ - 'number: for decimal, float, hexadecimal and octal number literals
+-- 'template-haskell-quote: for a string of apostrophes for template haskell
+-- 'template-haskell-quasi-quote: for a string of apostrophes for template haskell
++- 'template-haskell-quote: for a string of apostrophes for template
++  haskell
++- 'template-haskell-quasi-quote: for a string of apostrophes for
++  template haskell
+ 
+ Note that for qualified symbols (match-string 1) returns the
+ unqualified identifier or symbol.  Further qualification for
+diff --git a/haskell-mode.el b/haskell-mode.el
+index c20e66a..0cedf14 100644
+--- a/haskell-mode.el
++++ b/haskell-mode.el
+@@ -1142,7 +1142,8 @@ successful, nil otherwise."
+  "2015-11-11")
+ 
+ (defun haskell-mode-toggle-scc-at-point ()
+-  "If point is in an SCC annotation, kill the annotation.  Otherwise, try to insert a new annotation."
++  "If point is in an SCC annotation, kill the annotation.
++Otherwise, try to insert a new annotation."
+   (interactive)
+   (if (not (haskell-mode-try-kill-scc-at-point))
+       (if (not (haskell-mode-try-insert-scc-at-point))
+@@ -1181,7 +1182,8 @@ Uses `haskell-guess-module-name-from-file-name'."
+ 
+ (defvar haskell-auto-insert-module-format-string
+   "-- | \n\nmodule %s where\n\n"
+-  "Template string that will be inserted in new haskell buffers via `haskell-auto-insert-module-template'.")
++  "Template string that will be inserted in new haskell buffers via
++`haskell-auto-insert-module-template'.")
+ 
+ (defun haskell-auto-insert-module-template ()
+   "Insert a module template for the newly created buffer."
+diff --git a/haskell-move-nested.el b/haskell-move-nested.el
+index c4a7bd5..1339043 100644
+--- a/haskell-move-nested.el
++++ b/haskell-move-nested.el
+@@ -34,7 +34,8 @@
+ 
+ ;;;###autoload
+ (defun haskell-move-nested (cols)
+-  "Shift the nested off-side-rule block adjacent to point by COLS columns to the right.
++  "Shift the nested off-side-rule block adjacent to point by COLS
++columns to the right.
+ 
+ In Transient Mark mode, if the mark is active, operate on the contents
+ of the region instead.
+diff --git a/haskell-process.el b/haskell-process.el
+index 2ca131f..f1f5303 100644
+--- a/haskell-process.el
++++ b/haskell-process.el
+@@ -205,7 +205,8 @@ HPTYPE is the result of calling `'haskell-process-type`' function."
+     t))
+ 
+ (defun haskell-process-send-string (process string)
+-  "Try to send a string to the process's process. Ask to restart if it's not running."
++  "Try to send a string to the process's process. Ask to restart if
++it's not running."
+   (let ((child (haskell-process-process process)))
+     (if (equal 'run (process-status child))
+         (let ((out (concat string "\n")))
+diff --git a/haskell.el b/haskell.el
+index a679b62..66e5f7e 100644
+--- a/haskell.el
++++ b/haskell.el
+@@ -446,7 +446,7 @@ Give optional NEXT-P parameter to override value of
+                       (list "build --ghc-options=-fforce-recomp"))))))
+ 
+ (defun haskell-process-file-loadish (command reload-p module-buffer)
+-  "Run a loading-ish COMMAND that wants to pick up type errors\
++  "Run a loading-ish COMMAND that wants to pick up type errors
+ and things like that.  RELOAD-P indicates whether the notification
+ should say 'reloaded' or 'loaded'.  MODULE-BUFFER may be used
+ for various things, but is optional."
+diff --git a/inf-haskell.el b/inf-haskell.el
+index e62b6ed..1bda90e 100644
+--- a/inf-haskell.el
++++ b/inf-haskell.el
+@@ -74,7 +74,8 @@ directory structure."
+ 
+ (defvar inferior-haskell-multiline-prompt-re
+   "^\\*?[[:upper:]][\\._[:alnum:]]*\\(?: \\*?[[:upper:]][\\._[:alnum:]]*\\)*| "
+-  "Regular expression for matching multiline prompt (the one inside :{ ... :} blocks).")
++  "Regular expression for matching multiline prompt (the one inside
++:{ ... :} blocks).")
+ 
+ (defconst inferior-haskell-error-regexp-alist
+   `(;; Format of error messages used by GHCi.
+diff --git a/w3m-haddock.el b/w3m-haddock.el
+index 141cbf4..4ef6a88 100644
+--- a/w3m-haddock.el
++++ b/w3m-haddock.el
+@@ -49,7 +49,9 @@ directories of package-name-x.x.
+ You can rebind this if you're using hsenv by adding it to your
+ .dir-locals.el in your project root. E.g.
+ 
+-    ((haskell-mode . ((haskell-w3m-haddock-dirs . (\"/home/chris/Projects/foobar/.hsenv/cabal/share/doc\")))))
++    ((haskell-mode .
++      ((haskell-w3m-haddock-dirs .
++       (\"/home/chris/Projects/foobar/.hsenv/cabal/share/doc\")))))
+ 
+ "
+   :group 'haskell
-- 
2.36.0





  parent reply	other threads:[~2022-05-20 10:01 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-18  8:30 bug#55495: emacs-haskell-mode build fails Taiju HIGASHI
2022-05-18 13:16 ` Liliana Marie Prikler
2022-05-18 14:39   ` Taiju HIGASHI
2022-05-18 14:31 ` bug#55495: [PATCH] gnu: emacs-haskell-mode: Fix build Taiju HIGASHI
2022-05-19 19:09   ` Liliana Marie Prikler
2022-05-20  2:29     ` Taiju HIGASHI
2022-05-20  8:49       ` Taiju HIGASHI
2022-05-19 15:14 ` bug#55495: Re: emacs-haskell-mode build fails Luis Henrique Gomes Higino
2022-05-20  9:49   ` Taiju HIGASHI
2022-05-20  9:54 ` bug#55495: [PATCH] gnu: emacs-haskell-mode: Fix build Taiju HIGASHI
2022-05-20 20:59   ` Taiju HIGASHI
2022-05-20 21:57     ` Liliana Marie Prikler
2022-05-20 22:52       ` Taiju HIGASHI
2022-05-20  9:59 ` Taiju HIGASHI [this message]
2022-05-21  5:23 ` bug#55495: [PATCH v3] " Taiju HIGASHI
2022-05-31 19:29 ` bug#55495: (no subject) Luis Henrique Gomes Higino
2022-06-01  3:52   ` Taiju HIGASHI
2022-06-01 14:56     ` Luis Henrique Gomes Higino
2022-06-01 15:36       ` Taiju HIGASHI
2022-06-02  3:57 ` bug#55495: [PATCH v3] gnu: emacs-haskell-mode: Fix build Taiju HIGASHI
2022-06-02  4:01   ` Taiju HIGASHI
2022-06-17 21:41 ` bug#55495: About v3 Luis Henrique Gomes Higino
2022-06-18 14:09   ` Taiju HIGASHI
2022-06-22  0:33 ` bug#55495: resolved by bug#56120 Taiju HIGASHI

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://guix.gnu.org/

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

  git send-email \
    --in-reply-to=20220520095930.3983-1-higashi@taiju.info \
    --to=higashi@taiju.info \
    --cc=55495@debbugs.gnu.org \
    /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/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).