My previous patch was incomplete, DRAWEXE calls tcl scripts
and they also require CASROOT being set.

Here is an updated patch to let debian/occ-casroot.patch
patch ros/src/DrawResources/DrawDefault in order to set
CASROOT="/usr/share/opencascade/6.2" in tcl scripts.
Due to CASROOT being set when run from tcl scripts, I also
had to modify ros/src/Graphic3d/Graphic3d_GraphicDevice.cxx

DRAWEXE seems to work fine with this patch, I tested some
basic commands.

Denis
Install more files under /usr/share/opencascade/6.2/

Data files in libopencascade6.2 must not be installed
under /usr/share/opencascade/ otherwise there will be
conflicts with newer libopencascadeX.Y
They are installed into /usr/share/opencascade/6.2/
Closes: 485498

Install all files defined in ros/env.ksh
Closes: 485503

OpenCascade states that CASROOT environment variable
must be set, several locations are relative to this
variable.  The debian/occ-casroot.patch file removes
this requirement by hardcoding its value in this
package.
An alternative is to let users know that they must
set CASROOT=/usr/share/opencascade/6.2 in their
environment.  In this case, all hunks from
occ-casroot.patch can be removed except
ros/src/Graphic3d/Graphic3d_GraphicDevice.cxx

diff --git a/debian/libopencascade6.2.files b/debian/libopencascade6.2.files
index f5f6a07..09b45a3 100644
--- a/debian/libopencascade6.2.files
+++ b/debian/libopencascade6.2.files
@@ -1,3 +1,10 @@
 usr/lib/*.so.*
 usr/lib/*-*.so
-usr/share/opencascade/UnitsAPI/*
+usr/share/opencascade/6.2/src/UnitsAPI/*
+usr/share/opencascade/6.2/src/FontMFT/*
+usr/share/opencascade/6.2/src/Textures/*
+usr/share/opencascade/6.2/src/StdResource/*
+usr/share/opencascade/6.2/src/XmlOcafResource/*
+usr/share/opencascade/6.2/src/SHMessage/*
+usr/share/opencascade/6.2/src/XSMessage/*
+usr/share/opencascade/6.2/src/XSTEPResource/*
diff --git a/debian/opencascade-tools.files b/debian/opencascade-tools.files
index 1df36c6..91ced4f 100644
--- a/debian/opencascade-tools.files
+++ b/debian/opencascade-tools.files
@@ -1 +1,2 @@
 usr/bin/*
+usr/share/opencascade/6.2/src/DrawResources/*
diff --git a/debian/occ-casroot.patch b/debian/occ-casroot.patch
new file mode 100644
index 0000000..7233248
--- /dev/null
+++ b/debian/occ-casroot.patch
@@ -0,0 +1,284 @@
+diff --git a/ros/src/Aspect/Aspect_Driver.cxx b/ros/src/Aspect/Aspect_Driver.cxx
+index 46597e4..97a6ea4 100644
+--- a/ros/src/Aspect/Aspect_Driver.cxx
++++ b/ros/src/Aspect/Aspect_Driver.cxx
+@@ -35,14 +35,12 @@ Aspect_Driver::Aspect_Driver () {
+   fontdir =  getenv("CSF_MDTVFontDirectory" );
+   if ( !fontdir) {
+     casroot  = getenv("CASROOT");
+-    if ( casroot ) {
+-      TCollection_AsciiString CasRootString (casroot);
+-      CasRootString += "/src/FontMFT" ; 
+-      CSF_MDTVFontDirectory = OSD_Environment(CasRootString.ToCString());
+-    } else {
+-      cout << " CASROOT or CSF_MDTVFontDirectory  are mandatory to use this fonctionnality " << endl;
+-      Standard_Failure::Raise ( "CSF_MDTVTexturesDirectory and CASROOT not setted " );
++    if ( !casroot ) {
++      casroot = "/usr/share/opencascade/6.2";
+     }
++    TCollection_AsciiString CasRootString (casroot);
++    CasRootString += "/src/FontMFT" ; 
++    CSF_MDTVFontDirectory = OSD_Environment(CasRootString.ToCString());
+   } else {
+     CSF_MDTVFontDirectory = OSD_Environment("CSF_MDTVFontDirectory");
+   }
+diff --git a/ros/src/DPrsStd/DPrsStd.cxx b/ros/src/DPrsStd/DPrsStd.cxx
+index f873779..f18cf46 100644
+--- a/ros/src/DPrsStd/DPrsStd.cxx
++++ b/ros/src/DPrsStd/DPrsStd.cxx
+@@ -59,11 +59,12 @@ static Standard_Boolean FoundCAFPlugin () {
+   Standard_Boolean hasPlugin = Standard_False; 
+   TCollection_AsciiString PluginName ;
+   if ( !plugin ) { 
+-    if ( casroot ) {
+-      PluginName = TCollection_AsciiString (casroot);
+-      PluginName+="/src/StdResource" ;
+-      hasPlugin = Standard_True ;
++    if ( !casroot ) {
++      casroot = "/usr/share/opencascade/6.2";
+     }
++    PluginName = TCollection_AsciiString (casroot);
++    PluginName+="/src/StdResource" ;
++    hasPlugin = Standard_True ;
+   } else {
+     PluginName = TCollection_AsciiString (plugin);
+     hasPlugin = Standard_True ;
+diff --git a/ros/src/Draw/Draw.cxx b/ros/src/Draw/Draw.cxx
+index 3f38ddd..1fd189f 100644
+--- a/ros/src/Draw/Draw.cxx
++++ b/ros/src/Draw/Draw.cxx
+@@ -236,8 +236,7 @@ void Draw_Appli(Standard_Integer argc, char** argv,const FDraw_InitAppli Draw_In
+ #ifdef WNT
+ 	ReadInitFile("ddefault");
+ #else
+-	cout << " the CASROOT variable is mandatory to Run OpenCascade "<<endl;
+-	cout << "No default file" << endl;
++	ReadInitFile("/usr/share/opencascade/6.2/src/DrawResources/DrawDefault");
+ #endif
+       } else {
+      
+diff --git a/ros/src/Draw/Draw_PloadCommands.cxx b/ros/src/Draw/Draw_PloadCommands.cxx
+index 7e94a9d..08b6736 100644
+--- a/ros/src/Draw/Draw_PloadCommands.cxx
++++ b/ros/src/Draw/Draw_PloadCommands.cxx
+@@ -54,13 +54,11 @@ static Standard_Boolean FindPluginFile (TCollection_AsciiString& thePluginName,
+     // now try by CASROOT
+     aPluginDir = getenv("CASROOT");
+ 
+-    if ( !aPluginDir.IsEmpty() ) {
+-      aPluginDir +="/src/DrawResources" ;
+-      aToSetCSFVariable = Standard_True; //CSF variable to be set later
+-    } else {
+-      aResult = aDirFound = Standard_False;
+-      cout << FAILSTR "Neither " << aCSFVariable.ToCString() << ", nor CASROOT variables have been set" << endl;
++    if ( aPluginDir.IsEmpty() ) {
++      aPluginDir = "/usr/share/opencascade/6.2";
+     }
++    aPluginDir +="/src/DrawResources" ;
++    aToSetCSFVariable = Standard_True; //CSF variable to be set later
+   }
+   
+   if (aDirFound) {
+diff --git a/ros/src/DrawResources/DrawDefault b/ros/src/DrawResources/DrawDefault
+index 124ed18..6fac9fd 100644
+--- a/ros/src/DrawResources/DrawDefault
++++ b/ros/src/DrawResources/DrawDefault
+@@ -8,11 +8,10 @@ set dir ""
+ if { [info exists env(DRAWHOME) ] } { 
+   set dir $env(DRAWHOME)  
+ } else {
+-    if { [info exists env(CASROOT) ] } {
+-  set dir [file join $env(CASROOT) src DrawResources]
+-    } else {
+-  puts " CASROOT is Mandatory to Run OpenCascade"
++    if { ![info exists env(CASROOT) ] } {
++      set env(CASROOT) "/usr/share/opencascade/6.2"
+     }
++  set dir [file join $env(CASROOT) src DrawResources]
+ }
+ 
+ # san - 02/08/2002 - In Tcl8.3 it is no longer necessary to load Tix explicitly on WNT
+diff --git a/ros/src/Graphic3d/Graphic3d_GraphicDevice.cxx b/ros/src/Graphic3d/Graphic3d_GraphicDevice.cxx
+index e2b7a4a..3795211 100644
+--- a/ros/src/Graphic3d/Graphic3d_GraphicDevice.cxx
++++ b/ros/src/Graphic3d/Graphic3d_GraphicDevice.cxx
+@@ -202,27 +202,8 @@ Standard_Boolean Graphic3d_GraphicDevice::ShrIsDefined (Standard_CString& aShr)
+ 
+   if (! BAD(glso)) {
+     glshr = getenv("CSF_GraphicShr");
+-  } else if (! BAD(casroot)) {
+-    glshr = (char *) malloc (128);
+-    /* Pour faire plaisir a Purify */
+-    glshr[0] = '\0';
+-    strcat(glshr, casroot);
+-    struct utsname info; 
+-    uname (&info);
+-    strcat(glshr,"/");
+-    strcat(glshr,info.sysname);   
+-#if defined(__hpux) || defined(HPUX)
+-    strcat (glshr, "/lib/libTKOpenGl.sl");
+-#elif defined(WNT)
+-    strcat (glshr, "/TKOpenGl.dll");
+-#else
+-    strcat (glshr, "/lib/libTKOpenGl.so");
+-#endif
+-//    printf("You have not defined CSF_GraphicShr, defaulting to %s",glshr);
+   } else {
+-    aShr = NULL;
+-    printf("You have not defined CSF_GraphicShr or CASROOT, aborting...");
+-    return Standard_False;
++    glshr = "/usr/lib/libTKOpenGl-6.2.so";
+   }
+  
+  aShr = glshr;
+diff --git a/ros/src/Graphic3d/Graphic3d_Texture1D.cxx b/ros/src/Graphic3d/Graphic3d_Texture1D.cxx
+index 02f67af..e4ac560 100644
+--- a/ros/src/Graphic3d/Graphic3d_Texture1D.cxx
++++ b/ros/src/Graphic3d/Graphic3d_Texture1D.cxx
+@@ -32,11 +32,12 @@ static TCollection_AsciiString GetEnvir ( ) {
+     Standard_Boolean HasDefinition = Standard_False ;
+     if ( !envir ) { 
+       casroot  = getenv("CASROOT");
+-      if ( casroot ) {
+-	VarName = TCollection_AsciiString  (casroot);
+-	VarName += "/src/Textures" ;
+-	HasDefinition = Standard_True ;
++      if ( !casroot ) {
++	casroot = "/usr/share/opencascade/6.2";
+       }
++      VarName = TCollection_AsciiString  (casroot);
++      VarName += "/src/Textures" ;
++      HasDefinition = Standard_True ;
+     } else {
+       VarName = TCollection_AsciiString  (envir);
+       HasDefinition = Standard_True ;
+diff --git a/ros/src/Graphic3d/Graphic3d_Texture2D.cxx b/ros/src/Graphic3d/Graphic3d_Texture2D.cxx
+index 61c2a1e..989c13c 100644
+--- a/ros/src/Graphic3d/Graphic3d_Texture2D.cxx
++++ b/ros/src/Graphic3d/Graphic3d_Texture2D.cxx
+@@ -28,11 +28,12 @@ static TCollection_AsciiString GetEnvir ( ) {
+     Standard_Boolean HasDefinition = Standard_False ;
+     if ( !envir ) { 
+       casroot  = getenv("CASROOT");
+-      if ( casroot ) {
+-	VarName = TCollection_AsciiString  (casroot);
+-	VarName += "/src/Textures" ;
+-	HasDefinition = Standard_True ;
++      if ( !casroot ) {
++	casroot = "/usr/share/opencascade/6.2";
+       }
++      VarName = TCollection_AsciiString  (casroot);
++      VarName += "/src/Textures" ;
++      HasDefinition = Standard_True ;
+     } else {
+       VarName = TCollection_AsciiString  (envir);
+       HasDefinition = Standard_True ;
+diff --git a/ros/src/Graphic3d/Graphic3d_TextureEnv.cxx b/ros/src/Graphic3d/Graphic3d_TextureEnv.cxx
+index 6d7a980..3890410 100644
+--- a/ros/src/Graphic3d/Graphic3d_TextureEnv.cxx
++++ b/ros/src/Graphic3d/Graphic3d_TextureEnv.cxx
+@@ -29,11 +29,12 @@ static TCollection_AsciiString GetEnvir ( ) {
+     Standard_Boolean HasDefinition = Standard_False ;
+     if ( !envir ) { 
+       casroot  = getenv("CASROOT");
+-      if ( casroot ) {
+-	VarName = TCollection_AsciiString  (casroot);
+-	VarName += "/src/Textures" ;
+-	HasDefinition = Standard_True ;
++      if ( !casroot ) {
++	casroot = "/usr/share/opencascade/6.2";
+       }
++      VarName = TCollection_AsciiString  (casroot);
++      VarName += "/src/Textures" ;
++      HasDefinition = Standard_True ;
+     } else {
+       VarName = TCollection_AsciiString  (envir);
+       HasDefinition = Standard_True ;
+diff --git a/ros/src/UnitsAPI/UnitsAPI.cxx b/ros/src/UnitsAPI/UnitsAPI.cxx
+index f802947..0877099 100644
+--- a/ros/src/UnitsAPI/UnitsAPI.cxx
++++ b/ros/src/UnitsAPI/UnitsAPI.cxx
+@@ -35,13 +35,11 @@ void UnitsAPI::CheckLoading (const UnitsAPI_SystemUnits aSystemUnits)
+     else {
+       OSD_Environment CasRootEnv("CASROOT");
+       TCollection_AsciiString CasRootString(CasRootEnv.Value());
+-      if (CasRootString.Length() > 0 )  {
+-	CasRootString += "/src/UnitsAPI/Lexi_Expr.dat" ;
+-	Units::LexiconFile(CasRootString.ToCString());
+-      }
+-      else {
+-	Standard_NoSuchObject::Raise("environment variable CSF_UnitsLexicon undefined");
++      if (CasRootString.Length() == 0 )  {
++        CasRootString = "/usr/share/opencascade/6.2";
+       }
++      CasRootString += "/src/UnitsAPI/Lexi_Expr.dat" ;
++      Units::LexiconFile(CasRootString.ToCString());
+     }
+     TCollection_AsciiString sunitsfile(env2.Value());
+     if( sunitsfile.Length() > 0 )
+@@ -49,13 +47,11 @@ void UnitsAPI::CheckLoading (const UnitsAPI_SystemUnits aSystemUnits)
+     else {
+       OSD_Environment CasRootEnv("CASROOT");
+       TCollection_AsciiString CasRootString(CasRootEnv.Value());
+-      if (CasRootString.Length() > 0 ) {
+-	CasRootString += "/src/UnitsAPI/Units.dat";
+-	Units::UnitsFile(CasRootString.ToCString());
+-      }
+-      else {
+-	Standard_NoSuchObject::Raise("environment variable CSF_UnitsDefinition undefined");
++      if (CasRootString.Length() == 0 ) {
++        CasRootString = "/usr/share/opencascade/6.2";
+       }
++      CasRootString += "/src/UnitsAPI/Units.dat";
++      Units::UnitsFile(CasRootString.ToCString());
+     }  
+     switch (aSystemUnits) {
+       case UnitsAPI_DEFAULT :
+diff --git a/ros/src/ViewerTest/ViewerTest.cxx b/ros/src/ViewerTest/ViewerTest.cxx
+index 2cc0033..af3df80 100644
+--- a/ros/src/ViewerTest/ViewerTest.cxx
++++ b/ros/src/ViewerTest/ViewerTest.cxx
+@@ -1404,11 +1404,12 @@ static TCollection_AsciiString GetEnvir (Draw_Interpretor& di) {
+     Standard_Boolean HasDefinition = Standard_False ;
+     if ( !envir ) { 
+       casroot  = getenv("CASROOT");
+-      if ( casroot ) {
+-	VarName = TCollection_AsciiString  (casroot);
+-	VarName += "/src/Textures" ;
+-	HasDefinition = Standard_True ;
++      if ( !casroot ) {
++	casroot = "/usr/share/opencascade/6.2";
+       }
++      VarName = TCollection_AsciiString  (casroot);
++      VarName += "/src/Textures" ;
++      HasDefinition = Standard_True ;
+     } else {
+       VarName = TCollection_AsciiString  (envir);
+       HasDefinition = Standard_True ;
+diff --git a/ros/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx b/ros/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx
+index 199e492..5169eef 100644
+--- a/ros/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx
++++ b/ros/src/XmlLDrivers/XmlLDrivers_DocumentStorageDriver.cxx
+@@ -182,18 +182,11 @@ Standard_Boolean XmlLDrivers_DocumentStorageDriver::WriteToDomDocument
+   if (aResourceDir.IsEmpty()) {
+     // now try by CASROOT
+     aResourceDir = getenv (aCSFVariable[1]);
+-    if ( !aResourceDir.IsEmpty() ) {
+-      aResourceDir += "/src/XmlOcafResource" ;
+-      aToSetCSFVariable = Standard_True; //CSF variable to be set later
++    if ( aResourceDir.IsEmpty() ) {
++      aResourceDir = "/usr/share/opencascade/6.2";
+     }
+-#ifdef DEB
+-    else {
+-      TCollection_ExtendedString aWarn = FAILSTR "Neither ";
+-      aWarn = (aWarn + aCSFVariable[0] + ", nor " + aCSFVariable[1]
+-               + " variables have been set");
+-      aMessageDriver->Write (aWarn.ToExtString());
+-    }
+-#endif
++    aResourceDir += "/src/XmlOcafResource" ;
++    aToSetCSFVariable = Standard_True; //CSF variable to be set later
+   }
+   if (!aResourceDir.IsEmpty()) {
+     TCollection_AsciiString aResourceFileName =  aResourceDir + "/XmlOcaf.xsd";
diff --git a/debian/rules b/debian/rules
index a045b3d..463fcbc 100755
--- a/debian/rules
+++ b/debian/rules
@@ -18,6 +18,7 @@ unpatch:
 	  patch -p1 -R < debian/occ-correct-libs.patch; \
 	  patch -p1 -R < debian/occ-lib-release.patch; \
 	  patch -p1 -R < debian/occ-doc-debian.patch; \
+	  patch -p1 -R < debian/occ-casroot.patch; \
 	  patch -p1 -R < debian/occ6.2.patch; \
 	fi
 
@@ -32,6 +33,7 @@ patch-stamp:
 	dh_testdir
 	if [ ! -e patch-stamp ]; then \
 	  patch -p1 < debian/occ6.2.patch; \
+	  patch -p1 < debian/occ-casroot.patch; \
 	  patch -p1 < debian/occ-doc-debian.patch; \
 	  patch -p1 < debian/occ-lib-release.patch; \
 	  patch -p1 < debian/occ-correct-libs.patch; \
@@ -61,8 +63,26 @@ install: build
 	cp -a ros/config.h debian/tmp/usr/inc/
 	install -d debian/tmp/usr/include
 	mv debian/tmp/usr/inc debian/tmp/usr/include/opencascade
-	install -d debian/tmp/usr/share/opencascade/UnitsAPI
-	cp -p ros/src/UnitsAPI/*.dat debian/tmp/usr/share/opencascade/UnitsAPI/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/UnitsAPI
+	cp -p ros/src/UnitsAPI/*.dat debian/tmp/usr/share/opencascade/6.2/src/UnitsAPI/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/FontMFT
+	cp -p ros/src/FontMFT/*.mft debian/tmp/usr/share/opencascade/6.2/src/FontMFT/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/Textures
+	cp -p ros/src/Textures/*.rgb debian/tmp/usr/share/opencascade/6.2/src/Textures/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/StdResource
+	cp -p ros/src/StdResource/* debian/tmp/usr/share/opencascade/6.2/src/StdResource/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/XmlOcafResource
+	cp -p ros/src/XmlOcafResource/*.xsd debian/tmp/usr/share/opencascade/6.2/src/XmlOcafResource/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/SHMessage
+	cp -p ros/src/SHMessage/SHAPE.* debian/tmp/usr/share/opencascade/6.2/src/SHMessage/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/XSMessage
+	cp -p ros/src/XSMessage/* debian/tmp/usr/share/opencascade/6.2/src/XSMessage/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/XSTEPResource
+	cp -p ros/src/XSTEPResource/* debian/tmp/usr/share/opencascade/6.2/src/XSTEPResource/
+	install -d debian/tmp/usr/share/opencascade/6.2/src/DrawResources
+	cp -p ros/src/DrawResources/*.tcl debian/tmp/usr/share/opencascade/6.2/src/DrawResources/
+	cp -p ros/src/DrawResources/Draw* debian/tmp/usr/share/opencascade/6.2/src/DrawResources/
+	find debian/tmp/usr/share/opencascade/6.2/src -name FILES -exec rm -f {} \;
 	touch $@
 
 binary-indep: install

Reply via email to