blob: 3e14bcbfd1381ea21707666e848e1185f0a15675 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DIST_AUTHOR=DVEEDEN
# Parallel testing is broken as 2 tests create the same table
# and mysql isn't acid compliant and can't limit visibility of tables
# to a transaction...
DIST_TEST="do"
DIST_WIKI=tests
DIST_VERSION=5.001
inherit perl-module
DESCRIPTION="MySQL driver for the Perl5 Database Interface (DBI)"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
IUSE="mariadb +mysql test"
RESTRICT="!test? ( test )"
REQUIRED_USE="^^ ( mysql mariadb )"
DB_DEPENDS="
mysql? ( >=dev-db/mysql-connector-c-8:= )
mariadb? ( >=dev-db/mariadb-connector-c-3.1:=[ssl(+)] )
"
RDEPEND="
>=dev-perl/DBI-1.609.0
>=dev-perl/Devel-CheckLib-1.109.0
${DB_DEPENDS}
"
DEPEND="
${DB_DEPENDS}
"
BDEPEND="
${RDEPEND}
virtual/perl-ExtUtils-MakeMaker
virtual/perl-Data-Dumper
test? (
dev-perl/Test-Deep
>=virtual/perl-Test-Simple-0.900.0
virtual/perl-Time-HiRes
mariadb? ( dev-db/mariadb:* )
mysql? ( >=dev-db/mysql-8:* )
)
"
PATCHES=(
"${FILESDIR}/${PN}-4.050-no-dot-inc.patch"
"${FILESDIR}/${PN}-5.001-tests.patch"
)
PERL_RM_FILES=(
t/pod.t
t/manifest.t
# Failed test 'USE is not supported with mysql_server_prepare_disable_fallback=1'
# at t/40server_prepare.t line 93.
t/40server_prepare.t
)
src_configure() {
local impl=$(usex mariadb mariadb mysql)
local myconf=()
if use test; then
myconf+=(
--testdb=test
--testhost=localhost
--testsocket="${T}"/mysqld.sock
--testuser=root
)
fi
myconf+=( --mysql_config="${EPREFIX}"/usr/bin/${impl}_config )
perl-module_src_configure
}
src_test() {
local -x USER=$(whoami)
einfo "Creating mysql test instance ..."
mkdir -p "${T}"/mysql || die
if use mariadb ; then
local -x PATH="${BROOT}/usr/share/mariadb/scripts:${PATH}"
mysql_install_db \
--no-defaults \
--auth-root-authentication-method=normal \
--basedir="${EPREFIX}/usr" \
--datadir="${T}"/mysql 1>"${T}"/mysqld_install.log || die
else
mysqld \
--no-defaults \
--initialize-insecure \
--user ${USER} \
--basedir="${EPREFIX}/usr" \
--datadir="${T}"/mysql 1>"${T}"/mysqld_install.log || die
fi
einfo "Starting mysql test instance ..."
mysqld \
--no-defaults \
--character-set-server=utf8 \
--bind-address=127.0.0.1 \
--pid-file="${T}"/mysqld.pid \
--socket="${T}"/mysqld.sock \
--datadir="${T}"/mysql 1>"${T}"/mysqld.log 2>&1 &
# Wait for it to start
local i
for (( i = 0; i < 10; i++ )); do
[[ -S ${T}/mysqld.sock ]] && break
sleep 1
done
[[ ! -S ${T}/mysqld.sock ]] && die "mysqld failed to start"
einfo "Configuring test mysql instance ..."
mysql -u root \
-e 'CREATE DATABASE /*M!50701 IF NOT EXISTS */ test' \
-S "${T}"/mysqld.sock || die "Failed to create test database"
# Don't be a hero and try to do EXTENDED_TESTING=1 unless you can figure
# out why 60leaks.t fails
nonfatal perl-module_src_test
ret=$?
einfo "Stopping mysql test instance ..."
pkill -F "${T}"/mysqld.pid || die
# wait for it to stop
local i
for (( i = 0; i < 10; i++ )); do
[[ -S ${T}/mysqld.sock ]] || break
sleep 1
done
rm -rf "${T}"/mysql || die
[[ ${ret} -ne 0 ]] && die
}
|