[vcpkg] Move CI cleaning back out of the 'ci' command into a separate command to restore cross-compilation preinstalls. (#11545)

This commit is contained in:
Billy O'Neal 2020-05-27 18:40:23 -07:00 коммит произвёл GitHub
Родитель 1982faa57b
Коммит d9b4acf02d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
10 изменённых файлов: 53 добавлений и 16 удалений

Просмотреть файл

@ -35,6 +35,7 @@ jobs:
- bash: toolsrc/build.rel/vcpkg-test
displayName: 'Run vcpkg tests'
- powershell: |
./vcpkg x-ci-clean
$skipList = ./scripts/azure-pipelines/generate-skip-list.ps1 -Triplet "x64-linux" -BaselineFile "$(System.DefaultWorkingDirectory)/scripts/ci.baseline.txt"
mkdir $(System.ArtifactsDirectory)/xml-results
$env:HOME = '/home/agent'

Просмотреть файл

@ -36,6 +36,7 @@ jobs:
- bash: toolsrc/build.rel/vcpkg-test
displayName: 'Run vcpkg tests'
- powershell: |
./vcpkg x-ci-clean
$skip_list = ./scripts/azure-pipelines/generate-skip-list.ps1 -Triplet "x64-osx" -BaselineFile "$(System.DefaultWorkingDirectory)/scripts/ci.baseline.txt"
mkdir $(System.ArtifactsDirectory)/xml-results
./vcpkg ci x64-osx --x-xunit="$(System.ArtifactsDirectory)/xml-results/x64-osx.xml" --exclude=$skip_list --binarycaching

Просмотреть файл

@ -20,8 +20,15 @@ jobs:
inputs:
filename: 'bootstrap-vcpkg.bat'
- powershell: |
.\vcpkg.exe x-ci-clean
$skipList = ./scripts/azure-pipelines/generate-skip-list.ps1 -Triplet "${{ parameters.triplet }}" -BaselineFile "$(System.DefaultWorkingDirectory)\scripts\ci.baseline.txt"
mkdir $(System.ArtifactsDirectory)\xml-results
# WORKAROUND: the x86-windows flavors of these are needed for all cross-compilation, but they are not auto-installed.
# Install them so the CI succeeds:
if ( "${{ parameters.triplet }}" -notmatch "x86-windows" -and "${{ parameters.triplet }}" -notmatch "x64-windows" ) {
.\vcpkg.exe install protobuf:x86-windows boost-build:x86-windows sqlite3:x86-windows
}
$command = ".\vcpkg.exe ci ${{ parameters.triplet }} --x-xunit=`"$(System.ArtifactsDirectory)\xml-results\${{ parameters.triplet }}.xml`" --exclude=$skipList --binarycaching"
Set-Content -Path 'run_ci.cmd' -Value $command -Encoding ASCII
displayName: 'Write Test Modified Ports Batch File'

Просмотреть файл

@ -166,14 +166,6 @@ boost-test:arm-uwp=fail
boost-test:x64-uwp=fail
boost-wave:arm-uwp=fail
boost-wave:x64-uwp=fail
# Building boost-* with arm-uwp requires the x86-windows boost-* which breaks CI testing, Ignore them
boost-atomic:arm-uwp=ignore
boost-signals:arm-uwp=ignore
boost-exception:arm-uwp=ignore
boost-regex:arm-uwp=ignore
boost-nowide:arm-uwp=ignore
boost-system:arm-uwp=ignore
boost-container:arm-uwp=ignore
botan:arm64-windows=fail
botan:arm-uwp=fail
botan:x64-uwp=fail

Просмотреть файл

@ -27,6 +27,11 @@ namespace vcpkg::Commands
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths, Triplet default_triplet);
}
namespace CIClean
{
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
}
namespace Env
{
extern const CommandStructure COMMAND_STRUCTURE;

Просмотреть файл

@ -397,12 +397,6 @@ namespace vcpkg::Commands::CI
const ParsedArguments options = args.parse_arguments(COMMAND_STRUCTURE);
auto& filesystem = paths.get_filesystem();
if (filesystem.is_directory(paths.installed))
{
filesystem.remove_all_inside(paths.installed, VCPKG_LINE_INFO);
}
std::set<std::string> exclusions_set;
auto it_exclusions = options.settings.find(OPTION_EXCLUDE);
if (it_exclusions != options.settings.end())
@ -558,11 +552,11 @@ namespace vcpkg::Commands::CI
System::print2("Total elapsed time: ", result.summary.total_elapsed_time, "\n");
result.summary.print();
}
auto& fs = paths.get_filesystem();
auto it_xunit = options.settings.find(OPTION_XUNIT);
if (it_xunit != options.settings.end())
{
fs.write_contents(fs::u8path(it_xunit->second), xunitTestResults.build_xml(), VCPKG_LINE_INFO);
paths.get_filesystem().write_contents(fs::u8path(it_xunit->second), xunitTestResults.build_xml(), VCPKG_LINE_INFO);
}
Checks::exit_success(VCPKG_LINE_INFO);

Просмотреть файл

@ -0,0 +1,32 @@
#include "pch.h"
#include <vcpkg/base/checks.h>
#include <vcpkg/base/files.h>
#include <vcpkg/commands.h>
#include <vcpkg/vcpkgcmdarguments.h>
using namespace vcpkg;
namespace vcpkg::Commands::CIClean
{
void perform_and_exit(const VcpkgCmdArguments&, const VcpkgPaths& paths)
{
auto& fs = paths.get_filesystem();
if (fs.is_directory(paths.buildtrees))
{
fs.remove_all_inside(paths.buildtrees, VCPKG_LINE_INFO);
}
if (fs.is_directory(paths.installed))
{
fs.remove_all_inside(paths.installed, VCPKG_LINE_INFO);
}
if (fs.is_directory(paths.packages))
{
fs.remove_all_inside(paths.packages, VCPKG_LINE_INFO);
}
Checks::exit_success(VCPKG_LINE_INFO);
}
}

Просмотреть файл

@ -48,6 +48,7 @@ namespace vcpkg::Commands
{"autocomplete", &Autocomplete::perform_and_exit},
{"hash", &Hash::perform_and_exit},
{"fetch", &Fetch::perform_and_exit},
{"x-ci-clean", &CIClean::perform_and_exit},
{"x-history", &PortHistory::perform_and_exit},
{"x-vsinstances", &X_VSInstances::perform_and_exit},
};

Просмотреть файл

@ -244,6 +244,7 @@
<ClCompile Include="..\src\vcpkg\commands.buildexternal.cpp" />
<ClCompile Include="..\src\vcpkg\commands.cache.cpp" />
<ClCompile Include="..\src\vcpkg\commands.ci.cpp" />
<ClCompile Include="..\src\vcpkg\commands.ciclean.cpp" />
<ClCompile Include="..\src\vcpkg\commands.contact.cpp" />
<ClCompile Include="..\src\vcpkg\commands.cpp" />
<ClCompile Include="..\src\vcpkg\commands.create.cpp" />

Просмотреть файл

@ -48,6 +48,9 @@
<ClCompile Include="..\src\vcpkg\commands.ci.cpp">
<Filter>Source Files\vcpkg</Filter>
</ClCompile>
<ClCompile Include="..\src\vcpkg\commands.ciclean.cpp">
<Filter>Source Files\vcpkg</Filter>
</ClCompile>
<ClCompile Include="..\src\vcpkg\commands.contact.cpp">
<Filter>Source Files\vcpkg</Filter>
</ClCompile>