| Please see the file INSTALL for generic build and installation instructions. |
| This file details coreutils and system specific build instructions. |
|
|
|
|
| ********************* |
| Pre-C99 build failure |
| |
|
|
| In 2009 we added this requirement: |
| To build the coreutils from source, you must have a C99-conforming |
| compiler, due to the use of declarations after non-declaration statements |
| in several files in src/. There is code in configure to find and, if |
| possible, enable an appropriate compiler. However, if configure doesn't |
| find a C99 compiler, it continues nonetheless, and your build will fail. |
| There used to be a "c99-to-c89.diff" patch you could apply to convert |
| to code that even an old pre-c99 compiler can handle, but it was too |
| tedious to maintain, so has been removed. |
|
|
|
|
| *********************** |
| HPUX 11.x build failure |
| |
|
|
| A known problem exists when compiling on HPUX on both hppa and ia64 |
| in 64-bit mode (i.e., +DD64) on HP-UX 11.0, 11.11, and 11.23. This |
| is not due to a bug in the package but instead due to a bug in the |
| system header file which breaks things in 64-bit mode. The default |
| compilation mode is 32-bit and the software compiles fine using the |
| default mode. To build this software in 64-bit mode you will need |
| to fix the system /usr/include/inttypes.h header file. After |
| correcting that file the software also compiles fine in 64-bit mode. |
| Here is one possible patch to correct the problem: |
|
|
| |
| +++ /usr/include/inttypes.h Sun Mar 23 00:20:36 2003 |
| @@ -489 +489 @@ |
| -#ifndef __STDC_32_MODE__ |
| +#ifndef __LP64__ |
|
|
|
|
| ************************ |
| OSF/1 4.0d and AIX build failures |
| |
|
|
| If you use /usr/bin/make on these systems, the build will fail due |
| to the presence of the "[" target. OSF/1 make(1) appears to |
| treat "[" as some syntax relating to locks, while AIX make(1) |
| appears to skip the "[" target. To work around these issues |
| the best solution is to use GNU make. Otherwise, simply remove |
| all mention of "[$(EXEEXT)" from src/Makefile. |
|
|
|
|
| ************************ |
| 32 bit time_t build failures |
| |
|
|
| Although 32-bit builds fail if that forces time_t to be 32 bits, this |
| can be fixed by using 64-bit builds. For example, on AIX where GCC |
| defaults to 32 bits, one can use "./configure CC='gcc -maix64' AR='ar |
| -X64'"; similarly, on Solaris one can configure with CC='gcc -m64'. |
| If all else fails one can configure with |
| however, this will mishandle timestamps after 2038, and please file |
| bug reports for any such situations. |
|
|
|
|
| ************************************************* |
| "make check" failure on IRIX 6.5 and Solaris <= 9 |
| |
|
|
| Using the vendor make program to run "make check" fails on these two systems. |
| If you want to run all of the tests there, use GNU make. |
|
|
|
|
|
|
| ********************** |
| Running tests as root: |
| |
|
|
| If you run the tests as root, note that a few of them create files |
| and/or run programs as a non-root user, 'nobody' by default. |
| If you want to use some other non-root username, specify it via |
| the NON_ROOT_USERNAME environment variable. Depending on the |
| permissions with which the working directories have been created, |
| using 'nobody' may fail, because that user won't have the required |
| read and write access to the build and test directories. |
| I find that it is best to unpack and build as a non-privileged |
| user, and then to run the following command as that user in order |
| to run the privilege-requiring tests: |
|
|
| sudo env PATH="$PATH" NON_ROOT_USERNAME=$USER make -k check-root |
|
|
| If you can run the tests as root, please do so and report any |
| problems. We get much less test coverage in that mode, and it's |
| arguably more important that these tools work well when run by |
| root than when run by less privileged users. |
|
|
|
|
|
|
| ********************** |
| autotools considerations: |
| |
|
|
| WARNING: Now that we use the ./bootstrap script, you should not run |
| autoreconf manually. Doing that will overwrite essential source files |
| with older versions, which may make the package unbuildable or introduce |
| subtle bugs. |
|
|
| WARNING: If you modify files like configure.in, m4 |
| |
| |
| |
| |