From b656ca4b6c2a0d5b6cebd7f7daa679352f664e0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net>
Date: Tue, 30 Nov 2021 02:53:23 +0100
Subject: [PATCH] doc: make upload target dependency on rsync optional

Currently, rsync is an unconditional dependency and checked during
`meson configure`. As such, the build will fail if rsync is not
installed which is probably not what was intended here.

From the meson documentation:

	Meson will automatically insert the appropriate dependencies on
	targets and files listed in this keyword [the command] argument.

This commit fixes the unconditional dependency on rsync with an explicit
find_program invocation with `required: false`. Also wrap the
custom_target in an if statement since it is not allowed to use
non-found external programs in `command`.
---
 doc/meson.build | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/doc/meson.build b/doc/meson.build
index f9475da..62529f8 100644
--- a/doc/meson.build
+++ b/doc/meson.build
@@ -8,17 +8,20 @@ sphinx_output = custom_target(
   install_dir: join_paths(get_option('datadir'), 'doc', meson.project_name()),
 )
 
-custom_target(
-  'upload',
-  input: sphinx_output,
-  output: 'upload',
-  build_always_stale: true,
-  command: [
-    'rsync', '-vpruz', '--delete', '@INPUT@',
-    'www.musicpd.org:/var/www/mpd/doc/mpc/',
-    '--chmod=a+rX',
-  ],
-)
+rsync = find_program('rsync', required: false)
+if rsync.found()
+  custom_target(
+    'upload',
+    input: sphinx_output,
+    output: 'upload',
+    build_always_stale: true,
+    command: [
+      rsync, '-vpruz', '--delete', '@INPUT@',
+      'www.musicpd.org:/var/www/mpd/doc/mpc/',
+      '--chmod=a+rX',
+    ],
+  )
+endif
 
 custom_target(
   'Manpage documentation',
-- 
2.35.1

