tuhi/meson.build

184 lines
6.0 KiB
Meson

project('tuhi',
version: '0.3',
license: 'GPLv2',
meson_version: '>= 0.48.0')
# The tag date of the project_version(), update when the version bumps.
version_date='2019-09-12'
# Dependencies
dependency('python3', required: true)
dependency('pygobject-3.0', required: true)
prefix = get_option('prefix')
datadir = join_paths(prefix, get_option('datadir'))
localedir = join_paths(prefix, get_option('localedir'))
pkgdatadir = join_paths(datadir, meson.project_name())
bindir = join_paths(prefix, get_option('bindir'))
podir = join_paths(meson.source_root(), 'po')
desktopdir = join_paths(datadir, 'applications')
icondir = join_paths(datadir, 'icons', 'hicolor')
icondir_scalable = join_paths(icondir, 'scalable', 'apps')
icondir_symbolic = join_paths(icondir, 'symbolic', 'apps')
metainfodir = join_paths(datadir, 'metainfo')
libexecdir = join_paths(get_option('prefix'), get_option('libexecdir'), 'tuhi')
i18n = import('i18n')
subdir('po')
subdir('data')
pymod = import('python')
# external python modules that are required for running Tuhi
python_modules = [
'svgwrite',
'xdg',
'gi',
'yaml',
]
if meson.version().version_compare('>=0.51')
py3 = pymod.find_installation(modules: python_modules)
else
py3 = pymod.find_installation()
foreach module: python_modules
if run_command(py3, '-c', 'import @0@'.format(module)).returncode() != 0
error('Failed to find required python module \'@0@\'.'.format(module))
endif
endforeach
endif
python_dir = py3.get_install_dir()
install_subdir('tuhi',
install_dir: python_dir,
exclude_directories: '__pycache__')
# We have three startup scripts:
# - tuhi: starts server and GUI
# - tuhi-gui: starts the GUI only
# - tuhi-server: starts the server only
#
# tuhi-server can run as-is, we don't need meson for it. But for the other
# two we build a {name}.devel version that uses the in-tree files.
# For that we need to replace a few paths, in the installed versions we just
# use the normal dirs.
#
config_tuhi = configuration_data()
config_tuhi.set('libexecdir', libexecdir)
config_tuhi.set('devel', '')
config_tuhi_devel = configuration_data()
config_tuhi_devel.set('libexecdir', '')
config_tuhi_devel.set('devel', '''
tuhi_gui = '@1@/tuhi-gui.devel'
tuhi_server = '@0@/tuhi-server.py'
tuhi_live = '@0@/tuhi-live.py'
print('Running from source tree, using local files')
'''.format(meson.source_root(), meson.build_root()))
config_tuhigui = configuration_data()
config_tuhigui.set('pkgdatadir', pkgdatadir)
config_tuhigui.set('localedir', localedir)
config_tuhigui.set('devel', '')
config_tuhigui_devel = config_tuhigui
config_tuhigui_devel.set('pkgdatadir', join_paths(meson.build_root(), 'data'))
config_tuhigui_devel.set('localedir', join_paths(meson.build_root(), 'po'))
config_tuhigui_devel.set('devel', '''
sys.path.insert(1, '@0@')
print('Running from source tree, using local files')
'''.format(meson.source_root(), meson.build_root()))
configure_file(input: 'tuhi.in',
output: 'tuhi',
configuration: config_tuhi,
install_dir: bindir)
configure_file(input: 'tuhi.in',
output: 'tuhi.devel',
configuration: config_tuhi_devel)
configure_file(input: 'tuhi-gui.in',
output: 'tuhi-gui',
configuration: config_tuhigui,
install_dir: libexecdir)
configure_file(input: 'tuhi-gui.in',
output: 'tuhi-gui.devel',
configuration: config_tuhigui_devel)
configure_file(input: 'tuhi-server.py',
output: 'tuhi-server',
copy: true,
install_dir: libexecdir)
configure_file(input: 'tuhi-live.py',
output: 'tuhi-live',
copy: true,
install_dir: libexecdir)
meson.add_install_script('meson_install.sh')
desktop_file = i18n.merge_file(input: 'data/org.freedesktop.Tuhi.desktop.in',
output: 'org.freedesktop.Tuhi.desktop',
type: 'desktop',
po_dir: podir,
install: true,
install_dir: desktopdir)
conf = configuration_data()
conf.set('version', meson.project_version())
conf.set('url', 'https://github.com/tuhiproject/tuhi')
conf.set('version_date', version_date)
appdata_intl = configure_file(input: 'data/org.freedesktop.Tuhi.appdata.xml.in.in',
output: 'org.freedesktop.Tuhi.appdata.xml.in',
configuration: conf)
appdata = i18n.merge_file(input: appdata_intl,
output: 'org.freedesktop.Tuhi.appdata.xml',
type: 'xml',
po_dir: podir,
install: true,
install_dir: metainfodir)
install_data('data/org.freedesktop.Tuhi.svg', install_dir: icondir)
flake8 = find_program('flake8-3', required: false)
if flake8.found()
test('flake8', flake8,
args: ['--ignore=E501,W504',
join_paths(meson.source_root(), 'tuhi'),
join_paths(meson.source_root(), 'tuhi', 'gui')])
test('flake8-tools', flake8,
args: ['--ignore=E501,W504',
join_paths(meson.source_root(), 'tools')])
# the tests need different flake exclusions
test('flake8-tests', flake8,
args: ['--ignore=E501,W504,F403,F405',
join_paths(meson.source_root(), 'test/')])
endif
desktop_validate = find_program('desktop-file-validate', required: false)
if desktop_validate.found()
test('desktop-file-validate', desktop_validate, args: [desktop_file])
endif
appstream_util = find_program('appstream-util', required: false)
if appstream_util.found()
test('appstream-util validate-relax', appstream_util,
args: ['validate-relax', appdata])
endif
pytest = find_program('pytest-3', required: false)
if pytest.found()
test('unittest', pytest,
args: [join_paths(meson.source_root(), 'test')],
timeout: 180)
endif
# A wrapper to start tuhi at the same time as tuhigui, used by the flatpak
configure_file(input: 'tools/tuhi-gui-flatpak.py',
output: 'tuhi-gui-flatpak.py',
copy: true)