summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/base-passwd/base-passwd/0006-Make-it-possible-to-build-without-debconf-support.patch
blob: 6e236993f51dfd6ecde5b94f2bdbd4d3d8dea386 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
From 236d6c8c0dd7e15d9a9795813b94bc87ce09eec5 Mon Sep 17 00:00:00 2001
From: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Date: Fri, 29 Apr 2022 19:32:29 +0200
Subject: [PATCH] Make it possible to build without debconf support

Not all systems have the debconfclient library available.

Upstream-Status: Backport [https://salsa.debian.org/debian/base-passwd/-/commit/c72aa5dd25a952da25e307761f4526db2c8c39ec]
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
 Makefile.am     |  1 -
 configure.ac    | 13 +++++++++++++
 update-passwd.c | 15 +++++++++++++++
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/Makefile.am b/Makefile.am
index 223916f..4bdd769 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,7 +3,6 @@ SUBDIRS = doc man
 sbin_PROGRAMS = update-passwd
 
 update_passwd_SOURCES = update-passwd.c
-update_passwd_LDADD = -ldebconfclient
 
 pkgdata_DATA = passwd.master group.master
 
diff --git a/configure.ac b/configure.ac
index 9d1ace5..1e35ad1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -14,6 +14,19 @@ AC_SYS_LARGEFILE
 dnl Scan for things we need
 AC_CHECK_FUNCS([putgrent])
 
+dnl Check for debconf
+AC_MSG_CHECKING([whether to enable debconf support])
+AC_ARG_ENABLE([debconf],
+  [AS_HELP_STRING([--disable-debconf], [disable support for debconf])],
+  [],
+  [enable_debconf=yes])
+AC_MSG_RESULT($enable_debconf)
+AS_IF([test "x$enable_debconf" != xno],
+  [AC_CHECK_LIB([debconfclient], [debconfclient_new], [],
+    [AC_MSG_ERROR(
+      [debconf support not available (use --disable-debconf to disable)])])
+   AC_DEFINE([HAVE_DEBCONF], [1], [Define if you have libdebconfclient])])
+
 dnl Finally output everything
 AC_CONFIG_FILES([Makefile doc/Makefile man/Makefile])
 AC_OUTPUT
diff --git a/update-passwd.c b/update-passwd.c
index 3f3dffa..5b49740 100644
--- a/update-passwd.c
+++ b/update-passwd.c
@@ -39,7 +39,9 @@
 #include <stdarg.h>
 #include <ctype.h>
 
+#ifdef HAVE_DEBCONF
 #include <cdebconf/debconfclient.h>
+#endif
 
 #define DEFAULT_PASSWD_MASTER	"/usr/share/base-passwd/passwd.master"
 #define DEFAULT_GROUP_MASTER	"/usr/share/base-passwd/group.master"
@@ -143,6 +145,7 @@ int		flag_debconf	= 0;
 const char*	user_domain	= DEFAULT_DEBCONF_DOMAIN;
 const char*	group_domain	= DEFAULT_DEBCONF_DOMAIN;
 
+#ifdef HAVE_DEBCONF
 struct debconfclient*	debconf	= NULL;
 
 /* Abort the program if talking to debconf fails.  Use ret exactly once. */
@@ -162,6 +165,10 @@ struct debconfclient*	debconf	= NULL;
     DEBCONF_CHECK(debconf_register(debconf, (template), (question)))
 #define DEBCONF_SUBST(question, var, value) \
     DEBCONF_CHECK(debconf_subst(debconf, (question), (var), (value)))
+#else
+#define DEBCONF_REGISTER(template, question)
+#define DEBCONF_SUBST(question, var, value)
+#endif
 
 
 /* malloc() with out-of-memory checking.
@@ -621,6 +628,7 @@ void version() {
  * flag.  Aborts the problem on any failure.
  */
 int ask_debconf(const char* priority, const char* question) {
+#ifdef HAVE_DEBCONF
     int		ret;
     const char*	response;
 
@@ -640,6 +648,9 @@ int ask_debconf(const char* priority, const char* question) {
 	return 1;
     else
 	return 0;
+#else
+	return 0;
+#endif
 }
 
 
@@ -1427,6 +1438,7 @@ int main(int argc, char** argv) {
     /* If DEBIAN_HAS_FRONTEND is set in the environment, we're running under
      * debconf.  Enable debconf prompting unless --dry-run was also given.
      */
+#ifdef HAVE_DEBCONF
     if (getenv("DEBIAN_HAS_FRONTEND")!=NULL && !opt_dryrun) {
 	debconf=debconfclient_new();
 	if (debconf==NULL) {
@@ -1435,6 +1447,7 @@ int main(int argc, char** argv) {
 	}
 	flag_debconf=1;
     }
+#endif
 
     if (read_passwd(&master_accounts, master_passwd)!=0)
 	return 2;
@@ -1480,8 +1493,10 @@ int main(int argc, char** argv) {
 	if (!unlock_files())
 	    return 5;
 
+#ifdef HAVE_DEBCONF
     if (debconf!=NULL)
 	debconfclient_delete(debconf);
+#endif
 
     if (opt_dryrun)
 	return flag_dirty;