From 43b4ba9e5585f9b6111f11ce2284b1f9d5d04555 Mon Sep 17 00:00:00 2001 From: msclock Date: Wed, 25 Sep 2024 01:02:12 +0800 Subject: [PATCH] [bit7z] new port (#40889) Signed-off-by: msclock Co-authored-by: Cheney Wang <38240633+Cheney-W@users.noreply.github.com> Co-authored-by: Kai Pastor Co-authored-by: Javier Matos Denizac --- ports/bit7z/fix_dependency.patch | 28 ++++++++++++ ports/bit7z/fix_install.patch | 43 +++++++++++++++++++ ports/bit7z/portfile.cmake | 45 ++++++++++++++++++++ ports/bit7z/unofficial-bit7z-config.cmake.in | 10 +++++ ports/bit7z/vcpkg.json | 24 +++++++++++ versions/b-/bit7z.json | 9 ++++ versions/baseline.json | 4 ++ 7 files changed, 163 insertions(+) create mode 100644 ports/bit7z/fix_dependency.patch create mode 100644 ports/bit7z/fix_install.patch create mode 100644 ports/bit7z/portfile.cmake create mode 100644 ports/bit7z/unofficial-bit7z-config.cmake.in create mode 100644 ports/bit7z/vcpkg.json create mode 100644 versions/b-/bit7z.json diff --git a/ports/bit7z/fix_dependency.patch b/ports/bit7z/fix_dependency.patch new file mode 100644 index 00000000000000..befb74be79570b --- /dev/null +++ b/ports/bit7z/fix_dependency.patch @@ -0,0 +1,28 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f8ff6f0..855b78d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -194,15 +194,22 @@ include( cmake/BuildOptions.cmake ) + include( cmake/CompilerOptions.cmake ) + + # dependencies +-include( cmake/Dependencies.cmake ) ++# include( cmake/Dependencies.cmake ) ++find_package(7zip CONFIG REQUIRED) ++add_library(7-zip ALIAS 7zip::7zip) + + # 7-zip source code + target_link_libraries( ${LIB_TARGET} PRIVATE 7-zip ) + + # filesystem library (needed if std::filesystem is not available) ++if(0) + if( ghc_filesystem_ADDED ) + target_link_libraries( ${LIB_TARGET} PRIVATE ghc_filesystem ) + endif() ++else() ++ find_package(ghc_filesystem CONFIG REQUIRED) ++ target_link_libraries(${LIB_TARGET} PRIVATE ghcFilesystem::ghc_filesystem ) ++endif() + + # public includes + target_include_directories( ${LIB_TARGET} PUBLIC "$" diff --git a/ports/bit7z/fix_install.patch b/ports/bit7z/fix_install.patch new file mode 100644 index 00000000000000..9c242be6230539 --- /dev/null +++ b/ports/bit7z/fix_install.patch @@ -0,0 +1,43 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2eb8634..f8ff6f0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -179,7 +179,7 @@ message( STATUS "Language Standard for bit7z: C++${CMAKE_CXX_STANDARD}" ) + set( LIB_TARGET bit7z${ARCH_POSTFIX} ) + add_library( ${LIB_TARGET} STATIC ) + target_sources( ${LIB_TARGET} +- PUBLIC ${PUBLIC_HEADERS} ++ # PUBLIC ${PUBLIC_HEADERS} + PRIVATE ${HEADERS} ${SOURCES} ) + + # additional target without the architecture suffix in the name +@@ -246,3 +246,29 @@ endif() + if( BIT7Z_BUILD_DOCS ) + add_subdirectory( docs ) + endif() ++ ++set_target_properties(${LIB_TARGET} PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}") ++ ++include(CMakePackageConfigHelpers) ++configure_package_config_file( ++ "${CMAKE_CURRENT_SOURCE_DIR}/unofficial-bit7z-config.cmake.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-bit7z-config.cmake" ++ INSTALL_DESTINATION "share/unofficial-bit7z" ++) ++install( ++ FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-bit7z-config.cmake" ++ DESTINATION "share/unofficial-bit7z" ++) ++ ++include(GNUInstallDirs) ++install( ++ TARGETS ${LIB_TARGET} ++ EXPORT unofficial-bit7z-targets ++ COMPONENT bit7z ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/bit7z COMPONENT bit7z_development) ++ ++install(EXPORT unofficial-bit7z-targets FILE unofficial-bit7z-targets.cmake NAMESPACE unofficial::bit7z:: DESTINATION share/unofficial-bit7z) ++ diff --git a/ports/bit7z/portfile.cmake b/ports/bit7z/portfile.cmake new file mode 100644 index 00000000000000..ffbd2ab241b3f9 --- /dev/null +++ b/ports/bit7z/portfile.cmake @@ -0,0 +1,45 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO rikyoz/bit7z + REF "v${VERSION}" + SHA512 02ee10a66598e9a2f5b47f35392dc8f3de11e01dac9d657e1321d1de97baf9832b1f1559054160d122dddd0427f54076820d7252185912c38b2f277d9c5fa1c0 + HEAD_REF master + PATCHES + fix_install.patch + fix_dependency.patch +) + +file(COPY "${CMAKE_CURRENT_LIST_DIR}/unofficial-bit7z-config.cmake.in" DESTINATION "${SOURCE_PATH}") + +vcpkg_check_features( + OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + regex-matching BIT7Z_REGEX_MATCHING +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DBIT7Z_AUTO_FORMAT=ON + -DBIT7Z_AUTO_PREFIX_LONG_PATHS=ON + -DBIT7Z_DISABLE_ZIP_ASCII_PWD_CHECK=OFF + -DBIT7Z_PATH_SANITIZATION=ON + -DBIT7Z_DISABLE_USE_STD_FILESYSTEM=OFF + -DBIT7Z_USE_STD_BYTE=OFF + -DBIT7Z_USE_NATIVE_STRING=OFF + -DBIT7Z_USE_SYSTEM_CODEPAGE=OFF + -DBIT7Z_BUILD_TESTS=OFF + -DBIT7Z_BUILD_DOCS=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() + +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-bit7z CONFIG_PATH share/unofficial-bit7z) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share") diff --git a/ports/bit7z/unofficial-bit7z-config.cmake.in b/ports/bit7z/unofficial-bit7z-config.cmake.in new file mode 100644 index 00000000000000..cd432b60126bf5 --- /dev/null +++ b/ports/bit7z/unofficial-bit7z-config.cmake.in @@ -0,0 +1,10 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) + +find_dependency(7zip CONFIG) +find_dependency(ghc_filesystem CONFIG) + +include("${CMAKE_CURRENT_LIST_DIR}/unofficial-bit7z-targets.cmake") + +check_required_components(bit7z) diff --git a/ports/bit7z/vcpkg.json b/ports/bit7z/vcpkg.json new file mode 100644 index 00000000000000..bc1cc29b904732 --- /dev/null +++ b/ports/bit7z/vcpkg.json @@ -0,0 +1,24 @@ +{ + "name": "bit7z", + "version": "4.0.8", + "description": "A C++ static library offering a clean and simple interface to the 7-zip shared libraries.", + "homepage": "https://github.com/rikyoz/bit7z", + "license": "MPL-2.0", + "dependencies": [ + "7zip", + "ghc-filesystem", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "regex-matching": { + "description": "Enables the support for extracting files matching regular expressions" + } + } +} diff --git a/versions/b-/bit7z.json b/versions/b-/bit7z.json new file mode 100644 index 00000000000000..e572935ccf7972 --- /dev/null +++ b/versions/b-/bit7z.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "07fa7b0762a888e367f01bd9ba8674c7a0d7ffdb", + "version": "4.0.8", + "port-version": 0 + } + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index 5810fad8cf51a2..14daf524c97dd7 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -648,6 +648,10 @@ "baseline": "3.0", "port-version": 3 }, + "bit7z": { + "baseline": "4.0.8", + "port-version": 0 + }, "bitmagic": { "baseline": "7.13.4", "port-version": 0