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

GUI-friendly cmake options to enable/disable plugins

    XMLWordPrintable

Details

    • Task
    • Status: Closed (View Workflow)
    • Minor
    • Resolution: Fixed
    • 10.1.0
    • None
    • None

    Description

      Currently cmake uses WITH_XXX, WITHOUT_XXX, WITH_XXX_STORAGE_ENGINE, WITHOUT_XXX_STORAGE_ENGINE to specify what plugins should be compiled and how. They are

      • mixed in the GUI with WITH_PCRE, WITH_JEMALLOC, WITH_PIC, and the such, plugin variables are not easy to spot
      • redundant and confusing, one can have any subset (including empty) of WITH_XXX, WITHOUT_XXX, WITH_XXX_STORAGE_ENGINE, WITHOUT_XXX_STORAGE_ENGINE defined, it's not immediately clear what the behavior is in these cases
      • they do not necessarily exist in a GUI, some of them are. E.g to disable innodb one needs to do cmake -DWITHOUT_INNOBASE=1 (creating the option), one cannot do it in a GUI, because there is no WITHOUT_INNOBASE option to change)

      This is the current behavior (ignoring *_STORAGE_ENGINE variants):

      WITH_XXX WITHOUT_XXX plugin XXX supports result
      OFF OFF static builds only not built
      OFF ON static builds only not built
      ON OFF static builds only built statically
      ON ON static builds only built statically
      OFF OFF dynamic builds only built dynamically
      OFF ON dynamic builds only not built
      ON OFF dynamic builds only built dynamically
      ON ON dynamic builds only not built
      OFF OFF both built dynamically
      OFF ON both not built
      ON OFF both built statically
      ON ON both built statically

      In this task we implement a set of BUILD_PLUGIN_XXX options:

      • they will sort in a distinct group, all together, not intermixed with other non-plugin options
      • the values will be STATIC, DYNAMIC, NO, which (hopefully) clearly specifies whether a plugin will be built and how.
      • WITH_XXX, WITHOUT_XXX, etc values are recognized (if defined on the command line) and work as before, but they are never set in our cmake files, so they never show up in a GUI.

      This is the new behavior:

      BUILD_PLUGIN_XXX plugin XXX supports result
      STATIC static builds only built statically
      DYNAMIC static builds only not built
      NO static builds only not built
      STATIC dynamic builds only built dynamically
      DYNAMIC dynamic builds only built dynamically
      NO dynamic builds only not built
      STATIC both built statically
      DYNAMIC both built dynamically
      NO both not built

      Thus BUILD_PLUGIN_XXX can be explained as «the highest desired plugin integration level». For example, if it is set to STATIC, but plugin does not support static builds — okay, it'll be built dynamically. But if we want at most DYNAMIC integration level and the plugin only supports static, it will not be built at all.

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

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