-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmariadb-scl-env-check.patch
152 lines (145 loc) · 6.82 KB
/
mariadb-scl-env-check.patch
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
142
143
144
145
146
147
148
149
150
151
152
diff -up mariadb-10.0.17/scripts/mysqld_safe.sh.scl-env-check mariadb-10.0.17/scripts/mysqld_safe.sh
--- mariadb-10.0.17/scripts/mysqld_safe.sh.scl-env-check 2015-02-25 16:40:55.000000000 +0100
+++ mariadb-10.0.17/scripts/mysqld_safe.sh 2015-03-14 12:49:01.693320701 +0100
@@ -11,6 +11,12 @@
# mysql.server works by first doing a cd to the base directory and from there
# executing mysqld_safe
+# we want start daemon only inside "scl enable" invocation
+if ! scl_enabled @SCL_NAME@ ; then
+ echo "Use \"scl enable @SCL_NAME@ 'service ...'\" invocation"
+ exit 1
+fi
+
# Initialize script globals
KILL_MYSQLD=1;
MYSQLD=
diff -up mariadb-10.0.17/scripts/mysql.init.in.scl-env-check mariadb-10.0.17/scripts/mysql.init.in
--- mariadb-10.0.17/scripts/mysql.init.in.scl-env-check 2015-03-14 12:49:01.693320701 +0100
+++ mariadb-10.0.17/scripts/mysql.init.in 2015-03-14 12:49:01.693320701 +0100
@@ -154,6 +154,18 @@ condrestart(){
[ -e $lockfile ] && restart || :
}
+# We have to re-enable SCL environment, because /sbin/service
+# clears almost all environment variables.
+# Since X_SCLS is cleared as well, we lose information about other
+# collections enabled.
+source @SCL_SCRIPTS@/service-environment
+source scl_source enable $@SCL_NAME_UPPER@_SCLS_ENABLED
+
+# we want start daemon only inside "scl enable" invocation
+if ! scl_enabled @SCL_NAME@ ; then
+ echo "Collection @SCL_NAME@ has to be listed in @SCL_SCRIPTS@/service-environment"
+ exit 1
+fi
# See how we were called.
case "$1" in
diff -up mariadb-10.0.17/scripts/mysql_install_db.sh.scl-env-check mariadb-10.0.17/scripts/mysql_install_db.sh
--- mariadb-10.0.17/scripts/mysql_install_db.sh.scl-env-check 2015-03-14 12:49:00.319319690 +0100
+++ mariadb-10.0.17/scripts/mysql_install_db.sh 2015-03-14 12:49:01.694320701 +0100
@@ -19,6 +19,12 @@
#
# All unrecognized arguments to this script are passed to mysqld.
+# we want start daemon only inside "scl enable" invocation
+if ! scl_enabled @SCL_NAME@ ; then
+ echo "Use \"scl enable @SCL_NAME@ 'service ...'\" invocation"
+ exit 1
+fi
+
basedir=""
builddir=""
ldata="@localstatedir@"
@@ -435,16 +441,16 @@ else
echo "The problem could be conflicting information in an external"
echo "my.cnf files. You can ignore these by doing:"
echo
- echo " shell> $scriptdir/scripts/mysql_install_db --defaults-file=~/.my.cnf"
+ echo " shell> su -s /bin/bash - mysql -c 'scl enable @SCL_NAME@ -- $scriptdir/scripts/mysql_install_db --defaults-file=~/.my.cnf'"
echo
echo "You can also try to start the mysqld daemon with:"
echo
- echo " shell> $mysqld --skip-grant --general-log &"
+ echo " shell> su -s /bin/bash - mysql -c 'scl enable @SCL_NAME@ -- $mysqld --skip-grant --general-log &'"
echo
echo "and use the command line tool $bindir/mysql"
echo "to connect to the mysql database and look at the grant tables:"
echo
- echo " shell> $bindir/mysql -u root mysql"
+ echo " shell> scl enable @SCL_NAME@ -- $bindir/mysql -u root mysql"
echo " mysql> show tables;"
echo
echo "Try 'mysqld --help' if you have problems with paths. Using"
@@ -474,19 +480,15 @@ fi
# the screen.
if test "$cross_bootstrap" -eq 0 && test -z "$srcdir"
then
- s_echo
- s_echo "To start mysqld at boot time you have to copy"
- s_echo "support-files/mysql.server to the right place for your system"
-
echo
echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !"
echo "To do so, start the server, then issue the following commands:"
echo
- echo "'$bindir/mysqladmin' -u root password 'new-password'"
- echo "'$bindir/mysqladmin' -u root -h $hostname password 'new-password'"
+ echo "scl enable @SCL_NAME@ -- '$bindir/mysqladmin' -u root password 'new-password'"
+ echo "scl enable @SCL_NAME@ -- '$bindir/mysqladmin' -u root -h $hostname password 'new-password'"
echo
echo "Alternatively you can run:"
- echo "'$bindir/mysql_secure_installation'"
+ echo "scl enable @SCL_NAME@ -- '$bindir/mysql_secure_installation'"
echo
echo "which will also give you the option of removing the test"
echo "databases and anonymous user created by default. This is"
@@ -502,7 +504,8 @@ then
echo "cd '$basedir' ; $bindir/mysqld_safe --datadir='$ldata'"
echo
echo "You can test the MariaDB daemon with mysql-test-run.pl"
- echo "cd '$basedir/mysql-test' ; perl mysql-test-run.pl"
+ echo "after installing @SCL_NAME@-mariadb-test package."
+ echo "See @prefix@/share/mysql-test/README for instructions."
fi
echo
diff -up mariadb-10.0.17/scripts/mysql.service.in.scl-env-check mariadb-10.0.17/scripts/mysql.service.in
--- mariadb-10.0.17/scripts/mysql.service.in.scl-env-check 2015-03-14 12:49:01.594320628 +0100
+++ mariadb-10.0.17/scripts/mysql.service.in 2015-03-14 16:06:28.582056853 +0100
@@ -32,14 +32,20 @@ Type=simple
User=mysql
Group=mysql
-ExecStartPre=@libexecdir@/mysql-check-socket
-ExecStartPre=@libexecdir@/mysql-prepare-db-dir %n
+# Load collections set to enabled for this service
+EnvironmentFile=@SCL_SCRIPTS@/service-environment
+
+# We want to start server only inside "scl enable" invocation
+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- /usr/bin/scl_enabled @SCL_NAME@
+
+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-socket
+ExecStartPre=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-prepare-db-dir %n
# Note: we set --basedir to prevent probes that might trigger SELinux alarms,
# per bug #547485
-ExecStart=@bindir@/mysqld_safe --basedir=@prefix@
-ExecStartPost=@libexecdir@/mysql-wait-ready $MAINPID
-ExecStartPost=@libexecdir@/mysql-check-upgrade
-ExecStopPost=@libexecdir@/mysql-wait-stop
+ExecStart=@libexecdir@/mysqld_safe-scl-helper enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @bindir@/mysqld_safe --basedir=@prefix@
+ExecStartPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-wait-ready $MAINPID
+ExecStartPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-check-upgrade
+ExecStopPost=/usr/bin/scl enable $@SCL_NAME_UPPER@_SCLS_ENABLED -- @libexecdir@/mysql-wait-stop
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300
diff -up mariadb-10.0.17/support-files/mysql-log-rotate.sh.scl-env-check mariadb-10.0.17/support-files/mysql-log-rotate.sh
--- mariadb-10.0.17/support-files/mysql-log-rotate.sh.scl-env-check 2015-03-14 12:49:00.278319660 +0100
+++ mariadb-10.0.17/support-files/mysql-log-rotate.sh 2015-03-14 12:49:01.694320701 +0100
@@ -30,9 +30,9 @@
# postrotate
# # just if mysqld is really running
# if test -x @bindir@/mysqladmin && \
-# @bindir@/mysqladmin ping &>/dev/null
+# /usr/bin/scl enable @SCL_NAME@ -- @bindir@/mysqladmin ping &>/dev/null
# then
-# @bindir@/mysqladmin flush-logs
+# /usr/bin/scl enable @SCL_NAME@ -- @bindir@/mysqladmin flush-logs
# fi
# endscript
#}