<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vcpkg/toolsrc/src/vcpkg-test, branch 2019.09</title>
<subtitle>Forked from https://github.com/microsoft/vcpkg</subtitle>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/'/>
<entry>
<title>Fix bug in `.vcpkg-root` detection that breaks `--overlay-triplets` (#7954)</title>
<updated>2019-09-13T06:52:52+00:00</updated>
<author>
<name>martin-s</name>
<email>webmaster@macside.net</email>
</author>
<published>2019-09-13T06:52:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=191c864927ea9e9e8788408adda4eff35d3edaf1'/>
<id>191c864927ea9e9e8788408adda4eff35d3edaf1</id>
<content type='text'>
* - Added scripts variable to ports file.
- Added check if triplet file is not available (NPE).

* - Fixed line endings.

* Provide location of .vcpkg-root to ports.cmake

* vcpkg sets VCPKG_ROOT_PATH in ports.cmake

* [vcpkg] Fail if VCPKG_ROOT_PATH is not passed from vcpkg.exe

* [vcpkg] Fix vcpkg rooth path

* [vcpkg] Make --x-scripts-root an experimental command
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* - Added scripts variable to ports file.
- Added check if triplet file is not available (NPE).

* - Fixed line endings.

* Provide location of .vcpkg-root to ports.cmake

* vcpkg sets VCPKG_ROOT_PATH in ports.cmake

* [vcpkg] Fail if VCPKG_ROOT_PATH is not passed from vcpkg.exe

* [vcpkg] Fix vcpkg rooth path

* [vcpkg] Make --x-scripts-root an experimental command
</pre>
</div>
</content>
</entry>
<entry>
<title>[vcpkg] fix bug in StringView::operator== 😱 (#7930)</title>
<updated>2019-08-27T21:03:49+00:00</updated>
<author>
<name>nicole mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-08-27T21:03:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=32a53e1f3755960b09fc228dce23885aa7efcb8f'/>
<id>32a53e1f3755960b09fc228dce23885aa7efcb8f</id>
<content type='text'>
Before this change, `lhs == rhs` missed the check for
`lhs.size() == rhs.size()`, and then did a `memcmp` on the buffers up to
`lhs.size()`. This means that, if `lhs.size() &lt; rhs.size()`, it would
allow two unequal strings to compare equal if, up to `lhs.size()` they
are the same; and if `lhs.size() &gt; rhs.size()`, then it would read out
of bounds.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Before this change, `lhs == rhs` missed the check for
`lhs.size() == rhs.size()`, and then did a `memcmp` on the buffers up to
`lhs.size()`. This means that, if `lhs.size() &lt; rhs.size()`, it would
allow two unequal strings to compare equal if, up to `lhs.size()` they
are the same; and if `lhs.size() &gt; rhs.size()`, then it would read out
of bounds.</pre>
</div>
</content>
</entry>
<entry>
<title>(#7757) [vcpkg] Switch to internal hash algorithms 📜</title>
<updated>2019-08-26T19:35:22+00:00</updated>
<author>
<name>Nicole Mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-08-08T23:14:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=782723959399a1a0725ac4921b1b7a7c9d10baf7'/>
<id>782723959399a1a0725ac4921b1b7a7c9d10baf7</id>
<content type='text'>
On non-Windows platforms, there is no standard way to get the hash of an
item -- before this PR, what we did was check for the existence of a few
common utility names (shasum, sha1, sha256, sha512), and then call that
utility on a file we created containing the contents we wish to hash.
This PR adds internal hashers for sha1, sha256, and sha512, and
standardizes the interface to allow anyone to implement hashers in the
future.

These hashers are not extremely optimized, so it's likely that in the
future we could get more optimized, but for now we just call out to
BCryptHasher on Windows, since it's standard and easy to use (and about
2x faster for sha1 and sha256, and 1.5x faster for sha512). However,
they are reasonably fast for being unoptimized. I attempted a few minor
optimizations, which actually made the code slower! So as of right now,
it's implemented as just a basic conversion of the code on Wikipedia to
C++. I have tested these on the standard NIST test vectors (and those
test vectors are located in vcpkg-test/hash.cpp).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On non-Windows platforms, there is no standard way to get the hash of an
item -- before this PR, what we did was check for the existence of a few
common utility names (shasum, sha1, sha256, sha512), and then call that
utility on a file we created containing the contents we wish to hash.
This PR adds internal hashers for sha1, sha256, and sha512, and
standardizes the interface to allow anyone to implement hashers in the
future.

These hashers are not extremely optimized, so it's likely that in the
future we could get more optimized, but for now we just call out to
BCryptHasher on Windows, since it's standard and easy to use (and about
2x faster for sha1 and sha256, and 1.5x faster for sha512). However,
they are reasonably fast for being unoptimized. I attempted a few minor
optimizations, which actually made the code slower! So as of right now,
it's implemented as just a basic conversion of the code on Wikipedia to
C++. I have tested these on the standard NIST test vectors (and those
test vectors are located in vcpkg-test/hash.cpp).
</pre>
</div>
</content>
</entry>
<entry>
<title>[vcpkg] Major tool CMakeLists.txt updates</title>
<updated>2019-08-17T02:40:53+00:00</updated>
<author>
<name>Nicole Mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-08-09T18:16:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=300e21d59ebfe42e118cf4e97887f0680fbcfa2f'/>
<id>300e21d59ebfe42e118cf4e97887f0680fbcfa2f</id>
<content type='text'>
- Add the "VCPKG_DEVELOPMENT_WARNINGS" flag
	- setting "WERROR" will also set this flag
	- This flag is set by default
	- on GCC/clang, this will pass '-Wall -Wextra -Wpedantic -Werror'
	- on GCC, this will additionally pass '-Wmissing-declarations'
	- on clang, this will additionally pass '-Wmissing-prototypes'
	- on MSVC, this will pass '-W4 -WX'
- On Visual Studio 2017 and later, pass '-permissive-'
- Change the source for fallout of these changes
- add `format` subcommand
	- formats all C++ source and header files using clang-format
- move `include/vcpkg-test/catch.h` to `include/catch2/catch.hpp`
- pass CONFIGURE_DEPENDS to file(GLOB)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Add the "VCPKG_DEVELOPMENT_WARNINGS" flag
	- setting "WERROR" will also set this flag
	- This flag is set by default
	- on GCC/clang, this will pass '-Wall -Wextra -Wpedantic -Werror'
	- on GCC, this will additionally pass '-Wmissing-declarations'
	- on clang, this will additionally pass '-Wmissing-prototypes'
	- on MSVC, this will pass '-W4 -WX'
- On Visual Studio 2017 and later, pass '-permissive-'
- Change the source for fallout of these changes
- add `format` subcommand
	- formats all C++ source and header files using clang-format
- move `include/vcpkg-test/catch.h` to `include/catch2/catch.hpp`
- pass CONFIGURE_DEPENDS to file(GLOB)
</pre>
</div>
</content>
</entry>
<entry>
<title>remove clever use of std::ignore</title>
<updated>2019-08-10T20:13:21+00:00</updated>
<author>
<name>Nicole Mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-08-10T19:27:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=29ddf1a5c2711161a5642ab515f6cae5f01ca3e9'/>
<id>29ddf1a5c2711161a5642ab515f6cae5f01ca3e9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[vcpkg] Fix build under /W4</title>
<updated>2019-08-10T20:13:21+00:00</updated>
<author>
<name>Nicole Mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-08-09T19:00:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=52b2e740de81d58fbe5fa535c1f66aa82e80951e'/>
<id>52b2e740de81d58fbe5fa535c1f66aa82e80951e</id>
<content type='text'>
I was building under /W3, because CMake hadn't been set up to build
under /W4 -- therefore, I didn't see some warnings.

We also decided to remove the niebloids and instead break ADL by using
`= delete`, since otherwise we get warnings when we define a local
variable with the same name as a niebloid. I also removed `status` and
`symlink_status` from the `files` header, since it's unnecessary now,
and they're just implementation details of `RealFilesystem`.

I also removed some existing uses of unqualified `status(path)`, since
that no longer compiles. I also added `Filesystem::canonical`, to remove
another use of `fs::stdfs` in a function I was already working in.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I was building under /W3, because CMake hadn't been set up to build
under /W4 -- therefore, I didn't see some warnings.

We also decided to remove the niebloids and instead break ADL by using
`= delete`, since otherwise we get warnings when we define a local
variable with the same name as a niebloid. I also removed `status` and
`symlink_status` from the `files` header, since it's unnecessary now,
and they're just implementation details of `RealFilesystem`.

I also removed some existing uses of unqualified `status(path)`, since
that no longer compiles. I also added `Filesystem::canonical`, to remove
another use of `fs::stdfs` in a function I was already working in.
</pre>
</div>
</content>
</entry>
<entry>
<title>[vcpkg] Make Filesystem::remove_all faster #7570</title>
<updated>2019-08-07T23:51:12+00:00</updated>
<author>
<name>Nicole Mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-08-02T23:49:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=e79f0dc5328f28b2b3942e2cd0e9b0c1accca4a1'/>
<id>e79f0dc5328f28b2b3942e2cd0e9b0c1accca4a1</id>
<content type='text'>
I added benchmarks to measure how fast the parallel remove_all code was
-- it turns out, about 3x slower than stdfs::remove_all. Since this was
the case, I removed all of the parallelism and rewrote it serially, and
ended up about 30% faster than stdfs::remove_all (in addition to
supporting symlinks).

In addition, I did the following three orthogonal changes:
  - simplified the work queue, basing it on Billy O'Neal's idea
  - Fix warnings on older versions of compilers in tests, by splitting
    the pragmas out of pch.h.
  - Ran clang-format on some files

In fixing up remove_all, the following changes were made:
  - On Windows, regular symlinks and directory symlinks are distinct;
    as an example, to remove directory symlinks (and junctions, for that
    matter), one must use RemoveDirectory. Only on Windows, I added new
    `file_type` and `file_status` types, with `file_type` including a new
    `directory_symlink` enumerator, and `file_status` being exactly the
    same as the old one except using the new `file_type`. On Unix, I
    didn't make that change since they don't make a distinction.
  - I added new `symlink_status` and `status` functions which use the
    new `file_status` on Windows.
  - I made `Filesystem::exists` call `fs::exists(status(p))`, as opposed
    to the old version which called `stdfs::exists` directly.
  - Added benchmarks to `vcpkg-test/files.cpp`. They test the
    performance of `remove_all` on small directories (~20 files), with
    symlinks and without, and on large directories (~2000 files), with
    symlinks and without.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I added benchmarks to measure how fast the parallel remove_all code was
-- it turns out, about 3x slower than stdfs::remove_all. Since this was
the case, I removed all of the parallelism and rewrote it serially, and
ended up about 30% faster than stdfs::remove_all (in addition to
supporting symlinks).

In addition, I did the following three orthogonal changes:
  - simplified the work queue, basing it on Billy O'Neal's idea
  - Fix warnings on older versions of compilers in tests, by splitting
    the pragmas out of pch.h.
  - Ran clang-format on some files

In fixing up remove_all, the following changes were made:
  - On Windows, regular symlinks and directory symlinks are distinct;
    as an example, to remove directory symlinks (and junctions, for that
    matter), one must use RemoveDirectory. Only on Windows, I added new
    `file_type` and `file_status` types, with `file_type` including a new
    `directory_symlink` enumerator, and `file_status` being exactly the
    same as the old one except using the new `file_type`. On Unix, I
    didn't make that change since they don't make a distinction.
  - I added new `symlink_status` and `status` functions which use the
    new `file_status` on Windows.
  - I made `Filesystem::exists` call `fs::exists(status(p))`, as opposed
    to the old version which called `stdfs::exists` directly.
  - Added benchmarks to `vcpkg-test/files.cpp`. They test the
    performance of `remove_all` on small directories (~20 files), with
    symlinks and without, and on large directories (~2000 files), with
    symlinks and without.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update tests, and add documentation! (#7506)</title>
<updated>2019-08-02T16:52:39+00:00</updated>
<author>
<name>nicole mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-08-02T16:52:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=165907550c8f6ce7506beef591f55cd3f8458d78'/>
<id>165907550c8f6ce7506beef591f55cd3f8458d78</id>
<content type='text'>
This PR does the following:

* fix tests -- now, they're always built in the CMake scripts, and they work on VS2015
  *add a new flag, BUILD_TESTING, which allows one to turn off testing builds
* Add documentation for running tests
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR does the following:

* fix tests -- now, they're always built in the CMake scripts, and they work on VS2015
  *add a new flag, BUILD_TESTING, which allows one to turn off testing builds
* Add documentation for running tests
</pre>
</div>
</content>
</entry>
<entry>
<title>[vcpkg] Fix RealFilesystem::remove_all (#7430)</title>
<updated>2019-07-26T23:32:33+00:00</updated>
<author>
<name>nicole mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-07-26T23:32:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=f990dfaa5ba82155f95b75021453c075816fd4be'/>
<id>f990dfaa5ba82155f95b75021453c075816fd4be</id>
<content type='text'>
* fix remove_all

we were attempting to remove READONLY files before this, and so set them to non-READONLY

* fix linux/macos support

* whee fix vs2015
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* fix remove_all

we were attempting to remove READONLY files before this, and so set them to non-READONLY

* fix linux/macos support

* whee fix vs2015
</pre>
</div>
</content>
</entry>
<entry>
<title>fix some of the awful mix of macros</title>
<updated>2019-07-22T19:29:17+00:00</updated>
<author>
<name>Nicole Mazzuca</name>
<email>mazzucan@outlook.com</email>
</author>
<published>2019-07-22T18:16:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/vcpkg/commit/?id=2c20a9d98186e029ff443932295d7cdcad96980e'/>
<id>2c20a9d98186e029ff443932295d7cdcad96980e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
