File lensfun-pr2256-setuptools.patch of Package lensfun
From 7df6795e5d0fa768132dfce78148b363566de473 Mon Sep 17 00:00:00 2001
From: Jonas Ott <git@jonas-ott.de>
Date: Sun, 28 Jul 2024 21:54:37 +0200
Subject: [PATCH 1/2] stop deprecated direct call of setup.py, install python
build in workflows
Index: lensfun-0.3.4/apps/CMakeLists.txt
===================================================================
--- lensfun-0.3.4.orig/apps/CMakeLists.txt
+++ lensfun-0.3.4/apps/CMakeLists.txt
@@ -1,14 +1,13 @@
-IF(WIN32)
- SET(COMMON_LIBS getopt)
-ENDIF()
-
IF(BUILD_LENSTOOL)
- FIND_PACKAGE(PNG REQUIRED)
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
- INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
+ INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
+ INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIRS})
+ INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
ADD_EXECUTABLE(lenstool lenstool/lenstool.cpp lenstool/image.cpp)
- TARGET_LINK_LIBRARIES(lenstool lensfun ${COMMON_LIBS} ${PNG_LIBRARY} ${ZLIB_LIBRARY})
+ TARGET_COMPILE_DEFINITIONS(lenstool PRIVATE -Dauxfun_EXPORTS)
+ TARGET_LINK_LIBRARIES(lenstool lensfun ${PNG_LIBRARIES} ${ZLIB_LIBRARIES})
+ IF(WIN32)
+ TARGET_LINK_LIBRARIES(lenstool getopt)
+ ENDIF()
INSTALL(TARGETS lenstool DESTINATION ${CMAKE_INSTALL_BINDIR})
ENDIF()
@@ -20,27 +19,42 @@ ENDIF(INSTALL_HELPER_SCRIPTS)
# Inspired by http://bloerg.net/2012/11/10/cmake-and-distutils.html
+IF(INSTALL_PYTHON_MODULE)
+ FIND_PACKAGE (Python3 COMPONENTS Interpreter REQUIRED)
+ # Windows has a dummy python.exe in the PATH which opens the Microsoft Store, so check if Python is real.
+ EXECUTE_PROCESS(COMMAND ${Python3_EXECUTABLE} --version RESULT_VARIABLE PY_RESULT OUTPUT_QUIET)
+ IF (NOT PY_RESULT EQUAL 0)
+ MESSAGE(FATAL_ERROR "Python3 not found, it might be a dummy python.exe")
+ ENDIF()
-FIND_PROGRAM(PYTHON "python3")
-IF(PYTHON)
- SET(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
- SET(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
- SET(DEPS_IN "${CMAKE_CURRENT_SOURCE_DIR}/lensfun/__init__.py.in")
- SET(DEPS "${CMAKE_CURRENT_BINARY_DIR}/lensfun/__init__.py")
- SET(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp")
+ SET(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
+ SET(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
+ SET(PYPROJECT_TOML_IN "${CMAKE_CURRENT_SOURCE_DIR}/pyproject.toml.in")
+ SET(PYPROJECT_TOML "${CMAKE_CURRENT_BINARY_DIR}/pyproject.toml")
+ SET(DEPS_IN "${CMAKE_CURRENT_SOURCE_DIR}/lensfun/__init__.py.in")
+ SET(DEPS "${CMAKE_CURRENT_BINARY_DIR}/lensfun/__init__.py")
+ SET(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp")
+ FILE(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build/")
+ FILE(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" PY_PACKAGE_DIR)
CONFIGURE_FILE(${SETUP_PY_IN} ${SETUP_PY})
+ CONFIGURE_FILE(${PYPROJECT_TOML_IN} ${PYPROJECT_TOML})
CONFIGURE_FILE(${DEPS_IN} ${DEPS})
ADD_CUSTOM_COMMAND(OUTPUT ${OUTPUT}
- COMMAND ${PYTHON} ${SETUP_PY} build
+ COMMAND ${Python3_EXECUTABLE} -m pip wheel
+ --no-build-isolation
+ --use-pep517
+ --wheel-dir ${CMAKE_CURRENT_BINARY_DIR}/build
+ ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}
- DEPENDS ${DEPS_IN})
+ DEPENDS ${PYPROJECT_TOML_IN} ${DEPS_IN})
ADD_CUSTOM_TARGET(python-package ALL DEPENDS ${OUTPUT})
- IF(NOT DEFINED SETUP_PY_INSTALL_PREFIX)
- SET(SETUP_PY_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+ IF(NOT DEFINED PY_INSTALL_PREFIX)
+ SET(PY_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
ENDIF()
- INSTALL(CODE "execute_process(COMMAND ${PYTHON} ${SETUP_PY} install --prefix=\$ENV{DESTDIR}${SETUP_PY_INSTALL_PREFIX})")
-ENDIF(PYTHON)
+ INSTALL(CODE "execute_process(COMMAND ${Python3_EXECUTABLE} -m pip install --no-build-isolation --prefix=\$ENV{DESTDIR}${PY_INSTALL_PREFIX} ${CMAKE_CURRENT_BINARY_DIR}/build/lensfun-${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}-py3-none-any.whl)")
+
+ENDIF()
Index: lensfun-0.3.4/apps/pyproject.toml.in
===================================================================
--- /dev/null
+++ lensfun-0.3.4/apps/pyproject.toml.in
@@ -0,0 +1,10 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "lensfun"
+version= "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}"
+
+[tool.setuptools]
+packages = ["lensfun"]
Index: lensfun-0.3.4/apps/setup.py.in
===================================================================
--- lensfun-0.3.4.orig/apps/setup.py.in
+++ lensfun-0.3.4/apps/setup.py.in
@@ -8,5 +8,4 @@ from setuptools import setup
setup(name="lensfun",
version="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}",
- package_dir={"": "${CMAKE_CURRENT_BINARY_DIR}"},
packages=["lensfun"])