unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#34548] [PATCH 06/24] gnu: Add r-leaflet.
@ 2019-02-19  3:45 Brett Gilio
  2019-02-19 13:05 ` Ricardo Wurmus
  2022-01-23 12:17 ` bug#34548: " Ricardo Wurmus
  0 siblings, 2 replies; 7+ messages in thread
From: Brett Gilio @ 2019-02-19  3:45 UTC (permalink / raw)
  To: 34548

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: [PATCH 06/24] gnu: Add r-leaflet. --]
[-- Type: text/x-patch, Size: 1935 bytes --]

From 26fbdbeee9ec293511648dc321abb09b6989fadc Mon Sep 17 00:00:00 2001
From: Brett Gilio <brettg@posteo.net>
Date: Mon, 18 Feb 2019 19:37:02 -0600
Subject: [PATCH 06/24] gnu: Add r-leaflet.

* gnu/packages/cran.scm (r-leaflet): New variable.
---
 gnu/packages/cran.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 44c8b0a99..1359a565f 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -6655,6 +6655,40 @@ in science, technology, engineering and mathematics will need in their
 professional lives, but which are usually taught in isolation, if at all.")
    (license license:gpl2+)))
 
+(define-public r-leaflet
+  (package
+    (name "r-leaflet")
+    (version "2.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "leaflet" version))
+       (sha256
+        (base32
+         "051i5qmwa0zbk4jpjrx9kzk4g8qg9c3cavvhw19yj08fjhh8si7s"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-base64enc" ,r-base64enc)
+       ("r-crosstalk" ,r-crosstalk)
+       ("r-htmltools" ,r-htmltools)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-magrittr" ,r-magrittr)
+       ("r-markdown" ,r-markdown)
+       ("r-png" ,r-png)
+       ("r-raster" ,r-raster)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-scales" ,r-scales)
+       ("r-sp" ,r-sp)
+       ("r-viridis" ,r-viridis)))
+    (home-page "http://rstudio.github.io/leaflet/")
+    (synopsis
+     "Create Interactive Web Maps with the JavaScript Leaflet Library")
+    (description
+     "Create and customize interactive maps using the Leaflet JavaScript
+library and the htmlwidgets package.  These maps can be used directly from
+the R console, from RStudio, in Shiny applications and R Markdown documents.")
+    (license license:gpl3)))
+
 (define-public r-abd
   (package
     (name "r-abd")
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [bug#34548] [PATCH 06/24] gnu: Add r-leaflet.
  2019-02-19  3:45 [bug#34548] [PATCH 06/24] gnu: Add r-leaflet Brett Gilio
@ 2019-02-19 13:05 ` Ricardo Wurmus
  2019-02-19 18:32   ` Brett Gilio
  2022-01-23 12:17 ` bug#34548: " Ricardo Wurmus
  1 sibling, 1 reply; 7+ messages in thread
From: Ricardo Wurmus @ 2019-02-19 13:05 UTC (permalink / raw)
  To: Brett Gilio; +Cc: 34548


Hi Brett,

> From 26fbdbeee9ec293511648dc321abb09b6989fadc Mon Sep 17 00:00:00 2001
> From: Brett Gilio <brettg@posteo.net>
> Date: Mon, 18 Feb 2019 19:37:02 -0600
> Subject: [PATCH 06/24] gnu: Add r-leaflet.
>
> * gnu/packages/cran.scm (r-leaflet): New variable.

Unfortunately, this one is not okay.  It’s been on my list to add
r-leaflet, but the package bundles minified JavaScript libraries.

These sources of these libraries will need to be added as native inputs
to replace the bundled sources.  We can minify them with the uglify-js
package.

--
Ricardo

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [bug#34548] [PATCH 06/24] gnu: Add r-leaflet.
  2019-02-19 13:05 ` Ricardo Wurmus
@ 2019-02-19 18:32   ` Brett Gilio
  2019-02-21 20:03     ` swedebugia
  0 siblings, 1 reply; 7+ messages in thread
From: Brett Gilio @ 2019-02-19 18:32 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 34548


Ricardo Wurmus writes:

> Hi Brett,
>
>> From 26fbdbeee9ec293511648dc321abb09b6989fadc Mon Sep 17 00:00:00 2001
>> From: Brett Gilio <brettg@posteo.net>
>> Date: Mon, 18 Feb 2019 19:37:02 -0600
>> Subject: [PATCH 06/24] gnu: Add r-leaflet.
>>
>> * gnu/packages/cran.scm (r-leaflet): New variable.
>
> Unfortunately, this one is not okay.  It’s been on my list to add
> r-leaflet, but the package bundles minified JavaScript libraries.
>
> These sources of these libraries will need to be added as native inputs
> to replace the bundled sources.  We can minify them with the uglify-js
> package.

Understood. I will make a note to look that and see if I can revise the
patch if that option seems formidable. However, on that note, do we have
any progress on an npm importer? I know that came up awhile back.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [bug#34548] [PATCH 06/24] gnu: Add r-leaflet.
  2019-02-19 18:32   ` Brett Gilio
@ 2019-02-21 20:03     ` swedebugia
  2019-02-21 20:14       ` Brett Gilio
  0 siblings, 1 reply; 7+ messages in thread
From: swedebugia @ 2019-02-21 20:03 UTC (permalink / raw)
  To: 34548, brettg, rekado

[-- Attachment #1: Type: text/plain, Size: 1301 bytes --]

Brett Gilio <brettg@posteo.net> skrev: (19 februari 2019 19:32:12 CET)
>
>Ricardo Wurmus writes:
>
>> Hi Brett,
>>
>>> From 26fbdbeee9ec293511648dc321abb09b6989fadc Mon Sep 17 00:00:00
>2001
>>> From: Brett Gilio <brettg@posteo.net>
>>> Date: Mon, 18 Feb 2019 19:37:02 -0600
>>> Subject: [PATCH 06/24] gnu: Add r-leaflet.
>>>
>>> * gnu/packages/cran.scm (r-leaflet): New variable.
>>
>> Unfortunately, this one is not okay.  It’s been on my list to add
>> r-leaflet, but the package bundles minified JavaScript libraries.
>>
>> These sources of these libraries will need to be added as native
>inputs
>> to replace the bundled sources.  We can minify them with the
>uglify-js
>> package.
>
>Understood. I will make a note to look that and see if I can revise the
>patch if that option seems formidable. However, on that note, do we
>have
>any progress on an npm importer? I know that came up awhile back.

Julien is sitting on the patchset right now since a few weeks. 

It still has some defects still but is mostly working.

The problem of circular dependencies is still unsolved. I suggest we add to our importer the ability to parse and select versions recursively. I tried but failed to get it to work before I gave up.
-- 
Sent from my k-9 mail for Android.

[-- Attachment #2: Type: text/html, Size: 1846 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [bug#34548] [PATCH 06/24] gnu: Add r-leaflet.
  2019-02-21 20:03     ` swedebugia
@ 2019-02-21 20:14       ` Brett Gilio
  2019-02-22  9:03         ` swedebugia
  0 siblings, 1 reply; 7+ messages in thread
From: Brett Gilio @ 2019-02-21 20:14 UTC (permalink / raw)
  To: swedebugia; +Cc: 34548


swedebugia writes:

> Brett Gilio <brettg@posteo.net> skrev: (19 februari 2019 19:32:12 CET)
>>
>>Ricardo Wurmus writes:
>>
>>> Hi Brett,
>>>
>>>> From 26fbdbeee9ec293511648dc321abb09b6989fadc Mon Sep 17 00:00:00
>>2001
>>>> From: Brett Gilio <brettg@posteo.net>
>>>> Date: Mon, 18 Feb 2019 19:37:02 -0600
>>>> Subject: [PATCH 06/24] gnu: Add r-leaflet.
>>>>
>>>> * gnu/packages/cran.scm (r-leaflet): New variable.
>>>
>>> Unfortunately, this one is not okay.  It’s been on my list to add
>>> r-leaflet, but the package bundles minified JavaScript libraries.
>>>
>>> These sources of these libraries will need to be added as native
>>inputs
>>> to replace the bundled sources.  We can minify them with the
>>uglify-js
>>> package.
>>
>>Understood. I will make a note to look that and see if I can revise the
>>patch if that option seems formidable. However, on that note, do we
>>have
>>any progress on an npm importer? I know that came up awhile back.
>
> Julien is sitting on the patchset right now since a few weeks. 
>
> It still has some defects still but is mostly working.
>
> The problem of circular dependencies is still unsolved. I suggest we add to our importer the ability to parse and select versions recursively. I tried but failed to get it to work before I gave up.

Hey, where is the patchset located? I wouldn't mind taking a look.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [bug#34548] [PATCH 06/24] gnu: Add r-leaflet.
  2019-02-21 20:14       ` Brett Gilio
@ 2019-02-22  9:03         ` swedebugia
  0 siblings, 0 replies; 7+ messages in thread
From: swedebugia @ 2019-02-22  9:03 UTC (permalink / raw)
  To: Brett Gilio; +Cc: 34548

[-- Attachment #1: Type: text/plain, Size: 3363 bytes --]

On 02/21/2019 09:14 PM, Brett Gilio wrote:
> swedebugia writes:
>
>> Brett Gilio <brettg@posteo.net> skrev: (19 februari 2019 19:32:12 CET)
snip
>>>   However, on that note, do we
>>> have
>>> any progress on an npm importer? I know that came up awhile back.
>> Julien is sitting on the patchset right now since a few weeks.
>>
>> It still has some defects still but is mostly working.
>>
>> The problem of circular dependencies is still unsolved. I suggest we add to our importer the ability to parse and select versions recursively. I tried but failed to get it to work before I gave up.
> Hey, where is the patchset located? I wouldn't mind taking a look.

Here it is: https://framagit.org/tyreunom/guix/tree/npm

Julien integrated my changes (which consisted of changing to use the 
npm-packages instead of github sources) on top of Jelles earlier work 
and made some changes after that (fixing the recursive importer :D) and 
rebased the whole thing.

Most smaller packages include everything in the npm-packages but when 
reviewing we should check that we are actually building from source and 
not just installing some precompiles js-files (which you can imagine 
will take a long time).

Fortunately it is "only" 1500-2000 packages i a couple of different 
versions that are used in most projects that I have explored with the 
very nice tool npm-explorer (see 
https://gitlab.com/swedebugia/guile-npm-explorer).

We essentially need to write our own npm dependency resolver to avoid 
circular dependencies.
What in my view is currently missing to decide which version of 
dependencies to import is a semver parser. I took a stab at that, see 
below[1], but it is messy and buggy and should probably be implemented 
with PEG[2].

Now that I recently succeded with PEG in my unpublished WIP quicklisp 
importer I could give it another try with PEG.

Have fun with it!

|;; FIXME consider even the patch versions. ;; See 
https://stackoverflow.com/questions/22343224/whats-the-difference-between-tilde-and-caret-in-package-json 
(define (parse-semver hashtable version) "return the newest version 
within the same major or minor version" (define (split list) 
(string-split list #\.)) (define (version-list hashtable) (map split 
(map first (hash-table->alist (hash-ref hashtable "versions"))))) 
(define (major list) (first list)) (define (minor list) (second list)) 
(define (minor->number list) (string->number (minor (split list)))) ;; 
Return latest minor with same major version. ;; e.g. ^1.1.0 -> 1.4.0 
even though 2.0.0 is availiable (let* ((version (split (string-drop 
version 1))) (version-list (map first (hash-table->alist (hash-ref 
hashtable "versions")))) (same-major (if (equal? 3 (length version)) 
(fold ;; recurse through version-list (lambda (ver lst) (if 
(string-prefix? (major version) ver) (cons ver lst) lst)) '() 
version-list) ;; not a version triplet #f))) ;; From ;; 
https://www.gnu.org/software/guile/manual/html_node/SRFI_002d1-Fold-and-Map.html#SRFI_002d1-Fold-and-Map 
(fold-right (lambda (str prev) (if (> (minor->number str) (minor->number 
prev)) str prev)) ;;init with 0.0.0 work with minor->number "0.0.0" 
same-major))) [1] 
https://gitlab.com/swedebugia/guile-npm-explorer/blob/wip-versioning-parse/npm-explorer.scm#L148 
[2] 
https://www.gnu.org/software/guile/manual/html_node/PEG-Tutorial.html#PEG-Tutorial 
|


[-- Attachment #2: Type: text/html, Size: 11532 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#34548: [PATCH 06/24] gnu: Add r-leaflet.
  2019-02-19  3:45 [bug#34548] [PATCH 06/24] gnu: Add r-leaflet Brett Gilio
  2019-02-19 13:05 ` Ricardo Wurmus
@ 2022-01-23 12:17 ` Ricardo Wurmus
  1 sibling, 0 replies; 7+ messages in thread
From: Ricardo Wurmus @ 2022-01-23 12:17 UTC (permalink / raw)
  To: 34548-done

I’m closing this as we now have r-leaflet.

It took a long time to figure out what sources correspond to the
minified JavaScript, but once all sources had been found processing the
sources to generate minified JavaScript was easy.

-- 
Ricardo




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-01-23 12:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-19  3:45 [bug#34548] [PATCH 06/24] gnu: Add r-leaflet Brett Gilio
2019-02-19 13:05 ` Ricardo Wurmus
2019-02-19 18:32   ` Brett Gilio
2019-02-21 20:03     ` swedebugia
2019-02-21 20:14       ` Brett Gilio
2019-02-22  9:03         ` swedebugia
2022-01-23 12:17 ` bug#34548: " Ricardo Wurmus

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).