diff --git a/doc/sphinx/dev_guide/building_from_source.rst b/doc/sphinx/dev_guide/building_from_source.rst index 556dadce7c011f76429abdf3d8a9d689276dd136..b5e8f612c862e4c56ca2180f69992c81f8199196 100644 --- a/doc/sphinx/dev_guide/building_from_source.rst +++ b/doc/sphinx/dev_guide/building_from_source.rst @@ -16,7 +16,7 @@ explain what the steps are, then on the Internet you can look at some example sc end in `-src.tar.gz`), the latest complete source downloads are on github.com, and from github one gets with git. - * A C/C++ compiler. |br| Ordinarily the compiler is ``GCC`` version 4.6 or later, on + * A C/C++ compiler. |br| Ordinarily the compiler is `gcc` and ``g++`` version 4.6 or later, on Mac OS X it should be ``Clang`` version 3.2 or later. * A program for managing the build process. |br| This is always ``CMake`` @@ -25,33 +25,20 @@ explain what the steps are, then on the Internet you can look at some example sc Here are names of tools and libraries which may have to be installed in advance, using ``sudo apt-get`` (for Ubuntu), ``sudo yum install`` (for CentOS), or the equivalent on other platforms. Different platforms may use slightly different - names. Do not worry about the ones marked `optional, for build with -DENABLE_DOC` - unless you intend to work on the documentation. + names. Do not worry about the ones marked `optional, only in Mac OS scripts` + unless your platform is Mac OS. - * **binutils-dev** or **binutils-devel** # contains GNU BFD for printing stack traces - * **gcc or clang** # see above + * **gcc and g++, or clang** # see above * **git** # see above * **cmake** # see above - * **libreadline-dev** # for interactive mode - * **libncurses5-dev** or **ncurses-devel** # see above - * **xsltproc** # optional, for build with -DENABLE_DOC - * **lynx** # optional, for build with -DENABLE_DOC - * **jing** # optional, for build with -DENABLE_DOC - * **libxml2-utils** # optional, for build with -DENABLE_DOC - * **docbook5-xml** # optional, for build with -DENABLE_DOC - * **docbook-xsl-ns** # optional, for build with -DENABLE_DOC - * **w3c-sgml-lib** # optional, for build with -DENABLE_DOC - * **libsaxon-java** # optional, for build with -DENABLE_DOC - * **libxml-commons-resolver1.1-java** # optional, for build with -DENABLE_DOC - * **libxerces2-java** # optional, for build with -DENABLE_DOC - * **libxslthl-java** # optional, for build with -DENABLE_DOC - * **autoconf** # optional, appears only in Mac OS scripts - * **zlib1g** or **zlib** # optional, appears only in Mac OS scripts + * **libreadline-dev or libreadline6-dev** # for interactive mode + * **autoconf** # optional, only in Mac OS scripts + * **zlib1g** or **zlib** # optional, only in Mac OS scripts 2. Set up python modules for running the test suite or creating documentation. This step is optional. Python modules are not necessary for building Tarantool - itself, unless one intends to use the ``-DENABLE_DOC`` option in step 6 or the - "Run the test suite" option in step 8. Say: + itself, unless one intends to use the ``-DENABLE_DOC`` option in step 5 or the + "Run the test suite" option in step 7. Say: .. code-block:: bash @@ -64,19 +51,21 @@ explain what the steps are, then on the Internet you can look at some example sc .. code-block:: bash + # For both test suite and documentation + sudo apt-get install python-pip python-dev python-yaml # For test suite - sudo apt-get install python-daemon python-yaml python-argparse + sudo apt-get install python-daemon # For documentation - sudo apt-get install python-jinja2 python-markdown - + sudo apt-get install python-sphinx python-pelican python-beautifulsoup On CentOS too you can get modules from the repository: .. code-block:: bash - sudo yum install python26 python26-PyYAML python26-argparse + sudo yum install python26 python26-PyYAML etc. - But in general it is best to set up the modules by getting a tarball and + If modules are not available on a repository, + it is best to set up the modules by getting a tarball and doing the setup with ``python setup.py``, thus: .. code-block:: bash @@ -100,20 +89,6 @@ explain what the steps are, then on the Internet you can look at some example sc cd python-daemon-1.5.5 sudo python setup.py install - # python module for text-to-html conversion (markdown): - # For documentation: (If wget fails, check the - # http://pypi.python.org/pypi/Markdown/ - # to see what the current version is.) - cd ~ - wget https://pypi.python.org/packages/source/M/Markdown/Markdown-2.3.1.tar.gz - tar -xzvf Markdown-2.3.1.tar.gz - cd Markdown-2.3.1 - sudo python setup.py install - - # python module which includes Jinja2 template engine: - # For documentation: - sudo pip install pelican - # python module for HTML scraping: For documentation: cd ~ wget http://www.crummy.com/software/BeautifulSoup/bs3/download//3.x/BeautifulSoup-3.2.1.tar.gz @@ -121,7 +96,26 @@ explain what the steps are, then on the Internet you can look at some example sc cd BeautifulSoup-3.2.1 sudo python setup.py install -5. Use ``git`` again so that third-party contributions will be seen as well. + Finally, use Python :code:`pip` to bring in Python packages + that may not be up-to-date in the distro repositories. + + .. code-block:: bash + + # For test suite + pip install tarantool\>0.4 --user + # For documentation + sudo pip install pelican + sudo pip install -U sphinx + +3. Use :code:`git` to download the latest source code from the + Tarantool 1.6 master branch on github.com. + + .. code-block:: bash + + cd ~ + git clone https://github.com/tarantool/tarantool.git ~/tarantool + +4. Use ``git`` again so that third-party contributions will be seen as well. This step is only necessary once, the first time you do a download. There is an alternative -- say ``git clone --recursive`` in step 3 -- but we prefer this method because it works with older versions of ``git``. @@ -136,7 +130,7 @@ explain what the steps are, then on the Internet you can look at some example sc On rare occasions, the submodules will need to be updated again with the command: ``git submodule update --init --recursive``. -6. Use CMake to initiate the build. +5. Use CMake to initiate the build. .. code-block: bash @@ -145,19 +139,27 @@ explain what the steps are, then on the Internet you can look at some example sc rm CMakeCache.txt # unnecessary, added for good luck cmake . # Start build with build type=Debug, no doc - The option for specifying build type is ``-DCMAKE_BUILD_TYPE=<type>`` where - ``type = <None | Debug | Release | RelWithDebInfo | MinSizeRel>`` and a + On some platforms it may be necessary to specify the C and C++ versions, + for example + + .. code-block: bash + + CC=gcc-4.8 CXX=g++-4.8 cmake . + + The option for specifying build type is :samp:`-DCMAKE_BUILD_TYPE={type}` where + :samp:`{type} = None | Debug | Release | RelWithDebInfo | MinSizeRel` and a reasonable choice for production is ``-DCMAKE_BUILD_TYPE=RelWithDebInfo`` (``Debug`` is used only by project maintainers and ``Release`` is used only when the highest performance is required). - The option for asking to build documentation is ``-DENABLE_DOC=<true|false>`` - and the assumption is that only a minority will need to rebuild the - documentation (such as what you're reading now), so details about - documentation are in the developer manual, and the reasonable choice + The option for asking to build documentation is ``-DENABLE_DOC=true|false`, + which outputs HTML documentation (such as what you're reading now) to the + subdirectory doc/www/output/doc. Tarantool uses the Sphinx simplified markup system. + Since most users do not need to rebuild the documentation, + the reasonable option is ``-DENABLE_DOC=false`` or just don't use the ``-DENABLE_DOC`` clause at all. -7. Use make to complete the build. +6. Use make to complete the build. .. code-block:: bash @@ -165,7 +167,7 @@ explain what the steps are, then on the Internet you can look at some example sc It's possible to say ``make install`` too, but that's not generally done. -8. Run the test suite. This step is optional. |br| Tarantool's developers always +7. Run the test suite. This step is optional. |br| Tarantool's developers always run the test suite before they publish new versions. You should run the test suite too, if you make any changes in the code. Assuming you downloaded to ``~/tarantool``, the principal steps are: @@ -208,10 +210,9 @@ explain what the steps are, then on the Internet you can look at some example sc rmdir ~/tarantool/bin -9. Make an rpm. |br| This step is optional. It's only for people who want to +8. Make an rpm. |br| This step is optional. It's only for people who want to redistribute Tarantool. Package maintainers who want to build with rpmbuild - should consult the - :doc:`Tarantool Developer Guide <index>` + should consult the rpm-build instructions for the appropriate platform. This is the end of the list of steps to take for source downloads. @@ -229,49 +230,5 @@ For your added convenience, github.com has README files with example scripts: These example scripts assume that the intent is to download from the master branch, build the server (but not the documentation), and run tests after build. -To build with SUSE 13.1, the steps are as described above, except that the -appropriate YaST2 package names are: binutils-devel, cmake, ncurses-devel, -lynx, jing, libxml2-devel, docbook_5, saxon, libxslt-devel. |br| The python connector can be installed with ``sudo easy_install pip`` and ``sudo pip install tarantool``. -=========================================================== - How to build the XML manual -=========================================================== - -To build XML manual, you'll need: - -* xsltproc -* docbook5-xml -* docbook-xsl-ns -* w3c-sgml-lib -* libsaxon-java (for saxon processing) -* libxml-commons-resolver1.1-java -* libxml2-utils -* libxerces2-java -* libxslthl-java -* lynx -* jing - -When all pre-requisites are met, you should run: - -.. code-block:: bash - - $ cmake . -DENABLE_DOC=YES - -to enable documentation builder. - -If you want to make tarantool user guide, you should run the -following command from tarantool root directory: - -.. code-block:: bash - - $ make html - -or - -.. code-block:: bash - - $ cd doc/user - $ make - -The html version of the user guide will be generated in doc/www/content/doc