doc/user: generate the required package list for the CI distributions
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 15 Feb 2021 02:38:55 +0000 (12:38 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Mon, 15 Feb 2021 05:22:42 +0000 (15:22 +1000)
Use yq to extract the package list from the CI configuration, then dump that
into the user docs. This provides the long-requested commands to install all
dependencies without the maintenance effort or risk of going stale.

Note that we are *not* building this in the CI, it's just not needed.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
doc/user/building.rst
doc/user/dependencies.rst [new file with mode: 0644]
doc/user/meson.build

index c30003bc2f592c813b4309f6a1f8cb6e54e32fdf..c5cca454bef42517c118c396c00b4929055e1838 100644 (file)
@@ -224,6 +224,14 @@ found``.  See
 `this blog post here <https://who-t.blogspot.com/2018/07/meson-fails-with-native-dependency-not-found.html>`_
 for instructions on how to fix it.
 
+..............................................................................
+Build dependencies per distribution
+..............................................................................
+
+
+.. include:: dependencies.rst
+
+
 .. _building_conditional:
 
 ------------------------------------------------------------------------------
diff --git a/doc/user/dependencies.rst b/doc/user/dependencies.rst
new file mode 100644 (file)
index 0000000..4abec40
--- /dev/null
@@ -0,0 +1,21 @@
+.. warning:: The package lists are autogenerated from the `CI <https://gitlab.freedesktop.org/libinput/libinput/-/tree/master/.gitlab-ci.yml>`_.
+
+- Fedora: ::
+
+    dnf install @FEDORA_PACKAGES@
+
+- Ubuntu: ::
+
+    apt install @UBUNTU_PACKAGES@
+
+- Debian: ::
+
+    apt install @DEBIAN_PACKAGES@
+
+- Arch: ::
+
+    pacman -S @ARCH_PACKAGES@
+
+- Alpine: ::
+
+    apk add @ALPINE_PACKAGES@
index d2c0eb006e573da4b6eb0a40acdc5706fee8383c..ed4c7da8c049635d9c6e08f04be482153d16a0db 100644 (file)
@@ -4,6 +4,11 @@ if not sphinx.found()
        error('Program "sphinx-build" not found or not executable. Try building with -Ddocumentation=false')
 endif
 
+yq = find_program('yq', required : false)
+if not yq.found()
+       warning('Program "yq" not found or not executable. Dependency list will not be built.')
+endif
+
 sphinx_config = configuration_data()
 sphinx_config.set('PROJECT_NAME', meson.project_name())
 sphinx_config.set('PROJECT_VERSION', meson.project_version())
@@ -180,6 +185,19 @@ configure_file(input: 'index.rst',
               output: 'index.rst',
               configuration: sphinx_config)
 
+dependencies_config = configuration_data()
+if yq.found()
+       distributions = ['fedora', 'ubuntu', 'debian', 'arch', 'alpine']
+       foreach distro : distributions
+               yq_filter = '.distributions[] | select(.name == "@0@") | .packages | join(" ")'.format(distro)
+               deps = run_command(yq, '-r', yq_filter,
+                                  join_paths(meson.source_root(), '.gitlab-ci', 'config.yml')).stdout()
+               dependencies_config.set('@0@_PACKAGES'.format(distro.to_upper()), deps)
+endforeach
+endif
+configure_file(input: 'dependencies.rst',
+              output: 'dependencies.rst',
+              configuration: dependencies_config)
 
 # do not use -j, it breaks on Ubuntu
 sphinx_output_dir = 'Documentation'