0

Fix rendering onto mounted CIFS shares

You still shouldn't do it for performance reasons but I guess
now you can do it in theory. Yay.
This commit is contained in:
Nicolas F
2021-07-10 19:58:11 +02:00
parent dab3268b3b
commit 86b241a5f7
2 changed files with 21 additions and 12 deletions

View File

@@ -181,6 +181,10 @@ top-level directory.
od_fd = os.open(self.outputdir, os.O_DIRECTORY) od_fd = os.open(self.outputdir, os.O_DIRECTORY)
try: try:
os.symlink("markers", "icons", target_is_directory=True, dir_fd=od_fd) os.symlink("markers", "icons", target_is_directory=True, dir_fd=od_fd)
except OSError:
# Example setup where this happens:
# Linux renders onto Windows CIFS share
logging.warning("Could not create the icons symlink")
finally: finally:
os.close(od_fd) os.close(od_fd)
# write a dummy baseMarkers.js if none exists # write a dummy baseMarkers.js if none exists

View File

@@ -47,18 +47,23 @@ def does_chmod_work(dir_to_test):
return chmod_works return chmod_works
def does_rename_work(dir_to_test): def does_rename_work(dir_to_test):
try:
with tempfile.NamedTemporaryFile(dir=dir_to_test) as f1: with tempfile.NamedTemporaryFile(dir=dir_to_test) as f1:
with tempfile.NamedTemporaryFile(dir=dir_to_test) as f2: with tempfile.NamedTemporaryFile(dir=dir_to_test) as f2:
try: try:
os.rename(f1.name,f2.name) os.rename(f1.name,f2.name)
except OSError: except OSError:
renameworks = False renameworks = False
logging.debug("Detected that overwriting renames do NOT work in %r" % dir_to_test) logging.debug("Detected that overwriting renames do NOT work in %r"
% dir_to_test)
else: else:
renameworks = True renameworks = True
logging.debug("Detected that overwriting renames work in %r" % dir_to_test) logging.debug("Detected that overwriting renames work in %r" % dir_to_test)
# re-make this file so it can be deleted without error # re-make this file so it can be deleted without error
open(f1.name, 'w').close() open(f1.name, 'w').close()
except FileNotFoundError:
# Special handling for CIFS, which simply cannot cope with any rename whatsoever
renameworks = False
return renameworks return renameworks
## useful recursive copy, that ignores common OS cruft ## useful recursive copy, that ignores common OS cruft