Skip to content

Commit de342df

Browse files
authored
chore(glib): Generate version.h automatically (#3037)
Fixes #3032.
1 parent 900fe52 commit de342df

File tree

7 files changed

+242
-158
lines changed

7 files changed

+242
-158
lines changed

dev/release/utils-prepare.sh

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ update_versions() {
4949
exit 1
5050
;;
5151
esac
52+
# 1.7.0 -> 1.7
53+
# 1.7.0-SNAPSHOT -> 1.7
54+
local glib_version_major_minor="${glib_version%.*}"
55+
# 1.7 -> 1
56+
local glib_version_major="${glib_version_major_minor%.*}"
57+
# 1.7 -> 7
58+
local glib_version_minor="${glib_version_major_minor#*.}"
5259

5360
header "Updating versions for release ${RELEASE}"
5461
echo "C: ${c_version}"
@@ -105,6 +112,17 @@ update_versions() {
105112
rm "${ADBC_DIR}/glib/meson.build.bak"
106113
git add "${ADBC_DIR}/glib/meson.build"
107114

115+
# Add a new version entry only when the next release is a new
116+
# major/minor release and it doesn't exist yet.
117+
if [ "${type}" = "snapshot" ] && \
118+
! grep -q -F "(${glib_version_major}, ${glib_version_minor})" glib/tool/generate-version-header.py; then
119+
sed -i.bak -E -e \
120+
"s/^ALL_VERSIONS = \[$/&\\n (${glib_version_major}, ${glib_version_minor}),/" \
121+
glib/tool/generate-version-header.py
122+
rm -f glib/tool/generate-version-header.py.bak
123+
git add glib/tool/generate-version-header.py
124+
fi
125+
108126
sed -i.bak -E "s/version = \".+\"/version = \"${py_version}\"/g" "${ADBC_DIR}"/python/adbc_*/adbc_*/_static_version.py
109127
rm "${ADBC_DIR}"/python/adbc_*/adbc_*/_static_version.py.bak
110128
git add "${ADBC_DIR}"/python/adbc_*/adbc_*/_static_version.py
@@ -121,7 +139,7 @@ update_versions() {
121139

122140
sed -i.bak -E \
123141
-e "s/^version = \".+\"/version = \"${rust_version}\"/" \
124-
-e "s/^adbc_core = { path = \".\/core\", version = \".+\"/adbc_core = { path = \".\/core\", version = \"${rust_version}\"/" \
142+
-e "s/^adbc_core = \{ path = \".\/core\", version = \".+\"/adbc_core = { path = \".\/core\", version = \"${rust_version}\"/" \
125143
"${ADBC_DIR}/rust/Cargo.toml"
126144
rm "${ADBC_DIR}/rust/Cargo.toml.bak"
127145
git add "${ADBC_DIR}/rust/Cargo.toml"

glib/adbc-arrow-glib/meson.build

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,23 @@ sources = files('connection.c', 'statement.c')
2121

2222
definition_headers = files('connection.h', 'statement.h')
2323

24-
version_h_conf = configuration_data()
25-
version_h_conf.set('GADBC_ARROW_VERSION', meson.project_version())
26-
version_h_conf.set('GADBC_ARROW_VERSION_MAJOR', version_major)
27-
version_h_conf.set('GADBC_ARROW_VERSION_MINOR', version_minor)
28-
version_h_conf.set('GADBC_ARROW_VERSION_MICRO', version_micro)
2924
version_h = configure_file(
3025
input: 'version.h.in',
3126
output: 'version.h',
32-
configuration: version_h_conf,
27+
command: [
28+
python3,
29+
generate_version_header_py,
30+
'--library',
31+
'GADBC_ARROW',
32+
'--version',
33+
meson.project_version(),
34+
'--input',
35+
'@INPUT@',
36+
'--output',
37+
'@OUTPUT@',
38+
],
3339
)
34-
headers += version_h
40+
definition_headers += version_h
3541

3642
headers = definition_headers
3743
headers += files('adbc-arrow-glib.h')

glib/adbc-arrow-glib/version.h.in

Lines changed: 16 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
*
3939
* Since: 0.10.0
4040
*/
41-
#define GADBC_ARROW_VERSION_MAJOR (@GADBC_ARROW_VERSION_MAJOR@)
41+
#define GADBC_ARROW_VERSION_MAJOR (@VERSION_MAJOR@)
4242

4343
/**
4444
* GADBC_ARROW_VERSION_MINOR:
@@ -47,7 +47,7 @@
4747
*
4848
* Since: 0.10.0
4949
*/
50-
#define GADBC_ARROW_VERSION_MINOR (@GADBC_ARROW_VERSION_MINOR@)
50+
#define GADBC_ARROW_VERSION_MINOR (@VERSION_MINOR@)
5151

5252
/**
5353
* GADBC_ARROW_VERSION_MICRO:
@@ -56,7 +56,17 @@
5656
*
5757
* Since: 0.10.0
5858
*/
59-
#define GADBC_ARROW_VERSION_MICRO (@GADBC_ARROW_VERSION_MICRO@)
59+
#define GADBC_ARROW_VERSION_MICRO (@VERSION_MICRO@)
60+
61+
/**
62+
* GADBC_ARROW_VERSION_TAG:
63+
*
64+
* The version tag. Normally, it's an empty string. It's "SNAPSHOT"
65+
* for snapshot version.
66+
*
67+
* Since: 1.7.0
68+
*/
69+
#define GADBC_ARROW_VERSION_TAG "@VERSION_TAG@"
6070

6171
/**
6272
* GADBC_ARROW_VERSION_CHECK:
@@ -100,23 +110,7 @@
100110
# define GADBC_ARROW_UNAVAILABLE(major, minor) G_UNAVAILABLE(major, minor)
101111
#endif
102112

103-
/**
104-
* GADBC_ARROW_VERSION_1_0:
105-
*
106-
* You can use this macro value for compile time API version check.
107-
*
108-
* Since: 1.0.0
109-
*/
110-
#define GADBC_ARROW_VERSION_1_0 G_ENCODE_VERSION(1, 0)
111-
112-
/**
113-
* GADBC_ARROW_VERSION_0_10:
114-
*
115-
* You can use this macro value for compile time API version check.
116-
*
117-
* Since: 0.10.0
118-
*/
119-
#define GADBC_ARROW_VERSION_0_10 G_ENCODE_VERSION(0, 10)
113+
@ENCODED_VERSIONS@
120114

121115
/**
122116
* GADBC_ARROW_VERSION_MIN_REQUIRED:
@@ -162,33 +156,6 @@
162156
G_ENCODE_VERSION(GADBC_ARROW_VERSION_MAJOR, GADBC_ARROW_VERSION_MINOR)
163157
#endif
164158

159+
@VISIBILITY_MACROS@
165160

166-
#define GADBC_ARROW_AVAILABLE_IN_ALL
167-
168-
#if GADBC_ARROW_VERSION_MIN_REQUIRED >= GADBC_ARROW_VERSION_1_0
169-
# define GADBC_ARROW_DEPRECATED_IN_1_0 GADBC_ARROW_DEPRECATED
170-
# define GADBC_ARROW_DEPRECATED_IN_1_0_FOR(function) GADBC_ARROW_DEPRECATED_FOR(function)
171-
#else
172-
# define GADBC_ARROW_DEPRECATED_IN_1_0
173-
# define GADBC_ARROW_DEPRECATED_IN_1_0_FOR(function)
174-
#endif
175-
176-
#if GADBC_ARROW_VERSION_MAX_ALLOWED < GADBC_ARROW_VERSION_1_0
177-
# define GADBC_ARROW_AVAILABLE_IN_1_0 GADBC_ARROW_UNAVAILABLE(1, 0)
178-
#else
179-
# define GADBC_ARROW_AVAILABLE_IN_1_0
180-
#endif
181-
182-
#if GADBC_ARROW_VERSION_MIN_REQUIRED >= GADBC_ARROW_VERSION_0_10
183-
# define GADBC_ARROW_DEPRECATED_IN_0_10 GADBC_ARROW_DEPRECATED
184-
# define GADBC_ARROW_DEPRECATED_IN_0_10_FOR(function) GADBC_ARROW_DEPRECATED_FOR(function)
185-
#else
186-
# define GADBC_ARROW_DEPRECATED_IN_0_10
187-
# define GADBC_ARROW_DEPRECATED_IN_0_10_FOR(function)
188-
#endif
189-
190-
#if GADBC_ARROW_VERSION_MAX_ALLOWED < GADBC_ARROW_VERSION_0_10
191-
# define GADBC_ARROW_AVAILABLE_IN_0_10 GADBC_ARROW_UNAVAILABLE(0, 10)
192-
#else
193-
# define GADBC_ARROW_AVAILABLE_IN_0_10
194-
#endif
161+
@AVAILABILITY_MACROS@

glib/adbc-glib/meson.build

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,21 @@ definition_headers = files(
2626
'statement.h',
2727
)
2828

29-
version_h_conf = configuration_data()
30-
version_h_conf.set('GADBC_VERSION', meson.project_version())
31-
version_h_conf.set('GADBC_VERSION_MAJOR', version_major)
32-
version_h_conf.set('GADBC_VERSION_MINOR', version_minor)
33-
version_h_conf.set('GADBC_VERSION_MICRO', version_micro)
3429
version_h = configure_file(
3530
input: 'version.h.in',
3631
output: 'version.h',
37-
configuration: version_h_conf,
32+
command: [
33+
python3,
34+
generate_version_header_py,
35+
'--library',
36+
'GADBC',
37+
'--version',
38+
meson.project_version(),
39+
'--input',
40+
'@INPUT@',
41+
'--output',
42+
'@OUTPUT@',
43+
],
3844
)
3945
definition_headers += version_h
4046

glib/adbc-glib/version.h.in

Lines changed: 16 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
*
3939
* Since: 0.1.0
4040
*/
41-
#define GADBC_VERSION_MAJOR (@GADBC_VERSION_MAJOR@)
41+
#define GADBC_VERSION_MAJOR (@VERSION_MAJOR@)
4242

4343
/**
4444
* GADBC_VERSION_MINOR:
@@ -47,7 +47,7 @@
4747
*
4848
* Since: 0.1.0
4949
*/
50-
#define GADBC_VERSION_MINOR (@GADBC_VERSION_MINOR@)
50+
#define GADBC_VERSION_MINOR (@VERSION_MINOR@)
5151

5252
/**
5353
* GADBC_VERSION_MICRO:
@@ -56,7 +56,17 @@
5656
*
5757
* Since: 0.1.0
5858
*/
59-
#define GADBC_VERSION_MICRO (@GADBC_VERSION_MICRO@)
59+
#define GADBC_VERSION_MICRO (@VERSION_MICRO@)
60+
61+
/**
62+
* GADBC_VERSION_TAG:
63+
*
64+
* The version tag. Normally, it's an empty string. It's "SNAPSHOT"
65+
* for snapshot version.
66+
*
67+
* Since: 1.7.0
68+
*/
69+
#define GADBC_VERSION_TAG "@VERSION_TAG@"
6070

6171
/**
6272
* GADBC_VERSION_CHECK:
@@ -100,41 +110,7 @@
100110
# define GADBC_UNAVAILABLE(major, minor) G_UNAVAILABLE(major, minor)
101111
#endif
102112

103-
/**
104-
* GADBC_VERSION_1_0:
105-
*
106-
* You can use this macro value for compile time API version check.
107-
*
108-
* Since: 1.0.0
109-
*/
110-
#define GADBC_VERSION_1_0 G_ENCODE_VERSION(1, 0)
111-
112-
/**
113-
* GADBC_VERSION_0_10:
114-
*
115-
* You can use this macro value for compile time API version check.
116-
*
117-
* Since: 0.10.0
118-
*/
119-
#define GADBC_VERSION_0_10 G_ENCODE_VERSION(0, 10)
120-
121-
/**
122-
* GADBC_VERSION_0_4:
123-
*
124-
* You can use this macro value for compile time API version check.
125-
*
126-
* Since: 0.4.0
127-
*/
128-
#define GADBC_VERSION_0_4 G_ENCODE_VERSION(0, 4)
129-
130-
/**
131-
* GADBC_VERSION_0_1:
132-
*
133-
* You can use this macro value for compile time API version check.
134-
*
135-
* Since: 0.1.0
136-
*/
137-
#define GADBC_VERSION_0_1 G_ENCODE_VERSION(0, 1)
113+
@ENCODED_VERSIONS@
138114

139115
/**
140116
* GADBC_VERSION_MIN_REQUIRED:
@@ -180,61 +156,6 @@
180156
G_ENCODE_VERSION(GADBC_VERSION_MAJOR, GADBC_VERSION_MINOR)
181157
#endif
182158

159+
@VISIBILITY_MACROS@
183160

184-
#define GADBC_AVAILABLE_IN_ALL
185-
186-
#if GADBC_VERSION_MIN_REQUIRED >= GADBC_VERSION_1_0
187-
# define GADBC_DEPRECATED_IN_1_0 GADBC_DEPRECATED
188-
# define GADBC_DEPRECATED_IN_1_0_FOR(function) GADBC_DEPRECATED_FOR(function)
189-
#else
190-
# define GADBC_DEPRECATED_IN_1_0
191-
# define GADBC_DEPRECATED_IN_1_0_FOR(function)
192-
#endif
193-
194-
#if GADBC_VERSION_MAX_ALLOWED < GADBC_VERSION_1_0
195-
# define GADBC_AVAILABLE_IN_1_0 GADBC_UNAVAILABLE(1, 0)
196-
#else
197-
# define GADBC_AVAILABLE_IN_1_0
198-
#endif
199-
200-
#if GADBC_VERSION_MIN_REQUIRED >= GADBC_VERSION_0_10
201-
# define GADBC_DEPRECATED_IN_0_10 GADBC_DEPRECATED
202-
# define GADBC_DEPRECATED_IN_0_10_FOR(function) GADBC_DEPRECATED_FOR(function)
203-
#else
204-
# define GADBC_DEPRECATED_IN_0_10
205-
# define GADBC_DEPRECATED_IN_0_10_FOR(function)
206-
#endif
207-
208-
#if GADBC_VERSION_MAX_ALLOWED < GADBC_VERSION_0_10
209-
# define GADBC_AVAILABLE_IN_0_10 GADBC_UNAVAILABLE(0, 10)
210-
#else
211-
# define GADBC_AVAILABLE_IN_0_10
212-
#endif
213-
214-
#if GADBC_VERSION_MIN_REQUIRED >= GADBC_VERSION_0_4
215-
# define GADBC_DEPRECATED_IN_0_4 GADBC_DEPRECATED
216-
# define GADBC_DEPRECATED_IN_0_4_FOR(function) GADBC_DEPRECATED_FOR(function)
217-
#else
218-
# define GADBC_DEPRECATED_IN_0_4
219-
# define GADBC_DEPRECATED_IN_0_4_FOR(function)
220-
#endif
221-
222-
#if GADBC_VERSION_MAX_ALLOWED < GADBC_VERSION_0_4
223-
# define GADBC_AVAILABLE_IN_0_4 GADBC_UNAVAILABLE(0, 4)
224-
#else
225-
# define GADBC_AVAILABLE_IN_0_4
226-
#endif
227-
228-
#if GADBC_VERSION_MIN_REQUIRED >= GADBC_VERSION_0_1
229-
# define GADBC_DEPRECATED_IN_0_1 GADBC_DEPRECATED
230-
# define GADBC_DEPRECATED_IN_0_1_FOR(function) GADBC_DEPRECATED_FOR(function)
231-
#else
232-
# define GADBC_DEPRECATED_IN_0_1
233-
# define GADBC_DEPRECATED_IN_0_1_FOR(function)
234-
#endif
235-
236-
#if GADBC_VERSION_MAX_ALLOWED < GADBC_VERSION_0_1
237-
# define GADBC_AVAILABLE_IN_0_1 GADBC_UNAVAILABLE(0, 1)
238-
#else
239-
# define GADBC_AVAILABLE_IN_0_1
240-
#endif
161+
@AVAILABILITY_MACROS@

glib/meson.build

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ else
8888
]
8989
endif
9090

91+
python = import('python')
92+
python3 = python.find_installation('python3')
93+
generate_version_header_py = meson.project_source_root() / 'tool' / 'generate-version-header.py'
94+
9195
subdir('adbc-glib')
9296
arrow_glib = dependency('arrow-glib', required: generate_vapi)
9397
if arrow_glib.found()

0 commit comments

Comments
 (0)