You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

458 lines
16 KiB

Index: SConstruct
--- SConstruct.orig 2019-08-08 22:06:23.000000000 +0200
+++ SConstruct 2019-08-14 20:42:38.455024000 +0200
@@ -642,7 +642,6 @@
def variable_tools_converter(val):
tool_list = shlex.split(val)
return tool_list + [
- "distsrc",
"gziptool",
'idl_tool',
"jsheader",
@@ -1000,7 +999,8 @@
MODULE_INJECTORS=dict(),
ARCHIVE_ADDITION_DIR_MAP={},
ARCHIVE_ADDITIONS=[],
- PYTHON=utils.find_python(),
+ PYTHON=utils.which("python"),
+ PATH=os.environ.get("PATH"),
SERVER_ARCHIVE='${SERVER_DIST_BASENAME}${DIST_ARCHIVE_SUFFIX}',
UNITTEST_ALIAS='unittests',
# TODO: Move unittests.txt to $BUILD_DIR, but that requires
@@ -1068,10 +1068,6 @@
print((env_vars.GenerateHelpText(env)))
Exit(0)
-unknown_vars = env_vars.UnknownVariables()
-if unknown_vars:
- env.FatalError("Unknown variables specified: {0}", ", ".join(list(unknown_vars.keys())))
-
def set_config_header_define(env, varname, varval = 1):
env['CONFIG_HEADER_DEFINES'][varname] = varval
env.AddMethod(set_config_header_define, 'SetConfigHeaderDefine')
@@ -1851,21 +1847,17 @@
# If runtime hardening is requested, then build anything
# destined for an executable with the necessary flags for PIE.
env.AppendUnique(
- PROGCCFLAGS=['-fPIE'],
+ PROGCCFLAGS=['-fpie'],
PROGLINKFLAGS=['-pie'],
)
# -Winvalid-pch Warn if a precompiled header (see Precompiled Headers) is found in the search path but can't be used.
env.Append( CCFLAGS=["-fno-omit-frame-pointer",
"-fno-strict-aliasing",
- "-ggdb" if not env.TargetOSIs('emscripten') else "-g",
"-pthread",
- "-Wall",
- "-Wsign-compare",
- "-Wno-unknown-pragmas",
- "-Winvalid-pch"] )
+ "-Wno-unknown-pragmas" ] )
# env.Append( " -Wconversion" ) TODO: this doesn't really work yet
- if env.TargetOSIs('linux', 'darwin', 'solaris'):
+ if env.TargetOSIs('linux', 'darwin', 'solaris', 'freebsd'):
if not has_option("disable-warnings-as-errors"):
env.Append( CCFLAGS=["-Werror"] )
@@ -1902,21 +1894,12 @@
env.Append( LINKFLAGS=["-fprofile-arcs", "-ftest-coverage", "-fprofile-update=single"] )
if optBuild and not optBuildForSize:
- env.Append( CCFLAGS=["-O2"] )
+ env.Append( CCFLAGS=["-O1"] )
elif optBuild and optBuildForSize:
env.Append( CCFLAGS=["-Os"] )
else:
env.Append( CCFLAGS=["-O0"] )
- # Promote linker warnings into errors. We can't yet do this on OS X because its linker considers
- # noall_load obsolete and warns about it.
- if not has_option("disable-warnings-as-errors"):
- env.Append(
- LINKFLAGS=[
- '-Wl,-fatal_warnings' if env.TargetOSIs('darwin') else "-Wl,--fatal-warnings",
- ]
- )
-
mmapv1 = False
if get_option('mmapv1') == 'auto':
# The mmapv1 storage engine is only supported on x86
@@ -2257,11 +2240,11 @@
AddToCCFLAGSIfSupported(myenv, "-Wno-potentially-evaluated-expression")
# Warn about moves of prvalues, which can inhibit copy elision.
- AddToCXXFLAGSIfSupported(myenv, "-Wpessimizing-move")
+ AddToCXXFLAGSIfSupported(myenv, "-Wno-pessimizing-move")
# Warn about redundant moves, such as moving a local variable in a return that is different
# than the return type.
- AddToCXXFLAGSIfSupported(myenv, "-Wredundant-move")
+ AddToCXXFLAGSIfSupported(myenv, "-Wno-redundant-move")
# Disable warning about variables that may not be initialized
# Failures are triggered in the case of boost::optional in GCC 4.8.x
@@ -2857,7 +2840,7 @@
}}
"""
context.Message('Checking for storage class thread_local ')
- ret = context.TryLink(textwrap.dedent(test_body), ".cpp")
+ ret = context.TryCompile(textwrap.dedent(test_body), ".cpp")
context.Result(ret)
return ret
@@ -3207,7 +3190,7 @@
# libcurl on all other platforms
if conf.CheckLibWithHeader(
- "curl",
+ [ "nghttp2", "ssl", "crypto", "z", "curl" ],
["curl/curl.h"], "C",
"curl_global_init(0);",
autoadd=False):
@@ -3621,9 +3604,6 @@
elif get_option('separate-debug') == "on":
env.FatalError('Cannot use --separate-debug without --install-mode=hygienic')
-# Now that we are done with configure checks, enable icecream, if available.
-env.Tool('icecream')
-
# If the flags in the environment are configured for -gsplit-dwarf,
# inject the necessary emitter.
split_dwarf = Tool('split_dwarf')
@@ -3681,10 +3661,6 @@
action="$PYTHON ${SOURCES[0]} ${SOURCES[1]}",
)
-env.Alias( "lint" , [ run_lint ] , [ doLint ] )
-env.AlwaysBuild( "lint" )
-
-
# ---- INSTALL -------
def getSystemInstallName():
@@ -3730,8 +3706,6 @@
)
)
-env.AddDistSrcCallback(add_version_to_distsrc)
-
env['SERVER_DIST_BASENAME'] = env.subst('mongodb-%s-$MONGO_DISTNAME' % (getSystemInstallName()))
module_sconscripts = moduleconfig.get_module_sconscripts(mongo_modules)
@@ -3777,25 +3751,9 @@
vcxprojFile = env.Command(
"mongodb.vcxproj",
compileCommands,
- r"$PYTHON buildscripts\make_vcxproj.py mongodb")
+ r"$PYTHON buildscripts/make_vcxproj.py mongodb")
vcxproj = env.Alias("vcxproj", vcxprojFile)
-distSrc = env.DistSrc("mongodb-src-${MONGO_VERSION}.tar")
-env.NoCache(distSrc)
-env.Alias("distsrc-tar", distSrc)
-
-distSrcGzip = env.GZip(
- target="mongodb-src-${MONGO_VERSION}.tgz",
- source=[distSrc])
-env.NoCache(distSrcGzip)
-env.Alias("distsrc-tgz", distSrcGzip)
-
-distSrcZip = env.DistSrc("mongodb-src-${MONGO_VERSION}.zip")
-env.NoCache(distSrcZip)
-env.Alias("distsrc-zip", distSrcZip)
-
-env.Alias("distsrc", "distsrc-tgz")
-
# Defaults for SCons provided flags. SetOption only sets the option to our value
# if the user did not provide it. So for any flag here if it's explicitly passed
# the values below set with SetOption will be overwritten.
@@ -3901,10 +3859,7 @@
variant_dir='$BUILD_DIR',
)
-allTargets = ['core', 'tools', 'unittests', 'integration_tests', 'benchmarks']
-
-if not has_option('noshell') and usemozjs:
- allTargets.extend(['dbtest'])
+allTargets = ['core', 'tools']
env.Alias('all', allTargets)
Index: buildscripts/cpplint.py
--- buildscripts/cpplint.py.orig 2019-08-08 22:06:23.000000000 +0200
+++ buildscripts/cpplint.py 2019-08-14 20:42:38.455709000 +0200
@@ -6264,21 +6264,7 @@
def main():
- filenames = ParseArguments(sys.argv[1:])
-
- # Change stderr to write with replacement characters so we don't die
- # if we try to print something containing non-ASCII characters.
- sys.stderr = codecs.StreamReaderWriter(sys.stderr,
- codecs.getreader('utf8'),
- codecs.getwriter('utf8'),
- 'replace')
-
- _cpplint_state.ResetErrorCounts()
- for filename in filenames:
- ProcessFile(filename, _cpplint_state.verbose_level)
- _cpplint_state.PrintErrorCounts()
-
- sys.exit(_cpplint_state.error_count > 0)
+ sys.exit(0)
if __name__ == '__main__':
Index: buildscripts/lint.py
--- buildscripts/lint.py.orig 2019-08-08 22:06:23.000000000 +0200
+++ buildscripts/lint.py 2019-08-14 21:51:57.306726000 +0200
@@ -33,6 +33,7 @@
def run_lint(paths, nudge_on=False): # pylint: disable=too-many-statements
+ return True
"""Run lint."""
# errors are as of 10/14
# idea is not to let it any new type of error
Index: site_scons/site_tools/idl_tool.py
--- site_scons/site_tools/idl_tool.py.orig 2019-08-08 22:06:23.000000000 +0200
+++ site_scons/site_tools/idl_tool.py 2019-08-14 20:42:38.455851000 +0200
@@ -15,6 +15,7 @@
#
"""IDL Compiler Scons Tool."""
+import os
import os.path
import subprocess
import sys
@@ -43,7 +44,7 @@
def idl_scanner(node, env, path):
# Use the import scanner mode of the IDL compiler to file imported files
- cmd = [sys.executable, "buildscripts/idl/idlc.py", '--include','src', str(node), '--write-dependencies']
+ cmd = [os.environ.get("PYTHON", "python"), "buildscripts/idl/idlc.py", '--include','src', str(node), '--write-dependencies']
try:
deps_str = subprocess.check_output(cmd).decode('utf-8')
except subprocess.CalledProcessError as e:
@@ -73,7 +74,7 @@
env['BUILDERS']['Idlc'] = bld
- env['IDLC'] = sys.executable + " buildscripts/idl/idlc.py"
+ env['IDLC'] = os.environ.get("PYTHON", "python") + " buildscripts/idl/idlc.py"
env['IDLCFLAGS'] = ''
base_dir = env.subst('$BUILD_ROOT/$VARIANT_DIR').replace("#", "")
env['IDLCCOM'] = '$IDLC --include src --base_dir %s --target_arch $TARGET_ARCH --header ${TARGETS[1]} --output ${TARGETS[0]} $SOURCES ' % (
Index: site_scons/site_tools/mongo_integrationtest.py
--- site_scons/site_tools/mongo_integrationtest.py.orig 2019-08-08 22:06:23.000000000 +0200
+++ site_scons/site_tools/mongo_integrationtest.py 2019-08-14 20:42:38.455966000 +0200
@@ -7,9 +7,7 @@
_integration_tests = []
def register_integration_test(env, test):
- installed_test = env.Install("#/build/integration_tests/", test)
- _integration_tests.append(installed_test[0].path)
- env.Alias('$INTEGRATION_TEST_ALIAS', installed_test)
+ return True
def integration_test_list_builder_action(env, target, source):
ofile = open(str(target[0]), 'w')
@@ -21,15 +19,7 @@
ofile.close()
def build_cpp_integration_test(env, target, source, **kwargs):
- libdeps = kwargs.get('LIBDEPS', [])
- libdeps.append( '$BUILD_DIR/mongo/unittest/integration_test_main' )
-
- kwargs['LIBDEPS'] = libdeps
- kwargs['INSTALL_ALIAS'] = ['tests']
-
- result = env.Program(target, source, **kwargs)
- env.RegisterIntegrationTest(result[0])
- return result
+ return True
def generate(env):
Index: site_scons/site_tools/mongo_unittest.py
--- site_scons/site_tools/mongo_unittest.py.orig 2019-08-08 22:06:23.000000000 +0200
+++ site_scons/site_tools/mongo_unittest.py 2019-08-14 20:42:38.456080000 +0200
@@ -7,8 +7,7 @@
_unittests = []
def register_unit_test(env, test):
- _unittests.append(test.path)
- env.Alias('$UNITTEST_ALIAS', test)
+ return True
def unit_test_list_builder_action(env, target, source):
ofile = open(str(target[0]), 'w')
@@ -20,18 +19,7 @@
ofile.close()
def build_cpp_unit_test(env, target, source, **kwargs):
- libdeps = kwargs.get('LIBDEPS', [])
- libdeps.append( '$BUILD_DIR/mongo/unittest/unittest_main' )
-
- kwargs['LIBDEPS'] = libdeps
- kwargs['INSTALL_ALIAS'] = ['tests']
-
- result = env.Program(target, source, **kwargs)
- env.RegisterUnitTest(result[0])
- hygienic = env.GetOption('install-mode') == 'hygienic'
- if not hygienic:
- env.Install("#/build/unittests/", result[0])
- return result
+ return True
def generate(env):
Index: src/mongo/SConscript
--- src/mongo/SConscript.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/SConscript 2019-08-14 20:42:38.456263000 +0200
@@ -30,7 +30,6 @@
'embedded',
'executor',
'idl',
- 'installer',
'logger',
'platform',
'rpc',
Index: src/mongo/base/secure_allocator.cpp
--- src/mongo/base/secure_allocator.cpp.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/base/secure_allocator.cpp 2019-08-14 20:42:38.456418000 +0200
@@ -247,6 +247,7 @@
fassertFailed(28831);
}
+#ifndef __FreeBSD__
if (mlock(ptr, bytes) != 0) {
auto str = errnoWithPrefix(
"Failed to mlock: Cannot allocate locked memory. For more details see: "
@@ -254,6 +255,7 @@
severe() << str;
fassertFailed(28832);
}
+#endif
#if defined(MADV_DONTDUMP)
// We deliberately ignore the return value since if the Linux version is < 3.4, madvise
@@ -270,10 +272,12 @@
(void)madvise(ptr, bytes, MADV_DODUMP);
#endif
+#ifndef __FreeBSD__
if (munlock(ptr, bytes) != 0) {
severe() << errnoWithPrefix("Failed to munlock");
fassertFailed(28833);
}
+#endif
if (munmap(ptr, bytes) != 0) {
severe() << errnoWithPrefix("Failed to munmap");
Index: src/mongo/crypto/SConscript
--- src/mongo/crypto/SConscript.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/crypto/SConscript 2019-08-14 20:42:38.456543000 +0200
@@ -2,6 +2,10 @@
Import("env")
+def has_option(name):
+ optval = GetOption(name)
+ return True if optval == () else bool(optval)
+
env = env.Clone()
env.Library('sha1_block',
@@ -46,7 +50,7 @@
]
)
-else:
+elif has_option("ssl"):
env.Library('sha_block_${MONGO_CRYPTO}',
source=[
'sha_block_${MONGO_CRYPTO}.cpp'
Index: src/mongo/db/pipeline/document_source_bucket_auto.cpp
--- src/mongo/db/pipeline/document_source_bucket_auto.cpp.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/db/pipeline/document_source_bucket_auto.cpp 2019-08-14 20:42:38.456711000 +0200
@@ -207,7 +207,7 @@
// Calculate the approximate bucket size. We attempt to fill each bucket with this many
// documents.
- long long approxBucketSize = std::round(double(_nDocuments) / double(_nBuckets));
+ long long approxBucketSize = round(double(_nDocuments) / double(_nBuckets));
if (approxBucketSize < 1) {
// If the number of buckets is larger than the number of documents, then we try to make as
Index: src/mongo/db/pipeline/expression.cpp
--- src/mongo/db/pipeline/expression.cpp.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/db/pipeline/expression.cpp 2019-08-14 20:42:38.457388000 +0200
@@ -39,6 +39,7 @@
#include <pcrecpp.h>
#include <utility>
#include <vector>
+#include <cmath>
#include "mongo/db/commands/feature_compatibility_version_documentation.h"
#include "mongo/db/jsobj.h"
Index: src/mongo/db/pipeline/granularity_rounder_powers_of_two.cpp
--- src/mongo/db/pipeline/granularity_rounder_powers_of_two.cpp.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/db/pipeline/granularity_rounder_powers_of_two.cpp 2019-08-14 20:42:38.457522000 +0200
@@ -68,7 +68,7 @@
Value exp;
if (value.getType() == BSONType::NumberDouble) {
- exp = Value(static_cast<int>(std::floor(std::log2(value.getDouble())) + 1.0));
+ exp = Value(static_cast<int>(std::floor(log2(value.getDouble())) + 1.0));
} else if (value.getType() == BSONType::NumberDecimal) {
Decimal128 input = value.getDecimal();
exp = Value(Decimal128(
@@ -94,7 +94,7 @@
Value exp;
if (value.getType() == BSONType::NumberDouble) {
- exp = Value(static_cast<int>(std::ceil(std::log2(value.getDouble())) - 1.0));
+ exp = Value(static_cast<int>(std::ceil(log2(value.getDouble())) - 1.0));
} else if (value.getType() == BSONType::NumberDecimal) {
Decimal128 input = value.getDecimal();
exp = Value(Decimal128(
Index: src/mongo/util/represent_as.h
--- src/mongo/util/represent_as.h.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/util/represent_as.h 2019-08-14 20:42:38.457671000 +0200
@@ -203,7 +203,7 @@
// If Output is integral and number is a non-integral floating point value,
// return a disengaged optional.
if (std::is_floating_point<Input>::value && std::is_integral<Output>::value) {
- if (!(std::trunc(number) == number)) {
+ if (!(trunc(number) == number)) {
return {};
}
}
Index: src/mongo/util/summation.h
--- src/mongo/util/summation.h.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/mongo/util/summation.h 2019-08-14 20:42:38.457791000 +0200
@@ -105,7 +105,7 @@
* Returns whether the accumulated sum has a fractional part.
*/
bool isInteger() const {
- return std::trunc(_sum) == _sum && std::trunc(_addend) == _addend;
+ return trunc(_sum) == _sum && trunc(_addend) == _addend;
}
/**
Index: src/third_party/SConscript
--- src/third_party/SConscript.orig 2019-08-08 22:06:23.000000000 +0200
+++ src/third_party/SConscript 2019-08-14 20:42:38.457952000 +0200
@@ -235,8 +235,8 @@
if use_system_version_of_library("pcre"):
pcreEnv = env.Clone(
SYSLIBDEPS=[
- env['LIBDEPS_PCRE_SYSLIBDEP'],
env['LIBDEPS_PCRECPP_SYSLIBDEP'],
+ env['LIBDEPS_PCRE_SYSLIBDEP'],
])
else:
pcreEnv = env.Clone()