GNU bug report logs -
#75787
[PATCH] gnu: Add microcabal.
Previous Next
To reply to this bug, email your comments to 75787 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#75787
; Package
guix-patches
.
(Thu, 23 Jan 2025 16:22:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Homo <gay <at> disroot.org>
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Thu, 23 Jan 2025 16:22:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Depends on <https://issues.guix.gnu.org/75778>.
* gnu/packages/haskell-apps.scm (microcabal): New variable.
Change-Id: Ib676c2afc360c379183422b1038f045af5485b59
---
gnu/packages/haskell-apps.scm | 50 +++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 1ef3ed4035..d0c3ebdc42 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2021 Morgan Smith <Morgan.J.Smith <at> outlook.com>
;;; Copyright © 2022 David Thompson <dthompson2 <at> worcester.edu>
;;; Copyright © 2024 jgart <jgart <at> dismail.de>
+;;; Copyright © 2025 Homo <gay <at> disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,6 +43,7 @@ (define-module (gnu packages haskell-apps)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (gnu packages)
#:use-module (gnu packages bash)
@@ -783,6 +785,54 @@ (define-public matterhorn
"This is a terminal client for the Mattermost chat system.")
(license license:bsd-3)))
+(define-public microcabal
+ ;; There are no tags, using latest commit.
+ (let ((commit "52e23c1472f63c546e8c366b722aaaef365713f9")
+ (revision "0"))
+ (package
+ (name "microcabal")
+ (version (git-version "0.4.1.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/augustss/MicroCabal")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0f1ikjgj2wrg1wrc4g4rhws791iajvajk7pr8yjr4di2v9h930ak"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:make-flags #~(list "MHS=mhs")
+ ;; Tests require *.cabal files from MicroHs's code.
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ (substitute* "Makefile"
+ (("MHSDIR=[^ ]* ?")
+ "")
+ ;; Don't build with GHC.
+ (("bin/gmcabal bin/mcabal")
+ "bin/mcabal"))))
+ (replace 'install
+ (lambda _
+ (let ((bin (string-append #$output "/bin/")))
+ (install-file "bin/mcabal" bin)))))))
+ (propagated-inputs (list microhs))
+ (home-page "https://github.com/augustss/MicroCabal")
+ (synopsis "Reimplementation of a subset of Cabal")
+ (description "Why a reimplementation? Because Cabal is not a Haskell tool, it is a ghc tool.
+A Haskell tool should be compilable by an implementation of Haskell2010,
+which Cabal is definitely not.
+
+The implementation assumes a Unix-like system with commands like `wget` and `tar`.
+
+To get a consistent set of packages MicroCabal uses Stackage to find compatible packages.
+So in a sense, MicroCabal is more like a MicroStackage.")
+ (license license:asl2.0))))
+
(define-public nixfmt
(package
(name "nixfmt")
--
2.47.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#75787
; Package
guix-patches
.
(Sat, 01 Feb 2025 13:20:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 75787 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi,
> * gnu/packages/haskell-apps.scm (microcabal): New variable.
I’m using a slightly modified patch (see attachment), but `mcabal`
cannot build any packages. It seems that it ignores the MHSDIR environment
variable:
mcabal build fail
mcabal: Build package fail
mcabal: Building in /home/lars/.mcabal/packages/fail-4.9.0.0
mcabal: Building library fail
mhs: error: no location: Module not found: Mhs.Builtin
search path=[".","dist-mcabal/autogen"]
package path=["."]
mhs: error: callCommand: failed 256, "mhs -Pfail-4.9.0.0 -ofail-4.9.0.0.pkg -i -i. -idist-mcabal/autogen '-DVERSION_base=\"4.19.1.0\"' '-DMIN_VERSION_base(x,y,z)=((x)<4||(x)==4&&(y)<19||(x)==4&&(y)==19&&(z)<=1)' -a. Control.Monad.Fail"
Looking at the MicroCabal sources mcabal might be expecting mhs to be
installed as an “mcabal package”?
Lars
[0001-gnu-Add-microcabal.patch (text/plain, attachment)]
Information forwarded
to
guix-patches <at> gnu.org
:
bug#75787
; Package
guix-patches
.
(Sat, 01 Feb 2025 13:47:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 75787 <at> debbugs.gnu.org (full text, mbox):
Hi,
Sorry about that, I expected it to be used only to build packages for
Guix, not as package manager.
It's surprising MicroHs itself ignores MHSDIR, considering it didn't
ignore this variable while building MicroCabal.
Considering inputs are runtime dependencies, shouldn't they go to
propagated-inputs?
Information forwarded
to
guix-patches <at> gnu.org
:
bug#75787
; Package
guix-patches
.
(Sun, 02 Feb 2025 11:21:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 75787 <at> debbugs.gnu.org (full text, mbox):
Hi,
> Sorry about that, I expected it to be used only to build packages for
> Guix, not as package manager.
do you have an example for that? I would like to be able to do both,
if possible.
> It's surprising MicroHs itself ignores MHSDIR, considering it didn't
> ignore this variable while building MicroCabal.
I believe MicroCabal explicitly unsets the search path (via `-i`
without any argument).
> Considering inputs are runtime dependencies, shouldn't they go to
> propagated-inputs?
Yes and no. Whenever possible, runtime dependencies should be plain
inputs. The key here is that their paths are baked into the resulting
mcabal binary via the 'fix-paths phase. propagated-inputs is (imo)
a last-resort is case that is not feasible or desired.
Lars
Information forwarded
to
guix-patches <at> gnu.org
:
bug#75787
; Package
guix-patches
.
(Tue, 04 Feb 2025 17:10:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 75787 <at> debbugs.gnu.org (full text, mbox):
> do you have an example for that? I would like to be able to do both,
> if possible.
Nope, no idea yet, it might need slight modification to make such
example possible, because there are different places where to lookup
packages and where to install packages, to figure this out the only
documentation available is source code.
> I believe MicroCabal explicitly unsets the search path (via `-i`
> without any argument).
Looks like intention to rebuild MicroHs to be installed as package
managed by MicroCabal, except it doesn't know how to do that, because
base (and few more packages) are expected to be backed into Haskell
implementation, but then in standalone package manager scenario you can
use old compiler (unknown to MicroCabal) and old MicroCabal (also
unknown to MicroCabal) to build and install new compiler, new base and
new MicroCabal. I have no idea what to do about other packages expected
to be baked into implementation, maybe same workflow - clone git repo
manually.
This bug report was last modified 132 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.