From fe8a87b39fbde2d809be5855d716652b216f9c8c Mon Sep 17 00:00:00 2001 From: Robert Parker Date: Mon, 8 Oct 2018 15:57:29 +0100 Subject: [PATCH] Fix build failure in RHEL makefile --- Makefile-RHEL | 70 ++++++++++++++----- mq-advanced-server-rhel/go-buildah.sh | 10 +++ mq-advanced-server-rhel/install-mq-rhel.sh | 10 +++ mq-advanced-server-rhel/mq-buildah.sh | 27 +++++++ .../mq-golang-sdk-buildah.sh | 22 ++++++ mq-advanced-server-rhel/mqdev-buildah.sh | 25 +++++++ 6 files changed, 146 insertions(+), 18 deletions(-) diff --git a/Makefile-RHEL b/Makefile-RHEL index 3a8f0de..b8f793e 100644 --- a/Makefile-RHEL +++ b/Makefile-RHEL @@ -82,18 +82,47 @@ MQ_ARCHIVE_DEV_9.1.0.0=mqadv_dev910_linux_$(MQ_DEV_ARCH).tar.gz ############################################################################### # Build targets ############################################################################### +.PHONY: vars +vars: +#ifeq "$(findstring ubuntu,$(BASE_IMAGE))","ubuntu" + @echo $(MQ_ARCHIVE_ARCH) + @echo $(MQ_ARCHIVE_TYPE) + @echo $(MQ_ARCHIVE) -# Vendor Go dependencies for the Docker tests -test/docker/vendor: - cd test/docker && dep ensure -vendor-only +.PHONY: default +default: build-devserver test-devserver + +# Build all components (except incubating ones) +.PHONY: all +all: build-devserver build-advancedserver + +.PHONY: test-all +test-all: build-devjmstest test-devserver test-advancedserver + +.PHONY: devserver +devserver: build-devserver build-devjmstest test-devserver + +# Build incubating components +.PHONY: incubating +incubating: build-explorer downloads/$(MQ_ARCHIVE_DEV): $(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(MQ_VERSION)$(END))) mkdir -p downloads cd downloads; curl -LO https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/$(MQ_ARCHIVE_DEV) +downloads/$(MQ_SDK_ARCHIVE): + $(info $(SPACER)$(shell printf $(TITLE)"Downloading IBM MQ Advanced for Developers "$(MQ_VERSION)$(END))) + mkdir -p downloads + cd downloads; curl -LO https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/$(MQ_SDK_ARCHIVE) + .PHONY: downloads -downloads: downloads/$(MQ_ARCHIVE_DEV) +downloads: downloads/$(MQ_ARCHIVE_DEV) downloads/$(MQ_SDK_ARCHIVE) + +# Vendor Go dependencies for the Docker tests +test/docker/vendor: + cd test/docker && dep ensure -vendor-only + .PHONY: check-prereqs check-prereqs: @@ -111,7 +140,7 @@ check-prereqs: .PHONY: test-advancedserver test-advancedserver: check-test-prereqs test/docker/vendor $(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_ADVANCEDSERVER) on $(shell docker --version)"$(END))) - buildah push $(MQ_IMAGE_ADVANCEDSERVER) docker-daemon:$(MQ_IMAGE_ADVANCEDSERVER) + sudo buildah push $(MQ_IMAGE_ADVANCEDSERVER) docker-daemon:$(MQ_IMAGE_ADVANCEDSERVER) docker tag docker.io/$(MQ_IMAGE_ADVANCEDSERVER) $(MQ_IMAGE_ADVANCEDSERVER) cd test/docker && TEST_IMAGE=$(MQ_IMAGE_ADVANCEDSERVER) EXPECTED_LICENSE=Production go test $(TEST_OPTS_DOCKER) @@ -119,44 +148,49 @@ test-advancedserver: check-test-prereqs test/docker/vendor .PHONY: test-devserver test-devserver: check-test-prereqs test/docker/vendor $(info $(SPACER)$(shell printf $(TITLE)"Test $(MQ_IMAGE_DEVSERVER) on $(shell docker --version)"$(END))) - buildah push $(MQ_IMAGE_DEVSERVER) docker-daemon:$(MQ_IMAGE_DEVSERVER) + sudo buildah push $(MQ_IMAGE_DEVSERVER) docker-daemon:$(MQ_IMAGE_DEVSERVER) docker tag docker.io/$(MQ_IMAGE_DEVSERVER) $(MQ_IMAGE_DEVSERVER) cd test/docker && TEST_IMAGE=$(MQ_IMAGE_DEVSERVER) EXPECTED_LICENSE=Developer DEV_JMS_IMAGE=$(DEV_JMS_IMAGE) go test -tags mqdev $(TEST_OPTS_DOCKER) .PHONY: build-advancedserver build-advancedserver: MQ_SDK_ARCHIVE=$(MQ_ARCHIVE) -build-advancedserver: check-prereqs downloads/$(MQ_ARCHIVE) build-go-programs +build-advancedserver: check-prereqs downloads/$(MQ_ARCHIVE) build-go-programs-ex $(info $(SPACER)$(shell printf $(TITLE)"Build $(MQ_IMAGE_ADVANCEDSERVER)"$(END))) - mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_ADVANCEDSERVER)" "$(MQ_VERSION)" "$(MQDEV)" + sudo mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_ADVANCEDSERVER)" "$(MQ_VERSION)" "$(MQDEV)" .PHONY: build-devserver build-devserver: MQ_SDK_ARCHIVE=$(MQ_ARCHIVE_DEV) build-devserver: MQDEV=TRUE build-devserver: MQ_PACKAGES=MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm MQSeriesJava*.rpm MQSeriesJRE*.rpm MQSeriesGSKit*.rpm MQSeriesMsg*.rpm MQSeriesSamples*.rpm MQSeriesAMS-*.rpm MQSeriesWeb-*.rpm -build-devserver: check-prereqs downloads/$(MQ_ARCHIVE_DEV) build-go-programs +build-devserver: check-prereqs downloads/$(MQ_ARCHIVE_DEV) build-go-programs-ex $(info $(SPACER)$(shell printf $(TITLE)"Build $(MQ_IMAGE_DEVSERVER)"$(END))) - mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE_DEV)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_DEVSERVER_BASE)" "$(MQ_VERSION)" "$(MQDEV)" - mq-advanced-server-rhel/mqdev-buildah.sh "$(MQ_IMAGE_DEVSERVER_BASE)" "$(MQ_IMAGE_DEVSERVER)" "$(MQ_VERSION)" + sudo mq-advanced-server-rhel/mq-buildah.sh "$(MQ_ARCHIVE_DEV)" "$(MQ_PACKAGES)" "$(MQ_IMAGE_DEVSERVER_BASE)" "$(MQ_VERSION)" "$(MQDEV)" + sudo mq-advanced-server-rhel/mqdev-buildah.sh "$(MQ_IMAGE_DEVSERVER_BASE)" "$(MQ_IMAGE_DEVSERVER)" "$(MQ_VERSION)" .PHONY: build-mqgolang-sdk -build-mqgolang-sdk: check-prereqs downloads/$(MQ_SDK_ARCHIVE) - $(info $(SPACER)$(shell printf $(TITLE)"Build mq-golang SDK"$(END))) - mq-advanced-server-rhel/mq-golang-sdk-buildah.sh "$(MQ_SDK_ARCHIVE)" "$(MQ_IMAGE_GOLANG_SDK)" +build-mqgolang-sdk: check-prereqs downloads/$(MQ_SDK_ARCHIVE) build-mqgolang-sdk-ex +.PHONY: build-mqgolang-sdk-ex +build-mqgolang-sdk-ex: + $(info $(SPACER)$(shell printf $(TITLE)"Build mq-golang SDK"$(END))) + sudo mq-advanced-server-rhel/mq-golang-sdk-buildah.sh "$(MQ_SDK_ARCHIVE)" "$(MQ_IMAGE_GOLANG_SDK)" .PHONY: build-go-programs -build-go-programs: check-prereqs build-mqgolang-sdk +build-go-programs: check-prereqs downloads/$(MQ_SDK_ARCHIVE) build-go-programs-ex + +.PHONY: build-go-programs-ex +build-go-programs-ex: build-mqgolang-sdk-ex $(info $(SPACER)$(shell printf $(TITLE)"Build go programs"$(END))) - IMAGE_REVISION=$(IMAGE_REVISION) IMAGE_SOURCE=$(IMAGE_SOURCE) mq-advanced-server-rhel/go-buildah.sh "$(MQ_IMAGE_GOLANG_SDK)" "$(MQDEV)" + IMAGE_REVISION=$(IMAGE_REVISION) IMAGE_SOURCE=$(IMAGE_SOURCE) sudo mq-advanced-server-rhel/go-buildah.sh "$(MQ_IMAGE_GOLANG_SDK)" "$(MQDEV)" .PHONY: build-devjmstest build-devjmstest: check-test-prereqs $(info $(SPACER)$(shell printf $(TITLE)"Build JMS tests for developer config"$(END))) - cd test/messaging && ./buildah.sh $(DEV_JMS_IMAGE) - buildah push $(DEV_JMS_IMAGE) docker-daemon:$(DEV_JMS_IMAGE) + cd test/messaging && sudo ./buildah.sh $(DEV_JMS_IMAGE) + sudo buildah push $(DEV_JMS_IMAGE) docker-daemon:$(DEV_JMS_IMAGE) docker tag docker.io/$(DEV_JMS_IMAGE) $(DEV_JMS_IMAGE) include formatting.mk diff --git a/mq-advanced-server-rhel/go-buildah.sh b/mq-advanced-server-rhel/go-buildah.sh index e5d25f8..9e9e63d 100755 --- a/mq-advanced-server-rhel/go-buildah.sh +++ b/mq-advanced-server-rhel/go-buildah.sh @@ -18,6 +18,16 @@ # Run the Go build script inside the Go container, mounting the source # directory in +function usage { + echo "Usage: $0 TAG DevModeFlag" + exit 20 +} + +if [ "$#" -ne 2 ]; then + echo "ERROR: Invalid number of parameters" + usage +fi + readonly tag=$1 readonly dev=$2 diff --git a/mq-advanced-server-rhel/install-mq-rhel.sh b/mq-advanced-server-rhel/install-mq-rhel.sh index 59cfc5f..e880fc0 100755 --- a/mq-advanced-server-rhel/install-mq-rhel.sh +++ b/mq-advanced-server-rhel/install-mq-rhel.sh @@ -19,6 +19,16 @@ set -ex +function usage { + echo "Usage: $0 MQContainer MountLocation ARCHIVENAME PACKAGES" + exit 20 +} + +if [ "$#" -ne 4 ]; then + echo "ERROR: Invalid number of parameters" + usage +fi + readonly ctr_mq=$1 readonly mnt_mq=$2 readonly archive=$3 diff --git a/mq-advanced-server-rhel/mq-buildah.sh b/mq-advanced-server-rhel/mq-buildah.sh index 12c803e..719ca36 100755 --- a/mq-advanced-server-rhel/mq-buildah.sh +++ b/mq-advanced-server-rhel/mq-buildah.sh @@ -22,12 +22,34 @@ set -x set -e +function usage { + echo "Usage: $0 ARCHIVENAME PACKAGES TAG VERSION MQDevFlag" + exit 20 +} + +if [ "$#" -ne 5 ]; then + echo "ERROR: Invalid number of parameters" + usage +fi + ############################################################################### # Setup MQ server working container ############################################################################### readonly ctr_mq=$(buildah from rhel7) +if [ -z "$ctr_mq" ] +then + echo "ERROR: ctr_mq is empty. Check above output for errors" + exit 50 +fi + readonly mnt_mq=$(buildah mount $ctr_mq) +if [ -z "$mnt_mq" ] +then + echo "ERROR: mnt_mq is empty. Check above output for errors" + exit 50 +fi + readonly archive=downloads/$1 readonly packages=$2 readonly tag=$3 @@ -82,9 +104,11 @@ install --mode 0750 --owner 888 --group 888 ./NOTICES.txt ${mnt_mq}/opt/mqm/lice if [ "$mqdev" = "TRUE" ]; then OSTAG="mq messaging developer" DISNAME="IBM MQ Advanced Server Developer Edition" + PID="98102d16795c4263ad9ca075190a2d4d" else OSTAG="mq messaging" DISNAME="IBM MQ Advanced Server" + PID="4486e8c4cc9146fd9b3ce1f14a2dfc5b" fi buildah config \ @@ -102,6 +126,9 @@ buildah config \ --label run="docker run -d -e LICENSE=accept --name ibm-mq ${tag%:*}" \ --label summary="$DISNAME" \ --label description="IBM MQ is messaging middleware that simplifies and accelerates the integration of diverse applications and business data across multiple platforms. It uses message queues to facilitate the exchanges of information and offers a single messaging solution for cloud, mobile, Internet of Things (IoT) and on-premises environments." \ + --label IBM_PRODUCT_ID="$PID" \ + --label IBM_PRODUCT_NAME="$DISNAME" \ + --label IBM_PRODUCT_VERSION="$version" \ --env AMQ_ADDITIONAL_JSON_LOG=1 \ --env LANG=en_US.UTF-8 \ --env LOG_FORMAT=basic \ diff --git a/mq-advanced-server-rhel/mq-golang-sdk-buildah.sh b/mq-advanced-server-rhel/mq-golang-sdk-buildah.sh index 60add5a..b73a130 100755 --- a/mq-advanced-server-rhel/mq-golang-sdk-buildah.sh +++ b/mq-advanced-server-rhel/mq-golang-sdk-buildah.sh @@ -18,13 +18,35 @@ # Build a RHEL image for building Go programs which use MQ set -ex + +function usage { + echo "Usage: $0 ARCHIVENAME TAG" + exit 20 +} + +if [ "$#" -ne 2 ]; then + echo "ERROR: Invalid number of parameters" + usage +fi + readonly mq_archive=downloads/$1 readonly tag=$2 # Use plain RHEL 7 container # Note: Red Hat's devtools/go-toolset-7-rhel7 image doesn't allow use of 'root' # user required for installing the MQ SDK readonly ctr_mq=$(buildah from rhel7) +if [ -z "$ctr_mq" ] +then + echo "ERROR: ctr_mq is empty. Check above output for errors" + exit 50 +fi + readonly mnt_mq=$(buildah mount $ctr_mq) +if [ -z "$mnt_mq" ] +then + echo "ERROR: mnt_mq is empty. Check above output for errors" + exit 50 +fi # Add mqm user groupadd --root $mnt_mq --system --gid 888 mqm diff --git a/mq-advanced-server-rhel/mqdev-buildah.sh b/mq-advanced-server-rhel/mqdev-buildah.sh index 4c9f7e8..e32ea68 100755 --- a/mq-advanced-server-rhel/mqdev-buildah.sh +++ b/mq-advanced-server-rhel/mqdev-buildah.sh @@ -22,6 +22,16 @@ set -x set -e +function usage { + echo "Usage: $0 BASETAG TAG VERSION" + exit 20 +} + +if [ "$#" -ne 3 ]; then + echo "ERROR: Invalid number of parameters" + usage +fi + ############################################################################### # Setup MQ server working container ############################################################################### @@ -30,7 +40,19 @@ set -e # Resulting image won't have yum, for example readonly basetag=$1 readonly ctr_mq=$(buildah from $basetag) +if [ -z "$ctr_mq" ] +then + echo "ERROR: ctr_mq is empty. Check above output for errors" + exit 50 +fi + readonly mnt_mq=$(buildah mount $ctr_mq) +if [ -z "$mnt_mq" ] +then + echo "ERROR: mnt_mq is empty. Check above output for errors" + exit 50 +fi + readonly tag=$2 readonly version=$3 @@ -74,6 +96,9 @@ buildah config \ --label run="docker run -d -e LICENSE=accept --name ibm-mq-dev ${tag%:*}" \ --label summary="IBM MQ Advanced Server Developer Edition" \ --label description="IBM MQ is messaging middleware that simplifies and accelerates the integration of diverse applications and business data across multiple platforms. It uses message queues to facilitate the exchanges of information and offers a single messaging solution for cloud, mobile, Internet of Things (IoT) and on-premises environments." \ + --label IBM_PRODUCT_ID="98102d16795c4263ad9ca075190a2d4d" \ + --label IBM_PRODUCT_NAME="IBM MQ Advanced Server Developer Edition" \ + --label IBM_PRODUCT_VERSION="$version" \ --env AMQ_ADDITIONAL_JSON_LOG=1 \ --env LANG=en_US.UTF-8 \ --env LOG_FORMAT=basic \