From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52008) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d6Lde-0002sE-Vk for guix-patches@gnu.org; Thu, 04 May 2017 14:38:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d6Ldb-0004FL-1w for guix-patches@gnu.org; Thu, 04 May 2017 14:38:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:56624) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d6Lda-0004FD-Tl for guix-patches@gnu.org; Thu, 04 May 2017 14:38:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1d6Lda-0001tW-Nf for guix-patches@gnu.org; Thu, 04 May 2017 14:38:02 -0400 Subject: bug#26559: [PATCH 1/3] build: emacs: Install only a subset of files. References: In-Reply-To: Resent-Message-ID: Message-Id: <8e661119.AEEAKSDn4NYAAAAAAAAAAAO2CuIAAAACwQwAAAAAAAW9WABZC3To@mailjet.com> From: Arun Isaac Date: Fri, 5 May 2017 00:05:56 +0530 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 26559@debbugs.gnu.org * guix/build/emacs-build-system.scm (install): Install files matching #:include while excluding files matching #:exclude. * guix/build-system/emacs.scm (emacs-build): Add keyword arguments #:includ= e and #:exclude. --- guix/build-system/emacs.scm | 4 ++++ guix/build/emacs-build-system.scm | 25 +++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm index a7982002b..9a46ecfd2 100644 --- a/guix/build-system/emacs.scm +++ b/guix/build-system/emacs.scm @@ -83,6 +83,8 @@ (phases '(@ (guix build emacs-build-system) %standard-phases)) (outputs '("out")) + (include ''("^[^/]*\\.el$" "^[^/]*\\.info$" "^doc/.*= \\.info$")) + (exclude ''("^\\.dir-locals\\.el$" "-pkg\\.el$" "^[^= /]*tests?\\.el$")) (search-paths '()) (system (%current-system)) (guile #f) @@ -108,6 +110,8 @@ #:tests? ,tests? #:phases ,phases #:outputs %outputs + #:include ,include + #:exclude ,exclude #:search-paths ',(map search-path-specification->sexp search-paths) #:inputs %build-inputs))) diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-sys= tem.scm index 44e8b0d31..fefdbb96e 100644 --- a/guix/build/emacs-build-system.scm +++ b/guix/build/emacs-build-system.scm @@ -28,6 +28,7 @@ #:use-module (ice-9 rdelim) #:use-module (ice-9 regex) #:use-module (ice-9 match) + #:use-module (ice-9 ftw) #:export (%standard-phases emacs-build)) =20 @@ -93,14 +94,30 @@ store in '.el' files." (substitute-cmd)))) #t)) =20 -(define* (install #:key outputs #:allow-other-keys) +(define* (install #:key outputs + (include '("^[^/]*\\.el$" "^[^/]*\\.info$" "^doc/.*\\.in= fo$")) + (exclude '("^\\.dir-locals\\.el$" "-pkg\\.el$" "^[^/]*te= sts?\\.el$")) + #:allow-other-keys) "Install the package contents." + + (define src-dir (getcwd)) + + (define (install-file? file stat) + (let ((stripped-file (string-trim (substring file (string-length src-d= ir)) #\/))) + (and (any (cut string-match <> stripped-file) include) + (not (any (cut string-match <> stripped-file) exclude))))) + (let* ((out (assoc-ref outputs "out")) (elpa-name-ver (store-directory->elpa-name-version out)) - (src-dir (getcwd)) (tgt-dir (string-append out %install-suffix "/" elpa-name-ver))) - (copy-recursively src-dir tgt-dir) - #t)) + (for-each + (lambda (file) + (let* ((stripped-file (substring file (string-length src-dir))) + (tgt-file (string-append tgt-dir stripped-file))) + (format #t "`~a' -> `~a'~%" file tgt-file) + (install-file file (dirname tgt-file)))) + (find-files src-dir install-file?))) + #t) =20 (define* (move-doc #:key outputs #:allow-other-keys) "Move info files from the ELPA package directory to the info directory." --=20 2.12.2 =