set(GCOV_PREFIX_STRIP 4)
+# the src/.git_version file may be written out by make-dist; otherwise
+# we pull the git version from .git
option(ENABLE_GIT_VERSION "build Ceph with git version string" ON)
if(${ENABLE_GIT_VERSION})
get_git_head_revision(GIT_REFSPEC CEPH_GIT_VER)
set(CEPH_GIT_NICE_VER "Development")
endif(${ENABLE_GIT_VERSION})
+# the src/ceph_release file is 3 lines,
+# <release number, e.g. '12' for luminous>
+# <release name, e.g. 'luminous'>
+# <release type: 'dev' for x.0.z, 'rc' or x.1.z, or 'stable' or x.2.z>
+# note that the release name is semi-redundant and must match CEPH_RELEASE_*
+# definitions in include/rados.h and common/ceph_strings.c.
+file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/ceph_release CEPH_RELEASE_FILE)
+list(GET CEPH_RELEASE_FILE 0 CEPH_RELEASE)
+list(GET CEPH_RELEASE_FILE 1 CEPH_RELEASE_NAME)
+list(GET CEPH_RELEASE_FILE 2 CEPH_RELEASE_TYPE)
+
option(WITH_OCF "build OCF-compliant cluster resource agent" OFF)
if(WITH_OCF)
add_subdirectory(ocf)
CEPH_GIT_VER="@CEPH_GIT_VER@"
CEPH_GIT_NICE_VER="@CEPH_GIT_NICE_VER@"
+CEPH_RELEASE="@CEPH_RELEASE@"
+CEPH_RELEASE_NAME="@CEPH_RELEASE_NAME@"
+CEPH_RELEASE_TYPE="@CEPH_RELEASE_TYPE@"
# Flags from src/mon/Monitor.h
FLAG_NOFORWARD = (1 << 0)
parser, parsed_args, childargs = parse_cmdargs()
if parsed_args.version:
- print('ceph version {0} ({1})'.format(CEPH_GIT_NICE_VER, CEPH_GIT_VER)) # noqa
+ print('ceph version {0} ({1}) {2} ({3})'.format(
+ CEPH_GIT_NICE_VER,
+ CEPH_GIT_VER,
+ CEPH_RELEASE_NAME,
+ CEPH_RELEASE_TYPE)) # noqa
return 0
global verbose
--- /dev/null
+12
+luminous
+dev
#define CEPH_GIT_VER @CEPH_GIT_VER@
#define CEPH_GIT_NICE_VER "@CEPH_GIT_NICE_VER@"
+#define CEPH_RELEASE @CEPH_RELEASE@
+#define CEPH_RELEASE_NAME "@CEPH_RELEASE_NAME@"
+#define CEPH_RELEASE_TYPE "@CEPH_RELEASE_TYPE@"
#endif
} else {
JSONFormatter jf;
jf.open_object_section("version");
- if (command == "version")
+ if (command == "version") {
jf.dump_string("version", ceph_version_to_str());
- else if (command == "git_version")
+ jf.dump_string("release", ceph_release_name(ceph_release()));
+ jf.dump_string("release_type", ceph_release_type());
+ } else if (command == "git_version") {
jf.dump_string("git_version", git_version_to_str());
+ }
ostringstream ss;
jf.close_section();
jf.flush(ss);
*
*/
+#include <string.h>
+
#include "ceph_ver.h"
#include "common/version.h"
+#include "include/rados.h"
#include <sstream>
std::string const pretty_version_to_str(void)
{
std::ostringstream oss;
- oss << "ceph version " << CEPH_GIT_NICE_VER << " ("
- << STRINGIFY(CEPH_GIT_VER) << ")";
+ oss << "ceph version " << " " << CEPH_GIT_NICE_VER
+ << " (" << STRINGIFY(CEPH_GIT_VER) << ") "
+ << ceph_release_name(CEPH_RELEASE)
+ << " (" << CEPH_RELEASE_TYPE << ")";
return oss.str();
}
+
+unsigned ceph_release(void)
+{
+ return CEPH_RELEASE;
+}
+
+const char *ceph_release_type(void)
+{
+ return CEPH_RELEASE_TYPE;
+}
// Return a formatted string describing the ceph and git versions
std::string const pretty_version_to_str(void);
+// Release number (e.g., 12 for luminous); see CEPH_RELEASE_* in include/rados.h
+// and use const char *ceph_release_name(int) to translate to a string.
+unsigned ceph_release(void);
+
+// Release type ("dev", "rc", or "stable")
+const char *ceph_release_type(void);
+
#endif