Fix docker tmp/ and extensions/ handling for docker. might also work for symlinks
This commit is contained in:
parent
98947d173e
commit
671c0e42b4
|
@ -9,6 +9,8 @@ import git
|
||||||
|
|
||||||
import gradio as gr
|
import gradio as gr
|
||||||
import html
|
import html
|
||||||
|
import shutil
|
||||||
|
import errno
|
||||||
|
|
||||||
from modules import extensions, shared, paths
|
from modules import extensions, shared, paths
|
||||||
|
|
||||||
|
@ -132,7 +134,18 @@ def install_extension_from_url(dirname, url):
|
||||||
repo = git.Repo.clone_from(url, tmpdir)
|
repo = git.Repo.clone_from(url, tmpdir)
|
||||||
repo.remote().fetch()
|
repo.remote().fetch()
|
||||||
|
|
||||||
os.rename(tmpdir, target_dir)
|
try:
|
||||||
|
os.rename(tmpdir, target_dir)
|
||||||
|
except OSError as err:
|
||||||
|
# TODO what does this do on windows? I think it'll be a different error code but I don't have a system to check it
|
||||||
|
# Shouldn't cause any new issues at least but we probably want to handle it there too.
|
||||||
|
if err.errno == errno.EXDEV:
|
||||||
|
# Cross device link, typical in docker or when tmp/ and extensions/ are on different file systems
|
||||||
|
# Since we can't use a rename, do the slower but more versitile shutil.move()
|
||||||
|
shutil.move(tmpdir, target_dir)
|
||||||
|
else:
|
||||||
|
# Something else, not enough free space, permissions, etc. rethrow it so that it gets handled.
|
||||||
|
raise(err)
|
||||||
|
|
||||||
import launch
|
import launch
|
||||||
launch.run_extension_installer(target_dir)
|
launch.run_extension_installer(target_dir)
|
||||||
|
|
Loading…
Reference in New Issue