Annotation of src/usr.bin/sudo/Makefile.in, Revision 1.21
1.1 millert 1: #
1.14 millert 2: # Copyright (c) 1996, 1998-2003 Todd C. Miller <Todd.Miller@courtesan.com>
1.1 millert 3: # All rights reserved.
4: #
5: # Redistribution and use in source and binary forms, with or without
6: # modification, are permitted provided that the following conditions
7: # are met:
8: #
9: # 1. Redistributions of source code must retain the above copyright
10: # notice, this list of conditions and the following disclaimer.
11: #
12: # 2. Redistributions in binary form must reproduce the above copyright
13: # notice, this list of conditions and the following disclaimer in the
14: # documentation and/or other materials provided with the distribution.
15: #
16: # 3. The name of the author may not be used to endorse or promote products
17: # derived from this software without specific prior written permission
18: # from the author.
19: #
20: # 4. Products derived from this software may not be called "Sudo" nor
21: # may "Sudo" appear in their names without specific prior written
22: # permission from the author.
23: #
24: # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
25: # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
26: # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27: # THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28: # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29: # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
30: # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
31: # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
32: # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
33: # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34: #
1.18 millert 35: # Sponsored in part by the Defense Advanced Research Projects
36: # Agency (DARPA) and Air Force Research Laboratory, Air Force
37: # Materiel Command, USAF, under agreement number F39502-99-1-0512.
38: #
1.1 millert 39: # @configure_input@
40: #
1.18 millert 41: # $Sudo: Makefile.in,v 1.233 2003/04/16 00:42:09 millert Exp $
1.1 millert 42: #
43:
44: #### Start of system configuration section. ####
45:
46: srcdir = @srcdir@
47: authdir = $(srcdir)/auth
48: VPATH = @srcdir@
49:
50: # Compiler & tools to use
51: CC = @CC@
52: LEX = flex
53: YACC = @YACC@
54: NROFF = nroff
55:
1.8 millert 56: # Our install program supports extra flags...
1.2 millert 57: INSTALL = $(SHELL) $(srcdir)/install-sh -c
1.1 millert 58:
59: # Libraries
60: LIBS = @LIBS@
61: NET_LIBS = @NET_LIBS@
62: SUDO_LIBS = @SUDO_LIBS@ @AFS_LIBS@ $(LIBS) $(NET_LIBS)
63:
64: # C preprocessor flags
65: CPPFLAGS = -I. -I$(srcdir) @CPPFLAGS@
66:
67: # Usually -O and/or -g
68: CFLAGS = @CFLAGS@
69:
70: # Flags to pass to the link stage
71: LDFLAGS = @LDFLAGS@
72: SUDO_LDFLAGS = @SUDO_LDFLAGS@ $(LDFLAGS)
73:
74: # Where to install things...
75: prefix = @prefix@
76: exec_prefix = @exec_prefix@
77: bindir = @bindir@
78: sbindir = @sbindir@
79: sysconfdir = @sysconfdir@
80: mandir = @mandir@
81:
82: # Directory in which to install sudo.
83: sudodir = $(bindir)
84:
85: # Directory in which to install visudo
86: visudodir = $(sbindir)
87:
88: # Directory in which to install the sudoers file
89: sudoersdir = $(sysconfdir)
90:
91: # Directory in which to install the man page
92: mantype = @MANTYPE@
1.6 millert 93: mansectsu = @mansectsu@
94: mansectform = @mansectform@
95: mandirsu = $(mandir)/$(mantype)$(mansectsu)
96: mandirform = $(mandir)/$(mantype)$(mansectform)
1.1 millert 97:
98: # User and group ids the installed files should be "owned" by
99: install_uid = 0
100: install_gid = 0
101:
102: # User, group, and mode the sudoers file should be "owned" by (configure)
103: sudoers_uid = @SUDOERS_UID@
104: sudoers_gid = @SUDOERS_GID@
105: sudoers_mode = @SUDOERS_MODE@
106:
107: # Pass in paths and uid/gid + OS dependent defined
108: DEFS = @OSDEFS@ -D_PATH_SUDOERS=\"$(sudoersdir)/sudoers\" -D_PATH_SUDOERS_TMP=\"$(sudoersdir)/sudoers.tmp\" -DSUDOERS_UID=$(sudoers_uid) -DSUDOERS_GID=$(sudoers_gid) -DSUDOERS_MODE=$(sudoers_mode)
109:
110: #### End of system configuration section. ####
111:
112: SHELL = /bin/sh
113:
114: PROGS = @PROGS@
115:
1.21 ! millert 116: SRCS = alloc.c alloca.c check.c closefrom.c def_data.c defaults.c env.c err.c \
! 117: fileops.c find_path.c fnmatch.c getcwd.c getprogname.c getspwuid.c \
! 118: goodpath.c interfaces.c lex.yy.c lsearch.c logging.c parse.c parse.lex \
1.8 millert 119: parse.yacc set_perms.c sigaction.c snprintf.c strcasecmp.c strerror.c \
1.14 millert 120: strlcat.c strlcpy.c sudo.c sudo.tab.c testsudoers.c tgetpass.c utime.c \
1.20 millert 121: visudo.c zero_bytes.c $(AUTH_SRCS)
1.1 millert 122:
1.7 millert 123: AUTH_SRCS = auth/afs.c auth/aix_auth.c auth/bsdauth.c auth/dce.c auth/fwtk.c \
124: auth/kerb4.c auth/kerb5.c auth/pam.c auth/passwd.c auth/rfc1938.c \
1.14 millert 125: auth/secureware.c auth/securid.c auth/securid5.c auth/sia.c \
126: auth/sudo_auth.c
1.1 millert 127:
1.8 millert 128: HDRS = compat.h def_data.h defaults.h ins_2001.h ins_classic.h ins_csops.h \
129: ins_goons.h insults.h interfaces.h logging.h parse.h sudo.h sudo.tab.h \
1.16 millert 130: version.h auth/sudo_auth.h emul/err.h emul/fnmatch.h emul/search.h \
131: emul/utime.h
1.1 millert 132:
133: AUTH_OBJS = sudo_auth.o @AUTH_OBJS@
134:
135: PARSEOBJS = sudo.tab.o lex.yy.o alloc.o defaults.o
136:
1.8 millert 137: SUDOBJS = check.o env.o getspwuid.o goodpath.o fileops.o find_path.o \
138: interfaces.o logging.o parse.o set_perms.o sudo.o tgetpass.o \
1.20 millert 139: zero_bytes.o $(AUTH_OBJS) $(PARSEOBJS)
1.1 millert 140:
1.8 millert 141: VISUDOBJS = visudo.o fileops.o goodpath.o find_path.o $(PARSEOBJS)
1.1 millert 142:
143: TESTOBJS = interfaces.o testsudoers.o $(PARSEOBJS)
144:
145: LIBOBJS = @LIBOBJS@ @ALLOCA@
146:
1.19 millert 147: VERSION = 1.6.7p5
1.1 millert 148:
1.8 millert 149: DISTFILES = $(SRCS) $(HDRS) BUGS CHANGES HISTORY INSTALL INSTALL.configure \
1.1 millert 150: LICENSE Makefile.in PORTING README RUNSON TODO TROUBLESHOOTING \
1.8 millert 151: UPGRADE aclocal.m4 aixcrypt.exp config.guess config.h.in \
152: config.sub configure configure.in def_data.in fnmatch.3 indent.pro \
153: install-sh mkdefaults mkinstalldirs pathnames.h.in sample.pam \
154: sample.syslog.conf sample.sudoers sudo.cat sudo.man.in sudo.pod \
155: sudoers sudoers.cat sudoers.man.in sudoers.pod visudo.cat \
156: visudo.man.in visudo.pod auth/API
1.2 millert 157:
1.5 millert 158: BINFILES= BUGS CHANGES HISTORY LICENSE README TODO TROUBLESHOOTING \
1.2 millert 159: UPGRADE install-sh mkinstalldirs sample.syslog.conf sample.sudoers \
160: sudo sudo.cat sudo.man sudo.pod sudoers sudoers.cat sudoers.man \
161: sudoers.pod visudo visudo.cat visudo.man visudo.pod
162:
163: BINSPECIAL= INSTALL.binary Makefile.binary
1.1 millert 164:
165: SUDODEP = $(srcdir)/sudo.h $(srcdir)/compat.h $(srcdir)/defaults.h \
1.8 millert 166: $(srcdir)/logging.h config.h def_data.h pathnames.h
1.1 millert 167:
168: AUTHDEP = $(SUDODEP) $(authdir)/sudo_auth.h
169:
170: INSDEP = $(srcdir)/ins_2001.h $(srcdir)/ins_classic.h $(srcdir)/ins_csops.h \
171: $(srcdir)/ins_goons.h $(srcdir)/insults.h
172:
173: all: $(PROGS)
174:
175: .SUFFIXES: .o .c .h .lex .yacc .man .cat
176:
177: .c.o:
178: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $<
179:
180: .man.cat:
181: @rm -f $(srcdir)/$@
182: $(NROFF) -man $< > $(srcdir)/$@
183:
184: sudo: $(SUDOBJS) $(LIBOBJS)
185: $(CC) -o $@ $(SUDOBJS) $(LIBOBJS) $(SUDO_LDFLAGS) $(SUDO_LIBS)
186:
187: visudo: $(VISUDOBJS) $(LIBOBJS)
1.6 millert 188: $(CC) -o $@ $(VISUDOBJS) $(LIBOBJS) $(LDFLAGS) $(LIBS) $(NET_LIBS)
1.1 millert 189:
190: testsudoers: $(TESTOBJS) $(LIBOBJS)
191: $(CC) -o $@ $(TESTOBJS) $(LIBOBJS) $(LDFLAGS) $(LIBS) $(NET_LIBS)
192:
193: # Uncomment the following if you want "make clean" to clean the parser
194: @DEV@PARSESRCS = sudo.tab.h sudo.tab.c lex.yy.c
195:
196: # Uncomment the following if you intend to modify parse.yacc
197: @DEV@sudo.tab.c sudo.tab.h: parse.yacc
198: @DEV@ rm -f sudo.tab.h sudo.tab.c
199: @DEV@ $(YACC) -d -b sudo $(srcdir)/parse.yacc
200:
201: # Uncomment the following if you intend to modify parse.lex
202: @DEV@lex.yy.c: parse.lex
203: @DEV@ rm -f lex.yy.c
204: @DEV@ $(LEX) $(srcdir)/parse.lex
205:
1.8 millert 206: # Uncomment the following if you intend to modify def_data.in
207: @DEV@def_data.h def_data.c: def_data.in
208: @DEV@ perl $(srcdir)/mkdefaults -o def_data $(srcdir)/def_data.in
209:
1.1 millert 210: # Dependencies (not counting auth functions)
211: alloc.o: alloc.c $(SUDODEP)
212: check.o: check.c $(SUDODEP)
1.21 ! millert 213: closefrom.o: closefrom.c config.h
1.8 millert 214: env.o: env.c $(SUDODEP)
1.16 millert 215: err.o: err.c config.h compat.h emul/err.h
1.1 millert 216: fileops.o: fileops.c $(SUDODEP)
217: find_path.o: find_path.c $(SUDODEP)
1.16 millert 218: getprogname.o: getprogname.c config.h
1.1 millert 219: getspwuid.o: getspwuid.c $(SUDODEP)
220: goodpath.o: goodpath.c $(SUDODEP)
221: logging.o: logging.c $(SUDODEP)
1.8 millert 222: set_perms.o: set_perms.c $(SUDODEP)
1.1 millert 223: tgetpass.o: tgetpass.c $(SUDODEP)
224: visudo.o: visudo.c $(SUDODEP) version.h
225: sudo.o: sudo.c $(SUDODEP) interfaces.h version.h
226: interfaces.o: interfaces.c $(SUDODEP) interfaces.h
227: testsudoers.o: testsudoers.c $(SUDODEP) parse.h interfaces.h
228: parse.o: parse.c $(SUDODEP) parse.h interfaces.h
229: lex.yy.o: lex.yy.c $(SUDODEP) parse.h sudo.tab.h
1.8 millert 230: sudo.tab.o: sudo.tab.c $(SUDODEP) parse.h sudo.tab.c sudo.tab.h
231: defaults.o: defaults.c $(SUDODEP) def_data.c auth/sudo_auth.h
1.1 millert 232: fnmatch.o: fnmatch.c config.h compat.h emul/fnmatch.h
233: getcwd.o: getcwd.c config.h compat.h
234: lsearch.o: lsearch.c config.h compat.h emul/search.h
235: snprintf.o: snprintf.c config.h compat.h
236: strcasecmp.o: strcasecmp.c config.h
1.14 millert 237: strlcat.o: strlcat.c config.h
238: strlcpy.o: strlcpy.c config.h
1.1 millert 239: strerror.o: strerror.c config.h
240: utime.o: utime.c config.h pathnames.h compat.h emul/utime.h
241:
242: # Authentication functions live in "auth" dir and so need extra care
243: sudo_auth.o: $(authdir)/sudo_auth.c $(AUTHDEP) $(INSDEP)
244: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/sudo_auth.c
245: afs.o: $(authdir)/afs.c $(AUTHDEP)
246: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/afs.c
247: aix_auth.o: $(authdir)/aix_auth.c $(AUTHDEP)
248: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/aix_auth.c
1.7 millert 249: bsdauth.o: $(authdir)/bsdauth.c $(AUTHDEP)
250: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/bsdauth.c
1.1 millert 251: dce.o: $(authdir)/dce.c $(AUTHDEP)
252: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/dce.c
253: fwtk.o: $(authdir)/fwtk.c $(AUTHDEP)
254: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/fwtk.c
255: kerb4.o: $(authdir)/kerb4.c $(AUTHDEP)
256: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/kerb4.c
257: kerb5.o: $(authdir)/kerb5.c $(AUTHDEP)
258: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/kerb5.c
259: pam.o: $(authdir)/pam.c $(AUTHDEP)
260: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/pam.c
261: passwd.o: $(authdir)/passwd.c $(AUTHDEP)
262: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/passwd.c
263: rfc1938.o: $(authdir)/rfc1938.c $(AUTHDEP)
264: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/rfc1938.c
265: secureware.o: $(authdir)/secureware.c $(AUTHDEP)
266: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/secureware.c
267: securid.o: $(authdir)/securid.c $(AUTHDEP)
268: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/securid.c
1.14 millert 269: securid5.o: $(authdir)/securid5.c $(AUTHDEP)
270: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/securid5.c
1.1 millert 271: sia.o: $(authdir)/sia.c $(AUTHDEP)
272: $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(OPTIONS) $(authdir)/sia.c
273:
1.6 millert 274: sudo.man.in: $(srcdir)/sudo.pod
1.1 millert 275: @rm -f $(srcdir)/$@
1.14 millert 276: ( cd $(srcdir); mansectsu=`echo @MANSECTSU@|tr A-Z a-z`; mansectform=`echo @MANSECTFORM@|tr A-Z a-z`; sed -n -e 1d -e '/^=pod/q' -e 's/^/.\\" /p' sudo.pod > $@; pod2man --quotes=none --date="`date '+%B %e, %Y'`" --section=$$mansectsu --release=$(VERSION) --center="MAINTENANCE COMMANDS" sudo.pod | sed -e "s/(5)/($$mansectform)/" -e "s/(8)/($$mansectsu)/" >> $@ )
1.6 millert 277:
278: sudo.man: sudo.man.in
279: CONFIG_FILES=$@ CONFIG_HEADERS= sh ./config.status
1.1 millert 280:
281: sudo.cat: sudo.man
282:
1.6 millert 283: visudo.man.in: $(srcdir)/visudo.pod
1.1 millert 284: @rm -f $(srcdir)/$@
1.14 millert 285: ( cd $(srcdir); mansectsu=`echo @MANSECTSU@|tr A-Z a-z`; mansectform=`echo @MANSECTFORM@|tr A-Z a-z`; sed -n -e 1d -e '/^=pod/q' -e 's/^/.\\" /p' visudo.pod > $@; pod2man --quotes=none --date="`date '+%B %e, %Y'`" --section=$$mansectsu --release=$(VERSION) --center="MAINTENANCE COMMANDS" visudo.pod | sed -e "s/(5)/($$mansectform)/" -e "s/(8)/($$mansectsu)/" >> $@ )
1.6 millert 286:
287: visudo.man: visudo.man.in
288: CONFIG_FILES=$@ CONFIG_HEADERS= sh ./config.status
1.1 millert 289:
290: visudo.cat: visudo.man
291:
1.6 millert 292: sudoers.man.in: $(srcdir)/sudoers.pod
1.1 millert 293: @rm -f $(srcdir)/$@
1.14 millert 294: ( cd $(srcdir); mansectsu=`echo @MANSECTSU@|tr A-Z a-z`; mansectform=`echo @MANSECTFORM@|tr A-Z a-z`; sed -n -e 1d -e '/^=pod/q' -e 's/^/.\\" /p' sudoers.pod > $@; pod2man --quotes=none --date="`date '+%B %e, %Y'`" --section=$$mansectform --release=$(VERSION) --center="MAINTENANCE COMMANDS" sudoers.pod | sed -e "s/(5)/($$mansectform)/" -e "s/(8)/($$mansectsu)/" >> $@ )
1.6 millert 295:
296: sudoers.man:: sudoers.man.in
297: CONFIG_FILES=$@ CONFIG_HEADERS= sh ./config.status
1.1 millert 298:
299: sudoers.cat: sudoers.man
300:
301: install: install-dirs install-binaries install-sudoers install-man
302:
303: install-dirs:
1.12 millert 304: $(SHELL) $(srcdir)/mkinstalldirs $(DESTDIR)$(sudodir) \
305: $(DESTDIR)$(visudodir) $(DESTDIR)$(sudoersdir) \
306: $(DESTDIR)$(mandirsu) $(DESTDIR)$(mandirform)
1.1 millert 307:
308: install-binaries: $(PROGS)
1.12 millert 309: $(INSTALL) -O $(install_uid) -G $(install_gid) -M 4111 -s sudo $(DESTDIR)$(sudodir)/sudo
310: $(INSTALL) -O $(install_uid) -G $(install_gid) -M 0111 -s visudo $(DESTDIR)$(visudodir)/visudo
1.1 millert 311:
312: install-sudoers:
1.12 millert 313: test -f $(DESTDIR)$(sudoersdir)/sudoers || \
1.8 millert 314: $(INSTALL) -O $(sudoers_uid) -G $(sudoers_gid) -M $(sudoers_mode) \
1.12 millert 315: $(srcdir)/sudoers $(DESTDIR)$(sudoersdir)/sudoers
1.1 millert 316:
317: install-man:
1.12 millert 318: $(INSTALL) -O $(install_uid) -G $(install_gid) -M 0444 @mansrcdir@/sudo.$(mantype) $(DESTDIR)$(mandirsu)/sudo.$(mansectsu)
319: $(INSTALL) -O $(install_uid) -G $(install_gid) -M 0444 @mansrcdir@/visudo.$(mantype) $(DESTDIR)$(mandirsu)/visudo.$(mansectsu)
320: $(INSTALL) -O $(install_uid) -G $(install_gid) -M 0444 @mansrcdir@/sudoers.$(mantype) $(DESTDIR)$(mandirform)/sudoers.$(mansectform)
1.1 millert 321: @MAN_POSTINSTALL@
1.4 millert 322:
323: check:
324: @echo nothing to check
1.1 millert 325:
326: tags: $(SRCS)
327: ctags $(SRCS)
328:
329: TAGS: $(SRCS)
330: etags $(SRCS)
331:
332: clean:
333: -rm -f *.o $(PROGS) testsudoers core sudo.core visudo.core \
334: testsudoers.core
335:
336: mostlyclean: clean
337:
338: distclean: clean
1.6 millert 339: -rm -f Makefile *.man pathnames.h config.h config.status config.cache \
1.3 millert 340: config.log $(PARSESRCS)
1.1 millert 341:
342: clobber: distclean
343:
344: realclean: distclean
345: rm -f TAGS tags
346:
347: cleandir: realclean
348:
1.6 millert 349: dist:
1.1 millert 350: rm -f ../sudo-$(VERSION).tar.gz
351: ( cd .. ; TF="/tmp/sudo.dist$$$$" ; rm -f $$TF ; for i in $(DISTFILES) ; \
352: do echo sudo-$(VERSION)/$$i >> $$TF ; done ; \
353: tar Ocf sudo-$(VERSION).tar \
354: `cat $$TF` && gzip --best sudo-$(VERSION).tar && rm -f $$TF)
355: ls -l ../sudo-$(VERSION).tar.gz
1.2 millert 356:
357: bindist:
358: @mkdir tmp.`arch -l`
359: @mkdir tmp.`arch -l`/sudo-$(VERSION)
1.10 millert 360: ( \
361: tdir=tmp.`arch -l`/sudo-$(VERSION) ; \
1.2 millert 362: for i in $(BINFILES) ; do \
1.10 millert 363: if [ -f $$i ]; then \
364: cp $$i $$tdir ; \
1.2 millert 365: elif [ -f $(srcdir)/$$i ]; then \
1.10 millert 366: cp $(srcdir)/$$i $$tdir ; \
1.2 millert 367: else \
1.10 millert 368: echo cannot find $$i ; \
369: exit 1 ; \
1.2 millert 370: fi ; \
371: done ; \
1.10 millert 372: cp $(srcdir)/INSTALL.binary $$tdir/INSTALL ; \
373: sed -e 's/@_MANTYPE@/$(mantype)/g' -e 's/@_mansectsu@/$(mansectsu)/g' \
374: -e 's/@_mansectform@/$(mansectform)/g' $(srcdir)/Makefile.binary \
375: > $$tdir/Makefile ; \
1.2 millert 376: )
1.10 millert 377: strip sudo
378: strip visudo
379: ( cd tmp.`arch -l` && tar Ocf ../sudo-$(VERSION)-`arch -l`.tar sudo-$(VERSION) )
1.2 millert 380: gzip --best sudo-$(VERSION)-`arch -l`.tar
381: rm -rf tmp.`arch -l`