Uploaded image for project: 'C++ Driver'
  1. C++ Driver
  2. CXX-309

SConstruct refers to PCRE, but PCRE is not used anymore in C++ Driver legacy

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Major - P3 Major - P3
    • None
    • legacy-0.0-26compat-2.6.0, legacy-0.0-26compat-2.6.1, legacy-0.0-26compat-2.6.2, legacy-0.0-26compat-2.6.3, legacy-0.0-26compat-2.6.4
    • Build

    Description

      Since the split of the C++ driver from the C++ core, many third party dependencies have been removed from the source, including PCRE.

      However they are still referenced in the Sconstruct:

      add_option( "use-system-pcre", "use system version of pcre library", 0, True )
      ...
      env.Prepend( CPPDEFINES=[ "_SCONS" , 
                                "MONGO_EXPOSE_MACROS" ,
                                "SUPPORT_UTF8" ],  # for pcre
      ...
      if not use_system_version_of_library("pcre"):
          env.Prepend(CPPPATH=[ '$BUILD_DIR/third_party/pcre-${PCRE_VERSION}' ])

      So by default the compiler command line is polluted with unnecessary paths:

      -Ibuild/linux2/ssl/use-system-boost/third_party/pcre-8.30 -Isrc/third_party/pcre-8.30

      The scons --help is also polluted:

        --use-system-tcmalloc=USE-SYSTEM-TCMALLOC
                                    use system version of tcmalloc library
        --use-system-pcre=USE-SYSTEM-PCRE
                                    use system version of pcre library
        --use-system-boost=USE-SYSTEM-BOOST
                                    use system version of boost libraries
        --use-system-snappy=USE-SYSTEM-SNAPPY
                                    use system version of snappy library
        --use-system-v8=USE-SYSTEM-V8
                                    use system version of v8 library
        --use-system-stemmer=USE-SYSTEM-STEMMER
                                    use system version of stemmer
        --use-system-yaml=USE-SYSTEM-YAML
                                    use system version of yaml

      Only boost is a real dependency (and is not shipped anymore, so the option is in fact mandatory).

      This is not a blocking issue, but it's confusing to have mentions of all these third party libraries: it lets one believe they are really used, which is an issue when packaging the mongodb c++ driver.

      Attachments

        Activity

          People

            adam.midvidy Adam Midvidy
            trsystran Thomas Riccardi
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: