README.customs revision 1.1 1 1.1 christos -*-indented-text-*-
2 1.1 christos
3 1.1 christos GNU make can utilize the Customs library, distributed with Pmake, to
4 1.1 christos provide builds distributed across multiple hosts.
5 1.1 christos
6 1.1 christos In order to utilize this capability, you must first download and build
7 1.1 christos the Customs library. It is contained in the Pmake distribution, which
8 1.1 christos can be obtained at:
9 1.1 christos
10 1.1 christos ftp://ftp.icsi.berkeley.edu/pub/ai/stolcke/software/
11 1.1 christos
12 1.1 christos This integration was tested (superficially) with Pmake 2.1.33.
13 1.1 christos
14 1.1 christos
15 1.1 christos BUILDING CUSTOMS
16 1.1 christos ----------------
17 1.1 christos
18 1.1 christos First, build pmake and Customs. You need to build pmake first, because
19 1.1 christos Customs require pmake to build. Unfortunately, this is not trivial;
20 1.1 christos please see the pmake and Customs documentation for details. The best
21 1.1 christos place to look for instructions is in the pmake-2.1.33/INSTALL file.
22 1.1 christos
23 1.1 christos Note that the 2.1.33 Pmake distribution comes with a set of patches to
24 1.1 christos GNU make, distributed in the pmake-2.1.33/etc/gnumake/ directory. These
25 1.1 christos patches are based on GNU make 3.75 (there are patches for earlier
26 1.1 christos versions of GNU make, also). The parts of this patchfile which relate
27 1.1 christos directly to Customs support have already been incorporated into this
28 1.1 christos version of GNU make, so you should _NOT_ apply the patch file.
29 1.1 christos
30 1.1 christos However, there are a few non-Customs specific (as far as I could tell)
31 1.1 christos changes here which are not incorporated (for example, the modification
32 1.1 christos to try expanding -lfoo to libfoo.so). If you rely on these changes
33 1.1 christos you'll need to re-apply them by hand.
34 1.1 christos
35 1.1 christos Install the Customs library and header files according to the
36 1.1 christos documentation. You should also install the man pages (contrary to
37 1.1 christos comments in the documentation, they weren't installed automatically for
38 1.1 christos me; I had to cd to the ``pmake-2.1.33/doc'' directory and run ``pmake
39 1.1 christos install'' there directly).
40 1.1 christos
41 1.1 christos
42 1.1 christos BUILDING GNU MAKE
43 1.1 christos -----------------
44 1.1 christos
45 1.1 christos Once you've installed Customs, you can build GNU make to use it. When
46 1.1 christos configuring GNU make, merely use the ``--with-customs=DIR'' option.
47 1.1 christos Provide the directory containing the ``lib'' and ``include/customs''
48 1.1 christos subdirectories as DIR. For example, if you installed the customs
49 1.1 christos library in /usr/local/lib and the headers in /usr/local/include/customs,
50 1.1 christos then you'd pass ``--with-customs=/usr/local'' as an option to configure.
51 1.1 christos
52 1.1 christos Run make (or use build.sh) normally to build GNU make as described in
53 1.1 christos the INSTALL file.
54 1.1 christos
55 1.1 christos See the documentation for Customs for information on starting and
56 1.1 christos configuring Customs.
57 1.1 christos
58 1.1 christos
59 1.1 christos INVOKING CUSTOMS-IZED GNU MAKE
60 1.1 christos -----------------------------
61 1.1 christos
62 1.1 christos One thing you should be aware of is that the default build environment
63 1.1 christos for Customs requires root permissions. Practically, this means that GNU
64 1.1 christos make must be installed setuid root to use Customs.
65 1.1 christos
66 1.1 christos If you don't want to do this, you can build Customs such that root
67 1.1 christos permissions are not necessary. Andreas Stolcke <stolcke (a] speech.sri.com>
68 1.1 christos writes:
69 1.1 christos
70 1.1 christos > pmake, gnumake or any other customs client program is not required to
71 1.1 christos > be suid root if customs was compiled WITHOUT the USE_RESERVED_PORTS
72 1.1 christos > option in customs/config.h. Make sure the "customs" service in
73 1.1 christos > /etc/services is defined accordingly (port 8231 instead of 1001).
74 1.1 christos
75 1.1 christos > Not using USE_RESERVED_PORTS means that a user with programming
76 1.1 christos > skills could impersonate another user by writing a fake customs
77 1.1 christos > client that pretends to be someone other than himself. See the
78 1.1 christos > discussion in etc/SECURITY.
79 1.1 christos
80 1.1 christos
81 1.1 christos PROBLEMS
82 1.1 christos --------
83 1.1 christos
84 1.1 christos SunOS 4.1.x:
85 1.1 christos The customs/sprite.h header file #includes the <malloc.h> header
86 1.1 christos files; this conflicts with GNU make's configuration so you'll get a
87 1.1 christos compile error if you use GCC (or any other ANSI-capable C compiler).
88 1.1 christos
89 1.1 christos I commented out the #include in sprite.h:107:
90 1.1 christos
91 1.1 christos #if defined(sun) || defined(ultrix) || defined(hpux) || defined(sgi)
92 1.1 christos /* #include <malloc.h> */
93 1.1 christos #else
94 1.1 christos
95 1.1 christos YMMV.
96 1.1 christos
97 1.1 christos
99 1.1 christos -------------------------------------------------------------------------------
100 1.1 christos Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
101 1.1 christos Free Software Foundation, Inc.
102 1.1 christos This file is part of GNU Make.
103 1.1 christos
104 1.1 christos GNU Make is free software; you can redistribute it and/or modify it under the
105 1.1 christos terms of the GNU General Public License as published by the Free Software
106 1.1 christos Foundation; either version 2, or (at your option) any later version.
107 1.1 christos
108 1.1 christos GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
109 1.1 christos WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
110 1.1 christos A PARTICULAR PURPOSE. See the GNU General Public License for more details.
111 1.1 christos
112 1.1 christos You should have received a copy of the GNU General Public License along with
113 1.1 christos GNU Make; see the file COPYING. If not, write to the Free Software
114 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
115