Hi Adam,

Sorry for the lack of news, I was focus on making VISU work.  I have
succeeded to build a Salome package however the current result is
unfortunately split from our development line. That's why I will first
explain my steps and then ask your advice on the merge as I saw that
serious reorganizations are also pending.

My goal is to provide a functional Salome package for mechanical
engineering even if incomplete. As a consequence the necessary modules
are for me KERNEL, GUI, GEOM, MED, SMESH and VISU. As VISU was failing
in the build process of debian/rules, I decided to build it by hand by
exporting the necessary environment variables. In that case I only had
to modify the gui-build-in-tree.patch (attached to the mail) for making
the libVISU linking work by adding the path to libToolsGUI.
However, back to the complete debian/rules process, the compilation
was still failing in the VISU CONVERTER library because of an absent
template symbol (probably the same problem described in your mail on
the 25th of January). So I needed to investigate the configure and 
build steps of debian/rules but those steps take lot of time. For 
easing my researchs, I decided to work on a package building
only the necessary modules which I called salome-core. The working
snapshot is available here:
http://www.python-science.org/files/salome-core.tar.gz
and I have attached the resulting debian/rules which configure
every module separately. I could not find the problem in the 
previous loop configuration.

>From there two questions arise. First, I like the debian/rules file
of salome-core but I remember that you were against such solution for
maintenance reasons. Would you like me to adapt it as a loop or did you
finally change your mind? From now it seems anyway that VISU needs to be
configured separately. Second, could the current salome-core package be
a starting point for the reorganizations that we discussed previously?
For me it has the main advantage to build only the necessary modules,
thus saving time for every run of Salome packaging. However it will 
require to write several packages (salome-advance and salome-dev). 
By comparing to the opencascade package, I understand that the whole
building should be made in a row and the subpackages splitted by 
several *.install files.

...
> > > > -          self.CMD=['SALOME_ContainerPy.py','FactoryServerPy']
        +          self.CMD=['SALOME_Container','FactoryServerPy']
(I have adapted the patch to the current version.)
...
> I just took care of this, the result is in the alioth git repository.
Thank you for the update. Even if the current version work, I would
prefer to rename 'SALOME_ContainerPy.py' to 'SALOME_ContainerPy' because
'/usr/bin/SALOME_Container' already exists and is finally overwritten in
the install step of debian/rules.

Even if several points still need to be discussed or adapted, the
good point is that we know now how to build a Salome package with the
essential modules. Once again, thank you very much for all your efforts.
I am going to track the remaining bugs at runtime (some menu do not show
up in SMESH, the results can not be seen in VISU).

All the best,

André

Changes needed to build all modules before installing them.

diff --git a/GUI_SRC_5.1.3/adm_local/unix/config_files/check_GUI.m4 b/GUI_SRC_5.1.3/adm_local/unix/config_files/check_GUI.m4
index ec07762..73d2eb9 100755
--- a/GUI_SRC_5.1.3/adm_local/unix/config_files/check_GUI.m4
+++ b/GUI_SRC_5.1.3/adm_local/unix/config_files/check_GUI.m4
@@ -59,19 +59,27 @@ if test -f ${SALOME_GUI_DIR}/bin/salome/$1 ; then
   SalomeGUI_ok=yes
   AC_MSG_RESULT(Using SALOME GUI distribution in ${SALOME_GUI_DIR})
 
+  GUI_LDFLAGS=-L${SALOME_GUI_DIR}/lib${LIB_LOCATION_SUFFIX}/salome
+  GUI_CXXFLAGS=-I${SALOME_GUI_DIR}/include/salome
+elif test -f ${SALOME_GUI_DIR}/src/$3/$1.cxx ; then
+  SalomeGUI_ok=yes
+  AC_MSG_RESULT(Using SALOME GUI source directory in ${SALOME_GUI_DIR})
+
+  GUI_LDFLAGS="-L${SALOME_GUI_DIR}/src/SUIT -L${SALOME_GUI_DIR}/src/Qtx -L${SALOME_GUI_DIR}/src/VTKViewer -L${SALOME_GUI_DIR}/src/SVTK -L${SALOME_GUI_DIR}/src/OBJECT -L${SALOME_GUI_DIR}/src/SalomeApp -L${SALOME_GUI_DIR}/src/Session -L${SALOME_GUI_DIR}/src/LightApp -L${SALOME_GUI_DIR}/src/OCCViewer -L${SALOME_GUI_DIR}/src/CAM -L${SALOME_GUI_DIR}/src/SOCC -L${SALOME_GUI_DIR}/src/Event -L${SALOME_GUI_DIR}/src/Prs -L${SALOME_GUI_DIR}/src/STD -L${SALOME_GUI_DIR}/src/PyConsole -L${SALOME_GUI_DIR}/src/SPlot2d -L${SALOME_GUI_DIR}/src/Plot2d -L${SALOME_GUI_DIR}/src/ObjBrowser -L${SALOME_GUI_DIR}/src/PyInterp -L${SALOME_GUI_DIR}/src/LogWindow -L${SALOME_GUI_DIR}/src/GLViewer -L${SALOME_GUI_DIR}/src/SUPERVGraph -L${SALOME_GUI_DIR}/src/SUITApp -L${SALOME_GUI_DIR}/src/QxScene -L${SALOME_GUI_DIR}/src/TOOLSGUI"
+  GUI_CXXFLAGS="-I${SALOME_GUI_DIR}/src/SVTK -I${SALOME_GUI_DIR}/src/OBJECT -I${SALOME_GUI_DIR}/src/VTKViewer -I${SALOME_GUI_DIR}/src/SUIT -I${SALOME_GUI_DIR}/src/Qtx -I${SALOME_GUI_DIR}/src/SalomeApp -I${SALOME_GUI_DIR}/src/LightApp -I${SALOME_GUI_DIR}/src/CAM -I${SALOME_GUI_DIR}/src/STD -I${SALOME_GUI_DIR}/src/OCCViewer -I${SALOME_GUI_DIR}/src/Prs -I${SALOME_GUI_DIR}/src/SOCC -I${SALOME_GUI_DIR}/src/ObjBrowser -I${SALOME_GUI_DIR}/src/Event -I${SALOME_GUI_DIR}/src/PyConsole -I${SALOME_GUI_DIR}/src/SPlot2d -I${SALOME_GUI_DIR}/src/Plot2d -I${SALOME_GUI_DIR}/src/GLViewer -I${SALOME_GUI_DIR}/src/QxScene"
+else
+  AC_MSG_WARN("Cannot find compiled SALOME GUI distribution")
+fi
+
+if test "x${SalomeGUI_ok}" == "xyes" ; then
   if test "x${GUI_ROOT_DIR}" == "x" ; then
     GUI_ROOT_DIR=${SALOME_GUI_DIR}
   fi
 
   AC_SUBST(GUI_ROOT_DIR)
 
-  GUI_LDFLAGS=-L${SALOME_GUI_DIR}/lib${LIB_LOCATION_SUFFIX}/salome
-  GUI_CXXFLAGS=-I${SALOME_GUI_DIR}/include/salome
-
   AC_SUBST(GUI_LDFLAGS)
   AC_SUBST(GUI_CXXFLAGS)
-else
-  AC_MSG_WARN("Cannot find compiled SALOME GUI distribution")
 fi
   
 AC_MSG_RESULT(for $2: ${SalomeGUI_ok})
@@ -80,5 +88,6 @@ AC_MSG_RESULT(for $2: ${SalomeGUI_ok})
 
 AC_DEFUN([CHECK_SALOME_GUI],[
   CHECK_GUI([SUITApp],
-            [SALOME GUI])
+            [SALOME GUI],
+            [SUITApp],)
 ])dnl
diff --git a/GUI_SRC_5.1.3/adm_local/unix/config_files/check_corba_in_GUI.m4 b/GUI_SRC_5.1.3/adm_local/unix/config_files/check_corba_in_GUI.m4
index cfa4a04..6bbf7b8 100755
--- a/GUI_SRC_5.1.3/adm_local/unix/config_files/check_corba_in_GUI.m4
+++ b/GUI_SRC_5.1.3/adm_local/unix/config_files/check_corba_in_GUI.m4
@@ -26,7 +26,8 @@ dnl
 
 AC_DEFUN([CHECK_CORBA_IN_GUI],[
   CHECK_GUI([SALOME_Session_Server],
-            [CORBA SALOME GUI])
+            [CORBA SALOME GUI],
+            [Session])
   CORBA_IN_GUI=${SalomeGUI_ok}
   AC_SUBST(CORBA_IN_GUI)
 ])dnl
diff --git a/GUI_SRC_5.1.3/idl/Makefile.am b/GUI_SRC_5.1.3/idl/Makefile.am
index c234fd0..3986923 100755
--- a/GUI_SRC_5.1.3/idl/Makefile.am
+++ b/GUI_SRC_5.1.3/idl/Makefile.am
@@ -49,9 +49,9 @@ libSalomeIDLGUI_la_LIBADD  = @CORBA_LIBS@
 # These variables defines the building process of CORBA files
 OMNIORB_IDL         = @OMNIORB_IDL@
 OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
-OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/idl/salome -I$(KERNEL_ROOT_DIR)/idl/salome 
-IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/idl/salome -I$(KERNEL_ROOT_DIR)/idl/salome
-IDLPYFLAGS  = @IDLPYFLAGS@ -I$(KERNEL_ROOT_DIR)/idl/salome
+OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/idl -I$(KERNEL_ROOT_DIR)/idl -I$(KERNEL_ROOT_DIR)/idl/salome
+IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/idl -I$(KERNEL_ROOT_DIR)/idl -I$(KERNEL_ROOT_DIR)/idl/salome
+IDLPYFLAGS  = @IDLPYFLAGS@ -I$(KERNEL_ROOT_DIR)/idl -I$(KERNEL_ROOT_DIR)/idl/salome
 
 # potential problem on parallel make on the following - multiple outputs
 SUFFIXES = .idl .hh SK.cc
@@ -82,7 +82,7 @@ mostlyclean-local:
 	@for dep in $^ dummy; do \
 	  if [ $$dep != "dummy" ]; then \
 	    echo Building dependencies for $$dep; \
-	    $(CPP) $(C_DEPEND_FLAG) -x c -I$(srcdir) -I$(KERNEL_ROOT_DIR)/idl/salome $$dep 2>/dev/null | \
+	    $(CPP) $(C_DEPEND_FLAG) -x c -I$(srcdir) -I$(KERNEL_ROOT_DIR)/idl -I$(KERNEL_ROOT_DIR)/idl/salome $$dep 2>/dev/null | \
 	    sed 's/\.o/\SK.cc/' >>$@; \
 	  fi; \
 	done ;
#!/usr/bin/make -f
# Made with the aid of debmake, by Christoph Lameter,
# based on the sample debian/rules file for GNU hello by Ian Jackson.

package=salome-core
SALOME_VERSION=5.1.3
VTK_VERSION=5.4

# Support multiple makes at once
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NJOBS := $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
NJOBS := 1
endif

SALOME_CORE_MODULES = KERNEL_SRC_$(SALOME_VERSION) \
  GUI_SRC_$(SALOME_VERSION) \
  GEOM_SRC_$(SALOME_VERSION) \
  MED_SRC_$(SALOME_VERSION) \
  SMESH_SRC_$(SALOME_VERSION) \
  VISU_SRC_$(SALOME_VERSION)

clean:
        dh_testdir
        dh_clean

configure-stamp:
        dh_testdir
        # KERNEL
        rm -f KERNEL_SRC_$(SALOME_VERSION)/bin/runSalome
        rm -f KERNEL_SRC_$(SALOME_VERSION)/bin/appliskel/env.d/envProducts.sh
        cp -fp debian/runSalome.in debian/killSalome.in \
               KERNEL_SRC_$(SALOME_VERSION)/bin/
        cp -fp debian/envProducts.sh.in \
               KERNEL_SRC_$(SALOME_VERSION)/bin/appliskel/env.d/
        (cd KERNEL_SRC_$(SALOME_VERSION) && \
        ./build_configure && \
        ./configure --prefix=/usr \
        --with-mpi=/usr --with-mpi_include=/usr/include/mpi);
        # GUI
        (cd GUI_SRC_$(SALOME_VERSION) && \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        ./build_configure && \
        ./configure --prefix=/usr \
        --with-mpi=/usr --with-mpi_include=/usr/include/mpi \
        VTKSUFFIX="-$(VTK_VERSION)" CASROOT=/usr \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION));
        # GEOM
        (cd GEOM_SRC_$(SALOME_VERSION) && \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION) \
        ./build_configure && \
        ./configure --prefix=/usr \
        --with-mpi=/usr --with-mpi_include=/usr/include/mpi \
        VTKSUFFIX="-$(VTK_VERSION)" CASROOT=/usr \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION));
        # MED
        (cd MED_SRC_$(SALOME_VERSION) && \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION) \
        ./build_configure && \
        ./configure --prefix=/usr \
        --with-mpi=/usr --with-mpi_include=/usr/include/mpi \
        VTKSUFFIX="-$(VTK_VERSION)" CASROOT=/usr \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION));
        # SMESH
        (cd SMESH_SRC_$(SALOME_VERSION) && \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION) \
        GEOM_ROOT_DIR=$(CURDIR)/GEOM_SRC_$(SALOME_VERSION) \
        MED_ROOT_DIR=$(CURDIR)/MED_SRC_$(SALOME_VERSION) \
        ./build_configure && \
        ./configure --prefix=/usr \
        --with-mpi=/usr --with-mpi_include=/usr/include/mpi \
        VTKSUFFIX="-$(VTK_VERSION)" CASROOT=/usr \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION) \
        GEOM_ROOT_DIR=$(CURDIR)/GEOM_SRC_$(SALOME_VERSION) \
        MED_ROOT_DIR=$(CURDIR)/MED_SRC_$(SALOME_VERSION));
        # VISU
        (cd VISU_SRC_$(SALOME_VERSION) && \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION) \
        MED_ROOT_DIR=$(CURDIR)/MED_SRC_$(SALOME_VERSION) \
        ./build_configure && \
        ./configure --prefix=/usr \
        --with-mpi=/usr --with-mpi_include=/usr/include/mpi \
        VTKSUFFIX="-$(VTK_VERSION)" CASROOT=/usr \
        KERNEL_ROOT_DIR=$(CURDIR)/KERNEL_SRC_$(SALOME_VERSION) \
        GUI_ROOT_DIR=$(CURDIR)/GUI_SRC_$(SALOME_VERSION) \
        MED_ROOT_DIR=$(CURDIR)/MED_SRC_$(SALOME_VERSION));
        touch $@

build: build-arch build-indep
build-arch: build-arch-stamp
build-arch-stamp: configure-stamp
        for salomodule in $(SALOME_CORE_MODULES); do \
          echo; echo COMPILING SALOME MODULE $$salomodule; echo; \
          $(MAKE) -C $$salomodule -j $(NJOBS) \
          bindir=/usr/bin libdir=/usr/lib docdir=/usr/share/doc/salome-doc;\
        done
        touch $@

build-indep: build-indep-stamp
build-indep-stamp: configure-stamp
        touch $@

install: build install-stamp

install-arch: build-arch install-stamp

install-indep: install-indep-stamp

# Later maybe make this run make install only in the doc directories, so it
# doesn't try to build everything else
install-indep-stamp: build-indep install-stamp
        touch $@

# This installs everything, so it's not really install-arch-stamp
install-stamp:
        dh_testdir
#       Add XDATA to list below when its clean target actually works
        for salomodule in $(SALOME_CORE_MODULES); do \
          echo; echo INSTALLING SALOME MODULE $$salomodule; echo; \
          $(MAKE) -C $$salomodule install DESTDIR=$(CURDIR)/debian/tmp \
          bindir=/usr/bin libdir=/usr/lib docdir=/usr/share/doc/salome-doc;\
        done
        mv debian/tmp/usr/idl debian/tmp/usr/share/
        install -d debian/tmp/usr/share/aclocal
        mv debian/tmp/usr/salome_adm/unix/config_files/check_Kernel.m4 \
           debian/tmp/usr/share/aclocal/salome.m4
        for m4file in check_GUI.m4 \
                      check_GEOM.m4 \
                      check_Med.m4 \
                      check_SMESH.m4; do \
          cat debian/tmp/usr/adm_local/unix/config_files/$$m4file >> \
              debian/tmp/usr/share/aclocal/salome.m4; \
        done
#       Temporary kludge until there's a more permanent way to install this
        cp KERNEL_SRC_$(SALOME_VERSION)/bin/killSalome debian/tmp/usr/bin/
        chmod +x debian/tmp/usr/bin/killSalome
        install -d debian/tmp/usr/share/applications
        rm -f debian/tmp/usr/bin/appliskel/env.d/*.in \
              debian/tmp/usr/bin/appliskel/env.d/*.obs
        mv debian/tmp/usr/lib/SalomePyQt.so debian/tmp/usr/lib/SalomePyQt.so.0
        ln -s SalomePyQt.so.0 debian/tmp/usr/lib/SalomePyQt.so
        rm -rf debian/tmp/usr/lib64
        rm -rf debian/tmp/usr/doc
        rm -rf debian/tmp/usr/bin/appliskel
        rm -f debian/tmp/usr/bin/*.pyo \
              debian/tmp/usr/bin/*.pyc \
              debian/tmp/usr/bin/*.csh \
              debian/tmp/usr/bin/*.ksh \
              debian/tmp/usr/bin/*.bat
        for shscript in `ls debian/tmp/usr/bin/*.sh`; do \
          shbase=`basename $$shscript .sh`; \
          mv debian/tmp/usr/bin/$$shbase.sh debian/tmp/usr/bin/$$shbase; \
        done
        mv debian/tmp/usr/bin/*.xml debian/tmp/usr/bin/VERSION \
          debian/tmp/usr/share/salome/
        mv debian/tmp/usr/bin/SALOME_ContainerPy.py \
           debian/tmp/usr/bin/SALOME_ContainerPy
        mv debian/tmp/usr/bin/*.py 
debian/tmp/usr/lib/python2.5/*-packages/salome/
        chmod -x debian/tmp/usr/lib/python2.5/*-packages/salome/*
        install -d debian/python2.5-salome/usr/bin
        for pyscript in avs2med med2sauv salomeloader sauv2med 
SALOME_Container; do \
          mv debian/tmp/usr/bin/$$pyscript debian/python2.5-salome/usr/bin/; \
        done
        (cd debian/tmp/usr/share/salome && \
          chmod -x resources/*/*.xml)
        install -d debian/salome-examples/usr/share/salome/examples
        touch install-indep-stamp
        touch $@

binary-indep: install-indep
        dh_testdir -i
        dh_testroot -i
        dh_installdirs -i
        dh_movefiles -i
        dh_installdocs -i
        dh_installchangelogs -i
        dh_compress -i
        dh_fixperms -i
        dh_installdeb -i
        dh_gencontrol -i
        dh_md5sums -i
        dh_builddeb -i

binary-arch: install-arch
        dh_testdir -a
        dh_testroot -a
        dh_installdirs -a
        dh_movefiles -a
        dh_installdocs -a
        dh_installchangelogs -a
        dh_installmenu -a
        dh_strip -a
        dh_makeshlibs -a
        dh_compress -a
        dh_fixperms -a
        dh_installdeb -a
        dh_shlibdeps -a
        dh_gencontrol -a
        dh_md5sums -a
        dh_builddeb -a

binary: binary-arch binary-indep

.PHONY: binary binary-arch binary-indep clean install install-arch 
install-indep build build-arch build-indep

Reply via email to