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@mariadb.org> 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@iki.fi>
> committer: Rasmus Johansson <razze@iki.fi>
> 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