diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index beb30b645..c3d327a3f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,9 +12,7 @@ on: branches: [ master ] env: - # Qt: 5.15.1 - # libtorrent: RC_1_2 HEAD, 1.2.12 - VCPKG_COMMIT: 133051b793486ef14e67e9d1f48c9cfe64dc127e + VCPKG_COMMIT: e4ce66eecfd3e5cca5eac06c971921bf8e37cf88 VCPKG_DEST_MACOS: /Users/runner/qbt_tools/vcpkg VCPKG_DEST_WIN: C:\qbt_tools\vcpkg LIBTORRENT_VERSION_TAG: v1.2.12 @@ -125,10 +123,15 @@ jobs: "qt5-svg:x64-windows-static-release", "qt5-tools:x64-windows-static-release", "qt5-winextras:x64-windows-static-release" + ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade ` + --overlay-triplets=${{ github.workspace }}/triplets_overlay ` + --overlay-ports=${{ github.workspace }}/vcpkg ` + --no-dry-run foreach($package in $packages) { ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install $package ` --overlay-triplets=${{ github.workspace }}/triplets_overlay ` + --overlay-ports=${{ github.workspace }}/vcpkg ` --clean-after-build } @@ -199,13 +202,6 @@ jobs: Add-Content ${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake ` -Value "set(VCPKG_BUILD_TYPE release)","set(VCPKG_OSX_DEPLOYMENT_TARGET 10.15)" - # NOTE: Avoids a libtorrent ABI issue. See https://github.com/arvidn/libtorrent/issues/4965 - - name: force AppleClang to compile libtorrent with C++17 - run: | - (Get-Content -path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake).Replace( ` - '${FEATURE_OPTIONS}', '${FEATURE_OPTIONS} -DCMAKE_CXX_STANDARD=17') ` - | Set-Content -Path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake - - name: install dependencies via vcpkg run: | $packages = ` @@ -215,10 +211,15 @@ jobs: "qt5-svg:x64-osx-release", "qt5-tools:x64-osx-release", "qt5-macextras:x64-osx-release" + ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg upgrade ` + --overlay-triplets=${{ github.workspace }}/triplets_overlay ` + --overlay-ports=${{ github.workspace }}/vcpkg ` + --no-dry-run foreach($package in $packages) { ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg install $package ` --overlay-triplets=${{ github.workspace }}/triplets_overlay ` + --overlay-ports=${{ github.workspace }}/vcpkg ` --clean-after-build } diff --git a/vcpkg/libtorrent/CONTROL b/vcpkg/libtorrent/CONTROL new file mode 100644 index 000000000..5dd5dcf0a --- /dev/null +++ b/vcpkg/libtorrent/CONTROL @@ -0,0 +1,26 @@ +Source: libtorrent +Version: 1.2.12 +Homepage: https://github.com/arvidn/libtorrent +Description: An efficient feature complete C++ BitTorrent implementation +Build-Depends: openssl, boost-system, boost-date-time, boost-chrono, boost-random, boost-asio, boost-crc, boost-config, boost-iterator, boost-scope-exit, boost-multiprecision, boost-pool, boost-variant +Supports: !uwp&!(windows&arm) + +Feature: deprfun +Description: build with deprecated functions enabled + +Feature: examples +Description: build the examples in the examples directory + +Feature: iconv +Build-Depends: libiconv (windows) +Description: build with libiconv on Windows + +Feature: python +Build-Depends: boost-python +Description: build the python bindings in bindings/python directory + +Feature: test +Description: build the libtorrent tests + +Feature: tools +Description: build the tools in the tools directory diff --git a/vcpkg/libtorrent/no_use_iconv.patch b/vcpkg/libtorrent/no_use_iconv.patch new file mode 100644 index 000000000..8bd518274 --- /dev/null +++ b/vcpkg/libtorrent/no_use_iconv.patch @@ -0,0 +1,31 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9efd451fb..05066be82 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -643,26 +643,6 @@ target_optional_compile_definitions(torrent-rasterbar PUBLIC FEATURE NAME mutabl + target_optional_compile_definitions(torrent-rasterbar PUBLIC FEATURE NAME streaming DEFAULT ON + DESCRIPTION "Enables support for piece deadline" DISABLED TORRENT_DISABLE_STREAMING) + +-find_public_dependency(Iconv) +-if(MSVC) +- set(iconv_package_type OPTIONAL) +-else() +- set(iconv_package_type RECOMMENDED) +-endif() +- +-set_package_properties(Iconv +- PROPERTIES +- URL "https://www.gnu.org/software/libiconv/" +- DESCRIPTION "GNU encoding conversion library" +- TYPE ${iconv_package_type} +- PURPOSE "Convert strings between various encodings" +-) +- +-if(Iconv_FOUND) +- target_compile_definitions(torrent-rasterbar PUBLIC TORRENT_USE_ICONV) +- target_link_libraries(torrent-rasterbar PRIVATE Iconv::Iconv) +-endif() +- + find_public_dependency(OpenSSL) + set_package_properties(OpenSSL + PROPERTIES diff --git a/vcpkg/libtorrent/portfile.cmake b/vcpkg/libtorrent/portfile.cmake new file mode 100644 index 000000000..a50d73993 --- /dev/null +++ b/vcpkg/libtorrent/portfile.cmake @@ -0,0 +1,66 @@ +vcpkg_fail_port_install(ON_TARGET "uwp") + +if(VCPKG_TARGET_IS_WINDOWS) + # Building python bindings is currently broken on Windows + if("python" IN_LIST FEATURES) + message(FATAL_ERROR "The python feature is currently broken on Windows") + endif() + + if(NOT "iconv" IN_LIST FEATURES) + # prevent picking up libiconv if it happens to already be installed + set(ICONV_PATCH "no_use_iconv.patch") + endif() + + if(VCPKG_CRT_LINKAGE STREQUAL "static") + set(_static_runtime ON) + endif() +endif() + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + deprfun deprecated-functions + examples build_examples + python python-bindings + test build_tests + tools build_tools +) + +# Note: the python feature currently requires `python3-dev` and `python3-setuptools` installed on the system +if("python" IN_LIST FEATURES) + vcpkg_find_acquire_program(PYTHON3) + get_filename_component(PYTHON3_PATH ${PYTHON3} DIRECTORY) + vcpkg_add_to_path(${PYTHON3_PATH}) + + file(GLOB BOOST_PYTHON_LIB "${CURRENT_INSTALLED_DIR}/lib/*boost_python*") + string(REGEX REPLACE ".*(python)([0-9])([0-9]+).*" "\\1\\2\\3" _boost-python-module-name "${BOOST_PYTHON_LIB}") +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO arvidn/libtorrent + REF v1.2.12 + SHA512 78be4c12e12f593154eda0960aaf9583fe27310e0223dbb21220400c5339744c9b2b11afa880fea30f77b4c0d07345937ff8a20d58d2d4ed7dcda84601380e20 + HEAD_REF RC_1_2 + PATCHES + ${ICONV_PATCH} +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA # Disable this option if project cannot be built with Ninja + OPTIONS + ${FEATURE_OPTIONS} + -DCMAKE_CXX_STANDARD=17 + -Dboost-python-module-name=${_boost-python-module-name} + -Dstatic_runtime=${_static_runtime} + -DPython3_USE_STATIC_LIBS=ON +) + +vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/LibtorrentRasterbar TARGET_PATH share/LibtorrentRasterbar) + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + +# Do not duplicate include files +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share ${CURRENT_PACKAGES_DIR}/share/cmake) diff --git a/vcpkg/libtorrent/readme.md b/vcpkg/libtorrent/readme.md new file mode 100644 index 000000000..beda853e6 --- /dev/null +++ b/vcpkg/libtorrent/readme.md @@ -0,0 +1,2 @@ +Files are taken from upstream repository: https://github.com/microsoft/vcpkg/tree/master/ports/libtorrent +This port is for satisfying CI needs, NOT recommended for general use.