tree 8c71e1b85c775ac560154a3c9cf4072c360f5492
parent 4eed5466fb7062e196c4fa01495e1dfe0cf5c850
author Régis Desgroppes <rdesgroppes@gmail.com> 1762440452 +0100
committer GitHub <noreply@github.com> 1762440452 -0500
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJpDLUECRC1aQ7uu5UhlAAAHPcQACbibFa7pvQFMuelp9Oztqpv
 93p3/sTB//xpVNOPOVf1t1QaJqr+cz9+dd6FLPR/ep0zgQnH8SUYjIqb1021CR0M
 3p1ynHQ4Fc1sHlDieuBFLpw1jfwiLnC2ANI+jTI3m2Y5xqc+jkIJJV6xp5wEjWEz
 /4uXI0jYwDRSPOGRVldq7zw7RjuW8OMjU6wnCK8eNBrEZUmWmlpJGzGVp3TJJTTo
 94dLHQDRS6yjAllOKmevwoKBDvy42/Hm9+mioJSqUlhhOsnYRo4Z4ImL4+ClpKpI
 TqxWrhb30fTibC9K2RDpd4MA4xK9kz8Kddr2SEsWHDkNUsjLJX22ra4OGEtIjZkL
 tIm6uWWig8uFCOu7yVZ60bjm1CewJCmSRA67OIS/ak1uR8eK6CE278SHuhLBjmko
 KNpy9ZLLqvKGctMt9qY/7orJkMF/YjkGPsB98xTsKlfbmBo0YB5MOnteg8Ta9pBN
 BqeMOXgz/HhHm5xVRLJpdssYsnBZas10srhxO24zgUbzCok6MEkLW108Ahjsrd0E
 Ug9jKRG8NcK7ob26Eq5Ar1XwiQwQwEV/oY0tIJKngq2kw1iGftyF7Qqc3xPwoR0B
 +BzhbFzcq5MNE4/XyAxWNjQkZ5L+MogKaraMJ68RM7ebWC4KBOXhrb4v/tU5KxaP
 gvsnSFciO5rGc/UKS+4Z
 =OyyQ
 -----END PGP SIGNATURE-----
 

Fix Windows file locking issue in `pkg_install` (#983)

`NamedTemporaryFile` turns out to lock the file on Windows, preventing
`os.replace` from moving it:
```
windows> bazel run --enable_runfiles //[redacted]:install -- --destdir=d:\est
[...]
INFO: Running command line: [redacted]/install.exe <args omitted>
INFO: Installing to [redacted]
Traceback (most recent call last):
  File "[redacted]\install_install_script.py", line 92, in _do_file_copy
    os.replace(tmp_file.name, dest)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '[redacted]\\tmp4wd6gg1t' -> 'd:\est/filename.ext'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "[redacted]\install_install_script.py", line 307, in <module>
    sys.exit(main(sys.argv))
             ^^^^^^^^^^^^^^
  File "[redacted]\install_install_script.py", line 303, in main
    installer.do_the_thing()
  File "[redacted]\install_install_script.py", line 206, in do_the_thing
    self._install_file(entry)
  File "[redacted]\install_install_script.py", line 126, in _install_file
    self._do_file_copy(entry.src, entry.dest)
  File "[redacted]\install_install_script.py", line 94, in _do_file_copy
    pathlib.Path(tmp_file.name).unlink(missing_ok=True)
  File "[redacted]\rules_python++python+python_3_12_x86_64-pc-windows-msvc\Lib\pathlib.py", line 1342, in unlink
    os.unlink(self)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '[redacted]\\tmp4wd6gg1t'

Intuition: _Any problem in computer science can be solved with another
level of indirection._ (https://bwlampson.site/Slides/TuringLecture.htm)

The change therefore proposes to use `TemporaryDirectory` instead of
`NamedTemporaryFile` as an indirection to avoid a file lock from being
held, which allows the file to be freely written and moved on all
platforms while maintaining the same atomic replace behavior for macOS
code-signed binaries introduced in commit
31cab20079c1f2919f569119272923dea2e679c8 (#941).