From f99cc6ffd78a1895a8367bb8bddd83b4a5cc466a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 9 Feb 2022 09:36:29 +0100 Subject: [PATCH 1/9] pkgconf enable system lookup on linux --- ports/pkgconf/portfile.cmake | 69 ++++++++++++++++++++++++++++++++++++ ports/pkgconf/vcpkg.json | 2 +- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/ports/pkgconf/portfile.cmake b/ports/pkgconf/portfile.cmake index 1d8dda8dd16f0b..4a81bcc8c24f95 100644 --- a/ports/pkgconf/portfile.cmake +++ b/ports/pkgconf/portfile.cmake @@ -11,6 +11,75 @@ vcpkg_configure_meson( NO_PKG_CONFIG OPTIONS -Dtests=false ) + +set(systemsuffix "") +set(architectureprefix "") + +if(VCPKG_TARGET_IS_LINUX) + set(systemsuffix "linux-gnu") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(architectureprefix "x86_64") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(architectureprefix "i386") + endif() +endif() + +if(NOT systemsuffix STREQUAL "" AND NOT architectureprefix STREQUAL "") + set(archdir "${architectureprefix}-${systemsuffix}") +endif() + +if(NOT VCPKG_TARGET_IS_WINDOWS) + # These defaults are taken from the pkg-config configure.ac script + set(SYSTEM_LIBDIR "/usr/lib:/lib") + set(PKG_DEFAULT_PATH "/usr/lib/pkgconfig:/usr/share/pkgconfig") + set(SYSTEM_INCLUDEDIR "/usr/include") + set(PERSONALITY_PATH "/usr/lib/pkgconfig/personality.d:/usr/share/pkgconfig/personality.d") + + if(NOT archdir STREQUAL "") + string(PREPEND PKG_DEFAULT_PATH "/usr/lib/${archdir}/pkgconfig:") + string(PREPEND SYSTEM_INCLUDEDIR "/usr/include/${archdir}:") + string(PREPEND PERSONALITY_PATH "/usr/lib/${archdir}/pkgconfig/personality.d:") + endif() +else() + set(SYSTEM_LIBDIR "") + set(PKG_DEFAULT_PATH "") + set(SYSTEM_INCLUDEDIR "") + set(PERSONALITY_PATH "personality.d") +endif() + +if(DEFINED VCPKG_pkgconf_SYSTEM_LIBDIR) + set(SYSTEM_LIBDIR "${VCPKG_pkgconf_SYSTEM_LIBDIR}") +endif() +if(DEFINED VCPKG_pkgconf_PKG_DEFAULT_PATH) + set(PKG_DEFAULT_PATH "${VCPKG_pkgconf_PKG_DEFAULT_PATH}") +endif() +if(DEFINED VCPKG_pkgconf_SYSTEM_INCLUDEDIR) + set(SYSTEM_INCLUDEDIR "${VCPKG_pkgconf_SYSTEM_INCLUDEDIR}") +endif() +if(DEFINED VCPKG_pkgconf_PERSONALITY_PATH) + set(PERSONALITY_PATH "${VCPKG_pkgconf_PERSONALITY_PATH}") +endif() + + +set(pkgconfig_file "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/libpkgconf/config.h") +if(EXISTS "${pkgconfig_file}") + file(READ "${pkgconfig_file}" contents) + string(REGEX REPLACE "#define PKG_DEFAULT_PATH [^\n]+" "#define PKG_DEFAULT_PATH \"${PKG_DEFAULT_PATH}\"" contents "${contents}") + string(REGEX REPLACE "#define SYSTEM_INCLUDEDIR [^\n]+" "#define SYSTEM_INCLUDEDIR \"${SYSTEM_INCLUDEDIR}\"" contents "${contents}") + string(REGEX REPLACE "#define SYSTEM_LIBDIR [^\n]+" "#define SYSTEM_LIBDIR \"${SYSTEM_LIBDIR}\"" contents "${contents}") + string(REGEX REPLACE "#define PERSONALITY_PATH [^\n]+" "#define PERSONALITY_PATH \"${PERSONALITY_PATH}\"" contents "${contents}") + file(WRITE "${pkgconfig_file}" "${contents}") +endif() +set(pkgconfig_file "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/libpkgconf/config.h") +if(EXISTS "${pkgconfig_file}") + file(READ "${pkgconfig_file}" contents) + string(REGEX REPLACE "#define PKG_DEFAULT_PATH [^\n]+" "#define PKG_DEFAULT_PATH \"${PKG_DEFAULT_PATH}\"" contents "${contents}") + string(REGEX REPLACE "#define SYSTEM_INCLUDEDIR [^\n]+" "#define SYSTEM_INCLUDEDIR \"${SYSTEM_INCLUDEDIR}\"" contents "${contents}") + string(REGEX REPLACE "#define SYSTEM_LIBDIR [^\n]+" "#define SYSTEM_LIBDIR \"${SYSTEM_LIBDIR}\"" contents "${contents}") + string(REGEX REPLACE "#define PERSONALITY_PATH [^\n]+" "#define PERSONALITY_PATH \"${PERSONALITY_PATH}\"" contents "${contents}") + file(WRITE "${pkgconfig_file}" "${contents}") +endif() + vcpkg_install_meson() vcpkg_fixup_pkgconfig(SKIP_CHECK) diff --git a/ports/pkgconf/vcpkg.json b/ports/pkgconf/vcpkg.json index 8143e907439c26..8ea4e30e7598c8 100644 --- a/ports/pkgconf/vcpkg.json +++ b/ports/pkgconf/vcpkg.json @@ -1,7 +1,7 @@ { "name": "pkgconf", "version": "1.8.0", - "port-version": 1, + "port-version": 2, "description": "pkgconf is a program which helps to configure compiler and linker flags for development libraries. It is similar to pkg-config from freedesktop.org.", "homepage": "https://github.com/pkgconf/pkgconf", "supports": "!uwp", From 88a4ef2a139b9bff7465e8bc061f226318e6d268 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 9 Feb 2022 09:37:05 +0100 Subject: [PATCH 2/9] verison stuff --- versions/baseline.json | 2 +- versions/p-/pkgconf.json | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/versions/baseline.json b/versions/baseline.json index 5f730bb3356435..e1e9099bc429cb 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5326,7 +5326,7 @@ }, "pkgconf": { "baseline": "1.8.0", - "port-version": 1 + "port-version": 2 }, "platform-folders": { "baseline": "4.1.0", diff --git a/versions/p-/pkgconf.json b/versions/p-/pkgconf.json index 1b3ed2d12d3e06..77dcee3b4465a4 100644 --- a/versions/p-/pkgconf.json +++ b/versions/p-/pkgconf.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "ae04617bfc26dfad67b7d67a757dd2cd87c2c80d", + "version": "1.8.0", + "port-version": 2 + }, { "git-tree": "cbcb5f984f7713a636caa075f06b755d37493dbd", "version": "1.8.0", From bd963edb7924ef2e165bab7b1cf8a31142da2372 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 10 Feb 2022 09:18:58 +0100 Subject: [PATCH 3/9] use ubuntu defaults. --- ports/pkgconf/portfile.cmake | 37 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/ports/pkgconf/portfile.cmake b/ports/pkgconf/portfile.cmake index 4a81bcc8c24f95..45db7a78c0db41 100644 --- a/ports/pkgconf/portfile.cmake +++ b/ports/pkgconf/portfile.cmake @@ -15,36 +15,19 @@ vcpkg_configure_meson( set(systemsuffix "") set(architectureprefix "") -if(VCPKG_TARGET_IS_LINUX) - set(systemsuffix "linux-gnu") - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(architectureprefix "x86_64") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(architectureprefix "i386") - endif() -endif() +set(SYSTEM_LIBDIR "") +set(PKG_DEFAULT_PATH "") +set(SYSTEM_INCLUDEDIR "") +set(PERSONALITY_PATH "personality.d") -if(NOT systemsuffix STREQUAL "" AND NOT architectureprefix STREQUAL "") - set(archdir "${architectureprefix}-${systemsuffix}") -endif() -if(NOT VCPKG_TARGET_IS_WINDOWS) - # These defaults are taken from the pkg-config configure.ac script - set(SYSTEM_LIBDIR "/usr/lib:/lib") - set(PKG_DEFAULT_PATH "/usr/lib/pkgconfig:/usr/share/pkgconfig") +if(NOT VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_CROSSCOMPILING AND VCPKG_TARGET_ARCHITECTURE MATCHES "x64") + # These defaults are obtained from pkgconf/pkg-config on Ubuntu set(SYSTEM_INCLUDEDIR "/usr/include") - set(PERSONALITY_PATH "/usr/lib/pkgconfig/personality.d:/usr/share/pkgconfig/personality.d") - - if(NOT archdir STREQUAL "") - string(PREPEND PKG_DEFAULT_PATH "/usr/lib/${archdir}/pkgconfig:") - string(PREPEND SYSTEM_INCLUDEDIR "/usr/include/${archdir}:") - string(PREPEND PERSONALITY_PATH "/usr/lib/${archdir}/pkgconfig/personality.d:") - endif() -else() - set(SYSTEM_LIBDIR "") - set(PKG_DEFAULT_PATH "") - set(SYSTEM_INCLUDEDIR "") - set(PERSONALITY_PATH "personality.d") + # System lib dirs will be stripped from -L from the pkg-config output + set(SYSTEM_LIBDIR "/lib:/lib/i386-linux-gnu:/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnux32:/lib32:/libx32:/usr/lib:/usr/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnux32:/usr/lib32:/usr/libx32") + set(PKG_DEFAULT_PATH "/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig") + set(PERSONALITY_PATH "/usr/share/pkgconfig/personality.d:/etc/pkgconfig/personality.d") endif() if(DEFINED VCPKG_pkgconf_SYSTEM_LIBDIR) From a7751019476a60c80fc156ac6b2f33437b35b242 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 10 Feb 2022 09:19:28 +0100 Subject: [PATCH 4/9] version stuff --- versions/p-/pkgconf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/p-/pkgconf.json b/versions/p-/pkgconf.json index 77dcee3b4465a4..8277f3f98e5b9e 100644 --- a/versions/p-/pkgconf.json +++ b/versions/p-/pkgconf.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "ae04617bfc26dfad67b7d67a757dd2cd87c2c80d", + "git-tree": "849c6b13074045c18f89394e7c7350efe8a630df", "version": "1.8.0", "port-version": 2 }, From d83bd29e1f8c62774839114d696852106840d8ed Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 11 Feb 2022 09:09:35 +0100 Subject: [PATCH 5/9] WIP get libpaths from CMake --- ports/pkgconf/CMakeLists.txt | 29 +++++++++++++++++++++++++++++ ports/pkgconf/portfile.cmake | 15 +++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 ports/pkgconf/CMakeLists.txt diff --git a/ports/pkgconf/CMakeLists.txt b/ports/pkgconf/CMakeLists.txt new file mode 100644 index 00000000000000..0c755c02447fb9 --- /dev/null +++ b/ports/pkgconf/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.21) + +set(CMAKE_INSTALL_PREFIX "/usr") + +project(vcpgk_lib_paths LANGUAGES C CXX) + + +include(GNUInstallDirs) + +set(export_vars CMAKE_C_LIBRARY_ARCHITECTURE + CMAKE_CXX_LIBRARY_ARCHITECTURE + CMAKE_LIBRARY_ARCHITECTURE + CMAKE_LIBRARY_ARCHITECTURE_REGEX + CMAKE_INSTALL_LIBDIR + CMAKE_INSTALL_INCLUDEDIR + CMAKE_INSTALL_DATAROOTDIR + CMAKE_INSTALL_FULL_LIBDIR + CMAKE_INSTALL_FULL_INCLUDEDIR + CMAKE_INSTALL_FULL_DATAROOTDIR + +) +set(output "") +foreach(var IN LISTS export_vars) + string(APPEND output "set(VCPKG_DETECTED_${var} \"${${var}}\")\n") +endforeach() + +if(DEFINED OUTPUT_FILE) + file(WRITE "${OUTPUT_FILE}" "${output}") +endif() \ No newline at end of file diff --git a/ports/pkgconf/portfile.cmake b/ports/pkgconf/portfile.cmake index 45db7a78c0db41..16cf5cbd8b43c5 100644 --- a/ports/pkgconf/portfile.cmake +++ b/ports/pkgconf/portfile.cmake @@ -6,12 +6,27 @@ vcpkg_from_github( HEAD_REF master ) +if(VCPKG_BUILD_TYPE) + set(BACKUP_BUILD_TYPE ${VCPKG_BUILD_TYPE}) +endif() +set(VCPKG_BUILD_TYPE release) +vcpkg_configure_cmake( SOURCE_PATH "${CURRENT_PORT_DIR}" + OPTIONS "-DOUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/libpaths-${TARGET_TRIPLET}.cmake" +) +if(DEFINED BACKUP_BUILD_TYPE) + set(VCPKG_BUILD_TYPE ${BACKUP_BUILD_TYPE}) +else() + unset(VCPKG_BUILD_TYPE) +endif() + vcpkg_configure_meson( SOURCE_PATH "${SOURCE_PATH}" NO_PKG_CONFIG OPTIONS -Dtests=false ) +include("${CURRENT_BUILDTREES_DIR}/libpaths-${TARGET_TRIPLET}.cmake") + set(systemsuffix "") set(architectureprefix "") From 6c53ec5436e9f068ced10c28e312836f81229934 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 11 Feb 2022 09:19:58 +0100 Subject: [PATCH 6/9] just get colmap trace for fun --- ports/colmap/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/colmap/portfile.cmake b/ports/colmap/portfile.cmake index d1af859f668cf0..c7e5ff90d3299d 100644 --- a/ports/colmap/portfile.cmake +++ b/ports/colmap/portfile.cmake @@ -43,6 +43,7 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" DISABLE_PARALLEL_CONFIGURE OPTIONS + --trace-expand -DCUDA_ENABLED=${CUDA_ENABLED} -DCUDA_ARCHS=${CUDA_ARCHS} -DTESTS_ENABLED=${TESTS_ENABLED} From 205728aa892deaf9fa9979212b4851413f8458e8 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 11 Feb 2022 09:32:21 +0100 Subject: [PATCH 7/9] merge opensuse and ubuntu settings. should be good for most systems. --- ports/pkgconf/CMakeLists.txt | 29 ----------------------------- ports/pkgconf/portfile.cmake | 22 ++++------------------ 2 files changed, 4 insertions(+), 47 deletions(-) delete mode 100644 ports/pkgconf/CMakeLists.txt diff --git a/ports/pkgconf/CMakeLists.txt b/ports/pkgconf/CMakeLists.txt deleted file mode 100644 index 0c755c02447fb9..00000000000000 --- a/ports/pkgconf/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -cmake_minimum_required(VERSION 3.21) - -set(CMAKE_INSTALL_PREFIX "/usr") - -project(vcpgk_lib_paths LANGUAGES C CXX) - - -include(GNUInstallDirs) - -set(export_vars CMAKE_C_LIBRARY_ARCHITECTURE - CMAKE_CXX_LIBRARY_ARCHITECTURE - CMAKE_LIBRARY_ARCHITECTURE - CMAKE_LIBRARY_ARCHITECTURE_REGEX - CMAKE_INSTALL_LIBDIR - CMAKE_INSTALL_INCLUDEDIR - CMAKE_INSTALL_DATAROOTDIR - CMAKE_INSTALL_FULL_LIBDIR - CMAKE_INSTALL_FULL_INCLUDEDIR - CMAKE_INSTALL_FULL_DATAROOTDIR - -) -set(output "") -foreach(var IN LISTS export_vars) - string(APPEND output "set(VCPKG_DETECTED_${var} \"${${var}}\")\n") -endforeach() - -if(DEFINED OUTPUT_FILE) - file(WRITE "${OUTPUT_FILE}" "${output}") -endif() \ No newline at end of file diff --git a/ports/pkgconf/portfile.cmake b/ports/pkgconf/portfile.cmake index 16cf5cbd8b43c5..7c5ccb242b3bac 100644 --- a/ports/pkgconf/portfile.cmake +++ b/ports/pkgconf/portfile.cmake @@ -6,27 +6,12 @@ vcpkg_from_github( HEAD_REF master ) -if(VCPKG_BUILD_TYPE) - set(BACKUP_BUILD_TYPE ${VCPKG_BUILD_TYPE}) -endif() -set(VCPKG_BUILD_TYPE release) -vcpkg_configure_cmake( SOURCE_PATH "${CURRENT_PORT_DIR}" - OPTIONS "-DOUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/libpaths-${TARGET_TRIPLET}.cmake" -) -if(DEFINED BACKUP_BUILD_TYPE) - set(VCPKG_BUILD_TYPE ${BACKUP_BUILD_TYPE}) -else() - unset(VCPKG_BUILD_TYPE) -endif() - vcpkg_configure_meson( SOURCE_PATH "${SOURCE_PATH}" NO_PKG_CONFIG OPTIONS -Dtests=false ) -include("${CURRENT_BUILDTREES_DIR}/libpaths-${TARGET_TRIPLET}.cmake") - set(systemsuffix "") set(architectureprefix "") @@ -37,11 +22,12 @@ set(PERSONALITY_PATH "personality.d") if(NOT VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_CROSSCOMPILING AND VCPKG_TARGET_ARCHITECTURE MATCHES "x64") - # These defaults are obtained from pkgconf/pkg-config on Ubuntu + # These defaults are obtained from pkgconf/pkg-config on Ubuntu and OpenSuse + # vcpkg cannot do system introspection to obtain/set these values since it would break binary caching. set(SYSTEM_INCLUDEDIR "/usr/include") # System lib dirs will be stripped from -L from the pkg-config output - set(SYSTEM_LIBDIR "/lib:/lib/i386-linux-gnu:/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnux32:/lib32:/libx32:/usr/lib:/usr/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnux32:/usr/lib32:/usr/libx32") - set(PKG_DEFAULT_PATH "/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig") + set(SYSTEM_LIBDIR "/lib:/lib/i386-linux-gnu:/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnux32:/lib64:/lib32:/libx32:/usr/lib:/usr/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnux32:/usr/lib64:/usr/lib32:/usr/libx32") + set(PKG_DEFAULT_PATH "/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig") set(PERSONALITY_PATH "/usr/share/pkgconfig/personality.d:/etc/pkgconfig/personality.d") endif() From aed632c2e9f87147f09f470a14dcde39636b4ae3 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 11 Feb 2022 16:11:36 +0100 Subject: [PATCH 8/9] revert colmap change --- ports/colmap/portfile.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/ports/colmap/portfile.cmake b/ports/colmap/portfile.cmake index c7e5ff90d3299d..d1af859f668cf0 100644 --- a/ports/colmap/portfile.cmake +++ b/ports/colmap/portfile.cmake @@ -43,7 +43,6 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" DISABLE_PARALLEL_CONFIGURE OPTIONS - --trace-expand -DCUDA_ENABLED=${CUDA_ENABLED} -DCUDA_ARCHS=${CUDA_ARCHS} -DTESTS_ENABLED=${TESTS_ENABLED} From 86f921b82326d444caad3d80c50db0c5b80d44bb Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 11 Feb 2022 16:13:25 +0100 Subject: [PATCH 9/9] version stuff --- versions/p-/pkgconf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/p-/pkgconf.json b/versions/p-/pkgconf.json index 8277f3f98e5b9e..87f63902cf5e65 100644 --- a/versions/p-/pkgconf.json +++ b/versions/p-/pkgconf.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "849c6b13074045c18f89394e7c7350efe8a630df", + "git-tree": "5b599bd7dbbbc7837f7dbcf1b111478da076e2a4", "version": "1.8.0", "port-version": 2 },