subspace icon indicating copy to clipboard operation
subspace copied to clipboard

MSVC Trybots and CI are disabled

Open danakj opened this issue 2 years ago • 9 comments

Currently MSVC can not build subspace. 17.4.2 works ✅ 17.6.3 does not 🚫

Github windows-latest has upgraded to 17.6.3 so we can't run MSVC bots. Github windows-2019 has MSVC 16 which was also not capable of building all the C++20 stuff in Subspace.

Upstream bug with MSVC: https://developercommunity.visualstudio.com/t/Update-to-1763-now-rejects-valid-C-i/10394500

Disabled here: https://github.com/chromium/subspace/commit/091aee45995274cd8cc7d2ffa0016b570d356e17

danakj avatar Jun 17 '23 20:06 danakj

CL 19.38.33130 is working, which comes with MSVC 17.8.1

I probably have these names wrong. I think it's MSVS 17.8.1.

danakj avatar Nov 25 '23 21:11 danakj

2022 17.8.1 is build 17.8.34316.72

Github is currently on build 17.8.34309.116 which is 17.8.0 from a week ago.

17.8.0 is not building subspace it seems, so we shall try again when github bumps.

danakj avatar Nov 25 '23 21:11 danakj

Hm, I am using MSVC 2022 17.8.1 locally and it is working. But on github it is failing.

https://github.com/chromium/subspace/actions/runs/7078666426/job/19264399269?pr=415

D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): error C2672: 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with': no matching overloaded function found
D:\a\subspace\subspace\sus/choice/choice.h(320): note: could be 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(Us &&...) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: the associated constraints are not satisfied
D:\a\subspace\subspace\sus/choice/choice.h(314): note: the constraint was not satisfied
D:\a\subspace\subspace\sus/choice/choice.h(295): note: or       'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(U &&) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: Failed to specialize function template 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(U &&) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: With the following template arguments:
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: 'V=`anonymous-namespace'::Order::First'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: 'U=unsigned int'
D:\a\subspace\subspace\sus/choice/choice.h(287): note: or       'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(void) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(void) noexcept': expects 0 arguments - 1 provided
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): error C2672: 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with': no matching overloaded function found
D:\a\subspace\subspace\sus/choice/choice.h(320): note: could be 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(Us &&...) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: the associated constraints are not satisfied
D:\a\subspace\subspace\sus/choice/choice.h(314): note: the constraint was not satisfied
D:\a\subspace\subspace\sus/choice/choice.h(295): note: or       'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(U &&) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(U &&) noexcept': expects 1 arguments - 0 provided
D:\a\subspace\subspace\sus/choice/choice.h(287): note: or       'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(void) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: Failed to specialize function template 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(void) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: With the following template arguments:
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: 'V=`anonymous-namespace'::Order::Second'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(108): error C3536: 'u': cannot be used before it is initialized
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(108): error C2660: 'testing::internal::EqHelper::Compare': function does not take 3 arguments
D:\a\subspace\subspace\third_party\googletest\googletest/include/gtest/gtest.h(1402): note: see declaration of 'testing::internal::EqHelper::Compare'
D:\a\subspace\subspace\third_party\googletest\googletest/include/gtest/gtest.h(1409): note: could be 'testing::AssertionResult testing::internal::EqHelper::Compare(const char *,const char *,std::nullptr_t,T *)'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(108): note: 'testing::AssertionResult testing::internal::EqHelper::Compare(const char *,const char *,std::nullptr_t,T *)': expects 4 arguments - 3 provided
D:\a\subspace\subspace\third_party\googletest\googletest/include/gtest/gtest.h(1390): note: or       'testing::AssertionResult testing::internal::EqHelper::Compare(const char *,const char *,const T1 &,const T2 &)'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(108): note: 'testing::AssertionResult testing::internal::EqHelper::Compare(const char *,const char *,const T1 &,const T2 &)': expects 4 arguments - 3 provided
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(108): note: while trying to match the argument list '(const char [10], const char [14], `anonymous-namespace'::Order)'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): error C2672: 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with': no matching overloaded function found
D:\a\subspace\subspace\sus/choice/choice.h(320): note: could be 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(Us &&...) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): note: the associated constraints are not satisfied
D:\a\subspace\subspace\sus/choice/choice.h(314): note: the constraint was not satisfied
D:\a\subspace\subspace\sus/choice/choice.h(295): note: or       'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(U &&) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): note: Failed to specialize function template 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(U &&) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): note: With the following template arguments:
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): note: 'V=`anonymous-namespace'::Order::First'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): note: 'U=sus::num::u32'
D:\a\subspace\subspace\sus/choice/choice.h(287): note: or       'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(void) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): note: 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u32>,sus::choice_type::__private::MakeStorageType<void>::type>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(void) noexcept': expects 0 arguments - 1 provided
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(118): error C3536: 'u': cannot be used before it is initialized
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(118): error C2059: syntax error: ')'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(118): error C2181: illegal else without matching if
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(118): error C2065: 'gtest_ar': undeclared identifier
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(118): error C2440: '<function-style-cast>': cannot convert from 'initializer list' to 'testing::internal::AssertHelper'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(118): note: 'testing::internal::AssertHelper::AssertHelper': function does not take 3 arguments
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(118): note: while trying to match the argument list '(testing::TestPartResult::Type, const char [53], int)'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(122): warning C4456: declaration of 'u' hides previous local declaration
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(117): note: see declaration of 'u'

danakj avatar Dec 03 '23 18:12 danakj

The relevant error part is this:

D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: Failed to specialize function template 'sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second> sus::choice_type::Choice<sus::choice_type::__private::TypeList<sus::tuple_type::Tuple<sus::num::u64>,sus::tuple_type::Tuple<sus::num::u32>>,`anonymous-namespace'::Order::First,`anonymous-namespace'::Order::Second>::with(U &&) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: With the following template arguments:
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: 'V=`anonymous-namespace'::Order::First'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(85): note: 'U=unsigned int'

Which comes from this call:

  enum class Order {
    First,
    Second,
    Third,
  };
  using One =
      Choice<sus_choice_types((Order::First, u64), (Order::Second, u32))>;
  auto u = One::with<One::Tag::First>(1u);

danakj avatar Dec 03 '23 18:12 danakj

The same happens for the 0-arg with() overload for void Choice values:

D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: Failed to specialize function template
 'sus::choice_type::Choice<
   sus::choice_type::__private::TypeList<
    sus::tuple_type::Tuple<sus::num::u32>,
    sus::choice_type::__private::MakeStorageType<void>::type>,
    `anonymous-namespace'::Order::First,
    `anonymous-namespace'::Order::Second>
sus::choice_type::Choice<
  sus::choice_type::__private::TypeList<
    sus::tuple_type::Tuple<sus::num::u32>,
    sus::choice_type::__private::MakeStorageType<void>::type>,
    `anonymous-namespace'::Order::First,
    `anonymous-namespace'::Order::Second>
  ::with(void) noexcept'
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: With the following template arguments:
D:\a\subspace\subspace\sus\choice\choice_unittest.cc(107): note: 'V=`anonymous-namespace'::Order::Second'

danakj avatar Dec 03 '23 18:12 danakj

https://github.com/chromium/subspace/pull/415 is the PR but can't land while it's broken on CI. I don't know why CI behaves differently than my machine does with the same MSVC.

danakj avatar Dec 03 '23 18:12 danakj

Oh, hm. On my machine, configure says:

[cmake] -- The C compiler identification is MSVC 19.38.33130.0
[cmake] -- The CXX compiler identification is MSVC 19.38.33130.0
[cmake] -- Detecting C compiler ABI info
[cmake] -- Detecting C compiler ABI info - done
[cmake] -- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.38.33130/bin/Hostx86/x64/cl.exe - skipped

On Github, configure says:

-- The C compiler identification is MSVC 19.37.32826.1
-- The CXX compiler identification is MSVC 19.37.32826.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/bin/HostX64/x64/cl.exe - skipped

So the version is still old, even though https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md#visual-studio-enterprise-2022 says it should be at build 17.8.34316.72 which is what I have installed.

danakj avatar Dec 03 '23 18:12 danakj

Is it possible VS Enterprise (github) has different MSVC versions than VS Community (me)...?

danakj avatar Dec 03 '23 18:12 danakj

Reported the bug here, as it seems the version is just older than it's supposed to be: https://github.com/orgs/community/discussions/77793

danakj avatar Dec 03 '23 19:12 danakj