Skip to content

Commit 5d32aeb

Browse files
committed
[#3731] Unify all grabber.sh scripts in a single one
Two are too many, let alone four. Add env.sh and fix extended version.
1 parent 395c3c3 commit 5d32aeb

File tree

15 files changed

+117
-127
lines changed

15 files changed

+117
-127
lines changed

doc/sphinx/grabber.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

doc/sphinx/meson.build

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,16 @@ rst_arm_sources = [
2626
'kea-messages.rst',
2727
]
2828

29-
list = run_command('grabber.sh', current_source_dir, 'arm', 'rst', check: true)
29+
list = run_command(GRABBER, current_source_dir / 'arm', '*.rst', check: true)
3030
rst_arm_sources += list.stdout().strip().split('\n')
3131

32-
list = run_command(
33-
'grabber.sh',
34-
current_source_dir,
35-
'grammar',
36-
'rst',
37-
check: true,
38-
)
32+
list = run_command(GRABBER, current_source_dir / 'grammar', '*.rst', check: true)
3933
rst_arm_sources = list.stdout().strip().split('\n')
4034

4135
main_sources = rst_arm_sources + ['conf.py'] + static_sources
4236

4337
# mans
44-
list = run_command('grabber.sh', current_source_dir, 'man', 'rst', check: true)
38+
list = run_command(GRABBER, current_source_dir / 'man', '*.rst', check: true)
4539
rst_man_sources = list.stdout().strip().split('\n')
4640

4741
man8s = []
@@ -53,22 +47,22 @@ endforeach
5347
man_sources = rst_man_sources + ['conf.py']
5448

5549
api_dir = f'@TOP_SOURCE_DIR@/src/share/api'
56-
list = run_command('grabber.sh', '/', api_dir, 'json', check: true)
50+
list = run_command(GRABBER, api_dir, '*.json', check: true)
5751
api_files = list.stdout().strip().split('\n')
5852

59-
list = run_command('grabber.sh', '/', TOP_SOURCE_DIR, 'mes', check: true)
53+
list = run_command(GRABBER, TOP_SOURCE_DIR, '*.mes', check: true)
6054
mes_files = list.stdout().strip().split('\n')
6155

62-
list = run_command('grabber.sh', current_source_dir, 'uml', 'uml', check: true)
56+
list = run_command(GRABBER, current_source_dir / 'uml', '*.uml', check: true)
6357
umls = list.stdout().strip().split('\n')
6458

65-
list = run_command('grabber.sh', current_source_dir, 'uml', 'png', check: true)
59+
list = run_command(GRABBER, current_source_dir / 'uml', '*.png', check: true)
6660
pngs = list.stdout().strip().split('\n')
6761

68-
list = run_command('grabber.sh', current_source_dir, 'uml', 'svg', check: true)
62+
list = run_command(GRABBER, current_source_dir / 'uml', '*.svg', check: true)
6963
svgs = list.stdout().strip().split('\n')
7064

71-
list = run_command('grabber.sh', current_source_dir, 'uml', 'atxt', check: true)
65+
list = run_command(GRABBER, current_source_dir / 'uml', '*.atxt', check: true)
7266
txts = list.stdout().strip().split('\n')
7367

7468
doc_conf = configuration_data()

meson.build

Lines changed: 69 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -62,68 +62,42 @@ postgresql_opt = get_option('postgresql')
6262
FUZZ_OPT = get_option('fuzz')
6363
TESTS_OPT = get_option('tests')
6464

65-
SRCID_OPT = get_option('srcid')
66-
67-
#### KEA_SRCID value
65+
#### Programs
6866

69-
CD_AND_RUN = find_program(f'@TOP_SOURCE_DIR@/cd-and-run.sh')
67+
# External programs used only in this file.
68+
cppcheck = find_program('cppcheck', required: false)
69+
cppcheck_htmlreport = find_program('cppcheck-htmlreport', required: false)
70+
git = find_program('git', required: false)
71+
valgrind = find_program('valgrind', required: false)
7072

71-
# When set 'srcid' option should be the KEA_PKG_VERSION_IN_CONFIGURE and
72-
# KEA_PKG_TYPE_IN_CONFIGURE name pair with
73-
# for KEA_PKG_VERSION_IN_CONFIGURE date and timestamp of the package
74-
# e.g. "isc20230921141113"
75-
# KEA_PKG_TYPE_IN_CONFIGURE type of the package "rpm", "deb" or "apk"
76-
if SRCID_OPT != ''
77-
KEA_SRCID = SRCID_OPT
78-
else
79-
KEA_SRCID = 'tarball'
80-
git = disabler()
81-
if fs.is_dir('.git')
82-
git = find_program('git', required: false)
83-
endif
84-
if git.found()
85-
result = run_command(
86-
CD_AND_RUN,
87-
TOP_SOURCE_DIR,
88-
git.full_path(),
89-
'rev-parse',
90-
'HEAD',
91-
check: false,
92-
)
93-
if result.returncode() == 0
94-
KEA_SRCID = 'git ' + result.stdout().strip()
95-
endif
96-
endif
97-
endif
73+
AWK = find_program('gawk', 'awk', required: false)
74+
BISON = find_program('bison', version: '>=3.3.0', required: false)
75+
DOXYGEN = find_program('doxygen', required: false)
76+
FLEX = find_program('flex', version: '>=2.6.4', required: false)
77+
INSTALL = find_program('install', required: true)
78+
PDFLATEX = find_program('pdflatex', required: false)
79+
PIP_COMPILE = find_program('pip-compile', required: false)
80+
PLANTUML = find_program('plantuml', required: false)
81+
PYTHON = find_program('python3', 'python', required: true)
82+
SPHINX = find_program('sphinx-build', 'sphinx-build-3', required: false)
83+
XMLLINT = find_program('xmllint', required: false)
9884

99-
message(f'Set KEA_SRCID to "@KEA_SRCID@"')
85+
CD_AND_RUN = find_program(f'@TOP_SOURCE_DIR@/scripts/cd-and-run.sh')
86+
ENV = find_program(f'@TOP_SOURCE_DIR@/scripts/env.sh')
87+
GRABBER = find_program(f'@TOP_SOURCE_DIR@/scripts/grabber.sh')
88+
KEA_MSG_COMPILER = disabler()
10089

10190
#### Configuration Data
10291

92+
# 'HAVE_BOTAN_ASIO_STREAM_H': false,
93+
# 'HAVE_PGSQL_SSL': false,
94+
# 'USE_STATIC_LINK': false,
10395
conf_data = configuration_data(
10496
{
105-
'EXTENDED_VERSION': f'"@KEA_SRCID@"',
106-
# 'HAVE_AFL': false,
107-
# 'HAVE_BOTAN_ASIO_STREAM_H': false,
108-
# 'HAVE_CREATE_UNIFIED_DIFF': false,
109-
# 'HAVE_GSS_STR_TO_OID': false,
110-
# 'HAVE_MYSQL_GET_OPTION': false,
111-
# 'HAVE_OPTRESET': false,
112-
# 'HAVE_PGSQL_SSL': false,
113-
# 'HAVE_PGSQL_TCP_USER_TIMEOUT': false,
114-
# 'HAVE_SYS_FILIO_H': false,
115-
# 'HAVE_VALGRIND_HEADERS': false,
116-
# 'LIBC_MUSL': false,
117-
# 'PACKAGE': 'kea',
118-
# 'PACKAGE_BUGREPORT': 'kea-dev@lists.isc.org',
97+
'PACKAGE': 'kea',
11998
'PACKAGE_NAME': 'kea',
120-
# 'PACKAGE_STRING': f'kea "@PROJECT_VERSION@"',
12199
'PACKAGE_VERSION': PROJECT_VERSION,
122-
'PACKAGE_VERSION_TYPE': '"development"',
123-
# 'PREMIUM_EXTENDED_VERSION': '"no"',
124-
# 'USE_STATIC_LINK': false,
125100
'VERSION': f'"@PROJECT_VERSION@"',
126-
# 'WITH_HEIMDAL': false,
127101
},
128102
)
129103

@@ -157,27 +131,6 @@ else
157131
endif
158132
message(f'Detected system "@SYSTEM@".')
159133

160-
#### Programs
161-
162-
# External programs used only in this file.
163-
cppcheck = find_program('cppcheck', required: false)
164-
cppcheck_htmlreport = find_program('cppcheck-htmlreport', required: false)
165-
valgrind = find_program('valgrind', required: false)
166-
167-
AWK = find_program('gawk', 'awk', required: false)
168-
BISON = find_program('bison', version: '>=3.3.0', required: false)
169-
DOXYGEN = find_program('doxygen', required: false)
170-
FLEX = find_program('flex', version: '>=2.6.4', required: false)
171-
INSTALL = find_program('install', required: true)
172-
PDFLATEX = find_program('pdflatex', required: false)
173-
PIP_COMPILE = find_program('pip-compile', required: false)
174-
PLANTUML = find_program('plantuml', required: false)
175-
PYTHON = find_program('python3', 'python', required: true)
176-
SPHINX = find_program('sphinx-build', 'sphinx-build-3', required: false)
177-
XMLLINT = find_program('xmllint', required: false)
178-
179-
KEA_MSG_COMPILER = disabler()
180-
181134
#### Dependencies
182135

183136
boost_dep = dependency('boost', version: '>=1.66', modules: ['system'])
@@ -444,6 +397,7 @@ endif
444397
#### Other checks.
445398

446399
if POSTGRESQL_DEP.found()
400+
# TODO: change to proper check, not version check.
447401
version = POSTGRESQL_DEP.version()
448402
conf_data.set(
449403
'HAVE_PGSQL_TCP_USER_TIMEOUT',
@@ -471,6 +425,46 @@ if KRB5_DEP.found() and KRB5_DEP.get_variable('vendor') == 'Heimdal'
471425
conf_data.set('WITH_HEIMDAL', true)
472426
endif
473427

428+
# KEA_PKG_VERSION_IN_CONFIGURE: date and timestamp of the package e.g. "isc20230921141113"
429+
# KEA_PKG_TYPE_IN_CONFIGURE: type of the package "rpm", "deb" or "apk"
430+
kea_pkg_type_in_configure = run_command(
431+
ENV,
432+
'KEA_PKG_TYPE_IN_CONFIGURE',
433+
check: true,
434+
).stdout().strip()
435+
kea_pkg_version_in_configure = run_command(
436+
ENV,
437+
'KEA_PKG_VERSION_IN_CONFIGURE',
438+
check: true,
439+
).stdout().strip()
440+
if kea_pkg_type_in_configure != '' and kea_pkg_version_in_configure != ''
441+
extended_version = f'@kea_pkg_version_in_configure@ @kea_pkg_type_in_configure@'
442+
else
443+
if fs.is_dir('.git') and git.found()
444+
result = run_command(
445+
CD_AND_RUN,
446+
TOP_SOURCE_DIR,
447+
git,
448+
'rev-parse',
449+
'HEAD',
450+
check: false,
451+
)
452+
if result.returncode() == 0
453+
extended_version = 'git ' + result.stdout().strip()
454+
endif
455+
else
456+
extended_version = 'tarball'
457+
endif
458+
endif
459+
conf_data.set('EXTENDED_VERSION', f'"@PROJECT_VERSION@ (@extended_version@)"')
460+
461+
if PROJECT_VERSION.split('.')[1].to_int() % 2 == 0
462+
package_version_type = 'stable'
463+
else
464+
package_version_type = 'stable'
465+
endif
466+
conf_data.set('PACKAGE_VERSION_TYPE', f'"@package_version_type@"')
467+
474468
#### System-specific Compiler Flags
475469

476470
compile_args = []
@@ -493,7 +487,7 @@ endif
493487
premium = fs.is_dir('premium')
494488
if premium
495489
conf_data.set('PREMIUM', 'yes')
496-
conf_data.set('PREMIUM_EXTENDED_VERSION', f'"yes (@KEA_SRCID@)"')
490+
conf_data.set('PREMIUM_EXTENDED_VERSION', f'"yes (@extended_version@)"')
497491
else
498492
conf_data.set('PREMIUM', 'no')
499493
conf_data.set('PREMIUM_EXTENDED_VERSION', '"no"')
@@ -515,8 +509,8 @@ report_conf_data.merge_from(conf_data)
515509
report_conf_data.set('TOP_BUILD_DIR', TOP_BUILD_DIR)
516510
report_conf_data.set('PACKAGE_NAME', 'kea')
517511
report_conf_data.set('PACKAGE_VERSION', PROJECT_VERSION)
518-
report_conf_data.set('EXTENDED_VERSION', f'@PROJECT_VERSION@ (@KEA_SRCID@)')
519-
report_conf_data.set('PACKAGE_VERSION_TYPE', 'development')
512+
report_conf_data.set('PACKAGE_VERSION_TYPE', package_version_type)
513+
report_conf_data.set('EXTENDED_VERSION', f'@PROJECT_VERSION@ (@extended_version@)')
520514
report_conf_data.set('OS_TYPE', OS_TYPE)
521515
report_conf_data.set('PREFIX', PREFIX)
522516
report_conf_data.set('HOOKS_DIR', DEFAULT_HOOKS_PATH)

meson.options

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,3 @@ option(
3232
value: 'disabled',
3333
description: 'Support for tests.',
3434
)
35-
36-
# Set the Kea srcid (default is 'git <HEAD>' or 'tarball').
37-
option('srcid', type: 'string', value: '', description: 'Set the Kea srcid.')
File renamed without changes.

scripts/env.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
env | grep -E "^${1}=" | cut -d '=' -f 2

scripts/grabber.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/sh
2+
3+
dir="${1}"
4+
pattern="${2}"
5+
6+
cd "${dir}" || exit 1
7+
8+
find . -mindepth 1 -maxdepth 1 -type f -name "${pattern}" -printf '%P\n' | sort -V

src/Makefile.am

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ SUBDIRS = share lib hooks bin
22

33
EXTRA_DIST = \
44
cppcheck-suppress.lst \
5-
valgrind-suppressions \
6-
valgrind-suppressions.revisit
5+
valgrind.supp

src/share/api/grabber.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/share/api/meson.build

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
list = run_command('grabber.sh', check: true)
1+
list = run_command(
2+
GRABBER,
3+
TOP_SOURCE_DIR / 'src/share/api',
4+
'*.json',
5+
check: true,
6+
)
27
api_files = list.stdout().strip().split('\n')
3-
install_dir = f'@DATADIR@/kea/api'
4-
install_data(api_files, install_dir: install_dir)
8+
install_data(api_files, install_dir: DATADIR / 'kea/api')

src/share/database/scripts/mysql/meson.build

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
install_dir = f'@DATADIR@/kea/scripts/mysql'
1+
install_dir = DATADIR / 'kea/scripts/mysql'
22
configure_file(
33
input: 'dhcpdb_create.mysql',
44
output: 'dhcpdb_create.mysql',
@@ -67,7 +67,12 @@ upgrade_scripts = [
6767
'upgrade_027_to_028.sh',
6868
'upgrade_028_to_029.sh',
6969
]
70-
list = run_command('../utils/grabber.sh', check: true)
70+
list = run_command(
71+
GRABBER,
72+
TOP_SOURCE_DIR / 'src/share/database/scripts/mysql',
73+
'upgrade_*_to_*.sh.in',
74+
check: true,
75+
)
7176
grabbed_upgrade_scripts = list.stdout().strip().split('\n')
7277
assert(
7378
upgrade_scripts.length() == grabbed_upgrade_scripts.length(),

src/share/database/scripts/pgsql/meson.build

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
install_dir = f'@DATADIR@/kea/scripts/pgsql'
1+
install_dir = DATADIR / 'kea/scripts/pgsql'
22
configure_file(
33
input: 'dhcpdb_create.pgsql',
44
output: 'dhcpdb_create.pgsql',
@@ -62,7 +62,12 @@ upgrade_scripts = [
6262
'upgrade_027_to_028.sh',
6363
'upgrade_028_to_029.sh',
6464
]
65-
list = run_command('../utils/grabber.sh', check: true)
65+
list = run_command(
66+
GRABBER,
67+
TOP_SOURCE_DIR / 'src/share/database/scripts/pgsql',
68+
'upgrade_*_to_*.sh.in',
69+
check: true,
70+
)
6671
grabbed_upgrade_scripts = list.stdout().strip().split('\n')
6772
assert(
6873
upgrade_scripts.length() == grabbed_upgrade_scripts.length(),

src/share/database/scripts/utils/grabber.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/share/yang/modules/meson.build

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ yangmodules_list = [
2222
'kea-types@2019-08-12.yang',
2323
'keatest-module@2022-11-30.yang',
2424
]
25-
list = run_command('utils/grabber.sh', check: true)
25+
list = run_command(
26+
GRABBER,
27+
TOP_SOURCE_DIR / 'src/share/yang/modules',
28+
'*.yang',
29+
check: true,
30+
)
2631
grabbed_modules = list.stdout().strip().split('\n')
2732
foreach file : grabbed_modules
2833
assert(

src/share/yang/modules/utils/grabber.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)