From bc9479f2817eb37cc5a76eed3b978cf09ef977e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= Date: Sat, 7 Feb 2026 13:00:52 +0000 Subject: [PATCH 1/4] feat: migrate from Conan 1 to Conan 2 Update build system to use Conan 2 generators (CMakeToolchain, CMakeDeps, MakeDeps), modern CMake find_package pattern, and Conan 2 CLI commands across all CI workflows. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 22 ++++++++++++---------- CHANGELOG.md | 2 +- CMakeLists.txt | 14 ++++++++++---- Makefile | 2 +- conanfile.txt | 5 +++-- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a5acd81..6083d46 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -69,11 +69,12 @@ jobs: run: | apt-get update && apt-get install -y -q wget python3 python3-dev libpng-dev wget https://bootstrap.pypa.io/pip/get-pip.py && PIP_BREAK_SYSTEM_PACKAGES=1 python3 get-pip.py - pip3 install --break-system-packages --upgrade "conan<2" urllib3 - conan install . --build + pip3 install --break-system-packages --upgrade "conan>=2,<3" urllib3 + conan profile detect --force + conan install . --build=missing - name: Build P(NG)Convert run: | - cmake . + cmake . -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake make - name: Test P(NG)Convert run: | @@ -87,13 +88,14 @@ jobs: - uses: actions/checkout@v4 - name: Build & Install Dependencies run: | - pip3 install --upgrade "conan<2" urllib3 - conan install . --build + pip3 install --upgrade "conan>=2,<3" urllib3 + conan profile detect --force + conan install . --build=missing - name: Setup msbuild uses: microsoft/setup-msbuild@v1.1 - name: Build P(NG)Convert run: | - cmake . -DCMAKE_CL_64=1 -DCMAKE_GENERATOR_PLATFORM=x64 -Ax64 + cmake . "-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake" -DCMAKE_CL_64=1 -DCMAKE_GENERATOR_PLATFORM=x64 -Ax64 msbuild ALL_BUILD.vcxproj /P:Configuration=Release - name: Test P(NG)Convert run: | @@ -107,12 +109,12 @@ jobs: - uses: actions/checkout@v4 - name: Build & Install Dependencies run: | - export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin - pip3 install --break-system-packages --upgrade "conan>1.50.0, <2" "urllib3<1.27" - conan install . --build + pip3 install --break-system-packages --upgrade "conan>=2,<3" "urllib3<1.27" + conan profile detect --force + conan install . --build=missing - name: Build P(NG)Convert run: | - cmake . -DCMAKE_POLICY_VERSION_MINIMUM=3.5 + cmake . -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake make - name: Test P(NG)Convert run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 882e923..5a46a0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -* +* Migrated from Conan 1 to Conan 2 - updated generators, CMake integration, and CI workflow ### Fixed diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f54126..56af90e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,15 @@ -cmake_minimum_required(VERSION 3.0.0) +cmake_minimum_required(VERSION 3.15.0) project(pconvert) -include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup() +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/lib) +find_package(PNG REQUIRED) +find_package(ZLIB REQUIRED) find_package(PythonLibs) add_definitions(-DNO_PRAGMA_LIB) @@ -13,4 +19,4 @@ aux_source_directory(src/pconvert SOURCES) add_executable(pconvert ${SOURCES}) target_include_directories(pconvert PUBLIC ${PYTHON_INCLUDE_PATH}) -target_link_libraries(pconvert ${CONAN_LIBS} ${PYTHON_LIBRARY}) +target_link_libraries(pconvert PNG::PNG ZLIB::ZLIB ${PYTHON_LIBRARY}) diff --git a/Makefile b/Makefile index 3ecab35..5be6208 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ --include conanbuildinfo.mak +-include conandeps.mak CC=gcc CPP=g++ diff --git a/conanfile.txt b/conanfile.txt index f2f80a0..12ca27d 100644 --- a/conanfile.txt +++ b/conanfile.txt @@ -3,5 +3,6 @@ libpng/[>1.0] zlib/[>1.2.0] [generators] -make -cmake +CMakeToolchain +CMakeDeps +MakeDeps From 91d37ea76167bb06fec8a988a3f4bef5db1ff8f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= Date: Sat, 7 Feb 2026 13:02:51 +0000 Subject: [PATCH 2/4] chore: small ci tweaks --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6083d46..9d7aa6d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,7 +48,7 @@ jobs: timeout-minutes: 30 strategy: matrix: - gcc-version: [9, 10, 11, 12, 13] + gcc-version: [11, 12, 13, 14, 15] cmake-version: ["3.25.0"] cmake-type: ["binary"] runs-on: ubuntu-latest @@ -104,7 +104,7 @@ jobs: build-macos-cmake: name: Build macOS CMake timeout-minutes: 30 - runs-on: macos-14 + runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Build & Install Dependencies From fbc3d3386c07727ba1eb34a0ff43bad97633b545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= Date: Sat, 7 Feb 2026 13:04:52 +0000 Subject: [PATCH 3/4] fix: add CMAKE_BUILD_TYPE=Release for Conan 2 CMakeDeps Conan 2's CMakeDeps generator requires CMAKE_BUILD_TYPE to be set when using single-config generators (Make). Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9d7aa6d..22ccfc0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -74,7 +74,7 @@ jobs: conan install . --build=missing - name: Build P(NG)Convert run: | - cmake . -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake + cmake . -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release make - name: Test P(NG)Convert run: | @@ -114,7 +114,7 @@ jobs: conan install . --build=missing - name: Build P(NG)Convert run: | - cmake . -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake + cmake . -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release make - name: Test P(NG)Convert run: | From e2c605f0af19664a804f309c4831e6854e19a271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= Date: Sat, 7 Feb 2026 13:07:12 +0000 Subject: [PATCH 4/4] fix: make Python linking conditional in CMakeLists Only link against Python when PythonLibs is found, preventing NOTFOUND errors on environments without Python dev headers. Co-Authored-By: Claude Opus 4.6 --- CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 56af90e..a836efe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,5 +18,9 @@ add_definitions(-D_CRT_SECURE_NO_WARNINGS) aux_source_directory(src/pconvert SOURCES) add_executable(pconvert ${SOURCES}) -target_include_directories(pconvert PUBLIC ${PYTHON_INCLUDE_PATH}) -target_link_libraries(pconvert PNG::PNG ZLIB::ZLIB ${PYTHON_LIBRARY}) +target_link_libraries(pconvert PNG::PNG ZLIB::ZLIB) + +if(PythonLibs_FOUND) + target_include_directories(pconvert PUBLIC ${PYTHON_INCLUDE_PATH}) + target_link_libraries(pconvert ${PYTHON_LIBRARY}) +endif()