From 6713806436d64e5174f6495e1416cef1f06605ed Mon Sep 17 00:00:00 2001 From: Evgenii Klimov Date: Sat, 8 Nov 2025 18:04:11 +0000 Subject: [PATCH] gnu: Change tree-sitter-delete-generated-files procedure. * gnu/packages/tree-sitter.scm (tree-sitter-delete-generated-files): Check existance before deleting generated files. Not every package has all files that we want to delete. This change allows us to always apply this procedure at the end of a custom #:get-cleanup-snippet. This would be especially important if the upstream decides to change the structure, which would require us to revisit every package that doesn't use this procedure. Change-Id: I0847ccae5053d91e7e56e2c490b51d4396eb5b13 Signed-off-by: Liliana Marie Prikler --- gnu/packages/tree-sitter.scm | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm index e417a6f07bc299c61e2117f8606ce1b2756851cf..1a8c05b287d50c6cc8c73e891886f1dfd209b8a2 100644 --- a/gnu/packages/tree-sitter.scm +++ b/gnu/packages/tree-sitter.scm @@ -45,7 +45,8 @@ #:use-module (guix git-download) #:use-module (guix i18n) #:use-module (guix packages) - #:use-module (guix utils)) + #:use-module (guix utils) + #:use-module (ice-9 exceptions)) (define-public tree-sitter (package @@ -204,15 +205,22 @@ This package includes the @command{tree-sitter} command-line tool.") (define (tree-sitter-delete-generated-files grammar-directories) #~(begin (use-modules (guix build utils)) - (delete-file "binding.gyp") - (delete-file-recursively "bindings") + (define (delete-file-if-exists file) + ;; Not every package has all files that we want to delete. + (catch 'system-error + (lambda () (delete-file-recursively file)) + (lambda args + (unless (= ENOENT (system-error-errno args)) + (apply throw args))))) + (delete-file-if-exists "binding.gyp") + (delete-file-if-exists "bindings") (for-each (lambda (lang) (with-directory-excursion lang - (delete-file "src/grammar.json") - (delete-file "src/node-types.json") - (delete-file "src/parser.c") - (delete-file-recursively "src/tree_sitter"))) + (delete-file-if-exists "src/grammar.json") + (delete-file-if-exists "src/node-types.json") + (delete-file-if-exists "src/parser.c") + (delete-file-if-exists "src/tree_sitter"))) '#$grammar-directories))) (define* (tree-sitter-grammar