Package: guix-patches;
Reported by: Charles <charles.b.jackson <at> protonmail.com>
Date: Sun, 27 Jun 2021 16:02:01 UTC
Severity: normal
Done: Efraim Flashner <efraim <at> flashner.co.il>
Bug is archived. No further changes may be made.
Message #20 received at 49242 <at> debbugs.gnu.org (full text, mbox):
From: Efraim Flashner <efraim <at> flashner.co.il> To: Charles <charles.b.jackson <at> protonmail.com> Cc: 49242 <at> debbugs.gnu.org Subject: Re: [bug#49242] Update UglifyJs (& dependencies) and update dependents Date: Mon, 12 Jul 2021 15:52:19 +0300
[Message part 1 (text/plain, inline)]
This should be two patches, one to add node-uglify-js and one to switch over to the new version. Other comments inline. I'm torn on putting uglify-js in a separate package module. I'm not entirely sure how deprecating packages works across modules, but I guess that's what I suggested below. It'd probably be best to put it in an uglifyjs.scm and rename the package to uglifyjs instead of node-uglify-js. On Sun, Jun 27, 2021 at 04:01:21PM +0000, Charles via Guix-patches via wrote: > From 53b96b21be2946e84e9687096313557a83c2e103 Mon Sep 17 00:00:00 2001 > From: Charles <charles.b.jackson <at> protonmail.com> > Date: Sat, 26 Jun 2021 14:44:23 -0500 > Subject: [PATCH] gnu: Update UglifyJs. > > This change is to update the UglifyJs library. This updated Javascript > implementation is by the same author as the original Common Lisp version and > is the official successor. It supports many commonly found features of > ECMAscript 6. > > * gnu/packages/lisp-xyz.scm (uglify-js): Remove variable. > * gnu/packages/node-xyz.scm (node-uglify-js): Add new variable. > * guix/build-system/minify.scm (default-uglify-js): Update module-ref. > * gnu/packages/bioinformatics.scm (bismark): Update inputs. > * gnu/packages/ci.scm (laminar): Update inputs. > * gnu/packages/cran.scm (r-shiny): Update inputs. > * gnu/packages/cran.scm (r-shinytree): Update inputs. > * gnu/packages/cran.scm (r-colourpicker): Update inputs. > * gnu/packages/cran.scm (r-threejs): Update inputs. > * gnu/packages/cran.scm (r-flexdashboard): Update inputs. > * gnu/packages/cran.scm (r-bios2cor): Update inputs. > * gnu/packages/cran.scm (r-rintrojs): Update inputs. > * gnu/packages/cran.scm (r-dygraphs): Update inputs. > * gnu/packages/javascript.scm (js-mathjax): Update inputs. > * gnu/packages/web.scm (hpcguix-web): Update inputs. > --- > gnu/packages/bioinformatics.scm | 6 ++-- > gnu/packages/ci.scm | 6 ++-- > gnu/packages/cran.scm | 36 ++++++++++----------- > gnu/packages/javascript.scm | 6 ++-- > gnu/packages/lisp-xyz.scm | 52 ------------------------------ > gnu/packages/node-xyz.scm | 24 ++++++++++++++ > gnu/packages/web.scm | 4 +-- > guix/build-system/minify.scm | 4 +-- > guix/build/minify-build-system.scm | 2 +- > 9 files changed, 56 insertions(+), 84 deletions(-) > > diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm > index 7a1c8cc8e3..d11159b88c 100644 > --- a/gnu/packages/bioinformatics.scm > +++ b/gnu/packages/bioinformatics.scm > @@ -105,7 +105,6 @@ > #:use-module (gnu packages java-compression) > #:use-module (gnu packages jemalloc) > #:use-module (gnu packages linux) > - #:use-module (gnu packages lisp-xyz) > #:use-module (gnu packages logging) > #:use-module (gnu packages lsof) > #:use-module (gnu packages machine-learning) > @@ -114,6 +113,7 @@ > #:use-module (gnu packages mpi) > #:use-module (gnu packages ncurses) > #:use-module (gnu packages node) > + #:use-module (gnu packages node-xyz) > #:use-module (gnu packages ocaml) > #:use-module (gnu packages pcre) > #:use-module (gnu packages parallel) > @@ -9245,7 +9245,7 @@ Browser.") > (lambda* (#:key inputs #:allow-other-keys) > (let* ((file (assoc-ref inputs "plotly.js")) > (installed "plotly/plotly.js")) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" file))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" file))) > (call-with-output-file installed > (cut dump-port minified <>)))) > #t)) > @@ -9303,7 +9303,7 @@ Browser.") > "v1.39.4/dist/plotly.js")) > (sha256 > (base32 "138mwsr4nf5qif4mrxx286mpnagxd1xwl6k8aidrjgknaqg88zyr")))) > - ("uglify-js" ,uglify-js))) > + ("node-uglify-js" ,node-uglify-js))) > (home-page "https://www.bioinformatics.babraham.ac.uk/projects/bismark/") > (synopsis "Map bisulfite treated sequence reads and analyze methylation") > (description "Bismark is a program to map bisulfite treated sequencing > diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm > index 0bcde0fad5..9f9f5d6c20 100644 > --- a/gnu/packages/ci.scm > +++ b/gnu/packages/ci.scm > @@ -38,7 +38,7 @@ > #:use-module (gnu packages guile) > #:use-module (gnu packages guile-xyz) > #:use-module (gnu packages gnupg) > - #:use-module (gnu packages lisp-xyz) > + #:use-module (gnu packages node-xyz) > #:use-module (gnu packages mail) > #:use-module (gnu packages package-management) > #:use-module (gnu packages perl) > @@ -252,7 +252,7 @@ intended as a replacement for Hydra.") > (let* ((file > (assoc-ref inputs (string-append name ".js"))) > (port > - (open-pipe* OPEN_READ "uglify-js" file)) > + (open-pipe* OPEN_READ "uglifyjs" file)) > (destination > (string-append > "../build/js/" name ".min.js"))) > @@ -282,7 +282,7 @@ intended as a replacement for Hydra.") > ("zlib" ,zlib))) > (native-inputs > `(("googletest" ,googletest) > - ("uglify-js" ,uglify-js) > + ("node-uglify-js" ,node-uglify-js) > > ("vue.js" > ,(origin (method url-fetch) > diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm > index e01b2417d2..69d98d34aa 100644 > --- a/gnu/packages/cran.scm > +++ b/gnu/packages/cran.scm > @@ -83,13 +83,13 @@ > #:use-module (gnu packages java) > #:use-module (gnu packages javascript) > #:use-module (gnu packages libevent) > - #:use-module (gnu packages lisp-xyz) > #:use-module (gnu packages machine-learning) > #:use-module (gnu packages maths) > #:use-module (gnu packages mpi) > #:use-module (gnu packages multiprecision) > #:use-module (gnu packages networking) > #:use-module (gnu packages node) > + #:use-module (gnu packages node-xyz) > #:use-module (gnu packages pcre) > #:use-module (gnu packages pdf) > #:use-module (gnu packages perl) > @@ -1991,7 +1991,7 @@ previewing themes in real time.") > ("js-strftime" ,js-strftime) > ("js-highlight" ,js-highlight))) > (native-inputs > - `(("uglify-js" ,uglify-js) > + `(("node-uglify-js" ,node-uglify-js) > ("gfortran" ,gfortran) > ("js-bootstrap-accessibility" > ,(origin > @@ -2058,7 +2058,7 @@ responsive, and powerful applications with minimal effort.") > (for-each (lambda (source target) > (format #t "Processing ~a --> ~a~%" > source target) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" source))) > (call-with-output-file target > (lambda (port) > (dump-port minified port))))) > @@ -2073,7 +2073,7 @@ responsive, and powerful applications with minimal effort.") > (inputs > `(("js-requirejs" ,js-requirejs))) > (native-inputs > - `(("uglify-js" ,uglify-js) > + `(("node-uglify-js" ,node-uglify-js) > ("js-jquery" > ,(origin > (method url-fetch) > @@ -2111,7 +2111,7 @@ supports interactive trees, to enable rich, editable trees in Shiny.") > (lambda _ > (with-directory-excursion "inst/AdminLTE" > (delete-file "app.min.js") > - (let ((minified (open-pipe* OPEN_READ "uglify-js" "app.js"))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" "app.js"))) > (call-with-output-file "app.min.js" > (lambda (port) > (dump-port minified port)))))))))) > @@ -2120,7 +2120,7 @@ supports interactive trees, to enable rich, editable trees in Shiny.") > ("r-promises" ,r-promises) > ("r-shiny" ,r-shiny))) > (native-inputs > - `(("uglify-js" ,uglify-js))) > + `(("node-uglify-js" ,node-uglify-js))) > (home-page "https://rstudio.github.io/shinydashboard/") > (synopsis "Create dashboards with shiny") > (description "This package provides an extension to the Shiny web > @@ -14849,7 +14849,7 @@ to easily call your own custom JavaScript functions from R.") > (format #t "Processing ~a --> ~a~%" > source target) > (delete-file target) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" source))) > (call-with-output-file target > (lambda (port) > (dump-port minified port))))) > @@ -14865,7 +14865,7 @@ to easily call your own custom JavaScript functions from R.") > ("r-shinyjs" ,r-shinyjs))) > (native-inputs > `(("r-knitr" ,r-knitr) > - ("uglify-js" ,uglify-js) > + ("node-uglify-js" ,node-uglify-js) > ("js-jquery" > ,(origin > (method url-fetch) > @@ -17276,7 +17276,7 @@ and Learning to Rank measures (LambdaMart).") > (format #t "Processing ~a --> ~a~%" > source target) > (delete-file target) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" source))) > (call-with-output-file target > (lambda (port) > (dump-port minified port))))) > @@ -17288,7 +17288,7 @@ and Learning to Rank measures (LambdaMart).") > ("r-htmlwidgets" ,r-htmlwidgets) > ("r-igraph" ,r-igraph))) > (native-inputs > - `(("uglify-js" ,uglify-js) > + `(("node-uglify-js" ,node-uglify-js) > ("js-jquery" > ,(origin > (method url-fetch) > @@ -17523,7 +17523,7 @@ etc.). Text boxes with automatic word wrap are also supported.") > (for-each (lambda (source target) > (format #t "Processing ~a --> ~a~%" > source target) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" source))) > (call-with-output-file target > (lambda (port) > (dump-port minified port))))) > @@ -17537,7 +17537,7 @@ etc.). Text boxes with automatic word wrap are also supported.") > ("r-rmarkdown" ,r-rmarkdown) > ("r-shiny" ,r-shiny))) > (native-inputs > - `(("uglify-js" ,uglify-js) > + `(("node-uglify-js" ,node-uglify-js) > ("js-raphael" > ,(origin > (method url-fetch) > @@ -19380,14 +19380,14 @@ tools for help in data interpretation.") > (for-each (lambda (source target) > (format #t "Processing ~a --> ~a~%" > source target) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" source))) > (call-with-output-file target > (lambda (port) > (dump-port minified port))))) > sources targets)))) > #t))))) > (native-inputs > - `(("uglify-js" ,uglify-js) > + `(("node-uglify-js" ,node-uglify-js) > ;; NOTE: Make sure that this version of d3 is still valid when > ;; upgrading the package. > ("d3.v4.js" > @@ -19645,14 +19645,14 @@ cell free DNA} (cfDNA).") > (for-each (lambda (source target) > (format #t "Processing ~a --> ~a~%" > source target) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" source))) > (call-with-output-file target > (lambda (port) > (dump-port minified port))))) > sources targets)))) > #t))))) > (native-inputs > - `(("uglify-js" ,uglify-js) > + `(("node-uglify-js" ,node-uglify-js) > ("intro.js" > ,(origin > (method url-fetch) > @@ -23716,14 +23716,14 @@ documents, Shiny applications, Plumber APIs, plots, and static web content.") > (for-each (lambda (source target) > (format #t "Processing ~a --> ~a~%" > source target) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" source))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" source))) > (call-with-output-file target > (lambda (port) > (dump-port minified port))))) > sources targets)))) > #t))))) > (native-inputs > - `(("uglify-js" ,uglify-js) > + `(("uglify-js" ,node-uglify-js) > ;; They actually use version 1.11.1, but this more recent version > ;; should be just fine. > ("js-jquery" > diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm > index a935d321c5..2dc1c330a2 100644 > --- a/gnu/packages/javascript.scm > +++ b/gnu/packages/javascript.scm > @@ -26,7 +26,7 @@ > #:use-module (gnu packages) > #:use-module (gnu packages base) > #:use-module (gnu packages compression) > - #:use-module (gnu packages lisp-xyz) > + #:use-module (gnu packages node-xyz) > #:use-module (gnu packages readline) > #:use-module (gnu packages web) > #:use-module (guix packages) > @@ -163,7 +163,7 @@ context menu in TypeScript.") > (cond > ((string-match "\\.js$" file) > (mkdir-p (dirname installed)) > - (let ((minified (open-pipe* OPEN_READ "uglify-js" file))) > + (let ((minified (open-pipe* OPEN_READ "uglifyjs" file))) > (call-with-output-file installed > (lambda (port) > (dump-port minified port))) > @@ -179,7 +179,7 @@ context menu in TypeScript.") > (native-inputs > `(("font-mathjax" ,font-mathjax) > ("glibc-utf8-locales" ,glibc-utf8-locales) > - ("uglify-js" ,uglify-js) > + ("node-uglify-js" ,node-uglify-js) > ,@(package-native-inputs font-mathjax))) > (synopsis "JavaScript display engine for LaTeX, MathML, and AsciiMath") > (description "MathJax is a JavaScript display engine for LaTeX, MathML, > diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm > index a4a5d6f543..3c891162ee 100644 > --- a/gnu/packages/lisp-xyz.scm > +++ b/gnu/packages/lisp-xyz.scm > @@ -1276,58 +1276,6 @@ compressor. It works on data produced by @code{parse-js} to generate a > (define-public ecl-cl-uglify-js > (sbcl-package->ecl-package sbcl-cl-uglify-js)) > It would be better to keep this and deprecate it, then people will have a warning that it's changed. (define-public uglify-js (deprecated-package "uglify-js" node-uglify-js)) > -(define-public uglify-js > - (package > - (inherit sbcl-cl-uglify-js) > - (name "uglify-js") > - (build-system trivial-build-system) > - (arguments > - `(#:modules ((guix build utils)) > - #:builder > - (let* ((bin (string-append (assoc-ref %outputs "out") "/bin/")) > - (script (string-append bin "uglify-js"))) > - (use-modules (guix build utils)) > - (mkdir-p bin) > - (with-output-to-file script > - (lambda _ > - (format #t "#!~a/bin/sbcl --script > - > - (require :asdf) > - (asdf:initialize-source-registry > - #p\"~a/etc/common-lisp/source-registry.conf.d/\") > - (asdf:initialize-output-translations > - #p\"~a/etc/common-lisp/asdf-output-translations.conf.d/\")" > - (assoc-ref %build-inputs "sbcl") > - (assoc-ref %build-inputs "sbcl-cl-uglify-js") > - (assoc-ref %build-inputs "sbcl-cl-uglify-js")) > - ;; FIXME: cannot use progn here because otherwise it fails to > - ;; find cl-uglify-js. > - (for-each > - write > - '(;; Quiet, please! > - (let ((*standard-output* (make-broadcast-stream)) > - (*error-output* (make-broadcast-stream))) > - (asdf:load-system :cl-uglify-js)) > - (let ((file (cadr *posix-argv*))) > - (if file > - (format t "~a" > - (cl-uglify-js:ast-gen-code > - (cl-uglify-js:ast-mangle > - (cl-uglify-js:ast-squeeze > - (with-open-file (in file) > - (parse-js:parse-js in)))) > - :beautify nil)) > - (progn > - (format *error-output* > - "Please provide a JavaScript file.~%") > - (sb-ext:exit :code 1)))))))) > - (chmod script #o755) > - #t))) > - (inputs > - `(("sbcl" ,sbcl) > - ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js))) > - (synopsis "JavaScript compressor"))) > - > (define-public sbcl-cl-strings > (let ((revision "1") > (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae")) > diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm > index 7818b44d9e..3661fdb0c4 100644 > --- a/gnu/packages/node-xyz.scm > +++ b/gnu/packages/node-xyz.scm > @@ -357,3 +357,27 @@ if desired.") > (description "Acornjs is a Javascrip parser with many options and an > architecture supporting plugins.") > (license license:expat))) > + > +(define-public node-uglify-js > + (package > + (name "node-uglify-js") > + (version "3.13.9") > + (source > + (origin > + (method url-fetch) > + (uri (string-append > + "https://github.com/mishoo/UglifyJS/archive/refs/tags/v" > + version ".tar.gz")) This one also should be downloaded using git-fetch. > + (sha256 > + (base32 "0dpgkqwyrkqlvixwl841375s134slnj3h0viff1cpxq81mxqph09")))) > + (build-system node-build-system) > + (inputs > + `(("semver" ,node-semver) > + ("acorn" ,node-acorn))) > + (home-page "https://lisperator.net/uglifyjs/") > + (synopsis "JavaScript parser / mangler / compressor / beautifier toolkit") Make sure you have two spaces between each sentence. > + (description "UglifyJS is a JavaScript compressor/minifier written in > +JavaScript. It also contains tools that allow one to automate working with > +JavaScript code: parser, code generator, compressor, mangler, scope analyzer, > +tree walker, and tree transformer.") > + (license license:bsd-2))) > diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm > index 412308b417..6d39103b5b 100644 > --- a/gnu/packages/web.scm > +++ b/gnu/packages/web.scm > @@ -138,7 +138,7 @@ > #:use-module (gnu packages libunistring) > #:use-module (gnu packages libunwind) > #:use-module (gnu packages linux) > - #:use-module (gnu packages lisp-xyz) > + #:use-module (gnu packages node-xyz) > #:use-module (gnu packages lsof) > #:use-module (gnu packages lua) > #:use-module (gnu packages mail) > @@ -7759,7 +7759,7 @@ compressed JSON header blocks. > (native-inputs > `(("autoconf" ,autoconf) > ("automake" ,automake) > - ("uglify-js" ,uglify-js) > + ("node-uglify-js" ,node-uglify-js) > ("pkg-config" ,pkg-config))) > (inputs > `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile")) > diff --git a/guix/build-system/minify.scm b/guix/build-system/minify.scm > index 28a6781c06..add6b9f080 100644 > --- a/guix/build-system/minify.scm > +++ b/guix/build-system/minify.scm > @@ -44,8 +44,8 @@ > (define (default-uglify-js) > "Return the default package to minify JavaScript source files." > ;; Lazily resolve the binding to avoid a circular dependency. > - (let ((mod (resolve-interface '(gnu packages lisp-xyz)))) > - (module-ref mod 'uglify-js))) > + (let ((mod (resolve-interface '(gnu packages node-xyz)))) > + (module-ref mod 'node-uglify-js))) > > (define* (lower name > #:key source inputs native-inputs outputs system > diff --git a/guix/build/minify-build-system.scm b/guix/build/minify-build-system.scm > index 92158a033f..c5a876726f 100644 > --- a/guix/build/minify-build-system.scm > +++ b/guix/build/minify-build-system.scm > @@ -39,7 +39,7 @@ > (format #t "minifying ~a\n" file) > (let* ((base (basename file ".js")) > (installed (or target (string-append directory base ".min.js"))) > - (minified (open-pipe* OPEN_READ "uglify-js" file))) > + (minified (open-pipe* OPEN_READ "uglifyjs" file))) > (call-with-output-file installed > (cut dump-port minified <>)) > #t)) > -- > 2.32.0 > -- Efraim Flashner <efraim <at> flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted
[signature.asc (application/pgp-signature, inline)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.