build: ensure sys/select.h is included
[coreutils.git] / README
blob2b0837bf7ebad7ee0cd35dfa7e00cfeb49b76a6a
1 These are the GNU core utilities.  This package is the union of
2 the GNU fileutils, sh-utils, and textutils packages.
4 Most of these programs have significant advantages over their Unix
5 counterparts, such as greater speed, additional options, and fewer
6 arbitrary limits.
8 The programs that can be built with this package are:
10   [ arch b2sum base32 base64 basename basenc cat chcon chgrp chmod chown
11   chroot cksum comm coreutils cp csplit cut date dd df dir dircolors dirname
12   du echo env expand expr factor false fmt fold groups head hostid hostname
13   id install join kill link ln logname ls md5sum mkdir mkfifo mknod mktemp
14   mv nice nl nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx
15   pwd readlink realpath rm rmdir runcon seq sha1sum sha224sum sha256sum
16   sha384sum sha512sum shred shuf sleep sort split stat stdbuf stty sum sync
17   tac tail tee test timeout touch tr true truncate tsort tty uname unexpand
18   uniq unlink uptime users vdir wc who whoami yes
20 See the file NEWS for a list of major changes in the current release.
22 If you obtained this file as part of a "git clone", then see the
23 README-hacking file.  If this file came to you as part of a tar archive,
24 then see the file INSTALL for compilation and installation instructions.
26 Like the rest of the GNU system, these programs mostly conform to
27 POSIX, with BSD and other extensions.  For closer conformance, or
28 conformance to a particular POSIX version, set the POSIXLY_CORRECT
29 and the _POSIX2_VERSION environment variables, as described in
30 the documentation under "Standards conformance".
32 The ls, dir, and vdir commands are all separate executables instead of
33 one program that checks argv[0] because people often rename these
34 programs to things like gls, gnuls, l, etc.  Renaming a program
35 file shouldn't affect how it operates, so that people can get the
36 behavior they want with whatever name they want.
38 Special thanks to Paul Eggert, Brian Matthews, Bruce Evans, Karl Berry,
39 Kaveh Ghazi, and François Pinard for help with debugging and porting
40 these programs.  Many thanks to all of the people who have taken the
41 time to submit problem reports and fixes.  All contributed changes are
42 attributed in the commit logs.
44 And thanks to the following people who have provided accounts for
45 portability testing on many different types of systems: Bob Proulx,
46 Christian Robert, François Pinard, Greg McGary, Harlan Stenn,
47 Joel N. Weber, Mark D. Roth, Matt Schalit, Nelson H. F. Beebe,
48 Réjean Payette, Sam Tardieu.
50 Thanks to Michael Stone for inflicting test releases of this package
51 on Debian's unstable distribution, and to all the kind folks who used
52 that distribution and found and reported bugs.
54 Note that each man page is now automatically generated from a template
55 and from the corresponding --help usage message.  Patches to the template
56 files (man/*.x) are welcome.  However, the authoritative documentation
57 is in texinfo form in the doc directory.
60 *********************
61 Pre-C99 build failure
62 ---------------------
64 In 2009 we added this requirement:
65 To build the coreutils from source, you must have a C99-conforming
66 compiler, due to the use of declarations after non-declaration statements
67 in several files in src/.  There is code in configure to find and, if
68 possible, enable an appropriate compiler.  However, if configure doesn't
69 find a C99 compiler, it continues nonetheless, and your build will fail.
70 There used to be a "c99-to-c89.diff" patch you could apply to convert
71 to code that even an old pre-c99 compiler can handle, but it was too
72 tedious to maintain, so has been removed.
75 ***********************
76 HPUX 11.x build failure
77 -----------------------
79 A known problem exists when compiling on HPUX on both hppa and ia64
80 in 64-bit mode (i.e., +DD64) on HP-UX 11.0, 11.11, and 11.23.  This
81 is not due to a bug in the package but instead due to a bug in the
82 system header file which breaks things in 64-bit mode.  The default
83 compilation mode is 32-bit and the software compiles fine using the
84 default mode.  To build this software in 64-bit mode you will need
85 to fix the system /usr/include/inttypes.h header file.  After
86 correcting that file the software also compiles fine in 64-bit mode.
87 Here is one possible patch to correct the problem:
89 --- /usr/include/inttypes.h.orig        Thu May 30 01:00:00 1996
90 +++ /usr/include/inttypes.h     Sun Mar 23 00:20:36 2003
91 @@ -489 +489 @@
92 -#ifndef __STDC_32_MODE__
93 +#ifndef __LP64__
96 ************************
97 OSF/1 4.0d and AIX build failures
98 ------------------------
100 If you use /usr/bin/make on these systems, the build will fail due
101 to the presence of the "[" target.  OSF/1 make(1) appears to
102 treat "[" as some syntax relating to locks, while AIX make(1)
103 appears to skip the "[" target.  To work around these issues
104 the best solution is to use GNU make.  Otherwise, simply remove
105 all mention of "[$(EXEEXT)" from src/Makefile.
108 ************************
109 32 bit time_t build failures
110 ------------------------
112 On systems where it's determined that 64 bit time_t is supported
113 (indicated by touch -t <some time after 2038>), but that coreutils
114 would be built with a narrower time_t, the build will fail.
115 This can be allowed by passing TIME_T_32_BIT_OK=yes to configure,
116 or avoided by enabling 64 bit builds.  For example GCC on AIX defaults
117 to 32 bit, and to enable the 64 bit ABI one can use:
118 ./configure CFLAGS=-maix64 LDFLAGs=-maix64 AR='ar -X64'
121 *************************************************
122 "make check" failure on IRIX 6.5 and Solaris <= 9
123 -------------------------------------------------
125 Using the vendor make program to run "make check" fails on these two systems.
126 If you want to run all of the tests there, use GNU make.
130 **********************
131 Running tests as root:
132 ----------------------
134 If you run the tests as root, note that a few of them create files
135 and/or run programs as a non-root user, 'nobody' by default.
136 If you want to use some other non-root username, specify it via
137 the NON_ROOT_USERNAME environment variable.  Depending on the
138 permissions with which the working directories have been created,
139 using 'nobody' may fail, because that user won't have the required
140 read and write access to the build and test directories.
141 I find that it is best to unpack and build as a non-privileged
142 user, and then to run the following command as that user in order
143 to run the privilege-requiring tests:
145   sudo env PATH="$PATH" NON_ROOT_USERNAME=$USER make -k check-root
147 If you can run the tests as root, please do so and report any
148 problems.  We get much less test coverage in that mode, and it's
149 arguably more important that these tools work well when run by
150 root than when run by less privileged users.
153 ***************
154 Reporting bugs:
155 ---------------
157 Send bug reports, questions, comments, etc. to bug-coreutils@gnu.org.
158 To suggest a patch, see the files README-hacking and HACKING for tips.
160 If you have a problem with 'sort', try running 'sort --debug', as it
161 can can often help find and fix problems without having to wait for an
162 answer to a bug report.  If the debug output does not suffice to fix
163 the problem on your own, please compress and attach it to the rest of
164 your bug report.
166 IMPORTANT: if you take the time to report a test failure,
167 please be sure to include the output of running 'make check'
168 in verbose mode for each failing test.  For example,
169 if the test that fails is tests/df/df-P.sh, then you would
170 run this command:
172   make check TESTS=tests/df/df-P.sh VERBOSE=yes SUBDIRS=. >> log 2>&1
174 For some tests, you can get even more detail by adding DEBUG=yes.
175 Then include the contents of the file 'log' in your bug report.
178 ***************************************
180 There are many tests, but nowhere near as many as we need.
181 Additions and corrections are very welcome.
183 If you see a problem that you've already reported, feel free to re-report
184 it -- it won't bother me to get a reminder.  Besides, the more messages I
185 get regarding a particular problem the sooner it'll be fixed -- usually.
186 If you sent a complete patch and, after a couple weeks you haven't
187 received any acknowledgement, please ping us.  A complete patch includes
188 a well-written ChangeLog entry, unified (diff -u format) diffs relative
189 to the most recent test release (or, better, relative to the latest
190 sources in the public repository), an explanation for why the patch is
191 necessary or useful, and if at all possible, enough information to
192 reproduce whatever problem prompted it.  Plus, you'll earn lots of
193 karma if you include a test case to exercise any bug(s) you fix.
194 Here are instructions for checking out the latest development sources:
196   https://savannah.gnu.org/git/?group=coreutils
198 If your patch adds a new feature, please try to get some sort of consensus
199 that it is a worthwhile change.  One way to do that is to send mail to
200 coreutils@gnu.org including as much description and justification
201 as you can.  Based on the feedback that generates, you may be able to
202 convince us that it's worth adding.  Please also consult the list of
203 previously discussed but ultimately rejected feature requests at:
204 https://www.gnu.org/software/coreutils/rejected_requests.html
207 WARNING:  Now that we use the ./bootstrap script, you should not run
208 autoreconf manually.  Doing that will overwrite essential source files
209 with older versions, which may make the package unbuildable or introduce
210 subtle bugs.
213 WARNING:  If you modify files like configure.in, m4/*.m4, aclocal.m4,
214 or any Makefile.am, then don't be surprised if what gets regenerated no
215 longer works.  To make things work, you'll have to be using appropriate
216 versions of the tools listed in bootstrap.conf's buildreq string.
218 All of these programs except 'test' recognize the '--version' option.
219 When reporting bugs, please include in the subject line both the package
220 name/version and the name of the program for which you found a problem.
222 For general documentation on the coding and usage standards
223 this distribution follows, see the GNU Coding Standards at:
224 https://www.gnu.org/prep/standards/
226 For any copyright year range specified as YYYY-ZZZZ in this package
227 note that the range specifies every single year in that closed interval.
229 Mail suggestions and bug reports for these programs to
230 the address on the last line of --help output.
233 ========================================================================
235 Copyright (C) 1998-2019 Free Software Foundation, Inc.
237 Permission is granted to copy, distribute and/or modify this document
238 under the terms of the GNU Free Documentation License, Version 1.3 or
239 any later version published by the Free Software Foundation; with no
240 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
241 Texts.  A copy of the license is included in the "GNU Free
242 Documentation License" file as part of this distribution.