/[pdpsoft]/nl.nikhef.pdp.lrms-py-generic/trunk/Makefile
ViewVC logotype

Contents of /nl.nikhef.pdp.lrms-py-generic/trunk/Makefile

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1960 - (show annotations) (download)
Tue Sep 28 11:55:06 2010 UTC (11 years, 7 months ago) by templon
File size: 17370 byte(s)
Added subversion headers.

1 #
2 # @(#)$Id: Makefile,v 1.1 2009/02/26 16:04:13 templon Exp $
3 # Version: $Rev$
4 # LastMod: $Date$
5 # Source: $URL$
6 #
7
8 #######################################################
9 #
10 # General settings
11 #
12 #######################################################
13
14 .PHONY: release minorversion majorversion tagversion
15 .PHONY: pack rpm pkg prep clean dist userdoc apidoc check
16 .PHONY: checkmndfiles checkcfgtags checkdprfiles
17 .PHONY: checksrctags header help tagstable markobsolete
18
19 ####################################################################
20 # Linux specific settings
21 ####################################################################
22 #
23 #
24
25 CFG_MK = config.mk
26 include $(CFG_MK)
27 _module = $(NAME)
28 _vpfx = $(NAME)_
29 _vtag = $(subst -,_,$(subst .,_,$(_vpfx)$(VERSION)$(BRANCH)))
30 _prodname = $(NAME)-$(VERSION)$(BRANCH)
31 _prodtar = $(_prodname).src.tgz
32
33 # if INSTALLPREFIX is defined, install files go there.
34 # Otherwise use TARGPREFIX also as place to install files.
35
36 ifeq ($(INSTALLPREFIX),)
37 INSTALLPREFIX := $(TARGPREFIX)
38 endif
39
40 # some SVN commands (ckeckout, update, commit) are by default quiet unless
41 # SVN_VERB is defined
42 _svn := svn --quiet
43 ifneq ($(SVN_VERB),)
44 _svn := svn
45 endif
46
47 _os := $(shell uname -s)
48 _date := $(shell date '+%d/%m/%y %H:%M')
49
50 ###############################################################################
51 # Macros
52 ###############################################################################
53
54 # _error, message
55 # _warn, message
56 # _fatal,err msg,exit code: print "err msg" and quit with "exit code" (the if
57 # clause is just used to group the commands)
58 _fatal = if true; then echo "[FATAL] $(1)">&2; exit $(2); fi
59 _error = echo "[ERROR] $(1)">&2
60 _warn = echo "[WARN] $(1)">&2
61
62 ###############################################################################
63 # SVN
64 ###############################################################################
65 _SVN_BRNCH_SDIR := branches
66 _SVN_TAG_SDIR := tags
67 _SVN_TRNK_SDIR := trunk
68 _SVN_ROOT_PATH := $(shell svn info | grep "Repository Root" | awk '{print $NF}')
69
70 ###################################################################
71 # Create linux specific build directories
72 ###################################################################
73
74 envdir:: $(_srcrpmdir) $(_rpmdir)
75 $(_srcrpmdir):
76 _rpmbuild := $(shell [ -x /usr/bin/rpmbuild ] && echo rpmbuild || echo rpm)
77 _builddir := $(shell rpm --eval %_builddir)
78 _specdir := $(shell rpm --eval %_specdir)
79 _sourcedir := $(shell rpm --eval %_sourcedir)
80 _srcrpmdir := $(shell rpm --eval %_srcrpmdir)
81 _rpmdir := $(shell rpm --eval %_rpmdir)
82
83
84 _rpm := $(_rpmbuild) --quiet
85 ifneq ($(RPM_VERB),)
86 _rpm := $(_rpmbuild)
87 endif
88 mkdir -p $(_srcrpmdir)
89 $(_rpmdir):
90 mkdir -p $(_rpmdir)
91
92 ####################################################################
93 # Create new release/version/majorversion
94 ####################################################################
95 #
96 # These targets update the X.Y.Z components of the version in the
97 # config file and then commit the current version, tagging all
98 # files with the release number from the config file. Also
99 # wires the current date and time into the config file. Also
100 # adds an entry to the ChangeLog.
101
102 # check that the requested operation is allowed:
103 # - refuse to run if SVN passwords/credentials caching is off
104 # - forbid committing in tags/ directory
105
106 release: config.tmp
107 @echo '${_SVN_ROOT_PATH}'
108
109 minorversion: _checkop config.tmp
110 @echo '[INFO] increasing minorversion number x.<X>.x and timestamp..'
111 @perl <config.tmp >$(CFG_MK) -e 'while (<>) ' \
112 -e '{ s/^(VERSION=\d+\.)(\d+)(\..*)$$/$$1.($$2+1).".0"/e;' \
113 -e ' s/^(RELEASE=)(\d+)(.*)$$/$$1."1".$$3/e; print; }'
114 @$(MAKE) tagversion
115
116 majorversion: _checkop config.tmp
117 @echo '[INFO] increasing majorversion number <X>.x.x and timestamp..'
118 @perl <config.tmp >$(CFG_MK) -e 'while (<>)' \
119 -e '{ s/^(VERSION=)(\d+)(\..*)$$/$$1.($$2+1).".0.0"/e;' \
120 -e ' s/^(RELEASE=)(\d+)(.*)$$/$$1."1".$$3/e; print; }'
121 @$(MAKE) tagversion
122
123 config.tmp: $(CFG_MK)
124 @$(_svn) update .
125 @sed <$(CFG_MK) >config.tmp '/^DATE=/d'
126 @echo 'DATE=$(_date)' >>config.tmp
127 @cp $(CFG_MK) $(CFG_MK)~
128
129 tagversion: _checkop
130 @echo "[INFO] svn committing new release: $(VERSION)"
131 @rm -f config.tmp
132 @perl -e '$$date=`date +%Y-%m-%d`;' \
133 -e 'chomp($$date);' \
134 -e '$$login=getlogin();' \
135 -e '$$logstr="<unknown>";' \
136 -e '$$logstr=(getpwnam($$login))[6] if defined $$login;' \
137 -e 'print $$date." $$logstr\n\n"; '\
138 -e 'print "\t* Release: $(NAME)-$(VERSION)\n";' >ChangeLog.tmp
139 @if [ "$(EDITOR)" -a -x "$(EDITOR)" ]; then \
140 perl -e 'print "\t- [your comment here]"' >>ChangeLog.tmp; \
141 $(EDITOR) ChangeLog.tmp; \
142 perl -e '$$/=undef; $$text=<>; $$text =~ s/\s*\n*$$//s;' \
143 -e 'print "$$text\n\n"' < ChangeLog.tmp > ChangeLog.tmp2; \
144 mv ChangeLog.tmp2 ChangeLog.tmp; \
145 else \
146 echo "[INFO] Enter ChangeLog comment (hit CTRL+D to stop):"; \
147 perl -e '$$text=""; while(<>) { $$text .= "\t$$_" };' \
148 -e '$$text =~ s/^\s*(.+?)\s*\n*$$/$$1/s;' \
149 -e 'chomp($$text); print "\t- $$text\n\n"' >>ChangeLog.tmp; \
150 fi
151 @if [ ! -r ChangeLog ] ; then touch ChangeLog ; $(_svn) add ChangeLog ; fi
152 @cp ChangeLog.tmp /tmp/ChangeLog.tmp.$$$
153 @cat ChangeLog >>ChangeLog.tmp
154 @mv ChangeLog.tmp ChangeLog
155 @$(_svn) commit -F /tmp/ChangeLog.tmp.$$$
156 @rm -f /tmp/ChangeLog.tmp.$$$
157 @$(MAKE) _tag_dir=$(_vtag) svntag
158 @$(MAKE) _tag_dir=latest _trg_tag=$(_vtag) svnextag
159 @$(MAKE) tagstable
160
161 # auxiliary target to build an SVN tag. Input parameter is _tag_dir, which
162 # is the leaf subdirectory (intermediate subdirectories are built transparently);
163 # _co_root is the checkout root,
164 # _co_locl is the local path to the module in the checkout
165 # _co_subd is the sub-path to the module in the checkout
166 # that is:
167 # $pwd == $_co_root/$_co_locl == $_co_root/$_co_subd/$_module
168 #
169 _svn_root = $(shell svn info | sed -nr 's/^.+Root:\s+(\S+)$$/\1/ p')
170 _svn_url = $(shell svn info | sed -nr 's/^URL:\s+(\S+)$$/\1/ p')
171 _co_locl = $(shell echo $(_svn_url) | sed -nr 's%^\S+?/$(_SVN_TRNK_SDIR)/%% p')
172 _co_subd = $(shell echo $(_co_locl) | sed -nr 's%/$(_module)$$%% p')
173 # don't ask me why this doesn't work...
174 # _co_root = $(shell echo -n $(PWD) |\
175 # sed -r 's%^(.+?)/(\S*$(_SVN_TRNK_SDIR)/)?$(_co_locl)$$%\1%' | sed -r 's%/*$$%%')
176 _co_root = $(shell pwd | \
177 perl -e '$$a=<>; $$a=~s%^(\S+?)/([^/]*$(_SVN_TRNK_SDIR)/)?$(_co_locl)$$%$$1%; print $$a' |\
178 sed -r 's%/*$$%%')
179 ifneq ($(QTTR_CO_ROOT),)
180 _co_root = $(QTTR_CO_ROOT)
181 endif
182 svntag: _checkop
183 @if [ "$(DEBUG)" ]; then\
184 echo "[DEBUG] _svn_root=$(_svn_root)" >&2;\
185 echo "[DEBUG] _svn_url=$(_svn_url)" >&2;\
186 echo "[DEBUG] _co_locl=$(_co_locl)" >&2;\
187 echo "[DEBUG] _co_subd=$(_co_subd)" >&2;\
188 echo "[DEBUG] _co_root=$(_co_root)" >&2;\
189 fi
190 @[ "$(_tag_dir)" ] || $(call _fatal,no tag directory specified,1)
191 @[ "$(_co_root)" -a "$(_svn_root)" ]\
192 || $(call _fatal,checkout and/or SVN root not defined,2)
193 @echo "[INFO] svn tagging new release: $(_tag_dir)"
194 @src_path=$$PWD;\
195 dst_url=$(_svn_root)/$(_SVN_TAG_SDIR)/$(_co_subd)/$(_module);\
196 dst_path=$(_co_root)/$(_SVN_TAG_SDIR)/$(_co_subd)/$(_module);\
197 [ "$(DEBUG)" ] && echo "[DEBUG] dst_url=$$dst_url" >&2;\
198 [ "$(DEBUG)" ] && echo "[DEBUG] dst_path=$$dst_path" >&2;\
199 aux=$(_co_subd);\
200 [ "$(DEBUG)" ] && echo "[DEBUG] aux=$$aux" >&2;\
201 saux='';\
202 made_sdir=0;\
203 tag_mod_root='';\
204 while [ "$$aux" ]; do\
205 sdir=`echo -n $$aux | sed -nr 's%^([^/]+).*?$$%\1% p'`;\
206 [ $$made_sdir -eq 0 ] && tag_mod_root=$$sdir;\
207 [ "$(DEBUG)" ] && echo "[DEBUG] sdir=$$sdir" >&2;\
208 saux=$$saux/$$sdir;\
209 dst_surl=$(_svn_root)/$(_SVN_TAG_SDIR)/$$saux;\
210 [ "$(DEBUG)" ] && echo "[DEBUG] dst_surl=$$dst_surl" >&2;\
211 if (svn info $$dst_surl 2>&1 | egrep "\(Not a valid URL\)") >/dev/null; then\
212 $(_svn) mkdir $$dst_surl -m "Made directory $(_SVN_TAG_SDIR)$$saux" \
213 || $(call _fatal,$$dst_surl: cant make svn dir,3);\
214 fi;\
215 aux=`echo -n $$aux | sed -nr "s%^$$sdir/%% p"`;\
216 [ "$(DEBUG)" ] && echo "[DEBUG] aux=$$aux" >&2;\
217 made_sdir=1;\
218 done;\
219 if (svn info $$dst_url 2>&1 | egrep "\(Not a valid URL\)") >/dev/null; then\
220 [ "$(DEBUG)" ] && echo "[DEBUG] svn mkdir $$dst_url" >&2;\
221 $(_svn) mkdir $$dst_url -m "Made directory $(_SVN_TAG_SDIR)/$(_co_subd)/$(_module)"\
222 || $(call _fatal,$$dst_url: cant make svn dir,4);\
223 fi;\
224 [ "$(DEBUG)" ] && echo "[DEBUG] svn copy $$src_path $$dst_url/$(_tag_dir)" >&2;\
225 $(_svn) copy $$src_path $$dst_url/$(_tag_dir) -m "Added tag $(_module)/$(_tag_dir)" \
226 || $(call _fatal,$$src_path: cant svn copy to $$dst_url/$(_tag_dir),5);\
227 [ "$(DEBUG)" ] && echo "[DEBUG] svn co $$dst_url/$(_tag_dir) $$dst_path/$(_tag_dir)" >&2;\
228 $(_svn) checkout $$dst_url/$(_tag_dir) $$dst_path/$(_tag_dir) \
229 || $(call _fatal,$$dst_url/$(_tag_dir): cant svn check out,6)
230
231
232 svnextag: _checkop
233 @[ "$(_tag_dir)" ] || $(call _fatal,no tag directory specified,1)
234 @[ "$(_trg_tag)" ] || $(call _fatal,no target tag specified,2)
235 @echo "[INFO] svn tagging external reference: $(_tag_dir) -> $(_trg_tag)"
236 @[ "$(_co_root)" -a "$(_svn_root)" ]\
237 || $(call _fatal,checkout and/or SVN root not defined,3)
238 @src_sdir=$(_SVN_TAG_SDIR)/$(_co_subd)/$(_module)/$(_trg_tag);\
239 src_url=$(_svn_root)/$$src_sdir;\
240 src_path=$(_co_root)/$$src_sdir;\
241 dst_sdir=$(_SVN_TAG_SDIR)/$(_co_subd)/$(_module)/$(_tag_dir);\
242 dst_url=$(_svn_root)/$$dst_sdir;\
243 dst_path=$(_co_root)/$$dst_sdir;\
244 if (svn info $$dst_url 2>&1 | egrep "\(Not a valid URL\)") >/dev/null; then\
245 $(_svn) mkdir $$dst_url -m "Made directory $$dst_surl"\
246 || $(call _fatal,$$dst_surl: cant make svn dir,4);\
247 cd $(_co_root)/$(_SVN_TAG_SDIR);\
248 $(_svn) checkout $$dst_url $$dst_path \
249 || $(call _fatal,$$dst_url: cant svn check out,5);\
250 else\
251 $(_svn) checkout $$dst_url $$dst_path \
252 || $(call _fatal,$$dst_url: cant svn check out,6);\
253 $(_svn) propdel svn:externals $$dst_path \
254 || $(call _fatal,$$dst_path: cant delete svn:externals,7);\
255 rm -rf $$dst_path/*;\
256 fi;\
257 ext_rev=`svn info $$src_url | sed -nr 's%^Revision:\s+(\S+)$$%\1% p'`;\
258 [ "$$ext_rev" ] || $(call _fatal,cant determine external revision,8);\
259 $(_svn) propset svn:externals "$(_trg_tag) -r$$ext_rev $$src_url" $$dst_path \
260 || $(call _fatal,$$dst_path: cant set svn:externals,9);\
261 $(_svn) commit $$dst_path -m "Added tag $(_module)/$(_tag_dir) -> $(_trg_tag)" \
262 || $(call _fatal,$$dst_path: cant svn commit,10);\
263 $(_svn) update $$dst_path || $(call _fatal,$$dst_path: cant svn update,11)
264
265
266 tagstable: _checkop
267 @echo "[INFO] tagging 'stable' release"
268 @prompt='Do you want to tag this release as 'stable'? [no]: ';\
269 while read -p "$$prompt" ans || exit 1; do\
270 [ -z $$ans ] && ans='no';\
271 case $$ans in\
272 [Yy]|[Yy]es)\
273 _tag_dir=stable _trg_tag=$(_vtag) $(MAKE) svnextag;\
274 break;\
275 ;;\
276 [Nn]|[Nn]o)\
277 break;\
278 ;;\
279 *)\
280 prompt='Answer either "yes" or not at all: ';\
281 esac;\
282 done
283
284
285 # mark as OBSOLETE (no SVN tag is added). A message to be added to config.mk
286 # can be passed through the variable OBSOLETE_MSG
287 markobsolete: _checkop
288 @[ -w config.mk ]\
289 || $(call _fatal,config.mk: file missing or not writable,1)
290 @if [ "`sed -nr '/^\s*OBSOLETE/ p' config.mk`" ]; then\
291 $(call _fatal,already marked as OBSOLETE,2);\
292 fi
293 @echo "[INFO] marking as OBSOLETE"
294 @obs_msg='1';\
295 if [ ! -z "$$OBSOLETE_MSG" ]; then\
296 obs_msg="$$OBSOLETE_MSG";\
297 fi;\
298 echo OBSOLETE="$$obs_msg" >> config.mk
299 @$(_svn) commit -m 'Module marked as OBSOLETE'\
300 || $(call _fatal,cant svn commit,3)
301
302
303
304 ####################################################################
305 # Build distributions in tar & RPM/PKG format
306 ####################################################################
307 #
308 # These targets make distribution tar files and PKGs/RPMs from the
309 # CVS repository, using the version declared in the config file.
310 # The checked-out files in the current directory are neither
311 # modified, nor read (apart from the config file).
312 #
313 # "pack" and "rpm" built from the sources in the current directory.
314 #
315 #
316 # The prep:: target allows the including makefile to specify actions
317 # required to process the files at distribution pack time.
318 #
319 # These targets make distribution tar files and PKGs/RPMs based on the
320 # checked-out sources in the current directory. No connection to
321 # the CVS repository is required, and the files do not need to be
322 # committed. The RPM version numbers are generated from the
323 # version number specified in the config file.
324 #
325
326 pack: envdir
327 @echo packing distribution...
328 @rm -rf $(_builddir)/$(_prodname)
329 @rm -f $(_sourcedir)/$(_prodtar)
330 @mkdir -p $(_builddir)/$(_prodname)
331 @find . -path '*CVS*' -prune -o -type f -print >files.tmp
332 @tar cfT - files.tmp |(cd $(_builddir)/$(_prodname) ; tar xf -)
333 @rm -f files.tmp
334 @[ ! -f specfile.spec -a -f specfile.cin ] \
335 && cp specfile.cin \
336 $(_builddir)/$(_prodname)/specfile.spec \
337 || : ;
338 @cp cl2rpm \
339 $(_builddir)/$(_prodname)/ > /dev/null 2>&1 \
340 || : ;
341 @cd $(_builddir)/$(_prodname) ; \
342 sed <$(CFG_MK) >config.tmp \
343 -e 's%^RELEASE=\(.*\)%RELEASE=\1%' \
344 -e 's%^VERSION=.*%&$(BRANCH)%' ; \
345 mv config.tmp $(CFG_MK) ; \
346 echo 'TARFILE=$(_prodtar)' >>$(CFG_MK) ; \
347 echo 'PROD=\#' >>$(CFG_MK) ; \
348 $(MAKE) config.sh ;\
349 $(MAKE) prep ;\
350 test -n "$(_test_dep)" && rm -f $(_test_dep) ;\
351 rm -f config.sh
352 @cd $(_builddir) ; tar czf $(_sourcedir)/$(_prodtar) $(_prodname)
353
354 filelist: install
355 #
356 # ---- DO NOT MODIFY BELOW THIS LINE --- NEEDED FOR SPECFILE
357 #
358 @find $(INSTALLPREFIX) -type d | sed -e 's^$(INSTALLPREFIX)g' -e 's/^/%dir /' >> $(INSTALLPREFIX)/.filelist
359 @find $(INSTALLPREFIX) ! -type d -a ! -name ".filelist" | sed -e 's^$(INSTALLPREFIX)g' >> $(INSTALLPREFIX)/.filelist
360 @echo File found in distribution
361 @cat $(INSTALLPREFIX)/.filelist
362
363 spec: pack
364 @echo generating specfile.spec ...
365 @cd $(_builddir)/$(_prodname) ; \
366 $(MAKE) config.sh ;\
367 ./config.sh <specfile.spec >$(_specdir)/$(_prodname).spec
368 @test -f ChangeLog && \
369 cl2rpm ChangeLog \
370 >>$(_specdir)/$(_prodname).spec || true
371
372 rpm: spec
373 @echo building rpm ...
374 @cd $(_specdir) ; $(_rpmbuild) -ba $(_specdir)/$(_prodname).spec
375
376 pkg: spec
377 @echo building pkg ...
378 @cd $(_specdir) ; $(_pkgbuild) -f $(_specdir)/$(_prodname).spec
379
380 prep::
381
382 #####################################################################
383 # Create substitution script
384 ####################################################################
385 #
386 # This target reads the config file and creates a shell script which
387 # can substitute variables of the form @VAR@ for all config
388 # variables VAR. The messing around with the temporary makefile is
389 # to ensure that any recursive or external references in the
390 # variable values are evaluated by "make" in the same context as
391 # when the config file is included in the makefile.
392
393 config.sh: Makefile $(_test_dep)
394 @cp /dev/null makefile.tmp
395 @echo include $(CFG_MK) >>makefile.tmp
396 @echo dumpvars: >>makefile.tmp
397 @cat $(CFG_MK) paths.mk | \
398 perl >>makefile.tmp -e 'my $$fmt = "\t\@echo \"-e \\\"s\@%s\@\$$(%s)g\\\" \\\\\"" ; while (<>) { $$v{$$1}=1 if /^([A-Za-z0-9_]+)\s*:?=.*$$/; } map { printf "$$fmt >>config.sh\n", $$_, $$_; } sort(keys(%v)); print "\n"; '
399 @echo '#!/bin/sh' >config.sh
400 @echo 'sed \' >>config.sh
401 @$(MAKE) -f makefile.tmp dumpvars >/dev/null
402 @echo ' -e "s/\@MSG\@/ ** Generated file : do not edit **/"'>>config.sh
403 @chmod oug+x config.sh
404 @rm makefile.tmp
405
406 ####################################################################
407 # Configure
408 ####################################################################
409
410 %:: %.cin config.sh
411 @echo configuring $@ ...
412 @rm -f $@ ; cp $< $@
413 @./config.sh <$< >$@ ; chmod oug-w $@
414
415 %.$(MANSECT):: %.$(MANSECT).man.cin
416 @echo creating $@ ...
417 @./config.sh <$< >$@ ; chmod oug-w $@
418
419 configure: $(shell find . -name \*\.cin 2>/dev/null | sed -e 's/.cin//' || echo)
420
421 ####################################################################
422 # Install
423 ####################################################################
424
425 install: configure
426 @echo installing in $(INSTALLPREFIX) ...
427 #
428 # MODIFY location of installed scripts/binaries here
429 #
430
431 ifdef MYMODS
432 @mkdir -p $(INSTALLPREFIX)/$(MODSUFFIX)
433 for i in $(MYMODS) ; do \
434 install -m 0444 $$i $(INSTALLPREFIX)/$(MODSUFFIX) ; \
435 done || :
436 endif
437
438 ifdef MYDOCS
439 @mkdir -p $(INSTALLPREFIX)/$(DOCSUFFIX)
440 for i in $(MYDOCS) ; do \
441 install -m 0444 $$i $(INSTALLPREFIX)/$(DOCSUFFIX) ; \
442 done || :
443 endif
444
445 ifdef MYCONFIGS
446 @mkdir -p $(INSTALLPREFIX)/$(CONFIGSUFFIX)
447 @for i in $(MYCONFIGS) ; do \
448 install -m 0444 $$i $(INSTALLPREFIX)/$(CONFIGSUFFIX) ; \
449 done || :
450 endif
451
452 ifdef MYSCRIPTS
453 @mkdir -p $(INSTALLPREFIX)/$(SCRIPTSUFFIX)
454 @for i in $(MYSCRIPTS) ; do \
455 install -m 0555 $$i $(INSTALLPREFIX)/$(SCRIPTSUFFIX) ; \
456 done || :
457 endif
458
459 ifdef MYTESTFILES
460 @mkdir -p $(INSTALLPREFIX)/$(TESTSUFFIX)
461 @for i in $(MYTESTFILES) ; do \
462 install -m 0555 $$i $(INSTALLPREFIX)/$(TESTSUFFIX) ; \
463 done || :
464 endif
465
466 ifdef MYPLUGINS
467 @mkdir -p $(INSTALLPREFIX)/$(PLUGINSUFFIX)
468 @for i in $(MYPLUGINS) ; do \
469 install -m 0555 $$i $(INSTALLPREFIX)/$(PLUGINSUFFIX) ; \
470 done || :
471 endif
472
473 ####################################################################
474
475 clean::
476 @echo cleaning common files ...
477 @rm -f config.sh config.tex
478 @rm -f `find . -name '*~'`
479 @rm -f `find . -name '*#'`
480 @rm -f `find . -name '*.tmp'`
481 @rm -f `find . -name \*\.cin 2>/dev/null | sed -e 's/.cin//'`
482 dist: pack
483
484
485

grid.support@nikhef.nl
ViewVC Help
Powered by ViewVC 1.1.28