Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package comfyui for openSUSE:Factory checked 
in at 2026-08-22 21:35:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/comfyui (Old)
 and      /work/SRC/openSUSE:Factory/.comfyui.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "comfyui"

Sat Aug 22 21:35:37 2026 rev:2 rq:1373109 version:0.33.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/comfyui/comfyui.changes  2026-08-21 
17:02:06.920734691 +0200
+++ /work/SRC/openSUSE:Factory/.comfyui.new.1258/comfyui.changes        
2026-08-22 21:37:45.447681427 +0200
@@ -1,0 +2,14 @@
+Sat Aug 22 14:58:16 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Fix the very first start of comfyui aborting with a
+  FileNotFoundError instead of serving the web UI: add
+  comfyui-create-custom-nodes-directory.patch, which creates the
+  custom_nodes directory in the per-user base directory
+- Load the custom nodes shipped with ComfyUI again: the per-user
+  base directory had hidden them, so SaveImageWebsocket, used by
+  the packaged websocket API example, was unavailable
+- Do not create the per-user directory tree for comfyui --help
+- Require python-comfyui-frontend-package 1.50.6 (XSS fixes
+  GHSA-2gr5-vw2p-2hcf, GHSA-j6xv-rx8r-mh6j, GHSA-8xxc-66vh-2pf3)
+
+-------------------------------------------------------------------

New:
----
  comfyui-create-custom-nodes-directory.patch
  comfyui-packaged-paths.yaml

----------(New B)----------
  New:  FileNotFoundError instead of serving the web UI: add
  comfyui-create-custom-nodes-directory.patch, which creates the
  custom_nodes directory in the per-user base directory
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ comfyui.spec ++++++
--- /var/tmp/diff_new_pack.9AFxQy/_old  2026-08-22 21:37:46.129705807 +0200
+++ /var/tmp/diff_new_pack.9AFxQy/_new  2026-08-22 21:37:46.131705878 +0200
@@ -27,6 +27,9 @@
 URL:            https://github.com/Comfy-Org/ComfyUI
 Source0:        
https://github.com/Comfy-Org/ComfyUI/archive/refs/tags/v%{version}.tar.gz#/ComfyUI-%{version}.tar.gz
 Source1:        comfyui.sh
+Source2:        comfyui-packaged-paths.yaml
+# PATCH-FIX-UPSTREAM comfyui-create-custom-nodes-directory.patch 
gh#Comfy-Org/ComfyUI#8110 gh#Comfy-Org/ComfyUI#8434 [email protected] -- create 
custom_nodes under --base-directory, main.py lists it before the server starts
+Patch0:         comfyui-create-custom-nodes-directory.patch
 BuildRequires:  %{python_module base}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
@@ -43,7 +46,7 @@
 Requires:       %{primary_python}-comfy-aimdo = 0.4.13
 Requires:       %{primary_python}-comfy-kitchen = 0.2.31
 Requires:       %{primary_python}-comfyui-embedded-docs >= 0.5.9
-Requires:       %{primary_python}-comfyui-frontend-package = 1.49.6
+Requires:       %{primary_python}-comfyui-frontend-package = 1.50.6
 Requires:       %{primary_python}-comfyui-workflow-templates = 0.11.44
 Requires:       %{primary_python}-einops
 Requires:       %{primary_python}-filelock
@@ -80,8 +83,9 @@
 
 The packaged tree is read-only. Models, custom nodes, input, output, temp
 and user state live under the per-user --base-directory (default:
-$XDG_DATA_HOME/comfyui or ~/.local/share/comfyui). ComfyUI-Manager is not
-enabled.
+$XDG_DATA_HOME/comfyui or ~/.local/share/comfyui); the custom nodes shipped
+with ComfyUI itself are loaded from the package tree as well.
+ComfyUI-Manager is not enabled.
 
 %prep
 %autosetup -p1 -n ComfyUI-%{version}
@@ -126,6 +130,10 @@
     -e 's|@@DATADIR@@|%{_datadir}/comfyui|g' \
     %{SOURCE1} > %{buildroot}%{_bindir}/comfyui
 chmod 0755 %{buildroot}%{_bindir}/comfyui
+# --base-directory moves the custom_nodes search path into the user profile;
+# register the packaged one as an additional path so both are loaded.
+sed -e 's|@@DATADIR@@|%{_datadir}/comfyui|g' \
+    %{SOURCE2} > %{buildroot}%{_datadir}/comfyui/comfyui-packaged-paths.yaml
 %fdupes %{buildroot}%{_datadir}/comfyui
 
 %check
@@ -135,6 +143,15 @@
 # BuildRequires resolve in this project.
 sh -n %{buildroot}%{_bindir}/comfyui
 %python_expand $python %{buildroot}%{_datadir}/comfyui/main.py --help
+# The launcher must not touch the filesystem for a query-only invocation.
+xdg=$(mktemp -d)
+XDG_DATA_HOME="$xdg" sh %{buildroot}%{_bindir}/comfyui --help >/dev/null 2>&1 
|| :
+test -z "$(ls -A "$xdg")"
+rm -rf "$xdg"
+# The extra search path must resolve to the packaged custom nodes.
+grep -q '^  custom_nodes: %{_datadir}/comfyui/custom_nodes$' \
+     %{buildroot}%{_datadir}/comfyui/comfyui-packaged-paths.yaml
+test -f %{buildroot}%{_datadir}/comfyui/custom_nodes/websocket_image_save.py
 
 %files
 %license LICENSE

++++++ comfyui-create-custom-nodes-directory.patch ++++++
From: Martin Pluskal <[email protected]>
Subject: Create the custom_nodes directory of a fresh base directory

--base-directory relocates custom_nodes onto a per-user path, but nothing
creates it. main.py listdirs it before the server starts, so the very first
run of a fresh profile dies with FileNotFoundError. Extend the existing
input-directory bootstrap in folder_paths to cover custom_nodes too.

Reported upstream as Comfy-Org/ComfyUI#8110 and Comfy-Org/ComfyUI#8434.
Same fix as nixpkgs carries in use-writable-runtime-paths.patch.

Index: ComfyUI-0.33.3/folder_paths.py
===================================================================
--- ComfyUI-0.33.3.orig/folder_paths.py
+++ ComfyUI-0.33.3/folder_paths.py
@@ -42,7 +42,8 @@ folder_names_and_paths["upscale_models"]
 
 folder_names_and_paths["latent_upscale_models"] = ([os.path.join(models_dir, 
"latent_upscale_models")], supported_pt_extensions)
 
-folder_names_and_paths["custom_nodes"] = ([os.path.join(base_path, 
"custom_nodes")], set())
+custom_nodes_directory = os.path.join(base_path, "custom_nodes")
+folder_names_and_paths["custom_nodes"] = ([custom_nodes_directory], set())
 
 folder_names_and_paths["datasets"] = ([os.path.join(base_path, "datasets")], 
set())
 
@@ -113,11 +114,12 @@ def map_legacy(folder_name: str) -> str:
               "clip": "text_encoders"}
     return legacy.get(folder_name, folder_name)
 
-if not os.path.exists(input_directory):
-    try:
-        os.makedirs(input_directory)
-    except:
-        logging.error("Failed to create input directory")
+for default_directory in (input_directory, custom_nodes_directory):
+    if not os.path.exists(default_directory):
+        try:
+            os.makedirs(default_directory)
+        except:
+            logging.error(f"Failed to create {default_directory}")
 
 def set_output_directory(output_dir: str) -> None:
     global output_directory

++++++ comfyui-packaged-paths.yaml ++++++
# Installed by the comfyui package; loaded by the comfyui launcher.
#
# The launcher passes --base-directory so that models, custom_nodes, input,
# output, temp and user live in a writable per-user tree. That also moves the
# custom_nodes search path off the read-only package tree, which would hide
# the custom nodes shipped with ComfyUI itself. Register the packaged
# directory as an additional search path.
#
# is_default keeps the packaged directory first in the search list. Custom
# nodes are registered last-wins, so a user node of the same name still
# overrides the packaged one.
comfyui-packaged:
  is_default: true
  custom_nodes: @@DATADIR@@/custom_nodes

++++++ comfyui.sh ++++++
--- /var/tmp/diff_new_pack.9AFxQy/_old  2026-08-22 21:37:46.208708631 +0200
+++ /var/tmp/diff_new_pack.9AFxQy/_new  2026-08-22 21:37:46.214708845 +0200
@@ -8,6 +8,7 @@
 
 has_base=0
 has_db=0
+query_only=0
 base=""
 prev=""
 for arg in "$@"; do
@@ -28,10 +29,13 @@
         --database-url|--database-url=*)
             has_db=1
             ;;
+        -h|--help|--version|--list-feature-flags)
+            query_only=1
+            ;;
     esac
 done
 
-if [ "$has_base" -eq 0 ]; then
+if [ -z "$base" ]; then
     if [ -n "${XDG_DATA_HOME:-}" ]; then
         base=$XDG_DATA_HOME/comfyui
     elif [ -n "${HOME:-}" ]; then
@@ -39,23 +43,36 @@
     else
         base=/tmp/comfyui
     fi
-    mkdir -p "$base" || exit 1
+fi
+
+# main.py exits inside argparse for the query-only flags, so the launcher
+# must not create anything either.
+if [ "$query_only" -eq 0 ]; then
+    if [ "$has_base" -eq 0 ]; then
+        mkdir -p "$base" || exit 1
+    fi
+    if [ "$has_db" -eq 0 ]; then
+        mkdir -p "$base/user" || exit 1
+    fi
+fi
+
+if [ "$has_base" -eq 0 ]; then
     set -- --base-directory "$base" "$@"
 fi
 
 if [ "$has_db" -eq 0 ]; then
-    if [ -z "$base" ]; then
-        if [ -n "${XDG_DATA_HOME:-}" ]; then
-            base=$XDG_DATA_HOME/comfyui
-        elif [ -n "${HOME:-}" ]; then
-            base=$HOME/.local/share/comfyui
-        else
-            base=/tmp/comfyui
-        fi
-    fi
-    mkdir -p "$base/user" || exit 1
     set -- --database-url "sqlite:///$base/user/comfyui.db" "$@"
 fi
 
+# A base directory relocates custom_nodes into the per-user tree and hides
+# the nodes shipped in the read-only package. Register the packaged
+# directory as an additional search path so both are loaded. Appended
+# rather than prepended: the option takes nargs='+' and would otherwise
+# swallow a following bare argument. Removing the file disables the extra
+# path instead of aborting the server.
+if [ -f "$datadir/comfyui-packaged-paths.yaml" ]; then
+    set -- "$@" --extra-model-paths-config 
"$datadir/comfyui-packaged-paths.yaml"
+fi
+
 exec "$python" "$datadir/main.py" "$@"
 

Reply via email to