Files
pgmorbac/Makefile
T

85 lines
2.4 KiB
Makefile

# Makefile for morbac_pg PostgreSQL Extension
# Multi-OrBAC: Organization-Based Access Control
EXTENSION = morbac_pg
# Read version from control file
EXTVERSION = $(shell grep default_version $(EXTENSION).control | sed "s/default_version = '\(.*\)'/\1/")
# For development, work on source files in src/
SRC_DIR = src
DEV_SQL = $(EXTENSION).sql
DATA = $(EXTENSION)--$(EXTVERSION).sql
DOCS = README.md
# PostgreSQL extension build
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
# Custom targets
# Build development SQL from source files
.PHONY: build
build:
@echo "Building $(DEV_SQL) from source files..."
@./tools/build.sh
# Create versioned release file from development file
.PHONY: release
release: build
@echo "Preparing release $(EXTVERSION)..."
@if [ ! -f $(DEV_SQL) ]; then \
echo "Error: $(DEV_SQL) not found"; \
exit 1; \
fi
cp $(DEV_SQL) $(DATA)
@echo "Created $(DATA)"
@echo "Ready to commit and tag with: git tag v$(EXTVERSION)"
# Install extension in PostgreSQL (creates versioned file if needed)
.PHONY: install
install: release
@echo "Installing morbac_pg extension..."
$(MAKE) -f Makefile install
# Run tests with development file in temporary database
.PHONY: test
test: build
@echo "Testing with development file..."
-dropdb morbac_test 2>/dev/null || true
createdb morbac_test
@./tools/test.sh morbac_test
dropdb morbac_test
@echo "Test completed."
# Uninstall extension
.PHONY: uninstall
uninstall:
@echo "Uninstalling morbac_pg extension..."
$(MAKE) -f Makefile uninstall
# Show help
.PHONY: help
help:
@echo "morbac_pg Makefile targets:"
@echo ""
@echo "Development:"
@echo " Edit source files in src/ directory"
@echo ""
@echo " make build - Build morbac_pg.sql from src/ files"
@echo " make test - Build and test in temporary database"
@echo " make release - Build and create versioned file"
@echo " make install - Build, release, and install extension"
@echo " make uninstall - Uninstall extension from PostgreSQL"
@echo " make help - Show this help"
@echo ""
@echo "Workflow:"
@echo " 1. Edit source files in src/ directory"
@echo " 2. make test (build and test your changes)"
@echo " 3. Update version in morbac_pg.control"
@echo " 4. make release (builds and creates morbac_pg--X.Y.Z.sql)"
@echo " 5. git tag vX.Y.Z && git push --tags"
@echo ""
@echo ""