From 44d71910ee405a6274d9ae23ce961c7694d12610 Mon Sep 17 00:00:00 2001
From: Mart Raudsepp <leio@gentoo.org>
Date: Sun, 12 Jul 2020 13:02:08 +0300
Subject: [PATCH 5/6] Fix absolute paths to be dependent on build configuration

Most of this should be upstreamable, except for maybe LIBEXECDIR bits,
as the old value may not match for `--prefix /` builds with new value.
---
 panels/datetime/meson.build         | 1 +
 panels/datetime/tz.h                | 4 ++--
 panels/printers/meson.build         | 5 +++++
 panels/printers/pp-host.c           | 2 +-
 panels/printers/pp-options-dialog.c | 2 +-
 panels/user-accounts/meson.build    | 1 +
 panels/user-accounts/run-passwd.c   | 2 +-
 7 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/panels/datetime/meson.build b/panels/datetime/meson.build
index 65683941f..1f3e30010 100644
--- a/panels/datetime/meson.build
+++ b/panels/datetime/meson.build
@@ -171,6 +171,7 @@ deps = common_deps + [
 ]
 
 cflags += [
+  '-DDATADIR="@0@"'.format(control_center_datadir),
   '-DGNOMECC_DATA_DIR="@0@"'.format(control_center_pkgdatadir)
 ]
 
diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h
index a2376f8a4..747c1d558 100644
--- a/panels/datetime/tz.h
+++ b/panels/datetime/tz.h
@@ -28,9 +28,9 @@
 G_BEGIN_DECLS
 
 #ifndef __sun
-#  define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
+#  define TZ_DATA_FILE DATADIR "/zoneinfo/zone.tab"
 #else
-#  define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
+#  define TZ_DATA_FILE DATADIR "/lib/zoneinfo/tab/zone_sun.tab"
 #endif
 
 typedef struct _TzDB TzDB;
diff --git a/panels/printers/meson.build b/panels/printers/meson.build
index ccce64cb7..c9b3a52ce 100644
--- a/panels/printers/meson.build
+++ b/panels/printers/meson.build
@@ -66,6 +66,11 @@ deps = common_deps + [
   dependency('smbclient')
 ]
 
+cflags += [
+  '-DDATADIR="@0@"'.format(control_center_datadir),
+  '-DLIBEXECDIR="@0@"'.format(control_center_libexecdir)
+]
+
 printers_panel_lib = static_library(
   cappletname,
   sources: sources,
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index a31a606e3..049fb9249 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask        *task,
   devices = g_ptr_array_new_with_free_func (g_object_unref);
 
   argv = g_new0 (gchar *, 3);
-  argv[0] = g_strdup ("/usr/lib/cups/backend/snmp");
+  argv[0] = g_strdup (LIBEXECDIR "/cups/backend/snmp");
   argv[1] = g_strdup (priv->hostname);
 
   /* Use SNMP to get printer's informations */
diff --git a/panels/printers/pp-options-dialog.c b/panels/printers/pp-options-dialog.c
index 59229cd48..0986536a1 100644
--- a/panels/printers/pp-options-dialog.c
+++ b/panels/printers/pp-options-dialog.c
@@ -829,7 +829,7 @@ test_page_cb (PpOptionsDialog *self)
 
   if (self->printer_name)
     {
-      const gchar      *const dirs[] = { "/usr/share/cups",
+      const gchar      *const dirs[] = { DATADIR "/cups",
                                          "/usr/local/share/cups",
                                          NULL };
       const gchar      *datadir = NULL;
diff --git a/panels/user-accounts/meson.build b/panels/user-accounts/meson.build
index 4375d3816..58876ba5e 100644
--- a/panels/user-accounts/meson.build
+++ b/panels/user-accounts/meson.build
@@ -190,6 +190,7 @@ endif
 
 cflags += [
   '-DGNOMELOCALEDIR="@0@"'.format(control_center_localedir),
+  '-DBINDIR="@0@"'.format(control_center_bindir),
   '-DHAVE_LIBPWQUALITY',
   '-DUM_PIXMAP_DIR="@0@"'.format(join_paths(control_center_pkgdatadir, 'pixmaps'))
 ]
diff --git a/panels/user-accounts/run-passwd.c b/panels/user-accounts/run-passwd.c
index 86f53d4fc..d6dfbffa0 100644
--- a/panels/user-accounts/run-passwd.c
+++ b/panels/user-accounts/run-passwd.c
@@ -150,7 +150,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error)
         gchar  **envp;
         gint    my_stdin, my_stdout, my_stderr;
 
-        argv[0] = "/usr/bin/passwd";    /* Is it safe to rely on a hard-coded path? */
+        argv[0] = BINDIR "/passwd";    /* Is it safe to rely on a hard-coded path? */
         argv[1] = NULL;
 
         envp = g_get_environ ();
-- 
2.32.0

