Remove packman dependencies#478
Open
JohnTwenty wants to merge 9 commits into
Open
Conversation
This change enables building PhysX on Linux without the packman package manager, using system-provided packages and tools instead. Changes: - Replace packman OpenGL/GLUT with system packages (libglut-dev, etc.) - Replace packman RapidJSON with system rapidjson-dev package - Add generate_projects_no_packman.sh script for packman-free builds - Update CMake files to use system packages on Linux - Update README.md with new prerequisites and build instructions Benefits: - No dependency on proprietary packman infrastructure - Uses standard system packages (apt-get installable) - Simpler build process for Linux users - Easier integration into standard Linux development workflows System Requirements (Linux): - cmake, clang, build-essential, curl - libglut-dev, libglu1-mesa-dev, libopengl-dev - rapidjson-dev - libx11-dev, libxext-dev Testing: - Verified all build configurations (debug, checked, profile, release) - Confirmed snippets build and link correctly - Tested with system CMake 3.28.3, Clang 18.1.3, Make 4.3 Note: The metadata generation feature (clang-physxmetadata) remains packman-dependent and is scheduled for removal in future work.
This commit completes the packman removal project by eliminating the last remaining packman dependency (clang-physxmetadata) for Linux builds. PhysX can now be built on Linux with ZERO packman dependencies! Changes: - dependencies.xml: Commented out clang-physxmetadata dependency * Auto-generated metadata files are already checked into the repository * The tool is only needed for regenerating metadata when API headers change * Not required for normal builds - generateMetaData.py: Added graceful handling for missing tool * Checks for PM_clangMetadata_PATH environment variable * Exits with informative message if tool not available * Explains that auto-generated files are already present - README.md: Updated build documentation * Clarified that packman-free builds are fully supported * Updated prerequisites and build instructions * Updated third-party software attribution table - PACKMAN_REMOVAL_PROGRESS.md: Updated progress documentation * Marked Phase 5 as complete * Added final summary and achievement documentation * All 5 phases now complete Build verification: - CMake generation: SUCCESS - Full build (checked config): SUCCESS (100%) - All 87+ snippet executables: BUILT - Metadata code compilation: SUCCESS (PX_SUPPORT_PVD=1) All packman dependencies eliminated: ✅ OpenGL/GLUT → System packages (libglut-dev, libopengl-dev) ✅ RapidJSON → System package (rapidjson-dev) ✅ Build tools → System tools (CMake, Clang, Make) ✅ Metadata generation → Not needed (files in repository) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Enhance the packman-free build script with upfront validation of required system packages. This prevents confusing compiler errors by failing early with clear, actionable error messages. Changes: - Check for required headers (rapidjson, OpenGL/GLUT, X11) before generation - Display exactly which packages are missing - Provide complete apt-get install command to fix the issue - Exit early if any prerequisites are not met Benefits: - Users get immediate feedback about missing dependencies - Clear error messages replace cryptic "file not found" compile errors - Reduces friction for new users setting up the build environment - Validates the documented prerequisites automatically Updated PACKMAN_REMOVAL_PROGRESS.md to document this improvement. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Author
|
Tested with gcc too, checked configs. |
Prepare comprehensive implementation plan for extending packman-free builds to Windows using Microsoft's vcpkg package manager. New Files: - generate_projects_vcpkg.bat - Windows batch script with prerequisite checks - CMAKE_VCPKG_CHANGES.md - Detailed CMake modification instructions - WINDOWS_TESTING_CHECKLIST.md - Step-by-step testing and implementation guide - README_WINDOWS_SECTION.md - Template for README.md Windows instructions Documentation: - Updated PACKMAN_REMOVAL_PROGRESS.md with Phase 6 plan Strategy: - Use vcpkg (Microsoft's C++ package manager) as Windows analog to Linux apt-get - Maintain backward compatibility with packman - Auto-detect vcpkg via CMAKE_TOOLCHAIN_FILE - Clear prerequisite validation before project generation Ready for Phase 2: Implementation and testing on Windows workstation. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Fix generate_projects_vcpkg.bat to properly use VCPKG_ROOT environment variable instead of resetting it - Update cmake_generate_projects.py to work without packman PM_PATHS variable in vcpkg mode - Add vcpkg detection to Windows CMake files for correct freeglut DLL and header paths - Convert Windows paths to CMake format to avoid backslash escape issues This enables packman-free builds on Windows using vcpkg package manager. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Document completion of Phase 6: Windows vcpkg support. - Updated status summary to show Linux + Windows support - Documented all fixes made to vcpkg integration - Added detailed testing results - Updated file change log with commit hash Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add vcpkg detection to SnippetTemplate.cmake and SnippetVehicleTemplate.cmake - Set correct FREEGLUT_PATH for vcpkg mode (installed/x64-windows) - Use vcpkg library paths: lib/freeglut.lib (release) and debug/lib/freeglutd.lib (debug) - Use packman library paths: lib/win64/freeglut*.lib (packman mode) - Fixes linker errors: LNK1104 cannot open file 'lib\win64\freeglut.lib' This completes vcpkg support for all snippet builds. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
JohnTwenty
commented
Feb 15, 2026
JohnTwenty
left a comment
Author
There was a problem hiding this comment.
Tested on windows too, seems to work.
…r interactive preset selection When no preset was passed on the command line, the script would prompt the user to pick one and then re-invoke generate_projects.sh (Linux) or generate_projects.bat (Windows) to run the build. Those scripts both start by calling packman, printing "Running packman in preparation for cmake..." even when the user launched the build via the no-packman / vcpkg entry points. Fix by calling presetProvided() directly after interactive selection, matching the code path already used when a preset is supplied as an argument. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ndencies' into remove-packman-dependencies
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No longer uses packman; Linux users use apt, Windows users vcpkg to get dependencies. Use new generate_projects_no_packman.sh or generate_projects_vcpkg.bat. Done by Claude.