aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Romero <viromer@microsoft.com>2019-01-23 11:10:26 -0800
committerVictor Romero <viromer@microsoft.com>2019-01-23 11:10:26 -0800
commit994c03700d635031089c2ea71d10423e7d941c1a (patch)
treef77c51eaa7fcde381f269d5e135447547718aced
parent7bc18139e37b4a9db949bc96bfb13c22f59f8d37 (diff)
parentf7672fbf6d23423119424d6975bc1acd78e04aac (diff)
downloadvcpkg-994c03700d635031089c2ea71d10423e7d941c1a.tar.gz
vcpkg-994c03700d635031089c2ea71d10423e7d941c1a.zip
Merge branch 'master' of https://github.com/Microsoft/vcpkg into dev/viromer/5206
-rw-r--r--ports/angle/CMakeLists.txt21
-rw-r--r--ports/angle/CONTROL2
-rw-r--r--ports/angle/portfile.cmake17
-rw-r--r--ports/celero/CONTROL2
-rw-r--r--ports/celero/portfile.cmake4
-rw-r--r--ports/freetype/0004-Fix-macOS-defines.patch23
-rw-r--r--ports/freetype/CONTROL2
-rw-r--r--ports/freetype/portfile.cmake18
-rw-r--r--ports/hpx/CONTROL4
-rw-r--r--ports/hpx/portfile.cmake14
-rw-r--r--ports/libgeotiff/CONTROL2
-rw-r--r--ports/libgeotiff/portfile.cmake3
-rw-r--r--ports/podofo/CONTROL2
-rw-r--r--ports/podofo/portfile.cmake1
-rw-r--r--ports/podofo/unique_ptr.patch198
-rw-r--r--ports/tinyobjloader/CONTROL2
-rw-r--r--ports/tinyobjloader/portfile.cmake11
-rw-r--r--ports/x265/CONTROL2
-rw-r--r--ports/x265/portfile.cmake7
-rw-r--r--toolsrc/.clang-format3
-rw-r--r--toolsrc/include/vcpkg/base/graphs.h43
-rw-r--r--toolsrc/include/vcpkg/dependencies.h20
-rw-r--r--toolsrc/src/vcpkg/commands.ci.cpp36
-rw-r--r--toolsrc/src/vcpkg/dependencies.cpp21
24 files changed, 391 insertions, 67 deletions
diff --git a/ports/angle/CMakeLists.txt b/ports/angle/CMakeLists.txt
index d553c9dbb..2616b4d48 100644
--- a/ports/angle/CMakeLists.txt
+++ b/ports/angle/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.8)
-project(angle CXX)
+project(angle)
if(WIN32 AND NOT WINDOWS_STORE)
set(WINDOWS_DESKTOP 1)
@@ -45,13 +45,22 @@ include_directories(include src ${CMAKE_CURRENT_BINARY_DIR}/include)
##########
# angle::common
if(WINDOWS_ANY)
- set(ANGLE_COMMON_PLATFORM_FILTER "_linux|_mac")
+ set(ANGLE_COMMON_PLATFORM_FILTER "_linux|_mac|_posix")
elseif(LINUX)
set(ANGLE_COMMON_PLATFORM_FILTER "_win|_mac")
elseif(APPLE)
set(ANGLE_COMMON_PLATFORM_FILTER "_linux|_win")
endif()
-file(GLOB ANGLE_COMMON_SOURCES "src/common/*.h" "src/common/*.inl" "src/common/*.cpp" "src/common/third_party/base/*.h")
+file(GLOB ANGLE_COMMON_SOURCES
+ "src/common/*.h"
+ "src/common/*.inl"
+ "src/common/*.cpp"
+ "src/common/third_party/smhasher/src/*.h"
+ "src/common/third_party/smhasher/src/*.cpp"
+ "src/common/third_party/xxhash/*.h"
+ "src/common/third_party/xxhash/*.c"
+ "src/common/third_party/base/anglebase/*.h"
+ "src/common/third_party/base/anglebase/*.cc")
list(FILTER ANGLE_COMMON_SOURCES EXCLUDE REGEX "_unittest|event_tracer|${ANGLE_COMMON_PLATFORM_FILTER}")
add_library(angle_common STATIC ${ANGLE_COMMON_SOURCES})
target_include_directories(angle_common PUBLIC src/common/third_party/base)
@@ -71,6 +80,10 @@ file(GLOB TRANSLATOR_SOURCES
"src/compiler/translator/glslang.y"
"src/compiler/translator/*.h"
"src/compiler/translator/*.cpp"
+ "src/compiler/translator/tree_util/*.h"
+ "src/compiler/translator/tree_util/*.cpp"
+ "src/compiler/translator/tree_ops/*.h"
+ "src/compiler/translator/tree_ops/*.cpp"
"src/third_party/compiler/ArrayBoundsClamper.cpp"
)
add_library(angle_translator STATIC ${TRANSLATOR_SOURCES})
@@ -221,6 +234,7 @@ elseif(WINDOWS_DESKTOP)
angle::renderer::d3d
angle::renderer::win32
angle::renderer::opengl
+ gdi32
)
else()
set(LIBANGLE_RENDERER_PLATFORM )
@@ -260,6 +274,7 @@ target_compile_definitions(libGLESv2
PRIVATE -DLIBGLESV2_IMPLEMENTATION
PUBLIC
-DGL_GLEXT_PROTOTYPES
+ -DGL_API=
-DGL_APICALL=
-DEGLAPI=
)
diff --git a/ports/angle/CONTROL b/ports/angle/CONTROL
index 46e3407e8..dc348c48d 100644
--- a/ports/angle/CONTROL
+++ b/ports/angle/CONTROL
@@ -1,5 +1,5 @@
Source: angle
-Version: 2017-06-14-8d471f-5
+Version: 2019-01-14-c2ee2cc
Description: A conformant OpenGL ES implementation for Windows, Mac and Linux.
The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is underway, and future plans include compute shader support (ES 3.1) and MacOS support.
Build-Depends: egl-registry
diff --git a/ports/angle/portfile.cmake b/ports/angle/portfile.cmake
index e21aa83bc..16179fee7 100644
--- a/ports/angle/portfile.cmake
+++ b/ports/angle/portfile.cmake
@@ -1,5 +1,15 @@
include(vcpkg_common_functions)
+if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(ANGLE_CPU_BITNESS ANGLE_IS_32_BIT_CPU)
+elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(ANGLE_CPU_BITNESS ANGLE_IS_64_BIT_CPU)
+elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ set(ANGLE_CPU_BITNESS ANGLE_IS_32_BIT_CPU)
+else()
+ message(FATAL_ERROR "Unsupported architecture: ${VCPKG_TARGET_ARCHITECTURE}")
+endif()
+
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
message(STATUS "ANGLE currently only supports being built as a dynamic library")
set(VCPKG_LIBRARY_LINKAGE dynamic)
@@ -12,9 +22,8 @@ endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO google/angle
- REF 8d471f907d8d4ec1d46bc9366493bd76c11c1870
- SHA512 b4670caeeaa5d662bc82702eb5f620123812ea6b5d82f57a65df54ae25cdaa5c9ff0fdb592448b07569d9c09af3d3c51b0b2f135c5800d1845b425009656bf18
- HEAD_REF master
+ REF chromium/3672
+ SHA512 dd6a05f0f1f4544b8646c41ffcb4d5e3b41f5261771ada47889345a24d4e55e6370df55a26c354a7073efcde307644cec6c6064ea6fe498ed6b52c3017249f81
)
vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
@@ -28,6 +37,8 @@ vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=1
+ OPTIONS
+ -D${ANGLE_CPU_BITNESS}=1
)
vcpkg_install_cmake()
diff --git a/ports/celero/CONTROL b/ports/celero/CONTROL
index 2afd57484..aa90dad66 100644
--- a/ports/celero/CONTROL
+++ b/ports/celero/CONTROL
@@ -1,3 +1,3 @@
Source: celero
-Version: 2.4.0
+Version: 2.4.0-1
Description: Celero is a modern cross-platform (Windows, Linux, MacOS) Microbenchmarking library for C++.
diff --git a/ports/celero/portfile.cmake b/ports/celero/portfile.cmake
index f9288fb8e..61dbec10e 100644
--- a/ports/celero/portfile.cmake
+++ b/ports/celero/portfile.cmake
@@ -3,8 +3,8 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO DigitalInBlue/Celero
- REF v2.4.0
- SHA512 4ba9f26bcda85bea00de27a6e8166f874f2c3852f74c54c089373caf71e1c066ac771fda73799d84c4c7a20986a71fd7a3b101b7b8972b9797ab3e8ed7918c30
+ REF 9f41c21e35b04d7d65dcb0aff4c962f6e5f2cbc3
+ SHA512 62a4803e61cf9e876c09cc68be07d4bfa31f291d3ced23e092347bf43b48086b3ba7862fc454082f42263d9ec0c260e8ba58da5c0c461ebff9c871209784e2a7
HEAD_REF master
)
diff --git a/ports/freetype/0004-Fix-macOS-defines.patch b/ports/freetype/0004-Fix-macOS-defines.patch
new file mode 100644
index 000000000..92e676b52
--- /dev/null
+++ b/ports/freetype/0004-Fix-macOS-defines.patch
@@ -0,0 +1,23 @@
+--- a/CMakeLists.txt 2018-11-16 10:49:22.000000000 +0100
++++ b/CMakeLists.txt 2018-11-16 10:50:26.000000000 +0100
+@@ -200,17 +200,17 @@
+ FTCONFIG_H)
+ if (HAVE_UNISTD_H)
+ string(REGEX REPLACE
+- "#undef +(HAVE_UNISTD_H)" "#define \\1"
++ "#undef +(HAVE_UNISTD_H)" "#define \\1 1"
+ FTCONFIG_H "${FTCONFIG_H}")
+ endif ()
+ if (HAVE_FCNTL_H)
+ string(REGEX REPLACE
+- "#undef +(HAVE_FCNTL_H)" "#define \\1"
++ "#undef +(HAVE_FCNTL_H)" "#define \\1 1"
+ FTCONFIG_H "${FTCONFIG_H}")
+ endif ()
+ if (HAVE_STDINT_H)
+ string(REGEX REPLACE
+- "#undef +(HAVE_STDINT_H)" "#define \\1"
++ "#undef +(HAVE_STDINT_H)" "#define \\1 1"
+ FTCONFIG_H "${FTCONFIG_H}")
+ endif ()
+ string(REPLACE "/undef " "#undef "
diff --git a/ports/freetype/CONTROL b/ports/freetype/CONTROL
index 567cf9020..1052412b4 100644
--- a/ports/freetype/CONTROL
+++ b/ports/freetype/CONTROL
@@ -1,4 +1,4 @@
Source: freetype
-Version: 2.8.1-3
+Version: 2.8.1-4
Build-Depends: zlib, bzip2, libpng
Description: A library to render fonts.
diff --git a/ports/freetype/portfile.cmake b/ports/freetype/portfile.cmake
index d74c53220..e60f9ecb3 100644
--- a/ports/freetype/portfile.cmake
+++ b/ports/freetype/portfile.cmake
@@ -1,18 +1,20 @@
include(vcpkg_common_functions)
+
set(FT_VERSION 2.8.1)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/freetype-${FT_VERSION})
vcpkg_download_distfile(ARCHIVE
URLS "https://download-mirror.savannah.gnu.org/releases/freetype/freetype-${FT_VERSION}.tar.bz2"
FILENAME "freetype-${FT_VERSION}.tar.bz2"
SHA512 ca59e47f0fceeeb9b8032be2671072604d0c79094675df24187829c05e99757d0a48a0f8062d4d688e056f783aa8f6090d732ad116562e94784fccf1339eb823
)
-vcpkg_extract_source_archive(${ARCHIVE})
-
-vcpkg_apply_patches(
- SOURCE_PATH ${SOURCE_PATH}
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001-Support-Windows-DLLs-via-CMAKE_WINDOWS_EXPORT_ALL_SY.patch
- ${CMAKE_CURRENT_LIST_DIR}/0002-Add-CONFIG_INSTALL_PATH-option.patch
- ${CMAKE_CURRENT_LIST_DIR}/0003-Fix-UWP.patch
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ REF ${FT_VERSION}
+ PATCHES
+ 0001-Support-Windows-DLLs-via-CMAKE_WINDOWS_EXPORT_ALL_SY.patch
+ 0002-Add-CONFIG_INSTALL_PATH-option.patch
+ 0003-Fix-UWP.patch
+ 0004-Fix-macOS-defines.patch
)
vcpkg_configure_cmake(
diff --git a/ports/hpx/CONTROL b/ports/hpx/CONTROL
index ff6801a42..253b3aaae 100644
--- a/ports/hpx/CONTROL
+++ b/ports/hpx/CONTROL
@@ -1,5 +1,5 @@
Source: hpx
-Version: 1.1.0-1
-Build-Depends: hwloc, boost-accumulators, boost-algorithm, boost-asio, boost-assign, boost-atomic, boost-bimap, boost-chrono, boost-config, boost-context, boost-date-time, boost-dynamic-bitset, boost-exception, boost-filesystem, boost-format, boost-iostreams, boost-lockfree, boost-parameter, boost-program-options, boost-range, boost-regex, boost-signals2, boost-smart-ptr, boost-spirit, boost-system, boost-thread, boost-throw-exception, boost-variant, boost-winapi
+Version: 1.2.0
+Build-Depends: hwloc, boost-accumulators, boost-algorithm, boost-asio, boost-assign, boost-atomic, boost-bimap, boost-chrono, boost-config, boost-context, boost-dynamic-bitset, boost-exception, boost-filesystem, boost-iostreams, boost-lockfree, boost-program-options, boost-range, boost-regex, boost-signals2, boost-smart-ptr, boost-spirit, boost-system, boost-throw-exception, boost-variant, boost-winapi
Description: The C++ Standards Library for Concurrency and Parallelism
HPX is a C++ Standards Library for Concurrency and Parallelism. It implements all of the corresponding facilities as defined by the C++ Standard. Additionally, in HPX we implement functionalities proposed as part of the ongoing C++ standardization process. We also extend the C++ Standard APIs to the distributed case.
diff --git a/ports/hpx/portfile.cmake b/ports/hpx/portfile.cmake
index c200a6278..704d944fc 100644
--- a/ports/hpx/portfile.cmake
+++ b/ports/hpx/portfile.cmake
@@ -8,8 +8,8 @@ endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO STEllAR-GROUP/hpx
- REF 1.1.0
- SHA512 435250143ddbd2608995fe3dc5c229a096312d7ac930925ae56d0abd2d5689886126f6e81bc7e37b84ca9bc99f951ef1f39580168a359c48788ac8d008bc7078
+ REF 1.2.0
+ SHA512 caf2650381856db6a96fd4b120975d94d68d9bb19ada1d6cd076abe2d4aa1418e410167f774a881d95eacd0d46bbd5f90f16a4c77b4a2cf00e5b24ea17bfe670
HEAD_REF master
)
@@ -20,7 +20,6 @@ vcpkg_configure_cmake(
"-DBOOST_ROOT=${CURRENT_INSTALLED_DIR}/share/boost"
"-DHWLOC_ROOT=${CURRENT_INSTALLED_DIR}/share/hwloc"
-DHPX_WITH_VCPKG=ON
- -DHPX_WITH_HWLOC=ON
-DHPX_WITH_TESTS=OFF
-DHPX_WITH_EXAMPLES=OFF
-DHPX_WITH_TOOLS=OFF
@@ -30,9 +29,6 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
# post build cleanup
-file(GLOB SHARE_DIR ${CURRENT_PACKAGES_DIR}/share/hpx-*)
-file(RENAME ${SHARE_DIR} ${CURRENT_PACKAGES_DIR}/share/hpx)
-
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/HPX)
file(GLOB_RECURSE CMAKE_FILES "${CURRENT_PACKAGES_DIR}/share/hpx/*.cmake")
@@ -44,7 +40,7 @@ foreach(CMAKE_FILE IN LISTS CMAKE_FILES)
_contents "${_contents}")
string(REGEX REPLACE
"lib/hpx/([A-Za-z0-9_.-]+\\.dll)"
- "bin/\\1"
+ "bin/hpx/\\1"
_contents "${_contents}")
file(WRITE ${CMAKE_FILE} "${_contents}")
endforeach()
@@ -65,7 +61,7 @@ endif()
file(GLOB DLLS ${CURRENT_PACKAGES_DIR}/lib/hpx/*.dll)
if(DLLS)
- file(COPY ${DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
+ file(COPY ${DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/bin/hpx)
file(REMOVE ${DLLS})
endif()
@@ -77,7 +73,7 @@ endif()
file(GLOB DLLS ${CURRENT_PACKAGES_DIR}/debug/lib/hpx/*.dll)
if(DLLS)
- file(COPY ${DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
+ file(COPY ${DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin/hpx)
file(REMOVE ${DLLS})
endif()
diff --git a/ports/libgeotiff/CONTROL b/ports/libgeotiff/CONTROL
index dea361457..edfa7f0cb 100644
--- a/ports/libgeotiff/CONTROL
+++ b/ports/libgeotiff/CONTROL
@@ -1,4 +1,4 @@
Source: libgeotiff
-Version: 1.4.2-6
+Version: 1.4.2-7
Description: Libgeotiff is an open source library normally hosted on top of ​libtiff for reading, and writing GeoTIFF information tags.
Build-Depends: tiff, proj4, zlib, libjpeg-turbo
diff --git a/ports/libgeotiff/portfile.cmake b/ports/libgeotiff/portfile.cmake
index afd203b03..fc79fe15d 100644
--- a/ports/libgeotiff/portfile.cmake
+++ b/ports/libgeotiff/portfile.cmake
@@ -21,6 +21,9 @@ vcpkg_extract_source_archive_ex(
0006-Fix-utility-link-error.patch
)
+# Delete FindPROJ4.cmake
+file(REMOVE ${SOURCE_PATH}/cmake/FindPROJ4.cmake)
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
diff --git a/ports/podofo/CONTROL b/ports/podofo/CONTROL
index e5485c493..9b6abdb17 100644
--- a/ports/podofo/CONTROL
+++ b/ports/podofo/CONTROL
@@ -1,5 +1,5 @@
Source: podofo
-Version: 0.9.6-1
+Version: 0.9.6-3
Description: PoDoFo is a library to work with the PDF file format
Build-Depends: zlib, libpng, libjpeg-turbo, tiff, openssl (!windows&!uwp), freetype
diff --git a/ports/podofo/portfile.cmake b/ports/podofo/portfile.cmake
index 0897576d0..a0b27a7a7 100644
--- a/ports/podofo/portfile.cmake
+++ b/ports/podofo/portfile.cmake
@@ -10,6 +10,7 @@ vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
REF ${PODOFO_VERSION}
+ PATCHES unique_ptr.patch
)
set(PODOFO_NO_FONTMANAGER ON)
diff --git a/ports/podofo/unique_ptr.patch b/ports/podofo/unique_ptr.patch
new file mode 100644
index 000000000..5c70e8471
--- /dev/null
+++ b/ports/podofo/unique_ptr.patch
@@ -0,0 +1,198 @@
+diff -ruNp a/src/base/PdfFilter.cpp b/src/base/PdfFilter.cpp
+--- a/src/base/PdfFilter.cpp 2016-11-18 20:08:56.000000000 +0100
++++ b/src/base/PdfFilter.cpp 2019-01-16 10:25:22.934430500 +0100
+@@ -131,7 +131,7 @@ class PdfFilteredEncodeStream : public P
+
+ private:
+ PdfOutputStream* m_pOutputStream;
+- std::auto_ptr<PdfFilter> m_filter;
++ std::unique_ptr<PdfFilter> m_filter;
+ };
+
+ /** Create a filter that is a PdfOutputStream.
+@@ -206,7 +206,7 @@ class PdfFilteredDecodeStream : public P
+
+ private:
+ PdfOutputStream* m_pOutputStream;
+- std::auto_ptr<PdfFilter> m_filter;
++ std::unique_ptr<PdfFilter> m_filter;
+ bool m_bFilterFailed;
+ };
+
+@@ -264,7 +264,7 @@ PdfFilterFactory::PdfFilterFactory()
+ {
+ }
+
+-std::auto_ptr<PdfFilter> PdfFilterFactory::Create( const EPdfFilter eFilter )
++std::unique_ptr<PdfFilter> PdfFilterFactory::Create( const EPdfFilter eFilter )
+ {
+ PdfFilter* pFilter = NULL;
+ switch( eFilter )
+@@ -316,7 +316,7 @@ std::auto_ptr<PdfFilter> PdfFilterFactor
+ break;
+ }
+
+- return std::auto_ptr<PdfFilter>(pFilter);
++ return std::unique_ptr<PdfFilter>(pFilter);
+ }
+
+ PdfOutputStream* PdfFilterFactory::CreateEncodeStream( const TVecFilters & filters, PdfOutputStream* pStream )
+diff -ruNp a/src/base/PdfFilter.h b/src/base/PdfFilter.h
+--- a/src/base/PdfFilter.h 2016-11-18 20:08:56.000000000 +0100
++++ b/src/base/PdfFilter.h 2019-01-16 10:25:22.981323900 +0100
+@@ -454,7 +454,7 @@ class PODOFO_API PdfFilterFactory {
+ public:
+ /** Create a filter from an enum.
+ *
+- * Ownership is transferred to the caller, who should let the auto_ptr
++ * Ownership is transferred to the caller, who should let the unique_ptr
+ * the filter is returned in take care of freeing it when they're done
+ * with it.
+ *
+@@ -463,7 +463,7 @@ class PODOFO_API PdfFilterFactory {
+ * \returns a new PdfFilter allocated using new, or NULL if no
+ * filter is available for this type.
+ */
+- static std::auto_ptr<PdfFilter> Create( const EPdfFilter eFilter );
++ static std::unique_ptr<PdfFilter> Create( const EPdfFilter eFilter );
+
+ /** Create a PdfOutputStream that applies a list of filters
+ * on all data written to it.
+diff -ruNp a/src/base/PdfMemStream.cpp b/src/base/PdfMemStream.cpp
+--- a/src/base/PdfMemStream.cpp 2016-11-18 20:08:56.000000000 +0100
++++ b/src/base/PdfMemStream.cpp 2019-01-16 10:25:23.479681200 +0100
+@@ -245,7 +245,7 @@ void PdfMemStream::FlateCompressStreamDa
+ if( !m_lLength )
+ return;
+
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_FlateDecode );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_FlateDecode );
+ if( pFilter.get() )
+ {
+ pFilter->Encode( m_buffer.GetBuffer(), m_buffer.GetSize(), &pBuffer, &lLen );
+diff -ruNp a/src/base/PdfStream.cpp b/src/base/PdfStream.cpp
+--- a/src/base/PdfStream.cpp 2016-11-18 20:08:56.000000000 +0100
++++ b/src/base/PdfStream.cpp 2019-01-16 10:25:24.387075400 +0100
+@@ -91,9 +91,9 @@ void PdfStream::GetFilteredCopy( char**
+ PdfMemoryOutputStream stream;
+ if( vecFilters.size() )
+ {
+- // Use std::auto_ptr so that pDecodeStream is deleted
++ // Use std::unique_ptr so that pDecodeStream is deleted
+ // even in the case of an exception
+- std::auto_ptr<PdfOutputStream> pDecodeStream( PdfFilterFactory::CreateDecodeStream( vecFilters, &stream,
++ std::unique_ptr<PdfOutputStream> pDecodeStream( PdfFilterFactory::CreateDecodeStream( vecFilters, &stream,
+ m_pParent ?
+ &(m_pParent->GetDictionary()) : NULL ) );
+
+diff -ruNp a/src/base/PdfString.cpp b/src/base/PdfString.cpp
+--- a/src/base/PdfString.cpp 2018-03-10 17:30:53.000000000 +0100
++++ b/src/base/PdfString.cpp 2019-01-16 10:25:24.480799400 +0100
+@@ -673,7 +673,7 @@ PdfString PdfString::HexEncode() const
+ return *this;
+ else
+ {
+- std::auto_ptr<PdfFilter> pFilter;
++ std::unique_ptr<PdfFilter> pFilter;
+
+ pdf_long lLen = (m_buffer.GetSize() - 1) << 1;
+ PdfString str;
+@@ -702,7 +702,7 @@ PdfString PdfString::HexDecode() const
+ return *this;
+ else
+ {
+- std::auto_ptr<PdfFilter> pFilter;
++ std::unique_ptr<PdfFilter> pFilter;
+
+ pdf_long lLen = m_buffer.GetSize() >> 1;
+ PdfString str;
+diff -ruNp a/src/doc/PdfFont.cpp b/src/doc/PdfFont.cpp
+--- a/src/doc/PdfFont.cpp 2016-05-13 16:04:34.000000000 +0200
++++ b/src/doc/PdfFont.cpp 2019-01-16 10:25:26.372048300 +0100
+@@ -145,7 +145,7 @@ void PdfFont::WriteStringToStream( const
+ pdf_long lLen = 0;
+ char* pBuffer = NULL;
+
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
+ pFilter->Encode( buffer.GetBuffer(), buffer.GetSize(), &pBuffer, &lLen );
+
+ pStream->Append( "<", 1 );
+diff -ruNp a/src/doc/PdfPainter.cpp b/src/doc/PdfPainter.cpp
+--- a/src/doc/PdfPainter.cpp 2018-03-06 15:04:03.000000000 +0100
++++ b/src/doc/PdfPainter.cpp 2019-01-16 10:25:28.512159900 +0100
+@@ -829,7 +829,7 @@ void PdfPainter::DrawText( double dX, do
+
+ /*
+ char* pBuffer;
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
+ pFilter->Encode( sString.GetString(), sString.GetLength(), &pBuffer, &lLen );
+
+ m_pCanvas->Append( pBuffer, lLen );
+diff -ruNp a/test/CreationTest/CreationTest.cpp b/test/CreationTest/CreationTest.cpp
+--- a/test/CreationTest/CreationTest.cpp 2018-02-25 12:48:38.000000000 +0100
++++ b/test/CreationTest/CreationTest.cpp 2019-01-16 10:25:29.605315700 +0100
+@@ -37,7 +37,7 @@ void WriteStringToStream( const PdfStrin
+ pdf_long lLen = 0;
+ char* pBuffer = NULL;
+
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
+ pFilter->Encode( buffer.GetBuffer(), buffer.GetSize(), &pBuffer, &lLen );
+
+ oss << "<";
+diff -ruNp a/test/FilterTest/FilterTest.cpp b/test/FilterTest/FilterTest.cpp
+--- a/test/FilterTest/FilterTest.cpp 2018-03-10 15:06:27.000000000 +0100
++++ b/test/FilterTest/FilterTest.cpp 2019-01-16 10:25:29.777214800 +0100
+@@ -57,7 +57,7 @@ void test_filter( EPdfFilter eFilter, co
+ pdf_long lEncoded;
+ pdf_long lDecoded;
+
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( eFilter );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( eFilter );
+ if( !pFilter.get() )
+ {
+ printf("!!! Filter %i not implemented.\n", eFilter);
+@@ -256,7 +256,7 @@ int main()
+ char* pLargeBuffer2 = static_cast<char*>(malloc( strlen(pszInputAscii85Lzw) * 6 ));
+
+ try {
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCII85Decode );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCII85Decode );
+ pFilter->Decode( pszInputAscii85Lzw, strlen(pszInputAscii85Lzw),
+ &pLargeBuffer1, &lLargeBufer1 );
+ pFilter->Encode( pLargeBuffer1, lLargeBufer1,
+diff -ruNp a/test/VariantTest/VariantTest.cpp b/test/VariantTest/VariantTest.cpp
+--- a/test/VariantTest/VariantTest.cpp 2010-10-21 19:09:00.000000000 +0200
++++ b/test/VariantTest/VariantTest.cpp 2019-01-16 10:25:32.418465600 +0100
+@@ -124,7 +124,7 @@ int main()
+ printf("This test tests the PdfVariant class.\n");
+ printf("---\n");
+
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_ASCIIHexDecode );
+
+ // testing strings
+ TEST_SAFE_OP( Test( "(Hallo Welt!)", ePdfDataType_String ) );
+diff -ruNp a/test/unit/FilterTest.cpp b/test/unit/FilterTest.cpp
+--- a/test/unit/FilterTest.cpp 2016-05-12 22:25:45.000000000 +0200
++++ b/test/unit/FilterTest.cpp 2019-01-16 10:25:31.464162600 +0100
+@@ -59,7 +59,7 @@ void FilterTest::TestFilter( EPdfFilter
+ pdf_long lEncoded;
+ pdf_long lDecoded;
+
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( eFilter );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( eFilter );
+ if( !pFilter.get() )
+ {
+ printf("!!! Filter %i not implemented.\n", eFilter);
+@@ -123,7 +123,7 @@ void FilterTest::testFilters()
+
+ void FilterTest::testCCITT()
+ {
+- std::auto_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_CCITTFaxDecode );
++ std::unique_ptr<PdfFilter> pFilter = PdfFilterFactory::Create( ePdfFilter_CCITTFaxDecode );
+ if( !pFilter.get() )
+ {
+ printf("!!! ePdfFilter_CCITTFaxDecode not implemented skipping test!\n");
diff --git a/ports/tinyobjloader/CONTROL b/ports/tinyobjloader/CONTROL
index 16668c167..7967039a7 100644
--- a/ports/tinyobjloader/CONTROL
+++ b/ports/tinyobjloader/CONTROL
@@ -1,3 +1,3 @@
Source: tinyobjloader
-Version: 1.2.0-1
+Version: 1.4.1
Description: Tiny but powerful single file wavefront obj loader
diff --git a/ports/tinyobjloader/portfile.cmake b/ports/tinyobjloader/portfile.cmake
index bc70373a6..fd2dbf8a4 100644
--- a/ports/tinyobjloader/portfile.cmake
+++ b/ports/tinyobjloader/portfile.cmake
@@ -4,26 +4,25 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic" AND (NOT VCPKG_CMAKE_SYSTEM_NAME OR
endif()
include(vcpkg_common_functions)
+
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO syoyo/tinyobjloader
- REF 8fd9f6e57bf8c70d5ae47cf0f0d1bf1ccae2dfc2
- SHA512 5b6a2822989c5a28eabee0a33724c045b5d07cf0ccfd4288c7c3a5a2cc5b0c3f6ee8aca45e8e22c941278fbbfabd8f909f5010cd34b9d905c4d84102d151c73b
+ REF v1.4.1
+ SHA512 5b18fed89435a95fb3fc89829ea6904b4cc4508b0907642b39194e3e3c55678ddc1c07687e4b7ea171f270f7188ca593ed53b828c022667e54a889c36c60373e
HEAD_REF master
)
-string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" TINYOBJLOADER_COMPILATION_SHARED)
-
vcpkg_configure_cmake(
SOURCE_PATH "${SOURCE_PATH}"
PREFER_NINJA
OPTIONS
- -DTINYOBJLOADER_COMPILATION_SHARED=${TINYOBJLOADER_COMPILATION_SHARED}
-DCMAKE_INSTALL_DOCDIR:STRING=share/tinyobjloader
)
vcpkg_install_cmake()
-vcpkg_fixup_cmake_targets(CONFIG_PATH lib/tinyobjloader/cmake)
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/tinyobjloader/cmake")
file(
REMOVE_RECURSE
diff --git a/ports/x265/CONTROL b/ports/x265/CONTROL
index 537556763..f2185d2f0 100644
--- a/ports/x265/CONTROL
+++ b/ports/x265/CONTROL
@@ -1,3 +1,3 @@
Source: x265
-Version: 2.9-1
+Version: 2.9-2
Description: x265 is a H.265 / HEVC video encoder application library, designed to encode video or images into an H.265 / HEVC encoded bitstream.
diff --git a/ports/x265/portfile.cmake b/ports/x265/portfile.cmake
index 090a2db22..87f11c4f4 100644
--- a/ports/x265/portfile.cmake
+++ b/ports/x265/portfile.cmake
@@ -29,7 +29,12 @@ vcpkg_copy_pdbs()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/x265)
-file(RENAME ${CURRENT_PACKAGES_DIR}/bin/x265.exe ${CURRENT_PACKAGES_DIR}/tools/x265/x265.exe)
+
+if(UNIX)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/bin/x265 ${CURRENT_PACKAGES_DIR}/tools/x265/x265)
+elseif(WIN32)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/bin/x265.exe ${CURRENT_PACKAGES_DIR}/tools/x265/x265.exe)
+endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin)
diff --git a/toolsrc/.clang-format b/toolsrc/.clang-format
index 4700062c7..c14765672 100644
--- a/toolsrc/.clang-format
+++ b/toolsrc/.clang-format
@@ -29,4 +29,5 @@ IndentCaseLabels: true
KeepEmptyLinesAtTheStartOfBlocks: false
NamespaceIndentation: All
PenaltyReturnTypeOnItsOwnLine: 1000
-SpaceAfterTemplateKeyword: false \ No newline at end of file
+SpaceAfterTemplateKeyword: false
+SpaceBeforeCpp11BracedList: false
diff --git a/toolsrc/include/vcpkg/base/graphs.h b/toolsrc/include/vcpkg/base/graphs.h
index 1b0fa61c7..6cff75ad3 100644
--- a/toolsrc/include/vcpkg/base/graphs.h
+++ b/toolsrc/include/vcpkg/base/graphs.h
@@ -29,13 +29,36 @@ namespace vcpkg::Graphs
virtual U load_vertex_data(const V& vertex) const = 0;
};
+ struct Randomizer
+ {
+ virtual int random(int max_exclusive) = 0;
+
+ protected:
+ ~Randomizer() {}
+ };
+
namespace details
{
+ template<class Container>
+ void shuffle(Container& c, Randomizer* r)
+ {
+ if (!r) return;
+ for (int i = static_cast<int>(c.size()); i > 1; --i)
+ {
+ auto j = r->random(i);
+ if (j != i - 1)
+ {
+ std::swap(c[i - 1], c[j]);
+ }
+ }
+ }
+
template<class V, class U>
void topological_sort_internal(const V& vertex,
const AdjacencyProvider<V, U>& f,
std::unordered_map<V, ExplorationStatus>& exploration_status,
- std::vector<U>& sorted)
+ std::vector<U>& sorted,
+ Randomizer* randomizer)
{
ExplorationStatus& status = exploration_status[vertex];
switch (status)
@@ -43,7 +66,7 @@ namespace vcpkg::Graphs
case ExplorationStatus::FULLY_EXPLORED: return;
case ExplorationStatus::PARTIALLY_EXPLORED:
{
- System::println("Cycle detected within graph:");
+ System::println("Cycle detected within graph at %s:", f.to_string(vertex));
for (auto&& node : exploration_status)
{
if (node.second == ExplorationStatus::PARTIALLY_EXPLORED)
@@ -57,8 +80,10 @@ namespace vcpkg::Graphs
{
status = ExplorationStatus::PARTIALLY_EXPLORED;
U vertex_data = f.load_vertex_data(vertex);
- for (const V& neighbour : f.adjacency_list(vertex_data))
- topological_sort_internal(neighbour, f, exploration_status, sorted);
+ auto neighbours = f.adjacency_list(vertex_data);
+ details::shuffle(neighbours, randomizer);
+ for (const V& neighbour : neighbours)
+ topological_sort_internal(neighbour, f, exploration_status, sorted, randomizer);
sorted.push_back(std::move(vertex_data));
status = ExplorationStatus::FULLY_EXPLORED;
@@ -69,15 +94,19 @@ namespace vcpkg::Graphs
}
}
- template<class VertexRange, class V, class U>
- std::vector<U> topological_sort(const VertexRange& starting_vertices, const AdjacencyProvider<V, U>& f)
+ template<class VertexContainer, class V, class U>
+ std::vector<U> topological_sort(VertexContainer starting_vertices,
+ const AdjacencyProvider<V, U>& f,
+ Randomizer* randomizer)
{
std::vector<U> sorted;
std::unordered_map<V, ExplorationStatus> exploration_status;
+ details::shuffle(starting_vertices, randomizer);
+
for (auto&& vertex : starting_vertices)
{
- details::topological_sort_internal(vertex, f, exploration_status, sorted);
+ details::topological_sort_internal(vertex, f, exploration_status, sorted, randomizer);
}
return sorted;
diff --git a/toolsrc/include/vcpkg/dependencies.h b/toolsrc/include/vcpkg/dependencies.h
index 3c3b8f267..16fdb3f73 100644
--- a/toolsrc/include/vcpkg/dependencies.h
+++ b/toolsrc/include/vcpkg/dependencies.h
@@ -7,8 +7,14 @@
#include <vcpkg/statusparagraphs.h>
#include <vcpkg/vcpkgpaths.h>
+#include <functional>
#include <vector>
+namespace vcpkg::Graphs
+{
+ struct Randomizer;
+}
+
namespace vcpkg::Dependencies
{
enum class RequestType
@@ -148,6 +154,11 @@ namespace vcpkg::Dependencies
struct ClusterGraph;
struct GraphPlan;
+ struct CreateInstallPlanOptions
+ {
+ Graphs::Randomizer* randomizer = nullptr;
+ };
+
struct PackageGraph
{
PackageGraph(const PortFileProvider& provider, const StatusParagraphs& status_db);
@@ -157,7 +168,7 @@ namespace vcpkg::Dependencies
const std::unordered_set<std::string>& prevent_default_features = {}) const;
void upgrade(const PackageSpec& spec) const;
- std::vector<AnyAction> serialize() const;
+ std::vector<AnyAction> serialize(const CreateInstallPlanOptions& options = {}) const;
private:
std::unique_ptr<GraphPlan> m_graph_plan;
@@ -174,9 +185,14 @@ namespace vcpkg::Dependencies
const std::vector<FeatureSpec>& specs,
const StatusParagraphs& status_db);
+ /// <summary>Figure out which actions are required to install features specifications in `specs`.</summary>
+ /// <param name="provider">Contains the ports of the current environment.</param>
+ /// <param name="specs">Feature specifications to resolve dependencies for.</param>
+ /// <param name="status_db">Status of installed packages in the current environment.</param>
std::vector<AnyAction> create_feature_install_plan(const PortFileProvider& provider,
const std::vector<FeatureSpec>& specs,
- const StatusParagraphs& status_db);
+ const StatusParagraphs& status_db,
+ const CreateInstallPlanOptions& options = {});
void print_plan(const std::vector<AnyAction>& action_plan, const bool is_recursive = true);
}
diff --git a/toolsrc/src/vcpkg/commands.ci.cpp b/toolsrc/src/vcpkg/commands.ci.cpp
index 551eee27b..5ca962744 100644
--- a/toolsrc/src/vcpkg/commands.ci.cpp
+++ b/toolsrc/src/vcpkg/commands.ci.cpp
@@ -2,6 +2,7 @@
#include <vcpkg/base/cache.h>
#include <vcpkg/base/files.h>
+#include <vcpkg/base/graphs.h>
#include <vcpkg/base/stringliteral.h>
#include <vcpkg/base/system.h>
#include <vcpkg/base/util.h>
@@ -30,14 +31,16 @@ namespace vcpkg::Commands::CI
static constexpr StringLiteral OPTION_EXCLUDE = "--exclude";
static constexpr StringLiteral OPTION_PURGE_TOMBSTONES = "--purge-tombstones";
static constexpr StringLiteral OPTION_XUNIT = "--x-xunit";
+ static constexpr StringLiteral OPTION_RANDOMIZE = "--x-randomize";
static constexpr std::array<CommandSetting, 2> CI_SETTINGS = {{
{OPTION_EXCLUDE, "Comma separated list of ports to skip"},
{OPTION_XUNIT, "File to output results in XUnit format (internal)"},
}};
- static constexpr std::array<CommandSwitch, 2> CI_SWITCHES = {{
+ static constexpr std::array<CommandSwitch, 3> CI_SWITCHES = {{
{OPTION_DRY_RUN, "Print out plan without execution"},
+ {OPTION_RANDOMIZE, "Randomize the install order"},
{OPTION_PURGE_TOMBSTONES, "Purge failure tombstones and retry building the ports"},
}};
@@ -69,7 +72,7 @@ namespace vcpkg::Commands::CI
std::map<PackageSpec, std::string> abi_tag_map;
std::set<PackageSpec> will_fail;
- const Build::BuildPackageOptions install_plan_options = {
+ const Build::BuildPackageOptions build_options = {
Build::UseHeadVersion::NO,
Build::AllowDownloads::YES,
Build::CleanBuildtrees::YES,
@@ -81,7 +84,9 @@ namespace vcpkg::Commands::CI
vcpkg::Cache<Triplet, Build::PreBuildInfo> pre_build_info_cache;
- auto action_plan = Dependencies::create_feature_install_plan(provider, fspecs, StatusParagraphs {});
+ auto action_plan = Dependencies::create_feature_install_plan(provider, fspecs, {}, {});
+
+ auto timer = Chrono::ElapsedTimer::create_started();
for (auto&& action : action_plan)
{
@@ -94,7 +99,7 @@ namespace vcpkg::Commands::CI
auto triplet = p->spec.triplet();
const Build::BuildPackageConfig build_config {
- *scf, triplet, paths.port_dir(p->spec), install_plan_options, p->feature_list};
+ *scf, triplet, paths.port_dir(p->spec), build_options, p->feature_list};
auto dependency_abis =
Util::fmap(p->computed_dependencies, [&](const PackageSpec& spec) -> Build::AbiEntry {
@@ -174,6 +179,8 @@ namespace vcpkg::Commands::CI
}
}
+ System::print("Time to determine pass/fail: %s\n", timer.elapsed().to_string());
+
return ret;
}
@@ -241,12 +248,31 @@ namespace vcpkg::Commands::CI
for (auto&& fspec : fspecs)
pgraph.install(fspec);
+ Dependencies::CreateInstallPlanOptions serialize_options;
+
+ struct RandomizerInstance : Graphs::Randomizer
+ {
+ virtual int random(int i) override
+ {
+ if (i <= 1) return 0;
+ std::uniform_int_distribution<int> d(0, i - 1);
+ return d(e);
+ }
+
+ std::random_device e;
+ } randomizer_instance;
+
+ if (Util::Sets::contains(options.switches, OPTION_RANDOMIZE))
+ {
+ serialize_options.randomizer = &randomizer_instance;
+ }
+
auto action_plan = [&]() {
int iterations = 0;
do
{
bool inconsistent = false;
- auto action_plan = pgraph.serialize();
+ auto action_plan = pgraph.serialize(serialize_options);
for (auto&& action : action_plan)
{
diff --git a/toolsrc/src/vcpkg/dependencies.cpp b/toolsrc/src/vcpkg/dependencies.cpp
index 60c43e4a8..19d8e7ae8 100644
--- a/toolsrc/src/vcpkg/dependencies.cpp
+++ b/toolsrc/src/vcpkg/dependencies.cpp
@@ -354,7 +354,7 @@ namespace vcpkg::Dependencies
auto installed_ports = get_installed_ports(status_db);
const std::unordered_set<PackageSpec> specs_as_set(specs.cbegin(), specs.cend());
- return Graphs::topological_sort(specs, RemoveAdjacencyProvider{status_db, installed_ports, specs_as_set});
+ return Graphs::topological_sort(specs, RemoveAdjacencyProvider{status_db, installed_ports, specs_as_set}, {});
}
std::vector<ExportPlanAction> create_export_plan(const std::vector<PackageSpec>& specs,
@@ -396,7 +396,7 @@ namespace vcpkg::Dependencies
const std::unordered_set<PackageSpec> specs_as_set(specs.cbegin(), specs.cend());
std::vector<ExportPlanAction> toposort =
- Graphs::topological_sort(specs, ExportAdjacencyProvider{status_db, specs_as_set});
+ Graphs::topological_sort(specs, ExportAdjacencyProvider{status_db, specs_as_set}, {});
return toposort;
}
@@ -605,13 +605,10 @@ namespace vcpkg::Dependencies
}
}
- /// <summary>Figure out which actions are required to install features specifications in `specs`.</summary>
- /// <param name="provider">Contains the ports of the current environment.</param>
- /// <param name="specs">Feature specifications to resolve dependencies for.</param>
- /// <param name="status_db">Status of installed packages in the current environment.</param>
std::vector<AnyAction> create_feature_install_plan(const PortFileProvider& provider,
const std::vector<FeatureSpec>& specs,
- const StatusParagraphs& status_db)
+ const StatusParagraphs& status_db,
+ const CreateInstallPlanOptions& options)
{
std::unordered_set<std::string> prevent_default_features;
for (auto&& spec : specs)
@@ -628,7 +625,7 @@ namespace vcpkg::Dependencies
pgraph.install(spec, prevent_default_features);
}
- return pgraph.serialize();
+ return pgraph.serialize(options);
}
/// <summary>Figure out which actions are required to install features specifications in `specs`.</summary>
@@ -672,13 +669,15 @@ namespace vcpkg::Dependencies
mark_minus(spec_cluster, *m_graph, *m_graph_plan, {});
}
- std::vector<AnyAction> PackageGraph::serialize() const
+ std::vector<AnyAction> PackageGraph::serialize(const CreateInstallPlanOptions& options) const
{
auto remove_vertex_list = m_graph_plan->remove_graph.vertex_list();
- auto remove_toposort = Graphs::topological_sort(remove_vertex_list, m_graph_plan->remove_graph);
+ auto remove_toposort =
+ Graphs::topological_sort(remove_vertex_list, m_graph_plan->remove_graph, options.randomizer);
auto insert_vertex_list = m_graph_plan->install_graph.vertex_list();
- auto insert_toposort = Graphs::topological_sort(insert_vertex_list, m_graph_plan->install_graph);
+ auto insert_toposort =
+ Graphs::topological_sort(insert_vertex_list, m_graph_plan->install_graph, options.randomizer);
std::vector<AnyAction> plan;