From e32c401685c4415341818d7f785b56cecc712b70 Mon Sep 17 00:00:00 2001 From: blackend Date: Sun, 28 Jun 2009 08:59:46 +0000 Subject: - 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) --- usr.sbin/sysinstall/dist.c | 104 ++++++++++++++++++++++++++++++++++++--- usr.sbin/sysinstall/dist.h | 27 +++++++++- usr.sbin/sysinstall/doc.c | 6 +-- usr.sbin/sysinstall/menus.c | 81 +++++++++++++++++++++++++++++- usr.sbin/sysinstall/sysinstall.h | 5 ++ 5 files changed, 211 insertions(+), 12 deletions(-) (limited to 'usr.sbin') 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 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); -- cgit v1.1