maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #12124
Re: cf70893ac9d: MDEV-21303 Make executables MariaDB named
Hi Serg,
I've done fixes to the below comments that you had in:
https://github.com/MariaDB/server/commit/2a00390f513ea9ec4d947eb9e68ac44dcf814923
Below are some comments to your comments also.
On Mon, Mar 16, 2020 at 8:44 PM Sergei Golubchik <serg@xxxxxxxxxxx> wrote:
> Hi, Rasmus!
>
> See my comments/questions below:
>
> On Mar 16, Rasmus Johansson wrote:
> > revision-id: cf70893ac9d (mariadb-10.5.0-391-gcf70893ac9d)
> > parent(s): 56402e84b5b
> > author: Rasmus Johansson <razze@xxxxxx>
> > committer: Rasmus Johansson <razze@xxxxxx>
> > timestamp: 2020-03-16 11:10:25 +0000
> > message:
> >
> > MDEV-21303 Make executables MariaDB named
> >
> > To change all executables to have a mariadb name I had to:
> > - Do name changes in every CMakeLists.txt that produces executables
> > - CREATE_MARIADB_SYMLINK was removed and GET_SYMLINK added by Wlad to
> reuse the function in other places also
> > - The scripts/CMakeLists.txt could make use of GET_SYMLINK instead of
> introducing redundant code, but I thought I'll leave that for next release
> > - A lot of changes to debian/.install and debian/.links files due to
> swapping of real executable and symlink. I did not however change the name
> of the manpages, so the real name is still mysql there and mariadb are
> symlinks.
> > - The Windows part needed a change now when we made the executables
> mariadb -named. MSI (and ZIP) do not support symlinks and to not break
> backward compatibility we had to include mysql named binaries also. Done by
> Wlad
> >
> > diff --git a/cmake/mysql_add_executable.cmake
> b/cmake/mysql_add_executable.cmake
> > index eec370d51af..f4d71ae9cef 100644
> > --- a/cmake/mysql_add_executable.cmake
> > +++ b/cmake/mysql_add_executable.cmake
> > @@ -48,7 +48,7 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
> > ENDIF()
> >
> > IF (ARG_WIN32)
> > - SET(WIN32 WIN32)
> > + SET(WIN32 ARG_WIN32)
>
> This looks wrong, see below
>
Reverted
> > ELSE()
> > UNSET(WIN32)
> > ENDIF()
> > @@ -62,6 +62,7 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
> > ELSE()
> > UNSET(EXCLUDE_FROM_ALL)
> > ENDIF()
> > +
> > ADD_EXECUTABLE(${target} ${WIN32} ${MACOSX_BUNDLE}
> ${EXCLUDE_FROM_ALL} ${sources})
>
> here it'll pass ARG_WIN32 to ADD_EXECUTABLE. But ADD_EXECUTABLE takes an
> optional WIN32 keyword, not ARG_WIN32.
>
Reverted. Works correctly again.
> >
> > # tell CPack where to install
> > @@ -79,16 +80,49 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
> > IF (COMP MATCHES ${SKIP_COMPONENTS})
> > RETURN()
> > ENDIF()
> > +
> > IF (WITH_STRIPPED_CLIENT AND NOT target STREQUAL mysqld)
>
> this should be `STREQUAL mariadbd` now, I believe.
>
Yes, fixed
> > INSTALL(CODE "SET(CMAKE_INSTALL_DO_STRIP 1)" COMPONENT ${COMP})
> > SET(reset_strip ON)
> > ENDIF()
> > - MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION}
> COMPONENT ${COMP})
> > +
> > + IF(NOT ${mariadbname} STREQUAL "")
>
> where is mariadbname set?
>
It's not set anymore. It was for an intermediate version. I've removed the
change.
> > + MYSQL_INSTALL_TARGETS(${mariadbname} DESTINATION
> ${ARG_DESTINATION} COMPONENT ${COMP})
> > + ELSE()
> > + MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION}
> COMPONENT ${COMP})
> > + ENDIF()
> > +
> > IF (reset_strip)
> > INSTALL(CODE "SET(CMAKE_INSTALL_DO_STRIP 0)" COMPONENT ${COMP})
> > ENDIF()
> > ENDIF()
> >
> > - # create mariadb named symlink
> > - CREATE_MARIADB_SYMLINK(${target} ${ARG_DESTINATION} ${COMP})
> > + # create MySQL named "legacy links"
> > +
> > + # Windows note:
> > + # Here, hardlinks are used, because cmake can't install symlinks.
> > + # In packages, there are won't be links, just copies.
>
> better to put the comment below in the ELSE branch, not here, far from
> the code that it is supposed to explain.
>
Fixed
> > + GET_SYMLINK(${target} link)
> > + IF(link)
> > + IF(UNIX)
> > + ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD
> > + COMMAND ${CMAKE_COMMAND} -E create_symlink
> > + ${target} ${link}
> > + COMMENT "Creating ${link} link"
> > + WORKING_DIRECTORY
> ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR})
> > + INSTALL(PROGRAMS
> > + ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${link}
> > + DESTINATION
> > + ${ARG_DESTINATION}
> > + COMPONENT ${COMP})
> > + ELSE()
> > + SET(link ${link}.exe)
> > + ADD_CUSTOM_COMMAND(TARGET ${target} POST_BUILD
> > + COMMAND cmake -E remove -f ${link}
> > + COMMAND mklink /H ${link} $<TARGET_FILE_NAME:${target}>
> > + COMMENT "Creating ${link} link"
> > + WORKING_DIRECTORY $<TARGET_FILE_DIR:${target}>)
> > + INSTALL(PROGRAMS $<TARGET_FILE_DIR:${target}>/${link} DESTINATION
> ${ARG_DESTINATION} COMPONENT ${COMP})
> > + ENDIF()
> > + ENDIF()
> > ENDFUNCTION()
> > diff --git a/cmake/symlinks.cmake b/cmake/symlinks.cmake
> > index ec638bc82de..e040ff19f77 100644
> > --- a/cmake/symlinks.cmake
> > +++ b/cmake/symlinks.cmake
> > @@ -9,68 +9,46 @@ macro(REGISTER_SYMLINK from to)
> > endmacro()
> >
> > # MariaDB names for executables
> > -REGISTER_SYMLINK("mysql_client_test_embedded"
> "mariadb-client-test-embedded")
> > -REGISTER_SYMLINK("mysql_client_test" "mariadb-client-test")
> > +REGISTER_SYMLINK("mariadb-client-test-embedded"
> "mysql_client_test_embedded")
> > +REGISTER_SYMLINK("mariadb-client-test" "mysql_client_test")
> ...
>
> I suppose you need to make sure that everything works with new
> names, without symlinks. That is all internal tools and scripts invoke
> other tools and scripts by their mariadb* names.
>
> A way to do it could be to comment out all REGISTER_SYMLINK lines
> and fix whatever that will break. grep is also a useful tool here, but
> with rather low signal-to-noise ratio.
>
I'm saving this for next release.
> > +
> > +MACRO(GET_SYMLINK name out)
> > + set(${out})
> > + list(FIND MARIADB_SYMLINK_FROMS ${name} _index)
> > if (${_index} GREATER -1)
> > - list(GET MARIADB_SYMLINK_TOS ${_index} mariadbname)
> > - endif()
> > -
> > - if (mariadbname)
> > - CREATE_MARIADB_SYMLINK_IN_DIR(${src} ${mariadbname} ${dir} ${comp})
> > - endif()
> > -endmacro(CREATE_MARIADB_SYMLINK)
> > -
> > -# Add MariaDB symlinks in directory
> > -macro(CREATE_MARIADB_SYMLINK_IN_DIR src dest dir comp)
> > - if(UNIX)
> > - add_custom_target(
> > - SYM_${dest} ALL
> > - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${dest}
> > - )
> > -
> > - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${dest}
> POST_BUILD
> > - COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest}
> > - COMMENT "mklink ${src} -> ${dest}")
> > -
> > - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${dest} DESTINATION
> ${dir} COMPONENT ${comp})
> > + list(GET MARIADB_SYMLINK_TOS ${_index} ${out})
> > endif()
> > -endmacro(CREATE_MARIADB_SYMLINK_IN_DIR)
> > +ENDMACRO()
> > diff --git a/debian/mariadb-backup.install
> b/debian/mariadb-backup.install
> > index 2bc61c12079..e1967495b00 100644
> > --- a/debian/mariadb-backup.install
> > +++ b/debian/mariadb-backup.install
> > @@ -1,5 +1,4 @@
> > -usr/bin/mariabackup
> > +usr/bin/mariadb-backup
> > usr/bin/mbstream
> > usr/share/man/man1/mariabackup.1
> > -usr/share/man/man1/mariadb-backup.1
>
> this is strange. Why did you remove mariadb-backup.1 and not
> mariabackup.1 ?
>
Fixed
> > usr/share/man/man1/mbstream.1
> > diff --git a/debian/mariadb-client-10.5.install
> b/debian/mariadb-client-10.5.install
> > index 67c0c2619c3..216e4015851 100644
> > --- a/debian/mariadb-client-10.5.install
> > +++ b/debian/mariadb-client-10.5.install
> > @@ -1,29 +1,17 @@
> > debian/additions/innotop/innotop usr/bin/
> > debian/additions/mysqlreport usr/bin/
> > +usr/bin/mariadb-access
> > +usr/bin/mariadb-admin
> > usr/bin/mariadb-conv
> > -usr/bin/mysql_find_rows
> > -usr/bin/mysql_fix_extensions
> > -usr/bin/mysql_waitpid
> > -usr/bin/mysqlaccess
> > -usr/bin/mysqladmin
> > -usr/bin/mysqldump
> > -usr/bin/mysqldumpslow
> > -usr/bin/mysqlimport
> > -usr/bin/mysqlshow
>
> you removed mysqlshow here, and added mariadb-show to the server
> package. Intentional?
>
> UPD: I see that before your patch mysqlshow was in the client
> package, while mariadb-show symlink was in the server package. It's a
> bug, both should be in the client package.
>
Fixed
> > +usr/bin/mariadb-dump
> > +usr/bin/mariadb-dumpslow
> > +usr/bin/mariadb-find-rows
> > +usr/bin/mariadb-fix-extensions
> > +usr/bin/mariadb-import
> > +usr/bin/mariadb-slap
> > +usr/bin/mariadb-waitpid
> > usr/bin/mysqlslap
>
> you did not remove mysqlslap, but added mariadb-slap
>
>
Fixed
> > usr/bin/mytop
> > -usr/share/man/man1/mariadb-access.1
> > -usr/share/man/man1/mariadb-admin.1
> > -usr/share/man/man1/mariadb-binlog.1
> > -usr/share/man/man1/mariadb-conv.1
> > -usr/share/man/man1/mariadb-dump.1
> > -usr/share/man/man1/mariadb-dumpslow.1
> > -usr/share/man/man1/mariadb-find-rows.1
> > -usr/share/man/man1/mariadb-fix-extensions.1
> > -usr/share/man/man1/mariadb-import.1
> > -usr/share/man/man1/mariadb-plugin.1
> > -usr/share/man/man1/mariadb-slap.1
> > -usr/share/man/man1/mariadb-waitpid.1
>
> same weirdness as elsewhere, mariadb*.1 man pages are symlinks to
> mysql*.1 manpages. Should be vice versa.
>
Fixed
> > usr/share/man/man1/mysql_find_rows.1
> > usr/share/man/man1/mysql_fix_extensions.1
> > usr/share/man/man1/mysql_waitpid.1
> > diff --git a/debian/mariadb-client-10.5.links
> b/debian/mariadb-client-10.5.links
> > index 5d966575b76..d1bdfcfa3c8 100644
> > --- a/debian/mariadb-client-10.5.links
> > +++ b/debian/mariadb-client-10.5.links
> > @@ -1,21 +1,19 @@
> > -usr/bin/mysql_find_rows usr/bin/mariadb-find-rows
> > -usr/bin/mysql_fix_extensions usr/bin/mariadb-fix-extensions
> > -usr/bin/mysql_plugin usr/bin/mariadb-plugin
> > -usr/bin/mysql_waitpid usr/bin/mariadb-waitpid
> > -usr/bin/mysqlaccess usr/bin/mariadb-access
> > -usr/bin/mysqladmin usr/bin/mariadb-admin
> > -usr/bin/mysqlbinlog usr/bin/mariadb-binlog
>
> you removed mysqlbinlog, but added mariadb-binlog to the server package.
> Intentional?
>
> same for mysql_plugin/mariadb-plugin.
>
> UPD:
> mysqlbinlog was in the server package, while mariadb-binlog symlink was
> in the client package. So your change is correct, both will be in the
> server package now. Good.
>
> same for mysql_plugin/mariadb-plugin.
>
> I had to add some conflicts and replaces to the debian/control file to get
these to work
> > -usr/bin/mysqlcheck usr/bin/mariadb-analyze
> > -usr/bin/mysqlcheck usr/bin/mariadb-optimize
> > diff --git a/debian/mariadb-plugin-rocksdb.install
> b/debian/mariadb-plugin-rocksdb.install
> > index 80987612c30..0fc868a0721 100644
> > --- a/debian/mariadb-plugin-rocksdb.install
> > +++ b/debian/mariadb-plugin-rocksdb.install
> > @@ -2,6 +2,5 @@ etc/mysql/conf.d/rocksdb.cnf etc/mysql/mariadb.conf.d
> > usr/bin/myrocks_hotbackup
> > usr/bin/mysql_ldb
>
> you didn't replace mysql_ldb with mariadb-ldb?
>
Fixed
>
> > usr/lib/mysql/plugin/ha_rocksdb.so
> > -usr/share/man/man1/mariadb-ldb.1
> > usr/share/man/man1/myrocks_hotbackup.1
> > usr/share/man/man1/mysql_ldb.1
> > diff --git a/debian/mariadb-server-10.5.install
> b/debian/mariadb-server-10.5.install
> > index 4a860ff57df..38d9f984276 100644
> > --- a/debian/mariadb-server-10.5.install
> > +++ b/debian/mariadb-server-10.5.install
> > @@ -14,22 +14,23 @@ usr/bin/aria_pack
> > usr/bin/aria_read_log
> > usr/bin/galera_new_cluster
> > usr/bin/galera_recovery
> > +usr/bin/mariadb-binlog
> > +usr/bin/mariadb-convert-table-format
> > +usr/bin/mariadb-hotcopy
> > +usr/bin/mariadb-plugin
> > +usr/bin/mariadb-secure-installation
> > usr/bin/mariadb-service-convert
> > +usr/bin/mariadb-setpermission
> > +usr/bin/mariadb-show
> > +usr/bin/mariadb-tzinfo-to-sql
> > +usr/bin/mariadbd-multi
> > +usr/bin/mariadbd-safe
> > +usr/bin/mariadbd-safe
>
> duplicate line ^^^
>
Fixed
>
> > usr/bin/msql2mysql
> > usr/bin/myisam_ftdump
> > usr/bin/myisamchk
> > usr/bin/myisamlog
> > usr/bin/myisampack
> > -usr/bin/mysql_convert_table_format
> > -usr/bin/mysql_plugin
> > -usr/bin/mysql_secure_installation
> > -usr/bin/mysql_setpermission
> > -usr/bin/mysql_tzinfo_to_sql
> > -usr/bin/mysqlbinlog
> > -usr/bin/mysqld_multi
> > -usr/bin/mysqld_safe
> > -usr/bin/mysqld_safe_helper
>
> you don't install mariadbd-safe-helper.
> Perhaps that's where your duplicate line comes from, it's not a
> duplicate, it's truncated :)
>
Fixed
> > -usr/bin/mysqlhotcopy
> > usr/bin/perror
> > usr/bin/replace
> > usr/bin/resolve_stack_dump
> > diff --git a/debian/mariadb-server-10.5.links
> b/debian/mariadb-server-10.5.links
> > index f2d97460371..e3a2d68541a 100644
> > --- a/debian/mariadb-server-10.5.links
> > +++ b/debian/mariadb-server-10.5.links
> > @@ -1,9 +1,20 @@
> > -usr/bin/mysql_convert_table_format usr/bin/mariadb-convert-table-format
> > -usr/bin/mysql_secure_installation usr/bin/mariadb-secure-installation
> > -usr/bin/mysql_setpermission usr/bin/mariadb-setpermission
> > -usr/bin/mysql_tzinfo_to_sql usr/bin/mariadb-tzinfo-to-sql
> > -usr/bin/mysqld_multi usr/bin/mariadbd-multi
> > -usr/bin/mysqld_safe usr/bin/mariadbd-safe
> > -usr/bin/mysqld_safe_helper usr/bin/mariadbd-safe-helper
> > -usr/bin/mysqlhotcopy usr/bin/mariadb-hotcopy
> > -usr/bin/mysqlshow usr/bin/mariadb-show
> > +usr/bin/mariadb-binlog usr/bin/mysqlbinlog
> > +usr/bin/mariadb-convert-table-format usr/bin/mysql_convert_table_format
> > +usr/bin/mariadb-hotcopy usr/bin/mysqlhotcopy
> > +usr/bin/mariadb-plugin usr/bin/mysql_plugin
> > +usr/bin/mariadb-secure-installation usr/bin/mysql_secure_installation
> > +usr/bin/mariadb-setpermission usr/bin/mysql_setpermission
> > +usr/bin/mariadb-show /usr/bin/mysqlshow
>
> this is the only line in your whole patch where you symlink by the
> absolute path. Looks like a typo.
>
Fixed
> > +usr/bin/mariadb-tzinfo-to-sql usr/bin/mysql_tzinfo_to_sql
> > +usr/bin/mariadbd-multi usr/bin/mysqld_multi
> > +usr/bin/mariadbd-safe usr/bin/mysqld_safe
> > +usr/bin/mariadbd-safe-helper usr/bin/mysqld_safe_helper
> > diff --git a/libmariadb b/libmariadb
> > index 3be5897c334..ca68b114ba7 160000
> > --- a/libmariadb
> > +++ b/libmariadb
> > @@ -1 +1 @@
> > -Subproject commit 3be5897c3346639fa6d7195480d93108798c4917
> > +Subproject commit ca68b114ba7e882e8abe8888204d675c4d8751f8
>
> This is clearly wrong, please make sure you've removed it from your
> commit before pushing!
>
I ran git submodule update. Should be ok now.
> > diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
> > index 7be46ac1985..350fbd14cf6 100644
> > --- a/scripts/CMakeLists.txt
> > +++ b/scripts/CMakeLists.txt
> > @@ -244,8 +232,20 @@ SET(mysqlaccess_COMPONENT COMPONENT Client)
> > SET(mysql_find_rows_COMPONENT COMPONENT Client)
> > SET(mytop_COMPONENT Mytop)
> >
> > +MACRO(INSTALL_LINK old new destination component)
> > + EXECUTE_PROCESS(
> > + COMMAND ${CMAKE_COMMAND} -E create_symlink ${old} ${new}
> > + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
> > + )
> > + INSTALL(
> > + PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${new}
> > + DESTINATION ${destination}
> > + COMPONENT ${component}
> > + )
> > +ENDMACRO()
> > +
> > IF(WIN32)
> > - # On Windows, some .sh and some .pl.in files are configured
> > + # On Windows, some .sh and some .pl.in files are configured
> > # The resulting files will have .pl extension (those are perl scripts)
> >
> > # Input files with pl.in extension
> > @@ -296,60 +296,73 @@ ELSE()
> > # On Unix, most of the files end up in the bin directory
> > SET(BIN_SCRIPTS
> > msql2mysql
> > - mysql_config
> > - mysql_setpermission
> > - mysql_secure_installation
> > - mysqlaccess
> > - mysql_convert_table_format
> > - mysql_find_rows
> > + mariadb-setpermission
> > + mariadb-secure-installation
> > + mariadb-access
> > + mariadb-convert-table-format
> > + mariadb-find-rows
> > mytop
> > - mysqlhotcopy
> > + mariadb-hotcopy
> > + mariadb-install-db
> > ${SERVER_SCRIPTS}
> > ${WSREP_SCRIPTS}
> > ${SYSTEMD_SCRIPTS}
> > )
> > +
> > FOREACH(file ${BIN_SCRIPTS})
> > - IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh)
> > - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh
> > - ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY)
> > - ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file})
> > - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}
> > - ${CMAKE_CURRENT_BINARY_DIR}/${file} COPYONLY)
> > - ELSE()
> > - MESSAGE(FATAL_ERROR "Can not find ${file}.sh or ${file} in "
> > - "${CMAKE_CURRENT_SOURCE_DIR}" )
> > - ENDIF()
> > - # TODO: The following EXECUTE could be redundant as INSTALL_SCRIPT
> > - # macro does an INSTALL(PROGRAMS ..) that automatically sets +x on
> > - # the executable.
> > - EXECUTE_PROCESS(COMMAND chmod +x
> ${CMAKE_CURRENT_BINARY_DIR}/${file})
> > - IF(NOT ${file}_COMPONENT)
> > - SET(${file}_COMPONENT Server)
> > - ENDIF()
> > - INSTALL_SCRIPT(
> > - ${CMAKE_CURRENT_BINARY_DIR}/${file}
> > - DESTINATION ${INSTALL_BINDIR}
> > - COMPONENT ${${file}_COMPONENT}
> > - )
> > + # set name of executable
> > + list(FIND MARIADB_SYMLINK_FROMS ${file} _index)
> > +
> > + if(${_index} GREATER -1)
> > + list(GET MARIADB_SYMLINK_TOS ${_index} binname)
> > + else()
> > + set(binname ${file})
> > + endif()
>
> 1. why are you not using GET_SYMLINK ?
> 2. Why INSTALL_SYMLINK here instead of the old CREATE_MARIADB_SYMLINK ?
> You avoid creating new targets for script symlinks, but who cares
> about that?
>
I re-did this part of the code to use GET_SYMLINK.
> > +
> > + if(NOT "${binname}" STREQUAL "")
>
> how can ${binname} be "" ?
>
It cannot, you're right. I removed the if
> > + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${binname}.sh)
> > + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${binname}.sh
> > + ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY)
> > + ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${binname})
> > + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${binname}
> > + ${CMAKE_CURRENT_BINARY_DIR}/${file} COPYONLY)
> > + ELSE()
> > + MESSAGE(FATAL_ERROR "Can not find ${binname}.sh or ${binname}
> in "
> > + "${CMAKE_CURRENT_SOURCE_DIR}" )
> > + ENDIF()
> > +
> > + IF(NOT ${file}_COMPONENT)
> > + SET(${file}_COMPONENT Server)
> > + ENDIF()
> > + INSTALL_SCRIPT(
> > + ${CMAKE_CURRENT_BINARY_DIR}/${file}
> > + DESTINATION ${INSTALL_BINDIR}
> > + COMPONENT ${${file}_COMPONENT}
> > + )
> > +
> > + # Create symlink
> > + if (NOT ${binname} STREQUAL ${file})
> > + INSTALL_LINK(${file} ${binname} ${INSTALL_BINDIR}
> ${${file}_COMPONENT})
> > +
> > + # Place mysql_install_db symlink also in scripts
> > + if (${binname} STREQUAL "mysql_install_db")
> > + SET(bindir ${bindir1})
> > + SET(prefix ${prefix1})
> > + SET(sbindir ${sbindir1})
> > + SET(scriptdir ${scriptdir1})
> > + SET(libexecdir ${libexecdir1})
> > + SET(pkgdatadir ${pkgdatadir1})
> > + SET(pkgplugindir ${pkgplugindir1})
> > + SET(localstatedir ${localstatedir1})
> > +
> CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_install_db.sh
> ${CMAKE_CURRENT_BINARY_DIR}/mariadb-install-db ESCAPE_QUOTES @ONLY)
> > + INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${file}
> DESTINATION ${INSTALL_SCRIPTDIR} COMPONENT Server)
> > + INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${binname}
> DESTINATION ${INSTALL_SCRIPTDIR} COMPONENT Server)
>
> I don't understand that at all.
>
> 1. What does the comment "Place mysql_install_db symlink also in
> scripts" even mean?
>
> 2. you CONFIGURE_FILE mariadb-install-db twice.
>
> 3. Why two INSTALL(PROGRAM ?
>
> 4. You set all bindir/etc variables for mysql_install_db and it will
> affect CONFIGURE_FILE for all following scripts
>
> 5. why do you even compare ${binname} with mysql_install_db and not
> ${file} with mariadb-install-db ?
>
Re-written
> > + endif()
> > + endif()
> > + endif()
>
> we customary always use uppercase in all cmake keywords.
>
> > ENDFOREACH()
> >
> > - SET (wsrep_sst_rsync_wan
> ${CMAKE_CURRENT_BINARY_DIR}/wsrep_sst_rsync_wan)
> > - ADD_CUSTOM_COMMAND(
> > - OUTPUT ${wsrep_sst_rsync_wan}
> > - COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink
> > - wsrep_sst_rsync
> > - wsrep_sst_rsync_wan
> > - )
> > - ADD_CUSTOM_TARGET(symlink_wsrep_sst_rsync
> > - ALL
> > - DEPENDS ${wsrep_sst_rsync_wan}
> > - )
> > - INSTALL(
> > - FILES ${wsrep_sst_rsync_wan}
> > - DESTINATION ${INSTALL_BINDIR}
> > - COMPONENT Server
> > - )
> > -
> > + INSTALL_LINK(wsrep_sst_rsync wsrep_sst_rsync_wan ${INSTALL_BINDIR}
> Server)
> > FOREACH(file ${WSREP_SOURCE})
> > CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh
> > ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY)
> > diff --git a/win/packaging/ca/CMakeLists.txt
> b/win/packaging/ca/CMakeLists.txt
> > index 99dc7da01fb..326bab47de4 100644
> > --- a/win/packaging/ca/CMakeLists.txt
> > +++ b/win/packaging/ca/CMakeLists.txt
>
> I didn't review windows packaging, it's between you and wlad.
>
The commit with the fixes are
https://github.com/MariaDB/server/commit/2a00390f513ea9ec4d947eb9e68ac44dcf814923
References