Yesterday one of my patches included a tiny bug. In the Emacs source
directory:

$ env GNULIB_TOOL_IMPL=py  ./admin/merge-gnulib

Copying file lib/gl_openssl.h
Traceback (most recent call last):
  File "/home/collin/.local/src/emacs/../gnulib/pygnulib/main.py", line 1298, 
in <module>
    main()
  File "/home/collin/.local/src/emacs/../gnulib/pygnulib/main.py", line 881, in 
main
    importer.execute(filetable, transformers)
  File "/home/collin/.local/src/gnulib/pygnulib/GLImport.py", line 1130, in 
execute
    self.assistant.add_or_update(already_present)
  File "/home/collin/.local/src/gnulib/pygnulib/GLFileSystem.py", line 398, in 
add_or_update
    os.remove(tmpfile)
FileNotFoundError: [Errno 2] No such file or directory: 'lib/gl_openssl.h.tmp'

It seems that this only occurs in packages with gnulib sources contained
in them. When the files are the same as what is currently in gnulib the
temporary file is not created. This should fix the issue:

diff --git a/pygnulib/GLFileSystem.py b/pygnulib/GLFileSystem.py
index 7c6c9a15ef..c199235e2e 100644
--- a/pygnulib/GLFileSystem.py
+++ b/pygnulib/GLFileSystem.py
@@ -395,7 +395,8 @@ class GLFileAssistant(object):
             # frequently that developers don't put autogenerated files under 
version control.
             self.add(lookedup, tmpflag, tmpfile)
             self.addFile(rewritten)
-        os.remove(tmpfile)
+        if isfile(tmpfile):
+            os.remove(tmpfile)

The corresponding lines in gnulib-tool.sh use 'rm -f "$tmpfile"' to
silence warnings when files do not exist.

Collin

>From 2861a2b7295bca64b0560c59ffd8b8b959693c62 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Sat, 16 Mar 2024 20:43:00 -0700
Subject: [PATCH 3/3] gnulib-tool.py: Don't try to remove files that don't
 exist.

* pygnulib/GLFileSystem.py (GLFileSystem.add_or_update): Check if the
temporary file exists before trying to remove it.
---
 ChangeLog                | 6 ++++++
 pygnulib/GLFileSystem.py | 3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 926e8b20a2..be20514df2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2024-03-16  Collin Funk  <collin.fu...@gmail.com>
+
+	gnulib-tool.py: Don't try to remove files that don't exist.
+	* pygnulib/GLFileSystem.py (GLFileSystem.add_or_update): Check if the
+	temporary file exists before trying to remove it.
+
 2024-03-16  Collin Funk  <collin.fu...@gmail.com>
 
 	gnulib-tool.py: Follow gnulib-tool changes, part 61.
diff --git a/pygnulib/GLFileSystem.py b/pygnulib/GLFileSystem.py
index 7c6c9a15ef..c199235e2e 100644
--- a/pygnulib/GLFileSystem.py
+++ b/pygnulib/GLFileSystem.py
@@ -395,7 +395,8 @@ class GLFileAssistant(object):
             # frequently that developers don't put autogenerated files under version control.
             self.add(lookedup, tmpflag, tmpfile)
             self.addFile(rewritten)
-        os.remove(tmpfile)
+        if isfile(tmpfile):
+            os.remove(tmpfile)
 
     def super_update(self, basename, tmpfile):
         '''GLFileAssistant.super_update(basename, tmpfile) -> tuple
-- 
2.44.0

Reply via email to