summaryrefslogtreecommitdiff
path: root/man/local.mk
AgeCommit message (Collapse)Author
2015-03-07build: fix make dependencies for test.1Pádraig Brady
In certain parallel build situations this would give the error: help2man: can't get `--help' info from man/test.td/[ Makefile:14189: recipe for target 'man/test.1' failed * man/local.mk (test.1): Depend on `[` rather than `test`, as `test --help` outputs nothing. Also move dir.1 and vdir.1 back to the main list, as they're no more exceptions than sha1sum etc.
2015-01-01maint: update all copyright year number rangesPádraig Brady
Run "make update-copyright" and then... * tests/sample-test: Adjust to use the single most recent year. * tests/du/bind-mount-dir-cycle-v2.sh: Fix case in copyright message, so that year is updated automatically in future.
2014-12-19build: add $(EXEEXT) suffix to man page make targetsKO Myung-Hun
* man/local.mk: Add $(EXEEXT) suffix to the executables, which is significant on OS/2 for example.
2014-09-23build: pass program name to help2man after other optionsBernhard Voelker
* man/local.mk (.x.1): Move the program name argument down after the last option argument when calling $(run_help2man). While the other way would be accepted for the GNU help2man program, it is not for the 'dummy-man' script (called as a fallback on systems lacking perl). The wrong order was introduced in commit v8.21-119-gb3578fc while adding the --info-page option.
2014-09-19build: fix dependency issues with man page generationPádraig Brady
* .gitignore: Remove reference to no longer generated make file. * configure.ac: Don't bother generating placeholder make file. * man/local.mk: Hardcode the man page deps list for normal builds to be compatible with all make implementations and configure options. Note in SINGLE_BINARY mode, all man pages will be generated on any change to the coreutils binary, but development will generally not be done in this mode, so this shouldn't be an issue. Fixes http://bugs.gnu.org/18055
2014-09-10doc: adjust reference to info nodes in man pagesPádraig Brady
old form: coreutils '$cmd invocation' new form: '(coreutils) $cmd invocation' The old form erroneously referenced the node for the 'coreutils' multi-call program. Now that problematic node name was renamed in commit v8.23-18-g72e470b, but the newer less ambiguous form also has the advantage of working with the pinfo viewer for example. Full discussion at http://bugs.gnu.org/18428 * man/local.mk: Adjust man page references to texinfo nodes. * src/system.h: Adjust --help references to texinfo nodes.
2014-07-17build: port to non-GNU makePaul Eggert
This fixes a problem with native Solaris 'make', which does not grok '-include' lines (a GNU extension to POSIX 'make'). * configure.ac (man/dynamic-deps.mk): Create it, with an old time stamp, if doing dynamic dependency tracking. * man/local.mk (DISTCLEANFILES): Put man/dynamic-deps.mk here, rather than in CLEANFILES. (man/dynamic-deps.mk): Don't create it read-only, so that we can easily touch it later. Include it with '@AMDEP_TRUE@@am__include@', not with '-include', as '-include' does not work with native Solaris 'make'.
2014-07-13build: adjust new rule not to depend on bash-4.xJim Meyering
* man/local.mk (man/dynamic-deps.mk): Use the same code to derive FOO from man/FOO.1 as in the .x.1 rule below. Using the more concise "name=$${man:4: -2}" is not portable enough.
2014-07-13build: support building all tools in a single binaryAlex Deymo
Add the --enable-single-binary option to the configure file. When enabled, this option builds a single binary file containing the selected tools. Which tool gets executed depends on the value of argv[0] which can be set implicitly through symlinks to the single program. This setup reduces significantly the size of a complete coreutils install, since code from lib/libcoreutils.a is not duplicated in every one of the more than 100 binaries. Runtime overhead is increased due to more dynamic libraries being loaded, and extra initialization being performed for all utils. Also initially a larger binary is loaded from storage, though this is usually alleviated due to caching and lazy mmaping of unused blocks, and in fact the single binary should have better caching characteristics. Comparing the size of the individual versus single binary on x86_64: $ cd src $ size coreutils $ size -t $(../build-aux/gen-lists-of-programs.sh --list-progs | grep -Ev '(coreutils|libstdbuf)') | tail -n1 text data bss dec hex filename 1097416 5388 88432 1191236 122d44 src/coreutils 4901010 124964 163768 5189742 4f306e (TOTALS) Storage requirements are reduced similarly: $ cd src $ du -h coreutils $ du -ch $(../build-aux/gen-lists-of-programs.sh --list-progs | grep -Ev '(coreutils|libstdbuf)') | tail -n1 1.2M coreutils 5.3M total When installing, the makefile will create either symlinks or shebangs based on the --enable-single-binary setting, for each configured tool. In this way, all the tools are still callable individually, but they are all implemented by the same "coreutils" binary installed on the same directory. * .gitignore: Add new generated files. * Makefile.am: New rules to generate build-aux/gen-single-binary.sh and install symlinks. * NEWS: Mention the new feature. * README: Add "coreutils" to the list of utils. * bootstrap.conf: Regenerate src/single-binary.mk * build-aux/gen-lists-of-programs.sh: New --list-progs option. * build-aux/gen-single-binary.sh: Regenerate * configure.ac: New --enable-single-binary option and other variables. Disallow --enable-single-binary=symlinks with --program-prefix et. al. * man/coreutils.x: Manpage hook. * man/local.mk: Add manpage hook and fix dependencies. * src/coreutils.c: Multicall implementation. * src/local.mk: New rules for the single binary option. * tests/local.mk: Add $single_binary_progs to support require_built_() from init.cfg * tests/misc/env.sh: Avoid the use of symlink to echo. * tests/misc/help-version.sh: Add exception for coreutils. * tests/install/basic-1.sh: Really avoid using ginstall strip functionality if there is an issue with the independent strip command. * src/kill.c: Changes to call exit() in main. * src/readlink.c: Likewise. * src/shuf.c: Likewise. * src/timeout.c: Likewise. * src/truncate.c: Likewise.
2014-01-02maint: update all copyright year number rangesBernhard Voelker
Run "make update-copyright", but then also run this, perl -pi -e 's/2\d\d\d-//' tests/sample-test to make that one script use the single most recent year number.
2013-11-01build: fix dependencies of man/sha*sum.1Bernhard Voelker
Although the above man pages depend on src/md5sum.c as a shared source, the build of the man pages directly requires their own executables to exist. * man/local.mk (man/sha1sum.1): Change the dependency from 'src/md5sum' to 'src/sha1sum'. (man/sha224sum.1): s/md5sum/sha224sum/ (man/sha256sum.1): s/md5sum/sha256sum/ (man/sha384sum.1): s/md5sum/sha384sum/ (man/sha512sum.1): s/md5sum/sha512sum/ Reported by Pádraig Brady in http://lists.gnu.org/archive/html/coreutils/2013-11/msg00006.html
2013-09-12maint: avoid patching help2manBernhard Voelker
Commit cde1ea0e separated the coreutils-specific patches from help2man. Most changes had been made to accommodate to the coreutils style guide, i.e., to avoid syntax-check failures like sc_long_lines. Yet 2 changes had to be put into the patch help2man.diff. But this added the dependency to patch(1) in distribution builds. Incidentally, the 2 remaining parts of the patch can easily be done outside of help2man. Therefore, this commit partly reverts the recent separation of help2man into 'help2man.in' and 'help2man.diff', and instead uses the original help2man script. * man/help2man.in: Rename to ... * man/help2man: ... this file. * man/help2man.diff: Remove. * man/local.mk (mandeps): Remove man/help2man. (man/help2man): Remove recipe. (.x.1): Add the --info-page option when calling help2man in order to change the name of the texinfo manual from the default, "info PRG", to "info coreutils 'PRG invocation'". Furthermore, use an sed pattern to remove the sentence starting with "For complete documentation". * .gitignore (/man/help2man): Remove entry. * .x-update-copyright: Replace the entries for the files 'man/help2man.diff' and 'man/help2man.in' by 'man/help2man'. * cfg.mk (sc_long_lines): Instead of 'man/help2man.in', exempt 'man/help2man' from this test. (sc_po_check): Likewise. (sc_space_tab): Instead of 'man/help2man.diff', exempt 'man/help2man' from this test. (sc_trailing_blank): Likewise. (sc_prohibit_tab_based_indentation): Instead of 'man/help2man.in' and 'man/help2man.diff', exempt 'man/help2man'. * man/dummy-man: Recognize the option --info-page=... as no-op.
2013-09-09maint: update help2man to 1.43.3Bernhard Voelker
Instead of diverging further from the upstream GNU help2man project (http://www.gnu.org/software/help2man/), hold a copy of the original script and keep track of our changes in a separate patch file. The man pages created with the new version show the following, non-invasive differences: a) command options in the EXAMPLE sections are no longer in bold format, b) file names are underlined now consistently. * man/help2man: Rename to ... * man/help2man.in: ... this file, and update content from the upstream GNU help2man project. * man/help2man.diff: Add patch file for help2man to remove the sentence "For complete documentation ..." (see commit 5d4f09d8), and to emit "info coreutils 'PROG invocation'" into the man pages (77abf69a). * man/local.mk (mandeps): Add help2man to the dependencies of the man pages. (man/help2man): Add rule to generate this script from the upstream help2man.in file and the help2man.diff patch. * .gitignore: Add man/help2man as it is no longer version controlled. * cfg.mk (sc_long_lines): Exempt help2man.in from this check. (sc_po_check): Likewise. (sc_space_tab): Likewise. (sc_trailing_blank): Exempt man/help2man.diff from this check. (sc_prohibit_tab_based_indentation): Instead of help2man, now exempt both help2man.in and help2man.diff from this test. * .x-update-copyright: Add new file and add the above new help2man files as well as the COPYING file.
2013-04-07build: fix man page build failure with some permissions setupsEnrico Scholz
Use the more portable 'chmod a-w', instead of the 'chmod -w' form. The latter is not always supported. Also its operation is dependent on umask controlling the permissions bits for new files, which is not the case in the presence of POSIX default ACLs for e.g. In that case, chmod may print a warning like the following, and exit with failure status: chmod: man/hostid.1-t: new permissions are r--rw-r--, not r--r--r-- * man/local.mk: s/-w/a-w/
2013-02-04numfmt: a new command to format numbersAssaf Gordon
* AUTHORS: Add my name. * NEWS: Mention the new program. * README: Reference the new program. * src/numfmt.c: New file. * src/.gitignore: Ignore the new binary. * build-aux/gen-lists-of-programs.sh: Update. * scripts/git-hooks/commit-msg: Allow numfmt: commit prefix. * po/POTFILES.in: Add new c file. * tests/misc/numfmt.pl: A new test file giving >93% coverage. * tests/local.mk: Reference the new test. * man/.gitignore: Ignore the new man page. * man/local.mk: Reference the new man page. * man/numfmt.x: A new template. * doc/coreutils.texi: Document the new command.
2013-01-01maint: update all copyright year number rangesJim Meyering
Run "make update-copyright", but then also run this, perl -pi -e 's/2\d\d\d-//' tests/sample-test to make that one script use the single most recent year number.
2012-10-26build: man page generation: degrade gracefully when perl is lackingStefano Lattarini
Since commit v8.19-118-g57da212, our 'dist-hook' rule tweaked the distributed Makefile.in to make each man page 'man/foo.1' depend on the corresponding source 'src/foo.c' rather than the corresponding program 'src/foo'. That was done to accommodate systems without perl, which cannot run help2man to regenerate the manpage after its corresponding program has been built. This seems a right and proper graceful degradation, in that the man pages dependencies are still 100% correct in a git checkout, while being more lax but "more portable" in a distribution tarball. Alas, that is not the case in practice, as it turns out the tweaked Makefile makes the building of man pages unreliable and potentially incorrect! In fact, assume that instead of the correct a dependency: man/ls.1: src/ls we have the laxer one: man/ls.1: src/ls.c and think of what happens if a user modifies, say, 'src/ls.c', and then runs "make -j4" to rebuild everything. The make process will see that it has to rebuild the man page 'man/ls.1' (because its prerequisite 'src/ls.c' has changed), but won't see that it has to rebuild 'src/ls' *before* re-running 'help2man' to generate that man page; so, if 'man/ls.1' is rebuilt before 'src/ls' (which can happen with concurrent make), our user will get either a build error (if 'src/ls' did non exist) or, worse, a man page with an up-to-date timestamp but an out-of-date content. And what's even worse in all of this is that this problem will be present also for users who have perl installed: this is not a "graceful degradation" at all! In our situation, the best and simplest way to implement a graceful degradation it to keep the correct dependencies for man pages (that is, "man/ls.1: src/ls"), and if perl is not present, just generate dummy man pages reporting that built-time issue and redirecting the user back to either the info documentation or the '--help' output. As a consequence of this change, we also stop distributing man pages, since they will now be generated unconditionally. * Makefile.am (do-not-require-help2man): Remove. (dist-hook): Don't depend on it. * man/local.mk: Remove an obsolete comment. (EXTRA_DIST): Stop distributing generated man pages. ($(EXTRA_MANS)): This no longer needs to depend on $(all_programs). (MAINTAINERCLEANFILES): $(ALL_MANS) Do not list it here, and ... (CLEANFILES): ... list it here, instead. (.x.1): Instead of warning if perl is missing, but then trying to run 'help2man' unconditionally, simply run ... (run_help2man): ... the command referenced by this new variable, that expands to a proper invocation of 'help2man' if perl is present, and to an invocation of a shell script generating a dummy manpage if it is not. (EXTRA_DIST): Distribute that shell script. * man/dummy-man: New shell script. * NEWS (Build-related): Mention this. Fixes coreutils http://bugs.gnu.org/12715.
2012-09-10build: fix a minor man-page generation dependency errorJim Meyering
* man/local.mk (man/dir.1): Depend on src/dir, not src/ls.
2012-09-01build: restore handling of space-tainted build directory nameJim Meyering
* man/local.mk: With commit v8.19-84-g08cf455, man page creation would fail when using a build directory name containing e.g., spaces.
2012-09-01build: make each man/prog.1 depend on src/prog, not src/prog.cJim Meyering
* man/local.mk: Creating a prog.1 man page requires running src/prog --help. List the exceptions, e.g., install.1 depends on src/ginstall and arch.1 depends on src/uname.
2012-09-01maint: avoid distcheck failure by properly cleaning $(ALL_MANS)Jim Meyering
* man/local.mk (distclean-local): Remove $(ALL_MANS) when doing a VPATH build. If it's not done, generated manpages can be left around in the build directory after a "make distclean", causing failures in "make distcheck".
2012-09-01maint: port manpages generation to VPATH buildsStefano Lattarini
* man/local.mk (.x.1): Use '$(MKDIR_P)' rather than bare 'mkdir' where appropriate. Reported by Jim Meyering.
2012-09-01build: $(mandeps): new, to factor out man pages dependenciesStefano Lattarini
* man/local.mk (mandpep): Rename ... (mandeps): ... like this. Make $(ALL_MANS) depend on its content. List 'src/system.h' in here, instead of making $(ALL_MANS) depend on it explicitly. (man/*.1): No need to list $(mandep) among the dependencies any longer.
2012-09-01build: enhance man pages cleaning and dependenciesStefano Lattarini
* man/local.mk: All of the manpages should depend on 'src/system.h', and all of them should be cleaned by "make maintainer-clean", that is, added to MAINTAINERCLEANFILES. Make it be so. Some minor cosmetic tweakings and reorderings while at it.
2012-09-01build: simplify: get rid of yet some more indirection variablesStefano Lattarini
* configure.ac: Adjust and improve few comments. (MAN): Rename ... (man1_MANS): ... to this. Ensure it isn't initialized in all Makefiles (which would lead to spurious errors), by calling AM_SUBST_NOTMAKE on it. Also call AM_SUBST_NOTMAKE on 'EXTRA_MANS', for consistency. * man/local.mk (man1_MANS): Simply define to '@man1_MANS@'.
2012-09-01build: rename dist_man1_MANS -> man1_MANSStefano Lattarini
And list $(man1_MANS) directly in $(EXTRA_DIST) instead. This is similar to what is done for $(EXTRA_MANS), thus improving consistency and readability. * man/local.mk (dist_man1_MANS): Rename ... (man1_MANS): ... like this. (EXTRA_DIST): Add its contents. * cfg.mk (check-x-vs-1): Fix a botched comment.
2012-09-01build: one less unneeded make variableStefano Lattarini
* man/local.mk (man_aux): This was used only once, so inline its expansion at its sole point of use ... (EXTRA_DIST): ... here.
2012-09-01build: simplify and make more portable to non-GNU makeStefano Lattarini
The AC_SUBST'd variable '$(NO_INSTALL_PROGS_DEFAULT)' is only used in makefile expressions expanding the list of manual pages that are not built by default (but might need to be when a distribution tarball is created). Such expressions exploited a feature of make variable expansion -- namely, $(VAR:%=dir/%.x) -- that, while seemingly quite portable in practice, is not POSIX-conforming, and could break on lesser vendor make implementations. So kill two birds with one stone, by getting rid of the $(NO_INSTALL_PROGS_DEFAULT) intermediate variable and improving makefile portability in the process. While at it, we also clean up some other minor naming inconsistency and useless indirection. * configure.ac (NO_INSTALL_PROGS_DEFAULT): Don't define or AC_SUBST anymore; instead ... (EXTRA_MANS): ... define and AC_SUBST these. * man/local.mk (extra_man_1): Rename ... (EXTRA_MANS): ... like this, explicitly making clear it's AC_SUBST'd. (extra_man_x): It's used only once, no need to define it; just inline its only expansion where needed. (EXTRA_DIST): Adjust. (ALL_MANS): New, union of $(EXTRA_MANS) and $(dist_man1_MANS). * cfg.mk (check-x-vs-1, sc_option_desc_uppercase): Rely on $(ALL_MANS) rather than on $(NO_INSTALL_PROGS_DEFAULT) and $(dist_man1_MANS).
2012-09-01build: fix generation of manpages for programs not built by defaultStefano Lattarini
* src/local.mk (dist-hook): Don't use this to ensure all the programs, even the ones disabled by default or by the user, are built (doing so is required to ensure the distributed manpages are properly built). This would build those programs too late anyway, causing errors like: $ make dist make dist-xz am__post_remove_distdir='@:' make[1]: Entering directory `~/src/coreutils' GEN man/arch.1 help2man: can't get '--help' info from man/arch.td/arch make[1]: *** [man/arch.1] Error 127 make[1]: Leaving directory `~/src/coreutils' make: *** [dist] Error 2 Instead, ... * man/local.mk (extra_man_x, extra_man_1): define these ... ($(extra_man_1)): ... and make this depend on $(all_programs). (EXTRA_DIST): Adjust. Adjust some comments as well.
2012-08-30maint: move man-related syntax checks in cfg.mkStefano Lattarini
This is more natural, now that the top-level Makefile has access to all the variables and rules once defined only in 'man/Makefile.am' * man/local.mk (all_programs, sc_option_desc_uppercase, sc_man_file_correlation check-x-vs-1, check-programs-vs-x): Move from here ... * cfg.mk: ... to here. Adjust some comments in the process.
2012-08-30build: don't use recursive make to build the 'man' subdirectoryStefano Lattarini
* Makefile.am: Include 'man/local.mk'. (SUBDIRS): Remove 'man'. * configure.ac ($MAN): Adjust so that each of its entries has a leading 'man/' component. (AC_CONFIG_FILES): Remove 'man/Makefile'. * man/Makefile.am: Rename ... * man/local.mk: ... like this. With further adjustments: each 'foo.1' target renamed like 'man/foo.1', each '../src/foo.c' dependency as 'src/foo.c', and each '$(srcdir)' usage as '$(srcdir)/man'. Also ... (mandep): Adjust, removing the leading '../' component. Several whitespace adjustments while at it. (ASSORT): Remove, it's already defined in the top-level Makefile.am. * cfg.mk (sc_option_desc_uppercase, sc_man_file_correlation): Remove the associated recipes, they are now directly available from the included 'man/local.mk'. Actually, the other changes in this commit have made these recipes instable and not completely correct, but that will be fixed in later changes.