mirror of
https://github.com/matrix-construct/construct
synced 2024-12-28 00:14:07 +01:00
ircd::info: Improve toolchain version related; various cleanup.
ircd::info: Add clang and SD-6 version identification.
This commit is contained in:
parent
364e98d564
commit
b99117465f
2 changed files with 106 additions and 45 deletions
|
@ -63,9 +63,12 @@ namespace ircd::info
|
||||||
extern const versions kernel_version;
|
extern const versions kernel_version;
|
||||||
|
|
||||||
// Toolchain and library information
|
// Toolchain and library information
|
||||||
extern const versions gnuc_version_api;
|
extern const versions gnuc_version;
|
||||||
|
extern const versions clang_version;
|
||||||
extern const versions glibc_version_api;
|
extern const versions glibc_version_api;
|
||||||
extern const versions glibc_version_abi;
|
extern const versions glibc_version_abi;
|
||||||
|
extern const versions glibcxx_version_api;
|
||||||
|
extern const versions sd6_version;
|
||||||
|
|
||||||
// Primary information
|
// Primary information
|
||||||
extern const string_view name;
|
extern const string_view name;
|
||||||
|
|
136
ircd/info.cc
136
ircd/info.cc
|
@ -36,10 +36,8 @@ ircd::info::dump()
|
||||||
// This message flashes information about IRCd itself for this execution.
|
// This message flashes information about IRCd itself for this execution.
|
||||||
log::info
|
log::info
|
||||||
{
|
{
|
||||||
"%s %ld %s. configured: %s; compiled: %s; executed: %s; %s",
|
"%s configured: %s; compiled: %s; executed: %s; %s",
|
||||||
BRANDING_VERSION,
|
BRANDING_VERSION,
|
||||||
__cplusplus,
|
|
||||||
__VERSION__,
|
|
||||||
configured,
|
configured,
|
||||||
compiled,
|
compiled,
|
||||||
startup,
|
startup,
|
||||||
|
@ -49,7 +47,9 @@ ircd::info::dump()
|
||||||
// This message flashes information about our API dependencies from compile time.
|
// This message flashes information about our API dependencies from compile time.
|
||||||
log::info
|
log::info
|
||||||
{
|
{
|
||||||
"API: glibc %s. boost %s. RocksDB %s. sodium %s. %s. magic %ld.",
|
"SD-6 %s. glibcxx %s. glibc %s. boost %s. RocksDB %s. sodium %s. %s. magic %ld.",
|
||||||
|
string_view{sd6_version},
|
||||||
|
string_view{glibcxx_version_api},
|
||||||
string_view{glibc_version_api},
|
string_view{glibc_version_api},
|
||||||
string_view{boost_version_api},
|
string_view{boost_version_api},
|
||||||
string_view{db::version_api},
|
string_view{db::version_api},
|
||||||
|
@ -59,9 +59,9 @@ ircd::info::dump()
|
||||||
};
|
};
|
||||||
|
|
||||||
// This message flashes information about our ABI dependencies on this system.
|
// This message flashes information about our ABI dependencies on this system.
|
||||||
log::debug
|
log::info
|
||||||
{
|
{
|
||||||
"ABI: glibc %s. boost %s. RocksDB %s. sodium %s. %s. magic %ld.",
|
"Linked: glibc %s. boost %s. RocksDB %s. sodium %s. %s. magic %ld.",
|
||||||
string_view{glibc_version_abi},
|
string_view{glibc_version_abi},
|
||||||
string_view{boost_version_abi},
|
string_view{boost_version_abi},
|
||||||
string_view{db::version_abi},
|
string_view{db::version_abi},
|
||||||
|
@ -191,6 +191,7 @@ ircd::info::versions::versions(const string_view &name,
|
||||||
,type{type}
|
,type{type}
|
||||||
,monotonic{monotonic}
|
,monotonic{monotonic}
|
||||||
,semantic{semantic}
|
,semantic{semantic}
|
||||||
|
,string{'\0'}
|
||||||
{
|
{
|
||||||
closure(*this, this->string);
|
closure(*this, this->string);
|
||||||
|
|
||||||
|
@ -200,16 +201,14 @@ ircd::info::versions::versions(const string_view &name,
|
||||||
|
|
||||||
// Generate a string from the semantic version number or if all zeroes
|
// Generate a string from the semantic version number or if all zeroes
|
||||||
// from the monotonic version number instead.
|
// from the monotonic version number instead.
|
||||||
if(monotonic && !semantic[0] && !semantic[1] && !semantic[2])
|
if(!this->semantic[0] && !this->semantic[1] && !this->semantic[2])
|
||||||
::snprintf(this->string, sizeof(this->string), "%ld",
|
::snprintf(this->string, sizeof(this->string), "%ld",
|
||||||
monotonic);
|
this->monotonic);
|
||||||
else if(!monotonic)
|
|
||||||
::snprintf(this->string, sizeof(this->string), "%ld.%ld.%ld",
|
|
||||||
semantic[0],
|
|
||||||
semantic[1],
|
|
||||||
semantic[2]);
|
|
||||||
else
|
else
|
||||||
::snprintf(this->string, sizeof(this->string), "<unknown>");
|
::snprintf(this->string, sizeof(this->string), "%ld.%ld.%ld",
|
||||||
|
this->semantic[0],
|
||||||
|
this->semantic[1],
|
||||||
|
this->semantic[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -257,7 +256,7 @@ ircd_name
|
||||||
//
|
//
|
||||||
|
|
||||||
//
|
//
|
||||||
// Host information
|
// System information
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifdef HAVE_SYS_UTSNAME_H
|
#ifdef HAVE_SYS_UTSNAME_H
|
||||||
|
@ -270,7 +269,9 @@ ircd::info::utsname{[]
|
||||||
}()};
|
}()};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
// kernel
|
// kernel
|
||||||
|
//
|
||||||
|
|
||||||
decltype(ircd::info::kernel_name)
|
decltype(ircd::info::kernel_name)
|
||||||
ircd::info::kernel_name
|
ircd::info::kernel_name
|
||||||
|
@ -313,67 +314,124 @@ ircd::info::kernel_version
|
||||||
0 // patch
|
0 // patch
|
||||||
},
|
},
|
||||||
|
|
||||||
utsname.release
|
[](auto &that, const auto &buf)
|
||||||
|
{
|
||||||
|
::snprintf(data(buf), size(buf), "%s %s",
|
||||||
|
utsname.sysname,
|
||||||
|
utsname.release);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// gnuc
|
// gnuc
|
||||||
//
|
//
|
||||||
#if defined(__GNUC__) && defined(__GLIBC__)
|
|
||||||
|
|
||||||
decltype(ircd::info::gnuc_version_api)
|
decltype(ircd::info::gnuc_version)
|
||||||
ircd::info::gnuc_version_api
|
ircd::info::gnuc_version
|
||||||
{
|
{
|
||||||
"gnuc", versions::API, 0,
|
"gnuc", versions::API, 0,
|
||||||
{
|
{
|
||||||
|
#if defined(__GNUC__)
|
||||||
__GNUC__,
|
__GNUC__,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC_MINOR__)
|
||||||
__GNUC_MINOR__,
|
__GNUC_MINOR__,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC_PATCHLEVEL__)
|
||||||
__GNUC_PATCHLEVEL__,
|
__GNUC_PATCHLEVEL__,
|
||||||
|
#endif
|
||||||
},
|
},
|
||||||
|
|
||||||
// version string
|
|
||||||
#if defined(__VERSION__)
|
#if defined(__VERSION__)
|
||||||
__VERSION__
|
__VERSION__
|
||||||
#else
|
|
||||||
"<__VERSION__ undefined>"
|
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif defined(__GNUC__) && defined(__GLIBC__)
|
//
|
||||||
|
// clang
|
||||||
|
//
|
||||||
|
|
||||||
|
decltype(ircd::info::clang_version)
|
||||||
|
ircd::info::clang_version
|
||||||
|
{
|
||||||
|
"clang", versions::API, 0,
|
||||||
|
{
|
||||||
|
#if defined(__clang_major__)
|
||||||
|
__clang_major__,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__clang_minor__)
|
||||||
|
__clang_minor__,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__clang_patchlevel__)
|
||||||
|
__clang_patchlevel__,
|
||||||
|
#endif
|
||||||
|
},
|
||||||
|
|
||||||
|
#if defined(__clang_version__)
|
||||||
|
__clang_version__
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// glibc
|
// glibc
|
||||||
//
|
//
|
||||||
#if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
|
||||||
|
|
||||||
decltype(ircd::info::glibc_version_api)
|
decltype(ircd::info::glibc_version_api)
|
||||||
ircd::info::glibc_version_api
|
ircd::info::glibc_version_api
|
||||||
{
|
{
|
||||||
"glibc", versions::API, 0,
|
"glibc", versions::API, 0,
|
||||||
{
|
{
|
||||||
|
#if defined(__GNU_LIBRARY__)
|
||||||
__GNU_LIBRARY__,
|
__GNU_LIBRARY__,
|
||||||
__GLIBC__,
|
#endif
|
||||||
__GLIBC_MINOR__,
|
|
||||||
},
|
|
||||||
|
|
||||||
[](auto &that, const auto &buf)
|
#if defined(__GLIBC__)
|
||||||
{
|
__GLIBC__,
|
||||||
::snprintf(data(buf), size(buf), "%ld.%ld.%ld",
|
#endif
|
||||||
that.semantic[0],
|
|
||||||
that.semantic[1],
|
#if defined(__GLIBC_MINOR__)
|
||||||
that.semantic[2]);
|
__GLIBC_MINOR__,
|
||||||
}
|
#endif
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef HAVE_GNU_LIBC_VERSION_H
|
|
||||||
decltype(ircd::info::glibc_version_abi)
|
decltype(ircd::info::glibc_version_abi)
|
||||||
ircd::info::glibc_version_abi
|
ircd::info::glibc_version_abi
|
||||||
{
|
{
|
||||||
"glibc", versions::ABI, 0, {0}, ::gnu_get_libc_version()
|
"glibc", versions::ABI, 0, {0},
|
||||||
};
|
|
||||||
#endif HAVE_GNU_LIBC_VERSION_H
|
|
||||||
|
|
||||||
#endif defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
#if defined(HAVE_GNU_LIBC_VERSION_H)
|
||||||
|
::gnu_get_libc_version()
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// glibcxx
|
||||||
|
//
|
||||||
|
|
||||||
|
decltype(ircd::info::glibcxx_version_api)
|
||||||
|
ircd::info::glibcxx_version_api
|
||||||
|
{
|
||||||
|
"glibcxx", versions::API,
|
||||||
|
|
||||||
|
#if defined(__GLIBCXX__)
|
||||||
|
__GLIBCXX__
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// sd6
|
||||||
|
//
|
||||||
|
|
||||||
|
decltype(ircd::info::sd6_version)
|
||||||
|
ircd::info::sd6_version
|
||||||
|
{
|
||||||
|
"SD-6", versions::API, __cplusplus
|
||||||
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// System information
|
// System information
|
||||||
|
|
Loading…
Reference in a new issue