# Copyright (C) 2013 The Meme Factory, Inc. http://www.meme.com/
#
# This file is part of Gombe-MI.
#
# Gombe-MI 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.
#
# This program 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 Gombe-MI. If not, see .
#
# Karl O. Pinc
#
# Makefile for pyramid app setup and maintenance.
#
# See the INSTALL file for initial setup that must be done by root.
#
# See: http://www.pylonsproject.org/
PYRAMID_VERSION := 1.5
MODWSGI_VENV := /usr/local/lib/pyramid_env
DEVEL_VENV := ../devel_venv
PROJECT_NAME := GMI_Pyramid
DEVEL_STUFF := $(PROJECT_NAME).egg-info distribute-0.6.10.tar.gz dist build \
$(PROJECT_NAME).egg
.PHONY: help
help:
@echo 'Targets are:'
@echo ' help This help'
@echo ' modwsgi_venv Create python virtual env into which live'
@echo ' app is installed and run with'
@echo ' Apache mod_wsgi.'
@echo ' ../devel_venv Create local virtual env into which devel'
@echo ' app is installed and run.'
@echo ' install_prod Install production app into modwsgi_venv.'
@echo ' configure_prod Install production.ini into modwsgi_venv.'
@echo ' install_devel Install development app into devel_venv.'
@echo ' run_devel Run the app in development mode.'
@echo ' test_devel Run unit tests in the development venv.'
@echo ' clean_devel_venv Destroy devel_venv.'
@echo ' clean_prod Destroy modwsgi_venv.'
@echo ' clean Destroy all generated development files.'
@echo ' maintainerclean Start development entirely over.'
@echo
@echo 'Production related changes must be made through this Makefile'
@echo 'or with a umask of 0002 to support collaboration with gombemi'
@echo 'Unix group members.'
# Note that we'd like to make modwsgi_venv depend on $(MODWSGI_VENV) and
# have the work done there. This way other production targets could also
# depend on $(MODWSGI_VENV). But the directory itself must be made by root.
.PHONY: modwsgi_venv
modwsgi_venv:
# Allow UPG collaboration.
umask 0002 ; \
virtualenv --no-site-packages $(MODWSGI_VENV) ; \
$(MODWSGI_VENV)/bin/easy_install "pyramid==$(PYRAMID_VERSION)" ; \
printf '%s\n%s\n%s\n%s\n' \
'from pyramid.paster import get_app, setup_logging' \
"ini_path = '$(MODWSGI_VENV)/production.ini'" \
'setup_logging(ini_path)' \
"application = get_app(ini_path, 'main')" \
> $(MODWSGI_VENV)/pyramid.wsgi
.PHONY: make_egg
make_egg:
rm -rf dist
$(MODWSGI_VENV)/bin/python setup.py bdist_egg
ln -sf dist/$(PROJECT_NAME)*.egg $(PROJECT_NAME).egg
.PHONY: install_prod
install_prod: make_egg
umask 0002 ; \
$(MODWSGI_VENV)/bin/easy_install $$(readlink $(PROJECT_NAME).egg)
.PHONY: configure_prod
configure_prod:
umask 0002 ; \
cp production.ini $(MODWSGI_VENV)
$(DEVEL_VENV):
# Create venv
virtualenv --no-site-packages $(DEVEL_VENV)
# Install pyramid
$(DEVEL_VENV)/bin/easy_install "pyramid==$(PYRAMID_VERSION)"
.PHONY: install_devel
install_devel: $(DEVEL_VENV)
$(DEVEL_VENV)/bin/python setup.py develop
.PHONY: test_devel
test_devel:
$(DEVEL_VENV)/bin/python setup.py test -q
.PHONY: run_devel
run_devel:
$(DEVEL_VENV)/bin/pserve --reload development.ini
.PHONY: clean_devel_venv
clean_devel_venv:
rm -rf $(DEVEL_VENV)
.PHONY: clean_prod
clean_prod:
# Leave the $(MODWSGI_VENV) directory intact since it's ownwed by
# root and setgid with g=rwx.
rm -rf $(MODWSGI_VENV)/*
.PHONY: clean
clean:
rm -rf $(DEVEL_STUFF)
.PHONY: maintainerclean
maintainterclean: clean_devel_venv clean