[Happydoc-checkins] CVS: HappyDoc3 Makefile,NONE,1.1 Package.mak,NONE,1.1
Brought to you by:
doughellmann,
krlosaqp
From: Doug H. <dou...@us...> - 2003-03-15 14:25:14
|
Update of /cvsroot/happydoc/HappyDoc3 In directory sc8-pr-cvs1:/tmp/cvs-serv8380 Added Files: Makefile Package.mak Log Message: Add make files with packaging and testing rules. --- NEW FILE: Makefile --- # # $Id: Makefile,v 1.1 2003/03/15 14:25:09 doughellmann Exp $ # # # 0. (tag work directory) # 1. gmake dist REV=rX_Y # 2. gmake ftp_install REV=rX_Y # 3. (create new release, add file) # PRODUCT_NAME=HappyDoc FTP_SERVER="upload.sourceforge.net" FTP_DEST_DIR="/incoming" FTP_USER="anonymous" ZOPE_DOCS_FTP_SITE="ftp://www.zope.org/Documentation/Developer/ZopeSrcDocs" ZOPE_DOCS_FTP_COMMAND="ncftpput -R -F -P 1321 -u hellmann www.zope.org Documentation/Developer/ZopeSrcDocs/AutoGenerated index.html Zope-2-CVS-src" SSH_USER="doughellmann" SSH_SERVER="happydoc.sourceforge.net" SSH_DEST_DIR="/home/groups/h/ha/happydoc/htdocs" SSH_DOCS_DEST_DIR="/home/groups/h/ha/happydoc/htdocs" include Package.mak PROCTOR="../Proctor/proctorbatch" PROCTOR_VERBOSITY="-vvv" PROCTOR_ARGS="--interleaved" REGRESSION_TEST=$(PROCTOR) $(PROCTOR_VERBOSITY) $(PROCTOR_ARGS) . 2>&1 | tee test_output.txt tags: find . -name '*.py' | grep -v TestCase | etags -l auto --regex='/[ \t]*\def[ \t]+\([^ :(\t]+\)/\1/' - --- NEW FILE: Package.mak --- # # $Id: Package.mak,v 1.1 2003/03/15 14:25:10 doughellmann Exp $ # .PHONY: dist version_check CWD=$(shell pwd) DIST_DIR="$(CWD)/PackageTarFiles" PACKAGE_DIR="dist" # # In your local Makefile: # 1. define PRODUCT_NAME as the name of the product (used in output file # names) # 2. define CVS_PROJECT as the name of the CVS module being packaged (if # different from PRODUCT_NAME) # 3. define REGRESSION_TEST as the command to run to generate the regression # test output # 4. define REGRESSION_TEST_ESTABLISH_BASELINE as the command to run to # generate a baseline value for the regression test # 5. define REGRESSION_TEST_COMPARE_RESULTS as the command to run to # determine if the results of the regression test and baseline are # different # 6. define REGRESSION_TEST_FAIL_MESSAGE with a message to be printed # when the regression test fails to match the baseline # 7. include Package.mak from this directory. # 8. (possibly) define TO_PACKAGE as a list of files to be packaged (default # is *) # 9. (possibly) define TO_BACKUP as a list of files for which backups # should be created before packaging occurs (default is none) # ifeq ($(TO_PACKAGE),) TO_PACKAGE=* endif # TO_BACKUP= ifeq ($(CVS_PROJECT),) CVS_PROJECT=$(PRODUCT_NAME) endif ifeq ($(VERSION_FILE),) VERSION_FILE=VersionInfo.$(PRODUCT_NAME).html endif # # Where are the packaging tools located? # PACKAGING_TOOLS_DIR="$(CWD)/../packaging_tools" PACKAGING_TOOLS_BIN=$(PACKAGING_TOOLS_DIR)/bin MK_CVS_STATUS_PAGE=$(PACKAGING_TOOLS_BIN)/mkcvsstatuspage.py CVS_TAG_DIFF=$(PACKAGING_TOOLS_BIN)/cvstagdiff.py # # How do we create tarballs? # TAR_COMPRESS=z ifeq ($(TAR_COMPRESS),z) dist_file="$(DIST_DIR)/$(PRODUCT_NAME)_$(REV).tar.gz" docs_dist_file="$(DIST_DIR)/$(PRODUCT_NAME)_$(REV)_docs.tar.gz" else dist_file="$(DIST_DIR)/$(PRODUCT_NAME)_$(REV).tar" docs_dist_file="$(DIST_DIR)/$(PRODUCT_NAME)_$(REV)_docs.tar" endif change_file_name="$(PRODUCT_NAME)_changes.$(PREV)_to_$(REV).txt" # # Control how much information we output # SILENT=@ ifeq ($(SILENT),@) CVSSILENT=-Q HDSILENT=-q else CVSSILENT= HDSILENT= TAR_VERBOSE=v endif # # Easy way to ignore errors # IGNORE_ERROR=- # # Where is the root of the CVS repository? # CVSROOT=$(shell cat CVS/Root) # # Combine the CVS_PROJECT and the REV to get the EXTRACT_DIR # EXTRACT_DIR=$(CVS_PROJECT)-$(REV) # # How do we extract a project? # define runCVS (cd $(PACKAGE_DIR); \ cvs $(CVSSILENT) -z4 -d $(CVSROOT) export -r $(REV) -d $(EXTRACT_DIR) $(CVS_PROJECT) \ ) endef # # How do we get the version information for a project? # define makeVersionPage (cd $(PACKAGE_DIR); \ cd $(EXTRACT_DIR); \ $(MK_CVS_STATUS_PAGE) --tag $(REV) > $(VERSION_FILE) \ ) endef ECHO="/bin/echo" ECHON=$(ECHO) -n # # Where is the documentation extraction tool? # ifeq ($(PRODUCT_NAME),HappyDoc) ifneq ($(REV),) HAPPYDOC="$(CWD)/$(PACKAGE_DIR)/$(EXTRACT_DIR)/happydoc" else HAPPYDOC="$(CWD)/happydoc" endif else HAPPYDOC="/usr/bin/happydoc" endif DOC_OUTPUT_DIR="srcdocs" which_happydoc: echo $(HAPPYDOC) # # If no PREVious revision is specified, go all the way back # to the beginning of time. # #ifeq ($(PREV),) #PREV=1.1 #endif # # Verify that a REVision value was specified so we know what we're supposed # to build. Then check that we haven't already built that thing, and force # the user to delete the file manually if we have. # version_check: @[ "$(REV)" = "" ] \ && $(ECHO) "Set REV value on command line." \ && exit 1 \ || exit 0 version_writeover_check: @[ -f $(dist_file) ] \ && $(ECHO) "Output file $(dist_file) already exists." \ && exit 1 \ || exit 0 # # Main distribution target. # dist: version_check version_writeover_check \ pre_clean_up check_out source_documentation \ backup_files version_info mk_output_dir change_file package $(SILENT)$(ECHO) "Complete" $(SILENT)$(ECHO) # # Remove whatever might have been checked out for packaging before. # pre_clean_up: $(SILENT)$(ECHO) $(SILENT)$(ECHO) "Pre-package clean up" $(SILENT)$(ECHO) " Removing existing packaging files from $(PACKAGE_DIR)..." $(SILENT)rm -rf $(PACKAGE_DIR); mkdir $(PACKAGE_DIR) $(SILENT)$(ECHO) "Done" $(SILENT)$(ECHO) # # Extract the specified revision in the packaging area. # check_out: $(SILENT)$(ECHO) "Checking out files to package" $(SILENT)$(ECHO) " Version : $(REV)" $(SILENT)$(ECHO) " Repository : $(CVSROOT)" $(SILENT)$(ECHO) " Working..." $(SILENT)$(runCVS) $(SILENT)$(ECHO) "Done"; $(SILENT)$(ECHO) # # Generate source documentation # source_documentation: $(SILENT)$(ECHO) "Building source documentation" $(SILENT)cd $(PACKAGE_DIR)/$(EXTRACT_DIR); \ $(HAPPYDOC) \ -d $(DOC_OUTPUT_DIR) \ -t "$(PRODUCT_NAME) Source Documentation" \ $(HDSILENT) \ ../$(EXTRACT_DIR) $(SILENT)$(ECHO) # # Record what versions of each file are included in the package. # version_info: $(SILENT)$(ECHO) "Recording version information" $(SILENT)$(ECHON) " Working..." $(SILENT)$(ECHO) "Done" $(SILENT)$(ECHO) # # Create the place where we'll be building the distribution. # mk_output_dir: $(SILENT)[ ! -d $(DIST_DIR) ] \ && $(ECHO) "Creating output directory" \ && $(ECHO) " Output to : $(DIST_DIR)" \ && $(ECHON) " Working..." \ || exit 0 $(SILENT)[ ! -d $(DIST_DIR) ] \ && mkdir $(DIST_DIR) \ && $(ECHO) "Done" \ && $(ECHO) \ || exit 0 # # Create the tarball # package: $(SILENT)$(ECHO) "Packaging" $(SILENT)$(ECHO) " Package directory : $(PACKAGE_DIR)/$(CVS_PROJECT)" $(SILENT)$(ECHO) " Archive filename : $(dist_file)" $(SILENT)$(ECHON) " Working..." $(SILENT)cd $(PACKAGE_DIR); \ tar $(TAR_COMPRESS)c$(TAR_VERBOSE)f $(dist_file) $(EXTRACT_DIR) $(SILENT)$(ECHO) "Done" $(SILENT)$(ECHO) # # For files in the backup list, create backup copies within the packaging area. # backup_files: $(SILENT)$(ECHO) "Creating backup files" $(SILENT)(cd $(PACKAGE_DIR); \ cd $(EXTRACT_DIR); \ for f in $(TO_BACKUP); do \ ($(ECHO) " "$$f; cp $$f $$f.backup); \ done \ ) $(SILENT)$(ECHO) # # Create a file showing the CVS checking log comments for files which have # changed (the release notes). # change_file: $(SILENT)[ "$(PREV)" = "" ] \ && $(ECHO) "Skipping change file, specify PREV as previous revision to create" \ || exit 0 $(SILENT)[ "$(PREV)" != "" ] \ && $(ECHO) "Creating change file" \ && $(ECHO) " Output file: $(DIST_DIR)/$(change_file_name)" \ && $(ECHON) " Working..." \ && $(CVS_TAG_DIFF) -1 $(PREV) -2 $(REV) \ > $(DIST_DIR)/$(change_file_name) \ && cp $(DIST_DIR)/$(change_file_name) $(PACKAGE_DIR)/$(CVS_PROJECT) \ && $(ECHO) "Done" \ || exit 0 $(SILENT)$(ECHO) # # Install the files on members.home.com # PUT_FILES=ncftpput -F -z -m -u $(FTP_USER) $(FTP_SERVER) $(FTP_DEST_DIR) ftp_install: version_check $(SILENT)$(ECHO) "Installing package to $(FTP_SERVER)" $(SILENT)$(IGNORE_ERROR) \ cd $(DIST_DIR); \ $(PUT_FILES) $(dist_file) $(SILENT)$(ECHO) SCP_FILES=\ $(docs_dist_file) \ ../$(ZOPE_CVS_DOCS_DIR).tar.gz \ ../$(ZOPE_RELEASED_DOCS_DIR).tar.gz docs_install: version_check $(SILENT)$(ECHO) "Building source documentation tarball for installation" $(SILENT)cd $(PACKAGE_DIR)/$(EXTRACT_DIR)/$(DOC_OUTPUT_DIR); \ tar zcf $(docs_dist_file) * $(SILENT)$(ECHO) "Installing $(dist_file)" $(SILENT)scp -C $(SCP_FILES) $(SSH_USER)@$(SSH_SERVER):$(SSH_DEST_DIR) # # Regression test # test_script_check: @[ "$(TEST_SCRIPT)" = "" ] \ && $(ECHO) "Set TEST_SCRIPT value in Makefile to support regression tests." \ && exit 1 \ || exit 0 regression_baseline: $(SILENT)$(ECHO) "Updating regression baseline on filesystem" $(SILENT)$(IGNORE_ERROR)$(REGRESSION_TEST_ESTABLISH_BASELINE) $(SILENT)$(ECHO) regression_compare: $(SILENT)if $(REGRESSION_TEST_COMPARE_RESULTS); then \ $(ECHO) " Regression test results match baseline."; \ else \ $(ECHO) " Regression test results do not match baseline."; \ $(ECHO) " $(REGRESSION_TEST_FAIL_MESSAGE)"; \ $(ECHO) ; \ exit 1; \ fi regression_run: $(SILENT)$(ECHO) "Running regression test: $(TEST_SCRIPT)" $(SILENT)$(IGNORE_ERROR)$(REGRESSION_TEST) $(SILENT)$(ECHO) regression_cvs: $(SILENT)$(ECHO) "Checking CVS status" $(SILENT)cvs -qn update $(SILENT)$(ECHO) regression_test: regression_run $(SILENT)gmake --no-print-directory regression_compare $(SILENT)$(ECHO) regression: $(SILENT)gmake --no-print-directory regression_test $(SILENT)$(ECHO) test: regression_run help: @echo "Try one of:" @echo "" @echo " test - for running the regression test" @echo " dist - for building a distribution" @echo " regression_baseline - for updating the regression baseline" @echo " ftp_install - to put the distribution file on sourceforge" @echo " docs_install - to put the documentation/web site on sourceforge" @echo |