cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
74 lines
2.9 KiB
CMake
74 lines
2.9 KiB
CMake
#.rst:
|
|
# FindPythonAndSwig
|
|
# -----------
|
|
#
|
|
# Find the python interpreter and libraries as a whole.
|
|
|
|
macro(FindPython3)
|
|
# Use PYTHON_HOME as a hint to find Python 3.
|
|
if(NOT Python3_ROOT_DIR)
|
|
set(Python3_ROOT_DIR "${PYTHON_HOME}")
|
|
endif()
|
|
find_package(Python3 COMPONENTS Interpreter Development)
|
|
if(Python3_FOUND AND Python3_Interpreter_FOUND)
|
|
|
|
# The install name for the Python 3 framework in Xcode is relative to
|
|
# the framework's location and not the dylib itself.
|
|
#
|
|
# @rpath/Python3.framework/Versions/3.x/Python3
|
|
#
|
|
# This means that we need to compute the path to the Python3.framework
|
|
# and use that as the RPATH instead of the usual dylib's directory.
|
|
#
|
|
# The check below shouldn't match Homebrew's Python framework as it is
|
|
# called Python.framework instead of Python3.framework.
|
|
if (APPLE AND Python3_LIBRARIES MATCHES "Python3.framework")
|
|
string(FIND "${Python3_LIBRARIES}" "Python3.framework" python_framework_pos)
|
|
string(SUBSTRING "${Python3_LIBRARIES}" "0" ${python_framework_pos} Python3_RPATH)
|
|
endif()
|
|
|
|
set(PYTHON3_FOUND TRUE)
|
|
mark_as_advanced(
|
|
Python3_LIBRARIES
|
|
Python3_INCLUDE_DIRS
|
|
Python3_EXECUTABLE
|
|
Python3_RPATH)
|
|
endif()
|
|
endmacro()
|
|
|
|
if(Python3_LIBRARIES AND Python3_INCLUDE_DIRS AND Python3_EXECUTABLE AND LLDB_ENABLE_SWIG)
|
|
set(PYTHONANDSWIG_FOUND TRUE)
|
|
else()
|
|
if (LLDB_ENABLE_SWIG)
|
|
FindPython3()
|
|
else()
|
|
message(STATUS "SWIG 4 or later is required for Python support in LLDB but could not be found")
|
|
endif()
|
|
|
|
get_property(MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
|
if ("${Python3_VERSION}" VERSION_GREATER_EQUAL "3.7" AND
|
|
"${SWIG_VERSION}" VERSION_LESS "4.0" AND WIN32 AND (
|
|
${MULTI_CONFIG} OR (uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG")))
|
|
# Technically this can happen with non-Windows builds too, but we are not
|
|
# able to detect whether Python was built with assertions, and only Windows
|
|
# has the requirement that Debug LLDB must use Debug Python.
|
|
message(WARNING "Debug builds of LLDB are likely to be unusable due to "
|
|
"<https://github.com/swig/swig/issues/1321>. Please use SWIG >= 4.0.")
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(PythonAndSwig
|
|
FOUND_VAR
|
|
PYTHONANDSWIG_FOUND
|
|
REQUIRED_VARS
|
|
Python3_LIBRARIES
|
|
Python3_INCLUDE_DIRS
|
|
Python3_EXECUTABLE
|
|
LLDB_ENABLE_SWIG)
|
|
endif()
|
|
|
|
set(LLDB_RECOMMENDED_PYTHON "3.8")
|
|
if(PYTHONANDSWIG_FOUND AND "${Python3_VERSION}" VERSION_LESS "${LLDB_RECOMMENDED_PYTHON}")
|
|
message(WARNING "Using Python ${Python3_VERSION}. ${LLDB_RECOMMENDED_PYTHON} "
|
|
"is recommended and will be required from LLDB 21.")
|
|
endif() |