# # 2006-2008 Nico Schottelius (nico-ccollect at schottelius.org) # # This file is part of ccollect. # # ccollect is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # ccollect is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with ccollect. If not, see . # # Initially written on Fri Jan 13 12:13:08 CET 2006 # # FIXME: add prefix-support? # INSTALL=install CCOLLECT_SOURCE=ccollect CCOLLECT_DEST=ccollect LN=ln -sf ASCIIDOC=asciidoc DOCBOOKTOTEXI=docbook2x-texi DOCBOOKTOMAN=docbook2x-man XSLTPROC=xsltproc XSL=/usr/local/share/xsl/docbook/html/docbook.xsl A2X=a2x prefix=/usr/packages/ccollect-git bindir=${prefix}/bin destination=${bindir}/${CCOLLECT_DEST} mandest=${prefix}/man/man1 manlink=/usr/local/man/man1 path_dir=/usr/local/bin path_destination=${path_dir}/${CCOLLECT_DEST} docs_archive_name=docs.tar # # Asciidoc will be used to generate other formats later # MANDOCS = doc/man/ccollect.text \ doc/man/ccollect_add_source.text \ doc/man/ccollect_analyse_logs.text \ doc/man/ccollect_delete_source.text \ doc/man/ccollect_logwrapper.text \ doc/man/ccollect_list_intervals.text DOCS = ${MANDOCS} doc/ccollect.text # # Doku # HTMLDOCS = ${DOCS:.text=.html} DBHTMLDOCS = ${DOCS:.text=.htm} # texi is broken currently, don't know why xslt things complain yet TEXIDOCS = ${DOCS:.text=.texi} TEXIDOCS = # fop fails here, so disable it for now PDFDOCS = ${DOCS:.text=.pdf} PDFDOCS = MANPDOCS = ${MANDOCS:.text=.1} DOCBDOCS = ${DOCS:.text=.docbook} DOC_ALL = ${HTMLDOCS} ${DBHTMLDOCS} ${TEXIDOCS} ${MANPDOCS} ${PDFDOCS} TEST_LOG_FILE = /tmp/ccollect/ccollect.log # # End user targets # all: @echo "----------- ccollect make targets --------------" @echo "documentation: generate HTMl, Texinfo and manpage" @echo "html: only generate HTML" @echo "info: only generate Texinfo" @echo "man: only generate manpage{s}" @echo "install: install ccollect to ${prefix}" @echo "shellcheck: shellcheck ccollect script" @echo "test: run unit tests" html: ${HTMLDOCS} htm: ${DBHTMLDOCS} info: ${TEXIDOCS} man: ${MANPDOCS} pdf: ${PDFDOCS} documentation: ${DOC_ALL} install: install-link install-manlink install-link: install-script ${LN} ${destination} ${path_destination} install-script: ${INSTALL} -D -m 0755 ${CCOLLECT_SOURCE} ${destination} install-man: man ${INSTALL} -d -m 0755 ${mandest} ${INSTALL} -D -m 0644 doc/man/*.1 ${mandest} install-manlink: install-man ${INSTALL} -d -m 0755 ${manlink} for man in ${mandest}/*; do ${LN} $$man ${manlink}; done # # Tools # TOOLS2=ccollect_add_source TOOLS2 += ccollect_analyse_logs TOOLS=ccollect_add_source \ ccollect_analyse_logs \ ccollect_delete_source \ ccollect_list_intervals \ ccollect_logwrapper \ ccollect_list_intervals # Stick to posix TOOLSMAN1 = $(TOOLS:ccollect=doc/man/ccollect) TOOLSMAN = $(TOOLSMAN1:=.text) TOOLSFP = $(subst ccollect,tools/ccollect,$(TOOLS)) ## FIXME: posix make: shell? => t2: echo $(TOOLS) - $(TOOLSFP) echo $(TOOLSMAN) echo $(TOOLSFP) # docbook gets .htm, asciidoc directly .html %.htm: %.docbook ${XSLTPROC} -o $@ ${XSL} $< %.html: %.text %.docbook ${ASCIIDOC} -n -o $@ $< %.html: %.text ${ASCIIDOC} -n -o $@ $< %.docbook: %.text ${ASCIIDOC} -n -b docbook -o $@ $< %.texi: %.docbook ${DOCBOOKTOTEXI} --to-stdout $< > $@ #%.mandocbook: %.text # ${ASCIIDOC} -b docbook -d manpage -o $@ $< #%.man: %.mandocbook # ${DOCBOOKTOMAN} --to-stdout $< > $@ #%.man: %.text %.1: %.text ${A2X} -f manpage $< %.pdf: %.text ${A2X} -f pdf $< # # Developer targets # pub: git push publish-doc: documentation @chmod a+r ${DOCS} ${DOC_ALL} @tar cf ${docs_archive_name} ${DOCS} ${DOC_ALL} @echo "Documentation files are in ${docs_archive_name}" # # Distribution # clean: rm -f ${DOC_ALL} rm -f doc/man/*.[0-9] doc/man/*.xml doc/*.fo doc/man/*.fo distclean: clean rm -f ${DOCBDOCS} # # Be nice with the users and generate documentation for them # dist: distclean documentation /tmp/ccollect: mkdir -p /tmp/ccollect shellcheck: ./ccollect shellcheck -s sh -f gcc -x ./ccollect test-nico: $(CCOLLECT_SOURCE) /tmp/ccollect cd ./conf/sources/; for s in *; do CCOLLECT_CONF=../ ../../ccollect daily "$$s"; done touch /tmp/ccollect/$$(ls /tmp/ccollect | head -n1).ccollect-marker CCOLLECT_CONF=./conf ./ccollect -a daily touch /tmp/ccollect/$$(ls /tmp/ccollect | head -n1).ccollect-marker CCOLLECT_CONF=./conf ./ccollect -a -p daily test-dir-source: mkdir -p /tmp/ccollect/source cp -R -f ./* /tmp/ccollect/source test-dir-destination: mkdir -p /tmp/ccollect/backup test-dir-destination-chint: mkdir -p /tmp/ccollect/backup-chint test-fixed-intervals: $(CCOLLECT_SOURCE) test-dir-source test-dir-destination test-dir-destination-chint for s in ./test/conf/sources/*; do \ CCOLLECT_CONF=./test/conf ./ccollect -l ${TEST_LOG_FILE} daily "$$(basename "$$s")"; \ test "$$(ls -1 /tmp/ccollect/backup | wc -l)" -gt "0" || { cat ${TEST_LOG_FILE}; exit 1; }; \ done CCOLLECT_CONF=./test/conf ./ccollect -l ${TEST_LOG_FILE} -a -v daily test "$$(ls -1 /tmp/ccollect/backup | wc -l)" -gt "0" || { cat ${TEST_LOG_FILE}; exit 1; } CCOLLECT_CONF=./test/conf ./ccollect -l ${TEST_LOG_FILE} -a -p daily test "$$(ls -1 /tmp/ccollect/backup | wc -l)" -gt "0" || { cat ${TEST_LOG_FILE}; exit 1; } @printf "\nFixed intervals test ended successfully\n" test-interval-changing: $(CCOLLECT_SOURCE) test-dir-source test-dir-destination-chint rm -rf /tmp/ccollect/backup-chint/* test "$$(ls -1 /tmp/ccollect/backup-chint | wc -l)" -eq "0" || { cat ${TEST_LOG_FILE}; exit 1; } printf "3" > ./test/conf/sources/local-with-interval/intervals/daily for x in 1 2 3 4 5; do CCOLLECT_CONF=./test/conf ./ccollect -l ${TEST_LOG_FILE} daily local-with-interval; done test "$$(ls -1 /tmp/ccollect/backup-chint | wc -l)" -eq "4" || { cat ${TEST_LOG_FILE}; exit 1; } printf "5" > ./test/conf/sources/local-with-interval/intervals/daily for x in 1 2 3 4 5 6 7; do CCOLLECT_CONF=./test/conf ./ccollect -l ${TEST_LOG_FILE} daily local-with-interval; done test "$$(ls -1 /tmp/ccollect/backup-chint | wc -l)" -eq "6" || { cat ${TEST_LOG_FILE}; exit 1; } printf "4" > ./test/conf/sources/local-with-interval/intervals/daily for x in 1 2 3 4 5 6; do CCOLLECT_CONF=./test/conf ./ccollect -l ${TEST_LOG_FILE} daily local-with-interval; done test "$$(ls -1 /tmp/ccollect/backup-chint | wc -l)" -eq "5" || { cat ${TEST_LOG_FILE}; exit 1; } printf "3" > ./test/conf/sources/local-with-interval/intervals/daily @printf "\nInterval changing test ended successfully\n" test: test-fixed-intervals test-interval-changing test -f "${TEST_LOG_FILE}" @printf "\nTests ended successfully\n"