Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-39624

storage/connect/CMakeLists.txt: unguarded generator expression variable causes fatal error at cmake generate phase

    XMLWordPrintable

Details

    Description

      upgrading local builds from 11.8.6 -> 11.8.7, on

      env:

      $ distro
      	Name: Fedora Linux 44 (Forty Four)
      	Version: 44
      	Codename:
      $ gcc --version
      	gcc (GCC) 16.1.1 20260501 (Red Hat 16.1.1-1)
      $ ninja --version
      	1.13.2
      $ cmake --version
      	cmake version 4.3.0
      $
      

      build:

      cmake -LAH \
        -S server.git-0aa0b76de961969cc331d7eda8f2b1adc4cb0ffd \
        -B mdb-build \
        -DCMAKE_POLICY_DEFAULT_CMP0056=NEW \
        -DCMAKE_POLICY_DEFAULT_CMP0067=NEW \
        -DMYSQL_MAINTAINER_MODE=NO
      

      fails:

      -- Configuring done (52.1s)
      CMake Error:
        Error evaluating generator expression:
          $<:-Wno-declaration-after-statement>
        Expression did not evaluate to a known generator expression
       
      CMake Error:
        Error evaluating generator expression:
          $<:-Wno-declaration-after-statement>
        Expression did not evaluate to a known generator expression
       
      CMake Error:
        Error evaluating generator expression:
          $<:-Wno-declaration-after-statement>
        Expression did not evaluate to a known generator expression
       
      -- Generating done (0.7s)
      CMake Generate step failed.  Build files cannot be regenerated correctly.
      

      source:
      `storage/connect/CMakeLists.txt:320-323`:

      SET_SOURCE_FILES_PROPERTIES(${MINIZIP_SOURCES} PROPERTIES COMPILE_FLAGS "\
        $<${have_C__Wmissing_declarations}:-Wno-missing-declarations> \
        $<${have_C__Wdeclaration_after_statement}:-Wno-declaration-after-statement> \
      ")
      

      iiuc,

      `have_C__Wdeclaration_after_statement` is set by `MY_CHECK_C_COMPILER_FLAG()` in `cmake/maintainer.cmake`. Unset when `MYSQL_MAINTAINER_MODE=NO`.

      and,

      `$<${var}:flag>` with empty `var` produces `$<:flag>` – not a known generator expression; CMake aborts generate with a fatal error.

      given,
      `$<BOOL:x>` evaluates empty to `0`, producing `$<0:flag>` (valid) instead of `$<:flag>` (invalid).

      this

       SET_SOURCE_FILES_PROPERTIES(${MINIZIP_SOURCES} PROPERTIES COMPILE_FLAGS "\
      -  $<${have_C__Wmissing_declarations}:-Wno-missing-declarations> \
      -  $<${have_C__Wdeclaration_after_statement}:-Wno-declaration-after-statement> \
      +  $<$<BOOL:${have_C__Wmissing_declarations}>:-Wno-missing-declarations> \
      +  $<$<BOOL:${have_C__Wdeclaration_after_statement}>:-Wno-declaration-after-statement> \
       ")
      

      seems to do the trick; build's ok

      mariadb-lts-git_mariadb_11.8.7-0.git0aa0b76.fc44.x86_64.rpm
      

      Attachments

        Activity

          People

            serg Sergei Golubchik
            pgnd pgnd
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.