-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmeson.build
148 lines (124 loc) · 4.22 KB
/
meson.build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
project('gnome-builder-python-plugins',
version: '0.1.2',
license: 'GPL-3.0-or-later',
meson_version: '>= 0.55.0',
)
# plugins to install
plugins_list = get_option('plugins')
# Requirements python modules that are required by our plugins
python_requires = {}
# plugin obviously depends on gnome-builder
builder_required_version='3.32'
python_helper = find_program('python_helper', required: true)
printed_version = ''
if get_option('flatpak')
ret = run_command('flatpak', 'info', 'org.gnome.Builder')
if ret.stderr() != ''
error('can not find gnome-builder in flatpak installed applicatons.')
else
message('Gnome-builder found in flatpak installed applicatons.')
printed_version = run_command('flatpak', 'run', 'org.gnome.Builder', '--version').stdout()
endif
else
gnome_builder = find_program('gnome-builder', required: true)
if not gnome_builder.found()
error('Error: gnome-builder not found')
else
message('Gnome-builder path: @0@'.format(gnome_builder.full_path()))
printed_version = run_command(gnome_builder, '--version').stdout()
endif
endif
if printed_version == ''
error('can not obtain gnome-builder version.')
else
builder_version = printed_version.split()[-1]
if builder_version.version_compare('<' + builder_required_version)
error('need at least version 3.38 of gnome-builder\ninstalled version=@0@'.format(builder_version))
else
message('gnome-builder version=@0@'.format(builder_version))
endif
endif
# Compute ABI Version from gnome-builder version
version_parts = builder_version.split('.')
abi_major = version_parts[0]
if abi_major.to_int() < 40
abi_minor = version_parts[1]
else
abi_minor = 0
endif
abi_version = '@0@.@1@'.format(abi_major, abi_minor)
message('Configure build for ABI version @0@'.format(abi_version))
# installation paths
prefix = get_option('prefix')
datadir = join_paths(prefix, get_option('datadir'))
builder_plugindir = join_paths(datadir, 'gnome-builder/plugins')
flatpak = 'flatpak/app/org.gnome.Builder/current/active/files/'
flatpakdir = join_paths(datadir, flatpak)
if get_option('flatpak')
scriptdir = join_paths(flatpakdir, get_option('bindir'))
schemas_dir = join_paths(flatpakdir, get_option('datadir'), 'glib-2.0/schemas')
message('Will install gnome-builder plugins for flatpak...')
ret = run_command(python_helper, 'venv', flatpakdir)
if ret.returncode() == 1
error('Failed to create vrtual env')
else
message('Created a virtual env for python requirements testing in flatpak')
endif
venv = join_paths(ret.stdout().strip(), 'bin/python')
flk_msg = ' in flatpak container'
else
scriptdir = join_paths(prefix, get_option('bindir'))
schemas_dir = join_paths(datadir, 'glib-2.0/schemas')
flk_msg = ''
endif
# include
gnome = import('gnome')
message('Will configure those plugin(s): @0@'.format(', '.join(plugins_list)))
subdir('src')
# check python required dependency
foreach key_module, require : python_requires
desc = key_module.split(':')
key = desc[0]
module = desc[1]
msg = ''
flk_inst = ':user'
if key == 'flk' and get_option('flatpak')
msg = flk_msg
flk_inst = flatpakdir
ret = run_command(venv, 'python_helper', 'require', module, require)
else
ret = run_command(python_helper, 'require', module, require)
endif # end check package
if ret.returncode() != 0
if ret.stdout() == ''
msg_out = 'Failed to find required python package @0@@1@'.format(module, msg)
else
msg_out = 'Find python package @0@=@1@@2@, but require version=@3@'.format(module, ret.stdout().strip(), msg, require)
endif # end format msg
if get_option('pip')
message(msg_out)
ret = run_command(
python_helper,
'install',
'@0@>=@1@'.format(module, require),
flk_inst
)
if ret.returncode() == 1
message(ret.stderr())
error('Failed to install @0@@1@'.format(module, msg))
else
message(ret.stdout().strip())
message('package @0@ successfully installed@1@'.format(module, msg))
endif
else
error(msg_out)
endif # end if install
else
message(
'Found python package @0@=@1@@2@'.format(module, ret.stdout().strip(),
msg)
)
endif # end if returncode
endforeach
#
meson.add_install_script('glib-compile-schemas', schemas_dir)