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