meson: Add xkb_bin_dir option

Now that we can actually configure all of the directories xkb uses for
finding things, we can (finally, but only with meson) finally make it so
that with the correct meson configuration the Xserver will "just work"
without any additional changes to the installation prefix after
building.

For the people like me who have since scripted this part out of their
build process and forgotten about it, building and installing the X
server into a non-standard prefix has always required the following (or
something else that makes sure that X has a valid xkbcomp configuration)
commands be run right after doing the installation:

	# start in root of prefix you installed X to
	mkdir -pv share/X11/xkb/rules
	ln -s /usr/share/X11/xkb/rules/evdev share/X11/xkb/rules/
	rm -f bin/xkbcomp
	ln -s /usr/bin/xkbcomp bin/

The one last piece of getting rid of this post-install junk is making
sure that we can control the directory that X uses for finding the
xkbcomp binary from meson so we can point it at the system provided
xkbcomp (/usr/bin/xkbcomp or similar). So, this patch adds a
configuration option for controlling this called xkb_bin_dir.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Lyude Paul 2017-10-11 18:03:45 -04:00 committed by Adam Jackson
parent b747da5e25
commit 10cba7d546
3 changed files with 7 additions and 1 deletions

View File

@ -219,7 +219,7 @@ configure_file(output : 'version-config.h',
xkb_data = configuration_data()
xkb_data.set_quoted('XKB_BIN_DIRECTORY', join_paths(get_option('prefix'), get_option('bindir')))
xkb_data.set_quoted('XKB_BIN_DIRECTORY', xkb_bin_dir)
xkb_data.set_quoted('XKB_BASE_DIRECTORY', xkb_dir)
xkb_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules'))
xkb_data.set_quoted('XKB_DFLT_MODEL', get_option('xkb_default_model'))

View File

@ -107,6 +107,11 @@ if xkb_output_dir == ''
xkb_output_dir = join_paths(get_option('prefix'), 'share/X11/xkb/compiled')
endif
xkb_bin_dir = get_option('xkb_bin_dir')
if xkb_bin_dir == ''
xkb_bin_dir = join_paths(get_option('prefix'), get_option('bindir'))
endif
hal_option = get_option('hal')
glamor_option = get_option('glamor')

View File

@ -29,6 +29,7 @@ option('ipv6', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto')
option('xkb_dir', type: 'string')
option('xkb_output_dir', type: 'string')
option('xkb_bin_dir', type: 'string')
option('xkb_default_rules', type: 'string', value: 'evdev')
option('xkb_default_model', type: 'string', value: 'pc105')
option('xkb_default_layout', type: 'string', value: 'us')