Add recipe for dearpygui and dependencies#32679
Add recipe for dearpygui and dependencies#32679julian-belina wants to merge 25 commits intoconda-forge:mainfrom
Conversation
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Hi! This is the friendly automated conda-forge-linting service. I wanted to let you know that I linted all conda-recipes in your PR ( Here's what I've got... For recipes/dearpygui/recipe.yaml:
This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/23369342050. Examine the logs at this URL for more detail. |
|
Hi! This is the staged-recipes linter and your PR looks excellent! 🚀 |
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Add build.sh and bld.bat to properly invoke CMake with conda compiler environment variables (CMAKE_ARGS) - Add make (unix) and ninja (win) build dependencies - Add API availability test (headless-safe, no display needed) - Full GUI tests cannot run headless (upstream CI has them disabled too) Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( I do have some suggestions for making it better though... For recipes/dearpygui/recipe.yaml:
This message was generated by GitHub Actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/23369710579. Examine the logs at this URL for more detail. |
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
The GitHub tarball does not include git submodules. Added separate source entries for glfw, imgui, implot, and freetype at the exact commits pinned by v2.2.0. Removed glfw from host/run deps since it is built from source as a CMake subdirectory. Updated license to include all bundled libraries (MIT, Zlib, FTL). Co-Authored-By: Claude Opus 4.6 <[email protected]>
rattler-build v1 recipe format uses target_directory, not folder. Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Add xorg X11 development packages (libxrandr, libxinerama, libxcursor, libxi) required by GLFW on Linux - Add CMAKE_POLICY_VERSION_MINIMUM=3.5 on Windows to handle vendored freetype's old CMakeLists.txt Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Add libxcrypt to Linux host deps (provides -lcrypt needed by linker) - Patch setup.py in both build scripts to skip its own CMake invocation, preventing setup.py from re-running CMake with hardcoded paths after our conda build already compiled everything correctly Co-Authored-By: Claude Opus 4.6 <[email protected]>
CMake outputs to cmake-build-local/DearPyGui/ but setup.py's package_data expects the .so/.pyd in DearPyGui/ at the source root. Without this copy, the wheel is built without the native extension. Co-Authored-By: Claude Opus 4.6 <[email protected]>
The build scripts were incorrectly copying the built library to dearpygui/ and patching out the entire build command. This failed because setup.py packages from output/, deletes cmake-build-local before pip install, and on Windows expects a Release/ subdirectory. Now we patch setup.py surgically: skip cmake subprocess calls but keep the shutil.copy that moves the library into output/dearpygui/. On Windows, create the Release/ subdir that setup.py expects for the Visual Studio layout (our Ninja build doesn't create it). Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Hello @conda-forge/help-python-c, If so, what other options do I have? The build process is implemented in the CMake files of DearPyGui at https://github.com/hoffstadt/DearPyGui/blob/master/src/distribution.cmake. If this build is okay, a merge would be highly appreciated. |
Yes, that is the definition of vendoring, at least in the conda-forge sense. If you embed libraries inside of the package instead of reusing the same libraries as installed by conda-forge, you are vendoring those.
The typical process done for upstream projects that vendor libraries like |
|
Thanks for the explanation. I see what I can do. |
Patch CMake build to use find_package(glfw3) on Linux/macOS and find_package(Freetype) on Windows instead of compiling from vendored source via add_subdirectory. This addresses conda-forge review feedback about not vendoring third-party libraries. Co-Authored-By: Claude Opus 4.6 <[email protected]>
The conda-forge FindFreetype module does not create the
Freetype::Freetype imported target. Use ${FREETYPE_LIBRARIES}
and ${FREETYPE_INCLUDE_DIRS} variables instead.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
…into add-dearpygui
…reetype
The previous commit accidentally dropped the removal of add_subdirectory("freetype")
from the thirdparty hunk, causing the patch to fail on all platforms. This restores
the correct context while keeping the Freetype::Freetype imported target fix for
Windows linking.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Add new recipes for DearPyGui's dependencies that aren't on conda-forge or need the imgui docking branch: - imgui-docking: Dear ImGui v1.91.0 from the docking branch with platform-specific backends (DX11/Win32, Metal/GLFW, OpenGL3/GLFW) and freetype support on Windows - implot-docking: ImPlot plotting library linked against imgui-docking - imnodes: Node editor extension for Dear ImGui - imguifiledialog: File dialog for Dear ImGui Update dearpygui recipe to link against these system packages instead of compiling third-party sources directly into the extension module. This eliminates vendoring of imgui, implot, imnodes, ImGuiFileDialog, gl3w, glfw, and freetype. Co-Authored-By: Claude Opus 4.6 <[email protected]>
The previous patch was generated against a different version of DearPyGui (possibly main branch) which had different cmake_minimum_required versions, different IMGUI_USER_CONFIG header names, and additional cmake definitions. Regenerated the patch from the actual v2.2.0 release tarball to ensure proper context matching. Uses surgical hunks instead of full-file replacements to avoid BOM/encoding-related failures. Co-Authored-By: Claude Opus 4.6 <[email protected]>
1. Linux: imnodes v0.5 tag lacks ImNodesCol_GridLinePrimary enum that DearPyGui uses. Use the specific commit (d88f99...) which has it. 2. macOS: imgui-docking Metal backend linker failure - missing Obj-C runtime symbols. Add Foundation, CoreFoundation frameworks and objc library to Metal backend linking. 3. Windows: imguifiledialog (and other downstream packages) fail CMake configure because imgui-config.cmake calls find_dependency(Freetype) when built with IMGUI_FREETYPE=ON. Add freetype as explicit host dependency on Windows for all packages that depend on imgui-docking. Co-Authored-By: Claude Opus 4.6 <[email protected]>
1. Keep thirdparty/gl3w/ in sources and includes - it's a small OpenGL function loader used by DearPyGui's Linux platform code, not a vendored library. 2. Fix #include <misc/cpp/imgui_stdlib.h> → <imgui_stdlib.h> in 6 DearPyGui source files. Our imgui-docking package installs the header flat in include/, not in the original misc/cpp/ subdirectory. 3. Add -framework QuartzCore to imgui-docking Metal backend linking for CAMetalLayer symbol on macOS. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Summary
Checklist
url) rather than a repo is used🤖 Generated with Claude Code