Makefile revision 5911
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync#
0887a65d2e1f7d938381bed11e859caed56cb47evboxsync# CDDL HEADER START
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync#
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# The contents of this file are subject to the terms of the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Common Development and Distribution License (the "License").
0887a65d2e1f7d938381bed11e859caed56cb47evboxsync# You may not use this file except in compliance with the License.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync#
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# or http://www.opensolaris.org/os/licensing.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# See the License for the specific language governing permissions
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# and limitations under the License.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync#
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# When distributing Covered Code, include this CDDL HEADER in each
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# If applicable, add the following below this CDDL HEADER, with the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# fields enclosed by brackets "[]" replaced with your own identifying
41a5daa2596de76f4977055944c7ff54a0afdc3avboxsync# information: Portions Copyright [yyyy] [name of copyright owner]
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync#
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# CDDL HEADER END
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync#
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync#
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
dcd68204fbfce8a2703fde4a6decb9ccb2054b39vboxsync#
31620f279590f4ccc82e9e8ca1d81961095e9404vboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# This variable has no impact on perl build, it is here merely to satisfy
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# "modernized" gate infrastructure. The bitness of the module is driven by the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# bitness of perl interpreter itself. That is hardcoded in
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# $(WS_MAKE_RULES)/makemaker.mk
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncBUILD_BITS = 64
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncinclude ../../../make-rules/shared-macros.mk
ed5e4f6195dae44fd45ec21052b1931eb8c5d313vboxsync
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsyncCOMPONENT_NAME= DBD-mysql
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsyncCOMPONENT_VERSION= 4.033
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsyncIPS_COMPONENT_VERSION= 4033
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsyncHUMAN_VERSION= $(COMPONENT_VERSION)
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsyncCOMPONENT_ARCHIVE_HASH= \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync sha256:cc98bbcc33581fbc55b42ae681c6946b70a26f549b3c64466740dfe9a7eac91c
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCOMPONENT_ARCHIVE_URL= http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/$(COMPONENT_ARCHIVE)
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCOMPONENT_PROJECT_URL= https://github.com/perl5-dbi/DBD-mysql
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCOMPONENT_BUGDB= perl-mod/dbd-mysql
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncTPNO= 25495
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncBUILD_STYLE= makemaker
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncLICENSE=DBD-mysql.license
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncBUILD_TARGET= $(BUILD_$(MK_BITS)) $(LICENSE)
f5253a692b2a71d484d5daff564934d85501ae28vboxsyncinclude $(WS_MAKE_RULES)/common.mk
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
5b802b5e11fed6e163afca32e9118d2599d312fbvboxsyncCLEAN_PATHS += $(LICENSE)
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncCOMPONENT_TEST_TARGETS = test
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncCOMPONENT_TEST_MASTER = $(COMPONENT_TEST_RESULTS_DIR)/results-all.master
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsyncCOMPONENT_TEST_TRANSFORMS += \
f5253a692b2a71d484d5daff564934d85501ae28vboxsync '-e "s/[0-9][0-9]* wallclock secs (.*CPU)$$/<TIMINGS REMOVED>/" ' \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync '-e "s/^\(\# mysql_[a-z][a-z]* is: \).*/\1<REMOVED>/" ' \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync '-e "s/^\(\# SQL_DBMS_VER is \).*/\1<REMOVED>/" ' \
ed5e4f6195dae44fd45ec21052b1931eb8c5d313vboxsync '-e "s/^\(\# Driver version is \).*/\1<REMOVED>/" '
ed5e4f6195dae44fd45ec21052b1931eb8c5d313vboxsync
3f6ec43ead6f462c8c747c3f6671842aa8ad672avboxsyncASLR_MODE = $(ASLR_NOT_APPLICABLE)
ed5e4f6195dae44fd45ec21052b1931eb8c5d313vboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncMYSQL_VERSION = 5.6
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncMYSQL_BINDIR = $(USRDIR)/mysql/$(MYSQL_VERSION)/bin
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncMYSQL_TEST_USER = root
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncMYSQL_TEST_PASSWORD = new-password
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncMYSQL_TEST_DATADIR = $(COMPONENT_TEST_BUILD_DIR)/test_datadir
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCOMPONENT_TEST_ENV += MYSQL_HISTFILE=/dev/null
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCONFIGURE_OPTIONS += --mysql_config="$(MYSQL_BINDIR)/mysql_config"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCONFIGURE_OPTIONS += --testuser=$(MYSQL_TEST_USER)
5b802b5e11fed6e163afca32e9118d2599d312fbvboxsyncCONFIGURE_OPTIONS += --testpassword=$(MYSQL_TEST_PASSWORD)
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCONFIGURE_OPTIONS += --testsocket=CHANGEME
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# !!!!!!!!! workaround for 22552923
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncMYSQL_LIBS = $(shell $(MYSQL_BINDIR)/mysql_config --libs)
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCONFIGURE_OPTIONS += --libs="$(MYSQL_LIBS) -lCrun"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# !!!!!!!!! workaround for 22552923
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# For the testing we need to run mysql database first. The database needs it's
1b782fdb15aefa60d14641e47eda880841174653vboxsync# directory, which will be $(MYSQL_TEST_DATADIR). The directory will also
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# contain socket over which the testing will be performed. Problem is that the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# path can be maximally 107 characters long. To overcome that limit, we'll
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# create a symlink in /tmp pointing to the directory and refer the database to
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# that symlink. The symlink must have random name, so that multiple tests may
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# be executed simultaneously. Problem is that we have to specify the symlink
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# name during configure. To overcome that I specify the socket name as
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# 'CHANGEME' and "fix" the tests once I know the name of symlink.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
6df37320db2ea21e05e1f89e5824022b449b387dvboxsync# Second challenge is to make sure that the mysql daemon will be stopped once
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# the tests end (finish or are interrupted). There are three mechanisms to do
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# that.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# a) mysql stores it's pid to $(MYSQL_TEST_DATADIR)/pid
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# b) the COMPONENT_PRE_TEST_ACTION runs a background task which kills the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# daemon in 10 minutes no matter what.
6df37320db2ea21e05e1f89e5824022b449b387dvboxsync# c) the COMPONENT_POST_TEST_ACTION kills both the mysql daemon and the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# background task
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# If you want to keep mysqld running for your own testing purposes, delete all
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# the lines containing 'kill' in COMPONENT_PRE_TEST_ACTION and
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# COMPONENT_POST_TEST_ACTION. Then run "gmake test" once which will both run
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# the DB and configure the module to use it. After that you can "cd builds/..."
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# and "gmake test" directly there.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Normally the noise from background jobs is sent to /dev/null so that it does
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# not clobber the terminal. For debugging you can leave SILENT empty which will
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# even turn on more output
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncSILENT = >/dev/null 2>&1
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncifeq ($(strip $(SILENT)),)
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncSET_X = set -x;
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncMYSQLD_VERBOSE =
b26266e64cc81dd32722cade8418604d66f2ac3avboxsyncelse
b26266e64cc81dd32722cade8418604d66f2ac3avboxsyncSET_X =
b26266e64cc81dd32722cade8418604d66f2ac3avboxsyncMYSQLD_VERBOSE = --verbose
b26266e64cc81dd32722cade8418604d66f2ac3avboxsyncendif
b26266e64cc81dd32722cade8418604d66f2ac3avboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCOMPONENT_PRE_TEST_ACTION = ( \
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsync $(SET_X) cd "$(@D)"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync : "Prepare the testing directory and create the symlink to it"; \
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsync $(RM) -r "$(MYSQL_TEST_DATADIR)"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync mkdir "$(MYSQL_TEST_DATADIR)"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync TEST_LINK=`mktemp -t dbd-mysql-test.XXXXXX`; \
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsync $(RM) "$$TEST_LINK"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync ln -s $(MYSQL_TEST_DATADIR) "$$TEST_LINK"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync echo "$$TEST_LINK" > "$$TEST_LINK"/test_link; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync : "alter the tests to use the path we just created"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync $(PERL) -pi -e "s,CHANGEME,$$TEST_LINK/socket," t/mysql.mtest ;\
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync : "Initialize mysql DB"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync "$(MYSQL_BINDIR)/mysql_install_db" \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync --keep-my-cnf \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync --datadir="$$TEST_LINK" \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync --basedir=/usr/mysql/$(MYSQL_VERSION) $(SILENT) ; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync : "Run the daemon in background. --gdb makes it possible to terminate mysqld via Ctrl+C"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync "$(MYSQL_BINDIR)/mysqld" \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync $(MYSQLD_VERBOSE) \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync --skip-networking \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync --datadir="$$TEST_LINK" \
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsync --socket="$$TEST_LINK"/socket \
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsync --pid-file="$$TEST_LINK"/pid \
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsync --gdb \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync --log-warnings=0 \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync $(SILENT) & \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync : "Now wait for the database to be online"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync sleep 10; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if [ ! -e "$$TEST_LINK/socket" ]; then \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync : "We were not able to bring up the database?"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync PID=`cat "$$TEST_LINK"/pid`; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync ps -p $$PID && kill $$PID || : \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync $(RM) "$$TEST_LINK"; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync exit 1; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync fi; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync : "Set admin password"; \
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync "$(MYSQL_BINDIR)/mysqladmin" \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync --socket "$$TEST_LINK"/socket \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync -u "$(MYSQL_TEST_USER)" \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync password "$(MYSQL_TEST_PASSWORD)" ; \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync \
aca7a56d52c58d8b388343450503c22822fd6620vboxsync : "Run job which will kill mysqld in 10 minutes"; \
1b782fdb15aefa60d14641e47eda880841174653vboxsync ( $(SET_X) PID=`cat "$$TEST_LINK"/pid`; sleep 600; ps -p $$PID && kill $$PID || : ) $(SILENT) & \
1b782fdb15aefa60d14641e47eda880841174653vboxsync echo $$! > "$$TEST_LINK"/pid_of_guard; \
1b782fdb15aefa60d14641e47eda880841174653vboxsync)
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncCOMPONENT_POST_TEST_ACTION = ( \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync ( $(SET_X) PID=`cat $(MYSQL_TEST_DATADIR)/pid`; [ -n "$$PID" ] && ps -p $$PID && kill $$PID || : ) $(SILENT); \
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync ( $(SET_X) PID=`cat $(MYSQL_TEST_DATADIR)/pid_of_guard`; [ -n "$$PID" ] && ps -p $$PID && kill $$PID || : ) $(SILENT); \
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsync ( $(SET_X) if [ -e "$(MYSQL_TEST_DATADIR)/test_link" ]; then rm -f `cat "$(MYSQL_TEST_DATADIR)/test_link"`; fi ) $(SILENT); \
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync)
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync$(LICENSE): $(LICENSE).template
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync $(PERL) -pe 's/COMPONENT_VERSION/$(COMPONENT_VERSION)/g' "$<" > "$@"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncREQUIRED_PACKAGES += database/mysql-56/library
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncREQUIRED_PACKAGES += library/perl-5/database
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncREQUIRED_PACKAGES += system/library/c++-runtime
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync