Commit Graph

1678 Commits

Author SHA1 Message Date
Nicole Mazzuca
e79f0dc532 [vcpkg] Make Filesystem::remove_all faster #7570
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.
2019-08-07 16:51:12 -07:00
Phil Christensen
22e0b9f376
improve logic expression evaluation (#7508)
* better logic expression evaluation

Improve the logic expression evaluation currently used when filtering
dependencies.

Biggest improvements:
+  Allow '|' operator
+  Support nested '()'
+  Allow whitespace
+  Useful error message for malformed expressions

Also changed names of types to RawParagraph when that is what the original author was using.
2019-08-02 21:37:49 -07:00
nicole mazzuca
165907550c
Update tests, and add documentation! (#7506)
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
2019-08-02 09:52:39 -07:00
lukka
ae6ca87221 - remove trailing \r when parsing response file that might have Windows line endings; (#7491)
- when an option is not recognized (perhaps because it has trailing whitespace characters), print it out enclosed with single quote to delimit and highlight potenatial not printable characters.
2019-08-01 17:48:22 -07:00
nicole mazzuca
f990dfaa5b [vcpkg] Fix RealFilesystem::remove_all (#7430)
* 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
2019-07-26 16:32:33 -07:00
Curtis.Bezault
9da7c5c99e Make comment better 2019-07-25 09:38:05 -07:00
Curtis.Bezault
f81aa47176 convert path to string 2019-07-24 14:53:50 -07:00
Curtis.Bezault
67a749b989 turn path into string 2019-07-24 14:46:55 -07:00
Curtis.Bezault
be59ecce61 Use correct types 2019-07-24 14:43:44 -07:00
Curtis J Bezault
d60047280d
Merge branch 'master' into external_file_abi 2019-07-24 14:26:34 -07:00
Curtis.Bezault
0c7669d009 store fs::path instead of std::string 2019-07-24 14:24:49 -07:00
nicole mazzuca
aeecc01fbd Modify CMakeLists to split up vcpkglib (#7407)
Before this, we had vcpkg and vcpkg-test taking the vcpkglib source
files directory -- this commit makes vcpkglib an object library.
2019-07-24 13:50:45 -07:00
Curtis.Bezault
d68b9a08b1 only use filename 2019-07-23 16:28:00 -07:00
Curtis.Bezault
45cd8cda5a move the pre_build_info 2019-07-23 15:49:48 -07:00
Curtis.Bezault
81909e47d1 Remove types from this PR 2019-07-23 15:38:09 -07:00
Curtis.Bezault
829f99b506 remove needs_rebuild from statusparagraphs 2019-07-23 15:36:13 -07:00
Curtis.Bezault
f64d2e9103 remove accidental comment 2019-07-23 15:33:36 -07:00
Curtis.Bezault
e181376604 fix condition 2019-07-23 15:31:53 -07:00
Curtis.Bezault
62ec13ba36 Merge build.cpp 2019-07-23 15:29:49 -07:00
Curtis.Bezault
2f2a45595f Prompt rebuild if external hash changes 2019-07-23 15:26:13 -07:00
Curtis.Bezault
459908ae14 add external file hashes to the binary paragraph 2019-07-23 10:07:39 -07:00
Nicole Mazzuca
2c20a9d981 fix some of the awful mix of macros 2019-07-22 12:29:17 -07:00
Nicole Mazzuca
0d8bba52e4 allow tests to run on older standard libraries 2019-07-19 23:20:28 -07:00
Nicole Mazzuca
c55ea0a0d5 switch to new test framework 2019-07-19 12:56:24 -07:00
Nicole Mazzuca
b3caf67749 Merge branch 'trunk' into parallel-file-ops 2019-07-19 12:17:22 -07:00
Curtis J Bezault
3b808a48ce
Update VERSION.txt 2019-07-19 08:08:56 -07:00
Curtis J Bezault
18c849daea
Merge branch 'master' into external_file_abi 2019-07-19 08:08:08 -07:00
Curtis J Bezault
618fa203c1
[vcpkg] Portfile Settings (#7292) 2019-07-19 08:01:38 -07:00
nicole mazzuca
8250553789 Rewrite the tests! now they're cross-platform! (#7315)
* begin exploratory rewriting of tests

* continue working on tests

* more test work! holy butts vcpkg-tests/plan.cpp was a bunch of work

* finish writing new tests

  - [x] write catch2 tests
  - [ ] rewrite/at least delete the VS project files
  - [ ] document running tests

* Fix tests to work on WSL, rewrite test vcxproj

still need to test on macOS
also, delete tests.pch.h

* Condense add_test calls
2019-07-18 19:07:00 -07:00
Nicole Mazzuca
fddebb75da clang-format all the things 2019-07-18 19:03:46 -07:00
Curtis J Bezault
9b5ee99412
Update VERSION.txt 2019-07-18 16:20:00 -07:00
Dan Nissenbaum
ef48500ac6 Better error message when VCPKG_ROOT is independently defined (#7229) 2019-07-18 13:53:24 -07:00
Curtis.Bezault
d39bd70d53 add needs_rebuild, should probably be moved to somewhere else 2019-07-18 13:24:31 -07:00
Curtis J Bezault
bb3a9ddb6e
[vcpkg] Environment Variable Passthrough (#7290)
* use additional env param

* remove partials

* remove change to linux triplet

* Fix some issues that vicroms pointed out

* whitespace change
2019-07-18 09:02:21 -07:00
Nicole Mazzuca
f599f19bad tests.files.cpp:create_directory_tree -- change magic numbers to names 2019-07-17 18:58:23 -07:00
Curtis.Bezault
f18ffe9968 Add type field 2019-07-17 16:04:05 -07:00
Curtis.Bezault
58958eb0ea sourceparagraph changes 2019-07-17 14:27:18 -07:00
Curtis.Bezault
f0f615532f always calculate abi 2019-07-17 11:40:27 -07:00
Curtis.Bezault
e81d22ddec Convert name of file to u8 string, to compile on windows 2019-07-17 10:18:20 -07:00
Curtis.Bezault
d4ab567609 first pass at abi additional files 2019-07-17 10:10:36 -07:00
Curtis.Bezault
7d9d457f58 revert unecessary reordering 2019-07-16 16:09:30 -07:00
Curtis.Bezault
64198a8109 Add to vcpkg.cmake 2019-07-16 15:51:50 -07:00
Curtis.Bezault
44dcc3d4f3 First pass at port settings 2019-07-16 15:34:13 -07:00
Curtis.Bezault
6bef95b6f5 remove partials 2019-07-16 14:43:56 -07:00
Curtis.Bezault
684989a1e4 use additional env param 2019-07-16 14:02:13 -07:00
Nicole Mazzuca
65d34c5e55 wheeeee more fixes 2019-07-15 18:51:03 -07:00
Nicole Mazzuca
02c977186e modify files test to include symlinks 2019-07-15 16:43:55 -07:00
Nicole Mazzuca
771e23c665 forgot to test on macos >.< 2019-07-11 18:26:42 -07:00
Nicole Mazzuca
a0fe40ea58 add tests!
Also, fix all the bugs I found when I wrote the tests!
2019-07-11 18:21:25 -07:00
Nicole Mazzuca
510b0c5cc0 fix more comments 2019-07-11 18:21:09 -07:00
Nicole Mazzuca
3190235875 fix some comments from code reviewers 2019-07-11 18:20:36 -07:00
Nicole Mazzuca
bb57907207 make it compile on macos under g++6 2019-07-11 18:20:36 -07:00
Nicole Mazzuca
5b76f24f35 make this compile on macos 2019-07-11 18:20:36 -07:00
Nicole Mazzuca
3b6d6b3465 actually get the code compiling 2019-07-11 18:20:35 -07:00
Nicole Mazzuca
43493b56df delete the random number generator 2019-07-11 18:20:35 -07:00
Nicole Mazzuca
2d6df16849 remove_all parallelized, and fix the issues with symlink 2019-07-11 18:20:35 -07:00
Nicole Mazzuca
5857e2c680 initial remove-in-parallel
doesn't actually do parallel remove yet
2019-07-11 18:20:35 -07:00
Victor Romero
7dbe375a2c
Testing for --overlay-ports and --overlay-triplets args (#7243) 2019-07-11 17:00:55 -07:00
Phil Christensen
60bff8d549
allow spaces in pathname on linux (#7216) 2019-07-10 11:36:37 -07:00
gnaggnoyil
7f80c0e2d3 Make handle features (#6797) 2019-07-09 16:02:48 -04:00
Robert Schumacher
2b8e225b2e
[vcpkg] Fix powershell font corruption bug (#7094)
* [vcpkg] Fix font corruption bug on Windows by downloading Powershell Core

* [vcpkg] Rename subtool to powershell-core

* [vcpkg] Add missing includes to project files
2019-07-06 13:29:46 -07:00
Victor Romero
269fa0e6be
Bump version to 2019.06.26 (#7136) 2019-07-02 17:19:46 -07:00
martin-s
91da4aab4c Allow redirection of the scripts folder. (#6552)
* Allow redirection of the scripts folder with an environment variable.

* - Updated feature from environment variable to argument.

* Fix crash when no scripts override is given and use --scripts-root=<PATH> format

* Update help messages to use --scripts-root=<PATH> format
2019-07-01 22:51:07 -07:00
Victor Romero
96994f8ede
Revert Visual Studio projects versions (#7117) 2019-07-01 22:49:05 -07:00
Victor Romero
e2049cb975
[vcpkg_configure_cmake] Add NO_CHARSET_FLAG option (#7074)
* [vcpkg_configure_cmake] Add NO_CHARSET_FLAG option

* [vcpkg_configure_cmake] Add documentation for new NO_CHARSET_FLAG option

* [vcpkg_configure_cmake, windows toolchain] Handle NO_CHARSET_FLAG in toolchain

* [build.cpp] Add Windows toolchain to package hash

* [duilib,msix,thrift,tidy-html5] Use NO_CHARSET_FLAG to fix regressions
2019-06-30 09:31:22 -07:00
Phil Christensen
8e747d659c
[vcpkg] fail archived port install when decompression fails (#7086)
* [vcpkg] fail port install when decompression fails

* [vcpkg] clang-format
2019-06-30 00:15:08 -07:00
Robert Schumacher
b9b2a38c7b
[vcpkg-integrate] Improve spelling, help, and autocomplete. (#7095) 2019-06-29 23:05:09 -07:00
Victor Romero
35e985d3cc
Triplets Overlay Implementation (#7053)
* Triplets Overlay Implementation

* Use cache for get_triplet_file_path()

* Code cleanup
2019-06-27 12:20:12 -07:00
Victor Romero
9e565e9867
[--overlay-ports] Show location of overriden ports during install plan (#7002)
* [--overlay-ports] Show source location of overlayed ports during install plan

* Code cleanup

* Code cleanup
2019-06-24 12:09:48 -07:00
Victor Romero
f3db66b403
Ports Overlay partial implementation (#6981)
* Ports Overlay feature spec

* Ports Overlay implementation

* [--overlay-ports] Refactor handling of additional paths

* Code cleanup

* [--overlay-ports] Add help

* [depend-info] Support --overlay-ports

* Add method to load all ports using PathsPortFileProvider

* Make PortFileProvider::load_all_control_files() const

* Remove unused code

* [vcpkg] Avoid double-load of source control file between Build::perform_and_exit and Build::perform_and_exit_ex

* [vcpkg] Clang format

* [vcpkg] Fixup build failure introduced in b069ceb2f2

* Report errors from Paragraphs::try_load_port()
2019-06-21 23:50:05 -07:00
Farwaykorse
31184ac70d Bump version to 2019.06.21 (#6987) 2019-06-21 21:26:10 -07:00
Stephan T. Lavavej
f0902b3537 VS 2019 16.3 deprecates <experimental/filesystem>. (#6968)
VS 2019 16.3 will contain a couple of source-breaking changes:

* <experimental/filesystem> will be deprecated via an
impossible-to-miss preprocessor "#error The <experimental/filesystem>
header providing std::experimental::filesystem is deprecated by
Microsoft and will be REMOVED. It is superseded by the C++17
<filesystem> header providing std::filesystem. You can define
_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to acknowledge
that you have received this warning."

* <filesystem> will no longer include <experimental/filesystem>.

In the long term, I believe that vcpkg should detect when it's being
built with VS 2017 15.7 or newer, compile in C++17 mode, include
<filesystem>, and use std::filesystem. (Activating this for VS 2019 16.0
or newer would also be reasonable.) Similarly for other toolsets
supporting std::filesystem.

In the short term, this commit makes vcpkg compatible with the upcoming
deprecation. First, we need to define the silencing macro before
including the appropriate header. I've chosen to define it
unconditionally (without checking for platform or version), since it
has no effect for other platforms or versions. Second, we need to deal
with <filesystem> no longer including <experimental/filesystem>.
I verified that VS 2015 Update 3 contained <experimental/filesystem>
(back then, it simply included the <filesystem> header, where the
experimental implementation was defined; this was later reorganized).
Therefore, all of vcpkg's supported MSVC toolsets have
<experimental/filesystem>, so we can simply always include it.

I've verified that this builds with both VS 2015 Update 3 and
VS 2019 16.1.3 (the current production version).
2019-06-20 11:46:55 -07:00
Robert Schumacher
e5b92a3911
[vcpkg] Improve vcpkg::Files::Filesystem error handling (#6919)
* [vcpkg] Modify Filesystem::remove and Filesystem::rename to not throw.

* [.gitignore] Ignore new VS2019 CMake integration default location

* [.gitignore] Ignore CMakeSettings.json in toolsrc

* [vcpkg] Time external processes called with System::cmd_execute

* [vcpkg] Work around VS2019 CMake bug

* [vcpkg] Fix several unused variable warnings.

* [vcpkg] Improve error handling in vcpkg::Files::Filesystem

Always require either std::error_code or LineInfo to print better errors.

* [vcpkg] Fixup missing return value.

Drive by fix: silence warnings in tests.

* [vcpkg] Fix exiting in error_code overload

Drive by fixes for /analyze with VS2019
2019-06-19 11:49:57 -07:00
İsmail Dönmez
8c49e565c0 Protect #pragma comment(lib, "foo") with _WIN32 checks (#6867)
lld on Linux can now process #pragma comment(lib, "foo") macros which
results in build failures on Linux when lld is used. Fix this by
protecting these macros with _WIN32 checks.
2019-06-12 16:30:03 -07:00
Curtis J Bezault
b7d6160b80
[icu] Enable parallel builds (#6695)
* Add VCPKG_NUM_LOGICAL_CORES

* break out logic that retries running a command several times into its own function

* Parallelize icu
2019-06-12 14:18:43 -07:00
Phil Christensen
d962dc7d65 [vcpkg] Add optional 'Homepage' field to CONTROL (#6844)
* [control file] Add optional 'Homepage' tag

This allows a 'Homepage' tag to be added to a port in order to support
changes such as PR #2933.  It currently does not do anything with it.

* [docs]

Add Homepage to the control file documentation

* move urls from descriptions to homepage field.
2019-06-10 16:35:22 -07:00
Robert Schumacher
8045248372
[vcpkg] Apply clang format (#6826) 2019-06-08 18:31:58 -07:00
Sean Warren
17623739df [toolsrc] Optionally allow vcpkg to clean after each build (#6522)
* [toolsrc] Optionally allow vcpkg to clean packages, buildtrees and downloads after each build
Adds switch --clean-after-build

* [toolsrc] Clarify that --clean-after-build deletes downloads

* [toolsrc] Revert changes to ci download caching behaviour
2019-05-23 11:24:02 -07:00
myd7349
ce2a6ed835 [vcpkg] Avoid duplication of targets in the CMake message (#6536) 2019-05-20 10:18:24 -07:00
Curtis J Bezault
2bec973d3a
Handle moving files across partitions on macOS (#6506) 2019-05-20 09:29:13 -07:00
Robert Schumacher
77af264118
[vcpkg] Fix regression in --debug. Remove old features featureflag. (#6507) 2019-05-18 18:15:31 -07:00
lukka
46a77b9006 appleclang 10.01 does not have <filesystem> (#6413)
support
2019-05-13 04:11:35 -07:00
Phoebe
d3c18ed57e Remove Addtional checks since CMake support vs2019 now (#6265)
Remove Addtional checks since CMake support vs2019 now
2019-05-01 15:11:35 -07:00
Hongxu Xu
48f22127e8 Specify GIT only when VCPKG_FORCE_SYSTEM_BINARIES is set (#6143) 2019-04-24 18:05:53 -05:00
Curtis J Bezault
70f50a2d34 Add exit code (#6175)
* Add exit_fail to vcpkg.cpp

* Adding a comment as per @rastaban
2019-04-23 13:04:04 -07:00
fradav
5ab041409b Updated libc++fs link for libc++ 8.0 (#6029) 2019-04-15 22:50:09 -07:00
Stefano Sinigardi
821aff946c enable_language(CUDA) should now work as expected (#6069) 2019-04-12 10:50:53 -07:00
grdowns
022cfa2329 Add help entry for depend-info 2019-04-11 20:01:34 -07:00
grdowns
eeac6187c9 Merge branch 'depend_info_no_recurse' of https://github.com/jediry/vcpkg into dev/grdowns/6055 2019-04-11 19:10:08 -07:00
Curtis J Bezault
8fe6f4bdd8 Print what port installed confliciting files (#6037) 2019-04-11 08:27:44 -07:00
soroshsabz
246bd61ba1 Add -allowAppleClang option to bootstrap.sh. (fixes #4698) (#5915)
* Add -allowAppleClang option to bootstrap.sh. (fixes #4698)

* [vcpkg-bootstrap] Simplify appleclang changes and reformat

* [vcpkg-bootstrap] Remove enviroment variable VCPKG_ALLOW_APPLE_CLANG
2019-04-11 00:32:03 -07:00
Ryan Saunders
a492caf9d5 Merge branch 'master' into query_deps 2019-04-10 23:07:17 -07:00
Ryan Saunders
80965287d1 Add --no-recurse switch to depend-info command. 2019-04-10 23:01:37 -07:00
Robert Schumacher
705f9f4919 Complete revert of accidental merge b1b7ec5c0b 2019-04-09 16:04:41 -07:00
Victor Romero
1db72cd0ea Revert "Print what port installed confliciting files"
This reverts commit 79682317c9.
2019-04-09 15:55:20 -07:00
Curtis J Bezault
b1b7ec5c0b
Merge branch 'master' into master 2019-04-09 15:22:49 -07:00
Curtis.Bezault
79682317c9 Print what port installed confliciting files 2019-04-09 15:04:44 -07:00
Robert Schumacher
b39b0899cb [vcpkg] Synchronize vcpkg-base with external repo (#5934) 2019-04-08 23:26:18 -07:00
Curtis.Bezault
e9d2a83020 Check scripts/cmake/* and buildsystems/vcpkg.cmake for changes when hashing 2019-04-02 11:04:05 -07:00
Don
d71ad4800b Allow additional environment variables to be set in a clean environment (#5650)
* Allow additional environment variables to be set in a clean environment

* Add documentation for VCPKG_KEEP_ENV_VARS
2019-03-28 14:34:26 -07:00