100 Commits
Author SHA1 Message Date
Billy O'NealandCopilot a4ef2437f9 Address host/target choosing different versions in the x-update-baseline diff (#2151)
Inserting vcpkg-tool 2026-09-26 into Visual Studio caused @sean-mcmanus
's GPT 6 Sol code review bot to re-review some previous changes. It
said:

> ✨Copilot (agent227): [Minor] The new x-update-baseline diff output in
[vcpkg-tool PR 2057](https://github.com/microsoft/vcpkg-tool/pull/2057)
builds its [version
snapshot](https://github.com/microsoft/vcpkg-tool/blob/51bf87ca6e9bf3e622d84ff323bd202ab1ca0c0b/src/vcpkg/commands.update-baseline.cpp#L63-L81)
with versions.emplace(action.spec.name(), ...), so a host and target
action for the same port collapse to whichever entry is visited first.
The versioned planner supports both specs in one action plan (see its
[host-tool
test](https://github.com/microsoft/vcpkg-tool/blob/51bf87ca6e9bf3e622d84ff323bd202ab1ca0c0b/src/vcpkg-test/dependencies.cpp#L2083-L2159)
) and resolves their version constraints separately. If only the
discarded triplet's selected version changes on an update, the command
can print There were no changes in the ports. despite a real
dependency-version change. Could the snapshot key/report include the
triplet when both variants are present? This is a reporting issue; the
baseline update itself remains intact.

Addressing this is the majority of this change: if host/target triplet
diverge on selected version, we now print the whole spec rather than
just the port version.

I would normally describe the edge cases handled here, but I think the
unit tests added in src/vcpkg-test/commands.update-baseline.cpp are a
better place to start.

> ✨Copilot (agent227): [Minor] The bundled release adds O_CLOEXEC to the
POSIX lock handle, but [its new regression
test](https://github.com/microsoft/vcpkg-tool/blob/51bf87ca6e9bf3e622d84ff323bd202ab1ca0c0b/src/vcpkg-test/files.cpp#L1141-L1177)
calls lock.reset() before attempting the second lock. That destructor
explicitly calls
[flock(LOCK_UN)](https://github.com/microsoft/vcpkg-tool/blob/51bf87ca6e9bf3e622d84ff323bd202ab1ca0c0b/src/vcpkg/base/files.cpp#L4273-L4280)
, releasing the shared open-file-description lock even when the exec'd
child inherited the descriptor. I reproduced the second acquisition
succeeding both with and without close-on-exec, so the test would pass
after removing the production flag. Could the test let the lock-owning
parent exit without explicitly unlocking while the exec'd child is still
alive, then check acquisition from a separate process? That would
actually protect the file-lock fix in this release.

This test was a sticking point back in the review; as far as I can tell
because the actual lock object is inherited by the child process there's
no way to close our copy without also closing the child's copy. All
suggestions to test this better go WAY out of contract trying to add
stuff to cough up the `fd` and similar which I do not want to do, so I
just deleted the meaningless test.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-30 14:07:55 -07:00
Billy O'Neal b76c87fe1f Try to avoid file locks persisting. (#2131)
We have seen some intermittent failures like
https://dev.azure.com/vcpkg/public/_build/results?buildId=137907&view=logs&j=f79cfdd7-47a8-597f-8f57-dc3e21a8f2ad&t=73c5513e-c47c-57a4-379a-581f7e429f13

GPT 5.6 Sol suggests that it may be that we don't open this handle with
O_CLOEXEC . That seems reasonable so let's give it a shot.
2026-09-25 01:50:23 -07:00
Billy O'Neal 876e816351 Update vcpkg-scripts SHA 2026-09-24. (#2136) 2026-09-25 00:55:19 +00:00
Billy O'Neal 8fc19740a2 [export] Get vcpkg.exe into the nupkg. (#2134)
Hopefully resolves https://github.com/microsoft/vcpkg/issues/53515
2026-09-24 12:36:25 -07:00
Billy O'Neal 73633015f6 [posh-vcpkg] Trim trailing whitespace and LFize (#2128)
For https://github.com/microsoft/vcpkg/pull/54042
2026-09-23 00:34:12 +00:00
Billy O'Neal e61a34f534 Change Run-VcpkgAndCaptureBoth to join the pipes using cmd or sh rather than PowerShell. (#2127)
PowerShell's `&2>1` behavior seems to be totally broken according to
https://github.com/PowerShell/PowerShell/issues/5424 -- it does not
actually bind both stdout and stderr to the same underlying pipe object,
so the output gets scrambled.

Change our e2e tests to bind the pipes with a subshell that actually
works instead.

Alternate resolution of the problem fixed in
https://github.com/microsoft/vcpkg-tool/pull/2125/changes#r4076661591
2026-09-22 22:51:35 +00:00
Billy O'NealandCopilot 3d9636b062 Match xbox expressions to CMake definitions (#2124)
While documenting the Apple platform expression added for #2121 in
MicrosoftDocs/vcpkg-docs#612, the platform-expression reference exposed
that the existing xbox identifier did not match `VCPKG_TARGET_IS_XBOX`.

The CMake definition recognizes Xbox only for the desktop Windows system
name (empty or undefined) with a non-empty `VCPKG_XBOX_CONSOLE_TARGET`.
Platform expressions previously checked only the console target, so UWP
and unrelated target systems could incorrectly satisfy xbox.

Apply both conditions and cover missing, empty, desktop Windows, UWP,
and non-Windows system-name cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a19bbe2f-47e6-474d-be82-2550f8a1aafa
2026-09-17 14:43:38 -07:00
Billy O'NealandCopilot 799eaa90e1 Audit for git commands that can accept more --. (#2118)
We got a report complaining that vcpkg-artifacts can misbehave if you
ask for a branch name with funny command line implications.
vcpkg-artifacts is slated for removal (see
https://github.com/microsoft/vcpkg-tool/pull/2032 ) but is still around
due to one important customer still using it for now.

If this only affected vcpkg-artifacts I would have made no changes, but
I also asked GPT 5.6 Sol to audit for other examples because we invoke
git all over the place and it found some places that could be better.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9880d476-bed1-4a5c-b356-b02bbd419d90
2026-09-16 23:51:19 +00:00
Billy O'Neal 64c012338a Update vcpkg-tool official build bits. (#2119)
* Visual Studio MicroBuild are removing VSEngSS-MicroBuild2022-1ES ,
switch to VSEng-MicroBuildVSStable
* Update SDL pools to Server 2025. (Can't believe I missed that we still
had Server 2022 dependencies before!)
* NodeJS 24.x
* NuGet 7.9
* Build on macOS 26, target macOS 14 "Sonoma". Note that macOS 14 is the
oldest version of macOS currently in support from Apple according to
https://endoflife.date/macos
2026-09-15 16:48:36 -07:00
Billy O'NealandCopilot ad905a5440 Parallelize ObjectStorageProvider downloads (#2088)
This is https://github.com/microsoft/vcpkg-tool/pull/1485 /
https://github.com/microsoft/vcpkg-tool/pull/1392 now that we have the
DiagnosticContext infrastructure to make it not painful.

Run up to eight external object-storage downloads concurrently while
respecting lower VCPKG_MAX_CONCURRENCY values. Each worker writes to its
own result slot and FullyBufferedDiagnosticContext; after all workers
finish, diagnostics are replayed on the calling thread in action order,
avoiding concurrent console I/O.

Add a bounded execute_in_parallel overload without changing existing
callers, plus regression coverage for its concurrency ceiling.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-05 14:35:46 -07:00
Billy O'Neal 8936e0bce1 Add diff output to x-update-baseline (#2057)
This is a psuedo-alternative to #1980 or at least to get similar results
as intended there.

I used GPT 5.5 in authoring this change.

```console
PS C:\Dev\vcpkg-tool\src> C:\Dev\vcpkg-tool\out\build\Win-x64-Debug-WithArtifacts\vcpkg.exe x-update-baseline --dry-run --vcpkg-root C:\Dev\vcpkg 
Fetching registry information from https://github.com/microsoft/vcpkg (HEAD)...
updated registry 'https://github.com/microsoft/vcpkg': e03dc9b29710050cd1018bc5674688108658d327 -> 42e4e33e1505c9f47b58c21e0f557c1571b751ee
Updating baselines has resulted in the following version updates:

Direct dependencies:
curl: 8.20.0#1 -> 8.21.0#1

Transitive dependencies:
zlib: 1.3.2 -> 1.3.2#1
```
2026-08-05 12:41:10 -07:00
Billy O'Neal a8a6031add Fix x-add-version to be as transactional as its error messages suggest (and 1/10th the time) (#2050) 2026-08-04 14:40:05 -07:00
Billy O'Neal d56d4878ca Add Windows arm64 release presets (#2082) 2026-08-04 14:27:40 -07:00
Billy O'NealandCopilot 98d7cb0cf1 Update scripts SHA 2026-07-27 and add explicit override feature. (#2086)
The main purpose of this update is to do another tool release with the
"`liblas` passes meaningless bits to `vcpkg_download_distfile` problem
fixed. See:

*
https://github.com/microsoft/vcpkg/commit/fedb33341b54f50bc5fec18885dcb51311384eed
*
https://github.com/microsoft/vcpkg/commit/57884a6cb04a8e4720bf04d8ec5e5ab6092fe5d2

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-27 14:22:01 -07:00
Billy O'Neal 4b3657b287 Fix unreplaced CMake variables in SBOMs. (#2075)
This required a complete reimplementation of the SBOM resource tracking
feature: the alternative would have been implementing an entire CMake
file format parser which would have been excessive.

Instead, we change the `vcpkg_from_Xxx` functions themselves to record
this information because CMake has already expanded the values for them.
They form the JSON objects themselves and build_info.cmake writes out
the results.

I had to edit all the from_Xxx functions to do this which effectively
makes this change a world rebuild. As a result I also changed every
other file in scripts/ to have LF line endings, except for those which
have embedded digital signatures which would be damaged by doing so.

Over in the "registry" repo:

build_info.cmake: Write the SPDX resources
ports.cmake: Include the new helper

vcpkg_download_distfile.cmake: Split into a z_ helper which does the raw
thing, and the "public" version which also records SPDX resource
information.

Elsewhere: Use the internal helper when not intending to add SPDX
resources, add SPDX resource records, remove meaningless QUIET

Before (note meaningless `${SQLITE_VERSION}`):

```json
{
  "SPDXID": "SPDXRef-resource-0",
  "name": "sqlite-autoconf-${SQLITE_VERSION}.tar.gz",
  "packageFileName": "sqlite-autoconf-${SQLITE_VERSION}.tar.gz",
  "downloadLocation": "https://sqlite.org/2026/sqlite-autoconf-${SQLITE_VERSION}.tar.gz",
  "licenseConcluded": "NOASSERTION",
  "licenseDeclared": "NOASSERTION",
  "copyrightText": "NOASSERTION",
  "checksums": [
    {
      "algorithm": "SHA512",
      "checksumValue": "355a8db490ec2a68c2801644e56178a26416c355792586a6c1c904de116e26f8602bc344e7172181c9d92c4c9e696319243e16405460fad87b23ee997a3ef9da"
    }
  ]
}
```

After:

```json
{
  "SPDXID": "SPDXRef-resource-0",
  "checksums": [
    {
      "algorithm": "SHA512",
      "checksumValue": "355a8db490ec2a68c2801644e56178a26416c355792586a6c1c904de116e26f8602bc344e7172181c9d92c4c9e696319243e16405460fad87b23ee997a3ef9da"
    }
  ],
  "copyrightText": "NOASSERTION",
  "downloadLocation": "https://sqlite.org/2026/sqlite-autoconf-3530300.tar.gz",
  "licenseConcluded": "NOASSERTION",
  "licenseDeclared": "NOASSERTION",
  "name": "sqlite-autoconf-3530300.tar.gz",
  "packageFileName": "sqlite-autoconf-3530300.tar.gz"
}
```
2026-07-24 01:37:42 +00:00
Billy O'Neal 0260316ad9 Fix CopyOptions::update_existing creating a 0 byte file when the destination is nonexistent. (#2068) 2026-07-23 17:49:11 -07:00
Billy O'Neal 56b7571861 Add "min-version" to vcpkg-tools.json. (#2067)
Before this change, "version" is intended to be the minimum version we
will fetch from the system, but we also use it in the path for downloads
which is confusing. Moreover, when combined with
`--x-abi-tools-use-exact-versions`, the exact version we are looking for
is not the downloaded one so we get stuck in the loop described in
https://github.com/microsoft/vcpkg/issues/52430 .

"Resolves" https://github.com/microsoft/vcpkg/issues/52225 although that
was not a bug at the time.
Resolves https://github.com/microsoft/vcpkg/issues/52430 .

Also fixed https://github.com/microsoft/vcpkg-tool/issues/2021 since I
was in this area anyway.

GPT 5.6-Sol was used in preparing these changes.
2026-07-24 00:14:59 +00:00
Billy O'Neal 0d687ef693 Update vcpkg-tool-release-process. (#2070) 2026-07-14 22:10:48 +00:00
Billy O'Neal bf04c90916 Fix network isolation. (#2062)
We have alerts from compliance orgs that our official builds were
touching the public internet. This change changes those to enforced
rather than advisory mode, fixes the curl-tarball-url-new typo (this
variable is defined as a secret injected into the build, see
https://devdiv.visualstudio.com/DevDiv/_library?view=VariableGroupView&variableGroupId=545&path=vcpkg%20Terrapin%20URLs
; I assume primarily because we don't want the place where that stuff
gets mirrored to be DDoS'd), and updates
Microsoft.VisualStudioEng.MicroBuild.Core to 1.0.0.


Example successful run:
https://devdiv.visualstudio.com/DevDiv/DevDiv%20Team/_build/results?buildId=14637031&view=logs&s=8ae4f91c-4458-5562-6de2-21d31ca24a26
2026-07-13 12:17:49 -07:00
Billy O'Neal 5768d763fe Update scripts SHA 2026-07-10. (#2061) 2026-07-11 00:26:09 +00:00
Billy O'Neal e2c2eb20dd Add vcpkg print-usage + hueristic affirmation (#2045)
As part of improving the code review skills (
https://github.com/BillyONeal/vcpkg/tree/add-review-skills ) we wanted
to add an automated check that new ports follow the "don't add a usage
file if the generated usage is correct" rules, but testing that was
annoying as one had to manually remove the usage file and reinstall the
port to test before.

The command `print-usage` should make that easier. It prints what the
current usage text is, and `--generated` can be passed to ignore the
usage file and print what the generated usage *would* be if the user
didn't supply a custom one.

Also adds a mechanism where a port can `file(TOUCH
"${CURRENT_PACKAGES_DIR}/share/${PORT}/usage-accurate")` to remove the
"# this is heuristically generated, and may not be correct" part of the
generated usage. This will resolve the main reason people (including me)
were mistakenly adding custom usage.

MAI-Code-1-Flash, GPT 5.4, and GPT 5.5 were used in authoring some of
the changes here (but did not write this message).
2026-07-09 19:44:29 -07:00
Billy O'Neal fd495527b8 Update NPM dependencies. (#2047)
Resolves https://github.com/microsoft/vcpkg-tool/pull/2044
2026-06-15 18:04:31 -07:00
Billy O'NealandCopilot 29b922fb5b Sanitize DESTDIR on non-Windows platforms (#2039)
Resolves https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2016984

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-04 10:47:11 -07:00
Billy O'Neal a2c82ebf6c Update vcpkg-scripts SHA 2026-05-26. (#2031) 2026-05-27 11:38:02 -07:00
Billy O'Neal d478469a4b [vcpkg-artifacts] Note that artifacts will be removed after July 1. (#2030) 2026-05-26 15:06:14 -07:00
Billy O'Neal 191bb830d4 Fix end to end tests on arm64-windows. (#2029) 2026-05-26 12:52:41 -07:00
Billy O'Nealandmicrosoft-github-policy-service[bot] 5da7eb787c Update 1espt baselines (#2025)
Updated for
https://dev.azure.com/devdiv/0bdbc590-a062-4c3f-b0f6-9383f67865ee/_build?definitionId=15684
by using baselines generated in
https://dev.azure.com/devdiv/0bdbc590-a062-4c3f-b0f6-9383f67865ee/_build/results?buildId=14156917

Co-authored-by: microsoft-github-policy-service[bot] <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com>
2026-05-22 23:28:01 +00:00
Billy O'NealandCopilot 78ed943502 Fix self-cascade bug in feature test baseline checking (#2017)
When a port is marked =fail in the feature baseline and has a
self-dependency via a feature (e.g., `cpprestsdk[brotli]` depends on
`cpprestsdk[compression]`), the install plan for a later feature test of
the same port may resolve to the same ABI as an earlier failed test.
Without this fix, the code would match that ABI in `known_failures` and
incorrectly report the test as an unexpectedly cascading failure rather
than recognizing it as a build failure.

The fix filters out install actions whose `package_spec` matches the
spec being tested, since those are part of testing the port itself, not
external dependencies.

Adds regression test vcpkg-self-fail port and assertions in
test-features.ps1.

Most of this was written by Claude Opus 4.7.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 23:27:28 -07:00
Billy O'NealandCopilot 643c71f362 Fix empty vs. unset environment variables on Windows. (#1997)
This is a followup to https://github.com/microsoft/vcpkg-tool/pull/1988/
where I observe that the same type of defect applies to the "normal" way
vcpkg gets environment variables.

Ensure that empty vs. unset is preserved correctly, enable use of the
small string optimization for wstring, and audit all callers.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-05-12 13:12:06 -07:00
Billy O'Neal e03454a3cf integrate install: Remove VS2015 integration. (#2011)
This means we no longer need the "restart ourselves as admin to fix it" dance.
2026-05-12 13:11:45 -07:00
Billy O'Neal 196a76c656 x-add-version: Regenerate baseline on --all. (#2003)
In https://github.com/microsoft/vcpkg/pull/51431 I observed that
`x-add-version --all` does not remove removed entries which seems
incorrect. This changes `--all` to completely regenerate the baseline
file. It also changes `x-add-version` to create the file if it doesn't
exist.

Drive by refactor: deduplicate all the "file not found" std::errc
comparisons.
2026-04-30 12:09:50 -07:00
Billy O'Neal 4a0ae3efd8 Add arm64 CMake presets, delete MSI extraction. (#1995)
Related: https://github.com/microsoft/vcpkg/pull/51149

I came here to debug an infinite loop I observed in that PR whose root
cause was the "archive" name not ending in ".7z.exe". Which turned out
to be a problem in that JSON, but the scaffolding I added here for it is
still relevant.

I also deleted all the MSI extraction stuff because as far as I can tell
that is unused as of https://github.com/microsoft/vcpkg-tool/pull/1477
2026-04-14 14:54:24 -07:00
Billy O'NealandCopilot e0612b42ce Add locks to buildtrees and packages. (#1979)
This is a followup on https://github.com/microsoft/vcpkg-tool/pull/1938
Resolves
https://github.com/microsoft/vcpkg/pull/51004#issuecomment-4195577101

@autoantwort points out that our MSBuild integration leaves the default
buildtrees location and only overrides the installed root:


https://github.com/microsoft/vcpkg/blob/81e3c888ef717a026eb57bb2f3cb0dbd30246271/scripts/buildsystems/msbuild/vcpkg.targets#L183-L190

I initially tried a solution which would get `buildtrees()` out of
`VcpkgPaths` entirely and pass around something that had both the data
and effectively encapsulated that things had been locked, but changes to
make that happen were starting to get huge, and I saw that I had already
accidentally created deadlocks by being inconsistent about the order of
taking the lock on the installed tree vs. buildtrees and packages, so I
gave up on it. (
https://github.com/BillyONeal/vcpkg-tool/commit/0a4b9ef757f68fd784bc14994bb7fb85ecd182eb
)

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-08 11:22:17 -07:00
Billy O'Neal 328e6c5539 Update the signed build lab version of VS + suppress 6385 in fmt. (#1975)
Resolves:

```
FAILED: _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.obj
C:\PROGRA~1\MICROS~1\2022\ENTERP~1\VC\Tools\MSVC\1442~1.344\bin\HostX64\x64\cl.exe  /nologo /TP  -ID:\a\_work\1\b\amd64\_deps\fmt-src\include /DWIN32 /D_WINDOWS /EHsc /EHsc -FC -permissive- -utf-8 /guard:cf /W4 /sdl -analyze -analyze:stacksize 39000 -wd6553 /WX /wd4834 /wd6031 /wd6294 /wd6240 /wd6326 /O2 /Ob2 /DNDEBUG /Zi /GL -std:c++17 -MT /utf-8 /showIncludes /Fo_deps\fmt-build\CMakeFiles\fmt.dir\src\format.cc.obj /Fdfmt.pdb /FS -c D:\a\_work\1\b\amd64\_deps\fmt-src\src\format.cc
D:\a\_work\1\b\amd64\_deps\fmt-src\include\fmt\format-inl.h(308): error C2220: the following warning is treated as an error
D:\a\_work\1\b\amd64\_deps\fmt-src\include\fmt\format-inl.h(307) : warning C6385: Reading invalid data from 'pow10_significands'.: Lines: 278, 280, 307
D:\a\_work\1\b\amd64\_deps\fmt-src\include\fmt\format-inl.h(307) : warning C6385: Reading invalid data from 'pow10_significands'.: Lines: 278, 280, 307
[36/158] Building CXX object _deps\fmt-build\CMakeFiles\fmt.dir\src\os.cc.obj
```

happening in the build lab.
2026-04-06 10:45:20 -07:00
Billy Robert O'Neal III 98b088f896 Update the signed build lab version of VS + suppress 6385 in fmt.
Resolves:

```
FAILED: _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.obj
C:\PROGRA~1\MICROS~1\2022\ENTERP~1\VC\Tools\MSVC\1442~1.344\bin\HostX64\x64\cl.exe  /nologo /TP  -ID:\a\_work\1\b\amd64\_deps\fmt-src\include /DWIN32 /D_WINDOWS /EHsc /EHsc -FC -permissive- -utf-8 /guard:cf /W4 /sdl -analyze -analyze:stacksize 39000 -wd6553 /WX /wd4834 /wd6031 /wd6294 /wd6240 /wd6326 /O2 /Ob2 /DNDEBUG /Zi /GL -std:c++17 -MT /utf-8 /showIncludes /Fo_deps\fmt-build\CMakeFiles\fmt.dir\src\format.cc.obj /Fdfmt.pdb /FS -c D:\a\_work\1\b\amd64\_deps\fmt-src\src\format.cc
D:\a\_work\1\b\amd64\_deps\fmt-src\include\fmt\format-inl.h(308): error C2220: the following warning is treated as an error
D:\a\_work\1\b\amd64\_deps\fmt-src\include\fmt\format-inl.h(307) : warning C6385: Reading invalid data from 'pow10_significands'.: Lines: 278, 280, 307
D:\a\_work\1\b\amd64\_deps\fmt-src\include\fmt\format-inl.h(307) : warning C6385: Reading invalid data from 'pow10_significands'.: Lines: 278, 280, 307
[36/158] Building CXX object _deps\fmt-build\CMakeFiles\fmt.dir\src\os.cc.obj
```

happening in the build lab.
2026-04-05 23:52:56 -07:00
Billy O'Neal 8548a07536 Update scripts sha 2026-04-02. (#1973) 2026-04-03 12:18:38 -07:00
Billy O'NealandCopilot 8b568f8de8 Adopt libfuzzer to replace AFL. (#1951)
* Adopt libfuzzer to replace AFL.

libfuzzer is more efficient because it does in-process fuzzing. This also allows fuzzing with the tools that come in the box with Visual Studio. libfuzzer makes each parser test into its own separate executable.

Other changes:
* All Unicode handling had to be hardened to not just terminate the process if the input isn't valid UTF-8. As a result terminating operations like ++ on Utf8Decoder were removed and all callers were changed to call next() and handle errors.
* The JSON parser constantly hit stack overflows which terminated the process and stopped fuzzing. To resolve that, introduced a max recursion depth of 200.

* Accidentially left in a __debugbreak

* Drop unnecessary _cdecl

* Avoid some compiler warnings.

* Use VCPKG_BUILD_FUZZING on Linux.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-02 12:54:34 -07:00
Billy O'Neal e228165b88 Fix --skip-failures feature set divergence between PR and CI. (#1958)
Alternative to: https://github.com/microsoft/vcpkg-tool/pull/1949

Also recorded in https://github.com/microsoft/vcpkg/pull/48797#issuecomment-3645291162

Repeating what @JavierMatosD said from that PR stating the problem:

>When a port is marked =fail in ci.baseline.txt and --skip-failures is active, the port was previously added to the exclusions map before feature resolution. This had two consequences:
>
>1. When a dependency is statically unsupported for the triplet, the tool incorrectly reported a regression for =fail ports that cascaded. The planner knows at plan time that the dependency graph is unsatisfiable
>2. Excluding =fail ports from the plan changed which features were resolved for shared dependencies. A port could pass in PR (fewer features active) but cascade in CI.

To clarify (1), emitting a diagnostic is correct but we claimed that it was a cascade when it's actually a direct failure. Related: https://github.com/microsoft/vcpkg-tool/pull/1955

* include/vcpkg/fwd/build.h et al.
  Add new states to represent *why* something cascaded and let us distinguish between "static" cascades (where the cascade is implied by the baseline or by "supports") and "dynamic" cascades (where the cascade happens because a build fails later)
* include/vcpkg/ci-baseline.h + src/vcpkg/ci-baseline.cpp
  Rename failures/success to fail/pass because those are the words we use in ci.baseline.txt.
  Rename "cidata" to "ci_data" because it was making spell check angry at me.
  Only put =skip things in the exclusion map and always record =fail as an expected_fail. (SkipFailures is now handled elsewhere)
* src/vcpkg/commands.ci.cpp
  Split SkipReason::Cascade into BaselineCascade and SupportsCascade
  In compute_pre_build_statuses, emit 's-fail' for "skipped expected to fail" for --skip-failures. Rather than control coupling with a bool here, callers when --skip-failures is off just pass an empty vector of skipped failures.
  In prune_entirely_known_action_branches, use a switch for looking at the "known" status. Remove the attempts to avoid inserting dependencies; in the current world order if 'forbidden' dependencies made it into the plan calculate_ci_specs failed to remove those.
  In calculate_ci_specs, reorder all the "supports" checking before any of the baseline checking. This allows later reporting stages to see inconsistencies between the baseline and supports clauses without reevaluating supports clauses.
* azure-pipelines/e2e-assets/ci-skipped-ports/baseline.fail.txt: The comment says "fail is skip here" but that's no longer true. Changed those to actually be =skip to make that test otherwise not need to change.
* azure-pipelines/end-to-end-tests-prelude.ps1: Add Run-VcpkgAndCaptureBoth
* azure-pipelines/end-to-end-tests-dir/ci.ps1:
  For tests that were duplicating just to get stdout and stderr, use Run-VcpkgAndCaptureBoth.
  Update expected count blocks for CASCADED_DUE_TO_MISSING_DEPENDENCIES being split.
  Add test that dependencies of failure baselines still contribute features under --skip-failures . This is specifically what https://github.com/microsoft/vcpkg/pull/48797#issuecomment-3645291162 was talking about
  Add test for every "REGRESSION:" line to make sure they aren't bogus.
2026-04-02 12:54:16 -07:00
Billy O'Neal 2181a1fe09 Complete shell escaping. (#1970) 2026-04-02 12:53:40 -07:00
Billy O'Neal 41b9245c22 Update NPM dependencies. (#1971)
Resolves https://github.com/microsoft/vcpkg-tool/security/dependabot/43
2026-04-02 12:53:25 -07:00
Billy O'Neal 6a33bc9f5f Update fmt and fix no-PCH builds. (#1965)
Resolves https://github.com/microsoft/vcpkg-tool/issues/1902

The fmt folks did a lot of work to make their compilation time go down quite a bit so we shouldn't need the forward declaration any longer. Build time goes up a small amount but not enough to justify keeping the forward declarations and inline namespace hoops present.

On my 9970X test machine, a clean rebuild:
  Before: [driver] Build completed: 00:00:21.350
  After: [driver] Build completed: 00:00:21.562

GPT 5.4-Medium did much of the work here.
2026-03-30 16:31:50 -07:00
Billy O'Neal 2cd41a1809 Update SPDX license lists. (#1966)
Resolves https://github.com/microsoft/vcpkg-tool/issues/1804.

GPT 5.4 did this work with prompt:

```
Update the SPDX license allow lists to resolve https://github.com/microsoft/vcpkg-tool/issues/1804
```
2026-03-27 14:13:13 -07:00
Billy O'Neal cfeff78717 Use more recent curl headers when building for non-amd64. (#1957)
Hopefully resolves most cases of https://github.com/microsoft/vcpkg-tool/issues/1922
2026-03-24 14:45:40 -07:00
Billy O'Neal 364f0aaedb [ci] Down with 'exclude', up with 'skip'. (#1956)
To the best of my understanding --exclude was added as part of implementing baseline support back when parsing that file was done in PowerShell and translated into a command line switch. And --host-exclude probably got added because we had a shared function that did this. This has led to the whole product calling this an "exclusion" despite all user facing interaction with this being "skip".

Delete --exclude and adopt "skip" as the name for this across the product.
2026-03-24 14:43:03 -07:00
Billy O'Neal 6df5759164 [artifacts] Use JSON.parse rather than require for locale loading. (#1952)
Originally suggested by @tmksny in https://github.com/microsoft/vcpkg-tool/issues/1947
2026-03-23 16:29:12 -07:00
Billy O'Neal c12c1b67a8 [ci] Treat feature supports as 'top level'. (#1955)
Also use Throw-IfNonContains et al. so that test failures print the expected/actual output.

Before:

```
     never-built-unsupported:x64-windows: unsupported
never-built-unsupported-feature:x64-windows: cascade
never-built-unsupported-feature-default:x64-windows: cascade
never-built-unsupported-host:x64-windows: unsupported
never-built-unsupported-host-feature:x64-windows: cascade
```

[...]

```
           never-built-unsupported:cross: unsupported
   never-built-unsupported-feature:cross: cascade
never-built-unsupported-feature-default:cross: cascade
      never-built-unsupported-host:cross: cascade
never-built-unsupported-host-feature:cross: cascade
```

Afterwards these are all 'unsupported'.
2026-03-23 15:52:30 -07:00
Billy O'Neal d80bc51685 Update vulnerable npm dependencies. (#1953)
Addresses https://github.com/advisories/GHSA-5c6j-r48x-rmvq

No effect on customers as the only affected parts are dev dependencies.
2026-03-21 00:29:59 +00:00
Billy O'Neal f8a0a59dd6 Update Component Governance manifest. (#1940)
Adds the new components that should have been added when I turned on curl.
2026-03-13 01:40:49 +00:00
Billy O'Neal 73afc2038f Move the install locking file to "installed" rather than VCPKG_ROOT. (#1938)
Feedback from the Windows build lab is that they run several concurrent vcpkg manifest installs in ways that don't actually conflict. However, our file locking for manifest mode put the file lock in VCPKG_ROOT, a false conflict for manifest mode builds.

This change moves that lock into the installed tree itself so that only actually conflicting installs will lock or block.

Drive by changes:

* "tools" is removed from z-print-config as that forced extra API surface onto vcpkg paths for a meaningless test.
* re-sorted contractual-constants.h
* try_take_exclusive_file_lock double-nested optional removed
* shorten_text moved from "vcpkglib.h" to "strings.h"
* vcpkglib.* renamed to installeddatabase.*
* database_load_collapse renamed database_sync
* write_update renamed database_write_update
* The on-disk layout of the installed tree is now documented in installedpaths.h
* VcpkgCmdArguments::do_not_take_lock is now unnecessary as the lock is targeted at operations that actually affect the installed tree rather than everything.
* blocks concurrent modification of an installed tree in 'classic' mode, not only manifest mode
* Improve shorten_text to not visit more of the input than necessary.
2026-03-12 17:06:28 -07:00
Billy O'Neal 4b3e4c276b Update scripts SHA 2026-03-04. (#1937) 2026-03-04 20:41:48 +00:00
Billy O'Neal a617d5a435 Allow Terrapin Retrieval Tool env vars. (#1936)
Terrpain is an internal Microsoft network isolation tool frequently used with `x-script` asset caching settings. Allow environment variables used to pass authentication data like which tentant to use to it.
2026-03-04 11:52:32 -08:00
Billy O'Neal 2f940ddcc3 Accept tags in portsdiff and z-changelog. (#1935)
In https://github.com/microsoft/vcpkg-tool/pull/1842/ I broke portsdiff and z-changelog because the previous behavior checked only if git cat-file -t succeeded, not whether the target was actually a commit. By "fixing" that to actually check for commit that breaks tag inputs.

Using -e and ^{commit} was suggested by gpt-5.3-codex but it was unable to make the other changes.

Demonstration:

```console
PS C:\Dev\vcpkg> .\vcpkg.exe z-changelog 2026.01.16
error: Invalid commit id: 2026.01.16
PS C:\Dev\vcpkg> C:\Dev\vcpkg-tool\out\build\Win-x64-Debug-WithArtifacts\vcpkg.exe z-changelog bogus
error: Invalid commit id: bogus
note: "C:\Program Files\Git\cmd\git.exe" -C "C:\Dev\vcpkg" -c core.autocrlf=false cat-file -e "bogus^{commit}" failed with exit code 128
fatal: Not a valid object name bogus^{commit}

PS C:\Dev\vcpkg> C:\Dev\vcpkg-tool\out\build\Win-x64-Debug-WithArtifacts\vcpkg.exe z-changelog 2026.01.16
#### Total port count: 2765
#### Total port count per triplet (tested): LINK
.
.
.
```
2026-03-03 16:39:45 -08:00
Billy O'Neal e1d90395f2 Group feature test results by port. (#1933)
I'm going through ~1200 failures in https://github.com/microsoft/vcpkg/pull/45331 and the diagnostics are ordered by the size of the ActionPlan even though generally baseline settings for a given port must be considered together which is inconvenient.
2026-03-02 13:24:12 -08:00
Billy O'Neal ccdd04b3d4 Add copilot /init output. (#1930) 2026-03-02 13:23:51 -08:00
Billy O'Neal 593345b778 Fix mismatched VCPKG_ROOT warnings when Visual Studio has vcpkg installed (#1931) 2026-02-24 10:02:14 -08:00
Billy O'Neal 82f3841f4f Disable metrics for vcpkg-in-vcpkg. (#1925) 2026-02-20 19:21:27 -08:00
Billy O'Neal 77980fec0f More BinSkim suppressions. (#1924)
From https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=13326953&view=results
2026-02-17 14:44:26 -08:00
Billy O'Neal b49f9113e0 Update scripts SHA 2026-02-17 (#1923) 2026-02-17 17:35:48 +00:00
Billy O'Neal 3d7fd1ee3c Fix BinSkim *again* (#1921)
I guess the test build I tried did something different because it was not targeting the 'main' branch :(
2026-02-17 09:10:24 -08:00
Billy O'Neal 792f2dba17 Suppress BinSkim errors in the Windows SDK. (#1920) 2026-02-13 15:37:15 -08:00
Billy O'Neal f4731e62c6 Update scripts sha 2026-02-12. (#1917) 2026-02-13 00:46:04 +00:00
Billy O'Neal c6b9da55a4 Replace all Optional<T&> with T*. (#1898) 2026-02-12 08:59:55 -08:00
Billy O'Neal 44c6f16932 Remove optionality in ActionPlan and Summary (#1894) 2026-02-11 22:47:23 +00:00
Billy O'Neal 6f9243768f Deduplicate "additional_file" in abi info. (#1914) 2026-02-11 13:44:04 -08:00
Billy O'NealandCopilot fb0830a31b Use libcurl rather than curl command line (#1906)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-10 16:33:02 -08:00
Billy O'Neal ea0a870121 Add CMAKE_EXPORT_COMPILE_COMMANDS (#1904) 2026-01-28 09:57:25 -08:00
Billy O'Neal bb9a7f4a50 Automate minting the release notes table. (#1903) 2026-01-22 20:06:37 -08:00
Billy O'Neal 13ed91fba8 Install files in parallel, redux (#1896) 2026-01-13 13:17:23 -08:00
Billy O'Neal 99a72726ef Deduplicate is_empty() calls and add {}s. (#1895)
Nitpicks I noticed while reviewing https://github.com/microsoft/vcpkg-tool/pull/1891
2026-01-08 14:59:23 -08:00
Billy O'Neal 8e7ce7175f Upgrade CodeQL and disable on macos-ci. (#1893)
This tries to fix failures reported in https://github.com/microsoft/vcpkg-tool/actions/runs/20175286709

1. macOS-26 takes 15 times as long when CodeQL is turned on which causes the overall run to exceed GitHub's 2 hour time limit. I'm guessing this is because the macOS machines have very little RAM and CodeQL is RAM hungry.
2. [CI Only] Initialize CodeQL
  CodeQL Action v3 will be deprecated in December 2026. Please update all occurrences of the CodeQL Action in your workflow files to v4. For more information, see https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/
2026-01-05 21:09:14 +00:00
Billy O'Neal 44bb3ce006 Update vcpkg-scripts SHA 2025-12-16. (#1888) 2025-12-16 23:16:28 +00:00
Billy O'Neal d3f3691ac1 Fix arm64 macOS GitHub Actions. (#1884) 2025-12-12 09:51:36 -08:00
Billy O'Neal e1085d5109 Delete VCPKG_PUBLIC_ABI_OVERRIDE and PlanTypes. (#1874) 2025-12-11 15:07:46 -08:00
Billy O'Neal c86172d360 Plumb DiagnosticContext into ToolCache / download / caching. (#1842) 2025-12-09 02:17:19 +00:00
Billy O'Neal d84fb80565 Update scripts SHA 2025-12-03 and update github actions runners. (#1873)
- Update the scripts SHA to that for 2025-12-03
- That broke several tests due to the change in Ninja version
- In order to fix that I updated the tests to ensure we were not triggering cross compilation unless we were actually intending to do that; for example we were selecting x64-osx even though arm64-osx is the 'normal' osx now.
- That change in expected triplet itself broke a lot of tests resulting in most of the edits here.
- Updating macOS and Ubuntu runners to 26/24.04 the stock GitHub Actions runners don't include a mono installation for the NuGet tests, so getting that on the boxes before running the e2e tests is done here.

In general the most impactful change is that we usually need to make a triplet with our expected changes on the fly rather than trying to make checked in test triplets. In particular detecting whether we are on arm64 is difficult because `CMAKE_HOST_SYSTEM_PROCESSOR` is not set before `project()` (as is normally the case in a triplet)
2025-12-04 16:23:06 -08:00
Billy O'Neal 841dea82e7 Fix qualified PackageSpec parse hang. (#1872)
See https://github.com/microsoft/vcpkg/pull/48578#discussion_r2583148517
2025-12-03 10:08:22 -08:00
Billy O'Neal da1f056dc0 Revert libcurl. (#1856) 2025-11-18 22:32:36 +00:00
Billy O'Neal c450129c2d Drop -static on Alpine build. (#1854) 2025-11-17 23:47:16 -08:00
Billy O'Neal fc486898fc Add libcurl hooks for the signed build. (#1852)
For https://github.com/microsoft/vcpkg-tool/pull/1660
2025-11-18 01:23:09 +00:00
Billy O'Neal 32b66d6eda Update scripts SHA 2025-11-17 (#1851) 2025-11-17 21:38:44 +00:00
Billy O'Neal 2b211d0829 Fix =skip handling. (#1849)
Billy made a bit of a mistake in #1822 resulting in the blizzard of failures in https://dev.azure.com/vcpkg/public/_build/results?buildId=122788
2025-11-17 20:09:34 +00:00
Billy O'Neal 602278b4af Update vcpkg-scripts SHA 2025-11-12. (#1845) 2025-11-13 08:41:18 -08:00
0ebc9cd86a Don't include features from skipped ports in CI runs. (#1822)
Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com>
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
Co-authored-by: Kai Pastor <dg0yt@darc.de>
2025-11-12 16:08:18 -08:00
Billy O'Neal 74b264165a Delete artifacts list. (#1831)
Now that it seems clear artifacts is unlikely to ever be finished, this broken command with a "todo fixme" inside should be deleted.
2025-11-05 15:32:19 -08:00
Billy O'Neal 1d7fdacf01 Turn on LTCG and COMDAT folding. 2025-10-24 13:01:46 -07:00
Billy O'Neal e61ed1ca6b Remove the 'upgrade' message. (#1802)
The 'upgrade' message asks users to rerun bootstrap-vcpkg. We used to do this all over the place but have been slowly doing it less often. Unfortunately, even the places that were reasonable, were mostly inconsistent about applying it.

In particular, emitting the upgrade message for things that require `git pull` is *incorrect*. Ever emitting the message in Visual Studio or one-liner deployments was always bogus.

(The reason for this is because I'm context-izing `vcpkg fetch` and there are a lot of problematic upgrade cases in there)

Audit results:

* strings.cpp:380: Wrong, parse failure is not a tool upgrade fix. (Note however the only callers where visualstudio.cpp which was questionably ok)
* strings.cpp:396: Ditto
* binaryparagraph.cpp:251: Both cases are about corrupted installation databases and both are wrong.
* binaryparagraph.cpp:261: Ditto
* commands.build.cpp:438: Probably correct, new vcpkg.exe may learn about new cpu architecture.
* commands.build.cpp:467: Probably correct, new vcpkg.exe may learn about new VS.
* commands.build.cpp:1045: Probably correct, new vcpkg may learn about new known architectures.
* commands.build.cpp:2147: Wrong, corrupted installation database.
* commands.edit.cpp:171: Wrong, nonexistent port won't be fixed by bootstrap.
* commands.format-manifest.cpp:59: This is just a bug in vcpkg and *probably* shouldn't be localized in the first place. It's a parse failure so it's wrong.
* commands.integrate.cpp:658: Plausible, new integrates may be learned by new vcpkg.exe.
* commands.package-info.cpp:47: Plausible, new vcpkg may have new package-info formats. But we don't emit the message for other unknown command line arguments so why is this one special?
* commands.remove.cpp:184: Wrong, upgrading vcpkg.exe won't make this not be manifest mode.
* commands.update.cpp:62: Ditto
* dependencies.cpp:299: Wrong, missing feature won't change by rebootstrap
* dependencies.cpp:860: Ditto
* registries.cpp:865: Wrong, missing git sha in the registry won't change by rebootstrap
* statusparagraph.cpp:86: Wrong, corrupted installation database.
* tools.cpp:854: Wrong, missing tool entry won't change by rebootstrap
* tools.cpp:1053: Plausible, new vcpkg.exe may learn new ways to find a tool from the system
* vcpkglib.cpp:201: Wrong, corrupted database.
* vcpkgpaths.cpp:86: Wrong, parse error.
* vcpkgpaths.cpp:195: Wrong, bogus git SHA.

Total: 6 correct/plausible, 16 wrong.
2025-10-22 13:44:55 -07:00
Billy O'Neal 71538f2694 Update scripts SHA 2025-10-16. (#1819) 2025-10-16 18:11:21 +00:00
Billy O'Neal 5a6353cd1e Fix "no such file or directory" error. (#1817)
The bug is that https://github.com/microsoft/vcpkg-tool/blob/17ebfccd9b8d8c635407c4a01f06b46d69752100/include/vcpkg/base/parallel-algorithms.h#L78-L81 is missing a return statement, so both the foreground and background thread try to do the thing if and only if there is exactly 1 thing to restore from the binary cache

Before https://github.com/microsoft/vcpkg-tool/pull/1805 , clean_prepare_dir was not in the parallel region, so while we did launch a second useless 7z, it didn't tend to cause things to break since the duplicate copies wrote duplicate files. After that change though, one 7z tries to fill the directory while the other thread does clean_prepare_dir. At least one thinks a success happened, so subsequent parts of vcpkg assume that the CONTROL file inside is readable.

Example demonstrating that a cache restore needing exactly 1 restore fails while 2 or more succeeds is below.

I also changed ZipReadBinaryProvider to print even when not debugging and/or there is an expected success; that would have caught this issue or at least made it easier to explain.

```console
PS C:\Dev\vcpkg> C:\Dev\vcpkg-tool\out\build\Win-x64-Debug-WithArtifacts\vcpkg.exe install rapidcsv --binarysource "clear;x-azblob,https://vcpkgbinarycachewus.blob.core.windows.net/cache,REDACTED,read"
Computing installation plan...
The following packages will be built and installed:
    rapidcsv:x64-windows@8.89
  * vcpkg-cmake:x64-windows@2024-04-23
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x64-windows...
Compiler found: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe
warning: "C:\Dev\vcpkg-downloads\tools\7zip-25.01-windows\7z.exe" x "C:\Dev\vcpkg\buildtrees\vcpkg-cmake_791211895bfbb8dac9b79f35ee6d00ea0ee964e62694f558661e8f5a43016a64.zip" "-oC:\Dev\vcpkg\packages\vcpkg-cmake_x64-windows" -y failed with exit code 2

7-Zip 25.01 (x86) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03

Scanning the drive for archives:

ERROR: The system cannot find the file specified.
C:\Dev\vcpkg\buildtrees\vcpkg-cmake_791211895bfbb8dac9b79f35ee6d00ea0ee964e62694f558661e8f5a43016a64.zip

System ERROR:
The system cannot find the file specified.

C:\Dev\vcpkg\buildtrees\vcpkg-cmake_791211895bfbb8dac9b79f35ee6d00ea0ee964e62694f558661e8f5a43016a64.zip: note: while extracting this archive
Restored 1 package(s) from HTTP servers in 1.3 s. Use --debug to see more details.
Installing 1/2 vcpkg-cmake:x64-windows@2024-04-23...
no such file or directory
PS C:\Dev\vcpkg> C:\Dev\vcpkg-tool\out\build\Win-x64-Debug-WithArtifacts\vcpkg.exe install zlib rapidcsv --binarysource "clear;x-azblob,REDACTED,read"
Computing installation plan...
The following packages will be built and installed:
    rapidcsv:x64-windows@8.89
  * vcpkg-cmake:x64-windows@2024-04-23
    zlib:x64-windows@1.3.1
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x64-windows...
Compiler found: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe
Restored 2 package(s) from HTTP servers in 455 ms. Use --debug to see more details.
Installing 1/3 vcpkg-cmake:x64-windows@2024-04-23...
Elapsed time to handle vcpkg-cmake:x64-windows: 5.29 ms
vcpkg-cmake:x64-windows package ABI: 791211895bfbb8dac9b79f35ee6d00ea0ee964e62694f558661e8f5a43016a64
Installing 2/3 rapidcsv:x64-windows@8.89...
Building rapidcsv:x64-windows@8.89...
-- Using cached d99kris-rapidcsv-v8.89.tar.gz
-- Extracting source C:/Dev/vcpkg-downloads/d99kris-rapidcsv-v8.89.tar.gz
-- Using source at C:/Dev/vcpkg/buildtrees/rapidcsv/src/v8.89-cd345b3fd9.clean
-- Configuring x64-windows
-- Building x64-windows-dbg
-- Building x64-windows-rel
-- Installing: C:/Dev/vcpkg/packages/rapidcsv_x64-windows/share/rapidcsv/copyright
-- Performing post-build validation
Elapsed time to handle rapidcsv:x64-windows: 1.3 s
rapidcsv:x64-windows package ABI: a9ddd6a261ed7bb96b94a10d9f1be32ce4acbbd99bdb3d4daeb8d8264d45c637
Installing 3/3 zlib:x64-windows@1.3.1...
Elapsed time to handle zlib:x64-windows: 8.29 ms
zlib:x64-windows package ABI: 407af7bf6306e8a2c4f56671649adca653b9d1be17bc05ce5f1c66d29e74bb2f
Total install time: 1.3 s
Installed contents are licensed to you by owners. Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Packages installed in this vcpkg installation declare the following licenses:
BSD-3-Clause
MIT
Zlib
rapidcsv is header-only and can be used from CMake via:

  find_path(RAPIDCSV_INCLUDE_DIRS "rapidcsv.h")
  target_include_directories(main PRIVATE ${RAPIDCSV_INCLUDE_DIRS})

The package zlib is compatible with built-in CMake targets:

    find_package(ZLIB REQUIRED)
    target_link_libraries(main PRIVATE ZLIB::ZLIB)

All requested installations completed successfully in: 1.3 s
PS C:\Dev\vcpkg>
```
2025-10-16 10:14:35 -07:00
Billy O'Neal 09baed229f Update scripts SHA 2025-10-09. (#1807) 2025-10-09 15:53:08 -07:00
Billy O'Neal 7b7fd34b3b Fix ZipBinaryProvider unpack reporting + parallelize more (#1805)
* Fixes the incorrect tracking bug introduced here: https://github.com/microsoft/vcpkg-tool/pull/1715/files#r2414987620
* Gets clean_prepare_dir and the last_write_time fixup into the parallelized region

Related to https://github.com/microsoft/vcpkg/pull/43309

* Plumbs error handling through to one place
* Deletes decompress_in_parallel / cmd_execute_and_capture_output_parallel
2025-10-09 10:51:14 -07:00
Billy O'Neal 7c3408c00a Include NuGet console output on failures. (#1800)
Prior to this we were dropping NuGet console output on the floor requiring folks to use --debug.

There is a behavior change here in that if the exit code was 0 before but the console output included "Authentication may require manual action." we would print a warning anyway, now the warning is only printed on failure.

Drive by: Audit for 'Nuget' -> 'NuGet' for correct branding.
2025-10-08 16:21:19 -07:00
Billy O'Neal e17e95e795 Set the toolchain before detect_compiler. (#1793)
Fixes https://github.com/microsoft/vcpkg/pull/47585
2025-10-02 11:32:30 -07:00
Billy O'Neal 672776a935 Fix macOS build failure in Actions. (#1790) 2025-09-23 00:08:43 -07:00
Billy O'Neal 46b8cce32b Add service connection to macOS signing (#1786) 2025-09-17 23:22:08 -07:00
Billy O'Neal 6ad512aefe Add azureSubscription as requested by MicroBuild. (#1780) 2025-09-12 11:10:16 -07:00
Billy O'Neal 4f3755971c Remove embedded configuration warning. (#1766) 2025-09-08 12:37:20 -07:00
Billy O'Neal 4580816534 Update scripts SHA 2025-09-03. (#1775) 2025-09-03 15:06:36 -07:00
Billy O'Neal bc1a57d9fd 2025-08-29 Regressions Fixes (#1774)
* [Hotfix] Don't fail to enumerate file trees with broken symlink.

Resolves the 'fastdds' failures observed in https://github.com/microsoft/vcpkg/pull/47130

Note that the POSIX version of these functions already filter for ENOENT and ENOTDIR:

                                    if (::stat(full.c_str(), &s) != 0)
                                    {
                                        if (errno == ENOENT || errno == ENOTDIR)
                                        {
                                            ec.clear();
                                        }

* Add a Linux cmake preset that does not require node.js to be installed.

* [Hotfix] Don't fail to enumerate file trees with recursive symlinks

Fixes the wcslib:x64-android failures.

* [Hotfix] Harden filesystem ops in write_sbom.

Hopefully fixes:

error: open_for_read("/mnt/vcpkg-ci/p/salome-configuration_x64-linux/share/salome-configuration/copyright/modules.info"): Permission denied
2025-09-03 12:32:54 -07:00
Billy O'NealandRobert Schumacher 64f53c6396 Deduplicate the recursive file enumeration when installing packages. (#1770)
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
2025-08-29 10:48:14 -07:00
Billy O'Neal 4737a2fcbb Add CMAKE_DL_LIBS for dlopen/dlsym. (#1773)
Hopefully resolves build failures like: https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=12288570

```console
: && /usr/bin/g++ --sysroot=/crossrootfs/arm64 -isystem /crossrootfs/arm64/usr/include/aarch64-linux-gnu/c++/9 -isystem /crossrootfs/arm64/usr/include/c++/9 -B/crossrootfs/arm64/usr/lib/aarch64-linux-gnu/ -isystem /crossrootfs/arm64/usr/lib/gcc/aarch64-linux-gnu/9/include-fixed -isystem /crossrootfs/arm64/usr/lib/gcc/aarch64-linux-gnu/9/include -isystem /crossrootfs/arm64/usr/include/aarch64-linux-gnu -isystem /crossrootfs/arm64/usr/include -static-libgcc -nostdinc -static-libstdc++ -L/crossrootfs/arm64/usr/lib/gcc/aarch64-linux-gnu/9/ -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -Wno-missing-field-initializers -Wno-redundant-move -Wmissing-declarations -Wno-dangling-reference -Werror -O3 -DNDEBUG -Wl,--rpath-link=/crossrootfs/arm64/lib/aarch64-linux-gnu -Wl,--rpath-link=/crossrootfs/arm64/usr/lib/aarch64-linux-gnu -L/crossrootfs/arm64/usr/lib/aarch64-linux-gnu -Wl,--rpath-link=/crossrootfs/arm64/lib/aarch64-linux-gnu -Wl,--rpath-link=/crossrootfs/arm64/usr/lib/aarch64-linux-gnu -L/crossrootfs/arm64/usr/lib/aarch64-linux-gnu CMakeFiles/vcpkglib.dir/src/vcpkg/base/checks.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/chrono.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/cmd-parser.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/cofffilereader.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/diagnostics.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/downloads.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/files.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/git.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/hash.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/json.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/message_sinks.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/messages.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/parse.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/strings.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/stringview.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/system.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/system.deviceid.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/system.mac.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/system.process.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/system.proxy.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/uint128.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/unicode.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/uuid.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/base/xmlserializer.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/archives.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/binarycaching.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/binaryparagraph.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/buildenvironment.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/bundlesettings.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/cgroup-parser.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/ci-baseline.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/ci-feature-baseline.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/cmakevars.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.acquire-project.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.acquire.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.activate.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.add-version.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.add.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.autocomplete.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.bootstrap-standalone.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.build-external.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.build.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.check-support.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.ci-clean.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.ci-verify-versions.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.ci.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.contact.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.create.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.deactivate.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.depend-info.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.download.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.edit.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.env.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.export.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.fetch.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.find.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.format-feature-baseline.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.format-manifest.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.generate-msbuild-props.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.hash.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.help.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.init-registry.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.install.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.integrate.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.license-report.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.list.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.new.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.owns.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.package-info.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.portsdiff.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.regenerate.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.remove.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.search.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.set-installed.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.test-features.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.update-baseline.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.update-registry.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.update.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.upgrade.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.use.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.version.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.vsinstances.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-applocal.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-ce.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-changelog.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-check-tools-sha.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-extract.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-generate-message-map.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-preregister-telemetry.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-print-config.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/commands.z-upload-metrics.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/configuration.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/configure-environment.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/dependencies.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/input.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/metrics.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/packagespec.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/paragraphs.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/platform-expression.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/portfileprovider.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/postbuildlint.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/registries.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/sourceparagraph.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/spdx.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/statusparagraph.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/statusparagraphs.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/tools.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/triplet.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/vcpkgcmdarguments.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/vcpkglib.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/vcpkgpaths.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/versiondeserializers.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/versions.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/visualstudio.cpp.o CMakeFiles/vcpkglib.dir/src/vcpkg/xunitwriter.cpp.o CMakeFiles/vcpkg.dir/src/vcpkg.cpp.o -o vcpkg  _deps/fmt-build/libfmt.a  liblocale-resources.a  -pthread && :
/usr/bin/ld: CMakeFiles/vcpkg.dir/src/vcpkg.cpp.o: in function `(anonymous namespace)::inner(vcpkg::Filesystem const&, vcpkg::VcpkgCmdArguments const&, vcpkg::BundleSettings const&)':
vcpkg.cpp:(.text+0x47c): undefined reference to `dlopen'
/usr/bin/ld: vcpkg.cpp:(.text+0x48c): undefined reference to `dlsym'
/usr/bin/ld: vcpkg.cpp:(.text+0x494): undefined reference to `dlerror'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
mv: cannot stat '/mnt/vss/_work/_temp/build/vcpkg': No such file or directory
```
2025-08-28 17:27:50 -07:00