/** @page building_libinput libinput build instructions @tableofcontents Instructions on how to build libinput and its tools and how to build against libinput. The build instruction on this page detail how to overwrite your system-provided libinput with one from the git repository, see see @ref reverting_install to revert to the previous state. @section building Building libinput libinput uses [meson](https://www.mesonbuild.com) and [ninja](https://www.ninja-build.org). A build is usually the three-step process below. A successful build requires the @ref building_dependencies to be installed before running meson. @code $> git clone https://gitlab.freedesktop.org/libinput/libinput $> cd libinput $> meson --prefix=/usr builddir/ $> ninja -C builddir/ $> sudo ninja -C builddir/ install $> sudo udevadm hwdb --update @endcode Additional options may also be specified. For example: @code $> meson --prefix=/usr -Ddocumentation=false builddir/ @endcode We recommend that users disable the documentation, it's not usually required for testing and reduces the number of dependencies needed. The ```prefix``` or other options can be changed later with the ```mesonconf``` command. For example: @code $> mesonconf builddir/ -Dprefix=/some/other/prefix -Ddocumentation=true $> ninja -C builddir $> sudo ninja -C builddir/ install @endcode Running ``mesonconf builddir/`` with no other arguments lists all configurable options meson provides. To rebuild from scratch, simply remove the build directory and run meson again: @code $> rm -r builddir/ $> meson --prefix=.... @endcode @subsection verifying_install Verifying the install To verify the install worked correctly, check that libinput.so.x.x.x is in the library path and that all symlinks point to the new library.
$> ls -l /usr/lib64/libinput.* -rwxr-xr-x 1 root root 946 Apr 28 2015 /usr/lib64/libinput.la lrwxrwxrwx 1 root root 19 Feb 1 15:12 /usr/lib64/libinput.so -> libinput.so.10.13.0 lrwxrwxrwx 1 root root 19 Feb 1 15:12 /usr/lib64/libinput.so.10 -> libinput.so.10.13.0 -rwxr-xr-x 1 root root 204992 Feb 1 15:12 /usr/lib64/libinput.so.10.13.0@subsection reverting_install Reverting to the system-provided libinput package The recommended way to revert to the system install is to use the package manager to reinstall the libinput package. In some cases, this may leave files in the system (e.g. ```/usr/lib/libinput.la```) but these files are usually harmless. To definitely remove all files, run the following command from the libinput source directory: @code $> sudo ninja -C builddir/ uninstall # WARNING: Do not restart the computer/X/the Wayland compositor after # uninstall, reinstall the system package immediately! @endcode The following commands reinstall the current system package for libinput, overwriting manually installed files.
May 25 15:28:42 localhost.localdomain audit[23268]: AVC avc: denied { execute } for pid=23268 comm="gnome-shell" path="/usr/lib64/libinput.so.10.12.2" dev="dm-0" ino=1709093 scontext=system_u:system_r:xdm_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0
May 25 15:28:42 localhost.localdomain org.gnome.Shell.desktop[23270]: /usr/bin/gnome-shell: error while loading shared libraries: libinput.so.10: failed to map segment from shared object
The summary of this error message is that gdm's gnome-shell runs in the
```system_u:system_r:xdm_t``` context but libinput is installed with the
context ```unconfined_u:object_r:user_home_t```.
To avoid this issue, restore the SELinux context for any system files.
$> sudo restorecon /usr/lib*/libinput.so.*This issue is tracked in https://github.com/mesonbuild/meson/issues/1967. @subsection building_dependencies Build dependencies libinput has a few build-time dependencies that must be installed prior to running configure. @note The build dependencies for some distributions can be found in the GitLab Continuous Integration file. Search for FEDORA_RPMS in the variables: definition and check the list for an entry for your distribution. In most cases, it is sufficient to install the dependencies that your distribution uses to build the libinput package. These can be installed with one of the following commands:
$> sudo zypper modifyrepo --enable `zypper repos | grep source | awk '{print $5}'`
$> sudo zypper source-install -d libinput10
$> sudo zypper install autoconf automake libtool
$> sudo zypper modifyrepo --disable `zypper repos | grep source | awk '{print $5}'`
$> sudo pacman -S asp $> cd $(mktemp -d) $> asp export libinput $> cd libinput $> makepkg --syncdeps --nobuild --noextract