Makefile revision 5911
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# CDDL HEADER START
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# The contents of this file are subject to the terms of the
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# Common Development and Distribution License (the "License").
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# You may not use this file except in compliance with the License.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# or http://www.opensolaris.org/os/licensing.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# See the License for the specific language governing permissions
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# and limitations under the License.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# When distributing Covered Code, include this CDDL HEADER in each
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# If applicable, add the following below this CDDL HEADER, with the
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# fields enclosed by brackets "[]" replaced with your own identifying
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# information: Portions Copyright [yyyy] [name of copyright owner]
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# CDDL HEADER END
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#
f2c346eaa486431ffa2a3adc05356159de834e2eLukas Slebodnik
f2c346eaa486431ffa2a3adc05356159de834e2eLukas Slebodnik# This variable has no impact on perl build, it is here merely to satisfy
f2c346eaa486431ffa2a3adc05356159de834e2eLukas Slebodnik# "modernized" gate infrastructure. The bitness of the module is driven by the
580374daba2ab2c6075a7d0de9512abff133e2e9Jakub Hrozek# bitness of perl interpreter itself. That is hardcoded in
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# $(WS_MAKE_RULES)/makemaker.mk
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherBUILD_BITS = 64
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherinclude ../../../make-rules/shared-macros.mk
6ac396bebb4cd3124711d26dce54263f6f9c7c45Simo Sorce
6ac396bebb4cd3124711d26dce54263f6f9c7c45Simo SorceCOMPONENT_NAME= DBD-mysql
51773686d354b82081830444c048706d83d43d65Jakub HrozekCOMPONENT_VERSION= 4.033
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub HrozekIPS_COMPONENT_VERSION= 4033
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub HrozekHUMAN_VERSION= $(COMPONENT_VERSION)
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub HrozekCOMPONENT_ARCHIVE_HASH= \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek sha256:cc98bbcc33581fbc55b42ae681c6946b70a26f549b3c64466740dfe9a7eac91c
4e9631a9f1ae87317eef53145622099c46196b56Jakub HrozekCOMPONENT_ARCHIVE_URL= http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/$(COMPONENT_ARCHIVE)
9579839a00493830c10a856ad1f5e035b6fa3b45Ondrej KosCOMPONENT_PROJECT_URL= https://github.com/perl5-dbi/DBD-mysql
3412d14d65490c32414e72ac20fe21bad53ceb45Simo SorceCOMPONENT_BUGDB= perl-mod/dbd-mysql
3412d14d65490c32414e72ac20fe21bad53ceb45Simo Sorce
3412d14d65490c32414e72ac20fe21bad53ceb45Simo SorceTPNO= 25495
9579839a00493830c10a856ad1f5e035b6fa3b45Ondrej Kos
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherBUILD_STYLE= makemaker
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherLICENSE=DBD-mysql.license
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherBUILD_TARGET= $(BUILD_$(MK_BITS)) $(LICENSE)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherinclude $(WS_MAKE_RULES)/common.mk
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCLEAN_PATHS += $(LICENSE)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCOMPONENT_TEST_TARGETS = test
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCOMPONENT_TEST_MASTER = $(COMPONENT_TEST_RESULTS_DIR)/results-all.master
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCOMPONENT_TEST_TRANSFORMS += \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher '-e "s/[0-9][0-9]* wallclock secs (.*CPU)$$/<TIMINGS REMOVED>/" ' \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher '-e "s/^\(\# mysql_[a-z][a-z]* is: \).*/\1<REMOVED>/" ' \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek '-e "s/^\(\# SQL_DBMS_VER is \).*/\1<REMOVED>/" ' \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek '-e "s/^\(\# Driver version is \).*/\1<REMOVED>/" '
51773686d354b82081830444c048706d83d43d65Jakub Hrozek
51773686d354b82081830444c048706d83d43d65Jakub HrozekASLR_MODE = $(ASLR_NOT_APPLICABLE)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub HrozekMYSQL_VERSION = 5.6
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherMYSQL_BINDIR = $(USRDIR)/mysql/$(MYSQL_VERSION)/bin
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub HrozekMYSQL_TEST_USER = root
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherMYSQL_TEST_PASSWORD = new-password
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherMYSQL_TEST_DATADIR = $(COMPONENT_TEST_BUILD_DIR)/test_datadir
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCOMPONENT_TEST_ENV += MYSQL_HISTFILE=/dev/null
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCONFIGURE_OPTIONS += --mysql_config="$(MYSQL_BINDIR)/mysql_config"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCONFIGURE_OPTIONS += --testuser=$(MYSQL_TEST_USER)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCONFIGURE_OPTIONS += --testpassword=$(MYSQL_TEST_PASSWORD)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCONFIGURE_OPTIONS += --testsocket=CHANGEME
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# !!!!!!!!! workaround for 22552923
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherMYSQL_LIBS = $(shell $(MYSQL_BINDIR)/mysql_config --libs)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCONFIGURE_OPTIONS += --libs="$(MYSQL_LIBS) -lCrun"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# !!!!!!!!! workaround for 22552923
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# For the testing we need to run mysql database first. The database needs it's
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# directory, which will be $(MYSQL_TEST_DATADIR). The directory will also
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# contain socket over which the testing will be performed. Problem is that the
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# path can be maximally 107 characters long. To overcome that limit, we'll
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher# create a symlink in /tmp pointing to the directory and refer the database to
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# that symlink. The symlink must have random name, so that multiple tests may
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# be executed simultaneously. Problem is that we have to specify the symlink
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# name during configure. To overcome that I specify the socket name as
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# 'CHANGEME' and "fix" the tests once I know the name of symlink.
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# Second challenge is to make sure that the mysql daemon will be stopped once
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# the tests end (finish or are interrupted). There are three mechanisms to do
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# that.
3412d14d65490c32414e72ac20fe21bad53ceb45Simo Sorce# a) mysql stores it's pid to $(MYSQL_TEST_DATADIR)/pid
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# b) the COMPONENT_PRE_TEST_ACTION runs a background task which kills the
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# daemon in 10 minutes no matter what.
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# c) the COMPONENT_POST_TEST_ACTION kills both the mysql daemon and the
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# background task
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek# If you want to keep mysqld running for your own testing purposes, delete all
51773686d354b82081830444c048706d83d43d65Jakub Hrozek# the lines containing 'kill' in COMPONENT_PRE_TEST_ACTION and
51773686d354b82081830444c048706d83d43d65Jakub Hrozek# COMPONENT_POST_TEST_ACTION. Then run "gmake test" once which will both run
2d66c2eee2e4364a52d5436b61759ef990108230Simo Sorce# the DB and configure the module to use it. After that you can "cd builds/..."
51773686d354b82081830444c048706d83d43d65Jakub Hrozek# and "gmake test" directly there.
51773686d354b82081830444c048706d83d43d65Jakub Hrozek
51773686d354b82081830444c048706d83d43d65Jakub Hrozek# Normally the noise from background jobs is sent to /dev/null so that it does
51773686d354b82081830444c048706d83d43d65Jakub Hrozek# not clobber the terminal. For debugging you can leave SILENT empty which will
51773686d354b82081830444c048706d83d43d65Jakub Hrozek# even turn on more output
51773686d354b82081830444c048706d83d43d65Jakub HrozekSILENT = >/dev/null 2>&1
51773686d354b82081830444c048706d83d43d65Jakub Hrozekifeq ($(strip $(SILENT)),)
51773686d354b82081830444c048706d83d43d65Jakub HrozekSET_X = set -x;
51773686d354b82081830444c048706d83d43d65Jakub HrozekMYSQLD_VERBOSE =
51773686d354b82081830444c048706d83d43d65Jakub Hrozekelse
51773686d354b82081830444c048706d83d43d65Jakub HrozekSET_X =
51773686d354b82081830444c048706d83d43d65Jakub HrozekMYSQLD_VERBOSE = --verbose
51773686d354b82081830444c048706d83d43d65Jakub Hrozekendif
51773686d354b82081830444c048706d83d43d65Jakub Hrozek
51773686d354b82081830444c048706d83d43d65Jakub HrozekCOMPONENT_PRE_TEST_ACTION = ( \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek $(SET_X) cd "$(@D)"; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek : "Prepare the testing directory and create the symlink to it"; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek $(RM) -r "$(MYSQL_TEST_DATADIR)"; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek mkdir "$(MYSQL_TEST_DATADIR)"; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek TEST_LINK=`mktemp -t dbd-mysql-test.XXXXXX`; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek $(RM) "$$TEST_LINK"; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek ln -s $(MYSQL_TEST_DATADIR) "$$TEST_LINK"; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek echo "$$TEST_LINK" > "$$TEST_LINK"/test_link; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek : "alter the tests to use the path we just created"; \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek $(PERL) -pi -e "s,CHANGEME,$$TEST_LINK/socket," t/mysql.mtest ;\
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek : "Initialize mysql DB"; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek "$(MYSQL_BINDIR)/mysql_install_db" \
3412d14d65490c32414e72ac20fe21bad53ceb45Simo Sorce --keep-my-cnf \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --datadir="$$TEST_LINK" \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --basedir=/usr/mysql/$(MYSQL_VERSION) $(SILENT) ; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek : "Run the daemon in background. --gdb makes it possible to terminate mysqld via Ctrl+C"; \
6ac396bebb4cd3124711d26dce54263f6f9c7c45Simo Sorce "$(MYSQL_BINDIR)/mysqld" \
51773686d354b82081830444c048706d83d43d65Jakub Hrozek $(MYSQLD_VERBOSE) \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --skip-networking \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --datadir="$$TEST_LINK" \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --socket="$$TEST_LINK"/socket \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --pid-file="$$TEST_LINK"/pid \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --gdb \
c9041cb7addc1a49e0771246d17de101662fbcbcJakub Hrozek --log-warnings=0 \
c9041cb7addc1a49e0771246d17de101662fbcbcJakub Hrozek $(SILENT) & \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek : "Now wait for the database to be online"; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek sleep 10; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek if [ ! -e "$$TEST_LINK/socket" ]; then \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek : "We were not able to bring up the database?"; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek PID=`cat "$$TEST_LINK"/pid`; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek ps -p $$PID && kill $$PID || : \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek $(RM) "$$TEST_LINK"; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek exit 1; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek fi; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek : "Set admin password"; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek "$(MYSQL_BINDIR)/mysqladmin" \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek --socket "$$TEST_LINK"/socket \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek -u "$(MYSQL_TEST_USER)" \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher password "$(MYSQL_TEST_PASSWORD)" ; \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher : "Run job which will kill mysqld in 10 minutes"; \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ( $(SET_X) PID=`cat "$$TEST_LINK"/pid`; sleep 600; ps -p $$PID && kill $$PID || : ) $(SILENT) & \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek echo $$! > "$$TEST_LINK"/pid_of_guard; \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherCOMPONENT_POST_TEST_ACTION = ( \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ( $(SET_X) PID=`cat $(MYSQL_TEST_DATADIR)/pid`; [ -n "$$PID" ] && ps -p $$PID && kill $$PID || : ) $(SILENT); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ( $(SET_X) PID=`cat $(MYSQL_TEST_DATADIR)/pid_of_guard`; [ -n "$$PID" ] && ps -p $$PID && kill $$PID || : ) $(SILENT); \
a4bf85ccc902490c3b75b44532010fbb32169801Lukas Slebodnik ( $(SET_X) if [ -e "$(MYSQL_TEST_DATADIR)/test_link" ]; then rm -f `cat "$(MYSQL_TEST_DATADIR)/test_link"`; fi ) $(SILENT); \
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek)
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher$(LICENSE): $(LICENSE).template
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher $(PERL) -pe 's/COMPONENT_VERSION/$(COMPONENT_VERSION)/g' "$<" > "$@"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherREQUIRED_PACKAGES += database/mysql-56/library
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen GallagherREQUIRED_PACKAGES += library/perl-5/database
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub HrozekREQUIRED_PACKAGES += system/library/c++-runtime
28d1ff294f7d612f6d37c82ed426b8bf5c34bfafJakub Hrozek