diff --git a/Makefile b/Makefile index 73e6fe4..cd0e45f 100644 --- a/Makefile +++ b/Makefile @@ -12,28 +12,72 @@ # See the License for the specific language governing permissions and # limitations under the License. +############################################################################### +# Variables +############################################################################### +GO_PKG_DIRS = ./cmd ./internal ./test + +BASE_OS = $(shell cat /etc/*-release | grep ID=) +ifeq "$(findstring ubuntu,$(BASE_OS))" "ubuntu" + BASE_OS=UBUNTU +else ifeq "$(findstring rhel,$(BASE_OS))" "rhel" + BASE_OS=RHEL +else + BASE_OS=UNKNOWN +endif + + + ############################################################################### # Build targets ############################################################################### # default to building UBUNTU as this was the default for the previous Makefile .PHONY: build-devserver +ifeq ($(BASE_OS),UBUNTU) build-devserver: build-devserver-ubuntu +else ifeq ($(BASE_OS),RHEL) +build-devserver: build-devserver-rhel +else +build-devserver: unknownos +endif .PHONY: build-advancedserver +ifeq ($(BASE_OS),UBUNTU) build-advancedserver: build-advancedserver-ubuntu +else ifeq ($(BASE_OS),RHEL) +build-advancedserver: build-advancedserver-rhel +else +build-advancedserver: unknownos +endif + .PHONY: test-devserver +ifeq ($(BASE_OS),UBUNTU) test-devserver: test-devserver-ubuntu +else ifeq ($(BASE_OS),RHEL) +test-devserver: test-devserver-rhel +else +test-devserver: unknownos +endif .PHONY: test-advancedserver +ifeq ($(BASE_OS),UBUNTU) test-advancedserver: test-advancedserver-ubuntu +else ifeq ($(BASE_OS),RHEL) +test-advancedserver: test-advancedserver-rhel +else +test-advancedserver: unknownos +endif -.PHONY: deps -deps: deps-ubuntu - -.PHONY: lint -lint: lint-ubuntu +.PHONY: build-devjmstest +ifeq ($(BASE_OS),UBUNTU) +build-devjmstest: build-devjmstest-ubuntu +else ifeq ($(BASE_OS),RHEL) +build-devjmstest: build-devjmstest-rhel +else +build-devjmstest: unknownos +endif # UBUNTU building targets .PHONY: build-devserver-ubuntu @@ -44,10 +88,6 @@ build-devserver-ubuntu: test-devserver-ubuntu: $(MAKE) -f Makefile-UBUNTU test-devserver -.PHONY: build-devjmstest -build-devjmstest: - $(MAKE) -f Makefile-UBUNTU build-devjmstest - .PHONY: build-devjmstest-ubuntu $(MAKE) -f Makefile-UBUNTU build-devjmstest @@ -59,13 +99,9 @@ build-advancedserver-ubuntu: test-advancedserver-ubuntu: $(MAKE) -f Makefile-UBUNTU test-advancedserver -.PHONY: deps-ubuntu -deps-ubuntu: - $(MAKE) -f Makefile-UBUNTU deps - -.PHONY: lint-ubuntu -lint-ubuntu: - $(MAKE) -f Makefile-UBUNTU lint +.PHONY: build-devjmstest-ubuntu +build-devjmstest-ubuntu: + $(MAKE) -f Makefile-UBUNTU build-devjmstest # RHEL building targets .PHONY: build-devserver-rhel @@ -83,3 +119,43 @@ build-advancedserver-rhel: .PHONY: test-advancedserver-rhel test-advancedserver-rhel: $(MAKE) -f Makefile-RHEL test-advancedserver + +.PHONY: build-devjmstest-rhel +build-devjmstest-rhel: + $(MAKE) -f Makefile-RHEL build-devjmstest + +# Common targets +.PHONY: clean +clean: + rm -rf ./coverage + rm -rf ./build + rm -rf ./deps + +.PHONY: deps +deps: + glide install --strip-vendor + +.PHONY: build-cov +build-cov: + mkdir -p build + cd build; go test -c -covermode=count ../cmd/runmqserver + +.PHONY: precommit +precommit: fmt lint + +.PHONY: fmt +fmt: $(addsuffix /$(wildcard *.go), $(GO_PKG_DIRS)) + go fmt $(addsuffix /..., $(GO_PKG_DIRS)) + +.PHONY: lint +lint: $(addsuffix /$(wildcard *.go), $(GO_PKG_DIRS)) + @# This expression is necessary because /... includes the vendor directory in golint + @# As of 11/04/2018 there is an open issue to fix it: https://github.com/golang/lint/issues/320 + golint -set_exit_status $(sort $(dir $(wildcard $(addsuffix /*/*.go, $(GO_PKG_DIRS))))) + +.PHONY: unknownos +unknownos: + $(info $(SPACER)$(shell printf "ERROR: Unknown OS ("$(BASE_OS)") please run specific make targets"$(END))) + exit 1 + +include formatting.mk diff --git a/Makefile-RHEL b/Makefile-RHEL index 4efa6cb..90d7da0 100644 --- a/Makefile-RHEL +++ b/Makefile-RHEL @@ -107,12 +107,12 @@ check-prereqs: .PHONY: test-advancedserver -test-advancedserver: +test-advancedserver: $(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_ADVANCEDSERVER) on $(shell docker --version)"$(END))) .PHONY: test-devserver -test-devserver: +test-devserver: $(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_DEVSERVER) on $(shell docker --version)"$(END))) diff --git a/Makefile-UBUNTU b/Makefile-UBUNTU index 4250d73..a24847a 100644 --- a/Makefile-UBUNTU +++ b/Makefile-UBUNTU @@ -110,24 +110,15 @@ default: build-devserver test all: build-devserver build-advancedserver .PHONY: test-all -test-all: test-devserver test-advancedserver - -.PHONY: precommit -precommit: fmt lint all test-all +test-all: build-devjmstest test-devserver test-advancedserver .PHONY: devserver -devserver: build-devserver test-devserver +devserver: build-devserver build-devjmstest test-devserver # Build incubating components .PHONY: incubating incubating: build-explorer -.PHONY: clean -clean: - rm -rf ./coverage - rm -rf ./build - rm -rf ./deps - downloads/$(MQ_ARCHIVE_DEV): $(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(MQ_VERSION)$(END))) mkdir -p downloads @@ -141,19 +132,10 @@ downloads/$(MQ_SDK_ARCHIVE): .PHONY: downloads downloads: downloads/$(MQ_ARCHIVE_DEV) downloads/$(MQ_SDK_ARCHIVE) -.PHONY: deps -deps: - glide install --strip-vendor - # Vendor Go dependencies for the Docker tests test/docker/vendor: cd test/docker && dep ensure -vendor-only -.PHONY: build-cov -build-cov: - mkdir -p build - cd build; go test -c -covermode=count ../cmd/runmqserver - # Shortcut to just run the unit tests .PHONY: test-unit test-unit: @@ -259,8 +241,8 @@ build-devserver: downloads/$(MQ_ARCHIVE_DEV) docker-version build-golang-sdk-ex build-advancedserver-cover: docker-version $(DOCKER) build --build-arg BASE_IMAGE=$(MQ_IMAGE_ADVANCEDSERVER) -t $(MQ_IMAGE_ADVANCEDSERVER)-cover -f Dockerfile-server.cover . -.PHONY: build-explorer docker-pull -build-explorer: downloads/$(MQ_ARCHIVE_DEV) +.PHONY: build-explorer +build-explorer: downloads/$(MQ_ARCHIVE_DEV) docker-pull $(call docker-build-mq,mq-explorer:latest-$(ARCH),incubating/mq-explorer/Dockerfile-mq-explorer,$(MQ_ARCHIVE_DEV),"98102d16795c4263ad9ca075190a2d4d","IBM MQ Advanced for Developers (Non-Warranted)",$(MQ_VERSION)) .PHONY: build-sdk @@ -283,17 +265,8 @@ build-golang-sdk-ex: docker-version build-sdk-ex $(DOCKER) build --build-arg BASE_IMAGE=$(MQ_IMAGE_SDK) -t $(MQ_IMAGE_GOLANG_SDK) -f incubating/mq-golang-sdk/Dockerfile . # $(call docker-build-mq,$(MQ_IMAGE_GOLANG_SDK),incubating/mq-golang-sdk/Dockerfile,$(MQ_IMAGE_SDK),"98102d16795c4263ad9ca075190a2d4d","IBM MQ Advanced for Developers SDK (Non-Warranted)",$(MQ_VERSION)) +.PHONY: docker-pull docker-pull: $(DOCKER) pull $(BASE_IMAGE) -GO_PKG_DIRS = ./cmd ./internal ./test - -fmt: $(addsuffix /$(wildcard *.go), $(GO_PKG_DIRS)) - go fmt $(addsuffix /..., $(GO_PKG_DIRS)) - -lint: $(addsuffix /$(wildcard *.go), $(GO_PKG_DIRS)) - @# This expression is necessary because /... includes the vendor directory in golint - @# As of 11/04/2018 there is an open issue to fix it: https://github.com/golang/lint/issues/320 - golint -set_exit_status $(sort $(dir $(wildcard $(addsuffix /*/*.go, $(GO_PKG_DIRS))))) - include formatting.mk