hhvm / packaging

The sources for how we have built the HHVM packages.
MIT License
65 stars 65 forks source link

Add Ubuntu 21.10 #287

Closed Atry closed 2 years ago

Atry commented 2 years ago

It seems Thrift and Folly do not support Ubuntu 21.10 yet.

In file included from /tmp/hhvmpkg.fzFJ34X0/hhvm-nightly-2022.03.30/obj-x86_64-linux-gnu/third-party/thrift/bundled_thrift-prefix/src/bundled_thrift/thrift/lib/cpp2/server/ThriftServer.h:42,
                 from /tmp/hhvmpkg.fzFJ34X0/hhvm-nightly-2022.03.30/obj-x86_64-linux-gnu/third-party/thrift/bundled_thrift-prefix/src/bundled_thrift/thrift/lib/cpp2/server/ThriftServer.cpp:17:
/tmp/hhvmpkg.fzFJ34X0/hhvm-nightly-2022.03.30/obj-x86_64-linux-gnu/third-party/folly/bundled_folly-prefix/include/folly/lang/Badge.h: In instantiation of 'class folly::any_badge<apache::thrift::ThriftServer>':
/usr/include/c++/11/bits/unique_ptr.h:962:30:   required from 'typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = apache::thrift::ThriftServerStopController; _Args = {folly::badge<apache::thrift::ThriftServer>, folly::EventBase&}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<apache::thrift::ThriftServerStopController>]'
/tmp/hhvmpkg.fzFJ34X0/hhvm-nightly-2022.03.30/obj-x86_64-linux-gnu/third-party/thrift/bundled_thrift-prefix/src/bundled_thrift/thrift/lib/cpp2/server/ThriftServer.cpp:394:55:   required from here
/tmp/hhvmpkg.fzFJ34X0/hhvm-nightly-2022.03.30/obj-x86_64-linux-gnu/third-party/folly/bundled_folly-prefix/include/folly/lang/Badge.h:99:28: error: expansion pattern 'folly::StrictDisjunction<std::is_same<OtherHolders, Holders>...>' contains no parameter packs
   99 |   /* implicit */ constexpr any_badge(any_badge<OtherHolders...>) noexcept {}
      |                            ^~~~~~~~~
fredemmott commented 2 years ago

It seems Thrift and Folly do not support Ubuntu 21.10 yet.

In general, this is on us to patch, though the teams are always helpful and receptive :)

Atry commented 2 years ago

I think it is a known issue

At time of writing (Dec 2021) there is a build break on GCC 11.x based systems in lang_badge_test. If you don't need badge functionality you can work around by commenting it out from CMakeLists.txt (unfortunately fbthrift does need it)

https://github.com/facebook/folly/blob/main/README.md#ubuntu-lts-centos-stream-fedora

Atry commented 2 years ago

More discussion: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104008

Atry commented 2 years ago

The related regression in gcc should have fixed in https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=fc50d9a252c89c1bac78192bd0884ff23f2bf48b

I expect the build will pass once Ubuntu 21.10 upgraded to gcc 11.3 unless we found further compatibility issues with Ubuntu 21.10 .

fredemmott commented 2 years ago

I expect the build will pass once Ubuntu 21.10 upgraded to gcc 11.3 unless we found further compatibly issues with Ubuntu 21.10 .

AIUI Distributions generally do not change x. or .y within a single release; I do not expect Ubuntu 21.10 to upgrade to GCC 11.3

fredemmott commented 2 years ago

If I'm reading https://gcc.gnu.org/develop.html#timeline correctly, we should not expect an 11.3:

Stage 4

During this period, the only (non-documentation) changes that may be made are changes that fix regressions. Other important bugs like wrong-code, rejects-valid or build issues may be fixed as well. All changes during this period should be done with extra care on not introducing new regressions - fixing bugs at all cost is not wanted. Note that the same constraints apply to release branches. This period lasts until stage 1 opens for the next release.

GCC 12 has entered stage 1, so I'm not expecting another GCC release - though historically they have done maintenance releases after this point.

fredemmott commented 2 years ago

AIUI Distributions generally do not change x. or .y within a single release; I do not expect Ubuntu 21.10 to upgrade to GCC 11.3

I'm wrong.Ubuntu 18.04 includes GCC 7.5 that was released in November 14, 2019

Atry commented 2 years ago

If I'm reading https://gcc.gnu.org/develop.html#timeline correctly, we should not expect an 11.3:

Stage 4 During this period, the only (non-documentation) changes that may be made are changes that fix regressions. Other important bugs like wrong-code, rejects-valid or build issues may be fixed as well. All changes during this period should be done with extra care on not introducing new regressions - fixing bugs at all cost is not wanted. Note that the same constraints apply to release branches. This period lasts until stage 1 opens for the next release.

GCC 12 has entered stage 1, so I'm not expecting another GCC release - though historically they have done maintenance releases after this point.

https://gcc.gnu.org/gcc-11/changes.html#11.3

I think there are some Target Specific Changes for 11.3

Atry commented 2 years ago

The related regression in gcc should have fixed in https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=fc50d9a252c89c1bac78192bd0884ff23f2bf48b

I expect the build will pass once Ubuntu 21.10 upgraded to gcc 11.3 unless we found further compatibility issues with Ubuntu 21.10 .

Another option is to build HHVM with g++ 10, given that both g++ 10 and g++ 11 depend on libstdc++6. The ABI should be still compatible with other libraries in the Linux distribution.

Atry commented 2 years ago

I merged this PR today so hopefully nightly build for Ubuntu 21.10 would be created at weekend