Files
ports/misc/comfyui/Makefile
T
2026-07-01 22:05:27 -07:00

101 lines
4.9 KiB
Makefile

PORTNAME= comfyui
DISTVERSIONPREFIX= v
DISTVERSION= 0.27.0
CATEGORIES= misc python # machine-learning
MAINTAINER= yuri@FreeBSD.org
COMMENT= Powerful and modular stable diffusion GUI with graph/nodes interface
WWW= https://www.comfy.org/ \
https://github.com/Comfy-Org/ComfyUI
LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/LICENSE
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiohttp>=3.11.8:www/py-aiohttp@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}alembic>0:databases/py-alembic@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}av>=16.0.0:multimedia/py-av@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}blake3>0:security/py-blake3@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}comfy-aimdo>=0.4.10:misc/py-comfy-aimdo@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}comfy-kitchen>=0.2.16:misc/py-comfy-kitchen@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}comfyui-embedded-docs>=0.5.6:misc/py-comfyui-embedded-docs@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}comfyui-frontend-package>=1.45.20:misc/py-comfyui-frontend-package@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}comfyui-workflow-templates>=0.11.1:misc/py-comfyui-workflow-templates@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}einops>0:misc/py-einops@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}filelock>0:sysutils/py-filelock@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}glfw>0:graphics/py-glfw@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}kornia>=0.7.1:graphics/py-kornia@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}numpy>=1.25.0:math/py-numpy@${PY_FLAVOR} \
${PY_PILLOW} \
${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pydantic-settings>=2.0:devel/py-pydantic-settings@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pydantic2>=2.0:devel/py-pydantic2@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}PyOpenGL>0:graphics/py-PyOpenGL@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pytorch>0:misc/py-pytorch@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pyyaml>0:devel/py-pyyaml@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}safetensors>=0.4.2:misc/py-safetensors@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}scipy>0:science/py-scipy@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}sentencepiece>0:textproc/py-sentencepiece@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}simpleeval>=1.0.0:devel/py-simpleeval@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}spandrel>0:misc/py-spandrel@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}sqlalchemy20>0:databases/py-sqlalchemy20@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}tokenizers>=0.13.3:textproc/py-tokenizers@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}torchaudio>0:audio/py-torchaudio@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}torchsde>0:math/py-torchsde@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}torchvision>0:misc/py-torchvision@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}tqdm>0:misc/py-tqdm@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}transformers>=4.50.3:misc/py-transformers@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}yarl>=1.18.0:www/py-yarl@${PY_FLAVOR}
USES= python shebangfix
USE_GITHUB= yes
GH_ACCOUNT= Comfy-Org
GH_PROJECT= ComfyUI
SHEBANG_FILES= *.py
NO_ARCH= yes
NO_BUILD= yes
COMFYUI_DIR= ${PREFIX}/share/comfyui
# comfyui needs to write into some subfolders of its installation directory, so we set the writable dir to /var/db/comfyui and create symlinks to there
WRITABLE_DIR= /var/db/${PORTNAME}
do-install:
# copy all files to ${COMFYUI_DIR}
${MKDIR} ${STAGEDIR}${COMFYUI_DIR}
cd ${WRKSRC} && ${COPYTREE_SHARE} . ${STAGEDIR}${COMFYUI_DIR}
# create the comfyui script
( \
${ECHO} '#!/bin/sh' && \
${ECHO} ${PYTHON_CMD} ${COMFYUI_DIR}/main.py --disable-dynamic-vram --cpu '"$$@"' \
) > ${STAGEDIR}${PREFIX}/bin/comfyui
${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/comfyui
# remove unnecessary files
${RM} -r ${STAGEDIR}${COMFYUI_DIR}/.git*
${RM} -r ${STAGEDIR}${COMFYUI_DIR}/.ci
${RM} -r ${STAGEDIR}${COMFYUI_DIR}/.coderabbit.yaml
# create writable symlinks
${MKDIR} ${STAGEDIR}${WRITABLE_DIR}
${MKDIR} ${STAGEDIR}${WRITABLE_DIR}/user
${MKDIR} ${STAGEDIR}${WRITABLE_DIR}/user/default
${MKDIR} ${STAGEDIR}${WRITABLE_DIR}/temp
${RLN} ${STAGEDIR}${WRITABLE_DIR}/user ${STAGEDIR}${COMFYUI_DIR}/user
${RLN} ${STAGEDIR}${WRITABLE_DIR}/temp ${STAGEDIR}${COMFYUI_DIR}/temp
.for dir in audio_encoders checkpoints clip clip_vision controlnet diffusers diffusion_models embeddings gligen hypernetworks \
latent_upscale_models loras model_patches photomaker style_models text_encoders unet upscale_models vae vae_approx
${RM} -r ${STAGEDIR}${COMFYUI_DIR}/models/${dir}
${MKDIR} ${STAGEDIR}${WRITABLE_DIR}/models/${dir}
${RLN} ${STAGEDIR}${WRITABLE_DIR}/models/${dir} ${STAGEDIR}${COMFYUI_DIR}/models/${dir}
.endfor
# move installed files to the writable location
${MV} ${STAGEDIR}${COMFYUI_DIR}/input ${STAGEDIR}${WRITABLE_DIR}/input
${RLN} ${STAGEDIR}${WRITABLE_DIR}/input ${STAGEDIR}${COMFYUI_DIR}/input
${MKDIR} ${STAGEDIR}${WRITABLE_DIR}/output
${RM} -r ${STAGEDIR}${COMFYUI_DIR}/output
${RLN} ${STAGEDIR}${WRITABLE_DIR}/output ${STAGEDIR}${COMFYUI_DIR}/output
.include <bsd.port.mk>