1
0
mirror of https://github.com/vladmandic/sdnext.git synced 2026-01-27 15:02:48 +03:00
Files
sdnext/modules/framepack/framepack_install.py
Vladimir Mandic c559e26616 add builtin framepack
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2025-07-08 15:47:07 -04:00

76 lines
2.3 KiB
Python

import os
import shutil
import git as gitpython
from installer import install, git
from modules.shared import log
def rename(src:str, dst:str):
import errno
try:
os.rename(src, dst)
except OSError as e:
if e.errno == errno.EXDEV: # cross-device
shutil.move(src, dst)
else:
raise e
def install_requirements(attention:str='SDPA'):
install('av')
import av
import torchvision
torchvision.io.video.av = av
if attention == 'Xformers':
log.debug('FramePack install: xformers')
install('xformers')
elif attention == 'FlashAttention':
log.debug('FramePack install: flash-attn')
install('flash-attn')
elif attention == 'SageAttention':
log.debug('FramePack install: sageattention')
install('sageattention')
def git_clone(git_repo:str, git_dir:str, tmp_dir:str):
if os.path.exists(git_dir):
return
try:
shutil.rmtree(tmp_dir, True)
args = {
'url': git_repo,
'to_path': tmp_dir,
'allow_unsafe_protocols': True,
'allow_unsafe_options': True,
'filter': ['blob:none'],
}
ssh = os.environ.get('GIT_SSH_COMMAND', None)
if ssh:
args['env'] = {'GIT_SSH_COMMAND':ssh}
log.info(f'FramePack install: url={args} path={git_repo}')
with gitpython.Repo.clone_from(**args) as repo:
repo.remote().fetch(verbose=True)
for submodule in repo.submodules:
submodule.update()
rename(tmp_dir, git_dir)
except Exception as e:
log.error(f'FramePack install: {e}')
shutil.rmtree(tmp_dir, True)
def git_update(git_dir:str, git_commit:str):
if not os.path.exists(git_dir):
return
try:
with gitpython.Repo(git_dir) as repo:
commit = repo.commit()
if f'{commit}' != git_commit:
log.info(f'FramePack update: path={repo.git_dir} current={commit} target={git_commit}')
repo.git.fetch(all=True)
repo.git.reset('origin', hard=True)
git(f'checkout {git_commit}', folder=git_dir, ignore=True, optional=True)
else:
log.debug(f'FramePack version: sha={commit}')
except Exception as e:
log.error(f'FramePack update: {e}')