gnu: emacs-company-box: Remove unclearly licensed icons from source.

emacs-company-box bundles icons with unclear licenses.
Confer <https://github.com/emacs-lsp/lsp-treemacs/issues/123>.

* gnu/packages/emacs-xyz.scm (%emacs-company-box-upstream-source): New variable.
(emacs-company-box)[source]: Use a computed origin to remove unclearly licensed
icons.  Also remove source code which mentions said icons.
This commit is contained in:
Liliana Marie Prikler 2022-03-20 14:29:36 +01:00
parent e0d2ec418b
commit ebea3815e6
No known key found for this signature in database
GPG key ID: 442A84B8C70E2F87

View file

@ -7846,6 +7846,15 @@ (define-public emacs-company
These are distributed in separate files and can be used individually.")
(license license:gpl3+)))
(define* (%emacs-company-box-upstream-source #:key commit version hash)
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sebastiencs/company-box")
(commit commit)))
(file-name (git-file-name "emacs-company-box" version))
(hash hash)))
(define-public emacs-company-box
;; There is no release yet. Version is extracted from the main
;; file.
@ -7857,13 +7866,74 @@ (define-public emacs-company-box
(version (git-version version revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sebastiencs/company-box")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "13fgmdy51gqdwijqfvb784pirx4lgva0y7ysi0c3fcx8f82cdj59"))))
(method (@@ (guix packages) computed-origin-method))
(file-name (string-append name "-" version ".tar.gz"))
(sha256 #f)
(uri
(delay
(with-imported-modules '((guix build emacs-utils)
(guix build utils))
#~(begin
(use-modules (guix build utils)
(guix build emacs-utils))
(let* ((dir (string-append "emacs-company-box-" #$version)))
(set-path-environment-variable
"PATH" '("bin")
(list #+emacs-minimal
#+(canonical-package bash)
#+(canonical-package coreutils)
#+(canonical-package gzip)
#+(canonical-package tar)))
;; Copy the upstream source
(copy-recursively
#+(%emacs-lsp-treemacs-upstream-source
#:commit commit #:version version
#:hash
(content-hash
"13fgmdy51gqdwijqfvb784pirx4lgva0y7ysi0c3fcx8f82cdj59"))
dir)
(with-directory-excursion dir
;; The icons are unclearly licensed and possibly non-free,
;; see <https://github.com/emacs-lsp/lsp-treemacs/issues/123>
(with-directory-excursion "images"
(for-each delete-file-recursively
'("eclipse" "idea" "netbeans")))
;; Also remove any mentions in the source code.
(make-file-writable "company-box-icons.el")
(emacs-batch-edit-file "company-box-icons.el"
'(progn
(while (search-forward-regexp
"(defvar company-box-icons-\\([a-z-]*\\)"
nil t)
(pcase (match-string 1)
((or "images"
"all-the-icons"
"icons-in-terminal") nil)
(_ (beginning-of-line)
(kill-sexp)))
(basic-save-buffer))))
;; Also patch source to not show broken icons as configuration
;; option.
(substitute* "company-box-icons.el"
(("- .*, from.*editor.*") "")
(("\\(const :tag \"([a-z]*)\".*\\)" all tag)
(if (member tag
'("images" "all-the-icons" "icons-in-terminal"))
all
""))))
(invoke "tar" "cvfa" #$output
"--mtime=@0"
"--owner=root:0"
"--group=root:0"
"--sort=name"
"--hard-dereference"
dir))))))))
(build-system emacs-build-system)
(propagated-inputs
(list emacs-company emacs-dash emacs-frame-local))