Skip to content

Commit 2335998

Browse files
committed
Bug #35917292 Add support for building Oracle Linux RPM with PGO
Adding optional with_pgo variable. This will build for profiling, run MTR for 'training' and then rebuild using the profiling. Currently only tested on el7, so ignore for other rhel versions. Change-Id: I430b91389b5693437524acc21e0989cd92119a41
1 parent be47776 commit 2335998

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

packaging/rpm-oel/mysql.spec.in

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@
4141
%global with_router 1
4242
%endif
4343

44+
# PGO option, currently only for el7
45+
%if 0%{?rhel} == 7
46+
%{?with_pgo: %global pgo 1}
47+
%endif # rhel7
48+
4449
# Pass path to mecab lib
4550
%{?with_mecab: %global mecab_option -DWITH_MECAB=%{with_mecab}}
4651
%{?with_mecab: %global mecab 1}
@@ -920,6 +925,7 @@ mkdir release
920925
(
921926
cd release
922927
%{cmake3} ../%{src_dir} \
928+
%{?pgo:-DFPROFILE_GENERATE=1} \
923929
-DBUILD_CONFIG=mysql_release \
924930
-DINSTALL_LAYOUT=RPM \
925931
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
@@ -972,6 +978,74 @@ mkdir release
972978
make %{?_smp_mflags} VERBOSE=1
973979
)
974980

981+
%if 0%{?pgo}
982+
(
983+
# Run some MTR load to generate profile data
984+
[ -d profile-data ] && rm -rf profile-data
985+
pushd release/mysql-test
986+
./mtr \
987+
--mem --parallel=auto --force --retry=0 \
988+
--mysqld=--binlog-format=row \
989+
--clean-vardir --suite=main || true
990+
rm -r $(readlink var)
991+
popd
992+
993+
# Build again with profile data present
994+
rm -rf release
995+
mkdir release && pushd release
996+
cmake3 ../%{src_dir} \
997+
-DFPROFILE_USE=1 \
998+
-DBUILD_CONFIG=mysql_release \
999+
-DINSTALL_LAYOUT=RPM \
1000+
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
1001+
-DWITH_BOOST=.. \
1002+
-DCMAKE_C_FLAGS="%{optflags}" \
1003+
-DCMAKE_CXX_FLAGS="%{optflags}" \
1004+
-DUSE_LD_LLD=0 \
1005+
%if 0%{?ssl_default}
1006+
%else
1007+
-DWITH_AUTHENTICATION_CLIENT_PLUGINS=0 \
1008+
-DWITH_AUTHENTICATION_FIDO=0 \
1009+
-DWITH_AUTHENTICATION_KERBEROS=0 \
1010+
-DWITH_AUTHENTICATION_LDAP=0 \
1011+
-DWITH_AUTHENTICATION_OCI=0 \
1012+
-DWITH_COMPONENT_KEYRING_OCI=0 \
1013+
-DWITH_CURL=0 \
1014+
-DWITH_KEYRING_HASHICORP=0 \
1015+
-DWITH_KEYRING_OCI=0 \
1016+
%endif # ssl_default
1017+
-DWITH_CURL=system \
1018+
%if 0%{?systemd}
1019+
-DWITH_SYSTEMD=1 \
1020+
%endif
1021+
-DWITH_ROUTER=%{with_router} \
1022+
%if 0%{?cluster}
1023+
-DWITH_NDB=1 \
1024+
%endif
1025+
%if 0%{?ndb_nodejs_path:1}
1026+
-DNDB_NODEJS_PATH=%{ndb_nodejs_path} \
1027+
%endif
1028+
%if 0%{?ndb_nodejs_extras_path:1}
1029+
-DNDB_NODEJS_EXTRAS_PATH=%{ndb_nodejs_extras_path} \
1030+
%endif
1031+
%if 0%{?commercial}
1032+
-DWITH_MEB=%{with_meb} \
1033+
%{?aws_sdk_option} \
1034+
%endif
1035+
%{?ssl_option} \
1036+
%{?mini_debug_option} \
1037+
-DWITH_INNODB_MEMCACHED=1 \
1038+
-DMYSQL_UNIX_ADDR="%{mysqldatadir}/mysql.sock" \
1039+
-DMYSQLX_UNIX_ADDR="/var/run/mysqld/mysqlx.sock" \
1040+
-DWITH_NUMA=1 \
1041+
%{?mecab_option} \
1042+
-DCOMPILATION_COMMENT="%{compilation_comment_release}" \
1043+
-DCOMPILATION_COMMENT_SERVER="%{compilation_comment_server_release}" \
1044+
-DMYSQL_SERVER_SUFFIX="%{?server_suffix}"
1045+
make %{?_smp_mflags} VERBOSE=1
1046+
)
1047+
%endif # pgo
1048+
9751049
%install
9761050
# /usr/bin/strip is too old on el6
9771051
%if 0%{?rhel} == 6

0 commit comments

Comments
 (0)