Project

General

Profile

Actions

Bug #62589

open

Failure to build 18.2.0 on Ubuntu/Mantic

Added by Luciano Lo Giudice 9 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Hello,

I've encountered the following issues when building Ceph from source on Ubuntu/Mantic.

The first is a compiler issue, with g++ version:

```
/home/lmlg/src/ceph/src/seastar/src/util/log.cc:566:7: error: converting to ‘std::optional<std::unordered_map<seastar::basic_sstring<char, unsigned int, 15>, seastar::log_level> >’ from initializer list would use explicit constructor ‘constexpr std::optional<_Tp>::optional(std::in_place_t, Args&& ...) [with _Args = {}; typename std::enable_if<_and_v<std::is_constructible<_Tp, _Args ...> >, bool>::type <anonymous> = false; _Tp = std::unordered_map<seastar::basic_sstring<char, unsigned int, 15>, seastar::log_level>]’
566 | , logger_log_level(*this, "logger-log-level", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
567 | {{}}, | ~~~
568 | "Map of logger name to log level. The format is \"NAME0=LEVEL0[:NAME1=LEVEL1:...]\". " | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
569 | "Valid logger names can be queried with --help-loggers. " | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
570 | "Valid values for levels are trace, debug, info, warn, error. " | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
571 | "This option can be specified multiple times." | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
572 | ) | ~
/home/lmlg/src/ceph/src/seastar/src/util/log.cc:566:7: error: converting to ‘std::in_place_t’ from initializer list would use explicit constructor ‘constexpr std::in_place_t::in_place_t()’
```

This can be fixed by changing the double pair of brackets with the expression std::optional<log_level_map>().

The other issues apply when building on armhf.

1 - on the file src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h:
There isn't a fallback implementation for armhf. I opted out to using clock_gettime(CLOCK_MONOTONIC), since there's no timestamp counter accessible from userspace, to my knowledge.

2 - on the file src/osd/OSDMap.cc:
There are a couple of calls to std::max which are ambiguous because they are called with different types. This happens on line 6147 and 6154, where the variables n_prims and n_aprims are declared as auto which leads to them being uint32_t. They are then used in the call to std::max with 64-bit integers, leading to the error. In order to fix this, I changed their types to uint64_t.

3 - on the file src/cls/rgw/cls_rgw_types.h:
The call to encode(shard_rollover_date, bl) is ambiguous. To fix this, simply cast `shard_rollover_date` to uint64_t.

No data to display

Actions

Also available in: Atom PDF