mirror of
https://github.com/cemu-project/vcpkg.git
synced 2025-02-24 19:43:33 +01:00
Merge from master
This commit is contained in:
commit
7326b6c64d
@ -1,4 +1,4 @@
|
|||||||
# Vcpkg
|
# Vcpkg 
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
Vcpkg helps you get C and C++ libraries on Windows. This tool and ecosystem are currently in a preview state; your involvement is vital to its success.
|
Vcpkg helps you get C and C++ libraries on Windows. This tool and ecosystem are currently in a preview state; your involvement is vital to its success.
|
||||||
|
@ -60,7 +60,7 @@ macro(extract_vcproj_sources VC_PROJECT OUT_VAR)
|
|||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# main module
|
# main module
|
||||||
extract_vcproj_sources(build/win32/vs14/glib.vcxproj GLIB_SOURCES)
|
extract_vcproj_sources(win32/vs14/glib.vcxproj GLIB_SOURCES)
|
||||||
list(APPEND GLIB_SOURCES glib/libcharset/localcharset.c) # modified internal version with prefixed symbols
|
list(APPEND GLIB_SOURCES glib/libcharset/localcharset.c) # modified internal version with prefixed symbols
|
||||||
add_library(glib ${GLIB_SOURCES})
|
add_library(glib ${GLIB_SOURCES})
|
||||||
target_compile_definitions(glib PRIVATE USE_SYSTEM_PCRE ${GLIB_EXPORT_MACRO} GLIB_COMPILATION G_LOG_DOMAIN="GLib" LIBDIR)
|
target_compile_definitions(glib PRIVATE USE_SYSTEM_PCRE ${GLIB_EXPORT_MACRO} GLIB_COMPILATION G_LOG_DOMAIN="GLib" LIBDIR)
|
||||||
@ -77,7 +77,7 @@ target_include_directories(gthread PRIVATE ${LIBINTL_INCLUDE_DIR})
|
|||||||
list(APPEND GLIB_TARGETS gthread)
|
list(APPEND GLIB_TARGETS gthread)
|
||||||
|
|
||||||
# gobject
|
# gobject
|
||||||
extract_vcproj_sources(build/win32/vs14/gobject.vcxproj GOBJECT_SOURCES)
|
extract_vcproj_sources(win32/vs14/gobject.vcxproj GOBJECT_SOURCES)
|
||||||
add_library(gobject ${GOBJECT_SOURCES})
|
add_library(gobject ${GOBJECT_SOURCES})
|
||||||
target_compile_definitions(gobject PRIVATE GOBJECT_COMPILATION ${GLIB_EXPORT_MACRO} G_LOG_DOMAIN="GLib-GObject")
|
target_compile_definitions(gobject PRIVATE GOBJECT_COMPILATION ${GLIB_EXPORT_MACRO} G_LOG_DOMAIN="GLib-GObject")
|
||||||
target_link_libraries(gobject gthread glib ${FFI_LIBRARY})
|
target_link_libraries(gobject gthread glib ${FFI_LIBRARY})
|
||||||
@ -92,7 +92,7 @@ target_include_directories(gmodule PRIVATE ${LIBINTL_INCLUDE_DIR})
|
|||||||
list(APPEND GLIB_TARGETS gmodule)
|
list(APPEND GLIB_TARGETS gmodule)
|
||||||
|
|
||||||
# gio
|
# gio
|
||||||
extract_vcproj_sources(build/win32/vs14/gio.vcxproj GIO_SOURCES)
|
extract_vcproj_sources(win32/vs14/gio.vcxproj GIO_SOURCES)
|
||||||
add_library(gio ${GIO_SOURCES})
|
add_library(gio ${GIO_SOURCES})
|
||||||
target_compile_definitions(gio PRIVATE GIO_COMPILATION ${GLIB_EXPORT_MACRO} G_LOG_DOMAIN="GLib-GIO")
|
target_compile_definitions(gio PRIVATE GIO_COMPILATION ${GLIB_EXPORT_MACRO} G_LOG_DOMAIN="GLib-GIO")
|
||||||
target_link_libraries(gio glib gmodule gobject ws2_32 shlwapi dnsapi iphlpapi ${ZLIB_LIBRARIES})
|
target_link_libraries(gio glib gmodule gobject ws2_32 shlwapi dnsapi iphlpapi ${ZLIB_LIBRARIES})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Source: glib
|
Source: glib
|
||||||
Version: 2.50.3
|
Version: 2.52.1
|
||||||
Description: Portable, general-purpose utility library.
|
Description: Portable, general-purpose utility library.
|
||||||
Build-Depends: zlib, pcre, libffi, gettext, libiconv
|
Build-Depends: zlib, pcre, libffi, gettext, libiconv
|
||||||
|
@ -76,6 +76,7 @@ install(FILES glib/gtypes.h DESTINATION include/glib)
|
|||||||
install(FILES glib/gunicode.h DESTINATION include/glib)
|
install(FILES glib/gunicode.h DESTINATION include/glib)
|
||||||
install(FILES glib/gurifuncs.h DESTINATION include/glib)
|
install(FILES glib/gurifuncs.h DESTINATION include/glib)
|
||||||
install(FILES glib/gutils.h DESTINATION include/glib)
|
install(FILES glib/gutils.h DESTINATION include/glib)
|
||||||
|
install(FILES glib/guuid.h DESTINATION include/glib)
|
||||||
install(FILES glib/gvarianttype.h DESTINATION include/glib)
|
install(FILES glib/gvarianttype.h DESTINATION include/glib)
|
||||||
install(FILES glib/gvariant.h DESTINATION include/glib)
|
install(FILES glib/gvariant.h DESTINATION include/glib)
|
||||||
install(FILES glib/gversion.h DESTINATION include/glib)
|
install(FILES glib/gversion.h DESTINATION include/glib)
|
||||||
|
@ -10,12 +10,12 @@ if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(vcpkg_common_functions)
|
include(vcpkg_common_functions)
|
||||||
set(GLIB_VERSION 2.50.3)
|
set(GLIB_VERSION 2.52.1)
|
||||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/glib-${GLIB_VERSION})
|
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/glib-${GLIB_VERSION})
|
||||||
vcpkg_download_distfile(ARCHIVE
|
vcpkg_download_distfile(ARCHIVE
|
||||||
URLS "https://ftp.gnome.org/pub/gnome/sources/glib/2.50/glib-${GLIB_VERSION}.tar.xz"
|
URLS "https://ftp.gnome.org/pub/gnome/sources/glib/2.52/glib-${GLIB_VERSION}.tar.xz"
|
||||||
FILENAME "glib-${GLIB_VERSION}.tar.xz"
|
FILENAME "glib-${GLIB_VERSION}.tar.xz"
|
||||||
SHA512 ef35806c15170b6608445f255136c0bebd2d433adf903c2af2865f6a57b4f2fcfc1e4a7cea1a0dac48ff5fe26248fbf7886dba4a8d209506f0a94160df8fb7af)
|
SHA512 6f0475b4ee1078867671a79b1751674926ba1caa872cec3896e2830c61c3cde67972afa9f2d606a2b6705e9846222462b003c6e966a9b63982f3fc3fb58c4d37)
|
||||||
|
|
||||||
vcpkg_extract_source_archive(${ARCHIVE})
|
vcpkg_extract_source_archive(${ARCHIVE})
|
||||||
vcpkg_apply_patches(
|
vcpkg_apply_patches(
|
||||||
|
@ -72,6 +72,8 @@ file(INSTALL
|
|||||||
)
|
)
|
||||||
file(INSTALL
|
file(INSTALL
|
||||||
${SOURCE_PATH}/ports/MSVC++/mpg123.h
|
${SOURCE_PATH}/ports/MSVC++/mpg123.h
|
||||||
|
${SOURCE_PATH}/src/libmpg123/fmt123.h
|
||||||
|
${SOURCE_PATH}/src/libmpg123/mpg123.h.in
|
||||||
DESTINATION ${CURRENT_PACKAGES_DIR}/include
|
DESTINATION ${CURRENT_PACKAGES_DIR}/include
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
Source: xerces-c
|
Source: xerces-c
|
||||||
Version: 3.1.4
|
Version: 3.1.4-3
|
||||||
Description: Xerces-C++ is a XML parser, for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs.
|
Description: Xerces-C++ is a XML parser, for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs.
|
||||||
|
@ -7,6 +7,15 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
include(vcpkg_common_functions)
|
include(vcpkg_common_functions)
|
||||||
|
if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
|
||||||
|
message(STATUS "Static libraries not supported; building dynamic instead")
|
||||||
|
set(VCPKG_LIBRARY_LINKAGE "dynamic")
|
||||||
|
endif()
|
||||||
|
if (VCPKG_CRT_LINKAGE STREQUAL "static")
|
||||||
|
message(STATUS "Static linking against the CRT not supported; building dynamic instead")
|
||||||
|
set(VCPKG_CRT_LINKAGE "dynamic")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/xerces-c-3.1.4)
|
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/xerces-c-3.1.4)
|
||||||
|
|
||||||
@ -17,20 +26,29 @@ vcpkg_download_distfile(ARCHIVE
|
|||||||
)
|
)
|
||||||
vcpkg_extract_source_archive(${ARCHIVE})
|
vcpkg_extract_source_archive(${ARCHIVE})
|
||||||
|
|
||||||
if (TRIPLET_SYSTEM_ARCH MATCHES "x86")
|
if (VCPKG_TARGET_ARCHITECTURE MATCHES "x86")
|
||||||
set(BUILD_ARCH "Win32")
|
set(BUILD_ARCH "Win32")
|
||||||
|
set(OUTPUT_DIR "Win32")
|
||||||
|
elseif (VCPKG_TARGET_ARCHITECTURE MATCHES "x64")
|
||||||
|
set(BUILD_ARCH "x64")
|
||||||
|
set(OUTPUT_DIR "Win64")
|
||||||
else()
|
else()
|
||||||
set(BUILD_ARCH ${TRIPLET_SYSTEM_ARCH})
|
message(FATAL_ERROR "Unsupported architecture: ${VCPKG_TARGET_ARCHITECTURE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
vcpkg_build_msbuild(
|
vcpkg_build_msbuild(
|
||||||
#PROJECT_PATH ${SOURCE_PATH}/projects/Win32/VC14/xerces-all/xerces-all.sln
|
#PROJECT_PATH ${SOURCE_PATH}/projects/Win32/VC14/xerces-all/xerces-all.sln
|
||||||
PROJECT_PATH ${SOURCE_PATH}/projects/Win32/VC14/xerces-all/xercesLib/xercesLib.vcxproj
|
PROJECT_PATH ${SOURCE_PATH}/projects/Win32/VC14/xerces-all/xercesLib/xercesLib.vcxproj
|
||||||
PLATFORM ${BUILD_ARCH})
|
PLATFORM ${BUILD_ARCH})
|
||||||
|
|
||||||
|
file(COPY ${SOURCE_PATH}/Build/${OUTPUT_DIR}/VC14/Debug/xerces-c_3_1D.dll DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
|
||||||
|
file(COPY ${SOURCE_PATH}/Build/${OUTPUT_DIR}/VC14/Debug/xerces-c_3D.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
|
||||||
|
file(COPY ${SOURCE_PATH}/Build/${OUTPUT_DIR}/VC14/Release/xerces-c_3_1.dll DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
|
||||||
|
file(COPY ${SOURCE_PATH}/Build/${OUTPUT_DIR}/VC14/Release/xerces-c_3.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
|
||||||
|
|
||||||
file(COPY ${SOURCE_PATH}/src/xercesc DESTINATION ${CURRENT_PACKAGES_DIR}/include FILES_MATCHING PATTERN *.hpp)
|
file(COPY ${SOURCE_PATH}/src/xercesc DESTINATION ${CURRENT_PACKAGES_DIR}/include FILES_MATCHING PATTERN *.hpp)
|
||||||
|
# Certain headers under xercesc/util include .c files, so we need these copied over as well
|
||||||
|
file(COPY ${SOURCE_PATH}/src/xercesc DESTINATION ${CURRENT_PACKAGES_DIR}/include FILES_MATCHING PATTERN *.c)
|
||||||
|
|
||||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/xercesc/NLS)
|
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/xercesc/NLS)
|
||||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/xercesc/util/MsgLoaders/ICU/resources)
|
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/xercesc/util/MsgLoaders/ICU/resources)
|
||||||
@ -38,3 +56,5 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/xercesc/util/MsgLoaders/ICU/
|
|||||||
# Handle copyright
|
# Handle copyright
|
||||||
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/xerces-c)
|
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/xerces-c)
|
||||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/xerces-c/LICENSE ${CURRENT_PACKAGES_DIR}/share/xerces-c/copyright)
|
file(RENAME ${CURRENT_PACKAGES_DIR}/share/xerces-c/LICENSE ${CURRENT_PACKAGES_DIR}/share/xerces-c/copyright)
|
||||||
|
|
||||||
|
vcpkg_copy_pdbs()
|
@ -1,5 +1,5 @@
|
|||||||
[cmdletbinding()]
|
[cmdletbinding()]
|
||||||
param([string]$targetBinary, [string]$installedDir, [string]$tlogFile)
|
param([string]$targetBinary, [string]$installedDir, [string]$tlogFile, [string]$copiedFilesLog)
|
||||||
|
|
||||||
$g_searched = @{}
|
$g_searched = @{}
|
||||||
# Note: installedDir is actually the bin\ directory.
|
# Note: installedDir is actually the bin\ directory.
|
||||||
@ -14,7 +14,7 @@ function deployBinary([string]$targetBinaryDir, [string]$SourceDir, [string]$tar
|
|||||||
Write-Verbose " ${targetBinaryName}: Copying $SourceDir\$targetBinaryName"
|
Write-Verbose " ${targetBinaryName}: Copying $SourceDir\$targetBinaryName"
|
||||||
Copy-Item "$SourceDir\$targetBinaryName" $targetBinaryDir
|
Copy-Item "$SourceDir\$targetBinaryName" $targetBinaryDir
|
||||||
}
|
}
|
||||||
"$targetBinaryDir\$targetBinaryName"
|
if ($copiedFilesLog) { Add-Content $copiedFilesLog "$targetBinaryDir\$targetBinaryName" }
|
||||||
if ($tlogFile) { Add-Content $tlogFile "$targetBinaryDir\$targetBinaryName" }
|
if ($tlogFile) { Add-Content $tlogFile "$targetBinaryDir\$targetBinaryName" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,18 +62,21 @@
|
|||||||
<Target Name="AppLocalFromInstalled" AfterTargets="CopyFilesToOutputDirectory" BeforeTargets="CopyLocalFilesOutputGroup;RegisterOutput" Condition="'$(VcpkgEnabled)' == 'true'">
|
<Target Name="AppLocalFromInstalled" AfterTargets="CopyFilesToOutputDirectory" BeforeTargets="CopyLocalFilesOutputGroup;RegisterOutput" Condition="'$(VcpkgEnabled)' == 'true'">
|
||||||
<WriteLinesToFile
|
<WriteLinesToFile
|
||||||
File="$(TLogLocation)$(ProjectName).write.1u.tlog"
|
File="$(TLogLocation)$(ProjectName).write.1u.tlog"
|
||||||
Lines="^$(OutputPath)$(TargetName).$(OutputType);" Encoding="Unicode"/>
|
Lines="^$(TargetPath);$([System.IO.Path]::Combine($(ProjectDir),$(IntDir)))vcpkg.applocal.log" Encoding="Unicode"/>
|
||||||
<Exec Condition="'$(VcpkgConfiguration)' == 'Debug'"
|
<Exec Condition="'$(VcpkgConfiguration)' == 'Debug'"
|
||||||
Command="powershell.exe -ExecutionPolicy Unrestricted -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)debug\bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22"
|
Command="powershell.exe -ExecutionPolicy Bypass -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)debug\bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22 %22$(IntDir)vcpkg.applocal.log%22"
|
||||||
ConsoleToMSBuild="true"
|
|
||||||
StandardOutputImportance="Normal">
|
StandardOutputImportance="Normal">
|
||||||
<Output TaskParameter="ConsoleOutput" ItemName="ReferenceCopyLocalPaths" />
|
|
||||||
</Exec>
|
</Exec>
|
||||||
<Exec Condition="'$(VcpkgConfiguration)' == 'Release'"
|
<Exec Condition="'$(VcpkgConfiguration)' == 'Release'"
|
||||||
Command="powershell.exe -ExecutionPolicy Unrestricted -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22"
|
Command="powershell.exe -ExecutionPolicy Bypass -noprofile -File %22$(MSBuildThisFileDirectory)applocal.ps1%22 %22$(TargetPath)%22 %22$(VcpkgRoot)bin%22 %22$(TLogLocation)$(ProjectName).write.1u.tlog%22 %22$(IntDir)vcpkg.applocal.log%22"
|
||||||
ConsoleToMSBuild="true"
|
|
||||||
StandardOutputImportance="Normal">
|
StandardOutputImportance="Normal">
|
||||||
<Output TaskParameter="ConsoleOutput" ItemName="ReferenceCopyLocalPaths" />
|
|
||||||
</Exec>
|
</Exec>
|
||||||
|
<ReadLinesFromFile File="$(IntDir)vcpkg.applocal.log">
|
||||||
|
<Output TaskParameter="Lines" ItemName="VcpkgAppLocalDLLs" />
|
||||||
|
</ReadLinesFromFile>
|
||||||
|
<Message Text="@(VcpkgAppLocalDLLs,'%0A')" Importance="Normal" />
|
||||||
|
<ItemGroup>
|
||||||
|
<ReferenceCopyLocalPaths Include="@(VcpkgAppLocalDLLs)" />
|
||||||
|
</ItemGroup>
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -4,7 +4,7 @@ function(vcpkg_copy_tool_dependencies TOOL_DIR)
|
|||||||
macro(search_for_dependencies PATH_TO_SEARCH)
|
macro(search_for_dependencies PATH_TO_SEARCH)
|
||||||
file(GLOB TOOLS ${TOOL_DIR}/*.exe ${TOOL_DIR}/*.dll)
|
file(GLOB TOOLS ${TOOL_DIR}/*.exe ${TOOL_DIR}/*.dll)
|
||||||
foreach(TOOL ${TOOLS})
|
foreach(TOOL ${TOOLS})
|
||||||
execute_process(COMMAND powershell -noprofile -executionpolicy UnRestricted -nologo
|
execute_process(COMMAND powershell -noprofile -executionpolicy Bypass -nologo
|
||||||
-file ${VCPKG_ROOT_DIR}/scripts/buildsystems/msbuild/applocal.ps1
|
-file ${VCPKG_ROOT_DIR}/scripts/buildsystems/msbuild/applocal.ps1
|
||||||
-targetBinary ${TOOL}
|
-targetBinary ${TOOL}
|
||||||
-installedDir ${PATH_TO_SEARCH}
|
-installedDir ${PATH_TO_SEARCH}
|
||||||
|
@ -91,11 +91,11 @@ foreach ($pair in $registryPairs)
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
$VS14InstallDir = $(gp $vsEntry InstallDir -erroraction Stop | % { $_.InstallDir })
|
$VS14InstallDir = $(gp $vsEntry InstallDir -erroraction Stop | % { $_.InstallDir })
|
||||||
Write-Verbose "$vsEntry - Found"
|
Write-Verbose "$vsEntry\InstallDir - Found"
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
Write-Verbose "$vsEntry - Not Found"
|
Write-Verbose "$vsEntry\InstallDir - Not Found"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,11 +118,11 @@ foreach ($pair in $registryPairs)
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
$MSBuild14 = $(gp $msbuildEntry MSBuildToolsPath -erroraction Stop | % { $_.MSBuildToolsPath })
|
$MSBuild14 = $(gp $msbuildEntry MSBuildToolsPath -erroraction Stop | % { $_.MSBuildToolsPath })
|
||||||
Write-Verbose "$msbuildEntry - Found"
|
Write-Verbose "$msbuildEntry\MSBuildToolsPath - Found"
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
Write-Verbose "$msbuildEntry - Not Found"
|
Write-Verbose "$msbuildEntry\MSBuildToolsPath - Not Found"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ namespace vcpkg
|
|||||||
{
|
{
|
||||||
BinaryParagraph();
|
BinaryParagraph();
|
||||||
explicit BinaryParagraph(std::unordered_map<std::string, std::string> fields);
|
explicit BinaryParagraph(std::unordered_map<std::string, std::string> fields);
|
||||||
BinaryParagraph(const SourceParagraph& spgh, const Triplet& target_triplet);
|
BinaryParagraph(const SourceParagraph& spgh, const Triplet& triplet);
|
||||||
|
|
||||||
std::string displayname() const;
|
std::string displayname() const;
|
||||||
|
|
||||||
|
@ -7,15 +7,13 @@ namespace vcpkg
|
|||||||
{
|
{
|
||||||
struct PackageSpec
|
struct PackageSpec
|
||||||
{
|
{
|
||||||
static Expected<PackageSpec> from_string(const std::string& spec_as_string, const Triplet& default_target_triplet);
|
static Expected<PackageSpec> from_string(const std::string& spec_as_string, const Triplet& default_triplet);
|
||||||
|
|
||||||
static Expected<PackageSpec> from_name_and_triplet(const std::string& name, const Triplet& target_triplet);
|
static Expected<PackageSpec> from_name_and_triplet(const std::string& name, const Triplet& triplet);
|
||||||
|
|
||||||
const std::string& name() const;
|
const std::string& name() const;
|
||||||
|
|
||||||
const Triplet& target_triplet() const;
|
const Triplet& triplet() const;
|
||||||
|
|
||||||
std::string display_name() const;
|
|
||||||
|
|
||||||
std::string dir() const;
|
std::string dir() const;
|
||||||
|
|
||||||
@ -23,14 +21,10 @@ namespace vcpkg
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
Triplet m_target_triplet;
|
Triplet m_triplet;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string to_printf_arg(const PackageSpec& spec);
|
|
||||||
|
|
||||||
bool operator==(const PackageSpec& left, const PackageSpec& right);
|
bool operator==(const PackageSpec& left, const PackageSpec& right);
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const PackageSpec& spec);
|
|
||||||
} //namespace vcpkg
|
} //namespace vcpkg
|
||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
@ -42,7 +36,7 @@ namespace std
|
|||||||
{
|
{
|
||||||
size_t hash = 17;
|
size_t hash = 17;
|
||||||
hash = hash * 31 + std::hash<std::string>()(value.name());
|
hash = hash * 31 + std::hash<std::string>()(value.name());
|
||||||
hash = hash * 31 + std::hash<vcpkg::Triplet>()(value.target_triplet());
|
hash = hash * 31 + std::hash<vcpkg::Triplet>()(value.triplet());
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -16,16 +16,16 @@ namespace vcpkg
|
|||||||
|
|
||||||
const_iterator find(const PackageSpec& spec) const
|
const_iterator find(const PackageSpec& spec) const
|
||||||
{
|
{
|
||||||
return find(spec.name(), spec.target_triplet());
|
return find(spec.name(), spec.triplet());
|
||||||
}
|
}
|
||||||
const_iterator find(const std::string& name, const Triplet& target_triplet) const;
|
const_iterator find(const std::string& name, const Triplet& triplet) const;
|
||||||
iterator find(const std::string& name, const Triplet& target_triplet);
|
iterator find(const std::string& name, const Triplet& triplet);
|
||||||
|
|
||||||
const_iterator find_installed(const PackageSpec& spec) const
|
const_iterator find_installed(const PackageSpec& spec) const
|
||||||
{
|
{
|
||||||
return find_installed(spec.name(), spec.target_triplet());
|
return find_installed(spec.name(), spec.triplet());
|
||||||
}
|
}
|
||||||
const_iterator find_installed(const std::string& name, const Triplet& target_triplet) const;
|
const_iterator find_installed(const std::string& name, const Triplet& triplet) const;
|
||||||
|
|
||||||
iterator insert(std::unique_ptr<StatusParagraph>);
|
iterator insert(std::unique_ptr<StatusParagraph>);
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ namespace vcpkg
|
|||||||
static VcpkgCmdArguments create_from_arg_sequence(const std::string* arg_begin, const std::string* arg_end);
|
static VcpkgCmdArguments create_from_arg_sequence(const std::string* arg_begin, const std::string* arg_end);
|
||||||
|
|
||||||
std::unique_ptr<std::string> vcpkg_root_dir;
|
std::unique_ptr<std::string> vcpkg_root_dir;
|
||||||
std::unique_ptr<std::string> target_triplet;
|
std::unique_ptr<std::string> triplet;
|
||||||
OptBoolT debug = OptBoolT::UNSPECIFIED;
|
OptBoolT debug = OptBoolT::UNSPECIFIED;
|
||||||
OptBoolT sendmetrics = OptBoolT::UNSPECIFIED;
|
OptBoolT sendmetrics = OptBoolT::UNSPECIFIED;
|
||||||
OptBoolT printmetrics = OptBoolT::UNSPECIFIED;
|
OptBoolT printmetrics = OptBoolT::UNSPECIFIED;
|
||||||
|
@ -6,6 +6,7 @@ namespace vcpkg
|
|||||||
{
|
{
|
||||||
VersionT::VersionT() : value("0.0.0") {}
|
VersionT::VersionT() : value("0.0.0") {}
|
||||||
VersionT::VersionT(const std::string& value) : value(value) {}
|
VersionT::VersionT(const std::string& value) : value(value) {}
|
||||||
|
std::string VersionT::to_string() const { return value; }
|
||||||
bool operator==(const VersionT& left, const VersionT& right) { return left.value == right.value; }
|
bool operator==(const VersionT& left, const VersionT& right) { return left.value == right.value; }
|
||||||
bool operator!=(const VersionT& left, const VersionT& right) { return left.value != right.value; }
|
bool operator!=(const VersionT& left, const VersionT& right) { return left.value != right.value; }
|
||||||
std::string to_printf_arg(const VersionT& version) { return version.value; }
|
std::string to_printf_arg(const VersionT& version) { return version.value; }
|
||||||
|
@ -8,12 +8,13 @@ namespace vcpkg
|
|||||||
VersionT();
|
VersionT();
|
||||||
VersionT(const std::string& value);
|
VersionT(const std::string& value);
|
||||||
|
|
||||||
|
std::string to_string() const;
|
||||||
|
|
||||||
std::string value;
|
std::string value;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool operator ==(const VersionT& left, const VersionT& right);
|
bool operator ==(const VersionT& left, const VersionT& right);
|
||||||
bool operator !=(const VersionT& left, const VersionT& right);
|
bool operator !=(const VersionT& left, const VersionT& right);
|
||||||
std::string to_printf_arg(const VersionT& version);
|
|
||||||
|
|
||||||
struct VersionDiff
|
struct VersionDiff
|
||||||
{
|
{
|
||||||
|
@ -15,10 +15,9 @@ namespace vcpkg
|
|||||||
static const Triplet ARM_UWP;
|
static const Triplet ARM_UWP;
|
||||||
|
|
||||||
const std::string& canonical_name() const;
|
const std::string& canonical_name() const;
|
||||||
|
|
||||||
std::string architecture() const;
|
std::string architecture() const;
|
||||||
|
|
||||||
std::string system() const;
|
std::string system() const;
|
||||||
|
const std::string& to_string() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_canonical_name;
|
std::string m_canonical_name;
|
||||||
@ -27,12 +26,6 @@ namespace vcpkg
|
|||||||
bool operator==(const Triplet& left, const Triplet& right);
|
bool operator==(const Triplet& left, const Triplet& right);
|
||||||
|
|
||||||
bool operator!=(const Triplet& left, const Triplet& right);
|
bool operator!=(const Triplet& left, const Triplet& right);
|
||||||
|
|
||||||
std::string to_string(const Triplet& spec);
|
|
||||||
|
|
||||||
std::string to_printf_arg(const Triplet& spec);
|
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const Triplet& spec);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
namespace vcpkg::Commands
|
namespace vcpkg::Commands
|
||||||
{
|
{
|
||||||
using CommandTypeA = void(*)(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet);
|
using CommandTypeA = void(*)(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
|
||||||
using CommandTypeB = void(*)(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
|
using CommandTypeB = void(*)(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
|
||||||
using CommandTypeC = void(*)(const VcpkgCmdArguments& args);
|
using CommandTypeC = void(*)(const VcpkgCmdArguments& args);
|
||||||
|
|
||||||
@ -29,32 +29,32 @@ namespace vcpkg::Commands
|
|||||||
std::string create_error_message(const BuildResult build_result, const PackageSpec& spec);
|
std::string create_error_message(const BuildResult build_result, const PackageSpec& spec);
|
||||||
std::string create_user_troubleshooting_message(const PackageSpec& spec);
|
std::string create_user_troubleshooting_message(const PackageSpec& spec);
|
||||||
|
|
||||||
std::wstring make_build_env_cmd(const Triplet& target_triplet, const Toolset& toolset);
|
std::wstring make_build_env_cmd(const Triplet& triplet, const Toolset& toolset);
|
||||||
|
|
||||||
BuildResult build_package(const SourceParagraph& source_paragraph, const PackageSpec& spec, const VcpkgPaths& paths, const fs::path& port_dir, const StatusParagraphs& status_db);
|
BuildResult build_package(const SourceParagraph& source_paragraph, const PackageSpec& spec, const VcpkgPaths& paths, const fs::path& port_dir, const StatusParagraphs& status_db);
|
||||||
void perform_and_exit(const PackageSpec& spec, const fs::path& port_dir, const std::unordered_set<std::string>& options, const VcpkgPaths& paths);
|
void perform_and_exit(const PackageSpec& spec, const fs::path& port_dir, const std::unordered_set<std::string>& options, const VcpkgPaths& paths);
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet);
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace BuildExternal
|
namespace BuildExternal
|
||||||
{
|
{
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet);
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Install
|
namespace Install
|
||||||
{
|
{
|
||||||
void install_package(const VcpkgPaths& paths, const BinaryParagraph& binary_paragraph, StatusParagraphs* status_db);
|
void install_package(const VcpkgPaths& paths, const BinaryParagraph& binary_paragraph, StatusParagraphs* status_db);
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet);
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace CI
|
namespace CI
|
||||||
{
|
{
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet);
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Remove
|
namespace Remove
|
||||||
{
|
{
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet);
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Update
|
namespace Update
|
||||||
|
@ -7,7 +7,7 @@ namespace vcpkg::Input
|
|||||||
{
|
{
|
||||||
PackageSpec check_and_get_package_spec(
|
PackageSpec check_and_get_package_spec(
|
||||||
const std::string& package_spec_as_string,
|
const std::string& package_spec_as_string,
|
||||||
const Triplet& default_target_triplet,
|
const Triplet& default_triplet,
|
||||||
CStringView example_text);
|
CStringView example_text);
|
||||||
|
|
||||||
void check_triplet(const Triplet& t, const VcpkgPaths& paths);
|
void check_triplet(const Triplet& t, const VcpkgPaths& paths);
|
||||||
|
@ -5,6 +5,12 @@
|
|||||||
|
|
||||||
namespace vcpkg::Strings::details
|
namespace vcpkg::Strings::details
|
||||||
{
|
{
|
||||||
|
template<class T>
|
||||||
|
auto to_printf_arg(const T& t) -> decltype(t.to_string())
|
||||||
|
{
|
||||||
|
return t.to_string();
|
||||||
|
}
|
||||||
|
|
||||||
inline const char* to_printf_arg(const std::string& s)
|
inline const char* to_printf_arg(const std::string& s)
|
||||||
{
|
{
|
||||||
return s.c_str();
|
return s.c_str();
|
||||||
|
@ -29,9 +29,9 @@ namespace vcpkg
|
|||||||
{
|
{
|
||||||
const std::string name = details::remove_required_field(&fields, BinaryParagraphRequiredField::PACKAGE);
|
const std::string name = details::remove_required_field(&fields, BinaryParagraphRequiredField::PACKAGE);
|
||||||
const std::string architecture = details::remove_required_field(&fields, BinaryParagraphRequiredField::ARCHITECTURE);
|
const std::string architecture = details::remove_required_field(&fields, BinaryParagraphRequiredField::ARCHITECTURE);
|
||||||
const Triplet target_triplet = Triplet::from_canonical_name(architecture);
|
const Triplet triplet = Triplet::from_canonical_name(architecture);
|
||||||
|
|
||||||
this->spec = PackageSpec::from_name_and_triplet(name, target_triplet).value_or_exit(VCPKG_LINE_INFO);
|
this->spec = PackageSpec::from_name_and_triplet(name, triplet).value_or_exit(VCPKG_LINE_INFO);
|
||||||
this->version = details::remove_required_field(&fields, BinaryParagraphRequiredField::VERSION);
|
this->version = details::remove_required_field(&fields, BinaryParagraphRequiredField::VERSION);
|
||||||
|
|
||||||
this->description = details::remove_optional_field(&fields, BinaryParagraphOptionalField::DESCRIPTION);
|
this->description = details::remove_optional_field(&fields, BinaryParagraphOptionalField::DESCRIPTION);
|
||||||
@ -44,18 +44,18 @@ namespace vcpkg
|
|||||||
this->depends = parse_depends(deps);
|
this->depends = parse_depends(deps);
|
||||||
}
|
}
|
||||||
|
|
||||||
BinaryParagraph::BinaryParagraph(const SourceParagraph& spgh, const Triplet& target_triplet)
|
BinaryParagraph::BinaryParagraph(const SourceParagraph& spgh, const Triplet& triplet)
|
||||||
{
|
{
|
||||||
this->spec = PackageSpec::from_name_and_triplet(spgh.name, target_triplet).value_or_exit(VCPKG_LINE_INFO);
|
this->spec = PackageSpec::from_name_and_triplet(spgh.name, triplet).value_or_exit(VCPKG_LINE_INFO);
|
||||||
this->version = spgh.version;
|
this->version = spgh.version;
|
||||||
this->description = spgh.description;
|
this->description = spgh.description;
|
||||||
this->maintainer = spgh.maintainer;
|
this->maintainer = spgh.maintainer;
|
||||||
this->depends = filter_dependencies(spgh.depends, target_triplet);
|
this->depends = filter_dependencies(spgh.depends, triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string BinaryParagraph::displayname() const
|
std::string BinaryParagraph::displayname() const
|
||||||
{
|
{
|
||||||
return this->spec.display_name();
|
return this->spec.to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string BinaryParagraph::dir() const
|
std::string BinaryParagraph::dir() const
|
||||||
@ -65,7 +65,7 @@ namespace vcpkg
|
|||||||
|
|
||||||
std::string BinaryParagraph::fullstem() const
|
std::string BinaryParagraph::fullstem() const
|
||||||
{
|
{
|
||||||
return Strings::format("%s_%s_%s", this->spec.name(), this->version, this->spec.target_triplet());
|
return Strings::format("%s_%s_%s", this->spec.name(), this->version, this->spec.triplet());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const BinaryParagraph& p)
|
std::ostream& operator<<(std::ostream& os, const BinaryParagraph& p)
|
||||||
@ -85,7 +85,7 @@ namespace vcpkg
|
|||||||
|
|
||||||
os << "\n";
|
os << "\n";
|
||||||
}
|
}
|
||||||
os << "Architecture: " << p.spec.target_triplet() << "\n";
|
os << "Architecture: " << p.spec.triplet().to_string() << "\n";
|
||||||
os << "Multi-Arch: same\n";
|
os << "Multi-Arch: same\n";
|
||||||
if (!p.maintainer.empty())
|
if (!p.maintainer.empty())
|
||||||
os << "Maintainer: " << p.maintainer << "\n";
|
os << "Maintainer: " << p.maintainer << "\n";
|
||||||
|
@ -8,12 +8,12 @@ namespace vcpkg
|
|||||||
return (c == '-') || isdigit(c) || (isalpha(c) && islower(c));
|
return (c == '-') || isdigit(c) || (isalpha(c) && islower(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
Expected<PackageSpec> PackageSpec::from_string(const std::string& spec_as_string, const Triplet& default_target_triplet)
|
Expected<PackageSpec> PackageSpec::from_string(const std::string& spec_as_string, const Triplet& default_triplet)
|
||||||
{
|
{
|
||||||
auto pos = spec_as_string.find(':');
|
auto pos = spec_as_string.find(':');
|
||||||
if (pos == std::string::npos)
|
if (pos == std::string::npos)
|
||||||
{
|
{
|
||||||
return from_name_and_triplet(spec_as_string, default_target_triplet);
|
return from_name_and_triplet(spec_as_string, default_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto pos2 = spec_as_string.find(':', pos + 1);
|
auto pos2 = spec_as_string.find(':', pos + 1);
|
||||||
@ -23,11 +23,11 @@ namespace vcpkg
|
|||||||
}
|
}
|
||||||
|
|
||||||
const std::string name = spec_as_string.substr(0, pos);
|
const std::string name = spec_as_string.substr(0, pos);
|
||||||
const Triplet target_triplet = Triplet::from_canonical_name(spec_as_string.substr(pos + 1));
|
const Triplet triplet = Triplet::from_canonical_name(spec_as_string.substr(pos + 1));
|
||||||
return from_name_and_triplet(name, target_triplet);
|
return from_name_and_triplet(name, triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
Expected<PackageSpec> PackageSpec::from_name_and_triplet(const std::string& name, const Triplet& target_triplet)
|
Expected<PackageSpec> PackageSpec::from_name_and_triplet(const std::string& name, const Triplet& triplet)
|
||||||
{
|
{
|
||||||
if (std::find_if_not(name.cbegin(), name.cend(), is_valid_package_spec_char) != name.end())
|
if (std::find_if_not(name.cbegin(), name.cend(), is_valid_package_spec_char) != name.end())
|
||||||
{
|
{
|
||||||
@ -36,7 +36,7 @@ namespace vcpkg
|
|||||||
|
|
||||||
PackageSpec p;
|
PackageSpec p;
|
||||||
p.m_name = name;
|
p.m_name = name;
|
||||||
p.m_target_triplet = target_triplet;
|
p.m_triplet = triplet;
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,38 +45,23 @@ namespace vcpkg
|
|||||||
return this->m_name;
|
return this->m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Triplet& PackageSpec::target_triplet() const
|
const Triplet& PackageSpec::triplet() const
|
||||||
{
|
{
|
||||||
return this->m_target_triplet;
|
return this->m_triplet;
|
||||||
}
|
|
||||||
|
|
||||||
std::string PackageSpec::display_name() const
|
|
||||||
{
|
|
||||||
return Strings::format("%s:%s", this->name(), this->target_triplet());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PackageSpec::dir() const
|
std::string PackageSpec::dir() const
|
||||||
{
|
{
|
||||||
return Strings::format("%s_%s", this->m_name, this->m_target_triplet);
|
return Strings::format("%s_%s", this->m_name, this->m_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PackageSpec::to_string() const
|
std::string PackageSpec::to_string() const
|
||||||
{
|
{
|
||||||
return this->display_name();
|
return Strings::format("%s:%s", this->name(), this->triplet());
|
||||||
}
|
|
||||||
|
|
||||||
std::string to_printf_arg(const PackageSpec& spec)
|
|
||||||
{
|
|
||||||
return spec.to_string();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const PackageSpec& left, const PackageSpec& right)
|
bool operator==(const PackageSpec& left, const PackageSpec& right)
|
||||||
{
|
{
|
||||||
return left.name() == right.name() && left.target_triplet() == right.target_triplet();
|
return left.name() == right.name() && left.triplet() == right.triplet();
|
||||||
}
|
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const PackageSpec& spec)
|
|
||||||
{
|
|
||||||
return os << spec.to_string();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -686,7 +686,7 @@ namespace vcpkg::PostBuildLint
|
|||||||
libs.insert(libs.cend(), debug_libs.cbegin(), debug_libs.cend());
|
libs.insert(libs.cend(), debug_libs.cbegin(), debug_libs.cend());
|
||||||
libs.insert(libs.cend(), release_libs.cbegin(), release_libs.cend());
|
libs.insert(libs.cend(), release_libs.cbegin(), release_libs.cend());
|
||||||
|
|
||||||
error_count += check_lib_architecture(spec.target_triplet().architecture(), libs);
|
error_count += check_lib_architecture(spec.triplet().architecture(), libs);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (build_info.library_linkage)
|
switch (build_info.library_linkage)
|
||||||
@ -708,8 +708,8 @@ namespace vcpkg::PostBuildLint
|
|||||||
dlls.insert(dlls.cend(), release_dlls.cbegin(), release_dlls.cend());
|
dlls.insert(dlls.cend(), release_dlls.cbegin(), release_dlls.cend());
|
||||||
|
|
||||||
error_count += check_exports_of_dlls(dlls, toolset.dumpbin);
|
error_count += check_exports_of_dlls(dlls, toolset.dumpbin);
|
||||||
error_count += check_uwp_bit_of_dlls(spec.target_triplet().system(), dlls, toolset.dumpbin);
|
error_count += check_uwp_bit_of_dlls(spec.triplet().system(), dlls, toolset.dumpbin);
|
||||||
error_count += check_dll_architecture(spec.target_triplet().architecture(), dlls);
|
error_count += check_dll_architecture(spec.triplet().architecture(), dlls);
|
||||||
|
|
||||||
error_count += check_outdated_crt_linkage_of_dlls(dlls, toolset.dumpbin);
|
error_count += check_outdated_crt_linkage_of_dlls(dlls, toolset.dumpbin);
|
||||||
break;
|
break;
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "StatusParagraphs.h"
|
#include "StatusParagraphs.h"
|
||||||
#include "vcpkg_Checks.h"
|
#include "vcpkg_Checks.h"
|
||||||
|
#include <algorithm>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
namespace vcpkg
|
namespace vcpkg
|
||||||
{
|
{
|
||||||
@ -11,27 +14,27 @@ namespace vcpkg
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
StatusParagraphs::const_iterator StatusParagraphs::find(const std::string& name, const Triplet& target_triplet) const
|
StatusParagraphs::const_iterator StatusParagraphs::find(const std::string& name, const Triplet& triplet) const
|
||||||
{
|
{
|
||||||
return std::find_if(begin(), end(), [&](const std::unique_ptr<StatusParagraph>& pgh)
|
return std::find_if(begin(), end(), [&](const std::unique_ptr<StatusParagraph>& pgh)
|
||||||
{
|
{
|
||||||
const PackageSpec& spec = pgh->package.spec;
|
const PackageSpec& spec = pgh->package.spec;
|
||||||
return spec.name() == name && spec.target_triplet() == target_triplet;
|
return spec.name() == name && spec.triplet() == triplet;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusParagraphs::iterator StatusParagraphs::find(const std::string& name, const Triplet& target_triplet)
|
StatusParagraphs::iterator StatusParagraphs::find(const std::string& name, const Triplet& triplet)
|
||||||
{
|
{
|
||||||
return std::find_if(begin(), end(), [&](const std::unique_ptr<StatusParagraph>& pgh)
|
return std::find_if(begin(), end(), [&](const std::unique_ptr<StatusParagraph>& pgh)
|
||||||
{
|
{
|
||||||
const PackageSpec& spec = pgh->package.spec;
|
const PackageSpec& spec = pgh->package.spec;
|
||||||
return spec.name() == name && spec.target_triplet() == target_triplet;
|
return spec.name() == name && spec.triplet() == triplet;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusParagraphs::const_iterator StatusParagraphs::find_installed(const std::string& name, const Triplet& target_triplet) const
|
StatusParagraphs::const_iterator StatusParagraphs::find_installed(const std::string& name, const Triplet& triplet) const
|
||||||
{
|
{
|
||||||
const const_iterator it = find(name, target_triplet);
|
const const_iterator it = find(name, triplet);
|
||||||
if (it != end() && (*it)->want == Want::INSTALL && (*it)->state == InstallState::INSTALLED)
|
if (it != end() && (*it)->want == Want::INSTALL && (*it)->state == InstallState::INSTALLED)
|
||||||
{
|
{
|
||||||
return it;
|
return it;
|
||||||
@ -44,7 +47,7 @@ namespace vcpkg
|
|||||||
{
|
{
|
||||||
Checks::check_exit(VCPKG_LINE_INFO, pgh != nullptr, "Inserted null paragraph");
|
Checks::check_exit(VCPKG_LINE_INFO, pgh != nullptr, "Inserted null paragraph");
|
||||||
const PackageSpec& spec = pgh->package.spec;
|
const PackageSpec& spec = pgh->package.spec;
|
||||||
auto ptr = find(spec.name(), spec.target_triplet());
|
auto ptr = find(spec.name(), spec.triplet());
|
||||||
if (ptr == end())
|
if (ptr == end())
|
||||||
{
|
{
|
||||||
paragraphs.push_back(std::move(pgh));
|
paragraphs.push_back(std::move(pgh));
|
||||||
|
@ -88,7 +88,7 @@ namespace vcpkg
|
|||||||
if (arg == "--triplet")
|
if (arg == "--triplet")
|
||||||
{
|
{
|
||||||
++arg_begin;
|
++arg_begin;
|
||||||
parse_value(arg_begin, arg_end, "--triplet", args.target_triplet);
|
parse_value(arg_begin, arg_end, "--triplet", args.triplet);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (arg == "--debug")
|
if (arg == "--debug")
|
||||||
|
@ -6,12 +6,12 @@ namespace vcpkg::Commands
|
|||||||
const std::vector<PackageNameAndFunction<CommandTypeA>>& get_available_commands_type_a()
|
const std::vector<PackageNameAndFunction<CommandTypeA>>& get_available_commands_type_a()
|
||||||
{
|
{
|
||||||
static std::vector<PackageNameAndFunction<CommandTypeA>> t = {
|
static std::vector<PackageNameAndFunction<CommandTypeA>> t = {
|
||||||
{"install", &Install::perform_and_exit},
|
{ "install", &Install::perform_and_exit },
|
||||||
{ "ci", &CI::perform_and_exit },
|
{ "ci", &CI::perform_and_exit },
|
||||||
{"remove", &Remove::perform_and_exit},
|
{ "remove", &Remove::perform_and_exit },
|
||||||
{"build", &Build::perform_and_exit},
|
{ "build", &Build::perform_and_exit },
|
||||||
{"env", &Env::perform_and_exit},
|
{ "env", &Env::perform_and_exit },
|
||||||
{"build-external", &BuildExternal::perform_and_exit}
|
{ "build-external", &BuildExternal::perform_and_exit }
|
||||||
};
|
};
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
@ -19,19 +19,19 @@ namespace vcpkg::Commands
|
|||||||
const std::vector<PackageNameAndFunction<CommandTypeB>>& get_available_commands_type_b()
|
const std::vector<PackageNameAndFunction<CommandTypeB>>& get_available_commands_type_b()
|
||||||
{
|
{
|
||||||
static std::vector<PackageNameAndFunction<CommandTypeB>> t = {
|
static std::vector<PackageNameAndFunction<CommandTypeB>> t = {
|
||||||
{"/?", &Help::perform_and_exit},
|
{ "/?", &Help::perform_and_exit },
|
||||||
{"help", &Help::perform_and_exit},
|
{ "help", &Help::perform_and_exit },
|
||||||
{"search", &Search::perform_and_exit},
|
{ "search", &Search::perform_and_exit },
|
||||||
{"list", &List::perform_and_exit},
|
{ "list", &List::perform_and_exit },
|
||||||
{"integrate", &Integrate::perform_and_exit},
|
{ "integrate", &Integrate::perform_and_exit },
|
||||||
{"owns", &Owns::perform_and_exit},
|
{ "owns", &Owns::perform_and_exit },
|
||||||
{"update", &Update::perform_and_exit},
|
{ "update", &Update::perform_and_exit },
|
||||||
{"depend-info", &DependInfo::perform_and_exit},
|
{ "depend-info", &DependInfo::perform_and_exit },
|
||||||
{"edit", &Edit::perform_and_exit},
|
{ "edit", &Edit::perform_and_exit },
|
||||||
{"create", &Create::perform_and_exit},
|
{ "create", &Create::perform_and_exit },
|
||||||
{"import", &Import::perform_and_exit},
|
{ "import", &Import::perform_and_exit },
|
||||||
{"cache", &Cache::perform_and_exit},
|
{ "cache", &Cache::perform_and_exit },
|
||||||
{"portsdiff", &PortsDiff::perform_and_exit}
|
{ "portsdiff", &PortsDiff::perform_and_exit }
|
||||||
};
|
};
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
@ -39,9 +39,9 @@ namespace vcpkg::Commands
|
|||||||
const std::vector<PackageNameAndFunction<CommandTypeC>>& get_available_commands_type_c()
|
const std::vector<PackageNameAndFunction<CommandTypeC>>& get_available_commands_type_c()
|
||||||
{
|
{
|
||||||
static std::vector<PackageNameAndFunction<CommandTypeC>> t = {
|
static std::vector<PackageNameAndFunction<CommandTypeC>> t = {
|
||||||
{"version", &Version::perform_and_exit},
|
{ "version", &Version::perform_and_exit },
|
||||||
{"contact", &Contact::perform_and_exit},
|
{ "contact", &Contact::perform_and_exit },
|
||||||
{"hash", &Hash::perform_and_exit},
|
{ "hash", &Hash::perform_and_exit },
|
||||||
};
|
};
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
@ -18,14 +18,14 @@ namespace vcpkg::Commands::Build
|
|||||||
|
|
||||||
static const std::string OPTION_CHECKS_ONLY = "--checks-only";
|
static const std::string OPTION_CHECKS_ONLY = "--checks-only";
|
||||||
|
|
||||||
static void create_binary_control_file(const VcpkgPaths& paths, const SourceParagraph& source_paragraph, const Triplet& target_triplet)
|
static void create_binary_control_file(const VcpkgPaths& paths, const SourceParagraph& source_paragraph, const Triplet& triplet)
|
||||||
{
|
{
|
||||||
const BinaryParagraph bpgh = BinaryParagraph(source_paragraph, target_triplet);
|
const BinaryParagraph bpgh = BinaryParagraph(source_paragraph, triplet);
|
||||||
const fs::path binary_control_file = paths.packages / bpgh.dir() / "CONTROL";
|
const fs::path binary_control_file = paths.packages / bpgh.dir() / "CONTROL";
|
||||||
std::ofstream(binary_control_file) << bpgh;
|
std::ofstream(binary_control_file) << bpgh;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring make_build_env_cmd(const Triplet& target_triplet, const Toolset& toolset)
|
std::wstring make_build_env_cmd(const Triplet& triplet, const Toolset& toolset)
|
||||||
{
|
{
|
||||||
const wchar_t * tonull = L" >nul";
|
const wchar_t * tonull = L" >nul";
|
||||||
if (g_debugging)
|
if (g_debugging)
|
||||||
@ -33,17 +33,17 @@ namespace vcpkg::Commands::Build
|
|||||||
tonull = L"";
|
tonull = L"";
|
||||||
}
|
}
|
||||||
|
|
||||||
return Strings::wformat(LR"("%s" %s %s 2>&1)", toolset.vcvarsall.native(), Strings::utf8_to_utf16(target_triplet.architecture()), tonull);
|
return Strings::wformat(LR"("%s" %s %s 2>&1)", toolset.vcvarsall.native(), Strings::utf8_to_utf16(triplet.architecture()), tonull);
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildResult build_package(const SourceParagraph& source_paragraph, const PackageSpec& spec, const VcpkgPaths& paths, const fs::path& port_dir, const StatusParagraphs& status_db)
|
BuildResult build_package(const SourceParagraph& source_paragraph, const PackageSpec& spec, const VcpkgPaths& paths, const fs::path& port_dir, const StatusParagraphs& status_db)
|
||||||
{
|
{
|
||||||
Checks::check_exit(VCPKG_LINE_INFO, spec.name() == source_paragraph.name, "inconsistent arguments to build_package()");
|
Checks::check_exit(VCPKG_LINE_INFO, spec.name() == source_paragraph.name, "inconsistent arguments to build_package()");
|
||||||
|
|
||||||
const Triplet& target_triplet = spec.target_triplet();
|
const Triplet& triplet = spec.triplet();
|
||||||
for (auto&& dep : filter_dependencies(source_paragraph.depends, target_triplet))
|
for (auto&& dep : filter_dependencies(source_paragraph.depends, triplet))
|
||||||
{
|
{
|
||||||
if (status_db.find_installed(dep, target_triplet) == status_db.end())
|
if (status_db.find_installed(dep, triplet) == status_db.end())
|
||||||
{
|
{
|
||||||
return BuildResult::CASCADED_DUE_TO_MISSING_DEPENDENCIES;
|
return BuildResult::CASCADED_DUE_TO_MISSING_DEPENDENCIES;
|
||||||
}
|
}
|
||||||
@ -54,14 +54,14 @@ namespace vcpkg::Commands::Build
|
|||||||
|
|
||||||
const fs::path ports_cmake_script_path = paths.ports_cmake;
|
const fs::path ports_cmake_script_path = paths.ports_cmake;
|
||||||
const Toolset& toolset = paths.get_toolset();
|
const Toolset& toolset = paths.get_toolset();
|
||||||
const auto cmd_set_environment = make_build_env_cmd(target_triplet, toolset);
|
const auto cmd_set_environment = make_build_env_cmd(triplet, toolset);
|
||||||
|
|
||||||
const std::wstring cmd_launch_cmake = make_cmake_cmd(cmake_exe_path, ports_cmake_script_path,
|
const std::wstring cmd_launch_cmake = make_cmake_cmd(cmake_exe_path, ports_cmake_script_path,
|
||||||
{
|
{
|
||||||
{ L"CMD", L"BUILD" },
|
{ L"CMD", L"BUILD" },
|
||||||
{ L"PORT", source_paragraph.name },
|
{ L"PORT", source_paragraph.name },
|
||||||
{ L"CURRENT_PORT_DIR", port_dir / "/." },
|
{ L"CURRENT_PORT_DIR", port_dir / "/." },
|
||||||
{ L"TARGET_TRIPLET", target_triplet.canonical_name() },
|
{ L"TARGET_TRIPLET", triplet.canonical_name() },
|
||||||
{ L"VCPKG_PLATFORM_TOOLSET", toolset.version },
|
{ L"VCPKG_PLATFORM_TOOLSET", toolset.version },
|
||||||
{ L"GIT", git_exe_path }
|
{ L"GIT", git_exe_path }
|
||||||
});
|
});
|
||||||
@ -88,7 +88,7 @@ namespace vcpkg::Commands::Build
|
|||||||
return BuildResult::POST_BUILD_CHECKS_FAILED;
|
return BuildResult::POST_BUILD_CHECKS_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
create_binary_control_file(paths, source_paragraph, target_triplet);
|
create_binary_control_file(paths, source_paragraph, triplet);
|
||||||
|
|
||||||
// const fs::path port_buildtrees_dir = paths.buildtrees / spec.name;
|
// const fs::path port_buildtrees_dir = paths.buildtrees / spec.name;
|
||||||
// delete_directory(port_buildtrees_dir);
|
// delete_directory(port_buildtrees_dir);
|
||||||
@ -117,7 +117,7 @@ namespace vcpkg::Commands::Build
|
|||||||
|
|
||||||
std::string create_error_message(const BuildResult build_result, const PackageSpec& spec)
|
std::string create_error_message(const BuildResult build_result, const PackageSpec& spec)
|
||||||
{
|
{
|
||||||
return Strings::format("Error: Building package %s failed with: %s", spec.to_string(), Build::to_string(build_result));
|
return Strings::format("Error: Building package %s failed with: %s", spec, Build::to_string(build_result));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string create_user_troubleshooting_message(const PackageSpec& spec)
|
std::string create_user_troubleshooting_message(const PackageSpec& spec)
|
||||||
@ -128,7 +128,7 @@ namespace vcpkg::Commands::Build
|
|||||||
" Vcpkg version: %s\n"
|
" Vcpkg version: %s\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Additionally, attach any relevant sections from the log files above."
|
"Additionally, attach any relevant sections from the log files above."
|
||||||
, spec.to_string(), Version::version());
|
, spec, Version::version());
|
||||||
}
|
}
|
||||||
|
|
||||||
void perform_and_exit(const PackageSpec& spec, const fs::path& port_dir, const std::unordered_set<std::string>& options, const VcpkgPaths& paths)
|
void perform_and_exit(const PackageSpec& spec, const fs::path& port_dir, const std::unordered_set<std::string>& options, const VcpkgPaths& paths)
|
||||||
@ -162,7 +162,7 @@ namespace vcpkg::Commands::Build
|
|||||||
System::println("");
|
System::println("");
|
||||||
for (const PackageSpecWithInstallPlan& p : unmet_dependencies)
|
for (const PackageSpecWithInstallPlan& p : unmet_dependencies)
|
||||||
{
|
{
|
||||||
System::println(" %s", p.spec.to_string());
|
System::println(" %s", p.spec);
|
||||||
}
|
}
|
||||||
System::println("");
|
System::println("");
|
||||||
Checks::exit_fail(VCPKG_LINE_INFO);
|
Checks::exit_fail(VCPKG_LINE_INFO);
|
||||||
@ -178,12 +178,12 @@ namespace vcpkg::Commands::Build
|
|||||||
Checks::exit_success(VCPKG_LINE_INFO);
|
Checks::exit_success(VCPKG_LINE_INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet)
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet)
|
||||||
{
|
{
|
||||||
static const std::string example = Commands::Help::create_example_string("build zlib:x64-windows");
|
static const std::string example = Commands::Help::create_example_string("build zlib:x64-windows");
|
||||||
args.check_exact_arg_count(1, example); // Build only takes a single package and all dependencies must already be installed
|
args.check_exact_arg_count(1, example); // Build only takes a single package and all dependencies must already be installed
|
||||||
const PackageSpec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example);
|
const PackageSpec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_triplet, example);
|
||||||
Input::check_triplet(spec.target_triplet(), paths);
|
Input::check_triplet(spec.triplet(), paths);
|
||||||
const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({ OPTION_CHECKS_ONLY });
|
const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({ OPTION_CHECKS_ONLY });
|
||||||
perform_and_exit(spec, paths.port_dir(spec), options, paths);
|
perform_and_exit(spec, paths.port_dir(spec), options, paths);
|
||||||
}
|
}
|
||||||
|
@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
namespace vcpkg::Commands::BuildExternal
|
namespace vcpkg::Commands::BuildExternal
|
||||||
{
|
{
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet)
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet)
|
||||||
{
|
{
|
||||||
static const std::string example = Commands::Help::create_example_string(R"(build_external zlib2 C:\path\to\dir\with\controlfile\)");
|
static const std::string example = Commands::Help::create_example_string(R"(build_external zlib2 C:\path\to\dir\with\controlfile\)");
|
||||||
args.check_exact_arg_count(2, example);
|
args.check_exact_arg_count(2, example);
|
||||||
const PackageSpec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_target_triplet, example);
|
const PackageSpec spec = Input::check_and_get_package_spec(args.command_arguments.at(0), default_triplet, example);
|
||||||
Input::check_triplet(spec.target_triplet(), paths);
|
Input::check_triplet(spec.triplet(), paths);
|
||||||
const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({});
|
const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({});
|
||||||
|
|
||||||
const fs::path port_dir = args.command_arguments.at(1);
|
const fs::path port_dir = args.command_arguments.at(1);
|
||||||
|
@ -14,26 +14,26 @@ namespace vcpkg::Commands::CI
|
|||||||
using Dependencies::InstallPlanType;
|
using Dependencies::InstallPlanType;
|
||||||
using Build::BuildResult;
|
using Build::BuildResult;
|
||||||
|
|
||||||
static std::vector<PackageSpec> load_all_package_specs(Files::Filesystem& fs, const fs::path& ports_directory, const Triplet& target_triplet)
|
static std::vector<PackageSpec> load_all_package_specs(Files::Filesystem& fs, const fs::path& ports_directory, const Triplet& triplet)
|
||||||
{
|
{
|
||||||
std::vector<SourceParagraph> ports = Paragraphs::load_all_ports(fs, ports_directory);
|
std::vector<SourceParagraph> ports = Paragraphs::load_all_ports(fs, ports_directory);
|
||||||
std::vector<PackageSpec> specs;
|
std::vector<PackageSpec> specs;
|
||||||
for (const SourceParagraph& p : ports)
|
for (const SourceParagraph& p : ports)
|
||||||
{
|
{
|
||||||
specs.push_back(PackageSpec::from_name_and_triplet(p.name, target_triplet).value_or_exit(VCPKG_LINE_INFO));
|
specs.push_back(PackageSpec::from_name_and_triplet(p.name, triplet).value_or_exit(VCPKG_LINE_INFO));
|
||||||
}
|
}
|
||||||
|
|
||||||
return specs;
|
return specs;
|
||||||
}
|
}
|
||||||
|
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet)
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet)
|
||||||
{
|
{
|
||||||
static const std::string example = Commands::Help::create_example_string("ci x64-windows");
|
static const std::string example = Commands::Help::create_example_string("ci x64-windows");
|
||||||
args.check_max_arg_count(1, example);
|
args.check_max_arg_count(1, example);
|
||||||
const Triplet target_triplet = args.command_arguments.size() == 1 ? Triplet::from_canonical_name(args.command_arguments.at(0)) : default_target_triplet;
|
const Triplet triplet = args.command_arguments.size() == 1 ? Triplet::from_canonical_name(args.command_arguments.at(0)) : default_triplet;
|
||||||
Input::check_triplet(target_triplet, paths);
|
Input::check_triplet(triplet, paths);
|
||||||
args.check_and_get_optional_command_arguments({});
|
args.check_and_get_optional_command_arguments({});
|
||||||
const std::vector<PackageSpec> specs = load_all_package_specs(paths.get_filesystem(), paths.ports, target_triplet);
|
const std::vector<PackageSpec> specs = load_all_package_specs(paths.get_filesystem(), paths.ports, triplet);
|
||||||
|
|
||||||
StatusParagraphs status_db = database_load_check(paths);
|
StatusParagraphs status_db = database_load_check(paths);
|
||||||
const std::vector<PackageSpecWithInstallPlan> install_plan = Dependencies::create_install_plan(paths, specs, status_db);
|
const std::vector<PackageSpecWithInstallPlan> install_plan = Dependencies::create_install_plan(paths, specs, status_db);
|
||||||
@ -48,44 +48,52 @@ namespace vcpkg::Commands::CI
|
|||||||
{
|
{
|
||||||
const ElapsedTime build_timer = ElapsedTime::create_started();
|
const ElapsedTime build_timer = ElapsedTime::create_started();
|
||||||
counter++;
|
counter++;
|
||||||
System::println("Starting package %d/%d: %s", counter, package_count, action.spec.to_string());
|
const std::string display_name = action.spec.to_string();
|
||||||
|
System::println("Starting package %d/%d: %s", counter, package_count, display_name);
|
||||||
|
|
||||||
timing.push_back(-1);
|
timing.push_back(-1);
|
||||||
results.push_back(BuildResult::NULLVALUE);
|
results.push_back(BuildResult::NULLVALUE);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (action.plan.plan_type == InstallPlanType::ALREADY_INSTALLED)
|
switch (action.plan.plan_type)
|
||||||
{
|
{
|
||||||
results.back() = BuildResult::SUCCEEDED;
|
case InstallPlanType::ALREADY_INSTALLED:
|
||||||
System::println(System::Color::success, "Package %s is already installed", action.spec);
|
results.back() = BuildResult::SUCCEEDED;
|
||||||
|
System::println(System::Color::success, "Package %s is already installed", display_name);
|
||||||
|
break;
|
||||||
|
case InstallPlanType::BUILD_AND_INSTALL:
|
||||||
|
{
|
||||||
|
System::println("Building package %s... ", display_name);
|
||||||
|
const BuildResult result = Commands::Build::build_package(action.plan.source_pgh.value_or_exit(VCPKG_LINE_INFO),
|
||||||
|
action.spec,
|
||||||
|
paths,
|
||||||
|
paths.port_dir(action.spec),
|
||||||
|
status_db);
|
||||||
|
timing.back() = build_timer.elapsed<std::chrono::milliseconds>().count();
|
||||||
|
results.back() = result;
|
||||||
|
if (result != BuildResult::SUCCEEDED)
|
||||||
|
{
|
||||||
|
System::println(System::Color::error, Build::create_error_message(result, action.spec));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
System::println(System::Color::success, "Building package %s... done", display_name);
|
||||||
|
|
||||||
|
const BinaryParagraph bpgh = Paragraphs::try_load_cached_package(paths, action.spec).value_or_exit(VCPKG_LINE_INFO);
|
||||||
|
System::println("Installing package %s... ", display_name);
|
||||||
|
Install::install_package(paths, bpgh, &status_db);
|
||||||
|
System::println(System::Color::success, "Installing package %s... done", display_name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case InstallPlanType::INSTALL:
|
||||||
|
results.back() = BuildResult::SUCCEEDED;
|
||||||
|
System::println("Installing package %s... ", display_name);
|
||||||
|
Install::install_package(paths, action.plan.binary_pgh.value_or_exit(VCPKG_LINE_INFO), &status_db);
|
||||||
|
System::println(System::Color::success, "Installing package %s... done", display_name);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Checks::unreachable(VCPKG_LINE_INFO);
|
||||||
}
|
}
|
||||||
else if (action.plan.plan_type == InstallPlanType::BUILD_AND_INSTALL)
|
|
||||||
{
|
|
||||||
const BuildResult result = Commands::Build::build_package(action.plan.source_pgh.value_or_exit(VCPKG_LINE_INFO),
|
|
||||||
action.spec,
|
|
||||||
paths,
|
|
||||||
paths.port_dir(action.spec),
|
|
||||||
status_db);
|
|
||||||
timing.back() = build_timer.elapsed<std::chrono::milliseconds>().count();
|
|
||||||
results.back() = result;
|
|
||||||
if (result != BuildResult::SUCCEEDED)
|
|
||||||
{
|
|
||||||
System::println(System::Color::error, Build::create_error_message(result, action.spec));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const BinaryParagraph bpgh = Paragraphs::try_load_cached_package(paths, action.spec).value_or_exit(VCPKG_LINE_INFO);
|
|
||||||
Install::install_package(paths, bpgh, &status_db);
|
|
||||||
System::println(System::Color::success, "Package %s is installed", action.spec);
|
|
||||||
}
|
|
||||||
else if (action.plan.plan_type == InstallPlanType::INSTALL)
|
|
||||||
{
|
|
||||||
results.back() = BuildResult::SUCCEEDED;
|
|
||||||
Install::install_package(paths, action.plan.binary_pgh.value_or_exit(VCPKG_LINE_INFO), &status_db);
|
|
||||||
System::println(System::Color::success, "Package %s is installed from cache", action.spec);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Checks::unreachable(VCPKG_LINE_INFO);
|
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
@ -99,7 +107,7 @@ namespace vcpkg::Commands::CI
|
|||||||
|
|
||||||
for (size_t i = 0; i < results.size(); i++)
|
for (size_t i = 0; i < results.size(); i++)
|
||||||
{
|
{
|
||||||
System::println("%s: %s: %dms", install_plan[i].spec.to_string(), Build::to_string(results[i]), timing[i]);
|
System::println("%s: %s: %dms", install_plan[i].spec, Build::to_string(results[i]), timing[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::map<BuildResult, int> summary;
|
std::map<BuildResult, int> summary;
|
||||||
|
@ -24,11 +24,11 @@ namespace vcpkg::Commands::Install
|
|||||||
const fs::path package_prefix_path = paths.package_dir(bpgh.spec);
|
const fs::path package_prefix_path = paths.package_dir(bpgh.spec);
|
||||||
const size_t prefix_length = package_prefix_path.native().size();
|
const size_t prefix_length = package_prefix_path.native().size();
|
||||||
|
|
||||||
const Triplet& target_triplet = bpgh.spec.target_triplet();
|
const std::string& triplet_string = bpgh.spec.triplet().canonical_name();
|
||||||
const std::string& target_triplet_as_string = target_triplet.canonical_name();
|
const fs::path installed_subfolder_path = paths.installed / triplet_string;
|
||||||
std::error_code ec;
|
std::error_code ec;
|
||||||
fs.create_directory(paths.installed / target_triplet_as_string, ec);
|
fs.create_directory(installed_subfolder_path, ec);
|
||||||
output.push_back(Strings::format(R"(%s/)", target_triplet_as_string));
|
output.push_back(Strings::format(R"(%s/)", triplet_string));
|
||||||
|
|
||||||
auto files = fs.recursive_find_all_files_in_dir(package_prefix_path);
|
auto files = fs.recursive_find_all_files_in_dir(package_prefix_path);
|
||||||
for (auto&& file : files)
|
for (auto&& file : files)
|
||||||
@ -48,7 +48,7 @@ namespace vcpkg::Commands::Install
|
|||||||
}
|
}
|
||||||
|
|
||||||
const std::string suffix = file.generic_u8string().substr(prefix_length + 1);
|
const std::string suffix = file.generic_u8string().substr(prefix_length + 1);
|
||||||
const fs::path target = paths.installed / target_triplet_as_string / suffix;
|
const fs::path target = installed_subfolder_path / suffix;
|
||||||
|
|
||||||
if (fs::is_directory(status))
|
if (fs::is_directory(status))
|
||||||
{
|
{
|
||||||
@ -59,7 +59,7 @@ namespace vcpkg::Commands::Install
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Trailing backslash for directories
|
// Trailing backslash for directories
|
||||||
output.push_back(Strings::format(R"(%s/%s/)", target_triplet_as_string, suffix));
|
output.push_back(Strings::format(R"(%s/%s/)", triplet_string, suffix));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ namespace vcpkg::Commands::Install
|
|||||||
{
|
{
|
||||||
System::println(System::Color::error, "failed: %s: %s", target.u8string(), ec.message());
|
System::println(System::Color::error, "failed: %s: %s", target.u8string(), ec.message());
|
||||||
}
|
}
|
||||||
output.push_back(Strings::format(R"(%s/%s)", target_triplet_as_string, suffix));
|
output.push_back(Strings::format(R"(%s/%s)", triplet_string, suffix));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ namespace vcpkg::Commands::Install
|
|||||||
std::vector<std::string> output;
|
std::vector<std::string> output;
|
||||||
for (const StatusParagraphAndAssociatedFiles& t : pgh_and_files)
|
for (const StatusParagraphAndAssociatedFiles& t : pgh_and_files)
|
||||||
{
|
{
|
||||||
if (t.pgh.package.spec.target_triplet() != triplet)
|
if (t.pgh.package.spec.triplet() != triplet)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -188,7 +188,7 @@ namespace vcpkg::Commands::Install
|
|||||||
void install_package(const VcpkgPaths& paths, const BinaryParagraph& binary_paragraph, StatusParagraphs* status_db)
|
void install_package(const VcpkgPaths& paths, const BinaryParagraph& binary_paragraph, StatusParagraphs* status_db)
|
||||||
{
|
{
|
||||||
const fs::path package_dir = paths.package_dir(binary_paragraph.spec);
|
const fs::path package_dir = paths.package_dir(binary_paragraph.spec);
|
||||||
const Triplet& triplet = binary_paragraph.spec.target_triplet();
|
const Triplet& triplet = binary_paragraph.spec.triplet();
|
||||||
const std::vector<StatusParagraphAndAssociatedFiles> pgh_and_files = get_installed_files(paths, *status_db);
|
const std::vector<StatusParagraphAndAssociatedFiles> pgh_and_files = get_installed_files(paths, *status_db);
|
||||||
|
|
||||||
const SortedVector<std::string> package_files = build_list_of_package_files(paths.get_filesystem(), package_dir);
|
const SortedVector<std::string> package_files = build_list_of_package_files(paths.get_filesystem(), package_dir);
|
||||||
@ -217,7 +217,7 @@ namespace vcpkg::Commands::Install
|
|||||||
spgh.state = InstallState::HALF_INSTALLED;
|
spgh.state = InstallState::HALF_INSTALLED;
|
||||||
for (auto&& dep : spgh.package.depends)
|
for (auto&& dep : spgh.package.depends)
|
||||||
{
|
{
|
||||||
if (status_db->find_installed(dep, spgh.package.spec.target_triplet()) == status_db->end())
|
if (status_db->find_installed(dep, spgh.package.spec.triplet()) == status_db->end())
|
||||||
{
|
{
|
||||||
Checks::unreachable(VCPKG_LINE_INFO);
|
Checks::unreachable(VCPKG_LINE_INFO);
|
||||||
}
|
}
|
||||||
@ -232,7 +232,7 @@ namespace vcpkg::Commands::Install
|
|||||||
status_db->insert(std::make_unique<StatusParagraph>(spgh));
|
status_db->insert(std::make_unique<StatusParagraph>(spgh));
|
||||||
}
|
}
|
||||||
|
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet)
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet)
|
||||||
{
|
{
|
||||||
static const std::string OPTION_DRY_RUN = "--dry-run";
|
static const std::string OPTION_DRY_RUN = "--dry-run";
|
||||||
|
|
||||||
@ -240,12 +240,12 @@ namespace vcpkg::Commands::Install
|
|||||||
static const std::string example = Commands::Help::create_example_string("install zlib zlib:x64-windows curl boost");
|
static const std::string example = Commands::Help::create_example_string("install zlib zlib:x64-windows curl boost");
|
||||||
args.check_min_arg_count(1, example);
|
args.check_min_arg_count(1, example);
|
||||||
|
|
||||||
auto specs = Util::fmap(args.command_arguments, [&](auto&& arg)
|
const std::vector<PackageSpec> specs = Util::fmap(args.command_arguments, [&](auto&& arg)
|
||||||
{
|
{
|
||||||
auto spec = Input::check_and_get_package_spec(arg, default_target_triplet, example);
|
return Input::check_and_get_package_spec(arg, default_triplet, example);
|
||||||
Input::check_triplet(spec.target_triplet(), paths);
|
|
||||||
return spec;
|
|
||||||
});
|
});
|
||||||
|
for (auto&& spec : specs)
|
||||||
|
Input::check_triplet(spec.triplet(), paths);
|
||||||
|
|
||||||
const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({ OPTION_DRY_RUN });
|
const std::unordered_set<std::string> options = args.check_and_get_optional_command_arguments({ OPTION_DRY_RUN });
|
||||||
const bool dryRun = options.find(OPTION_DRY_RUN) != options.cend();
|
const bool dryRun = options.find(OPTION_DRY_RUN) != options.cend();
|
||||||
@ -284,16 +284,18 @@ namespace vcpkg::Commands::Install
|
|||||||
// execute the plan
|
// execute the plan
|
||||||
for (const PackageSpecWithInstallPlan& action : install_plan)
|
for (const PackageSpecWithInstallPlan& action : install_plan)
|
||||||
{
|
{
|
||||||
|
const std::string display_name = action.spec.to_string();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
switch (action.plan.plan_type)
|
switch (action.plan.plan_type)
|
||||||
{
|
{
|
||||||
case InstallPlanType::ALREADY_INSTALLED:
|
case InstallPlanType::ALREADY_INSTALLED:
|
||||||
System::println(System::Color::success, "Package %s is already installed", action.spec);
|
System::println(System::Color::success, "Package %s is already installed", display_name);
|
||||||
break;
|
break;
|
||||||
case InstallPlanType::BUILD_AND_INSTALL:
|
case InstallPlanType::BUILD_AND_INSTALL:
|
||||||
{
|
{
|
||||||
System::println("Building package %s... ", action.spec);
|
System::println("Building package %s... ", display_name);
|
||||||
const Build::BuildResult result = Commands::Build::build_package(action.plan.source_pgh.value_or_exit(VCPKG_LINE_INFO),
|
const Build::BuildResult result = Commands::Build::build_package(action.plan.source_pgh.value_or_exit(VCPKG_LINE_INFO),
|
||||||
action.spec,
|
action.spec,
|
||||||
paths,
|
paths,
|
||||||
@ -305,18 +307,18 @@ namespace vcpkg::Commands::Install
|
|||||||
System::println(Build::create_user_troubleshooting_message(action.spec));
|
System::println(Build::create_user_troubleshooting_message(action.spec));
|
||||||
Checks::exit_fail(VCPKG_LINE_INFO);
|
Checks::exit_fail(VCPKG_LINE_INFO);
|
||||||
}
|
}
|
||||||
System::println(System::Color::success, "Building package %s... done", action.spec);
|
System::println(System::Color::success, "Building package %s... done", display_name);
|
||||||
|
|
||||||
const BinaryParagraph bpgh = Paragraphs::try_load_cached_package(paths, action.spec).value_or_exit(VCPKG_LINE_INFO);
|
const BinaryParagraph bpgh = Paragraphs::try_load_cached_package(paths, action.spec).value_or_exit(VCPKG_LINE_INFO);
|
||||||
System::println("Installing package %s... ", action.spec);
|
System::println("Installing package %s... ", display_name);
|
||||||
install_package(paths, bpgh, &status_db);
|
install_package(paths, bpgh, &status_db);
|
||||||
System::println(System::Color::success, "Installing package %s... done", action.spec);
|
System::println(System::Color::success, "Installing package %s... done", display_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case InstallPlanType::INSTALL:
|
case InstallPlanType::INSTALL:
|
||||||
System::println("Installing package %s... ", action.spec);
|
System::println("Installing package %s... ", display_name);
|
||||||
install_package(paths, action.plan.binary_pgh.value_or_exit(VCPKG_LINE_INFO), &status_db);
|
install_package(paths, action.plan.binary_pgh.value_or_exit(VCPKG_LINE_INFO), &status_db);
|
||||||
System::println(System::Color::success, "Installing package %s... done", action.spec);
|
System::println(System::Color::success, "Installing package %s... done", display_name);
|
||||||
break;
|
break;
|
||||||
case InstallPlanType::UNKNOWN:
|
case InstallPlanType::UNKNOWN:
|
||||||
default:
|
default:
|
||||||
|
@ -30,7 +30,7 @@ namespace vcpkg::Commands::Remove
|
|||||||
static void remove_package(const VcpkgPaths& paths, const PackageSpec& spec, StatusParagraphs* status_db)
|
static void remove_package(const VcpkgPaths& paths, const PackageSpec& spec, StatusParagraphs* status_db)
|
||||||
{
|
{
|
||||||
auto& fs = paths.get_filesystem();
|
auto& fs = paths.get_filesystem();
|
||||||
StatusParagraph& pkg = **status_db->find(spec.name(), spec.target_triplet());
|
StatusParagraph& pkg = **status_db->find(spec.name(), spec.triplet());
|
||||||
|
|
||||||
pkg.want = Want::PURGE;
|
pkg.want = Want::PURGE;
|
||||||
pkg.state = InstallState::HALF_INSTALLED;
|
pkg.state = InstallState::HALF_INSTALLED;
|
||||||
@ -136,7 +136,7 @@ namespace vcpkg::Commands::Remove
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_target_triplet)
|
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, const Triplet& default_triplet)
|
||||||
{
|
{
|
||||||
static const std::string OPTION_PURGE = "--purge";
|
static const std::string OPTION_PURGE = "--purge";
|
||||||
static const std::string OPTION_NO_PURGE = "--no-purge";
|
static const std::string OPTION_NO_PURGE = "--no-purge";
|
||||||
@ -156,9 +156,9 @@ namespace vcpkg::Commands::Remove
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
args.check_min_arg_count(1, example);
|
args.check_min_arg_count(1, example);
|
||||||
specs = Util::fmap(args.command_arguments, [&](auto&& arg) { return Input::check_and_get_package_spec(arg, default_target_triplet, example); });
|
specs = Util::fmap(args.command_arguments, [&](auto&& arg) { return Input::check_and_get_package_spec(arg, default_triplet, example); });
|
||||||
for (auto&& spec : specs)
|
for (auto&& spec : specs)
|
||||||
Input::check_triplet(spec.target_triplet(), paths);
|
Input::check_triplet(spec.triplet(), paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool alsoRemoveFolderFromPackages = options.find(OPTION_NO_PURGE) == options.end();
|
const bool alsoRemoveFolderFromPackages = options.find(OPTION_NO_PURGE) == options.end();
|
||||||
@ -200,7 +200,7 @@ namespace vcpkg::Commands::Remove
|
|||||||
|
|
||||||
for (const PackageSpecWithRemovePlan& action : remove_plan)
|
for (const PackageSpecWithRemovePlan& action : remove_plan)
|
||||||
{
|
{
|
||||||
const std::string display_name = action.spec.display_name();
|
const std::string display_name = action.spec.to_string();
|
||||||
|
|
||||||
switch (action.plan.plan_type)
|
switch (action.plan.plan_type)
|
||||||
{
|
{
|
||||||
|
@ -56,7 +56,7 @@ namespace vcpkg::Commands::Update
|
|||||||
System::println("The following packages differ from their port versions:");
|
System::println("The following packages differ from their port versions:");
|
||||||
for (auto&& package : outdated_packages)
|
for (auto&& package : outdated_packages)
|
||||||
{
|
{
|
||||||
System::println(" %-32s %s", package.spec.display_name(), package.version_diff.to_string());
|
System::println(" %-32s %s", package.spec, package.version_diff.to_string());
|
||||||
}
|
}
|
||||||
System::println("\n"
|
System::println("\n"
|
||||||
"To update these packages, run\n"
|
"To update these packages, run\n"
|
||||||
|
@ -111,7 +111,7 @@ namespace UnitTest1
|
|||||||
Assert::AreEqual("1.2.8", pgh.version.c_str());
|
Assert::AreEqual("1.2.8", pgh.version.c_str());
|
||||||
Assert::AreEqual("", pgh.maintainer.c_str());
|
Assert::AreEqual("", pgh.maintainer.c_str());
|
||||||
Assert::AreEqual("", pgh.description.c_str());
|
Assert::AreEqual("", pgh.description.c_str());
|
||||||
Assert::AreEqual("x86-windows", pgh.spec.target_triplet().canonical_name().c_str());
|
Assert::AreEqual("x86-windows", pgh.spec.triplet().canonical_name().c_str());
|
||||||
Assert::AreEqual(size_t(0), pgh.depends.size());
|
Assert::AreEqual(size_t(0), pgh.depends.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,7 +363,7 @@ namespace UnitTest1
|
|||||||
vcpkg::Expected<vcpkg::PackageSpec> spec = vcpkg::PackageSpec::from_string("zlib", vcpkg::Triplet::X86_WINDOWS);
|
vcpkg::Expected<vcpkg::PackageSpec> spec = vcpkg::PackageSpec::from_string("zlib", vcpkg::Triplet::X86_WINDOWS);
|
||||||
Assert::AreEqual(vcpkg::PackageSpecParseResult::SUCCESS, vcpkg::to_package_spec_parse_result(spec.error_code()));
|
Assert::AreEqual(vcpkg::PackageSpecParseResult::SUCCESS, vcpkg::to_package_spec_parse_result(spec.error_code()));
|
||||||
Assert::AreEqual("zlib", spec.get()->name().c_str());
|
Assert::AreEqual("zlib", spec.get()->name().c_str());
|
||||||
Assert::AreEqual(vcpkg::Triplet::X86_WINDOWS.canonical_name(), spec.get()->target_triplet().canonical_name());
|
Assert::AreEqual(vcpkg::Triplet::X86_WINDOWS.canonical_name(), spec.get()->triplet().canonical_name());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_METHOD(package_spec_parse_with_arch)
|
TEST_METHOD(package_spec_parse_with_arch)
|
||||||
@ -371,7 +371,7 @@ namespace UnitTest1
|
|||||||
vcpkg::Expected<vcpkg::PackageSpec> spec = vcpkg::PackageSpec::from_string("zlib:x64-uwp", vcpkg::Triplet::X86_WINDOWS);
|
vcpkg::Expected<vcpkg::PackageSpec> spec = vcpkg::PackageSpec::from_string("zlib:x64-uwp", vcpkg::Triplet::X86_WINDOWS);
|
||||||
Assert::AreEqual(vcpkg::PackageSpecParseResult::SUCCESS, vcpkg::to_package_spec_parse_result(spec.error_code()));
|
Assert::AreEqual(vcpkg::PackageSpecParseResult::SUCCESS, vcpkg::to_package_spec_parse_result(spec.error_code()));
|
||||||
Assert::AreEqual("zlib", spec.get()->name().c_str());
|
Assert::AreEqual("zlib", spec.get()->name().c_str());
|
||||||
Assert::AreEqual(vcpkg::Triplet::X64_UWP.canonical_name(), spec.get()->target_triplet().canonical_name());
|
Assert::AreEqual(vcpkg::Triplet::X64_UWP.canonical_name(), spec.get()->triplet().canonical_name());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_METHOD(package_spec_parse_with_multiple_colon)
|
TEST_METHOD(package_spec_parse_with_multiple_colon)
|
||||||
|
@ -11,16 +11,6 @@ namespace vcpkg
|
|||||||
const Triplet Triplet::X64_UWP = from_canonical_name("x64-uwp");
|
const Triplet Triplet::X64_UWP = from_canonical_name("x64-uwp");
|
||||||
const Triplet Triplet::ARM_UWP = from_canonical_name("arm-uwp");
|
const Triplet Triplet::ARM_UWP = from_canonical_name("arm-uwp");
|
||||||
|
|
||||||
std::string to_string(const Triplet& t)
|
|
||||||
{
|
|
||||||
return t.canonical_name();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string to_printf_arg(const Triplet& t)
|
|
||||||
{
|
|
||||||
return to_string(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator==(const Triplet& left, const Triplet& right)
|
bool operator==(const Triplet& left, const Triplet& right)
|
||||||
{
|
{
|
||||||
return left.canonical_name() == right.canonical_name();
|
return left.canonical_name() == right.canonical_name();
|
||||||
@ -31,11 +21,6 @@ namespace vcpkg
|
|||||||
return !(left == right);
|
return !(left == right);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const Triplet& t)
|
|
||||||
{
|
|
||||||
return os << to_string(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
Triplet Triplet::from_canonical_name(const std::string& triplet_as_string)
|
Triplet Triplet::from_canonical_name(const std::string& triplet_as_string)
|
||||||
{
|
{
|
||||||
const std::string s(Strings::ascii_to_lowercase(triplet_as_string));
|
const std::string s(Strings::ascii_to_lowercase(triplet_as_string));
|
||||||
@ -63,4 +48,9 @@ namespace vcpkg
|
|||||||
auto it = std::find(this->m_canonical_name.cbegin(), this->m_canonical_name.cend(), '-');
|
auto it = std::find(this->m_canonical_name.cbegin(), this->m_canonical_name.cend(), '-');
|
||||||
return std::string(it + 1, this->m_canonical_name.cend());
|
return std::string(it + 1, this->m_canonical_name.cend());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::string& Triplet::to_string() const
|
||||||
|
{
|
||||||
|
return this->m_canonical_name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,29 +69,29 @@ static void inner(const VcpkgCmdArguments& args)
|
|||||||
return command_function(args, paths);
|
return command_function(args, paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
Triplet default_target_triplet;
|
Triplet default_triplet;
|
||||||
if (args.target_triplet != nullptr)
|
if (args.triplet != nullptr)
|
||||||
{
|
{
|
||||||
default_target_triplet = Triplet::from_canonical_name(*args.target_triplet);
|
default_triplet = Triplet::from_canonical_name(*args.triplet);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const Optional<std::wstring> vcpkg_default_triplet_env = System::get_environmental_variable(L"VCPKG_DEFAULT_TRIPLET");
|
const Optional<std::wstring> vcpkg_default_triplet_env = System::get_environmental_variable(L"VCPKG_DEFAULT_TRIPLET");
|
||||||
if (auto v = vcpkg_default_triplet_env.get())
|
if (auto v = vcpkg_default_triplet_env.get())
|
||||||
{
|
{
|
||||||
default_target_triplet = Triplet::from_canonical_name(Strings::utf16_to_utf8(*v));
|
default_triplet = Triplet::from_canonical_name(Strings::utf16_to_utf8(*v));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
default_target_triplet = Triplet::X86_WINDOWS;
|
default_triplet = Triplet::X86_WINDOWS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Input::check_triplet(default_target_triplet, paths);
|
Input::check_triplet(default_triplet, paths);
|
||||||
|
|
||||||
if (auto command_function = Commands::find(args.command, Commands::get_available_commands_type_a()))
|
if (auto command_function = Commands::find(args.command, Commands::get_available_commands_type_a()))
|
||||||
{
|
{
|
||||||
return command_function(args, paths, default_target_triplet);
|
return command_function(args, paths, default_triplet);
|
||||||
}
|
}
|
||||||
|
|
||||||
return invalid_command(args.command);
|
return invalid_command(args.command);
|
||||||
|
@ -69,7 +69,7 @@ namespace vcpkg::Dependencies
|
|||||||
{
|
{
|
||||||
for (const std::string& dep_as_string : dependencies_as_string)
|
for (const std::string& dep_as_string : dependencies_as_string)
|
||||||
{
|
{
|
||||||
const PackageSpec current_dep = PackageSpec::from_name_and_triplet(dep_as_string, spec.target_triplet()).value_or_exit(VCPKG_LINE_INFO);
|
const PackageSpec current_dep = PackageSpec::from_name_and_triplet(dep_as_string, spec.triplet()).value_or_exit(VCPKG_LINE_INFO);
|
||||||
auto it = status_db.find_installed(current_dep);
|
auto it = status_db.find_installed(current_dep);
|
||||||
if (it != status_db.end())
|
if (it != status_db.end())
|
||||||
{
|
{
|
||||||
@ -103,7 +103,7 @@ namespace vcpkg::Dependencies
|
|||||||
Expected<SourceParagraph> maybe_spgh = Paragraphs::try_load_port(paths.get_filesystem(), paths.port_dir(spec));
|
Expected<SourceParagraph> maybe_spgh = Paragraphs::try_load_port(paths.get_filesystem(), paths.port_dir(spec));
|
||||||
if (auto spgh = maybe_spgh.get())
|
if (auto spgh = maybe_spgh.get())
|
||||||
{
|
{
|
||||||
process_dependencies(filter_dependencies(spgh->depends, spec.target_triplet()));
|
process_dependencies(filter_dependencies(spgh->depends, spec.triplet()));
|
||||||
was_examined.emplace(spec, InstallPlanAction{ InstallPlanType::BUILD_AND_INSTALL, request_type, nullopt, std::move(*spgh) });
|
was_examined.emplace(spec, InstallPlanAction{ InstallPlanType::BUILD_AND_INSTALL, request_type, nullopt, std::move(*spgh) });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -152,7 +152,7 @@ namespace vcpkg::Dependencies
|
|||||||
{
|
{
|
||||||
if (an_installed_package->want != Want::INSTALL)
|
if (an_installed_package->want != Want::INSTALL)
|
||||||
continue;
|
continue;
|
||||||
if (an_installed_package->package.spec.target_triplet() != spec.target_triplet())
|
if (an_installed_package->package.spec.triplet() != spec.triplet())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const std::vector<std::string>& deps = an_installed_package->package.depends;
|
const std::vector<std::string>& deps = an_installed_package->package.depends;
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
namespace vcpkg::Input
|
namespace vcpkg::Input
|
||||||
{
|
{
|
||||||
PackageSpec check_and_get_package_spec(const std::string& package_spec_as_string, const Triplet& default_target_triplet, CStringView example_text)
|
PackageSpec check_and_get_package_spec(const std::string& package_spec_as_string, const Triplet& default_triplet, CStringView example_text)
|
||||||
{
|
{
|
||||||
const std::string as_lowercase = Strings::ascii_to_lowercase(package_spec_as_string);
|
const std::string as_lowercase = Strings::ascii_to_lowercase(package_spec_as_string);
|
||||||
Expected<PackageSpec> expected_spec = PackageSpec::from_string(as_lowercase, default_target_triplet);
|
Expected<PackageSpec> expected_spec = PackageSpec::from_string(as_lowercase, default_triplet);
|
||||||
if (auto spec = expected_spec.get())
|
if (auto spec = expected_spec.get())
|
||||||
{
|
{
|
||||||
return *spec;
|
return *spec;
|
||||||
@ -25,8 +25,8 @@ namespace vcpkg::Input
|
|||||||
{
|
{
|
||||||
if (!paths.is_valid_triplet(t))
|
if (!paths.is_valid_triplet(t))
|
||||||
{
|
{
|
||||||
System::println(System::Color::error, "Error: invalid triplet: %s", t.canonical_name());
|
System::println(System::Color::error, "Error: invalid triplet: %s", t);
|
||||||
Metrics::track_property("error", "invalid triplet: " + t.canonical_name());
|
Metrics::track_property("error", "invalid triplet: " + t.to_string());
|
||||||
Commands::Help::help_topic_valid_triplet(paths);
|
Commands::Help::help_topic_valid_triplet(paths);
|
||||||
Checks::exit_fail(VCPKG_LINE_INFO);
|
Checks::exit_fail(VCPKG_LINE_INFO);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user