const std::string &versionString() { static std::string v; if( !v.size() ) { v = boost::str( boost::format( "%d.%d.%d" ) % majorVersion() % minorVersion() % patchVersion() ); } return v; }
void VersionInfoInterface::appendBuildInfo(BSONObjBuilder* result) const { *result << "version" << version() << "gitVersion" << gitVersion() #if defined(_WIN32) << "targetMinOS" << targetMinOS() #endif << "modules" << modules() << "allocator" << allocator() << "javascriptEngine" << jsEngine() << "sysInfo" << "deprecated"; BSONArrayBuilder versionArray(result->subarrayStart("versionArray")); versionArray << majorVersion() << minorVersion() << patchVersion() << extraVersion(); versionArray.done(); BSONObjBuilder opensslInfo(result->subobjStart("openssl")); #ifdef MONGO_CONFIG_SSL #if MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_OPENSSL opensslInfo << "running" << openSSLVersion() << "compiled" << OPENSSL_VERSION_TEXT; #elif MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_WINDOWS opensslInfo << "running" << "Windows SChannel"; #elif MONGO_CONFIG_SSL_PROVIDER == MONGO_CONFIG_SSL_PROVIDER_APPLE opensslInfo << "running" << "Apple Secure Transport"; #else #error "Unknown SSL Provider" #endif // MONGO_CONFIG_SSL_PROVIDER #else opensslInfo << "running" << "disabled" << "compiled" << "disabled"; #endif opensslInfo.done(); BSONObjBuilder buildvarsInfo(result->subobjStart("buildEnvironment")); for (auto&& envDataEntry : buildInfo()) { if (std::get<2>(envDataEntry)) { buildvarsInfo << std::get<0>(envDataEntry) << std::get<1>(envDataEntry); } } buildvarsInfo.done(); *result << "bits" << (int)sizeof(void*) * 8; result->appendBool("debug", kDebugBuild); result->appendNumber("maxBsonObjectSize", BSONObjMaxUserSize); }