#! /usr/bin/make -f # Copyright 2007 Cybersource Pty. Ltd. # Part of Hydraulics, a monitoring and analysis database system. # # This is free software; you may copy, modify and/or distribute this work # under the terms of the GNU General Public License, version 2 or later. # No warranty expressed or implied. See the file LICENSE for details. # Makefile for Hydraulics database DB_NAME ?= hydraulics PG_ROOT_DIR ?= ./postgres-tmp PG_SOCK_DIR ?= $(abspath ${PG_ROOT_DIR}/run) PG_LOG_DIR ?= ${PG_ROOT_DIR}/log PG_DATA_DIR ?= ${PG_ROOT_DIR}/data PG_LOG_NAME ?= postgresql.log pg_log_file = ${PG_LOG_DIR}/${PG_LOG_NAME} pg_pid_file = ${PG_DATA_DIR}/postmaster.pid SQL_SUFFIX = .sql revision_setup_files = revisions-setup-tables.sql revisions-setup-functions.sql revision_setup_targets = $(addsuffix -apply,${revision_setup_files}) REVISIONS_DIR = ./revisions revision_files = $(wildcard ${REVISIONS_DIR}/*${SQL_SUFFIX}) revision_targets = $(addsuffix -apply,${revision_files}) export PGDATABASE = ${DB_NAME} export PGDATA = ${PG_DATA_DIR} export PGHOST = ${PG_SOCK_DIR} INSTALL = install RM = rm PG_BIN_DIR = /usr/lib/postgresql/8.2/bin INITDB = ${PG_BIN_DIR}/initdb INITDB_OPTS = -A "ident sameuser" PG_CTL = ${PG_BIN_DIR}/pg_ctl PG_CTL_START_OPTS = -w -o "-h \"\" -k ${PG_SOCK_DIR}" -l ${pg_log_file} PG_CTL_STOP_OPTS = -w CREATEDB = ${PG_BIN_DIR}/createdb CREATELANG = ${PG_BIN_DIR}/createlang PSQL = ${PG_BIN_DIR}/psql APPLY_REVISION = ../bin/apply-schema-revision .PHONY: all all: test-build .PHONY: test-build test-build: setup build teardown .PHONY: init init: ${PG_DATA_DIR} ${PG_DATA_DIR}: $(INITDB) ${INITDB_OPTS} .PHONY: setup setup: setup-stamp setup-stamp: ${PG_DATA_DIR} start touch $@ .PHONY: start start: ${PG_DATA_DIR} ${pg_pid_file} ${pg_pid_file}: PGHOST = ${pg_pid_file}: ${PG_SOCK_DIR} ${PG_LOG_DIR} $(PG_CTL) ${PG_CTL_START_OPTS} start sleep 2 [ -e ${pg_pid_file} ] || exit 1 ${PG_SOCK_DIR}: $(INSTALL) -d $@ ${PG_LOG_DIR}: $(INSTALL) -d $@ .PHONY: build build: build-stamp build-stamp: setup create ${revision_setup_targets} ${revision_targets} touch $@ .PHONY: create create: create-stamp create-stamp: $(CREATEDB) ${DB_NAME} $(CREATELANG) plpgsql ${DB_NAME} touch $@ revisions-setup-%${SQL_SUFFIX}-apply: revisions-setup-%${SQL_SUFFIX} $(PSQL) -f $< ${REVISIONS_DIR}/%${SQL_SUFFIX}-apply: ${REVISIONS_DIR}/%${SQL_SUFFIX} $(APPLY_REVISION) ${DB_NAME} $< .PHONY: clean clean: teardown $(RM) -f *-stamp .PHONY: teardown teardown: stop $(RM) -rf ${PG_ROOT_DIR} .PHONY: stop stop: if [ -e "${pg_pid_file}" ] ; then \ $(PG_CTL) ${PG_CTL_STOP_OPTS} stop ; \ fi