Skip to content

Commit 64df28b

Browse files
committed
CDRIVER-1013 declare mongoc version in one place
Also fix logic for setting maintainer_flags_default.
1 parent 6ca206f commit 64df28b

14 files changed

+158
-52
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ bulk3
1010
bulk4
1111
ChangeLog
1212
cluster1
13-
*.cmake
1413
CMakeCache.txt
1514
CMakeFiles
1615
compile

CMakeLists.txt

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,21 @@ include(FindSASL2)
1717

1818
set (SOURCE_DIR "${PROJECT_SOURCE_DIR}/")
1919

20-
set (MONGOC_MAJOR_VERSION 1)
21-
set (MONGOC_MINOR_VERSION 2)
22-
set (MONGOC_MICRO_VERSION 2)
23-
set (MONGOC_PRERELEASE_VERSION dev)
20+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/build/cmake)
21+
22+
# Set MONGOC_MAJOR_VERSION, MONGOC_MINOR_VERSION, etc.
23+
include(LoadVersion)
24+
LoadVersion(${PROJECT_SOURCE_DIR}/VERSION_CURRENT MONGOC)
25+
LoadVersion(${PROJECT_SOURCE_DIR}/VERSION_RELEASED MONGOC_RELEASED)
26+
27+
message("Current version (from VERSION_CURRENT file): ${MONGOC_VERSION}")
28+
if (NOT ${MONGOC_VERSION} STREQUAL ${MONGOC_RELEASED_VERSION})
29+
message("Previous release (from VERSION_RELEASED file): ${MONGOC_RELEASED_VERSION}")
30+
endif()
31+
32+
set (SOURCE_DIR "${PROJECT_SOURCE_DIR}/")
33+
2434
set (MONGOC_API_VERSION 1.0)
25-
set (MONGOC_VERSION 1.2.2-dev)
2635

2736
set (CPACK_RESOURCE_FILE_LICENSE "${SOURCE_DIR}/COPYING")
2837
set (CPACK_PACKAGE_VERSION_MAJOR ${MONGOC_MAJOR_VERSION})
@@ -43,6 +52,8 @@ else()
4352
endif ()
4453
set (MONGOC_HAVE_SASL_CLIENT_DONE 0)
4554

55+
set (MONGOC_HAVE_WEAK_SYMBOLS 0)
56+
4657
configure_file (
4758
"${SOURCE_DIR}/src/mongoc/mongoc-config.h.in"
4859
"${PROJECT_BINARY_DIR}/src/mongoc/mongoc-config.h"
@@ -82,8 +93,6 @@ set (SOURCES
8293
${SOURCE_DIR}/src/mongoc/mongoc-b64.c
8394
${SOURCE_DIR}/src/mongoc/mongoc-buffer.c
8495
${SOURCE_DIR}/src/mongoc/mongoc-bulk-operation.c
85-
${SOURCE_DIR}/src/mongoc/mongoc-buffer.c
86-
${SOURCE_DIR}/src/mongoc/mongoc-b64.c
8796
${SOURCE_DIR}/src/mongoc/mongoc-client.c
8897
${SOURCE_DIR}/src/mongoc/mongoc-client-pool.c
8998
${SOURCE_DIR}/src/mongoc/mongoc-cluster.c
@@ -95,6 +104,7 @@ set (SOURCES
95104
${SOURCE_DIR}/src/mongoc/mongoc-cursor-cursorid.c
96105
${SOURCE_DIR}/src/mongoc/mongoc-cursor-transform.c
97106
${SOURCE_DIR}/src/mongoc/mongoc-database.c
107+
${SOURCE_DIR}/src/mongoc/mongoc-find-and-modify.c
98108
${SOURCE_DIR}/src/mongoc/mongoc-init.c
99109
${SOURCE_DIR}/src/mongoc/mongoc-gridfs.c
100110
${SOURCE_DIR}/src/mongoc/mongoc-gridfs-file.c
@@ -108,11 +118,14 @@ set (SOURCES
108118
${SOURCE_DIR}/src/mongoc/mongoc-log.c
109119
${SOURCE_DIR}/src/mongoc/mongoc-matcher.c
110120
${SOURCE_DIR}/src/mongoc/mongoc-matcher-op.c
121+
${SOURCE_DIR}/src/mongoc/mongoc-memcmp.c
111122
${SOURCE_DIR}/src/mongoc/mongoc-opcode.c
112123
${SOURCE_DIR}/src/mongoc/mongoc-queue.c
124+
${SOURCE_DIR}/src/mongoc/mongoc-read-concern.c
113125
${SOURCE_DIR}/src/mongoc/mongoc-read-prefs.c
114126
${SOURCE_DIR}/src/mongoc/mongoc-rpc.c
115127
${SOURCE_DIR}/src/mongoc/mongoc-server-description.c
128+
${SOURCE_DIR}/src/mongoc/mongoc-server-stream.c
116129
${SOURCE_DIR}/src/mongoc/mongoc-set.c
117130
${SOURCE_DIR}/src/mongoc/mongoc-socket.c
118131
${SOURCE_DIR}/src/mongoc/mongoc-stream-buffered.c
@@ -143,6 +156,7 @@ set (HEADERS
143156
${SOURCE_DIR}/src/mongoc/mongoc-database.h
144157
${SOURCE_DIR}/src/mongoc/mongoc-error.h
145158
${SOURCE_DIR}/src/mongoc/mongoc-flags.h
159+
${SOURCE_DIR}/src/mongoc/mongoc-find-and-modify.h
146160
${SOURCE_DIR}/src/mongoc/mongoc-gridfs.h
147161
${SOURCE_DIR}/src/mongoc/mongoc-gridfs-file.h
148162
${SOURCE_DIR}/src/mongoc/mongoc-gridfs-file-page.h
@@ -155,6 +169,7 @@ set (HEADERS
155169
${SOURCE_DIR}/src/mongoc/mongoc-matcher.h
156170
${SOURCE_DIR}/src/mongoc/mongoc-opcode.h
157171
${SOURCE_DIR}/src/mongoc/mongoc-opcode-private.h
172+
${SOURCE_DIR}/src/mongoc/mongoc-read-concern.h
158173
${SOURCE_DIR}/src/mongoc/mongoc-read-prefs.h
159174
${SOURCE_DIR}/src/mongoc/mongoc-server-description.h
160175
${SOURCE_DIR}/src/mongoc/mongoc-socket.h
@@ -266,9 +281,11 @@ set(test-libmongoc-sources
266281
${SOURCE_DIR}/tests/test-mongoc-client-pool.c
267282
${SOURCE_DIR}/tests/test-mongoc-cluster.c
268283
${SOURCE_DIR}/tests/test-mongoc-collection.c
284+
${SOURCE_DIR}/tests/test-mongoc-collection-find.c
269285
${SOURCE_DIR}/tests/test-mongoc-cursor.c
270286
${SOURCE_DIR}/tests/test-mongoc-database.c
271287
${SOURCE_DIR}/tests/test-mongoc-exhaust.c
288+
${SOURCE_DIR}/tests/test-mongoc-find-and-modify.c
272289
${SOURCE_DIR}/tests/test-mongoc-gridfs.c
273290
${SOURCE_DIR}/tests/test-mongoc-gridfs-file-page.c
274291
${SOURCE_DIR}/tests/test-mongoc-list.c

Makefile.am

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ EXTRA_DIST += $(mongocdoc_DATA)
4040

4141
EXTRA_DIST += \
4242
CMakeLists.txt \
43-
CONTRIBUTING.md
43+
CONTRIBUTING.md \
44+
VERSION_CURRENT \
45+
VERSION_RELEASED
4446

4547
dist-hook:
4648
@if test -d "$(srcdir)/.git"; then \

VERSION_CURRENT

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.2.2-dev

VERSION_RELEASED

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.2.1

build/autotools/PrintBuildConfiguration.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ EOF
2323
fi
2424

2525
echo "
26-
libmongoc was configured with the following options:
26+
libmongoc $MONGOC_VERSION was configured with the following options:
2727

2828
Build configuration:
2929
Enable debugging (slow) : ${enable_debug}

build/autotools/ReadCommandLineArguments.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ AC_ARG_ENABLE([rdtscp],
6262
[enable_rdtscp=no])
6363

6464
# use strict compiler flags only on development releases
65-
m4_define([maintainer_flags_default], [m4_if(m4_eval(mongoc_minor_version % 2), [1], [yes], [no])])
65+
m4_define([maintainer_flags_default], [m4_ifset([MONGOC_PRERELEASE_VERSION], [yes], [no])])
6666
AC_ARG_ENABLE([maintainer-flags],
6767
[AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes@:>@],
6868
[Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],

build/autotools/Versions.m4

Lines changed: 61 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,68 @@
1-
m4_define([mongoc_major_version], [1])
2-
m4_define([mongoc_minor_version], [2])
3-
m4_define([mongoc_micro_version], [2])
4-
m4_define([mongoc_prerelease_version], [dev])
5-
6-
m4_define(
7-
[mongoc_version],
8-
m4_ifset(
9-
[mongoc_prerelease_version],
10-
[mongoc_major_version.mongoc_minor_version.mongoc_micro_version-mongoc_prerelease_version],
11-
[mongoc_major_version.mongoc_minor_version.mongoc_micro_version]))
1+
AC_DEFUN([mongoc_parse_version], [
2+
m4_define([ver_split], m4_split(m4_translit($2, [-], [.]), [\.]))
3+
m4_define([$1_major_version], m4_argn(1, ver_split))
4+
m4_define([$1_minor_version], m4_argn(2, ver_split))
5+
m4_define([$1_micro_version], m4_argn(3, ver_split))
6+
m4_define([$1_prerelease_version], m4_argn(4, ver_split))
7+
8+
# Set mongoc_version / mongoc_released_version to "x.y.z" from components.
9+
m4_define(
10+
[$1_version],
11+
m4_ifset(
12+
[$1_prerelease_version],
13+
[$1_major_version.$1_minor_version.$1_micro_version-$1_prerelease_version],
14+
[$1_major_version.$1_minor_version.$1_micro_version]))
15+
16+
# E.g., if prefix is "mongoc", substitute MONGOC_MAJOR_VERSION.
17+
m4_define([prefix_upper], [translit([$1],[a-z],[A-Z])])
18+
AC_SUBST(m4_join([], prefix_upper, [_MAJOR_VERSION]), $1_major_version)
19+
AC_SUBST(m4_join([], prefix_upper, [_MINOR_VERSION]), $1_minor_version)
20+
AC_SUBST(m4_join([], prefix_upper, [_MICRO_VERSION]), $1_micro_version)
21+
AC_SUBST(m4_join([], prefix_upper, [_PRERELEASE_VERSION]), $1_prerelease_version)
22+
23+
# Substitute the joined version string, e.g. set MONGOC_VERSION to $mongoc_version.
24+
AC_SUBST(m4_join([], prefix_upper, [_VERSION]), $1_version)
25+
])
26+
27+
# Parse version, perhaps like "x.y.z-dev", from VERSION_CURRENT file.
28+
mongoc_parse_version(mongoc, m4_esyscmd_s(cat VERSION_CURRENT))
29+
30+
# Parse most recent stable release, like "x.y.z", from VERSION_RELEASED file.
31+
mongoc_parse_version(mongoc_released, m4_esyscmd_s(cat VERSION_RELEASED))
32+
33+
AC_MSG_NOTICE([Current version (from VERSION_CURRENT file): $MONGOC_VERSION])
34+
35+
m4_ifset([mongoc_released_prerelease_version],
36+
[AC_ERROR([RELEASED_VERSION file has prerelease version $MONGOC_RELEASED_VERSION])])
37+
38+
if test "x$mongoc_version" != "x$mongoc_released_version"; then
39+
AC_MSG_NOTICE([Most recent release (from VERSION_RELEASED file): $MONGOC_RELEASED_VERSION])
40+
m4_ifset([mongoc_prerelease_version], [], [
41+
AC_ERROR([Current version must be a prerelease (with "-dev", "-beta", etc.) or equal to previous release])
42+
])
43+
fi
1244

1345
# bump up by 1 for every micro release with no API changes, otherwise
1446
# set to 0. after release, bump up by 1
15-
m4_define([mongoc_interface_age], [1])
16-
m4_define([mongoc_binary_age], [m4_eval(100 * mongoc_minor_version + mongoc_micro_version)])
47+
m4_define([mongoc_released_interface_age], mongoc_released_micro_version)
48+
m4_define([mongoc_released_binary_age],
49+
[m4_eval(100 * mongoc_released_minor_version +
50+
mongoc_released_micro_version)])
51+
52+
AC_SUBST([MONGOC_RELEASED_INTERFACE_AGE], [mongoc_released_interface_age])
53+
AC_MSG_NOTICE([libmongoc interface age $MONGOC_RELEASED_INTERFACE_AGE])
54+
55+
m4_define([lt_current],
56+
[m4_eval(100 * mongoc_released_minor_version +
57+
mongoc_released_micro_version -
58+
mongoc_released_interface_age)])
59+
60+
m4_define([lt_revision], [mongoc_released_interface_age])
1761

18-
m4_define([lt_current], [m4_eval(100 * mongoc_minor_version + mongoc_micro_version - mongoc_interface_age)])
19-
m4_define([lt_revision], [mongoc_interface_age])
20-
m4_define([lt_age], [m4_eval(mongoc_binary_age - mongoc_interface_age)])
62+
m4_define([lt_age], [m4_eval(mongoc_released_binary_age -
63+
mongoc_released_interface_age)])
2164

22-
m4_define([libbson_required_version], [1.2.1])
65+
# So far, we've synchronized libbson and mongoc versions.
66+
m4_define([libbson_required_version], [mongoc_released_version])
2367

2468
m4_define([sasl_required_version], [2.1.6])

build/cmake/LoadVersion.cmake

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
function(LoadVersion FILEPATH PREFIX)
2+
# E.g., "MONGOC_VERSION".
3+
string(CONCAT VERSION_NAME ${PREFIX} _VERSION)
4+
5+
file(STRINGS ${FILEPATH} VERSION_CONTENTS)
6+
7+
# A list of version components separated by dots and dashes: "1.3.0-dev"
8+
string(REGEX MATCHALL "[^.-]+" VERSION ${VERSION_CONTENTS})
9+
10+
list(GET VERSION 0 MAJOR_VERSION)
11+
string(CONCAT MAJOR_VERSION_NAME ${PREFIX} _MAJOR_VERSION)
12+
set(${MAJOR_VERSION_NAME} ${MAJOR_VERSION} PARENT_SCOPE)
13+
14+
list(GET VERSION 1 MINOR_VERSION)
15+
string(CONCAT MINOR_VERSION_NAME ${PREFIX} _MINOR_VERSION)
16+
set(${MINOR_VERSION_NAME} ${MINOR_VERSION} PARENT_SCOPE)
17+
18+
list(GET VERSION 2 MICRO_VERSION)
19+
string(CONCAT MICRO_VERSION_NAME ${PREFIX} _MICRO_VERSION)
20+
set(${MICRO_VERSION_NAME} ${MICRO_VERSION} PARENT_SCOPE)
21+
22+
string(CONCAT PRERELEASE_VERSION_NAME ${PREFIX} _PRERELEASE_VERSION)
23+
list(LENGTH VERSION VERSION_LENGTH)
24+
if(VERSION_LENGTH GREATER 3)
25+
list(GET VERSION 3 PRERELEASE_VERSION)
26+
set(${PRERELEASE_VERSION_NAME} ${PRERELEASE_VERSION} PARENT_SCOPE)
27+
set(${VERSION_NAME}
28+
"${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}-${PRERELEASE_VERSION}"
29+
PARENT_SCOPE)
30+
else()
31+
set(${PRERELEASE_VERSION_NAME} "" PARENT_SCOPE)
32+
set(${VERSION_NAME}
33+
"${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}"
34+
PARENT_SCOPE)
35+
endif()
36+
endfunction(LoadVersion)

configure.ac

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
11
AC_PREREQ(2.60)
22

3+
# Set version from contents of "VERSION_CURRENT" file.
4+
AC_INIT([mongo-c-driver],
5+
m4_esyscmd_s(cat VERSION_CURRENT),
6+
[https://jira.mongodb.org/browse/CDRIVER])
7+
38
m4_include([build/autotools/Versions.m4])
49

5-
AC_INIT([mongo-c-driver],[mongoc_version],[https://jira.mongodb.org/browse/CDRIVER])
610
AC_CONFIG_MACRO_DIR([build/autotools/m4])
711
AC_CONFIG_AUX_DIR([build/autotools])
812
AC_SUBST(ACLOCAL_AMFLAGS, "-I build/autotools")
913

10-
MONGOC_MAJOR_VERSION=mongoc_major_version
11-
MONGOC_MINOR_VERSION=mongoc_minor_version
12-
MONGOC_MICRO_VERSION=mongoc_micro_version
13-
MONGOC_PRERELEASE_VERSION=mongoc_prerelease_version
1414
MONGOC_API_VERSION=1.0
15-
MONGOC_VERSION=mongoc_version
16-
AC_SUBST(MONGOC_MAJOR_VERSION)
17-
AC_SUBST(MONGOC_MINOR_VERSION)
18-
AC_SUBST(MONGOC_MICRO_VERSION)
19-
AC_SUBST(MONGOC_PRERELEASE_VERSION)
2015
AC_SUBST(MONGOC_API_VERSION)
21-
AC_SUBST(MONGOC_VERSION)
2216

2317
m4_include([build/autotools/CheckCompiler.m4])
2418
m4_include([build/autotools/CheckProgs.m4])
@@ -57,6 +51,8 @@ AC_CONFIG_FILES([
5751
src/libmongoc-priv.pc
5852
src/mongoc/mongoc-config.h
5953
src/mongoc/mongoc-version.h
54+
doc/installing.page
55+
doc/mongoc_version.page
6056
])
6157

6258
m4_include([build/autotools/Libbson.m4])

0 commit comments

Comments
 (0)