mirror of
https://github.com/matrix-construct/construct
synced 2024-11-29 10:12:39 +01:00
ircd: Apply uniform info::versions for all dependency version identification.
This commit is contained in:
parent
7d4de7ec82
commit
eb73595c50
17 changed files with 247 additions and 218 deletions
|
@ -28,13 +28,8 @@ namespace ircd::db
|
||||||
// db subsystem has its own logging facility
|
// db subsystem has its own logging facility
|
||||||
extern struct log::log log;
|
extern struct log::log log;
|
||||||
|
|
||||||
// Version information from rocksdb headers (when building ircd).
|
// Version information from rocksdb headers and library
|
||||||
extern const uint version[3];
|
extern const info::versions version_api, version_abi;
|
||||||
extern const string_view version_str;
|
|
||||||
|
|
||||||
// Version of the RocksDB shared library (when running ircd).
|
|
||||||
extern const uint abi_version[3];
|
|
||||||
extern const string_view abi_version_str;
|
|
||||||
|
|
||||||
// Supported compressions (detected when running ircd)
|
// Supported compressions (detected when running ircd)
|
||||||
extern std::array<std::string, 16> compressions;
|
extern std::array<std::string, 16> compressions;
|
||||||
|
|
|
@ -52,17 +52,17 @@ namespace ircd::info
|
||||||
extern const size_t rlimit_nofile;
|
extern const size_t rlimit_nofile;
|
||||||
extern const size_t rlimit_rttime;
|
extern const size_t rlimit_rttime;
|
||||||
|
|
||||||
// Host information
|
// Host & third-party information
|
||||||
#ifdef HAVE_SYS_UTSNAME_H
|
#ifdef HAVE_SYS_UTSNAME_H
|
||||||
extern const ::utsname utsname;
|
extern const ::utsname utsname;
|
||||||
#endif
|
#endif
|
||||||
extern const string_view kname;
|
|
||||||
extern const string_view kversion_str;
|
|
||||||
extern const int kversion[3];
|
|
||||||
|
|
||||||
// Third-party information
|
extern const string_view kernel_name;
|
||||||
extern const int glibc_version[3];
|
extern const string_view kernel_release;
|
||||||
extern const string_view glibc_version_str;
|
extern const versions kernel_version;
|
||||||
|
|
||||||
|
extern const versions glibc_version_api;
|
||||||
|
extern const versions glibc_version_abi;
|
||||||
|
|
||||||
// Primary information
|
// Primary information
|
||||||
extern const string_view name;
|
extern const string_view name;
|
||||||
|
|
|
@ -29,8 +29,7 @@ namespace ircd
|
||||||
{
|
{
|
||||||
namespace asio = boost::asio; ///< Alias so that asio:: can be used.
|
namespace asio = boost::asio; ///< Alias so that asio:: can be used.
|
||||||
|
|
||||||
extern const uint boost_version[3];
|
extern const info::versions boost_version_api, boost_version_abi;
|
||||||
extern const string_view boost_version_str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ircd::ios
|
namespace ircd::ios
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace ircd::magick
|
||||||
struct thumbnail;
|
struct thumbnail;
|
||||||
struct thumbcrop;
|
struct thumbcrop;
|
||||||
|
|
||||||
std::tuple<ulong, string_view> version();
|
extern const info::versions version_api, version_abi;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Composite thumbnailer to resize close to the requested dimension but
|
/// Composite thumbnailer to resize close to the requested dimension but
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace ircd::magic
|
||||||
string_view extensions(const mutable_buffer &out, const const_buffer &);
|
string_view extensions(const mutable_buffer &out, const const_buffer &);
|
||||||
string_view description(const mutable_buffer &out, const const_buffer &);
|
string_view description(const mutable_buffer &out, const const_buffer &);
|
||||||
|
|
||||||
int version();
|
extern const info::versions version_api, version_abi;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ircd::magic::init
|
struct ircd::magic::init
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace ircd::nacl
|
||||||
|
|
||||||
struct init;
|
struct init;
|
||||||
|
|
||||||
string_view version();
|
extern const info::versions version_api, version_abi;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ircd::nacl::init
|
struct ircd::nacl::init
|
||||||
|
|
|
@ -55,9 +55,6 @@ namespace ircd::openssl
|
||||||
using EC_KEY = ::ec_key_st;
|
using EC_KEY = ::ec_key_st;
|
||||||
using DH = ::dh_st;
|
using DH = ::dh_st;
|
||||||
|
|
||||||
// Header version; library version
|
|
||||||
std::pair<string_view, string_view> version();
|
|
||||||
|
|
||||||
// Observers
|
// Observers
|
||||||
string_view error_string(const mutable_buffer &buf, const ulong &);
|
string_view error_string(const mutable_buffer &buf, const ulong &);
|
||||||
ulong peek_error();
|
ulong peek_error();
|
||||||
|
@ -141,6 +138,9 @@ namespace ircd::openssl
|
||||||
// SNI suite
|
// SNI suite
|
||||||
string_view server_name(const SSL &); // provided by client
|
string_view server_name(const SSL &); // provided by client
|
||||||
void server_name(SSL &, const string_view &); // set by client
|
void server_name(SSL &, const string_view &); // set by client
|
||||||
|
|
||||||
|
// Header version; library version
|
||||||
|
extern const info::versions version_api, version_abi;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// OpenSSL BIO convenience utils and wraps; also secure file IO closures
|
/// OpenSSL BIO convenience utils and wraps; also secure file IO closures
|
||||||
|
|
53
ircd/db.cc
53
ircd/db.cc
|
@ -92,47 +92,30 @@ namespace ircd::db
|
||||||
static void init_directory();
|
static void init_directory();
|
||||||
}
|
}
|
||||||
|
|
||||||
decltype(ircd::db::version)
|
decltype(ircd::db::version_api)
|
||||||
ircd::db::version
|
ircd::db::version_api
|
||||||
{
|
{
|
||||||
ROCKSDB_MAJOR,
|
"RocksDB", info::versions::API, 0,
|
||||||
ROCKSDB_MINOR,
|
{
|
||||||
ROCKSDB_PATCH
|
ROCKSDB_MAJOR, ROCKSDB_MINOR, ROCKSDB_PATCH,
|
||||||
|
},
|
||||||
|
|
||||||
|
// version string generator
|
||||||
|
[](auto &version, const auto &buf)
|
||||||
|
{
|
||||||
|
::snprintf(data(buf), size(buf), "%ld.%ld.%ld",
|
||||||
|
version[0],
|
||||||
|
version[1],
|
||||||
|
version[2]);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
char ircd_db_version_str_buf[64];
|
decltype(ircd::db::version_abi)
|
||||||
decltype(ircd::db::version_str)
|
ircd::db::version_abi
|
||||||
ircd::db::version_str
|
|
||||||
(
|
|
||||||
ircd_db_version_str_buf,
|
|
||||||
::snprintf(ircd_db_version_str_buf, sizeof(ircd_db_version_str_buf),
|
|
||||||
"%u.%u.%u",
|
|
||||||
version[0],
|
|
||||||
version[1],
|
|
||||||
version[2])
|
|
||||||
);
|
|
||||||
|
|
||||||
decltype(ircd::db::abi_version)
|
|
||||||
ircd::db::abi_version
|
|
||||||
{
|
{
|
||||||
//TODO: Get lib version.
|
"RocksDB", info::versions::ABI, 0, {0}, "<unknown>" //TODO: get this
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
char ircd_db_abi_version_str_buf[64];
|
|
||||||
decltype(ircd::db::abi_version_str)
|
|
||||||
ircd::db::abi_version_str
|
|
||||||
(
|
|
||||||
ircd_db_abi_version_str_buf,
|
|
||||||
::snprintf(ircd_db_abi_version_str_buf, sizeof(ircd_db_abi_version_str_buf),
|
|
||||||
"%u.%u.%u",
|
|
||||||
abi_version[0],
|
|
||||||
abi_version[1],
|
|
||||||
abi_version[2])
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// init::init
|
// init::init
|
||||||
//
|
//
|
||||||
|
|
46
ircd/fs.cc
46
ircd/fs.cc
|
@ -37,8 +37,8 @@ decltype(ircd::fs::support_pwritev2)
|
||||||
ircd::fs::support_pwritev2
|
ircd::fs::support_pwritev2
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PWRITEV2)
|
#if defined(HAVE_PWRITEV2)
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 6
|
info::kernel_version[1] >= 6
|
||||||
#else
|
#else
|
||||||
false
|
false
|
||||||
#endif
|
#endif
|
||||||
|
@ -48,8 +48,8 @@ decltype(ircd::fs::support_sync)
|
||||||
ircd::fs::support_sync
|
ircd::fs::support_sync
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PWRITEV2) && defined(RWF_SYNC)
|
#if defined(HAVE_PWRITEV2) && defined(RWF_SYNC)
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 7
|
info::kernel_version[1] >= 7
|
||||||
#else
|
#else
|
||||||
false
|
false
|
||||||
#endif
|
#endif
|
||||||
|
@ -59,8 +59,8 @@ decltype(ircd::fs::support_dsync)
|
||||||
ircd::fs::support_dsync
|
ircd::fs::support_dsync
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PWRITEV2) && defined(RWF_DSYNC)
|
#if defined(HAVE_PWRITEV2) && defined(RWF_DSYNC)
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 7
|
info::kernel_version[1] >= 7
|
||||||
#else
|
#else
|
||||||
false
|
false
|
||||||
#endif
|
#endif
|
||||||
|
@ -70,8 +70,8 @@ decltype(ircd::fs::support_hipri)
|
||||||
ircd::fs::support_hipri
|
ircd::fs::support_hipri
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PWRITEV2) && defined(RWF_HIPRI)
|
#if defined(HAVE_PWRITEV2) && defined(RWF_HIPRI)
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 6
|
info::kernel_version[1] >= 6
|
||||||
#else
|
#else
|
||||||
false
|
false
|
||||||
#endif
|
#endif
|
||||||
|
@ -81,8 +81,8 @@ decltype(ircd::fs::support_nowait)
|
||||||
ircd::fs::support_nowait
|
ircd::fs::support_nowait
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PWRITEV2) && defined(RWF_NOWAIT)
|
#if defined(HAVE_PWRITEV2) && defined(RWF_NOWAIT)
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 14
|
info::kernel_version[1] >= 14
|
||||||
#else
|
#else
|
||||||
false
|
false
|
||||||
#endif
|
#endif
|
||||||
|
@ -92,8 +92,8 @@ decltype(ircd::fs::support_append)
|
||||||
ircd::fs::support_append
|
ircd::fs::support_append
|
||||||
{
|
{
|
||||||
#if defined(HAVE_PWRITEV2) && defined(RWF_APPEND)
|
#if defined(HAVE_PWRITEV2) && defined(RWF_APPEND)
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 16
|
info::kernel_version[1] >= 16
|
||||||
#else
|
#else
|
||||||
false
|
false
|
||||||
#endif
|
#endif
|
||||||
|
@ -103,8 +103,8 @@ decltype(ircd::fs::support_rwh_write_life)
|
||||||
ircd::fs::support_rwh_write_life
|
ircd::fs::support_rwh_write_life
|
||||||
{
|
{
|
||||||
#if defined(HAVE_FCNTL_H) && defined(F_SET_FILE_RW_HINT)
|
#if defined(HAVE_FCNTL_H) && defined(F_SET_FILE_RW_HINT)
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 13
|
info::kernel_version[1] >= 13
|
||||||
#else
|
#else
|
||||||
false
|
false
|
||||||
#endif
|
#endif
|
||||||
|
@ -1024,9 +1024,9 @@ ircd::fs::ircd_fs_append__resolve()
|
||||||
{
|
{
|
||||||
log, support_append? log::DEBUG : log::DWARNING,
|
log, support_append? log::DEBUG : log::DWARNING,
|
||||||
"This host '%s %s' %s the RWF_APPEND flag to pwritev2(2).",
|
"This host '%s %s' %s the RWF_APPEND flag to pwritev2(2).",
|
||||||
info::kname,
|
info::kernel_name,
|
||||||
info::kversion_str,
|
string_view{info::kernel_version},
|
||||||
support_append? "SUPPORTS"_sv : "DOES NOT SUPPORT"_sv
|
support_append? "SUPPORTS"_sv : "DOES NOT SUPPORT"_sv,
|
||||||
};
|
};
|
||||||
|
|
||||||
return support_append? _append__rwf : _append__no_rwf;
|
return support_append? _append__rwf : _append__no_rwf;
|
||||||
|
@ -1202,8 +1202,8 @@ ircd::fs::ircd_fs_write_pwritev__resolve()
|
||||||
{
|
{
|
||||||
log, support_pwritev2? log::DEBUG : log::DWARNING,
|
log, support_pwritev2? log::DEBUG : log::DWARNING,
|
||||||
"This host '%s %s' %s the pwritev2(2) system call.",
|
"This host '%s %s' %s the pwritev2(2) system call.",
|
||||||
info::kname,
|
info::kernel_name,
|
||||||
info::kversion_str,
|
string_view{info::kernel_version},
|
||||||
support_pwritev2? "SUPPORTS"_sv : "DOES NOT SUPPORT"_sv
|
support_pwritev2? "SUPPORTS"_sv : "DOES NOT SUPPORT"_sv
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1432,16 +1432,16 @@ decltype(ircd::fs::aio::support_fsync)
|
||||||
extern __attribute__((weak))
|
extern __attribute__((weak))
|
||||||
ircd::fs::aio::support_fsync
|
ircd::fs::aio::support_fsync
|
||||||
{
|
{
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 18
|
info::kernel_version[1] >= 18
|
||||||
};
|
};
|
||||||
|
|
||||||
decltype(ircd::fs::aio::support_fdsync)
|
decltype(ircd::fs::aio::support_fdsync)
|
||||||
extern __attribute__((weak))
|
extern __attribute__((weak))
|
||||||
ircd::fs::aio::support_fdsync
|
ircd::fs::aio::support_fdsync
|
||||||
{
|
{
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 18
|
info::kernel_version[1] >= 18
|
||||||
};
|
};
|
||||||
|
|
||||||
decltype(ircd::fs::aio::MAX_EVENTS)
|
decltype(ircd::fs::aio::MAX_EVENTS)
|
||||||
|
|
|
@ -33,8 +33,8 @@ ircd::fs::aio::support
|
||||||
decltype(ircd::fs::aio::support_fsync)
|
decltype(ircd::fs::aio::support_fsync)
|
||||||
ircd::fs::aio::support_fsync
|
ircd::fs::aio::support_fsync
|
||||||
{
|
{
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 18
|
info::kernel_version[1] >= 18
|
||||||
};
|
};
|
||||||
|
|
||||||
/// True if IOCB_CMD_FDSYNC is supported by AIO. If this is false then
|
/// True if IOCB_CMD_FDSYNC is supported by AIO. If this is false then
|
||||||
|
@ -42,8 +42,8 @@ ircd::fs::aio::support_fsync
|
||||||
decltype(ircd::fs::aio::support_fdsync)
|
decltype(ircd::fs::aio::support_fdsync)
|
||||||
ircd::fs::aio::support_fdsync
|
ircd::fs::aio::support_fdsync
|
||||||
{
|
{
|
||||||
info::kversion[0] >= 4 &&
|
info::kernel_version[0] >= 4 &&
|
||||||
info::kversion[1] >= 18
|
info::kernel_version[1] >= 18
|
||||||
};
|
};
|
||||||
|
|
||||||
decltype(ircd::fs::aio::MAX_EVENTS)
|
decltype(ircd::fs::aio::MAX_EVENTS)
|
||||||
|
|
126
ircd/info.cc
126
ircd/info.cc
|
@ -45,19 +45,28 @@ ircd::info::dump()
|
||||||
RB_DEBUG_LEVEL? "(DEBUG MODE)" : ""
|
RB_DEBUG_LEVEL? "(DEBUG MODE)" : ""
|
||||||
};
|
};
|
||||||
|
|
||||||
// This message flashes information about our dependencies which are being
|
// This message flashes information about our API dependencies from compile time.
|
||||||
// assumed for this execution.
|
|
||||||
log::info
|
log::info
|
||||||
{
|
{
|
||||||
"%s. glibc %s. boost %s. RocksDB %s. SpiderMonkey %s. sodium %s. %s. libmagic %d.",
|
"API: glibc %s. boost %s. RocksDB %s. sodium %s. %s. magic %ld.",
|
||||||
PACKAGE_STRING,
|
string_view{glibc_version_api},
|
||||||
glibc_version_str,
|
string_view{boost_version_api},
|
||||||
boost_version_str,
|
string_view{db::version_api},
|
||||||
db::version_str,
|
string_view{nacl::version_api},
|
||||||
js::version(js::ver::IMPLEMENTATION),
|
string_view{openssl::version_api},
|
||||||
nacl::version(),
|
long(magic::version_api),
|
||||||
openssl::version().second,
|
};
|
||||||
magic::version()
|
|
||||||
|
// This message flashes information about our ABI dependencies on this system.
|
||||||
|
log::debug
|
||||||
|
{
|
||||||
|
"ABI: glibc %s. boost %s. RocksDB %s. sodium %s. %s. magic %ld.",
|
||||||
|
string_view{glibc_version_abi},
|
||||||
|
string_view{boost_version_abi},
|
||||||
|
string_view{db::version_abi},
|
||||||
|
string_view{nacl::version_abi},
|
||||||
|
string_view{openssl::version_abi},
|
||||||
|
long(magic::version_abi),
|
||||||
};
|
};
|
||||||
|
|
||||||
// This message flashes posix information about the system and platform IRCd
|
// This message flashes posix information about the system and platform IRCd
|
||||||
|
@ -226,26 +235,6 @@ ircd_name
|
||||||
// Third party dependency information
|
// Third party dependency information
|
||||||
//
|
//
|
||||||
|
|
||||||
decltype(ircd::info::glibc_version)
|
|
||||||
ircd::info::glibc_version
|
|
||||||
{
|
|
||||||
__GNU_LIBRARY__,
|
|
||||||
__GLIBC__,
|
|
||||||
__GLIBC_MINOR__,
|
|
||||||
};
|
|
||||||
|
|
||||||
char ircd_info_glibc_version_str_buf[32];
|
|
||||||
decltype(ircd::info::glibc_version_str)
|
|
||||||
ircd::info::glibc_version_str
|
|
||||||
(
|
|
||||||
ircd_info_glibc_version_str_buf,
|
|
||||||
::snprintf(ircd_info_glibc_version_str_buf, sizeof(ircd_info_glibc_version_str_buf),
|
|
||||||
"%d.%d.%d",
|
|
||||||
glibc_version[0],
|
|
||||||
glibc_version[1],
|
|
||||||
glibc_version[2])
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Host information
|
// Host information
|
||||||
//
|
//
|
||||||
|
@ -260,44 +249,77 @@ ircd::info::utsname{[]
|
||||||
}()};
|
}()};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
decltype(ircd::info::kname)
|
// kernel
|
||||||
ircd::info::kname
|
|
||||||
|
decltype(ircd::info::kernel_name)
|
||||||
|
ircd::info::kernel_name
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SYS_UTSNAME_H
|
#ifdef HAVE_SYS_UTSNAME_H
|
||||||
utsname.sysname
|
utsname.sysname
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
decltype(ircd::info::kversion_str)
|
decltype(ircd::info::kernel_release)
|
||||||
ircd::info::kversion_str
|
ircd::info::kernel_release
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SYS_UTSNAME_H
|
#ifdef HAVE_SYS_UTSNAME_H
|
||||||
utsname.release
|
utsname.release
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
decltype(ircd::info::kversion)
|
decltype(ircd::info::kernel_version)
|
||||||
ircd::info::kversion
|
ircd::info::kernel_version
|
||||||
{
|
{
|
||||||
[] // major
|
"kernel", versions::ABI, 0,
|
||||||
{
|
{
|
||||||
const auto str(split(kversion_str, '.').first);
|
[] // major
|
||||||
return try_lex_cast<int>(str)?
|
{
|
||||||
lex_cast<int>(str):
|
const auto str(split(kernel_release, '.').first);
|
||||||
0;
|
return try_lex_cast<int>(str)?
|
||||||
}(),
|
lex_cast<int>(str):
|
||||||
|
0;
|
||||||
|
}(),
|
||||||
|
|
||||||
[] // minor
|
[] // minor
|
||||||
|
{
|
||||||
|
auto str(split(kernel_release, '.').second);
|
||||||
|
str = split(str, '.').first;
|
||||||
|
return try_lex_cast<int>(str)?
|
||||||
|
lex_cast<int>(str):
|
||||||
|
0;
|
||||||
|
}(),
|
||||||
|
|
||||||
|
0 // patch
|
||||||
|
},
|
||||||
|
|
||||||
|
utsname.release
|
||||||
|
};
|
||||||
|
|
||||||
|
// libc
|
||||||
|
|
||||||
|
decltype(ircd::info::glibc_version_api)
|
||||||
|
ircd::info::glibc_version_api
|
||||||
|
{
|
||||||
|
"glibc", versions::API, 0,
|
||||||
{
|
{
|
||||||
auto str(split(kversion_str, '.').second);
|
__GNU_LIBRARY__,
|
||||||
str = split(str, '.').first;
|
__GLIBC__,
|
||||||
return try_lex_cast<int>(str)?
|
__GLIBC_MINOR__,
|
||||||
lex_cast<int>(str):
|
},
|
||||||
0;
|
|
||||||
}(),
|
|
||||||
|
|
||||||
// patch
|
[](auto &that, const auto &buf)
|
||||||
0
|
{
|
||||||
|
::snprintf(data(buf), size(buf), "%ld.%ld.%ld",
|
||||||
|
that.semantic[0],
|
||||||
|
that.semantic[1],
|
||||||
|
that.semantic[2]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::info::glibc_version_abi)
|
||||||
|
ircd::info::glibc_version_abi
|
||||||
|
{
|
||||||
|
"glibc", versions::ABI, 0, {0}, "<unknown>" //TODO: get this.
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
51
ircd/ios.cc
51
ircd/ios.cc
|
@ -10,27 +10,6 @@
|
||||||
|
|
||||||
#include <ircd/asio.h>
|
#include <ircd/asio.h>
|
||||||
|
|
||||||
/// Boost version indicator for compiled header files.
|
|
||||||
decltype(ircd::boost_version)
|
|
||||||
ircd::boost_version
|
|
||||||
{
|
|
||||||
BOOST_VERSION / 100000,
|
|
||||||
BOOST_VERSION / 100 % 1000,
|
|
||||||
BOOST_VERSION % 100,
|
|
||||||
};
|
|
||||||
|
|
||||||
char ircd_boost_version_str_buf[32];
|
|
||||||
decltype(ircd::boost_version_str)
|
|
||||||
ircd::boost_version_str
|
|
||||||
(
|
|
||||||
ircd_boost_version_str_buf,
|
|
||||||
::snprintf(ircd_boost_version_str_buf, sizeof(ircd_boost_version_str_buf),
|
|
||||||
"%u.%u.%u",
|
|
||||||
boost_version[0],
|
|
||||||
boost_version[1],
|
|
||||||
boost_version[2])
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Record of the ID of the thread static initialization took place on.
|
/// Record of the ID of the thread static initialization took place on.
|
||||||
decltype(ircd::ios::static_thread_id)
|
decltype(ircd::ios::static_thread_id)
|
||||||
ircd::ios::static_thread_id
|
ircd::ios::static_thread_id
|
||||||
|
@ -45,6 +24,36 @@ ircd::ios::main_thread_id;
|
||||||
decltype(ircd::ios::user)
|
decltype(ircd::ios::user)
|
||||||
ircd::ios::user;
|
ircd::ios::user;
|
||||||
|
|
||||||
|
decltype(ircd::boost_version_api)
|
||||||
|
ircd::boost_version_api
|
||||||
|
{
|
||||||
|
"boost", info::versions::API, BOOST_VERSION,
|
||||||
|
{
|
||||||
|
BOOST_VERSION / 100000,
|
||||||
|
BOOST_VERSION / 100 % 1000,
|
||||||
|
BOOST_VERSION % 100,
|
||||||
|
},
|
||||||
|
|
||||||
|
// Version string generator since boost doesn't provide any strings.
|
||||||
|
[](auto &version, const auto &buf)
|
||||||
|
{
|
||||||
|
::snprintf(data(buf), size(buf), "%ld.%ld.%ld",
|
||||||
|
version[0],
|
||||||
|
version[1],
|
||||||
|
version[2]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::boost_version_abi)
|
||||||
|
ircd::boost_version_abi
|
||||||
|
{
|
||||||
|
"boost", info::versions::ABI, 0, {0}, "<unknown>" //TODO: get this
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// init
|
||||||
|
//
|
||||||
|
|
||||||
void
|
void
|
||||||
ircd::ios::init(asio::io_context &user)
|
ircd::ios::init(asio::io_context &user)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,6 +26,18 @@ namespace ircd::magic
|
||||||
static void version_check();
|
static void version_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decltype(ircd::magic::version_api)
|
||||||
|
ircd::magic::version_api
|
||||||
|
{
|
||||||
|
"magic", info::versions::API, MAGIC_VERSION
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::magic::version_abi)
|
||||||
|
ircd::magic::version_abi
|
||||||
|
{
|
||||||
|
"magic", info::versions::ABI, ::magic_version()
|
||||||
|
};
|
||||||
|
|
||||||
ircd::magic::init::init()
|
ircd::magic::init::init()
|
||||||
{
|
{
|
||||||
version_check();
|
version_check();
|
||||||
|
@ -158,22 +170,16 @@ ircd::magic::throw_on_error(const magic_t &cookie)
|
||||||
assert(magic_errno(cookie) == 0);
|
assert(magic_errno(cookie) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
ircd::magic::version()
|
|
||||||
{
|
|
||||||
return ::magic_version();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ircd::magic::version_check()
|
ircd::magic::version_check()
|
||||||
{
|
{
|
||||||
if(likely(MAGIC_VERSION == version()))
|
if(likely(MAGIC_VERSION == ::magic_version()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
log::warning
|
log::warning
|
||||||
{
|
{
|
||||||
"Linked libmagic version %d is not the compiled magic.h version %d.\n",
|
"Linked libmagic version %d is not the compiled magic.h version %d.\n",
|
||||||
version(),
|
::magic_version(),
|
||||||
MAGIC_VERSION
|
MAGIC_VERSION
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,18 @@ namespace ircd::openssl
|
||||||
// openssl.h
|
// openssl.h
|
||||||
//
|
//
|
||||||
|
|
||||||
|
decltype(ircd::openssl::version_api)
|
||||||
|
ircd::openssl::version_api
|
||||||
|
{
|
||||||
|
"OpenSSL", info::versions::API, OPENSSL_VERSION_NUMBER, {0}, OPENSSL_VERSION_TEXT
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::openssl::version_abi)
|
||||||
|
ircd::openssl::version_abi
|
||||||
|
{
|
||||||
|
"OpenSSL", info::versions::ABI, long(::SSLeay()), {0}, ::SSLeay_version(SSLEAY_VERSION)
|
||||||
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// SNI
|
// SNI
|
||||||
//
|
//
|
||||||
|
@ -1245,15 +1257,6 @@ ircd::openssl::error_string(const mutable_buffer &buf,
|
||||||
return { data(buf), strnlen(data(buf), size(buf)) };
|
return { data(buf), strnlen(data(buf), size(buf)) };
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<ircd::string_view, ircd::string_view>
|
|
||||||
ircd::openssl::version()
|
|
||||||
{
|
|
||||||
return
|
|
||||||
{
|
|
||||||
OPENSSL_VERSION_TEXT, SSLeay_version(SSLEAY_VERSION)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// bio
|
// bio
|
||||||
//
|
//
|
||||||
|
@ -1601,13 +1604,12 @@ const
|
||||||
|
|
||||||
ircd::openssl::init::init()
|
ircd::openssl::init::init()
|
||||||
{
|
{
|
||||||
const auto v(version());
|
if(long(version_api) != long(version_abi))
|
||||||
if(v.first != v.second)
|
|
||||||
log::warning
|
log::warning
|
||||||
{
|
{
|
||||||
"Linked OpenSSL version '%s' is not the compiled OpenSSL version '%s'",
|
"Linked OpenSSL version '%s' is not the compiled OpenSSL version '%s'",
|
||||||
v.first,
|
string_view{version_api},
|
||||||
v.second
|
string_view{version_abi},
|
||||||
};
|
};
|
||||||
|
|
||||||
OPENSSL_init();
|
OPENSSL_init();
|
||||||
|
|
|
@ -29,11 +29,33 @@ struct throw_on_error
|
||||||
// ircd/nacl.h
|
// ircd/nacl.h
|
||||||
//
|
//
|
||||||
|
|
||||||
ircd::string_view
|
decltype(ircd::nacl::version_api)
|
||||||
ircd::nacl::version()
|
ircd::nacl::version_api
|
||||||
{
|
{
|
||||||
return ::sodium_version_string();
|
"sodium", info::versions::API, 0,
|
||||||
}
|
{
|
||||||
|
SODIUM_LIBRARY_VERSION_MAJOR,
|
||||||
|
SODIUM_LIBRARY_VERSION_MINOR,
|
||||||
|
0
|
||||||
|
},
|
||||||
|
SODIUM_VERSION_STRING,
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::nacl::version_abi)
|
||||||
|
ircd::nacl::version_abi
|
||||||
|
{
|
||||||
|
"sodium", info::versions::ABI, 0,
|
||||||
|
{
|
||||||
|
::sodium_library_version_major(),
|
||||||
|
::sodium_library_version_minor(),
|
||||||
|
0
|
||||||
|
},
|
||||||
|
::sodium_version_string(),
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// init
|
||||||
|
//
|
||||||
|
|
||||||
ircd::nacl::init::init()
|
ircd::nacl::init::init()
|
||||||
{
|
{
|
||||||
|
|
|
@ -643,16 +643,6 @@ console_cmd__version(opt &out, const string_view &line)
|
||||||
out << "info::server_agent " << info::server_agent << std::endl;
|
out << "info::server_agent " << info::server_agent << std::endl;
|
||||||
out << std::endl;
|
out << std::endl;
|
||||||
|
|
||||||
out << "info::kname " << info::kname << std::endl;
|
|
||||||
out << "info::kversion_str " << info::kversion_str << std::endl;
|
|
||||||
out << "info::glibc_version_str " << info::glibc_version_str << std::endl;
|
|
||||||
out << "ircd::boost_version_str " << ircd::boost_version_str << std::endl;
|
|
||||||
out << "db::version_str " << db::version_str << std::endl;
|
|
||||||
out << "nacl::version " << nacl::version() << std::endl;
|
|
||||||
out << "openssl::version " << openssl::version().second << std::endl;
|
|
||||||
out << "magic::version " << magic::version() << std::endl;
|
|
||||||
out << std::endl;
|
|
||||||
|
|
||||||
out << "VERSION " << VERSION << std::endl;
|
out << "VERSION " << VERSION << std::endl;
|
||||||
out << std::endl;
|
out << std::endl;
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,24 @@ ircd::magick::yield_interval
|
||||||
{ "default", 768L },
|
{ "default", 768L },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
decltype(ircd::magick::version_api)
|
||||||
|
ircd::magick::version_api
|
||||||
|
{
|
||||||
|
"magick", info::versions::API, MagickLibVersion, {0}, MagickLibVersionText
|
||||||
|
};
|
||||||
|
|
||||||
|
decltype(ircd::magick::version_abi)
|
||||||
|
ircd::magick::version_abi
|
||||||
|
{
|
||||||
|
"magick", info::versions::ABI, 0, {0}, []
|
||||||
|
(auto &version, const auto &buf)
|
||||||
|
{
|
||||||
|
ulong monotonic(0);
|
||||||
|
strlcpy(buf, ::GetMagickVersion(&monotonic));
|
||||||
|
version.monotonic = monotonic;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// init
|
// init
|
||||||
//
|
//
|
||||||
|
@ -87,26 +105,21 @@ ircd::magick::yield_interval
|
||||||
void
|
void
|
||||||
ircd::magick::init()
|
ircd::magick::init()
|
||||||
{
|
{
|
||||||
const auto version
|
log::info
|
||||||
{
|
{
|
||||||
magick::version()
|
log, "Initializing Magick Library version API:%lu [%s] ABI:%lu [%s]",
|
||||||
|
long(version_api),
|
||||||
|
string_view{version_api},
|
||||||
|
long(version_abi),
|
||||||
|
string_view{version_abi},
|
||||||
};
|
};
|
||||||
|
|
||||||
log::debug
|
if(long(version_api) != long(version_abi))
|
||||||
{
|
|
||||||
log, "Initializing Magick Library version inc:%lu [%s] lib:%lu [%s]",
|
|
||||||
ulong(MagickLibVersion),
|
|
||||||
MagickLibVersionText,
|
|
||||||
std::get<0>(version),
|
|
||||||
std::get<1>(version),
|
|
||||||
};
|
|
||||||
|
|
||||||
if(std::get<0>(version) != ulong(MagickLibVersion))
|
|
||||||
log::warning
|
log::warning
|
||||||
{
|
{
|
||||||
log, "Magick Library version mismatch headers:%lu library:%lu",
|
log, "Magick Library version mismatch headers:%lu library:%lu",
|
||||||
ulong(MagickLibVersion),
|
long(version_api),
|
||||||
std::get<0>(version),
|
long(version_abi),
|
||||||
};
|
};
|
||||||
|
|
||||||
::MagickAllocFunctions(handle_free, handle_malloc, handle_realloc);
|
::MagickAllocFunctions(handle_free, handle_malloc, handle_realloc);
|
||||||
|
@ -144,18 +157,6 @@ ircd::magick::fini()
|
||||||
::DestroyMagick();
|
::DestroyMagick();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::tuple<ulong, ircd::string_view>
|
|
||||||
ircd::magick::version()
|
|
||||||
{
|
|
||||||
ulong number(0);
|
|
||||||
const char *const string
|
|
||||||
{
|
|
||||||
::GetMagickVersion(&number)
|
|
||||||
};
|
|
||||||
|
|
||||||
return { number, string };
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// thumbcrop
|
// thumbcrop
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue