Makefile #1

  • //
  • guest/
  • perforce_software/
  • p4php/
  • main/
  • sanity_test/
  • Makefile
  • View
  • Commits
  • Open Download .zip Download (3 KB)
# The targets in this Makefile set up and execute tests inside
# a Docker container for the given artifact


# Paths to build artifacts are based on the locations where EC
# will provide them, relative to this Makefile.
# For example, 64-bit Linux p4api.tgz will be provided in:
#   <workspace>/depot/<codeline>/p4-bin/bin.linux26x86_64
# Whereas this Makefile is in:
#   <workspace>/depot/<codeline>/p4-php/sanity_test/Makefile
# Therefore, the artifact is available in:
#   ../../p4-bin/bin.linux26x86_64/p4api.tgz


# These are the targets EC or Humans call:

p4php7.archive-test : p4php7.archive.ubuntu16 p4php7.archive.centos7


# These are the targets that do the work

# Check for programs that tests depend on
depcheck : check-docker # list dependency-checking targets here
	$(info Dependency check passed)

check-docker : ; $(info ) $(info Checking for Docker) @which docker > /dev/null

# Reusable base images
# These images are not removed with 'make clean'
# Docker will use cached images if they exist, thereby speeding up tests
#  and lessening reliance on upstream package servers

p4php7.base.ubuntu16 :
	$(MAKE) p4php7.base.common ORIG_TARGET:=$@

p4php7.base.centos7 :
	$(MAKE) p4php7.base.common ORIG_TARGET:=$@

p4php7.base.common : depcheck
	$(info )
	$(info ########################################)
	$(info # Creating Base Image $(ORIG_TARGET))
	$(info ########################################)
	$(info )
	$(eval BUILDDIR = $(ORIG_TARGET)-build)
	rm -rf $(BUILDDIR)
	mkdir $(BUILDDIR)
	cp Dockerfile.$(ORIG_TARGET)                $(BUILDDIR)/Dockerfile
	cd $(BUILDDIR) && docker build -t="$(ORIG_TARGET)" .
	docker images | grep -q $(ORIG_TARGET) && echo "$(ORIG_TARGET) build succeeded"

# TGZ archive of P4PHP source

p4php7.archive.ubuntu16 : p4php7.base.ubuntu16
	$(MAKE) p4php7.archive.common ORIG_TARGET:=$@

p4php7.archive.centos7 : p4php7.base.centos7
	$(MAKE) p4php7.archive.common ORIG_TARGET:=$@

p4php7.archive.common :
	$(info )
	$(info ########################################)
	$(info # Testing $(ORIG_TARGET))
	$(info ########################################)
	$(info )
	$(eval TESTDIR = $(ORIG_TARGET)-test)
	rm -rf $(TESTDIR)
	mkdir $(TESTDIR)
	cp ../../p4-bin/bin.linux26x86_64/p4d       $(TESTDIR)
	cp ../../p4-bin/bin.linux26x86_64/p4api.tgz $(TESTDIR)
	cp ../../p4-bin/bin.tools/p4php-php7.tgz    $(TESTDIR)
	cp sanity.php                               $(TESTDIR)
	cp Dockerfile.$(ORIG_TARGET)                $(TESTDIR)/Dockerfile
	cd $(TESTDIR) && docker build -t="$(TESTDIR)" .
	docker images | grep -q $(TESTDIR) && echo "$(ORIG_TARGET) test succeeded"


# Remove remnants of all targets
# Leave the base images for reuse

clean :
	$(info )
	$(info ########################################)
	$(info # Removing Dockerfiles and Images)
	$(info ########################################)
	$(info )
	rm -rf *-test *-build
	docker ps -a -q | xargs -rn 1 docker stop
	docker ps -a -q | xargs -rn 1 docker rm
	docker images | grep none | awk '{print $$3}' | xargs -rn 1 docker rmi
	docker images | grep p4php7.archive.ubuntu16-test | awk '{print $$3}' | xargs -rn 1 docker rmi
	docker images | grep p4php7.archive.centos7-test | awk '{print $$3}' | xargs -rn 1 docker rmi

# Change User Description Committed
#1 24779 Robert Cowham P4PHP 2016.2.1490102