Hello all.  So I’ve made some progress on this, but I seem to be missing something.

 

I modified my invocation of cmake to have CFLAGS="-I$(PCRE2)/include" LDFLAGS="-L$(PCRE2)/lib64" in the environment so that it can find the alternate install of static pcre2 libraries.  This allows it to find symbols on startup, and get into compiling.

 

However, I see the following failure now.  As this is a C++ program, I found the CXXFLAGS symbol in many of the build scripts, so I set that too in my environment when running cmake.  However, that seemed to have no effect.  Looking at line 63 of build.make there, I see that all of “$(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS)” are used, but not the CXXFLAGS variable that I see used elsewhere.

 

Can someone help me understand how to provide alternate include/library paths in the recommended way to cmake for mariadb?  Thank you.

 

      - Chris

 

[ 46%] Built target async_example                                               

/data/cross2/sfprefix/wrims-7_1_0/work/mariadb-x86_64/mariadb-10.5.8/client/mysqltest.cc:49:10: fatal error: pcre2posix.h: No such file or directory            

 #include "pcre2posix.h" /* pcreposix regex library */                          

          ^~~~~~~~~~~~~~                                                        

compilation terminated.                                                         

make[3]: *** [client/CMakeFiles/mariadb-test.dir/build.make:63: client/CMakeFiles/mariadb-test.dir/mysqltest.cc.o] Error 1                                      

 

 

From: Maria-discuss <maria-discuss-bounces+cross2=cisco.com@lists.launchpad.net> on behalf of "Chris Ross (cross2)" <cross2@cisco.com>
Date: Tuesday, April 20, 2021 at 12:48
To: Vladislav Vaintroub <vvaintroub@gmail.com>, Sergei Golubchik <serg@mariadb.org>
Cc: "maria-discuss@lists.launchpad.net" <maria-discuss@lists.launchpad.net>
Subject: Re: [Maria-discuss] Building mariadb without PCRE?

 

Thank you Vlad.  I may try that if my current path doesn’t work out.

 

In the short term, I’ve tried to build a static libpcre2 in my development environment, so that I can link mariadb to that.  In doing this, I’m not able to figure out how to get cmake to locate the library.  I am very familiar with make (and autoconf), but much less so with cmake.  CMAKE_EXE_LINKER_FLAGS seems not to affect the test for pcre2_match_8.  Is there an easy option to give mariadb’s cmake to cause it to add a path to these search tests for system library support?

 

I’ll keep digging around too in docs, but I wanted to check here since I have the discussion open.  :-)

 

       - Chris

 

 

From: Vladislav Vaintroub <vvaintroub@gmail.com>
Date: Tuesday, April 20, 2021 at 12:09
To: "Chris Ross (cross2)" <cross2@cisco.com>, Sergei Golubchik <serg@mariadb.org>
Cc: "maria-discuss@lists.launchpad.net" <maria-discuss@lists.launchpad.net>
Subject: RE: [Maria-discuss] Building mariadb without PCRE?

 

Hi Chris,

 

CMake caches files , and  skips download them if  files already exist on disk during the build.

If  pcre2-10.36.zip already exists in the build_directory/extra/pcre2/src/,  then build output will look similar to below

 

Performing download step (download, verify and extract) for 'pcre2'

  -- verifying file...

         file='C:/work/server/extra/pcre2/src/pcre2-10.36.zip'

  -- File already exists and hash match (skip download):

    file='C:/work/server/extra/pcre2/src/pcre2-10.36.zip'

    MD5='ba9e743af42aac5642f7504b12af4116'

  -- extracting...

...

 

Note “File already exists and hash match (skip download)”

 

You see, download does not happen if you have the correct file in the correct place prior to the build.

 

From: Chris Ross (cross2)
Sent: Tuesday, 20 April 2021 15:57
To: Sergei Golubchik
Cc: maria-discuss@lists.launchpad.net
Subject: Re: [Maria-discuss] Building mariadb without PCRE?

 

On 4/20/21, 05:43, "Sergei Golubchik" <serg@mariadb.org> wrote:

    On Apr 19, Chris Ross (cross2) wrote:

    > Good day.  We have been using MariaDB in our product for a while, and

    > are upgrading to 10.5.8 at the moment.  I’ve just noticed that it’s no

    > longer using the PCRE on our system, it’s grabbing its own from

    > outside since the upgrade to PCRE2.

 

    There are two options. Either it can link dynamically with a system

    libpcre2-8.so or statically with pcre2 compiled from source, that was

    downloaded by cmake during the build.

 

Yup.  I see that.  However we run on an embedded Linux, and our platform

team won't want to add a new library for just one application.  In the

short term, I'll need to build it just for MariaDB myself.  But,

for security and data integrity reasons we can't pull it from the

internet at build time.  Can the MariaDB pcre2 build process be given

an alternate URL or file path from which to retrieve the pcre2 source

tarball?

 

    > We’re not using PCRE extensions at all in our applications, and I’d

    > rather not pull in another extraneous library.  We are a largely

    > embedded product, and adding libraries is a technical and bureaucratic

    > effort.  Can I just build mariadb without PCRE support at all, using

    > the traditional extended POSIX regexps instead?  I don’t see a way to

    > do this in the cmake files/parameters.

 

    No, it's not possible. It shouldn't be difficult to implement it,

    but at the moment it's not supported.

 

I saw this upon looking, thank you for clarifying.

 

        - Chris

 

_______________________________________________

Mailing list: https://launchpad.net/~maria-discuss

Post to     : maria-discuss@lists.launchpad.net

Unsubscribe : https://launchpad.net/~maria-discuss

More help   : https://help.launchpad.net/ListHelp