Personal tools
You are here: Home Forum Install & build Compilation on SuSE 10.1

Compilation on SuSE 10.1

Up to Install & build
  • Compilation on SuSE 10.1

    Posted by Erwann at January 08. 2007
    I'm trying to build Salome from sources with gcc-3.4.5
    (instead of gcc-4.1.0 provided in my OpenSuSE-10.1 linux box)
    - I had no problems to recompile OpenCascade 6.1
    - I use native omniORB 4.1
    - I've already compiled HDF5 needed for Code_Aster
    ...but compilation failed when I want to make SALOME Kernel 3.2.2

    Passage of the sub-directories:
    OK for idl
    OK for salome_adm
    OK for src/Basics
    OK for src/SALOMELocalTrace
    OK for src/CASCatch
    OK for src/HDFPersist
    OK for src/Logger
    OK for src/SALOMETraceCollector
    OK for src/Utils
    OK for src/NamingService
    FAILED for src/GenericObj !!!!!!!

    SALOME_GenericObj_i.cc: In constructor `SALOME::GenericObj_i::GenericObj_i(PortableServer::POA*)':
    SALOME_GenericObj_i.cc:45: error: `_default_POA' is not a member of `PortableServer::RefCountServantBase'
    make[2]: *** [libSalomeGenericObj_la-SALOME_GenericObj_i.lo] Erreur 1
    make[2]: Leaving directory `/opt/Salome/salome3.2.2_SRC/KERNEL_SRC_3.2.2/src/GenericObj'
    make[1]: *** [all-recursive] Erreur 1
    make[1]: Leaving directory `/opt/Salome/salome3.2.2_SRC/KERNEL_SRC_3.2.2/src'
    make: *** [all-recursive] Erreur 1


    I don't understand what's going on.
    Thanks In advance for any help.
    • Re: Compilation on SuSE 10.1

      Posted by Vadim SANDLER at January 09. 2007
      Hello,

      omniORB 4.1 is not yet supported by SALOME. You need to install omniORB 4.0.5/4.0.6/4.0.7 instead.

      See also this thread:
      http://www.salome-platform.org/forum/forum_9/thread_1002

      Regards,
      Vadim.
      • Re: Compilation on SuSE 10.1

        Posted by Erwann at January 09. 2007
        Thank you Vadim,

        It works !
        • Re: Compilation on SuSE 10.1

          Posted by Erwann at January 10. 2007
          Hello,

          I have a new problem.
          KERNEL has been successfully compiled and installed  but for GUI I can't generate makefiles !
          See messages at the prompt after having fixed KERNEL_ROOT_DIR, executed ./build_configure and ./configure :

          :
          :
          ---------------------------------------------
          Summary
          ---------------------------------------------

          Configure
                     cc : yes
               lex_yacc : yes
                 python : yes
                   swig : yes
                threads : yes
                 OpenGL : yes
                     qt : yes
                 msg2qm : yes
                    vtk : no
                   hdf5 : yes
                omniORB : yes
                  boost : yes
                    occ : yes
                    sip : yes
                   pyqt : yes
                    qwt : yes
                doxygen : yes
               graphviz : yes
                 Kernel : yes
          ---Optional:
                cppunit : no

          Default ORB   : omniORB


          ---------------------------------------------
          copying resource files, shell scripts, and
          xml files
          ---------------------------------------------

          ./bin/runLightSalome.csh
          ./bin/runLightSalome.sh

          ---------------------------------------------
          generating Makefiles and configure files
          ---------------------------------------------

          ln: `/opt/Salome/salome/GUI_SRC_3.2.2/./salome_adm': cannot overwrite directory
          configure: creating ./config.status
          config.status: creating ./salome_adm/unix/SALOMEconfig.h
          config.status: error: cannot find input file: ./salome_adm/unix/SALOMEconfig.h.in

          • Re: Compilation on SuSE 10.1

            Posted by Vadim SANDLER at January 10. 2007
            Hello,

            Looking at your log I can say two things:
            1) You do not have VTK installed. You need to install VTK 4.2.6.
            2) You likely try to invoke configure script from the GUI_SRC directory. This approach is not supported by SALOME module. You have to create build directory and invoke configure script from there:
            >> mkdir GUI_BUILD
            >> cd GUI_BUILD
            >> ../GUI_SRC/build_configure
            >> ../GUI_SRC/configure []
            >> make
            >> make install

            and do not forget to set KERNEL_ROOT_DIR to the directory you have KERNEL module installed before building GUI module.

            Please read ${KERNEL_ROOT_DIR}/share/doc/salome/INSTALL.html for more details.

            Regards,
            Vadim.

            • Re: Compilation on SuSE 10.1

              Posted by Erwann at January 10. 2007
              Thanks,

              case 2) It's ok for generating makefiles when I compile in a new directory (GUI_BUILD)

              case 1) VTK was already installed, but "configure" couldn't detect it:
                         a) because of missing non shared libraries (must set BUILD_SHARED_LIBS=ON before to apply cmake)
                         b) VTK-5.0 put all header files in "/include/vtk-5.0". So, I made the link: ln -s  vtk-5.0 vtk in VTK install directory.

              ---------------------------------------------
              Summary
              ---------------------------------------------

              Configure
                         cc : yes
                   lex_yacc : yes
                     python : yes
                       swig : yes
                    threads : yes
                     OpenGL : yes
                         qt : yes
                     msg2qm : yes
                        vtk : yes
                       hdf5 : yes
                    omniORB : yes
                      boost : yes
                        occ : yes
                        sip : yes
                       pyqt : yes
                        qwt : yes
                    doxygen : yes
                   graphviz : yes
                     Kernel : yes
              ---Optional:
                    cppunit : no

              Default ORB   : omniORB

              ...but it failed after a few minutes:

              make[4]: Entering directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/SALOME_PYQT/SALOME_PYQT_GUI'
              /opt/kde3/bin/sip -t WS_X11 -t Qt_3_3_5 -x Qt_STYLE_INTERLACE -x Qt_STYLE_WINDOWSXP -s ".cc" -c . -I /opt/PyQt-3.14.1/sip/qt ../../../../GUI_SRC_3.2.2/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_GUI.sip
              sip: /opt/PyQt-3.14.1/sip/qt/versions.sip:30: Exactly one of this %Timeline must be specified with the -t flag
              make[4]: *** [sipSalomePyQtGUIcmodule.cc] Error 1
              make[4]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/SALOME_PYQT/SALOME_PYQT_GUI'
              + exit 1
              make[3]: *** [inc] Error 1
              make[3]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/SALOME_PYQT'
              + exit 1
              make[2]: *** [inc] Error 1
              make[2]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src'
              + exit 1
              make[1]: *** [inc] Error 1
              make[1]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD'
              make: *** [all] Error 2


              • Re: Compilation on SuSE 10.1

                Posted by Erwan ADAM at January 10. 2007
                Erwann wrote:
                Thanks,

                case 2) It's ok for generating makefiles when I compile in a new directory (GUI_BUILD)

                case 1) VTK was already installed, but "configure" couldn't detect it:
                           a) because of missing non shared libraries (must set BUILD_SHARED_LIBS=ON before to apply cmake)
                           b) VTK-5.0 put all header files in "/include/vtk-5.0". So, I made the link: ln -s  vtk-5.0 vtk in VTK install directory.

                ---------------------------------------------
                Summary
                ---------------------------------------------

                Configure
                           cc : yes
                     lex_yacc : yes
                       python : yes
                         swig : yes
                      threads : yes
                       OpenGL : yes
                           qt : yes
                       msg2qm : yes
                          vtk : yes
                         hdf5 : yes
                      omniORB : yes
                        boost : yes
                          occ : yes
                          sip : yes
                         pyqt : yes
                          qwt : yes
                      doxygen : yes
                     graphviz : yes
                       Kernel : yes
                ---Optional:
                      cppunit : no

                Default ORB   : omniORB

                ...but it failed after a few minutes:

                make[4]: Entering directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/SALOME_PYQT/SALOME_PYQT_GUI'
                /opt/kde3/bin/sip -t WS_X11 -t Qt_3_3_5 -x Qt_STYLE_INTERLACE -x Qt_STYLE_WINDOWSXP -s ".cc" -c . -I /opt/PyQt-3.14.1/sip/qt ../../../../GUI_SRC_3.2.2/src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_GUI.sip
                sip: /opt/PyQt-3.14.1/sip/qt/versions.sip:30: Exactly one of this %Timeline must be specified with the -t flag
                make[4]: *** [sipSalomePyQtGUIcmodule.cc] Error 1
                make[4]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/SALOME_PYQT/SALOME_PYQT_GUI'
                + exit 1
                make[3]: *** [inc] Error 1
                make[3]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/SALOME_PYQT'
                + exit 1
                make[2]: *** [inc] Error 1
                make[2]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src'
                + exit 1
                make[1]: *** [inc] Error 1
                make[1]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD'
                make: *** [all] Error 2



                It seems that you have a version of qt not declared in Makefile.in
                of src/SALOME_PYQT/SALOME_PYQT_GUI ...

                You have to add some lines :

                ifeq ($(QT_VERS),Qt_3_3_6)
                QT_VERS = Qt_3_3_0
                endif

                if your qt version is 3.3.6 ... I think that you have to do the same thing
                in GUI_SRC/src/SALOME_PYQT/SalomePyQt/Makefile.in


                PS : Even if the configure says OK for vtk, you cannot compile salome
                with vtk5. As noticed by Vadim, you should use VTK 4.2.6 but I use
                VTK 4.4.2 and it is ok too ! The compatibility with VTK 5 is currently
                on study but there are a lot of changes and I think it is difficult to
                have a compatibility of the sources VTK4 / VTK5


                Regards,

                                E.A.
                • Re: Compilation on SuSE 10.1

                  Posted by Erwann at January 11. 2007
                  Ok, I completed this in Makefile.i:
                         ifeq ($(QT_VERS),Qt_3_3_5)
                         QT_VERS = Qt_3_3_0
                         endif
                  But for VTK:
                  1) Unable to compile GUI whith VTK-4.4.2 compiled/installed/used:
                  make[3]: Entering directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/VTKViewer'
                  make[3]: *** No rule to make target `/usr/local/VTK/VTK4/include/vtk/vtkSystemIncludes.h', needed by `VTKViewer_CellLocationsArray.lo'.  Stop.
                  make[3]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/VTKViewer'
                  make[2]: *** [lib_VTKViewer] Error 2
                  make[2]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src'
                  make[1]: *** [lib_src] Error 2
                  make[1]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD'
                  make: *** [all] Error 2

                  2) Unable to compile VTK-4.2.6 !! I use gcc-3.4.5:
                  /opt/GCC/lib/gcc/i686-pc-linux-gnu/3.4.5/../../../../include/c++/3.4.5/bits/postypes.h:176: note: candidate 1: std::fpos<_StateT> std::fpos<_StateT>::operator+(std::streamoff) const [with _StateT = mbstate_t]
                  /opt/VTK-4.2.6/IO/vtkBMPReader.cxx:511: note: candidate 2: operator+(std::streamoff, long int)
                  make[2]: *** [IO/CMakeFiles/vtkIO.dir/vtkBMPReader.o] Error 1
                  make[1]: *** [IO/CMakeFiles/vtkIO.dir/all] Error 2
                  make: *** [all] Error 2

                  I don't know what to do !
                  • Re: Compilation on SuSE 10.1

                    Posted by Erwan ADAM at January 11. 2007
                    Erwann wrote:
                    Ok, I completed this in Makefile.i:
                           ifeq ($(QT_VERS),Qt_3_3_5)
                           QT_VERS = Qt_3_3_0
                           endif
                    But for VTK:
                    1) Unable to compile GUI whith VTK-4.4.2 compiled/installed/used:
                    make[3]: Entering directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/VTKViewer'
                    make[3]: *** No rule to make target `/usr/local/VTK/VTK4/include/vtk/vtkSystemIncludes.h', needed by `VTKViewer_CellLocationsArray.lo'.  Stop.
                    make[3]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/VTKViewer'
                    make[2]: *** [lib_VTKViewer] Error 2
                    make[2]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src'
                    make[1]: *** [lib_src] Error 2
                    make[1]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD'
                    make: *** [all] Error 2



                    Does /usr/local/VTK/VTK4/include/vtk/vtkSystemIncludes.h exists ?

                    If not : There is a problem with your installation of vtk ... The installation
                    directory of vtk should contain include/vtk and this file in it.

                    If yes : Are you sure that you have restarted the compilation process from
                    scratch, i.e. that you have remove the building directory before the
                    build_configure, configure and make operations ?

                    E.A.

                    • Re: Compilation on SuSE 10.1

                      Posted by Erwann at January 11. 2007
                      ADAM Erwan wrote:
                      Erwann wrote:
                      Ok, I completed this in Makefile.i:
                             ifeq ($(QT_VERS),Qt_3_3_5)
                             QT_VERS = Qt_3_3_0
                             endif
                      But for VTK:
                      1) Unable to compile GUI whith VTK-4.4.2 compiled/installed/used:
                      make[3]: Entering directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/VTKViewer'
                      make[3]: *** No rule to make target `/usr/local/VTK/VTK4/include/vtk/vtkSystemIncludes.h', needed by `VTKViewer_CellLocationsArray.lo'.  Stop.
                      make[3]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/VTKViewer'
                      make[2]: *** [lib_VTKViewer] Error 2
                      make[2]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src'
                      make[1]: *** [lib_src] Error 2
                      make[1]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD'
                      make: *** [all] Error 2



                      Does /usr/local/VTK/VTK4/include/vtk/vtkSystemIncludes.h exists ?

                      If not : There is a problem with your installation of vtk ... The installation
                      directory of vtk should contain include/vtk and this file in it.

                      If yes : Are you sure that you have restarted the compilation process from
                      scratch, i.e. that you have remove the building directory before the
                      build_configure, configure and make operations ?

                      E.A.

                      Sorry, there is a mistake in the previous message.
                      It was a mistake causes by a wrong environnement variable.
                      For VTK-4.4.2 the right error message is:

                      :
                      :
                      :
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:443: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:444: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:445: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:447: error: 'class SVTK_CubeAxesActor2D' has no member named 'XAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:448: error: 'class SVTK_CubeAxesActor2D' has no member named 'YAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:449: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:496: error: 'class SVTK_CubeAxesActor2D' has no member named 'Camera'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:497: error: 'class SVTK_CubeAxesActor2D' has no member named 'Camera'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:566: error: 'class SVTK_CubeAxesActor2D' has no member named 'GetProperty'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:618: error: 'class SVTK_CubeAxesActor2D' has no member named 'BuildTime'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:621: error: 'class SVTK_CubeAxesActor2D' has no member named 'XAxisVisibility'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:623: error: 'class SVTK_CubeAxesActor2D' has no member named 'XAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:625: error: 'class SVTK_CubeAxesActor2D' has no member named 'YAxisVisibility'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:627: error: 'class SVTK_CubeAxesActor2D' has no member named 'YAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:629: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxisVisibility'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:631: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:635: error: 'class SVTK_CubeAxesActor2D' has no member named 'XAxisVisibility'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:640: error: 'class SVTK_CubeAxesActor2D' has no member named 'YAxisVisibility'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:645: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxisVisibility'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx: At global scope:
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:657: error: prototype for `void SVTK_CubeAxesActor2D::ReleaseGraphicsResources(vtkWindow*)' does not match any in class `SVTK_CubeAxesActor2D'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.h:71: error: candidate is: void SVTK_CubeAxesActor2D::ReleaseGraphicsResources(int*)
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx: In member function `void SVTK_CubeAxesActor2D::ReleaseGraphicsResources(vtkWindow*)':
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:658: error: 'class SVTK_CubeAxesActor2D' has no member named 'XAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:659: error: 'class SVTK_CubeAxesActor2D' has no member named 'YAxis'
                      ../../../GUI_SRC_3.2.2/src/SVTK/SVTK_CubeAxesActor2D.cxx:660: error: 'class SVTK_CubeAxesActor2D' has no member named 'ZAxis'
                      make[3]: *** [SVTK_CubeAxesActor2D.lo] Error 1
                      make[3]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src/SVTK'
                      make[2]: *** [lib_SVTK] Error 2
                      make[2]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD/src'
                      make[1]: *** [lib_src] Error 2
                      make[1]: Leaving directory `/opt/Salome/salome3.2.2_SRC/GUI_BUILD'
                      make: *** [all] Error 2

                      • Re: Compilation on SuSE 10.1

                        Posted by Erwann at January 11. 2007
                        I left GUI_BUILD and did:

                        rm -rf GUI_BUILD
                        mkdir GUI_BUILD
                        cd GUI_BUILD
                        ../GUI_SRC_3.2.2/build_configure
                        ../GUI_SRC_3.2.2/configure
                        make

                        To summarize the list of sub-directories here with what occurs:

                        GUI_BUILD/src/Qtx                              make inc; make depend; make lib
                        GUI_BUILD/src/DDS                              make inc; make depend; make lib
                        GUI_BUILD/src/QDS                              make inc; make depend; make lib
                        GUI_BUILD/src/SUIT                             make inc; make depend; make lib
                        GUI_BUILD/src/STD                              make inc; make depend; make lib
                        GUI_BUILD/src/CAF                              make inc; make depend; make lib
                        GUI_BUILD/src/CAM                              make inc; make depend; make lib
                        GUI_BUILD/src/SUITApp                          make inc; make depend; make lib
                        GUI_BUILD/src/LogWindow                        make inc; make depend; make lib
                        GUI_BUILD/src/ObjBrowser                       make inc; make depend; make lib
                        GUI_BUILD/src/Prs                              make inc; make depend; make lib
                        GUI_BUILD/src/OBJECT                           make inc; make depend; make lib
                        GUI_BUILD/src/GLViewer                         make inc; make depend; make lib
                        GUI_BUILD/src/VTKViewer                        make inc; make depend; make lib
                        GUI_BUILD/src/SVTK                             make inc; make depend; make lib -> FAILED / stop !!!
                        GUI_BUILD/src/OCCViewer                        make inc; make depend
                        GUI_BUILD/src/SOCC                             make inc; make depend
                        GUI_BUILD/src/PyInterp                         make inc; make depend
                        GUI_BUILD/src/PythonConsole                    make inc; make depend
                        GUI_BUILD/src/Plot2d                           make inc; make depend
                        GUI_BUILD/src/SPlot2d                          make inc; make depend
                        GUI_BUILD/src/SUPERVGraph                      make inc; make depend
                        GUI_BUILD/src/LightApp                         make inc; make depend
                        GUI_BUILD/src/Style                            make inc; make depend
                        GUI_BUILD/src/ResExporter                      make inc; make depend
                        GUI_BUILD/src/RegistryDisplay                  make inc; make depend
                        GUI_BUILD/src/TOOLSGUI                         make inc; make depend
                        GUI_BUILD/src/Event                            make inc; make depend
                        GUI_BUILD/src/Session                          make inc; make depend
                        GUI_BUILD/src/SalomeApp                        make inc; make depend
                        GUI_BUILD/src/SALOME_SWIG                      make inc; make depend
                        GUI_BUILD/src/SALOME_PY                        make inc; make depend
                        GUI_BUILD/src/SALOME_PYQT                      make inc; make depend
                        GUI_BUILD/src/SALOME_PYQT/SALOME_PYQT_GUI      make inc; make depend
                        GUI_BUILD/src/SALOME_PYQT/SalomePyQt           make inc; make depend
Powered by Ploneboard
Document Actions