diff --git a/Makefile b/Makefile index 738b83e..979c2b5 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +include ./Makefile.global + EXT_DIR = src/pg PYP_DIR = src/py @@ -6,30 +8,63 @@ PYP_DIR = src/py .PHONY: release .PHONY: deploy - # Generate and install developmet versions of the extension # and python package. # The extension is named 'dev' with a 'current' alias for easily upgrading. # The Python package is installed in a virtual environment envs/dev/ # Requires sudo. -install: +install: ## Generate and install development version of the extension; requires sudo. $(MAKE) -C $(PYP_DIR) install $(MAKE) -C $(EXT_DIR) install # Run the tests for the installed development extension and # python package -test: +test: ## Run the tests for the development version of the extension $(MAKE) -C $(PYP_DIR) test $(MAKE) -C $(EXT_DIR) test # Generate a new release into release -release: +release: ## Generate a new release of the extension. Only for telease manager $(MAKE) -C $(EXT_DIR) release + $(MAKE) -C $(PYP_DIR) release # Install the current release. # The Python package is installed in a virtual environment envs/X.Y.Z/ # Requires sudo. # Use the RELEASE_VERSION environment variable to deploy a specific version: # sudo make deploy RELEASE_VERSION=1.0.0 -deploy: +deploy: ## Deploy a released extension. Only for release manager. Requires sudo. $(MAKE) -C $(EXT_DIR) deploy + $(MAKE) -C $(PYP_DIR) deploy + +# Cleanup development extension script files +clean-dev: ## clean up development extension script files + rm -f src/pg/$(EXTENSION)--*.sql + +# # Cleanup all releases +# clean-releases: +# rm -rf release/python/* +# rm -f release/$(EXTENSION)--*.sql +# rm -f release/$(EXTENSION).control + +# Cleanup current/specific version +clean-release: ## clean up current release + rm -rf release/python/$(RELEASE_VERSION) + rm -f release/$(RELEASE_VERSION)--*.sql + +# Cleanup all virtual environments +clean-environments: ## clean up all virtual environments + rm -rf envs/* + +clean-all: clean-dev clean-release clean-environments + +help: + @IFS=$$'\n' ; \ + help_lines=(`fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//'`); \ + for help_line in $${help_lines[@]}; do \ + IFS=$$'#' ; \ + help_split=($$help_line) ; \ + help_command=`echo $${help_split[0]} | sed -e 's/^ *//' -e 's/ *$$//'` ; \ + help_info=`echo $${help_split[2]} | sed -e 's/^ *//' -e 's/ *$$//'` ; \ + printf "%-30s %s\n" $$help_command $$help_info ; \ + done diff --git a/Makefile.global b/Makefile.global new file mode 100644 index 0000000..77f6c69 --- /dev/null +++ b/Makefile.global @@ -0,0 +1,6 @@ +SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +EXTENSION = crankshaft +PACKAGE = crankshaft +EXTVERSION = $(shell grep default_version $(SELF_DIR)/src/pg/$(EXTENSION).control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/") +RELEASE_VERSION ?= $(EXTVERSION) +SED = sed diff --git a/src/pg/Makefile b/src/pg/Makefile index ebe7009..8a745c4 100644 --- a/src/pg/Makefile +++ b/src/pg/Makefile @@ -1,3 +1,5 @@ +include ../../Makefile.global + # Development tasks: # # * install generates the control & script files into src/pg/ @@ -9,10 +11,6 @@ # * test runs the tests for the currently generated Development # extension. -SED = sed - -EXTENSION = crankshaft - DATA = $(EXTENSION)--dev.sql \ $(EXTENSION)--current--dev.sql \ $(EXTENSION)--dev--current.sql @@ -45,9 +43,6 @@ test: installcheck # Release tasks -PACKAGE = crankshaft -EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/") - ../../release/$(EXTENSION).control: $(EXTENSION).control cp $< $@ @@ -57,31 +52,9 @@ EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed -e "s/def # and the python package in releases/python/X.Y.Z/crankshaft/ release: ../../release/$(EXTENSION).control $(SOURCES_DATA) $(SED) $(REPLACEMENTS) $(SOURCES_DATA_DIR)/*.sql > ../../release/$(EXTENSION)--$(EXTVERSION).sql - mkdir -p ../../release/python/$(EXTVERSION) - cp -r ../py/$(PACKAGE) ../../release/python/$(EXTVERSION)/ - $(SED) -i -r 's/version='"'"'[0-9]+\.[0-9]+\.[0-9]+'"'"'/version='"'"'$(EXTVERSION)'"'"'/g' ../../release/python/$(EXTVERSION)/$(PACKAGE)/setup.py - -RELEASE_VERSION ?= $(EXTVERSION) # Install the current relese into the PostgreSQL extensions directory # and the Python package in a virtual environment envs/X.Y.Z deploy: $(INSTALL_DATA) ../../release/$(EXTENSION).control '$(DESTDIR)$(datadir)/extension/' $(INSTALL_DATA) ../../release/*.sql '$(DESTDIR)$(datadir)/extension/' - # TODO: install also upgrade/downgrade files (manually generated) - virtualenv --system-site-packages $(VIRTUALENV_PATH)/$(RELEASE_VERSION) - $(VIRTUALENV_PATH)/$(RELEASE_VERSION)/bin/pip install -I -U ../../release/python/$(RELEASE_VERSION)/$(PACKAGE) - $(VIRTUALENV_PATH)/$(RELEASE_VERSION)/bin/pip install -I nose - -clean-dev: - rm -f $(EXTENSION)--*.sql - -clean-releases: - rm -rf ../../release/python/* - rm -f ../../release/$(EXTNAME)--*.sql - rm -f ../../release/$(EXTNAME).control - -clean-environments: - rm -rf ../../envs/* - -clean-all: clean-dev clean-releases clean-environments diff --git a/src/py/Makefile b/src/py/Makefile index ab787ee..90b22b8 100644 --- a/src/py/Makefile +++ b/src/py/Makefile @@ -1,3 +1,5 @@ +include ../../Makefile.global + # Install the package locally for development install: virtualenv --system-site-packages ../../envs/dev @@ -8,3 +10,13 @@ install: # Test develpment install test: ../../envs/dev/bin/nosetests crankshaft/test/ + +release: ../../release/$(EXTENSION).control $(SOURCES_DATA) + mkdir -p ../../release/python/$(EXTVERSION) + cp -r ./$(PACKAGE) ../../release/python/$(EXTVERSION)/ + $(SED) -i -r 's/version='"'"'[0-9]+\.[0-9]+\.[0-9]+'"'"'/version='"'"'$(EXTVERSION)'"'"'/g' ../../release/python/$(EXTVERSION)/$(PACKAGE)/setup.py + +deploy: + virtualenv --system-site-packages $(VIRTUALENV_PATH)/$(RELEASE_VERSION) + $(VIRTUALENV_PATH)/$(RELEASE_VERSION)/bin/pip install -I -U ../../release/python/$(RELEASE_VERSION)/$(PACKAGE) + $(VIRTUALENV_PATH)/$(RELEASE_VERSION)/bin/pip install -I nose