Editing
Software Development Platforms
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Installing Development Tools== ===Standard development packages=== The default Ubuntu installation doesn't come with many development tools or libraries. The following command should pull in compilers and a bunch of standard libraries that are often required. sudo apt-get install build-essential libstdc++6 ia32-libs libc6-dev-i386 libglu1-mesa-dev freeglut3-dev python-dev gfortran ===boost=== ====Using apt-get==== sudo apt-get install libboost-all-dev libboost-doc It looks like Ubuntu 10.04 gets boost-1.40, I think we need at least boost 1.43, so you need to install from source. ====From source==== Download the boost source code from http://www.boost.org . Unpack it with a command like: tar xvjf boost_1_50_0.tar.bz2 First you need to build bjam, which is boost's native build tool. ./bootstrap.sh These are the commands that I used to build and install a version of boost: ./b2 --build-dir=build --prefix=/opt/boost-1.50.0 -j 4 link=static cflags=-fPIC cxxflags=-fPIC sudo ./b2 install --build-dir=build --prefix=/opt/boost-1.50.0 link=static cflags=-fPIC cxxflags=-fPIC On 64 bit Linux, we need to use the -fPIC flag to avoid linker problems when trying to link boost statically. Here is the [[#Scripts_to_Set_Environment_Variables|setenv.sh]] script to put into /opt/boost-1.50.0 after installing. ---- <source lang=bash> #!/bin/bash source /usr/local/bin/setenv_functions.sh SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export BOOST_ROOT="${SCRIPT_DIR}" </source> ---- === Qt === ====using apt-get==== sudo apt-get install libqt4-dev qt4-dev-tools And optionally, depending on what you're compiling: sudo apt-get install qt3-dev-tools qt3-designer qt3-assistant (Version 3s and 4 can co-exist.) ====from source==== You only need to install Qt from source to build a distribuatble version of FAIM and ParaView. (i.e. one that will include the Qt libraries because you can't assume that the user's system will.) You will need version 4.6.3 to build paraview 3.10 . Get the source from http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.3.tar.gz . ./configure --no-qt3support --release --fast --prefix=/opt/qt-4.6.3 make -j 8 sudo make install Here is the [[#Scripts_to_Set_Environment_Variables|setenv.sh]] script to put into /opt/qt-4.6.3 after installing. ---- <source lang=bash> #!/bin/bash source /usr/local/bin/setenv_functions.sh export QTDIR=/opt/qt-4.6.3 remove_path PATH '/opt/qt(-[^/]+)?/bin/?' add_path PATH "${QTDIR}/bin" remove_path LD_LIBRARY_PATH '/opt/qt(-[^/]+)?/lib/?' add_path LD_LIBRARY_PATH "${QTDIR}/lib" </source> ===numpy and scipy=== sudo apt-get install python-scipy python-numpy-doc ===VTK=== Warning: ParaView includes an internal version of VTK. This must be used to build ParaView extensions and plugins, and any libraries that they depend on. I do not however recommend using this ParaView-internal version of VTK for anything that will not the used inside of ParaView. ====using apt-get==== sudo apt-get install vtk6 vtk6-doc vtk6-examples libvtk6-dev python-vtk6 ====from source==== To make sure you have all the required build dependencies, first do this sudo apt-get install tk8.4-dev tk8.4 Get the source code for VTK from http://vtk.org/ and unpack it somewhere. tar xvzf vtk-5.10.0.tar.gz mv VTK vtk-5.10.0 # Because I like to have the version number on the directory cd vtk-5.10.0 Then make a build directory and configure VTK with cmake in the usual way. mkdir build cd build Before proceeding further, if you use Qt (at the moment I'm not) and you want to use the version of Qt that you installed, you should add it to the PATH: export QTDIR=/opt/qt-4.6.3 export PATH="$QTDIR/bin:$PATH" Now configure cmake: ccmake .. Now select the cmake options in the usual way, and generate. Here are the cmake options that I typically set: {| border="1" cellpadding="2" cellspacing="0" |- ! option ! Setting |- valign="top" | BUILD_EXAMPLES || ON |- valign="top" | BUILD_SHARED_LIBS || ON |- valign="top" | CMAKE_INSTALL_PREFIX || /opt/vtk-5.10.0 |- valign="top" | VTK_USE_QT || OFF |- valign="top" | VTK_WRAP_PYTHON || ON |} Once you've configured and generated cmake, build with make -j 4 You can use it from the build directory. (In fact this is necessary if you want to build vtkn88.) In this case, you can use this [[#Scripts_to_Set_Environment_Variables|setenv.sh]] : ---- <source lang=bash> #!/bin/bash source /usr/local/bin/setenv_functions.sh # Conflicts with VTK from faim, so remove that. export NUMERICS88_ROOT unset NUMERICS88_ROOT remove_path PATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/bin/?$' remove_path LD_LIBRARY_PATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/lib/?$' remove_path LD_LIBRARY_PATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/bin/?$' remove_path PYTHONPATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/lib' remove_path PYTHONPATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/bin/?$' remove_path PATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/bin/?$' remove_path LD_LIBRARY_PATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/lib/?$' remove_path LD_LIBRARY_PATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/bin/?$' remove_path PYTHONPATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/lib' remove_path PYTHONPATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/bin/?$' remove_path PATH '/.+/vtk(-[^/]+)?/bin/?$' remove_path PATH '/.+/vtk(-[^/]+)?/.+/bin/?$' remove_path LD_LIBRARY_PATH '/.+/vtk(-[^/]+)?/lib/vtk(-[^/]+)?/?' remove_path LD_LIBRARY_PATH '/.+/vtk(-[^/]+)?/.+/bin/?$' remove_path PYTHONPATH '/.+/vtk(-[^/]+)?/lib/python([^/]+)?/site-packages' remove_path PYTHONPATH '/.+/vtk(-[^/]+)?/.+/bin/?$' SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" VTK_DIR="${SCRIPT_DIR}" add_path PATH "${VTK_DIR}/bin" add_path LD_LIBRARY_PATH "${VTK_DIR}/bin" add_path PYTHONPATH "${VTK_DIR}/bin" </source> ---- Alternatively, if you install it to /opt/vtk-5.10.0, here is the [[#Scripts_to_Set_Environment_Variables|setenv.sh]] script to put into /opt/vtk-5.10.0 after installing. ---- <source lang=bash> #!/bin/bash source /usr/local/bin/setenv_functions.sh # Conflicts with VTK from faim, so remove that. export NUMERICS88_ROOT unset NUMERICS88_ROOT remove_path PATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/bin/?$' remove_path LD_LIBRARY_PATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/lib/?$' remove_path LD_LIBRARY_PATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/bin/?$' remove_path PYTHONPATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/lib' remove_path PYTHONPATH '/.+/[Nn]umerics88(-[^/]+)?(/.+)?/bin/?$' remove_path PATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/bin/?$' remove_path LD_LIBRARY_PATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/lib/?$' remove_path LD_LIBRARY_PATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/bin/?$' remove_path PYTHONPATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/lib' remove_path PYTHONPATH '/.+/[Ff][Aa][Ii][Mm](-[^/]+)?(/.+)?/bin/?$' remove_path PATH '/.+/vtk(-[^/]+)?/bin/?$' remove_path PATH '/.+/vtk(-[^/]+)?/.+/bin/?$' remove_path LD_LIBRARY_PATH '/.+/vtk(-[^/]+)?/lib/vtk(-[^/]+)?/?' remove_path LD_LIBRARY_PATH '/.+/vtk(-[^/]+)?/.+/bin/?$' remove_path PYTHONPATH '/.+/vtk(-[^/]+)?/lib/python([^/]+)?/site-packages' remove_path PYTHONPATH '/.+/vtk(-[^/]+)?/.+/bin/?$' SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" VTK_ROOT="${SCRIPT_DIR}" add_path PATH "${VTK_ROOT}/bin" add_path LD_LIBRARY_PATH "${VTK_ROOT}/lib/vtk-5.10" add_path PYTHONPATH "${VTK_ROOT}/lib/python2.7/site-packages" </source> ---- === ITK === ====using apt-get==== sudo apt-get install libinsighttoolkit3-dev python-insighttoolkit3 insighttoolkit3-examples libopenjpeg2 libopenjpeg-dev You should also install [[#GDCM|GDCM]], which won't be automatically installed by apt-get, but its absence can cause some compilation errors of ITK programs. Note, be aware of this issue: [[Bone lab libraries#Finding itkImageToVTKImageFilter.h]] . ====from source==== First make sure we have packages that are likely to be required for building ITK: sudo apt-get build-dep libinsighttoolkit3-dev Download the current version from itk.org (InsightToolkit-3.18.0.tar.gz) and untar in your development directory. cd InsightToolkit-3.18.0 mkdir build cd build ccmake .. Now select the cmake options in the usual way, and generate. Here are the cmake options that I typically set: {| border="1" cellpadding="2" cellspacing="0" |- ! option ! Setting |- valign="top" | CMAKE_INSTALL_PREFIX || /opt/itk-3.18.0 |- valign="top" | CMAKE_CXX_FLAGS (Advanced setting) || -fPIC |- valign="top" | CMAKE_C_FLAGS (Advanced setting) || -fPIC |} Note that the -fPIC flags are not necessary if you build a shared library, but the default for BUILD_SHARED_LIBS was NO, and I just left it at that. ITK itself will build regardless of the -fPIC flags, but you may get linker errors trying to link statically to it without them. When happy with your cmake options, built it like this make sudo make install ITK does not install the VTK to ITK filters, and there seems to be no cmake option to request this, although the necessary files are in the source code tree. Fortunately, they are just 4 header and template files, so you can just copy them into place afterwards. Something like this: cp InsightToolkit-3.16.0/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue/src/*.h /opt/itk-3.18.0/include/InsightToolkit cp InsightToolkit-3.16.0/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue/src/*.txx /opt/itk-3.18.0/include/InsightToolkit === GDCM === GDCM is a library for reading DICOM files. Sometimes ITK requires it, even if you don't think you're using it. (And sometimes, it's useful :) ====using apt-get==== sudo apt-get install libgdcm2.0 libgdcm2-dev libgdcm-tools libgdcm-ci === FLTK === ====using apt-get==== sudo apt-get install libfltk1.1 libfltk1.1-dbg libfltk1.1-dev fltk1.1-doc fluid ====from source==== Download a stable compatible version from fltk.org, I use fltk-1.1.10 and untar in your development directory. cd fltk-1.1.10 mkdir build cd build ccmake .. make sudo make install Install directory was set to /opt/fltk-1.1.10 When using gcc 4.4.1 you have to use ./configure --enable-shared --enable-threads --prefix=/opt/fltk-1.1.10 instead of cmake as it will not compile. ===Paraview=== Currently we are using ParaView 3.8.0 . Ubuntu 10.04 provides paraview 3.4.0, so we will usually build paraview from source. First make sure that you have all the required packages for building paraview: sudo apt-get build-dep paraview The source code can be downloaded from http://paraview.org/paraview/resources/software.html . Unpack ParaView: tar xvzf Paraview-3.8.0.tar.gz cd ParaView-3.8.0 mkdir build cd build cmake-gui .. # or else 'ccmake ..' Now you can configure the build. The exact configuration depends on the purpose for which you are building ParaView. See [[ParaView_Extensions#Building_ParaView_Extensions]] . Here are the cmake options that might be typical for Linux and that are different than the default: {| border="1" cellpadding="2" cellspacing="0" |- ! option ! Setting |- valign="top" | BUILD_SHARED_LIBS || ON |- valign="top" | CMAKE_INSTALL_PREFIX || /opt/paraview-3.8.0 |- valign="top" | PARAVIEW_BUILD_QT_GUI || ON |- valign="top" | PARAVIEW_ENABLE_PYTHON || ON |- valign="top" | PARAVIEW_USE_MPI || ON |} If you want to build using MPI (MPI is a library for parallel processing), you'll have to install OpenMPI first. See http://bonewiki.ucalgary.ca/index.php/Development_for_Linux#MPI . When happy with your options (see the notes below), press 'C' for configure and then 'G' for generate. Then proceed with make -j 4 # -j 4 means use 4 parallel processes for compiling sudo make install ===blas, lapack and atlas=== lapack is required to build faim. All these math libraries can be installed as follows: sudo apt-get install libatlas-base-dev libatlas-headers libatlas-doc libblas-doc liblapack-doc liblapack-dev ===gtest=== gtest is google's testing framework. Some unit tests are written with it. Generally, it is not absolutely required, as you can typically build projects without testing support. However, this is not recommended, as the tests verify proper operation. ====using apt-get==== sudo apt-get install libgtest-dev ====from source==== You can get gtest from here: http://code.google.com/p/googletest/ . Unpack it in the usual way tar xvjf gtest-1.5.0.tar.bz2 cd gtest-1.5.0 Install it: ./configure --prefix=/opt/gtest-1.5.0 make sudo make install Here is the [[#Scripts_to_Set_Environment_Variables|setenv.sh]] script to put into /opt/gtest-1.5.0 after installing. ---- <source lang=bash> #!/bin/bash # source /usr/local/bin/setenv_functions.sh export GTEST_ROOT=/opt/gtest-1.5.0 remove_path LD_LIBRARY_PATH '/opt/gtest(-[^/]+)?/lib/?' add_path LD_LIBRARY_PATH "${GTEST_ROOT}/lib" </source> ---- ===asciidoc=== Asciidoc is used for generating documentation (for example the FAIM manual). You can install its dependencies with sudo apt-get install docbook-utils xmlto dblatex libxml2-utils source-highlight It's best to install asciidoc itself from source however, in order to get the newest version. The source code can be obtained from http://sourceforge.net/projects/asciidoc/ It can be installed with tar xvzf asciidoc-8.6.3.tar.gz cd asciidoc-8.6.3 ./configure --prefix=/opt/asciidoc-8.6.3 make sudo make install Here is the [[#Scripts_to_Set_Environment_Variables|setenv.sh]] script. ---- <source lang=bash> #!/bin/bash # # /opt/asciidoc-8.6.3/setenv.sh source /opt/source-highlight-3.1.4/setenv.sh source /opt/dblatex-0.3/setenv.sh export ASCIIDOC_ROOT=/opt/asciidoc-8.6.3 remove_path PATH '/opt/asciidoc(-[^/]+)?/bin/?' add_path PATH "${ASCIIDOC_ROOT}/bin" </source> ---- ===GLE Graphics=== The GLE graphics engine is used to generate figures for the FAIM manual. sudo apt-get install gle-graphics ===DOxygen=== sudo apt-get install doxygen graphviz ===HDF5 and netCDF=== To simplify linking, we'll build HDF5 statically linked to zlib. So first we need to build zlib, from http://www.zlib.net/ . tar xvzf zlib-1.2.6.tar.gz cd zlib-1.2.6 export CPPFLAGS=-fPIC unset LIBS unset LDFLAGS ./configure --prefix=/opt/zlib-1.2.6 --static make There is no need to actually install it. Get HDF5 from http://www.hdfgroup.org/downloads/index.html . I used the CMake build for HDF5, instead of the automake build. Note that for version 1.8.9 you have to apply a patch (or edit by hand one file) as described here: http://www.hdfgroup.org/ftp/HDF5/current/src/ . Here are some interesting cmake options: {| border="1" cellpadding="2" cellspacing="0" |- ! option ! Setting |- valign="top" | BUILD_SHARED_LIBS || ON |- valign="top" | CMAKE_BUILD_TYPE || Release |- valign="top" | CMAKE_INSTALL_PREFIX || /opt/hdf5-1.8.9 |- valign="top" | HDF5_BUILD_CPP_LIB || OFF |- valign="top" | HDF5_BUILD_FORTRAN || ON |- valign="top" | HDF5_BUILD_HL_LIB || ON |- valign="top" | HDF5_BUILD_TOOLS || OFF |- valign="top" | HDF5_ENABLE_Z_LIB_SUPPORT || ON |- valign="top" | ZLIB_INCLUDE_DIR || /home/eric/source/zlib-1.2.7 || This is an advanced setting. |- valign="top" | ZLIB_LIBRARY || /home/eric/source/zlib-1.2.7/libz.a || This is an advanced setting. |} Build in the usual way for CMake. Here's a setenv script for setting environment variables: <source lang=bash> #!/bin/bash # # /opt/hdf5-1.8.9/setenv.sh source /usr/local/bin/setenv_functions.sh export HDF5_DIR=/opt/hdf5-1.8.9 export HDF5_ROOT="${HDF5_DIR}" remove_path PATH '/opt/hdf5(-[^/]+)?/bin/?' add_path PATH "${HDF5_DIR}/bin" remove_path LD_LIBRARY_PATH '/opt/hdf5(-[^/]+)?/lib/?' add_path LD_LIBRARY_PATH "${HDF5_DIR}/lib" </source> Now for netCDF, which you can get from ftp://ftp.unidata.ucar.edu/pub/netcdf . As of 4.2, the standard package builds only the C interface: tar xvzf netcdf-4.2.0.tar.gz cd netcdf-4.2 sudo apt-get install doxygen source /opt/hdf5-1.8.9/setenv.sh export CPPFLAGS="-I$HDF5_DIR/include" export LDFLAGS="-L$HDF5_DIR/lib" unset LIBS ./configure --prefix=/opt/netcdf-4.2 --disable-dap make sudo make install Here is a setenv.sh script: <source lang=bash> #!/bin/bash source /opt/hdf5-1.8.9/setenv.sh export NETCDF4_DIR=/opt/netcdf-4.2 remove_path PATH '/opt/netcdf(-[^/]+)?/bin/?' add_path PATH "${NETCDF4_DIR}/bin" remove_path LD_LIBRARY_PATH '/opt/netcdf(-[^/]+)?/lib/?' add_path LD_LIBRARY_PATH "${NETCDF4_DIR}/lib" remove_path PYTHONPATH '/opt/netcdf(-[^/]+)?/lib/?' add_path PYTHONPATH "${NETCDF4_DIR}/lib/python2.7/site-packages" </source> Now for the fortran interface: tar xvzf netcdf-fortran-4.2.tar.gz cd netcdf-fortran-4.2 source /opt/netcdf-4.2/setenv.sh export CPPFLAGS="-I$NETCDF4_DIR/include -I$HDF5_DIR/include -DgFortran" unset LIBS Note that the -DgFortran part is to ensure correct name mangling in Fortran. See http://www.unidata.ucar.edu/support/help/MailArchives/netcdf/msg09206.html . A future version may not require this. export LDFLAGS="-L$NETCDF4_DIR/lib -L$HDF5_DIR/lib" ./configure --prefix=/opt/netcdf-4.2 make sudo make install For the python module netcdf4-python from http://code.google.com/p/netcdf4-python/ , some usual stuff: tar xvzf netCDF4-1.0fix1.tar.gz mv netCDF4-1.0 netCDF4-python-1.0 # Rename to something more informative cd netCDF4-python-1.0 unset CPPFLAGS unset LIBS source /opt/netcdf-4.2/setenv.sh Now it turns out that on Linux, with HDF 1.8.9 and python netCDF 1.0, we need to fix up the setup.py script a bit: <source lang=diff> *** setup.py.old 2012-07-11 09:40:08.603064046 -0700 --- setup.py 2012-07-11 09:40:17.566869824 -0700 *************** *** 21,26 **** --- 21,28 ---- for line in f: if line.startswith('#define H5_VERSION'): hdf5_version = line.split()[2] + elif line.startswith('#define VERSION'): + hdf5_version = line.split()[2] return hdf5_version def check_ifnetcdf4(netcdf4_includedir): </source> Continuing with the build: python setup.py build sudo bash source /opt/netcdf-4.2/setenv.sh python setup.py install --prefix=/opt/netcdf-4.2 exit ===CUDA=== CUDA is nVidia's language for GPU programming. The only project in the lab that uses CUDA at the moment is faim. Basically, you need to get the document CUDA_C_Getting_Started_Linux.pdf from the nVidia CUDA website and follow the instructions. ====Install the Driver ==== Download the driver. Stop the GUI by hitting CTRL-ALT-1 to switch to the first (text only) virtual console. Log in and run: sudo service gdm stop Run the driver installer package: chmod +x nVIDA-Linux-x86_64-xxx.xx.xx.run sudo ./nVIDA-Linux-x86_64-xxx.xx.xx.run Restart gdm: sudo service gdm start ====Installing the CUDA toolkit==== Again from the nVidia website, download the CUDA toolkit package. Install it. chmod +x cudatoolkit_4.2.9_linux_64_ubuntu11.04.run sudo ./cudatoolkit_4.2.9_linux_64_ubuntu11.04.run After we need to update the library and executable paths. For the former, you can do this system-wide by adding the following line to <tt>/etc/ld.so.conf</tt>. After editing this file you need to run <tt>sudo ldconfig</tt>. # Add this line to /etc/ld.so.conf /usr/local/cuda/lib64 For the path, you can update your own PATH by adding this command to your <tt>.bashrc</tt> file # Add this line to your .bashrc file export PATH="/usr/local/cuda/bin:$PATH" ====Installing the CUDA SDK==== Again from the nVidia website, download the CUDA SDK package. Install it. chmod +x gpucomputingsdk_x.x.xx_linux.run ./gpucomputingsdk_x.x.xx_linux.run Notice that we don't need <tt>sudo</tt> this time, because root privileges are not required: the SDK will live in your own home directory somewhere. To compile the examples, just <tt>cd</tt> to the SDK directory and run <tt>make</tt>. My favorite example program is <tt>fluidsGL</tt>. One complication however is that some SDK programs can only be built with gcc 4.4 and earlier, and the NVIDIA SDK doesn't respect the environment variables CC and CXX. So, we're going to set up the Debian alternatives system to be able to switch at will, like this: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 To switch, run this command and make your choice: sudo update-alternatives --config gcc In addition, to build all the programs you will need these libraries: sudo apt-get install libxmu-dev libxi-dev The linker fails to find libcuda as installed by Ubunutu, which can be fixed by running it like this: make LINKFLAGS=-L/usr/lib/nvidia-current For trouble-shooting, run make with make verbose=1
Summary:
Please note that all contributions to bone.wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
BoneWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Log in
associated-pages
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Documents
Recent changes
Help
Tools
What links here
Related changes
Page information