1 # Makefile to build sysstat commands
2 # # (C) 1999-2012 Sebastien GODARD (sysstat <at> orange.fr)
4 # Version and package name
5 VERSION = @PACKAGE_VERSION@
6 PACKAGE = @PACKAGE_NAME@
8 PACKAGE_TARNAME = $(PACKAGE)-$(VERSION)
18 # Full path to prevent from using aliases
21 CHKCONFIG = @PATH_CHKCONFIG@
23 INSTALL_DATA = @INSTALL_DATA@
24 INSTALL_BIN = @INSTALL_BIN@
26 HAVE_SENSORS = @HAVE_SENSORS@
29 ifeq ($(HAVE_SENSORS),y)
30 LFSENSORS = @LFSENSORS@
31 DFSENSORS = @DFSENSORS@
39 DESTDIR = $(RPM_BUILD_ROOT)
41 # These two variables are needed by other ones (eg bindir)
43 exec_prefix = @exec_prefix@
44 datarootdir = @datarootdir@
47 SA_LIB_DIR = @SA_LIB_DIR@
49 SADC_PATH = $(SA_LIB_DIR)/sadc
56 # With recent versions of autoconf, mandir defaults to ${datarootdir}/man
57 # (i.e. $prefix/share/man)
60 MAN1_DIR = $(MAN_DIR)/man1
61 MAN5_DIR = $(MAN_DIR)/man5
62 MAN8_DIR = $(MAN_DIR)/man8
68 NLS_DIR = $(PREFIX)/share/locale
69 SYSCONFIG_DIR = @SYSCONFIG_DIR@
72 CFLAGS = @CFLAGS@ -Wall -Wstrict-prototypes -pipe -O2
75 DFLAGS += -DSA_DIR=\"$(SA_DIR)\" -DSADC_PATH=\"$(SADC_PATH)\"
76 DFLAGS += $(DFSENSORS)
95 REQUIRE_NLS = -DUSE_NLS -DPACKAGE=\"$(PACKAGE)\" -DLOCALEDIR=\"$(NLS_DIR)\"
98 DFLAGS += $(REQUIRE_NLS)
100 INSTALL_CRON = @INSTALL_CRON@
101 CRON_OWNER = @CRON_OWNER@
103 MAN_GROUP = @MAN_GROUP@
104 ifndef IGNORE_MAN_GROUP
105 IGNORE_MAN_GROUP = @IGNORE_MAN_GROUP@
107 ifeq ($(IGNORE_MAN_GROUP),y)
110 MANGRPARG = -g $(MAN_GROUP)
113 CLEAN_SA_DIR = @CLEAN_SA_DIR@
115 ifndef COMPRESS_MANPG
116 COMPRESS_MANPG = @COMPRESS_MANPG@
119 INSTALL_ISAG = @INSTALL_ISAG@
122 INSTALL_DOC = @INSTALL_DOC@
125 # Run-command directories
129 RC0_DIR = $(RC_DIR)/rc0.d
130 RC1_DIR = $(RC_DIR)/rc1.d
131 RC2_DIR = $(RC_DIR)/rc2.d
132 RC3_DIR = $(RC_DIR)/rc3.d
133 RC4_DIR = $(RC_DIR)/rc4.d
134 RC5_DIR = $(RC_DIR)/rc5.d
135 RC6_DIR = $(RC_DIR)/rc6.d
137 INIT_DIR = @INIT_DIR@
140 INITD_DIR = @INITD_DIR@
143 NLSPO= $(wildcard nls/*.po)
144 NLSGMO= $(NLSPO:.po=.gmo)
145 NLSPOT= $(NLSPO:.po=.pot)
151 $(MSGMERGE) -U $< nls/sysstat.pot
154 $(CC) -o $@ -c $(CFLAGS) $(DFLAGS) $<
157 $(CC) -o $@ $(CFLAGS) $^ $(LFLAGS)
159 all: sadc sar sadf iostat mpstat pidstat nfsiostat cifsiostat locales
161 common.o: common.c version.h common.h ioconf.h sysconfig.h
163 sa_common.o: sa_common.c sa.h common.h ioconf.h sysconfig.h rd_stats.h
165 ioconf.o: ioconf.c ioconf.h common.h sysconfig.h
167 act_sadc.o: activity.c sa.h rd_stats.h rd_sensors.h
168 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
170 act_sar.o: activity.c sa.h pr_stats.h
171 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SAR $(DFLAGS) $<
173 act_sadf.o: activity.c sa.h rndr_stats.h xml_stats.h json_stats.h
174 $(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADF $(DFLAGS) $<
176 rd_stats.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
178 rd_sensors.o: rd_sensors.c common.h rd_sensors.h sysconfig.h
180 pr_stats.o: pr_stats.c sa.h ioconf.h sysconfig.h pr_stats.h
182 rndr_stats.o: rndr_stats.c sa.h ioconf.h sysconfig.h rndr_stats.h
184 xml_stats.o: xml_stats.c sa.h sadf.h ioconf.h sysconfig.h xml_stats.h
186 json_stats.o: json_stats.c sa.h sadf.h ioconf.h sysconfig.h json_stats.h
188 sa_wrap.o: sa_wrap.c sa.h rd_stats.h rd_sensors.h
190 format.o: format.c sadf.h
192 sadf_misc.o: sadf_misc.c sadf.h sa.h
194 # Explicit rules needed to prevent possible file corruption
195 # when using parallel execution.
196 libsyscom.a: common.o ioconf.o
199 librdstats.a: librdstats.a(rd_stats.o)
201 librdsensors.a: librdsensors.a(rd_sensors.o)
203 sadc.o: sadc.c sa.h version.h common.h ioconf.h sysconfig.h rd_stats.h rd_sensors.h
205 sadc: LFLAGS += $(LFSENSORS)
206 sadc: sadc.o act_sadc.o sa_wrap.o sa_common.o librdstats.a librdsensors.a libsyscom.a
208 sar.o: sar.c sa.h version.h common.h ioconf.h pr_stats.h sysconfig.h
210 sar: sar.o act_sar.o sa_common.o pr_stats.o libsyscom.a
212 sadf.o: sadf.c sadf.h version.h sa.h common.h ioconf.h sysconfig.h
214 sadf: sadf.o act_sadf.o format.o sadf_misc.o rndr_stats.o xml_stats.o json_stats.o sa_common.o libsyscom.a
216 iostat.o: iostat.c iostat.h version.h common.h ioconf.h sysconfig.h rd_stats.h
218 iostat: iostat.o librdstats.a libsyscom.a
220 pidstat.o: pidstat.c pidstat.h version.h common.h rd_stats.h
222 pidstat: pidstat.o librdstats.a libsyscom.a
224 mpstat.o: mpstat.c mpstat.h version.h common.h rd_stats.h
226 mpstat: mpstat.o librdstats.a libsyscom.a
228 nfsiostat.o: nfsiostat.c nfsiostat.h version.h common.h
230 nfsiostat: nfsiostat.o librdstats.a libsyscom.a
232 cifsiostat.o: cifsiostat.c cifsiostat.h version.h common.h
234 cifsiostat: cifsiostat.o librdstats.a libsyscom.a
242 nls/sysstat.pot: $(wildcard *.c)
243 $(XGETTEXT) -o $@ -k_ --msgid-bugs-address="sysstat <at> orange.fr" $^
246 .PHONY: clean distclean install install_base install_all uninstall \
247 uninstall_base uninstall_all dist bdist gitdist
249 install_man: man/sadc.8 man/sar.1 man/sadf.1 man/sa1.8 man/sa2.8 man/sysstat.5
250 ifeq ($(INSTALL_DOC),y)
251 mkdir -p $(DESTDIR)$(MAN1_DIR)
252 mkdir -p $(DESTDIR)$(MAN5_DIR)
253 mkdir -p $(DESTDIR)$(MAN8_DIR)
254 rm -f $(DESTDIR)$(MAN8_DIR)/sa1.8*
255 $(INSTALL_DATA) $(MANGRPARG) man/sa1.8 $(DESTDIR)$(MAN8_DIR)
256 rm -f $(DESTDIR)$(MAN8_DIR)/sa2.8*
257 $(INSTALL_DATA) $(MANGRPARG) man/sa2.8 $(DESTDIR)$(MAN8_DIR)
258 rm -f $(DESTDIR)$(MAN8_DIR)/sadc.8*
259 $(INSTALL_DATA) $(MANGRPARG) man/sadc.8 $(DESTDIR)$(MAN8_DIR)
260 rm -f $(DESTDIR)$(MAN1_DIR)/sar.1*
261 $(INSTALL_DATA) $(MANGRPARG) man/sar.1 $(DESTDIR)$(MAN1_DIR)
262 rm -f $(DESTDIR)$(MAN1_DIR)/sadf.1*
263 $(INSTALL_DATA) $(MANGRPARG) man/sadf.1 $(DESTDIR)$(MAN1_DIR)
264 rm -f $(DESTDIR)$(MAN5_DIR)/sysstat.5*
265 $(INSTALL_DATA) $(MANGRPARG) man/sysstat.5 $(DESTDIR)$(MAN5_DIR)
266 rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
267 $(INSTALL_DATA) $(MANGRPARG) man/iostat.1 $(DESTDIR)$(MAN1_DIR)
268 rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
269 $(INSTALL_DATA) $(MANGRPARG) man/mpstat.1 $(DESTDIR)$(MAN1_DIR)
270 rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
271 $(INSTALL_DATA) $(MANGRPARG) man/pidstat.1 $(DESTDIR)$(MAN1_DIR)
272 rm -f $(DESTDIR)$(MAN1_DIR)/nfsiostat.1*
273 $(INSTALL_DATA) $(MANGRPARG) man/nfsiostat.1 $(DESTDIR)$(MAN1_DIR)
274 rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
275 $(INSTALL_DATA) $(MANGRPARG) man/cifsiostat.1 $(DESTDIR)$(MAN1_DIR)
276 ifeq ($(INSTALL_ISAG),y)
277 $(INSTALL_DATA) $(MANGRPARG) contrib/isag/isag.1 $(DESTDIR)$(MAN1_DIR)
279 ifeq ($(COMPRESS_MANPG),y)
280 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa1.8
281 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sa2.8
282 $(ZIP) $(DESTDIR)$(MAN8_DIR)/sadc.8
283 $(ZIP) $(DESTDIR)$(MAN1_DIR)/sar.1
284 $(ZIP) $(DESTDIR)$(MAN1_DIR)/sadf.1
285 $(ZIP) $(DESTDIR)$(MAN5_DIR)/sysstat.5
286 $(ZIP) $(DESTDIR)$(MAN1_DIR)/iostat.1
287 $(ZIP) $(DESTDIR)$(MAN1_DIR)/mpstat.1
288 $(ZIP) $(DESTDIR)$(MAN1_DIR)/pidstat.1
289 $(ZIP) $(DESTDIR)$(MAN1_DIR)/nfsiostat.1
290 $(ZIP) $(DESTDIR)$(MAN1_DIR)/cifsiostat.1
291 ifeq ($(INSTALL_ISAG),y)
292 $(ZIP) $(DESTDIR)$(MAN1_DIR)/isag.1
299 catalogs='$(NLSGMO)'; \
300 for c in $$catalogs; do \
302 c=`echo $$c | sed 's/\.gmo$$//'`; \
303 mkdir -p $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES; \
304 echo "NLS: Installing $$c file..." ; \
305 $(INSTALL_DATA) nls/$$c.gmo $(DESTDIR)$(NLS_DIR)/$$c/LC_MESSAGES/$(PACKAGE).mo; \
309 install_base: all sa1 sa2 sysstat.sysconfig install_man install_nls \
311 mkdir -p $(DESTDIR)$(SA_LIB_DIR)
312 mkdir -p $(DESTDIR)$(SA_DIR)
313 ifeq ($(CLEAN_SA_DIR),y)
314 find $(DESTDIR)$(SA_DIR) \( -name 'sar??' -o -name 'sa??' -o -name 'sar??.gz' -o -name 'sa??.gz' \) \
316 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)/[0-9]?????
318 mkdir -p $(DESTDIR)$(BIN_DIR)
319 mkdir -p $(DESTDIR)$(DOC_DIR)
320 mkdir -p $(DESTDIR)$(SYSCONFIG_DIR)
321 $(INSTALL_BIN) sa1 $(DESTDIR)$(SA_LIB_DIR)
322 $(INSTALL_BIN) sa2 $(DESTDIR)$(SA_LIB_DIR)
323 $(INSTALL_BIN) sadc $(DESTDIR)$(SA_LIB_DIR)
324 $(INSTALL_BIN) sar $(DESTDIR)$(BIN_DIR)
325 $(INSTALL_BIN) sadf $(DESTDIR)$(BIN_DIR)
326 $(INSTALL_BIN) iostat $(DESTDIR)$(BIN_DIR)
327 $(INSTALL_BIN) mpstat $(DESTDIR)$(BIN_DIR)
328 $(INSTALL_BIN) pidstat $(DESTDIR)$(BIN_DIR)
329 $(INSTALL_BIN) nfsiostat $(DESTDIR)$(BIN_DIR)
330 $(INSTALL_BIN) cifsiostat $(DESTDIR)$(BIN_DIR)
331 ifeq ($(INSTALL_ISAG),y)
332 $(INSTALL_BIN) contrib/isag/isag $(DESTDIR)$(BIN_DIR)
334 $(INSTALL_DATA) sysstat.ioconf $(DESTDIR)$(SYSCONFIG_DIR)
335 $(INSTALL_DATA) sysstat.sysconfig $(DESTDIR)$(SYSCONFIG_DIR)/sysstat
336 ifeq ($(INSTALL_DOC),y)
337 $(INSTALL_DATA) CHANGES $(DESTDIR)$(DOC_DIR)
338 $(INSTALL_DATA) COPYING $(DESTDIR)$(DOC_DIR)
339 $(INSTALL_DATA) CREDITS $(DESTDIR)$(DOC_DIR)
340 $(INSTALL_DATA) README $(DESTDIR)$(DOC_DIR)
341 $(INSTALL_DATA) FAQ $(DESTDIR)$(DOC_DIR)
342 $(INSTALL_DATA) *.lsm $(DESTDIR)$(DOC_DIR)
345 install_all: install_base cron/crontab sysstat \
346 cron/sysstat.crond cron/sysstat.cron.daily cron/sysstat.cron.hourly
347 $(CHOWN) $(CRON_OWNER) $(DESTDIR)$(SA_DIR)
348 if [ -d $(DESTDIR)/etc/cron.d ]; then \
349 $(INSTALL_DATA) cron/sysstat.crond $(DESTDIR)/etc/cron.d/sysstat; \
350 elif [ -d $(DESTDIR)/etc/cron.hourly -a -d $(DESTDIR)/etc/cron.daily ]; then \
351 $(INSTALL_BIN) cron/sysstat.cron.hourly $(DESTDIR)/etc/cron.hourly/sysstat; \
352 $(INSTALL_BIN) cron/sysstat.cron.daily $(DESTDIR)/etc/cron.daily/sysstat; \
354 su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).save"; \
355 $(CP) -a /tmp/crontab-$(CRON_OWNER).save ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.save; \
356 echo "USER'S PREVIOUS CRONTAB SAVED IN CURRENT DIRECTORY (USING .save SUFFIX)."; \
357 su $(CRON_OWNER) -c "crontab cron/crontab"; \
359 if [ -d $(DESTDIR)$(INIT_DIR) ]; then \
360 $(INSTALL_BIN) sysstat $(DESTDIR)$(INIT_DIR)/sysstat; \
361 if [ -x $(CHKCONFIG) ]; then \
362 cd $(DESTDIR)$(INIT_DIR) && $(CHKCONFIG) --add sysstat; \
364 cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
365 cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
366 cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../$(INITD_DIR)/sysstat S01sysstat; \
368 elif [ -d $(DESTDIR)$(RC_DIR) ]; then \
369 $(INSTALL_BIN) sysstat $(DESTDIR)$(RC_DIR)/rc.sysstat; \
370 if [ -x $(CHKCONFIG) ]; then \
371 cd $(DESTDIR)$(RC_DIR) && $(CHKCONFIG) --add sysstat; \
373 [ -d $(DESTDIR)$(RC2_DIR) ] || mkdir -p $(DESTDIR)$(RC2_DIR); \
374 [ -d $(DESTDIR)$(RC3_DIR) ] || mkdir -p $(DESTDIR)$(RC3_DIR); \
375 [ -d $(DESTDIR)$(RC5_DIR) ] || mkdir -p $(DESTDIR)$(RC5_DIR); \
376 cd $(DESTDIR)$(RC2_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
377 cd $(DESTDIR)$(RC3_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
378 cd $(DESTDIR)$(RC5_DIR) && $(LN_S) -f ../rc.sysstat S01sysstat; \
383 ifeq ($(INSTALL_DOC),y)
384 rm -f $(DESTDIR)$(MAN8_DIR)/sadc.8*
385 rm -f $(DESTDIR)$(MAN8_DIR)/sa1.8*
386 rm -f $(DESTDIR)$(MAN8_DIR)/sa2.8*
387 rm -f $(DESTDIR)$(MAN1_DIR)/sar.1*
388 rm -f $(DESTDIR)$(MAN1_DIR)/sadf.1*
389 rm -f $(DESTDIR)$(MAN5_DIR)/sysstat.5*
390 rm -f $(DESTDIR)$(MAN1_DIR)/iostat.1*
391 rm -f $(DESTDIR)$(MAN1_DIR)/mpstat.1*
392 rm -f $(DESTDIR)$(MAN1_DIR)/pidstat.1*
393 rm -f $(DESTDIR)$(MAN1_DIR)/nfsiostat.1*
394 rm -f $(DESTDIR)$(MAN1_DIR)/cifsiostat.1*
395 ifeq ($(INSTALL_ISAG),y)
396 rm -f $(DESTDIR)$(MAN1_DIR)/isag.1
402 -catalogs='$(NLSGMO)'; \
403 for c in $$catalogs; do \
405 c=`echo $$c | sed 's/\.gmo$$//'`; \
406 rm -f $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES/$(PACKAGE).mo; \
407 rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c/LC_MESSAGES 2>/dev/null; \
408 rmdir --ignore-fail-on-non-empty $(DESTDIR)$(PREFIX)/share/locale/$$c 2>/dev/null; \
412 uninstall_base: uninstall_man uninstall_nls
413 rm -f $(DESTDIR)$(SA_LIB_DIR)/sadc
414 rm -f $(DESTDIR)$(SA_LIB_DIR)/sa1
415 rm -f $(DESTDIR)$(SA_LIB_DIR)/sa2
416 rm -f $(DESTDIR)$(BIN_DIR)/sar
417 rm -f $(DESTDIR)$(BIN_DIR)/sadf
418 rm -f $(DESTDIR)$(BIN_DIR)/iostat
419 rm -f $(DESTDIR)$(BIN_DIR)/mpstat
420 rm -f $(DESTDIR)$(BIN_DIR)/pidstat
421 rm -f $(DESTDIR)$(BIN_DIR)/nfsiostat
422 rm -f $(DESTDIR)$(BIN_DIR)/cifsiostat
423 ifeq ($(INSTALL_ISAG),y)
424 rm -f $(DESTDIR)$(BIN_DIR)/isag
426 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_LIB_DIR)
427 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)/[0-9]?????
428 -rmdir --ignore-fail-on-non-empty $(DESTDIR)$(SA_DIR)
429 # No need to keep sysstat scripts, config files and links since
430 # the binaries have been deleted.
431 rm -f $(DESTDIR)$(INIT_DIR)/sysstat
432 rm -f $(DESTDIR)$(RC_DIR)/rc.sysstat
433 rm -f $(DESTDIR)$(SYSCONFIG_DIR)/sysstat
434 rm -f $(DESTDIR)$(SYSCONFIG_DIR)/sysstat.ioconf
435 rm -f $(DESTDIR)$(RC2_DIR)/S??sysstat
436 rm -f $(DESTDIR)$(RC3_DIR)/S??sysstat
437 rm -f $(DESTDIR)$(RC5_DIR)/S??sysstat
438 # Delete possible kill entries installed by chkconfig
439 rm -f $(DESTDIR)$(RC0_DIR)/K??sysstat
440 rm -f $(DESTDIR)$(RC1_DIR)/K??sysstat
441 rm -f $(DESTDIR)$(RC4_DIR)/K??sysstat
442 rm -f $(DESTDIR)$(RC6_DIR)/K??sysstat
443 # Vixie cron entries also can be safely deleted here
444 rm -f $(DESTDIR)/etc/cron.d/sysstat
445 # Id. for Slackware cron entries
446 rm -f $(DESTDIR)/etc/cron.hourly/sysstat
447 rm -f $(DESTDIR)/etc/cron.daily/sysstat
448 ifeq ($(INSTALL_DOC),y)
449 rm -f $(DESTDIR)$(DOC_DIR)/*
450 -rmdir $(DESTDIR)$(DOC_DIR)
452 @echo "Please ignore the errors above, if any."
454 uninstall_all: uninstall_base
455 -su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).old"
456 -$(CP) -a /tmp/crontab-$(CRON_OWNER).old ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.old
457 @echo "USER CRONTAB SAVED IN CURRENT DIRECTORY (WITH .old SUFFIX)."
458 -su $(CRON_OWNER) -c "crontab -r"
460 ifeq ($(INSTALL_CRON),y)
461 uninstall: uninstall_all
463 uninstall: uninstall_base
466 ifeq ($(INSTALL_CRON),y)
469 install: install_base
473 po-files: nls/sysstat.pot $(NLSPOT)
479 rm -f sadc sar sadf iostat mpstat pidstat nfsiostat cifsiostat *.o *.a core TAGS
480 find nls -name "*.gmo" -exec rm -f {} \;
482 almost-distclean: clean nls/sysstat.pot
483 rm -f sa1 sa2 sysstat cron/crontab version.h sysconfig.h
484 rm -f sysstat.sysconfig cron/sysstat.crond cron/sysstat.cron.daily
485 rm -f cron/sysstat.cron.hourly cron/sysstat.crond.sample cron/sysstat.crond.sample.in
486 rm -f contrib/isag/isag
487 rm -f man/sa1.8 man/sa2.8 man/sadc.8 man/sadf.1 man/sar.1 man/iostat.1 man/sysstat.5
488 rm -f man/cifsiostat.1 man/nfsiostat.1
489 rm -f *.log config.status
490 rm -rf autom4te.cache
491 rm -f *.save *.old .*.swp data
492 find . -name "*~" -exec rm -f {} \;
494 distclean: almost-distclean
497 maintainer-clean: distclean
500 dist: almost-distclean
501 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | gzip -v9 > sysstat-$(VERSION).tar.gz)
503 bdist: almost-distclean
504 cd .. && (tar --exclude=Makefile --exclude=.git -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION).tar.bz2)
506 gitdist: almost-distclean
507 cd .. && (tar --exclude=Makefile -cvf - sysstat-$(VERSION) | bzip2 > sysstat-$(VERSION)-git.tar.bz2)