blob: bfd0ee344a7c1219168b15027ae54403327f7329 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# protect the default target for this file from the targets in Makefile.global
include ../common.mk
default: stage-notest
PXF_ROOT_DIR := $(shell cd .. && pwd)
PXF_VERSION ?= $(shell cat $(PXF_ROOT_DIR)/version)
PXF_API_VERSION ?= $(shell cat $(PXF_ROOT_DIR)/api_version)
PXF_GRADLE_PROPERTIES = -Pversion=$(PXF_VERSION) -PapiVersion=$(PXF_API_VERSION)
.PHONY: prepare-gradle-wrapper
prepare-gradle-wrapper:
@APP_HOME="$(CURDIR)" bash ./gradlew-install.sh
help:
@echo
@echo "Possible targets"
@echo " - all (clean, compile, test, stage)"
@echo " - clean - cleans the workspace of all produced artifacts"
@echo " - compile - compiles all PXF modules and builds their JAR files"
@echo " - test - runs unit tests for all PXF modules"
@echo " - coverage - runs unit tests for all PXF modules and gives a coverage report"
@echo " - install - setup PXF in the configured deployPath"
@echo " - stage - build PXF server and stage resulting artifacts for packaging (no JDBC drivers in build/stage/lib)"
@echo " - stage-notest - same as stage but skip tests (no JDBC drivers in build/stage/lib)"
@echo " - stage-jdbc-drivers - copy JDBC driver JARs to build/stage/lib"
@echo " - install-jdbc-drivers - setup PXF JDBC drivers in the configured deployPath"
@echo " - doc - creates aggregate javadoc under docs"
all: prepare-gradle-wrapper
./gradlew $(PXF_GRADLE_PROPERTIES) clean stage
compile: prepare-gradle-wrapper
./gradlew $(PXF_GRADLE_PROPERTIES) compileJava
GRADLEW_TEST_PARAMS = test
ifneq "$(TEST)" ""
# find test file, remove leading "./" and trailing ".java"
TEST_FILE = $(subst ./,,$(subst .java,,$(shell find . -name $(TEST).java)))
# parse out the gradle project by grabbing top-level dir name
PROJECT = $(word 1,$(subst /, ,$(TEST_FILE)))
# get java-style path with dots, starting at "org"
TEST_PATH = $(subst /,.,$(subst $(PROJECT)/src/test/java/,,$(TEST_FILE)))
GRADLEW_TEST_PARAMS = :$(PROJECT):test --rerun-tasks --tests $(TEST_PATH)
endif
test unittest: prepare-gradle-wrapper
@if [ -n '$(TEST)' ] && [ -z '${TEST_FILE}' ]; then \
echo 'Test $(TEST) was not found'; \
exit 1; \
fi
./gradlew $(PXF_GRADLE_PROPERTIES) ${GRADLEW_TEST_PARAMS}
coverage: prepare-gradle-wrapper
./gradlew $(PXF_GRADLE_PROPERTIES) ${GRADLEW_TEST_PARAMS} jacocoTestReport
@echo
@echo "Coverage reports can be found within each server module under <module-name>/build/reports/jacoco"
@echo "For example, the pxf-service coverage report is located at $(shell pwd)/pxf-service/build/reports/jacoco/test/html/index.html"
.PHONY: stage
stage: prepare-gradle-wrapper
./gradlew $(PXF_GRADLE_PROPERTIES) test stage
install -m 744 -d "build/stage/lib"
install -m 744 -d "build/stage/lib/native"
install -m 744 -d "build/stage/servers"
install -m 744 -d "build/stage/servers/default"
install -m 700 -d "build/stage/logs"
install -m 700 -d "build/stage/run"
install -m 700 -d "build/stage/keytabs"
.PHONY: stage-notest
stage-notest: prepare-gradle-wrapper
./gradlew $(PXF_GRADLE_PROPERTIES) stage -x test
install -m 744 -d "build/stage/lib"
install -m 744 -d "build/stage/lib/native"
install -m 744 -d "build/stage/servers"
install -m 744 -d "build/stage/servers/default"
install -m 700 -d "build/stage/logs"
install -m 700 -d "build/stage/run"
install -m 700 -d "build/stage/keytabs"
.PHONY: stage-jdbc-drivers
stage-jdbc-drivers: prepare-gradle-wrapper
rm -rf build/stage/lib
./gradlew $(PXF_GRADLE_PROPERTIES) stageJdbcDrivers
.PHONY: install-jdbc-drivers
install-jdbc-drivers: stage-jdbc-drivers
@if [ -z "$(PXF_HOME)" ]; then \
echo "ERROR: PXF_HOME is not set"; exit 2; \
fi
mkdir -p "$(PXF_HOME)"/lib
cp -R build/stage/lib/. "$(PXF_HOME)"/lib/
clean: prepare-gradle-wrapper
./gradlew clean
rm -rf build
.PHONY: clean-all
clean-all: clean
distclean maintainer-clean: clean
doc: prepare-gradle-wrapper
./gradlew $(PXF_GRADLE_PROPERTIES) aggregateJavadoc
.PHONY: install
install: stage
@if [ -z "$(PXF_HOME)" ]; then \
echo "ERROR: PXF_HOME is not set"; exit 2; \
fi
mkdir -p "$(PXF_HOME)"
cp -R build/stage/* "$(PXF_HOME)"
.PHONY: install-server
install-server: stage-notest
@if [ -z "$(PXF_HOME)" ]; then \
echo "ERROR: PXF_HOME is not set"; exit 2; \
fi
mkdir -p "$(PXF_HOME)"
cp -R build/stage/* "$(PXF_HOME)"
.PHONY: version
version: prepare-gradle-wrapper
@./gradlew -q version