Magellan Linux

Contents of /smage/branches/alx07x-stable/core/mysql/mysql-5.5.57-r2.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 9991 - (show annotations) (download)
Thu Aug 3 14:33:22 2017 UTC (6 years, 8 months ago) by niro
File size: 8442 byte(s)
-release branches/alx07x-stable
1 # $Id$
2
3 PNAME="mysql"
4 PVER="5.5.57"
5 PBUILD="r2"
6
7 SPLIT_PACKAGES="mysql-libs mysql-clients mysql"
8
9 PCAT="dev-db"
10 HOMEPAGE="http://www.mysql.com/"
11
12 COMMON_DEPEND=">= sys-libs/zlib-1.2
13 >= sys-libs/ncurses-6.0
14 >= sys-libs/libstdc++-5.3"
15
16 SDEPEND="${COMMON_DEPEND}
17 >= virtual/sed
18 >= sys-libs/zlib-dev-1.2
19 >= sys-libs/ncurses-dev-6.0
20 >= sys-libs/libstdc++-dev-5.3"
21
22 SRCFILE="${PNAME}-${PVER}.tar.gz"
23 SRCDIR="${BUILDDIR}/${PNAME}-${PVER}"
24
25 # support variable pname in postinstall
26 myPNAME="${PNAME}"
27 SPECIAL_VARS="myPNAME"
28
29 sminclude mtools cmake systemd
30
31 TMP_REV=1.2
32
33 SRC_URI=(
34 ftp://ftp.mysql.com/pub/${PNAME}/src/${SRCFILE}
35 http://ftp.gwdg.de/pub/misc/${PNAME}/Downloads/MySQL-${PVER%.*}/${SRCFILE}
36 mirror://${PNAME}/${SRCFILE}
37 mirror://${PNAME}/mysql.tmpfile-${TMP_REV}
38 mirror://${PNAME}/mysqld.service
39 mirror://${PNAME}/mysqld.socket
40 mirror://${PNAME}/${PNAME}-5.5.19-cnf-defaults.patch
41 mirror://${PNAME}/${PNAME}-5.5.57-gcc7.patch
42 )
43
44 UP2DATE="updatecmd http://dev.mysql.com/ | grep GA | sed 's:.*\]\([0-9].*\)\ GA.*:\1:;q'"
45
46 split_info_mysql-libs()
47 {
48 DESCRIPTION="MySQL client libraries"
49 DEPEND="${COMMON_DEPEND}"
50 PROVIDE="virtual/mysql-libs"
51 }
52
53 split_info_mysql-clients()
54 {
55 DESCRIPTION="MySQL client utilities."
56 DEPEND="== dev-db/mysql-libs-${PVER}"
57 PROVIDE="virtual/mysql-clients"
58 }
59
60 split_info_mysql()
61 {
62 DESCRIPTION="MySQL is a SQL (Structured Query Language) database server."
63 DEPEND="== dev-db/mysql-clients-${PVER}"
64 PROVIDE="virtual/mysql"
65 }
66
67 pkg_setup()
68 {
69 # warn about /proc in chroot environments
70 [[ ! -d /proc/sys ]] && die "Please make sure /proc is mounted in chroot-environments."
71
72 preinstall_mysql
73 }
74
75 src_prepare()
76 {
77 munpack ${SRCFILE} || die
78 cd ${SRCDIR}
79
80 # fix gcc-7 -fpermissive errors
81 mpatch ${PNAME}-5.5.57-gcc7.patch || die
82
83 # apply our configuration
84 mpatch ${PNAME}-5.5.19-cnf-defaults.patch || die
85
86 # fix broken install logic:
87 # always defaults to ./bin/my_print_default, using STANDARTLAYOUT
88 # see srcdir/cmake/install_layout.cmake and srcdir/scripts/CMakeLists.txt
89 sed -i 's:SET(prefix "."):SET(prefix "${CMAKE_INSTALL_PREFIX}"):' scripts/CMakeLists.txt || die
90 }
91
92 src_compile()
93 {
94 cd ${SRCDIR}
95
96 # fixes some issues
97 export CFLAGS="${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer -fno-delete-null-pointer-checks"
98 export CXXFLAGS="${CXXFLAGS} -felide-constructors -fno-rtti -fno-strict-aliasing -DBIG_JOINS=1 -fno-delete-null-pointer-checks"
99
100 # fix PIC issues
101 export CFLAGS="${CFLAGS} -fPIC"
102 export CXXFLAGS="${CXXFLAGS} -fPIC"
103
104 cmake_configure \
105 -DWITH_COMMENT="Magellan MySQL ${PVER}-${PBUILD}" \
106 $(cmake_install BINDIR bin) \
107 $(cmake_install SBINDIR sbin) \
108 $(cmake_install DOCDIR share/doc/${PNAME}) \
109 $(cmake_install DOCREADMEDIR share/doc/${PNAME}) \
110 $(cmake_install INCLUDEDIR include/${PNAME}) \
111 $(cmake_install INFODIR share/info) \
112 $(cmake_install LIBDIR $(mlibdir)/${PNAME}) \
113 $(cmake_install MANDIR share/man) \
114 $(cmake_install MYSQLDATADIR /var/lib/${PNAME}) \
115 $(cmake_install MYSQLSHAREDIR share/${PNAME}) \
116 $(cmake_install MYSQLTESTDIR share/${PNAME}/mysql-test) \
117 $(cmake_install PLUGINDIR $(mlibdir)/${PNAME}/plugin) \
118 $(cmake_install SCRIPTDIR bin) \
119 $(cmake_install SQLBENCHDIR share/${PNAME}) \
120 $(cmake_install SUPPORTFILESDIR /usr/share/${PNAME}) \
121 $(cmake_opt SYSCONFDIR /etc/${PNAME}) \
122 $(cmake_opt MYSQL_USER mysql) \
123 $(cmake_opt MYSQL_UNIX_ADDR /run/${PNAME}d/mysqld.sock) \
124 $(cmake_opt ENABLED_LOCAL_INFILE ON) \
125 $(cmake_opt EXTRA_CHARSETS all) \
126 $(cmake_opt DEFAULT_CHARSET utf8) \
127 $(cmake_opt DEFAULT_COLLATION utf8_general_ci) \
128 $(cmake_without READLINE) \
129 $(cmake_with ZLIB system) \
130 $(cmake_without SSL) \
131 $(cmake_without LIBWRAP) \
132 $(cmake_with EMBEDDED_SERVER) \
133 $(cmake_with INNOBASE_STORAGE_ENGINE) \
134 $(cmake_with PARTITION_STORAGE_ENGINE) \
135 $(cmake_without EXAMPLE_STORAGE_ENGINE) \
136 $(cmake_without ARCHIVE_STORAGE_ENGINE) \
137 $(cmake_without BLACKHOLE_STORAGE_ENGINE) \
138 $(cmake_without FEDERATED_STORAGE_ENGINE) \
139 $(cmake_without UNIT_TESTS) \
140 -DWITH_MYSQLD_LDFLAGS="-pie ${LDFLAGS},-z,now" \
141 || die
142
143 mmake || die
144 }
145
146 src_install_mysql-libs()
147 {
148 cd ${SRCDIR}
149
150 # install only includes and clients libraries
151 local i
152 for i in include libmysql libmysqld libservices
153 do
154 mmake -C ${i} DESTDIR=${BINDIR} install || die
155 done
156
157 # symlink client libs to libdir
158 pushd ${BINDIR}/usr/$(mlibdir) || die
159 for i in mysql/libmysqlclient{,_r}.so*
160 do
161 mlink ${i} /usr/$(mlibdir) || die
162 done
163 popd
164
165 # mysql-config
166 minstallexec scripts/mysql_config || die
167
168 # man-pages
169 for i in mysql_config mysql_client_test_embedded mysqltest_embedded
170 do
171 minstallman man/${i}.1 || die
172 done
173 }
174
175 src_install_mysql-clients()
176 {
177 cd ${SRCDIR}
178 mmake -C client DESTDIR=${BINDIR} install || die
179
180 # some common symlinks
181 for i in mysqlanalyze mysqlrepair mysqloptimize
182 do
183 mlink mysqlcheck /usr/bin/${i} || die
184 done
185
186 # man-pages
187 local i
188 for i in mysql mysqladmin mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap
189 do
190 minstallman man/${i}.1 || die
191 done
192
193 # provided by mysql
194 mdelete /usr/bin/mysql_upgrade || die
195 mdelete /usr/bin/mysqlbinlog || die
196 mdelete /usr/bin/mysqltest || die
197 }
198
199 src_install_mysql()
200 {
201 cd ${SRCDIR}
202 mmake DESTDIR=${BINDIR} install || die
203
204 # remove all unneeded stuff
205 local i
206 # dirs
207 for i in sql-bench mysql-test
208 do
209 if [[ -d ${BINDIR}/usr/share/${PNAME}/${i} ]]
210 then
211 mdelete -r /usr/share/${PNAME}/${i} || die
212 fi
213 done
214 if [[ -d ${BINDIR}/usr/data ]]
215 then
216 mdelete -r /usr/data || die
217 fi
218 # files
219 for i in share/${PNAME}/mysql-log-rotate \
220 share/${PNAME}/mysql.server* \
221 share/${PNAME}/binary-configure* \
222 share/${PNAME}/my-*.cnf \
223 share/${PNAME}/mi_test_all* \
224 bin/comp_err \
225 share/man/man1/mysql-test-run.pl.1
226 do
227 if [[ -f ${BINDIR}/usr/${i} ]]
228 then
229 mdelete /usr/${i} || die
230 fi
231 done
232
233 # provided by mysql-libs
234 mdelete /usr/bin/mysql_config || die
235 mdelete /usr/bin/mysql_client_test_embedded || die
236 mdelete /usr/bin/mysqltest_embedded || die
237 mdelete /usr/$(mlibdir)/${PNAME}/libmysql\* || die
238 mdelete -r /usr/include/ || die
239 mdelete /usr/share/man/man1/mysql_config.1 || die
240 mdelete /usr/share/man/man1/mysql_client_test_embedded.1 || die
241 mdelete /usr/share/man/man1/mysqltest_embedded.1 || die
242
243 # provided by mysql-clients
244 mdelete /usr/bin/mysql || die
245 mdelete /usr/bin/mysqladmin || die
246 mdelete /usr/bin/mysqlcheck || die
247 mdelete /usr/bin/mysqldump || die
248 mdelete /usr/bin/mysqlimport || die
249 mdelete /usr/bin/mysqlshow || die
250 mdelete /usr/bin/mysqlslap || die
251 mdelete /usr/share/man/man1/mysql.1 || die
252 mdelete /usr/share/man/man1/mysqladmin.1 || die
253 mdelete /usr/share/man/man1/mysqlcheck.1 || die
254 mdelete /usr/share/man/man1/mysqldump.1 || die
255 mdelete /usr/share/man/man1/mysqlimport.1 || die
256 mdelete /usr/share/man/man1/mysqlshow.1 || die
257 mdelete /usr/share/man/man1/mysqlslap.1 || die
258
259 # needed directories
260 mkeepdir /var/lib/${PNAME} || die
261 mchown mysql:mysql /var/lib/${PNAME} || die
262 mchmod 0750 /var/lib/${PNAME} || die
263
264 mkeepdir /run/${PNAME}d || die
265 mchown mysql:mysql /run/${PNAME}d || die
266
267 mkeepdir /var/log/${PNAME} || die
268 mchown mysql:mysql /var/log/${PNAME} || die
269
270 minstalldocs ChangeLog COPYING EXCEPTIONS-CLIENT README || die
271 minstalldocs support-files/my-*.cnf support-files/magic || die
272 minstalldocs support-files/ndb-config-2-node.ini || die
273
274 # install a default my.cnf
275 minstalldir /etc/${PNAME} || die
276 minstallfile support-files/my-medium.cnf /etc/${PNAME}/my.cnf || die
277
278 # systemd specific
279 minstalltmp mysql.tmpfile-${TMP_REV} mysql.conf || die
280 minstallunit mysqld.service mysqld.service || die
281 minstallunit mysqld.socket || die
282 }
283
284 preinstall_mysql()
285 {
286 # adding mysql user
287 mgroupadd -o "-g 60" mysql
288 museradd -o "-u 60 -g mysql -d /var/lib/${myPNAME} -s /bin/false" mysql
289 }
290
291 postinstall_mysql()
292 {
293 # create a database if none exists
294 if [[ ! -d /var/lib/${myPNAME}/mysql ]]
295 then
296 echo "Creating the mysql database ..."
297 mysql_install_db --user=mysql
298 chown -R mysql:mysql /var/lib/${myPNAME}
299 chmod 0750 /var/lib/${myPNAME}
300
301 echo
302 echo "Warning: The administrator password is empty!"
303 echo "Please make sure to set one with following command:"
304 echo " mysqladmin -u root password <new-password>"
305 echo
306 fi
307
308 # start the daemon - systemd
309 mstartunit mysqld.socket
310 mstartunit mysqld.service
311 }
312
313 postremove_mysql()
314 {
315 if [ ! -f /usr/sbin/mysqld ]
316 then
317 # systemd
318 mstopunit mysqld.service
319 mstopunit mysqld.socket
320 fi
321 }