]> SALOME platform Git repositories - tools/install.git/commitdiff
Salome HOME
Fix issue 0020160:[CEA:321] (installation wizard should make the difference between...
authorakl <akl@opencascade.com>
Fri, 27 Feb 2009 13:32:30 +0000 (13:32 +0000)
committerakl <akl@opencascade.com>
Fri, 27 Feb 2009 13:32:30 +0000 (13:32 +0000)
bin/SALOME_InstallWizard
doc/readme.html
src/SALOME_InstallWizard.cxx
src/SALOME_InstallWizard.hxx
src/SALOME_XmlHandler.cxx

index e294c3017216cb17ccb0bcf653b09f1041bd1730..2ffb7810c9c90fdc5c9d6176b593190538fb6ab8 100755 (executable)
Binary files a/bin/SALOME_InstallWizard and b/bin/SALOME_InstallWizard differ
index 3f44daf8ce4f11d011c89df72eccd02e89673318..77a7f1764dff15603b4a7b5d25d24026b6e3f27f 100755 (executable)
@@ -657,7 +657,11 @@ targetdir=&lt;target_directory&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 [
 tempdir=&lt;temp_directory&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-&nbsp;&nbsp;&nbsp;&nbsp; ]</font><b><font color="#000099"><br>
+&nbsp;&nbsp;&nbsp;&nbsp; ]</font>
+<br><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[
+optionallibs=&lt;optional_libraries&gt;&nbsp;&nbsp;]</font>
+<b><font color="#000099"><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt; </font></b>
 <br>
 <font color="#000000"><b>&nbsp;&nbsp;&nbsp;
@@ -834,6 +838,12 @@ installed.</font>
 </ul>
 <font color="#000000">The temporary directory is
 the path to the directory for the temporary files.</font>
+<ul>
+  <li> <font color="#000000"><b>optionallibs</b></font></li>
+</ul>
+<font color="#000000">A list of names of libraries. 
+An absence of these libraries in the user's system 
+doesn't affect on the correct work of SALOME platform.</font>
 <h4> <b>&lt;buttons&gt; section</b></h4>
 This is an optional section and may contains one or more
 &lt;product&gt; sections.
@@ -1224,4 +1234,4 @@ configuration file is set to the "true" value.
 <hr><br>
 </font>
 </body>
-</html>
\ No newline at end of file
+</html>
index 20da19db067ba4acb06ab0d67d052ea5c380be5c..d97d52f68a1a2bd9829484f5d7a60dfb759530a2 100644 (file)
@@ -1894,7 +1894,7 @@ void SALOME_InstallWizard::checkModifyLaResult()
 // ================================================================
 /*!
  *  SALOME_InstallWizard::runCheckFLib
- *  Run the Fortran libraries checking
+ *  Run the Fortran and other required libraries checking
  */
 // ================================================================
 void SALOME_InstallWizard::runCheckFLib()
@@ -1902,7 +1902,7 @@ void SALOME_InstallWizard::runCheckFLib()
   // Check Fortran libraries
   checkFLibProc->clearArguments();
   // ... update status label
-  statusLab->setText( tr( "Check Fortran libraries..." ) );
+  statusLab->setText( tr( "Check Fortran and other required libraries..." ) );
   // ... search "not found" libraries
   checkFLibProc->setWorkingDirectory( QDir( rootDirPath() ).filePath( "config_files" ) );
   checkFLibProc->addArgument( "checkFortran.sh" );
@@ -1915,26 +1915,58 @@ void SALOME_InstallWizard::runCheckFLib()
 // ================================================================
 /*!
  *  SALOME_InstallWizard::checkFLibResult
- *  Slot to take result of Fortran libraries checking
+ *  Slot to take result of Fortran and other required libraries checking
  */
 // ================================================================
 void SALOME_InstallWizard::checkFLibResult()
 {
   if ( checkFLibProc->normalExit() && checkFLibProc->exitStatus() == 1 ) {
-    QStringList notFoundLibsList;
+    QStringList notFoundLibsList, notFoundOptLibsList;
     QString record = "";
+    QStringList prefOptLibs = getOptionalLibs();
+    // create list of strings with all 'not found' libraries
     while ( checkFLibProc->canReadLineStdout() ) {
-      record = checkFLibProc->readLineStdout();
-      if ( !record.isEmpty() && !notFoundLibsList.contains( record ) )
-       notFoundLibsList.append( record );
-    }
-    QMessageBox::warning( this,
-                         tr( "Warning" ),
-                         tr( "The following libraries are absent on current system:\n"
-                         "%1").arg( notFoundLibsList.join( "\n" ) ),
-                         QMessageBox::Ok,
-                         QMessageBox::NoButton,
-                         QMessageBox::NoButton );
+      record = checkFLibProc->readLineStdout().stripWhiteSpace();
+      if ( !record.isEmpty() ) {
+       record = QStringList::split( " ", record )[0];
+       if ( !notFoundLibsList.contains( record ) && 
+            !notFoundOptLibsList.contains( record ) ) {
+         bool isOptional = false;
+         QStringList::Iterator it_opt;
+         for ( it_opt = prefOptLibs.begin(); it_opt != prefOptLibs.end(); ++it_opt )
+           if ( record.startsWith( (*it_opt).stripWhiteSpace(), false ) ) {
+             isOptional = true;
+             break;
+           }
+         isOptional ? notFoundOptLibsList.append( record )             \
+           : notFoundLibsList.append( record );
+       }
+      }
+    }
+    QString msg = tr( "Some libraries are absent!<br><br>" );
+    if ( !notFoundLibsList.isEmpty() ) {
+      msg += tr( "One or several <b>mandatory</b> libraries listed below are not found. SALOME <u>may not work</u> properly.<br>" );
+      msg += notFoundLibsList.join( "<br>" );
+      msg += "<br><br>";
+    }
+    if ( !notFoundOptLibsList.isEmpty() ) {
+      msg += tr( "One or several <b>optional</b> libraries listed below are not found. This <u>does not affect</u> on the correct work of SALOME platform.<br>" );
+      msg += notFoundOptLibsList.join( "<br>" );
+    }
+    if ( !notFoundLibsList.isEmpty() )
+      QMessageBox::warning( this,
+                           tr( "Warning" ),
+                           msg,
+                           QMessageBox::Ok,
+                           QMessageBox::NoButton,
+                           QMessageBox::NoButton );
+    else if ( !notFoundOptLibsList.isEmpty() )
+      QMessageBox::information( this,
+                               tr( "Information" ),
+                               msg,
+                               QMessageBox::Ok,
+                               QMessageBox::NoButton,
+                               QMessageBox::NoButton );
   }
   // Update GUI and check installation errors
   completeInstallation();
index 4a42840ce50208b15cd62d8d7c06db34bbe5c905..9ada2d7f42e1e66486016da425f107a637edc670 100644 (file)
@@ -207,6 +207,8 @@ class SALOME_InstallWizard: public InstallWizard
   void setCopyright( const QString& copyright ) { myCopyright = copyright; }
   // set license
   void setLicense( const QString& license ) { myLicense = license; }
+  // set list of optional libraries
+  void setOptionalLibs( const QString& optlibs ) { myOptLibs = QStringList::split( ",", optlibs ); }
 
   // get version
   QString getVersion() { return myVersion; }
@@ -216,6 +218,8 @@ class SALOME_InstallWizard: public InstallWizard
   QString getCopyright() { return myCopyright; }
   // get license
   QString getLicense() { return myLicense; }
+  // get list of optional libraries
+  QStringList getOptionalLibs() { return myOptLibs; }
   // get platform
   QString getPlatform() { return !refPlatform.isEmpty() ? refPlatform : curPlatform; }
   // get corresponding XML file
@@ -353,6 +357,7 @@ class SALOME_InstallWizard: public InstallWizard
   QString          myLicense;      // license info
   QString          myTargetPath;   // target directory path
   QString          myTmpPath;      // temporary directory path
+  QStringList      myOptLibs;      // list of optional libraries
   
   HelpWindow*      helpWindow;     // help window
   QProcess*        shellProcess;   // shell process (install script)
index bd58546f3b199697878ace24c57d85b75258ec53..86a6e1fb093f70ad2200f22d5123b9029a067ef0 100644 (file)
@@ -144,7 +144,7 @@ void StructureParser::setTempDir( QLineEdit* dir )
 // ================================================================
 void StructureParser::getConfigInfo(const QDomElement &theElem)
 {
-  QString myVersion, myCaption, myCopyright, myLicense, myPlatforms;
+  QString myVersion, myCaption, myCopyright, myLicense, myPlatforms, myOptLibs;
     if ( theElem.attribute( "version" ) ) {
       myVersion = theElem.attribute( "version" ).stripWhiteSpace();
       if ( myWizard && !myVersion.isEmpty() ) 
@@ -178,6 +178,11 @@ void StructureParser::getConfigInfo(const QDomElement &theElem)
       if ( myTempDir )
        myTempDir->setText( substituteVars( theElem.attribute( "tempdir" ) ) );
     }
+    if ( theElem.attribute( "optionallibs" ) ) {
+      myOptLibs = theElem.attribute( "optionallibs" ).stripWhiteSpace();
+      if ( myWizard && !myOptLibs.isEmpty() ) 
+       myWizard->setOptionalLibs( myOptLibs );
+    }
 }
 // ================================================================
 /*!