diff mbox series

[bug#36653,v2] guix import stackage: default to a LTS release compatible with GHC 8.4

Message ID 20190716134122.21947-1-rob@vllmrt.net
State Accepted
Headers show
Series [bug#36653,v2] guix import stackage: default to a LTS release compatible with GHC 8.4 | expand

Commit Message

Robert Vollmert July 16, 2019, 1:41 p.m. UTC
In particular, this means that guix lint won't warn to update to
versions that won't necessarily fit our package set well.

Also some minor clean-up tweaks.

* guix/import/stackage.scm (%stackage-url): Change to https, avoiding
redirect log messages.
(%default-lts-version): New field.
(stackage-lts-info-fetch, stackage->guix-package, latest-lts-release): Use it.
(lts-info-ghc-version): Remove unused function.
(lts-info-packages, latest-lts-release): Fix documentation typos.
---

This fixes the patch to *also* apply to normal use of `guix import stackage`,
as originally intended.

 guix/import/stackage.scm | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

Comments

Ludovic Courtès Aug. 17, 2019, 1:52 p.m. UTC | #1
Hi Robert,

Too bad this patch is still in the queue!  I’m not familiar with
Stackage but I trust your judgment.  One minor comment:

Robert Vollmert <rob@vllmrt.net> skribis:

> In particular, this means that guix lint won't warn to update to
> versions that won't necessarily fit our package set well.
>
> Also some minor clean-up tweaks.
>
> * guix/import/stackage.scm (%stackage-url): Change to https, avoiding
> redirect log messages.
> (%default-lts-version): New field.
> (stackage-lts-info-fetch, stackage->guix-package, latest-lts-release): Use it.
> (lts-info-ghc-version): Remove unused function.
> (lts-info-packages, latest-lts-release): Fix documentation typos.

[...]

> +;;; Latest LTS version compatible with bundled ghc version.
> +(define %default-lts-version "12.26")

What about storing this elsewhere?  Perhaps in the ‘properties’ field of
the ‘ghc’ package?  That should make it easier to keep these numbers in
sync.

Besides, it’s usually clearer to separate unrelated cleanups, but it’s
no big deal in this case.

Thanks,
Ludo’.
Timothy Sample Nov. 3, 2020, 8:55 p.m. UTC | #2
Hello,

Over a year later, and I finally went ahead and pushed this!  See commit
f0bb2662bb05625042094e124521197c5f43505e.

Ludovic Courtès <ludo@gnu.org> writes:

> Robert Vollmert <rob@vllmrt.net> skribis:
>
>> +;;; Latest LTS version compatible with bundled ghc version.
>> +(define %default-lts-version "12.26")
>
> What about storing this elsewhere?  Perhaps in the ‘properties’ field of
> the ‘ghc’ package?  That should make it easier to keep these numbers in
> sync.

That’s true, but we already have this problem with the Hackage importer.
It has a version-specific list of packages included with GHC.  It’s true
that two wrongs don’t make a right, but having this patch in place –
even with shortcomings – will prevent real problems.  Besides, we can
always fix it later.

> Besides, it’s usually clearer to separate unrelated cleanups, but it’s
> no big deal in this case.

Agreed.  (The typos were fixed in the interim, but I let the “https”
change hitch a ride along with the LTS version stuff.)

Anyway, this will pave the way for a lint check and then we can finally
put an end to the Haskell package roll-backs.  :)


-- Tim
diff mbox series

Patch

diff --git a/guix/import/stackage.scm b/guix/import/stackage.scm
index 1c1e73a723..f845da4b27 100644
--- a/guix/import/stackage.scm
+++ b/guix/import/stackage.scm
@@ -39,15 +39,13 @@ 
 ;;; Stackage info fetcher and access functions
 ;;;
 
-(define %stackage-url "http://www.stackage.org")
+(define %stackage-url "https://www.stackage.org")
 
-(define (lts-info-ghc-version lts-info)
-  "Retruns the version of the GHC compiler contained in LTS-INFO."
-  (and=> (assoc-ref lts-info "snapshot")
-         (cut assoc-ref <> "ghc")))
+;;; Latest LTS version compatible with bundled ghc version.
+(define %default-lts-version "12.26")
 
 (define (lts-info-packages lts-info)
-  "Retruns the alist of packages contained in LTS-INFO."
+  "Returns the alist of packages contained in LTS-INFO."
   (or (assoc-ref lts-info "packages") '()))
 
 (define (leave-with-message fmt . args)
@@ -57,9 +55,11 @@ 
   ;; "Retrieve the information about the LTS Stackage release VERSION."
   (memoize
    (lambda* (#:optional (version ""))
-     (let* ((url (if (string=? "" version)
-                     (string-append %stackage-url "/lts")
-                     (string-append %stackage-url "/lts-" version)))
+     (let* ((url (string-append %stackage-url
+                                "/lts-"
+                                (if (string=? "" version)
+                                    %default-lts-version
+                                    version)))
             (lts-info (json-fetch-alist url)))
        (if lts-info
            (reverse lts-info)
@@ -90,7 +90,7 @@ 
    (lambda* (package-name ; upstream name
              #:key
              (include-test-dependencies? #t)
-             (lts-version "")
+             (lts-version %default-lts-version)
              (packages-info
               (lts-info-packages
                (stackage-lts-info-fetch lts-version))))
@@ -119,10 +119,12 @@  included in the Stackage LTS release."
 ;;;
 
 (define latest-lts-release
-  (let ((pkgs-info (mlambda () (lts-info-packages (stackage-lts-info-fetch)))))
+  (let ((pkgs-info
+        (mlambda () (lts-info-packages
+                     (stackage-lts-info-fetch %default-lts-version)))))
     (lambda* (package)
       "Return an <upstream-source> for the latest Stackage LTS release of
-PACKAGE or #f it the package is not inlucded in the Stackage LTS release."
+PACKAGE or #f it the package is not included in the Stackage LTS release."
       (let* ((hackage-name (guix-package->hackage-name package))
              (version (lts-package-version (pkgs-info) hackage-name))
              (name-version (hackage-name-version hackage-name version)))