ceph/src/common/version.cc
Kefu Chai 1f5406a752 src/*: do not pass cct to ceph_version_to_str()
in e5b1ae5554, a new option named
"debug_version_for_testing" is introduced to override the version so
we can test version check.

in crimson, we have two families of shared functions.

- one of them is used by alien store. they are compiled with
  -DWITH_SEASTAR and -DWITH_ALIEN, to enable the shim code between
  seastar and POSIX thread.
- another is used by crimson in general. where no lock is allowed.

currently, we use the "crimson" and "ceph" namespace to differentiate
these two families of functions, so they can colocate in the same
executable without violating the ODR. see src/include/common_fwd.h for
more details.

the functions defined in src/common/version.cc are also shared by
alien store and crimson code. and because we have different
implementations of `CephContext` in crimson and in classic OSD (i.e.
alienstore), we have to have different implementations of this function
as well, if we follow the same approach. but since these functions are
very simple and are non-blocking, there is not much value in
differentiating them, it is better to inject the test settings using
environment variable instead of using ceph option subsystem.

in this change, "ceph_debug_version_for_testing" environment variable is
checked instead, so that crimson and alienstore can share the same
compilation unit of version.cc. and "debug_version_for_testing" option
is removed.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2020-12-10 18:26:39 +08:00

60 lines
1.3 KiB
C++

// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab
/*
* Ceph - scalable distributed file system
*
* Copyright (C) 2011 New Dream Network
*
* This is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software
* Foundation. See file COPYING.
*
*/
#include "common/version.h"
#include <stdlib.h>
#include <sstream>
#include "ceph_ver.h"
#include "common/ceph_strings.h"
#define _STR(x) #x
#define STRINGIFY(x) _STR(x)
const char *ceph_version_to_str()
{
char* debug_version_for_testing = getenv("ceph_debug_version_for_testing");
if (debug_version_for_testing) {
return debug_version_for_testing;
} else {
return CEPH_GIT_NICE_VER;
}
}
const char *ceph_release_to_str(void)
{
return ceph_release_name(CEPH_RELEASE);
}
const char *git_version_to_str(void)
{
return STRINGIFY(CEPH_GIT_VER);
}
std::string const pretty_version_to_str(void)
{
std::ostringstream oss;
oss << "ceph version " << CEPH_GIT_NICE_VER
<< " (" << STRINGIFY(CEPH_GIT_VER) << ") "
<< ceph_release_name(CEPH_RELEASE)
<< " (" << CEPH_RELEASE_TYPE << ")";
return oss.str();
}
const char *ceph_release_type(void)
{
return CEPH_RELEASE_TYPE;
}