summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorAndrew Morrow <acm@mongodb.com>2020-05-06 09:54:29 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-06-04 18:31:55 +0000
commit642a530878d2b7f929bedf9d93cf0ee23d05ccfa (patch)
treed709746f76d7bcb16364a7835cbc4e00cb846342 /docs
parentbb3552868ac0c0698d83cb905db5f9667c26f10f (diff)
downloadmongo-642a530878d2b7f929bedf9d93cf0ee23d05ccfa.tar.gz
SERVER-41674 Make hygienic builds the default
Diffstat (limited to 'docs')
-rw-r--r--docs/building.md131
1 files changed, 76 insertions, 55 deletions
diff --git a/docs/building.md b/docs/building.md
index 1e996f3d65d..e7f7a5bb89b 100644
--- a/docs/building.md
+++ b/docs/building.md
@@ -1,12 +1,16 @@
Building MongoDB
================
+Please note that prebuilt binaries are available on
+[mongodb.org](http://www.mongodb.org/downloads) and may be the easiest
+way to get started, rather than building from source.
+
To build MongoDB, you will need:
* A modern C++ compiler capable of compiling C++17. One of the following is required:
- * GCC 8.0 or newer
- * Clang 7.0 (or Apple XCode 10.0 Clang) or newer
- * Visual Studio 2017 version 15.9 or newer (See Windows section below for details)
+ * GCC 8.2 or newer
+ * Clang 7.0 (or Apple XCode 10.2 Clang) or newer
+ * Visual Studio 2019 version 16.4 or newer (See Windows section below for details)
* On Linux and macOS, the libcurl library and header is required. MacOS includes libcurl.
* Fedora/RHEL - `dnf install libcurl-devel`
* Ubuntu/Debian - `libcurl-dev` is provided by three packages. Install one of them:
@@ -15,74 +19,105 @@ To build MongoDB, you will need:
* `libcurl4-gnutls-dev`
* Python 3.7.x and Pip modules:
* See the section "Python Prerequisites" below.
-* About 13 GB of free disk space for the core binaries (`mongod`, `mongos`, and `mongo`) and about 600 GB for the all target.
+* About 13 GB of free disk space for the core binaries (`mongod`,
+ `mongos`, and `mongo`) and about 600 GB for the install-all target.
-MongoDB supports the following architectures: arm64, ppc64le, s390x, and x86-64.
-More detailed platform instructions can be found below.
+MongoDB supports the following architectures: arm64, ppc64le, s390x,
+and x86-64. More detailed platform instructions can be found below.
MongoDB Tools
--------------
-The MongoDB command line tools (mongodump, mongorestore, mongoimport, mongoexport, etc)
-have been rewritten in [Go](http://golang.org/) and are no longer included in this repository.
+The MongoDB command line tools (`mongodump`, `mongorestore`,
+`mongoimport`, `mongoexport`, etc) have been rewritten in
+[Go](http://golang.org/) and are no longer included in this
+repository.
+
+The source for the tools is now available at
+[mongodb/mongo-tools](https://github.com/mongodb/mongo-tools).
-The source for the tools is now available at [mongodb/mongo-tools](https://github.com/mongodb/mongo-tools).
Python Prerequisites
---------------
-In order to build MongoDB, Python 3.7.x is required, and several Python modules. To install
-the required Python modules, run:
+In order to build MongoDB, Python 3.7+ is required, and several Python
+modules must be installed. Note that on macOS the system python is
+still python2. You will need to use homebrew or macports or similar to
+obtain python3.
+
+To install the required Python modules, run:
- $ pip3 install -r etc/pip/compile-requirements.txt
+ $ python3 -m pip install -r etc/pip/compile-requirements.txt
-Note: If the `pip3` command is not available, `pip` without a suffix may be the pip command
-associated with Python 3.7.x.
+Installing the requirements inside a python3 based virtualenv
+dedicated to building MongoDB is recommended.
-Note: In order to compile C-based Python modules, you'll also need the Python and OpenSSL C headers. Run:
+Note: In order to compile C-based Python modules, you'll also need the
+Python and OpenSSL C headers. Run:
* Fedora/RHEL - `dnf install python3-devel openssl-devel`
* Ubuntu/Debian - `apt-get install python3.7-dev libssl-dev`
+
SCons
---------------
-For detail information about building, please see [the build manual](https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source)
+If you only want to build the database server `mongod`:
+
+ $ python3 buildscripts/scons.py install-mongod
-If you want to build everything (mongod, mongo, tests, etc):
+***Note***: For C++ compilers that are newer than the supported
+version, the compiler may issue new warnings that cause MongoDB to
+fail to build since the build system treats compiler warnings as
+errors. To ignore the warnings, pass the switch
+`--disable-warnings-as-errors` to scons.
- $ python3 buildscripts/scons.py all
+ $ python3 buildscripts/scons.py install-mongod --disable-warnings-as-errors
-If you only want to build the database:
+To install `mongod` directly to `/opt/mongo`
- $ python3 buildscripts/scons.py mongod
+ $ python3 buildscripts/scons.py DESTDIR=/opt/mongo install-mongod
-***Note***: For C++ compilers that are newer than the supported version, the compiler may issue new warnings that cause MongoDB to fail to build since the build system treats compiler warnings as errors. To ignore the warnings, pass the switch `--disable-warnings-as-errors` to scons.
+To create an installation tree of the servers in `/tmp/unpriv` that
+can later be copied to `/usr/priv`
- $ python3 buildscripts/scons.py mongod --disable-warnings-as-errors
+ $ python3 buildscripts/scons.py DESTDIR=/tmp/unpriv PREFIX=/usr/priv install-servers
-To install
+If you want to build absolutely everything (`mongod`, `mongo`, unit
+tests, etc):
- $ python3 buildscripts/scons.py --prefix=/opt/mongo install
+ $ python3 buildscripts/scons.py install-all-meta
-Please note that prebuilt binaries are available on [mongodb.org](http://www.mongodb.org/downloads) and may be the easiest way to get started.
SCons Targets
--------------
-The following targets can be named on the scons command line to build only certain components:
+The following targets can be named on the scons command line to build
+only certain components:
+
+* `install-mongod`
+* `install-mongos`
+* `install-mongo` or `install-shell`
+* `install-servers` (includes `mongod` and `mongos`)
+* `install-core` (includes `mongod`, `mongos`, `mongo`)
+* `install-all`
+
+
+Where to find Binaries
+----------------------
+
+The build system will produce an installation tree into
+`$DESTDIR/$PREFIX`. `DESTDIR` by default is `build/install` while
+`PREFIX` is by default empty. This means that with all of the listed
+targets all built binaries will be in `build/install/bin` by default.
-* mongod
-* mongos
-* mongo
-* core (includes mongod, mongos, mongo)
-* all
Windows
--------------
-See [the windows build manual](https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source#windows-specific-instructions)
+See [the windows build
+manual](https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source#windows-specific-instructions)
Build requirements:
* Visual Studio 2017 version 15.9 or newer
@@ -90,50 +125,36 @@ Build requirements:
Or download a prebuilt binary for Windows at www.mongodb.org.
+
Debian/Ubuntu
--------------
To install dependencies on Debian or Ubuntu systems:
# apt-get install build-essential
- # apt-get install libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev
-
-To run tests as well, you will need PyMongo:
- # apt-get install python3-pymongo
OS X
--------------
-Using [Homebrew](http://brew.sh):
-
- $ brew install mongodb
-
-Using [MacPorts](http://www.macports.org):
-
- $ sudo port install mongodb
+Install Xcode 10.2 or newer.
FreeBSD
--------------
Install the following ports:
- * devel/libexecinfo
- * lang/llvm70
- * lang/python
-
-Optional Components if you want to use system libraries instead of the libraries included with MongoDB
-
- * archivers/snappy
- * devel/boost
- * devel/pcre
+ * `devel/libexecinfo`
+ * `lang/llvm70`
+ * `lang/python`
Add `CC=clang70 CXX=clang++70` to the `scons` options, when building.
+
OpenBSD
--------------
Install the following ports:
- * devel/libexecinfo
- * lang/gcc
- * lang/python
+ * `devel/libexecinfo`
+ * `lang/gcc`
+ * `lang/python`