summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2017-05-30 07:28:27 +0000
committerngie <ngie@FreeBSD.org>2017-05-30 07:28:27 +0000
commitd8f677d335aa48afa79c8e5827da4c308be9e648 (patch)
tree224338088e9997844713927b1ad35176256d4117
parent2c4f7501e0865416b5e978f93a215a1707816f60 (diff)
downloadFreeBSD-src-d8f677d335aa48afa79c8e5827da4c308be9e648.zip
FreeBSD-src-d8f677d335aa48afa79c8e5827da4c308be9e648.tar.gz
MFC r306375,r307802:
r306375 (by emaste): Add a WITHOUT_DIALOG src.conf(5) knob It also turns off dependencies (bsdinstall, bsdconfig, dpv, tzsetup). r307802 (by bapt): Fix build of tzsetup when WITHOUT_DIALOG is set Hide dialog specific code behind HAVE_DIALOG. It allows to build a stripped down version (missing the dialog UI) but perfectly function tzsetup when world is built WITHOUT_DIALOG Reorganise a bit the code to limit the number of blocks under HAVE_DIALOG
-rw-r--r--Makefile.inc110
-rw-r--r--gnu/usr.bin/Makefile3
-rw-r--r--lib/Makefile3
-rw-r--r--share/mk/src.opts.mk5
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc19
-rw-r--r--tools/build/options/WITHOUT_DIALOG2
-rw-r--r--usr.bin/Makefile2
-rw-r--r--usr.sbin/Makefile2
-rw-r--r--usr.sbin/tzsetup/Makefile8
-rw-r--r--usr.sbin/tzsetup/tzsetup.c154
10 files changed, 142 insertions, 66 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index 451becc..b777ced 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -2049,8 +2049,7 @@ _prebuild_libs= ${_kerberos5_lib_libasn1} \
${_cddl_lib_libctf} \
lib/libutil lib/libpjdlog ${_lib_libypclnt} lib/libz lib/msun \
${_secure_lib_libcrypto} ${_lib_libldns} \
- ${_secure_lib_libssh} ${_secure_lib_libssl} \
- gnu/lib/libdialog
+ ${_secure_lib_libssh} ${_secure_lib_libssl}
.if ${MK_GNUCXX} != "no"
_prebuild_libs+= gnu/lib/libstdc++ gnu/lib/libsupc++
@@ -2058,6 +2057,11 @@ gnu/lib/libstdc++__L: lib/msun__L
gnu/lib/libsupc++__L: gnu/lib/libstdc++__L
.endif
+.if ${MK_DIALOG} != "no"
+_prebuild_libs+= gnu/lib/libdialog
+gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncursesw__L
+.endif
+
.if ${MK_LIBCPLUSPLUS} != "no"
_prebuild_libs+= lib/libc++
.endif
@@ -2204,8 +2208,6 @@ lib/libproc__L: gnu/lib/libsupc++__L
.endif
.endif
-gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncursesw__L
-
.for _lib in ${_prereq_libs}
${_lib}__PL: .PHONY .MAKE
.if exists(${.CURDIR}/${_lib})
diff --git a/gnu/usr.bin/Makefile b/gnu/usr.bin/Makefile
index 63cbd0b..6ba9ef2 100644
--- a/gnu/usr.bin/Makefile
+++ b/gnu/usr.bin/Makefile
@@ -4,7 +4,6 @@
SUBDIR= ${_binutils} \
${_cc} \
- dialog \
diff \
diff3 \
${_dtc} \
@@ -49,6 +48,8 @@ _gdb= gdb
_cc= cc
.endif
+SUBDIR.${MK_DIALOG}+= dialog
+
SUBDIR_PARALLEL=
.include <bsd.subdir.mk>
diff --git a/lib/Makefile b/lib/Makefile
index c9692c1..3a48482 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -46,7 +46,6 @@ SUBDIR= ${SUBDIR_BOOTSTRAP} \
libdevdctl \
libdevinfo \
libdevstat \
- libdpv \
libdwarf \
libedit \
${_libefivar} \
@@ -193,6 +192,8 @@ _libelftc= libelftc
_libpe= libpe
.endif
+SUBDIR.${MK_DIALOG}+= libdpv
+
.if ${MK_FILE} != "no"
_libmagic= libmagic
.endif
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index 4b8082d..d197044 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -76,6 +76,7 @@ __DEFAULT_YES_OPTIONS = \
CTM \
CUSE \
CXX \
+ DIALOG \
DICT \
DMAGENT \
DYNAMICROOT \
@@ -332,6 +333,10 @@ MK_GROFF:= no
MK_GNUCXX:= no
.endif
+.if ${MK_DIALOG} == "no"
+MK_BSDINSTALL:= no
+.endif
+
.if ${MK_MAIL} == "no"
MK_MAILWRAPPER:= no
MK_SENDMAIL:= no
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 384074d..d99828c 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -1581,6 +1581,25 @@ OLD_FILES+=usr/bin/g++
OLD_FILES+=usr/libexec/cc1plus
.endif
+.if ${MK_DIALOG} == no
+OLD_FILES+=usr/bin/dialog
+OLD_FILES+=usr/bin/dpv
+OLD_FILES+=usr/lib/libdialog.a
+OLD_FILES+=usr/lib/libdialog.so
+OLD_FILES+=usr/lib/libdialog.so.8
+OLD_FILES+=usr/lib/libdialog_p.a
+OLD_FILES+=usr/lib/libdpv.a
+OLD_FILES+=usr/lib/libdpv.so
+OLD_FILES+=usr/lib/libdpv.so.1
+OLD_FILES+=usr/lib/libdpv_p.a
+OLD_FILES+=usr/sbin/bsdconfig
+OLD_FILES+=usr/share/man/man1/dialog.1.gz
+OLD_FILES+=usr/share/man/man1/dpv.1.gz
+OLD_FILES+=usr/share/man/man3/dialog.3.gz
+OLD_FILES+=usr/share/man/man3/dpv.3.gz
+OLD_FILES+=usr/share/man/man8/bsdconfig.8.gz
+.endif
+
.if ${MK_FMTREE} == no
OLD_FILES+=usr/sbin/fmtree
OLD_FILES+=usr/share/man/man8/fmtree.8.gz
diff --git a/tools/build/options/WITHOUT_DIALOG b/tools/build/options/WITHOUT_DIALOG
new file mode 100644
index 0000000..f5bc508
--- /dev/null
+++ b/tools/build/options/WITHOUT_DIALOG
@@ -0,0 +1,2 @@
+.\" $FreeBSD$
+Set to not build dialog(1), dialog(1,3), and dpv(1,3).
diff --git a/usr.bin/Makefile b/usr.bin/Makefile
index ed68137..9105e963 100644
--- a/usr.bin/Makefile
+++ b/usr.bin/Makefile
@@ -36,7 +36,6 @@ SUBDIR= alias \
ctlstat \
cut \
dirname \
- dpv \
du \
elf2aout \
elfdump \
@@ -201,6 +200,7 @@ SUBDIR.${MK_BLUETOOTH}+= bluetooth
SUBDIR.${MK_BSD_CPIO}+= cpio
SUBDIR.${MK_CALENDAR}+= calendar
SUBDIR.${MK_CLANG}+= clang
+SUBDIR.${MK_DIALOG}+= dpv
SUBDIR.${MK_EE}+= ee
SUBDIR.${MK_FILE}+= file
SUBDIR.${MK_FINGER}+= finger
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile
index 7acf1a9..dc422bc 100644
--- a/usr.sbin/Makefile
+++ b/usr.sbin/Makefile
@@ -6,7 +6,6 @@
SUBDIR= adduser \
arp \
binmiscctl \
- bsdconfig \
camdd \
cdcontrol \
chkgrp \
@@ -123,6 +122,7 @@ SUBDIR.${MK_BOOTPARAMD}+= bootparamd
SUBDIR.${MK_BSDINSTALL}+= bsdinstall
SUBDIR.${MK_BSNMP}+= bsnmpd
SUBDIR.${MK_CTM}+= ctm
+SUBDIR.${MK_DIALOG}+= bsdconfig
SUBDIR.${MK_EFI}+= efivar efidp
SUBDIR.${MK_FLOPPY}+= fdcontrol
SUBDIR.${MK_FLOPPY}+= fdformat
diff --git a/usr.sbin/tzsetup/Makefile b/usr.sbin/tzsetup/Makefile
index de7375f..d6867a8 100644
--- a/usr.sbin/tzsetup/Makefile
+++ b/usr.sbin/tzsetup/Makefile
@@ -1,12 +1,16 @@
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= tzsetup
MAN= tzsetup.8
-CFLAGS+= -I${.CURDIR}/../../contrib/dialog -I.
+CFLAGS+= -I.
+.if ${MK_DIALOG} != no
WARNS?= 3
-
+CFLAGS+= -I${.CURDIR}/../../contrib/dialog -DHAVE_DIALOG
LIBADD= dialog ncursesw
+.endif
.include <bsd.prog.mk>
diff --git a/usr.sbin/tzsetup/tzsetup.c b/usr.sbin/tzsetup/tzsetup.c
index 4f0f2d0..2637924 100644
--- a/usr.sbin/tzsetup/tzsetup.c
+++ b/usr.sbin/tzsetup/tzsetup.c
@@ -49,7 +49,9 @@ __FBSDID("$FreeBSD$");
#include <sys/stat.h>
#include <sys/sysctl.h>
+#ifdef HAVE_DIALOG
#include <dialog.h>
+#endif
#define _PATH_ZONETAB "/usr/share/zoneinfo/zone.tab"
#define _PATH_ISO3166 "/usr/share/misc/iso3166"
@@ -72,6 +74,19 @@ __FBSDID("$FreeBSD$");
#define DITEM_LEAVE_MENU (1 << 16)
#define DITEM_RECREATE (1 << 18)
+static char path_zonetab[MAXPATHLEN], path_iso3166[MAXPATHLEN],
+ path_zoneinfo[MAXPATHLEN], path_localtime[MAXPATHLEN],
+ path_db[MAXPATHLEN], path_wall_cmos_clock[MAXPATHLEN];
+
+static int reallydoit = 1;
+static int reinstall = 0;
+static char *chrootenv = NULL;
+
+static void usage(void);
+static int install_zoneinfo(const char *zoneinfo);
+static int install_zoneinfo_file(const char *zoneinfo_file);
+
+#ifdef HAVE_DIALOG
/* for use in describing more exotic behaviors */
typedef struct dialogMenuItem {
char *prompt;
@@ -187,20 +202,10 @@ again:
return result;
}
-static char path_zonetab[MAXPATHLEN], path_iso3166[MAXPATHLEN],
- path_zoneinfo[MAXPATHLEN], path_localtime[MAXPATHLEN],
- path_db[MAXPATHLEN], path_wall_cmos_clock[MAXPATHLEN];
-
-static int reallydoit = 1;
-static int reinstall = 0;
static int usedialog = 1;
-static char *chrootenv = NULL;
-static void usage(void);
static int confirm_zone(const char *filename);
static int continent_country_menu(dialogMenuItem *);
-static int install_zoneinfo(const char *zoneinfo);
-static int install_zoneinfo_file(const char *zoneinfo_file);
static int set_zone_multi(dialogMenuItem *);
static int set_zone_whole_country(dialogMenuItem *);
static int set_zone_menu(dialogMenuItem *);
@@ -644,6 +649,53 @@ set_zone_utc(void)
}
static int
+confirm_zone(const char *filename)
+{
+ char title[64], prompt[64];
+ time_t t = time(0);
+ struct tm *tm;
+ int rv;
+
+ setenv("TZ", filename == NULL ? "" : filename, 1);
+ tzset();
+ tm = localtime(&t);
+
+ snprintf(title, sizeof(title), "Confirmation");
+ snprintf(prompt, sizeof(prompt),
+ "Does the abbreviation `%s' look reasonable?", tm->tm_zone);
+ rv = !dialog_yesno(title, prompt, 5, 72);
+ return (rv);
+}
+
+static int
+set_zone_multi(dialogMenuItem *dmi)
+{
+ struct zone *zp = dmi->data;
+ int rv;
+
+ if (!confirm_zone(zp->filename))
+ return (DITEM_FAILURE | DITEM_RECREATE);
+
+ rv = install_zoneinfo(zp->filename);
+ return (rv);
+}
+
+static int
+set_zone_whole_country(dialogMenuItem *dmi)
+{
+ struct country *cp = dmi->data;
+ int rv;
+
+ if (!confirm_zone(cp->filename))
+ return (DITEM_FAILURE | DITEM_RECREATE);
+
+ rv = install_zoneinfo(cp->filename);
+ return (rv);
+}
+
+#endif
+
+static int
install_zoneinfo_file(const char *zoneinfo_file)
{
char buf[1024];
@@ -672,9 +724,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Creating symbolic link %s to %s",
path_localtime, zoneinfo_file);
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
#endif
@@ -685,9 +739,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Could not delete %s: %s", path_localtime,
strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
@@ -697,9 +753,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Could not delete %s: %s", path_db,
strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
@@ -708,9 +766,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(title, sizeof(title), "Done");
snprintf(prompt, sizeof(prompt),
"Removed %s", path_localtime);
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
#endif
return (DITEM_LEAVE_MENU);
@@ -723,9 +783,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Could not open %s: %s", zoneinfo_file,
strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
}
@@ -734,10 +796,12 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Could not unlink %s: %s",
path_localtime, strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog) {
snprintf(title, sizeof(title), "Error");
dialog_msgbox(title, prompt, 8, 72, 1);
} else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
}
@@ -749,9 +813,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Could not open %s: %s",
path_localtime, strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
}
@@ -765,9 +831,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Error copying %s to %s %s", zoneinfo_file,
path_localtime, strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
/* Better to leave none than a corrupt one. */
unlink(path_localtime);
@@ -781,9 +849,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Cannot access %s: %s", zoneinfo_file,
strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
}
@@ -791,10 +861,12 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Could not unlink %s: %s",
path_localtime, strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog) {
snprintf(title, sizeof(title), "Error");
dialog_msgbox(title, prompt, 8, 72, 1);
} else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
}
@@ -804,9 +876,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
"Cannot create symbolic link %s to %s: %s",
path_localtime, zoneinfo_file,
strerror(errno));
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
return (DITEM_FAILURE | DITEM_RECREATE);
}
@@ -822,9 +896,11 @@ install_zoneinfo_file(const char *zoneinfo_file)
snprintf(prompt, sizeof(prompt),
"Created symbolic link from %s to %s",
zoneinfo_file, path_localtime);
+#ifdef HAVE_DIALOG
if (usedialog)
dialog_msgbox(title, prompt, 8, 72, 1);
else
+#endif
fprintf(stderr, "%s\n", prompt);
#endif
} /* reallydoit */
@@ -855,51 +931,6 @@ install_zoneinfo(const char *zoneinfo)
return (rv);
}
-static int
-confirm_zone(const char *filename)
-{
- char title[64], prompt[64];
- time_t t = time(0);
- struct tm *tm;
- int rv;
-
- setenv("TZ", filename == NULL ? "" : filename, 1);
- tzset();
- tm = localtime(&t);
-
- snprintf(title, sizeof(title), "Confirmation");
- snprintf(prompt, sizeof(prompt),
- "Does the abbreviation `%s' look reasonable?", tm->tm_zone);
- rv = !dialog_yesno(title, prompt, 5, 72);
- return (rv);
-}
-
-static int
-set_zone_multi(dialogMenuItem *dmi)
-{
- struct zone *zp = dmi->data;
- int rv;
-
- if (!confirm_zone(zp->filename))
- return (DITEM_FAILURE | DITEM_RECREATE);
-
- rv = install_zoneinfo(zp->filename);
- return (rv);
-}
-
-static int
-set_zone_whole_country(dialogMenuItem *dmi)
-{
- struct country *cp = dmi->data;
- int rv;
-
- if (!confirm_zone(cp->filename))
- return (DITEM_FAILURE | DITEM_RECREATE);
-
- rv = install_zoneinfo(cp->filename);
- return (rv);
-}
-
static void
usage(void)
{
@@ -912,8 +943,11 @@ usage(void)
int
main(int argc, char **argv)
{
+#ifdef HAVE_DIALOG
char title[64], prompt[128];
- int c, fd, rv, skiputc;
+ int fd;
+#endif
+ int c, rv, skiputc;
char vm_guest[16] = "";
size_t len = sizeof(vm_guest);
@@ -934,7 +968,9 @@ main(int argc, char **argv)
break;
case 'r':
reinstall = 1;
+#ifdef HAVE_DIALOG
usedialog = 0;
+#endif
break;
case 's':
skiputc = 1;
@@ -998,12 +1034,15 @@ main(int argc, char **argv)
struct stat sb;
if (stat(argv[optind], &sb) != 0) {
+#ifdef HAVE_DIALOG
usedialog = 0;
+#endif
rv = install_zoneinfo(argv[optind]);
exit(rv & ~DITEM_LEAVE_MENU);
}
/* FALLTHROUGH */
}
+#ifdef HAVE_DIALOG
read_iso3166_table();
read_zones();
@@ -1064,5 +1103,8 @@ main(int argc, char **argv)
dlg_clear();
end_dialog();
+#else
+ usage();
+#endif
return (0);
}
OpenPOWER on IntegriCloud