summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authorblackend <blackend@FreeBSD.org>2009-06-28 08:59:46 +0000
committerblackend <blackend@FreeBSD.org>2009-06-28 08:59:46 +0000
commite32c401685c4415341818d7f785b56cecc712b70 (patch)
treec82be5301366ca35613d0ddffd5c2b14570f9af1 /usr.sbin
parent25ffa6178c929df93fd0e0ca37ad532423b11a6d (diff)
downloadFreeBSD-src-e32c401685c4415341818d7f785b56cecc712b70.zip
FreeBSD-src-e32c401685c4415341818d7f785b56cecc712b70.tar.gz
- release/* update to use freebsd-doc-* packages instead of building
FreeBSD docset during 'make release' this will speed up release builds; - sysinstall(8) has also been updated to use these packages with a new menu allowing people to choose what localized doc to install; - mention in UPDATING that docs from the FreeBSD Documentation project are now installed in /usr/local/share/doc/freebsd instead of /usr/share/doc. Approved by: re (kensmith)
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/sysinstall/dist.c104
-rw-r--r--usr.sbin/sysinstall/dist.h27
-rw-r--r--usr.sbin/sysinstall/doc.c6
-rw-r--r--usr.sbin/sysinstall/menus.c81
-rw-r--r--usr.sbin/sysinstall/sysinstall.h5
5 files changed, 211 insertions, 12 deletions
diff --git a/usr.sbin/sysinstall/dist.c b/usr.sbin/sysinstall/dist.c
index c3ec4c1..c48d5b8 100644
--- a/usr.sbin/sysinstall/dist.c
+++ b/usr.sbin/sysinstall/dist.c
@@ -44,6 +44,7 @@
#include <libutil.h>
unsigned int Dists;
+unsigned int DocDists;
unsigned int SrcDists;
unsigned int KernelDists;
@@ -60,6 +61,7 @@ typedef struct _dist {
} my_data;
} Distribution;
+static Distribution DocDistTable[];
static Distribution KernelDistTable[];
static Distribution SrcDistTable[];
@@ -77,7 +79,8 @@ static Distribution SrcDistTable[];
static Distribution DistTable[] = {
DTE_TARBALL("base", &Dists, BASE, "/"),
DTE_SUBDIST("kernels", &Dists, KERNEL, KernelDistTable),
- DTE_TARBALL("doc", &Dists, DOC, "/"),
+ DTE_TARBALL("doc", &Dists, DOCUSERLAND, "/"),
+ DTE_SUBDIST("docproj", &Dists, DOC, DocDistTable),
DTE_TARBALL("games", &Dists, GAMES, "/"),
DTE_TARBALL("manpages", &Dists, MANPAGES, "/"),
DTE_TARBALL("catpages", &Dists, CATPAGES, "/"),
@@ -128,6 +131,30 @@ static Distribution SrcDistTable[] = {
DTE_END,
};
+/* The Documentation distribution */
+static Distribution DocDistTable[] = {
+ DTE_PACKAGE("Bengali Documentation", &DocDists, DOC_BN, "bn-freebsd-doc"),
+ DTE_PACKAGE("Danish Documentation", &DocDists, DOC_DA, "da-freebsd-doc"),
+ DTE_PACKAGE("German Documentation", &DocDists, DOC_DE, "de-freebsd-doc"),
+ DTE_PACKAGE("Greek Documentation", &DocDists, DOC_EL, "el-freebsd-doc"),
+ DTE_PACKAGE("English Documentation", &DocDists, DOC_EN, "en-freebsd-doc"),
+ DTE_PACKAGE("Spanish Documentation", &DocDists, DOC_ES, "es-freebsd-doc"),
+ DTE_PACKAGE("French Documentation", &DocDists, DOC_FR, "fr-freebsd-doc"),
+ DTE_PACKAGE("Hungarian Documentation", &DocDists, DOC_HU, "hu-freebsd-doc"),
+ DTE_PACKAGE("Italian Documentation", &DocDists, DOC_IT, "it-freebsd-doc"),
+ DTE_PACKAGE("Japanese Documentation", &DocDists, DOC_JA, "ja-freebsd-doc"),
+ DTE_PACKAGE("Mongolian Documentation", &DocDists, DOC_MN, "mn-freebsd-doc-mn"),
+ DTE_PACKAGE("Dutch Documentation", &DocDists, DOC_NL, "nl-freebsd-doc"),
+ DTE_PACKAGE("Polish Documentation", &DocDists, DOC_PL, "pl-freebsd-doc"),
+ DTE_PACKAGE("Portuguese Documentation", &DocDists, DOC_PT, "pt-freebsd-doc"),
+ DTE_PACKAGE("Russian Documentation", &DocDists, DOC_RU, "ru-freebsd-doc"),
+ DTE_PACKAGE("Serbian Documentation", &DocDists, DOC_SR, "sr-freebsd-doc"),
+ DTE_PACKAGE("Turkish Documentation", &DocDists, DOC_TR, "tr-freebsd-doc"),
+ DTE_PACKAGE("Simplified Chinese Documentation", &DocDists, DOC_ZH_CN, "zh_cn-freebsd-doc"),
+ DTE_PACKAGE("Traditional Chinese Documentation", &DocDists, DOC_ZH_TW, "zh_tw-freebsd-doc"),
+ DTE_END,
+};
+
static int distMaybeSetPorts(dialogMenuItem *self);
static void
@@ -137,15 +164,18 @@ distVerifyFlags(void)
Dists |= DIST_SRC;
if (KernelDists)
Dists |= DIST_KERNEL;
+ if (DocDists)
+ Dists |= DIST_DOC;
if (isDebug())
- msgDebug("Dist Masks: Dists: %0x, Srcs: %0x Kernels: %0x\n", Dists,
- SrcDists, KernelDists);
+ msgDebug("Dist Masks: Dists: %0x, Srcs: %0x Kernels: %0x Docs: %0x\n", Dists,
+ SrcDists, KernelDists, DocDists);
}
int
distReset(dialogMenuItem *self)
{
Dists = 0;
+ DocDists = 0;
SrcDists = 0;
KernelDists = 0;
return DITEM_SUCCESS | DITEM_REDRAW;
@@ -161,6 +191,9 @@ distConfig(dialogMenuItem *self)
if ((cp = variable_get(VAR_DIST_MAIN)) != NULL)
Dists = atoi(cp);
+ if ((cp = variable_get(VAR_DIST_DOC)) != NULL)
+ DocDists = atoi(cp);
+
if ((cp = variable_get(VAR_DIST_SRC)) != NULL)
SrcDists = atoi(cp);
@@ -191,7 +224,8 @@ distSetDeveloper(dialogMenuItem *self)
Dists = _DIST_DEVELOPER;
SrcDists = DIST_SRC_ALL;
KernelDists = selectKernel();
- i = distMaybeSetPorts(self);
+ i = distSetDoc(self);
+ i |= distMaybeSetPorts(self);
distVerifyFlags();
return i;
}
@@ -205,7 +239,8 @@ distSetKernDeveloper(dialogMenuItem *self)
Dists = _DIST_DEVELOPER;
SrcDists = DIST_SRC_SYS | DIST_SRC_BASE;
KernelDists = selectKernel();
- i = distMaybeSetPorts(self);
+ i = distSetDoc(self);
+ i |= distMaybeSetPorts(self);
distVerifyFlags();
return i;
}
@@ -218,7 +253,8 @@ distSetUser(dialogMenuItem *self)
distReset(NULL);
Dists = _DIST_USER;
KernelDists = selectKernel();
- i = distMaybeSetPorts(self);
+ i = distSetDoc(self);
+ i |= distMaybeSetPorts(self);
distVerifyFlags();
return i;
}
@@ -241,6 +277,7 @@ distSetEverything(dialogMenuItem *self)
Dists = DIST_ALL;
SrcDists = DIST_SRC_ALL;
KernelDists = DIST_KERNEL_ALL;
+ DocDists = DIST_DOC_ALL;
i = distMaybeSetPorts(self);
distVerifyFlags();
return i | DITEM_REDRAW;
@@ -741,6 +778,61 @@ distExtract(char *parent, Distribution *me)
return status;
}
+int
+distSetDoc(dialogMenuItem *self)
+{
+ int i;
+
+ dialog_clear_norefresh();
+ if (!dmenuOpenSimple(&MenuDocInstall, FALSE))
+ i = DITEM_FAILURE;
+ else
+ i = DITEM_SUCCESS;
+
+ distVerifyFlags();
+
+ return i | DITEM_RESTORE;
+}
+
+int
+distSetDocMenu(dialogMenuItem *self)
+{
+ int i, status;
+ WINDOW *w;
+
+ if (RunningAsInit && !strstr(variable_get(SYSTEM_STATE), "install")) {
+ msgConfirm("This option may only be used after the system is installed, sorry!");
+ return DITEM_FAILURE;
+ }
+
+ dialog_clear_norefresh();
+ if (!dmenuOpenSimple(&MenuDocInstall, FALSE))
+ i = DITEM_FAILURE;
+ else
+ i = DITEM_SUCCESS;
+
+ distVerifyFlags();
+
+ dialog_clear_norefresh();
+ w = savescr();
+ msgNotify("Attempting to install all selected documentations...");
+
+ for (i = 0; DocDistTable[i].my_name; i++) {
+ if (!(DocDistTable[i].my_bit & *(DocDistTable[i].my_mask)))
+ continue;
+ dialog_clear_norefresh();
+ msgNotify("Installing %s distribution...", DocDistTable[i].my_name);
+ status = (package_add(DocDistTable[i].my_data.my_string) == DITEM_SUCCESS);
+ if (!status)
+ break;
+ }
+
+ dialog_clear_norefresh();
+
+ restorescr(w);
+ return (status ? DITEM_SUCCESS : DITEM_FAILURE);
+}
+
static void
printSelected(char *buf, int selected, Distribution *me, int *col)
{
diff --git a/usr.sbin/sysinstall/dist.h b/usr.sbin/sysinstall/dist.h
index 0eb42e1..59643ee 100644
--- a/usr.sbin/sysinstall/dist.h
+++ b/usr.sbin/sysinstall/dist.h
@@ -10,6 +10,7 @@
#define DIST_PROFLIBS 0x00008
#define DIST_DICT 0x00010
#define DIST_SRC 0x00020
+/* Documentation from FreeBSD docproj */
#define DIST_DOC 0x00040
#define DIST_INFO 0x00080
#define DIST_CATPAGES 0x00200
@@ -19,8 +20,32 @@
#define DIST_LIB32 0x01000
#endif
#define DIST_KERNEL 0x02000
+/* Userland documentation */
+#define DIST_DOCUSERLAND 0x04000
#define DIST_ALL 0xFFFFF
+/* Subtypes for DOC packages */
+#define DIST_DOC_BN 0x00001
+#define DIST_DOC_DA 0x00002
+#define DIST_DOC_DE 0x00004
+#define DIST_DOC_EL 0x00008
+#define DIST_DOC_EN 0x00010
+#define DIST_DOC_ES 0x00020
+#define DIST_DOC_FR 0x00040
+#define DIST_DOC_HU 0x00080
+#define DIST_DOC_IT 0x00100
+#define DIST_DOC_JA 0x00200
+#define DIST_DOC_MN 0x00400
+#define DIST_DOC_NL 0x00800
+#define DIST_DOC_PL 0x01000
+#define DIST_DOC_PT 0x02000
+#define DIST_DOC_RU 0x04000
+#define DIST_DOC_SR 0x08000
+#define DIST_DOC_TR 0x10000
+#define DIST_DOC_ZH_CN 0x20000
+#define DIST_DOC_ZH_TW 0x40000
+#define DIST_DOC_ALL 0xFFFFF
+
/* Subtypes for SRC distribution */
#define DIST_SRC_BASE 0x00001
#define DIST_SRC_CONTRIB 0x00002
@@ -53,7 +78,7 @@
/* Canned distribution sets */
#define _DIST_USER \
- ( DIST_BASE | DIST_KERNEL | DIST_DOC | DIST_MANPAGES | DIST_DICT )
+ ( DIST_BASE | DIST_KERNEL | DIST_DOC | DIST_DOCUSERLAND | DIST_MANPAGES | DIST_DICT )
#define _DIST_DEVELOPER \
( _DIST_USER | DIST_PROFLIBS | DIST_INFO | DIST_SRC )
diff --git a/usr.sbin/sysinstall/doc.c b/usr.sbin/sysinstall/doc.c
index 5294972..a35a68e 100644
--- a/usr.sbin/sysinstall/doc.c
+++ b/usr.sbin/sysinstall/doc.c
@@ -101,12 +101,12 @@ docShowDocument(dialogMenuItem *self)
strcpy(target, where);
}
else if (strstr(str, "FAQ")) {
- where = strcpy(target, "/usr/share/doc/faq/index.html");
+ where = strcpy(target, "/usr/local/share/doc/freebsd/faq/index.html");
if (!file_readable(target))
where = strcpy(target, "http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq");
}
else if (strstr(str, "Handbook")) {
- where = strcpy(target, "/usr/share/doc/handbook/index.html");
+ where = strcpy(target, "/usr/local/share/doc/freebsd/handbook/index.html");
if (!file_readable(target))
where = strcpy(target, "http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook");
}
@@ -117,7 +117,7 @@ docShowDocument(dialogMenuItem *self)
}
else {
msgConfirm("Hmmmmm! I can't seem to access the documentation you selected!\n"
- "Have you loaded the base distribution? Is your network connected?");
+ "Have you installed the english documentation? Is your network connected?");
return DITEM_FAILURE;
}
}
diff --git a/usr.sbin/sysinstall/menus.c b/usr.sbin/sysinstall/menus.c
index 152ad32..df54e17 100644
--- a/usr.sbin/sysinstall/menus.c
+++ b/usr.sbin/sysinstall/menus.c
@@ -72,6 +72,15 @@ clearKernel(dialogMenuItem *self)
return DITEM_SUCCESS | DITEM_REDRAW;
}
+static int
+setDocAll(dialogMenuItem *self)
+{
+ Dists |= DIST_DOC;
+ DocDists = DIST_DOC_ALL;
+ return DITEM_SUCCESS | DITEM_REDRAW;
+}
+
+
#define _IS_SET(dist, set) (((dist) & (set)) == (set))
#define IS_DEVELOPER(dist, extra) (_IS_SET(dist, _DIST_DEVELOPER | extra) || \
@@ -108,6 +117,7 @@ static int
checkDistEverything(dialogMenuItem *self)
{
return Dists == DIST_ALL &&
+ _IS_SET(DocDists, DIST_DOC_ALL) &&
_IS_SET(SrcDists, DIST_SRC_ALL) &&
_IS_SET(KernelDists, DIST_KERNEL_ALL);
}
@@ -125,6 +135,12 @@ kernelFlagCheck(dialogMenuItem *item)
}
static int
+docFlagCheck(dialogMenuItem *item)
+{
+ return DocDists;
+}
+
+static int
checkTrue(dialogMenuItem *item)
{
return TRUE;
@@ -167,6 +183,7 @@ DMenu MenuIndex = {
{ " Dists, User", "Select average user distribution.", checkDistUser, distSetUser },
{ " Distributions, Adding", "Installing additional distribution sets", NULL, distExtractAll },
{ " Documentation", "Installation instructions, README, etc.", NULL, dmenuSubmenu, NULL, &MenuDocumentation },
+ { " Documentation Installation", "Installation of FreeBSD documentation set", NULL, distSetDocMenu },
{ " Doc, README", "The distribution README file.", NULL, dmenuDisplayFile, NULL, "README" },
{ " Doc, Errata", "The distribution errata.", NULL, dmenuDisplayFile, NULL, "ERRATA" },
{ " Doc, Hardware", "The distribution hardware guide.", NULL, dmenuDisplayFile, NULL, "HARDWARE" },
@@ -286,6 +303,62 @@ DMenu MenuDocumentation = {
{ NULL } },
};
+/* The FreeBSD documentation installation menu */
+DMenu MenuDocInstall = {
+ DMENU_CHECKLIST_TYPE | DMENU_SELECTION_RETURNS,
+ "FreeBSD Documentation Installation Menu",
+ "This menu will allow you to install the whole documentation set\n"
+ "from the FreeBSD Documentation Project: Handbook, FAQ and articles.\n\n"
+ "Please select the language versions you wish to install. At minimum,\n"
+ "you should install the English version, this is the original version\n"
+ "of the documentation.",
+ NULL,
+ NULL,
+ { { "X Exit", "Exit this menu (returning to previous)",
+ checkTrue, dmenuExit, NULL, NULL, '<', '<', '<' },
+ { "All", "Select all below",
+ NULL, setDocAll, NULL, NULL, ' ', ' ', ' ' },
+ { " bn", "Bengali Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_BN },
+ { " da", "Danish Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_DA },
+ { " de", "German Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_DE },
+ { " el", "Greek Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_EL },
+ { " en", "English Documentation (recommended)",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_EN },
+ { " es", "Spanish Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_ES },
+ { " fr", "French Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_FR },
+ { " hu", "Hungarian Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_HU },
+ { " it", "Italian Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_IT },
+ { " ja", "Japanese Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_JA },
+ { " mn", "Mongolian Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_MN },
+ { " nl", "Dutch Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_NL },
+ { " pl", "Polish Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_PL },
+ { " pt", "Portuguese Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_PT },
+ { " ru", "Russian Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_RU },
+ { " sr", "Serbian Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_SR },
+ { " tr", "Turkish Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_TR },
+ { " zh_cn", "Simplified Chinese Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_ZH_CN },
+ { " zh_tw", "Traditional Chinese Documentation",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &DocDists, '[', 'X', ']', DIST_DOC_ZH_TW },
+ { NULL } },
+};
+
#ifdef WITH_MICE
DMenu MenuMouseType = {
DMENU_NORMAL_TYPE | DMENU_SELECTION_RETURNS,
@@ -917,8 +990,10 @@ DMenu MenuSubDistributions = {
kernelFlagCheck,distSetKernel },
{ " dict", "Spelling checker dictionary files",
dmenuFlagCheck, dmenuSetFlag, NULL, &Dists, '[', 'X', ']', DIST_DICT },
- { " doc", "Miscellaneous FreeBSD online docs",
- dmenuFlagCheck, dmenuSetFlag, NULL, &Dists, '[', 'X', ']', DIST_DOC },
+ { " doc", "FreeBSD Documentation set",
+ docFlagCheck, distSetDoc },
+ { " docuser", "Miscellaneous userland docs",
+ dmenuFlagCheck, dmenuSetFlag, NULL, &Dists, '[', 'X', ']', DIST_DOCUSERLAND },
{ " games", "Games (non-commercial)",
dmenuFlagCheck, dmenuSetFlag, NULL, &Dists, '[', 'X', ']', DIST_GAMES },
{ " info", "GNU info files",
@@ -1138,6 +1213,8 @@ DMenu MenuConfigure = {
NULL, dmenuExit },
{ " Distributions", "Install additional distribution sets",
NULL, distExtractAll },
+ { " Documentation installation", "Install FreeBSD Documentation set",
+ NULL, distSetDocMenu },
{ " Packages", "Install pre-packaged software for FreeBSD",
NULL, configPackages },
{ " Root Password", "Set the system manager's password",
diff --git a/usr.sbin/sysinstall/sysinstall.h b/usr.sbin/sysinstall/sysinstall.h
index 89827b1..9e95226 100644
--- a/usr.sbin/sysinstall/sysinstall.h
+++ b/usr.sbin/sysinstall/sysinstall.h
@@ -103,6 +103,7 @@
#define VAR_DIST_MAIN "distMain"
#define VAR_DIST_SRC "distSRC"
#define VAR_DIST_KERNEL "distKernel"
+#define VAR_DIST_DOC "distDoc"
#define VAR_DEDICATE_DISK "dedicateDisk"
#define VAR_DOMAINNAME "domainname"
#define VAR_EDITOR "editor"
@@ -414,6 +415,7 @@ extern Boolean have_volumes; /* Media has multiple volumes *
extern Variable *VarHead; /* The head of the variable chain */
extern Device *mediaDevice; /* Where we're getting our distribution from */
extern unsigned int Dists; /* Which distributions we want */
+extern unsigned int DocDists; /* Which Doc dists we want */
extern unsigned int SrcDists; /* Which src distributions we want */
extern unsigned int KernelDists; /* Which kernel dists we want */
extern int BootMgr; /* Which boot manager to use */
@@ -429,6 +431,7 @@ extern DMenu MenuMBRType; /* Type of MBR to write on the disk */
#endif
#endif
extern DMenu MenuConfigure; /* Final configuration menu */
+extern DMenu MenuDocInstall; /* Documentation Installation menu */
extern DMenu MenuDocumentation; /* Documentation menu */
extern DMenu MenuFTPOptions; /* FTP Installation options */
extern DMenu MenuIndex; /* Index menu */
@@ -599,6 +602,8 @@ extern int distSetMinimum(dialogMenuItem *self);
extern int distSetEverything(dialogMenuItem *self);
extern int distSetSrc(dialogMenuItem *self);
extern int distSetKernel(dialogMenuItem *self);
+extern int distSetDoc(dialogMenuItem *self);
+extern int distSetDocMenu(dialogMenuItem *self);
extern int distExtractAll(dialogMenuItem *self);
extern int selectKernel(void);
OpenPOWER on IntegriCloud