Skip to content

Commit 6769677

Browse files
committed
Merge pull request #510 from Aethylred/dev_libs
Install MySQL client and daemon dev libraries.
2 parents 4375d76 + b209019 commit 6769677

File tree

6 files changed

+148
-62
lines changed

6 files changed

+148
-62
lines changed

manifests/bindings.pp

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,38 @@
66
$php_enable = false,
77
$python_enable = false,
88
$ruby_enable = false,
9+
$client_dev = false,
10+
$daemon_dev = false,
911
# Settings for the various classes.
10-
$java_package_ensure = $mysql::params::java_package_ensure,
11-
$java_package_name = $mysql::params::java_package_name,
12-
$java_package_provider = $mysql::params::java_package_provider,
13-
$perl_package_ensure = $mysql::params::perl_package_ensure,
14-
$perl_package_name = $mysql::params::perl_package_name,
15-
$perl_package_provider = $mysql::params::perl_package_provider,
16-
$php_package_ensure = $mysql::params::php_package_ensure,
17-
$php_package_name = $mysql::params::php_package_name,
18-
$php_package_provider = $mysql::params::php_package_provider,
19-
$python_package_ensure = $mysql::params::python_package_ensure,
20-
$python_package_name = $mysql::params::python_package_name,
21-
$python_package_provider = $mysql::params::python_package_provider,
22-
$ruby_package_ensure = $mysql::params::ruby_package_ensure,
23-
$ruby_package_name = $mysql::params::ruby_package_name,
24-
$ruby_package_provider = $mysql::params::ruby_package_provider
12+
$java_package_ensure = $mysql::params::java_package_ensure,
13+
$java_package_name = $mysql::params::java_package_name,
14+
$java_package_provider = $mysql::params::java_package_provider,
15+
$perl_package_ensure = $mysql::params::perl_package_ensure,
16+
$perl_package_name = $mysql::params::perl_package_name,
17+
$perl_package_provider = $mysql::params::perl_package_provider,
18+
$php_package_ensure = $mysql::params::php_package_ensure,
19+
$php_package_name = $mysql::params::php_package_name,
20+
$php_package_provider = $mysql::params::php_package_provider,
21+
$python_package_ensure = $mysql::params::python_package_ensure,
22+
$python_package_name = $mysql::params::python_package_name,
23+
$python_package_provider = $mysql::params::python_package_provider,
24+
$ruby_package_ensure = $mysql::params::ruby_package_ensure,
25+
$ruby_package_name = $mysql::params::ruby_package_name,
26+
$ruby_package_provider = $mysql::params::ruby_package_provider,
27+
$client_dev_package_ensure = $mysql::params::client_dev_package_ensure,
28+
$client_dev_package_name = $mysql::params::client_dev_package_name,
29+
$client_dev_package_provider = $mysql::params::client_dev_package_provider,
30+
$daemon_dev_package_ensure = $mysql::params::daemon_dev_package_ensure,
31+
$daemon_dev_package_name = $mysql::params::daemon_dev_package_name,
32+
$daemon_dev_package_provider = $mysql::params::daemon_dev_package_provider
2533
) inherits mysql::params {
2634

2735
if $java_enable { include '::mysql::bindings::java' }
2836
if $perl_enable { include '::mysql::bindings::perl' }
2937
if $php_enable { include '::mysql::bindings::php' }
3038
if $python_enable { include '::mysql::bindings::python' }
3139
if $ruby_enable { include '::mysql::bindings::ruby' }
40+
if $client_dev { include '::mysql::bindings::client_dev' }
41+
if $daemon_dev { include '::mysql::bindings::daemon_dev' }
3242

3343
}

manifests/bindings/client_dev.pp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Private class
2+
class mysql::bindings::client_dev {
3+
4+
if $mysql::bindings::client_dev_package_name {
5+
package { 'mysql-client_dev':
6+
ensure => $mysql::bindings::client_dev_package_ensure,
7+
name => $mysql::bindings::client_dev_package_name,
8+
provider => $mysql::bindings::client_dev_package_provider,
9+
}
10+
} else {
11+
warning("No MySQL client development package configured for ${::operatingsystem}.")
12+
}
13+
14+
}

manifests/bindings/daemon_dev.pp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Private class
2+
class mysql::bindings::daemon_dev {
3+
4+
if $mysql::bindings::daemon_dev_package_name {
5+
package { 'mysql-daemon_dev':
6+
ensure => $mysql::bindings::daemon_dev_package_ensure,
7+
name => $mysql::bindings::daemon_dev_package_name,
8+
provider => $mysql::bindings::daemon_dev_package_provider,
9+
}
10+
} else {
11+
warning("No MySQL daemon development package configured for ${::operatingsystem}.")
12+
}
13+
14+
}

manifests/params.pp

Lines changed: 54 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,21 @@
1010
$server_service_manage = true
1111
$server_service_enabled = true
1212
# mysql::bindings
13-
$bindings_enable = false
14-
$java_package_ensure = 'present'
15-
$java_package_provider = undef
16-
$perl_package_ensure = 'present'
17-
$perl_package_provider = undef
18-
$php_package_ensure = 'present'
19-
$php_package_provider = undef
20-
$python_package_ensure = 'present'
21-
$python_package_provider = undef
22-
$ruby_package_ensure = 'present'
23-
$ruby_package_provider = undef
13+
$bindings_enable = false
14+
$java_package_ensure = 'present'
15+
$java_package_provider = undef
16+
$perl_package_ensure = 'present'
17+
$perl_package_provider = undef
18+
$php_package_ensure = 'present'
19+
$php_package_provider = undef
20+
$python_package_ensure = 'present'
21+
$python_package_provider = undef
22+
$ruby_package_ensure = 'present'
23+
$ruby_package_provider = undef
24+
$client_dev_package_ensure = 'present'
25+
$client_dev_package_provider = undef
26+
$daemon_dev_package_ensure = 'present'
27+
$daemon_dev_package_provider = undef
2428

2529

2630
case $::osfamily {
@@ -61,20 +65,22 @@
6165
$pidfile = '/var/run/mysqld/mysqld.pid'
6266
}
6367

64-
$basedir = '/usr'
65-
$datadir = '/var/lib/mysql'
66-
$root_group = 'root'
67-
$socket = '/var/lib/mysql/mysql.sock'
68-
$ssl_ca = '/etc/mysql/cacert.pem'
69-
$ssl_cert = '/etc/mysql/server-cert.pem'
70-
$ssl_key = '/etc/mysql/server-key.pem'
71-
$tmpdir = '/tmp'
68+
$basedir = '/usr'
69+
$datadir = '/var/lib/mysql'
70+
$root_group = 'root'
71+
$socket = '/var/lib/mysql/mysql.sock'
72+
$ssl_ca = '/etc/mysql/cacert.pem'
73+
$ssl_cert = '/etc/mysql/server-cert.pem'
74+
$ssl_key = '/etc/mysql/server-key.pem'
75+
$tmpdir = '/tmp'
7276
# mysql::bindings
73-
$java_package_name = 'mysql-connector-java'
74-
$perl_package_name = 'perl-DBD-MySQL'
75-
$php_package_name = 'php-mysql'
76-
$python_package_name = 'MySQL-python'
77-
$ruby_package_name = 'ruby-mysql'
77+
$java_package_name = 'mysql-connector-java'
78+
$perl_package_name = 'perl-DBD-MySQL'
79+
$php_package_name = 'php-mysql'
80+
$python_package_name = 'MySQL-python'
81+
$ruby_package_name = 'ruby-mysql'
82+
$client_dev_package_name = 'libmysqlclient-devel'
83+
$daemon_dev_package_name = 'mysql-devel'
7884
}
7985

8086
'Suse': {
@@ -116,24 +122,26 @@
116122
/OpenSuSE/ => 'rubygem-mysql',
117123
/(SLES|SLED)/ => 'ruby-mysql',
118124
}
125+
$client_dev_package_name = 'libmysqlclient-devel'
126+
$daemon_dev_package_name = 'mysql-devel'
119127
}
120128

121129
'Debian': {
122-
$client_package_name = 'mysql-client'
123-
$server_package_name = 'mysql-server'
130+
$client_package_name = 'mysql-client'
131+
$server_package_name = 'mysql-server'
124132

125-
$basedir = '/usr'
126-
$config_file = '/etc/mysql/my.cnf'
127-
$datadir = '/var/lib/mysql'
128-
$log_error = '/var/log/mysql/error.log'
129-
$pidfile = '/var/run/mysqld/mysqld.pid'
130-
$root_group = 'root'
131-
$server_service_name = 'mysql'
132-
$socket = '/var/run/mysqld/mysqld.sock'
133-
$ssl_ca = '/etc/mysql/cacert.pem'
134-
$ssl_cert = '/etc/mysql/server-cert.pem'
135-
$ssl_key = '/etc/mysql/server-key.pem'
136-
$tmpdir = '/tmp'
133+
$basedir = '/usr'
134+
$config_file = '/etc/mysql/my.cnf'
135+
$datadir = '/var/lib/mysql'
136+
$log_error = '/var/log/mysql/error.log'
137+
$pidfile = '/var/run/mysqld/mysqld.pid'
138+
$root_group = 'root'
139+
$server_service_name = 'mysql'
140+
$socket = '/var/run/mysqld/mysqld.sock'
141+
$ssl_ca = '/etc/mysql/cacert.pem'
142+
$ssl_cert = '/etc/mysql/server-cert.pem'
143+
$ssl_key = '/etc/mysql/server-key.pem'
144+
$tmpdir = '/tmp'
137145
# mysql::bindings
138146
$java_package_name = 'libmysql-java'
139147
$perl_package_name = 'libdbd-mysql-perl'
@@ -143,6 +151,8 @@
143151
'trusty' => 'ruby-mysql',
144152
default => 'libmysql-ruby',
145153
}
154+
$client_dev_package_name = 'libmysqlclient-dev'
155+
$daemon_dev_package_name = 'mysqld-dev'
146156
}
147157

148158
'FreeBSD': {
@@ -166,6 +176,9 @@
166176
$php_package_name = 'php5-mysql'
167177
$python_package_name = 'databases/py-MySQLdb'
168178
$ruby_package_name = 'databases/ruby-mysql'
179+
# The libraries installed by these packages are included in client and server packages, no installation required.
180+
$client_dev_package_name = undef
181+
$daemon_dev_package_name = undef
169182
}
170183

171184
default: {
@@ -191,6 +204,9 @@
191204
$php_package_name = 'php-mysql'
192205
$python_package_name = 'MySQL-python'
193206
$ruby_package_name = 'ruby-mysql'
207+
# The libraries installed by these packages are included in client and server packages, no installation required.
208+
$client_dev_package_name = undef
209+
$daemon_dev_package_name = undef
194210
}
195211

196212
default: {

spec/acceptance/mysql_bindings_spec.rb

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,21 @@
1414
if fact('operatingsystemmajrelease') == '7'
1515
ruby_package_provider = 'gem'
1616
end
17+
client_dev_package = 'libmysqlclient-devel'
18+
daemon_dev_package = 'mysql-devel'
1719
when 'Suse'
18-
java_package = 'mysql-connector-java'
19-
perl_package = 'perl-DBD-mysql'
20-
php_package = 'apache2-mod_php53'
21-
python_package = 'python-mysql'
20+
java_package = 'mysql-connector-java'
21+
perl_package = 'perl-DBD-mysql'
22+
php_package = 'apache2-mod_php53'
23+
python_package = 'python-mysql'
2224
case operatingsystem
2325
when /OpenSuSE/
2426
ruby_package = 'rubygem-mysql'
2527
when /(SLES|SLED)/
2628
ruby_package = 'ruby-mysql'
2729
end
30+
client_dev_package = 'libmysqlclient-devel'
31+
daemon_dev_package = 'mysql-devel'
2832
when 'Debian'
2933
java_package = 'libmysql-java'
3034
perl_package = 'libdbd-mysql-perl'
@@ -35,12 +39,16 @@
3539
else
3640
ruby_package = 'libmysql-ruby'
3741
end
42+
client_dev_package = 'libmysqlclient-dev'
43+
daemon_dev_package = 'mysqld-dev'
3844
when 'FreeBSD'
3945
java_package = 'databases/mysql-connector-java'
4046
perl_package = 'p5-DBD-mysql'
4147
php_package = 'php5-mysql'
4248
python_package = 'databases/py-MySQLdb'
4349
ruby_package = 'ruby-mysql'
50+
client_dev_package = nil
51+
daemon_dev_package = nil
4452
else
4553
case operatingsystem
4654
when 'Amazon'
@@ -49,6 +57,8 @@
4957
php_package = 'php5-mysql'
5058
python_package = 'MySQL-python'
5159
ruby_package = 'ruby-mysql'
60+
client_dev_package = nil
61+
daemon_dev_package = nil
5262
end
5363
end
5464

@@ -82,21 +92,29 @@ class { 'mysql::bindings':
8292
php_enable => true,
8393
python_enable => true,
8494
ruby_enable => true,
95+
client_dev => true,
96+
daemon_dev => true,
8597
java_package_ensure => present,
8698
perl_package_ensure => present,
8799
php_package_ensure => present,
88100
python_package_ensure => present,
89101
ruby_package_ensure => present,
102+
client_dev_ensure => present,
103+
daemon_dev_ensure => present,
90104
java_package_name => #{java_package},
91105
perl_package_name => #{perl_package},
92106
php_package_name => #{php_package},
93107
python_package_name => #{python_package},
94108
ruby_package_name => #{ruby_package},
109+
client_dev_package_name => #{client_dev_package},
110+
daemon_dev_package_name => #{daemon_dev_package},
95111
java_package_provider => undef,
96112
perl_package_provider => undef,
97113
php_package_provider => undef,
98114
python_package_provider => undef,
99115
ruby_package_provider => #{ruby_package_provider},
116+
client_dev_provider => undef,
117+
daemon_dev_provider => undef,
100118
}
101119
EOS
102120

spec/classes/mysql_bindings_spec.rb

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
'php_enable' => true,
88
'python_enable' => true,
99
'ruby_enable' => true,
10+
'client_dev' => true,
11+
'daemon_dev' => true,
1012
}}
1113

12-
shared_examples 'bindings' do |osfamily, operatingsystem, operatingsystemrelease, java_name, perl_name, php_name, python_name, ruby_name|
14+
shared_examples 'bindings' do |osfamily, operatingsystem, operatingsystemrelease, java_name, perl_name, php_name, python_name, ruby_name, client_dev_name, daemon_dev_name|
1315
let :facts do
1416
{ :osfamily => osfamily, :operatingsystem => operatingsystem,
1517
:operatingsystemrelease => operatingsystemrelease, :root_home => '/root',
@@ -31,20 +33,32 @@
3133
:name => ruby_name,
3234
:ensure => 'present'
3335
)}
36+
if client_dev_name
37+
it { should contain_package('mysql-client_dev').with(
38+
:name => client_dev_name,
39+
:ensure => 'present'
40+
)}
41+
end
42+
if daemon_dev_name
43+
it { should contain_package('mysql-daemon_dev').with(
44+
:name => daemon_dev_name,
45+
:ensure => 'present'
46+
)}
47+
end
3448
end
3549

3650
context 'Debian' do
37-
it_behaves_like 'bindings', 'Debian', 'Debian', '7.4','libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby'
38-
it_behaves_like 'bindings', 'Debian', 'Ubuntu', '14.04', 'libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby'
51+
it_behaves_like 'bindings', 'Debian', 'Debian', '7.4','libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby', 'libmysqlclient-dev', 'mysqld-dev'
52+
it_behaves_like 'bindings', 'Debian', 'Ubuntu', '14.04', 'libmysql-java', 'libdbd-mysql-perl', 'php5-mysql', 'python-mysqldb', 'libmysql-ruby', 'libmysqlclient-dev', 'mysqld-dev'
3953
end
4054

4155
context 'freebsd' do
4256
it_behaves_like 'bindings', 'FreeBSD', 'FreeBSD', '10.0', 'databases/mysql-connector-java', 'p5-DBD-mysql', 'databases/php5-mysql', 'databases/py-MySQLdb', 'databases/ruby-mysql'
4357
end
4458

4559
context 'redhat' do
46-
it_behaves_like 'bindings', 'RedHat', 'RedHat', '6.5', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql'
47-
it_behaves_like 'bindings', 'RedHat', 'OpenSuSE', '11.3', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql'
60+
it_behaves_like 'bindings', 'RedHat', 'RedHat', '6.5', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql', 'libmysqlclient-devel', 'mysql-devel'
61+
it_behaves_like 'bindings', 'RedHat', 'OpenSuSE', '11.3', 'mysql-connector-java', 'perl-DBD-MySQL', 'php-mysql', 'MySQL-python', 'ruby-mysql', 'libmysqlclient-devel', 'mysql-devel'
4862
end
4963

5064
describe 'on any other os' do

0 commit comments

Comments
 (0)