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

Mariadb 10.0.15 won't pass cmake, but 10.1.2 does.

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Not a Bug
    • Affects Version/s: 10.0.15
    • Fix Version/s: N/A
    • Component/s: Compiling
    • Labels:
      None
    • Environment:
      Fedora 20, cmake 2.8.12.2, gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)

      Description

      CMake Error at cmake/jemalloc.cmake:34 (MESSAGE):
      jemalloc_pic is not found
      Call Stack (most recent call first):

      CMakeLists.txt:380 (CHECK_JEMALLOC)
      – Configuring incomplete, errors occurred!
      See also "/mysql/mdb10.0.15/build/CMakeFiles/CMakeOutput.log".
      See also "/mysql/mdb10.0.15/build/CMakeFiles/CMakeError.log".
      [pol@localhost build]$ cd ..

      This does not occur with 10.1.2.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            elenst Elena Stepanova added a comment -

            We bulid MariaDB server on Fedora 20, it works all right, see the log (it's the revision which became 10.0.15): http://buildbot.askmonty.org/buildbot/builders/kvm-rpm-fedora20-amd64/builds/628/steps/compile/logs/stdio

            We use cmake 2.8.12.1 and gcc 4.8.2, but it's hardly the reason of the difference.

            Do you actually have jemalloc installed on the machine?
            If you do, how exactly do you build the server? Are you using a source package or bzr tree? In the latter case, are you building from scratch (remove CMakeCache.txt etc.), or incrementally?

            Show
            elenst Elena Stepanova added a comment - We bulid MariaDB server on Fedora 20, it works all right, see the log (it's the revision which became 10.0.15): http://buildbot.askmonty.org/buildbot/builders/kvm-rpm-fedora20-amd64/builds/628/steps/compile/logs/stdio We use cmake 2.8.12.1 and gcc 4.8.2, but it's hardly the reason of the difference. Do you actually have jemalloc installed on the machine? If you do, how exactly do you build the server? Are you using a source package or bzr tree? In the latter case, are you building from scratch (remove CMakeCache.txt etc.), or incrementally?
            Hide
            serg Sergei Golubchik added a comment -

            Since MariaDB-10.0.15 (as far as I remember. Might be 10.0.14) we no longer bundle jemalloc into MariaDB source tree — it is always build with system jemalloc.

            But in 10.0 we wanted to avoid introducing new dependency in the RPM packages. That's why if you are trying to build 10.0 with -DBUILD_CONFIG=mysql_release it will look for static library libjemalloc_pic.a. In 10.1 I've changed that and 10.1 will use dynamic library libjemalloc.so by default.

            Your options are:

            • either install jemalloc-devel-static package (that provides libjemalloc_pic.a).
            • or build with cmake -DBUILD_CONFIG=mysql_release -DWITH_JEMALLOC=yes
            Show
            serg Sergei Golubchik added a comment - Since MariaDB-10.0.15 (as far as I remember. Might be 10.0.14) we no longer bundle jemalloc into MariaDB source tree — it is always build with system jemalloc. But in 10.0 we wanted to avoid introducing new dependency in the RPM packages. That's why if you are trying to build 10.0 with -DBUILD_CONFIG=mysql_release it will look for static library libjemalloc_pic.a . In 10.1 I've changed that and 10.1 will use dynamic library libjemalloc.so by default. Your options are: either install jemalloc-devel-static package (that provides libjemalloc_pic.a ). or build with cmake -DBUILD_CONFIG=mysql_release -DWITH_JEMALLOC=yes
            Hide
            linehanp@tcd.ie Pól Ua Laoínecháin added a comment - - edited

            Thanks Elena and Sergei (спасибо),

            I found that what worked for me was to download jemalloc3.6.0 and install
            it manually.

            Then I ran cmake -DBUILD_CONFIG=mysql_release and everthing worked
            like a charm. If I leave out "-DBUILD_CONFIG=mysql_release", it fails.

            Maybe a problem with the repository from which I downloaded
            jemalloc? I didn't do anything other than the vanilla
            "yum install jemalloc".

            Maybe one to watch out for? Just as a matter of interest, why do we have
            to add the "-DBUILD_CONFIG=mysql_release" when it isn't required
            for a standard MySQL server build?

            Thanks again and regards,

            Pól Ua Laoínecháin

            Show
            linehanp@tcd.ie Pól Ua Laoínecháin added a comment - - edited Thanks Elena and Sergei (спасибо), I found that what worked for me was to download jemalloc3.6.0 and install it manually. Then I ran cmake -DBUILD_CONFIG=mysql_release and everthing worked like a charm. If I leave out "-DBUILD_CONFIG=mysql_release", it fails. Maybe a problem with the repository from which I downloaded jemalloc? I didn't do anything other than the vanilla "yum install jemalloc". Maybe one to watch out for? Just as a matter of interest, why do we have to add the "-DBUILD_CONFIG=mysql_release" when it isn't required for a standard MySQL server build? Thanks again and regards, Pól Ua Laoínecháin
            Hide
            serg Sergei Golubchik added a comment -

            "-DBUILD_CONFIG=mysql_release" is not required. It's just a preset that configures the build by setting various cmake variables and options. We use it when compiling release binaries, so if you want your binary be configured exactly the same as our release binaries, the easiest way to achieve it is to use "-DBUILD_CONFIG=mysql_release". It's exactly the same in MySQL. You can use "-DBUILD_CONFIG=mysql_release" with MySQL or MariaDB and you can use simple "cmake ." with MySQL or MariaDB.

            Show
            serg Sergei Golubchik added a comment - "-DBUILD_CONFIG=mysql_release" is not required. It's just a preset that configures the build by setting various cmake variables and options. We use it when compiling release binaries, so if you want your binary be configured exactly the same as our release binaries, the easiest way to achieve it is to use "-DBUILD_CONFIG=mysql_release". It's exactly the same in MySQL. You can use "-DBUILD_CONFIG=mysql_release" with MySQL or MariaDB and you can use simple "cmake ." with MySQL or MariaDB.

              People

              • Assignee:
                serg Sergei Golubchik
                Reporter:
                linehanp@tcd.ie Pól Ua Laoínecháin
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Due:
                  Created:
                  Updated:
                  Resolved: