From 8adc3edbf28b34b9b54f30918ab40313d66e546d Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Fri, 5 Jan 2024 17:39:52 +0100 Subject: [PATCH] rebuilt with libhdf5 1.8.10 [release 5.3.0-5mamba;Sat Aug 03 2013] --- README.md | 4 + scilab-5.3.0-core-getmodules.patch | 403 +++++++++++++++++++++++++ scilab-5.3.0-disable-gui.patch | 11 + scilab-5.3.0-disable-hdf5.patch | 20 ++ scilab-5.3.0-disable-rpath.patch | 29 ++ scilab-5.3.0-jarnames.patch | 29 ++ scilab-5.3.0-javadefaultdir.patch | 11 + scilab-5.3.0-javasci-Scilab.patch | 10 + scilab-5.3.0-jogl-jnidir.patch | 20 ++ scilab.desktop | 12 + scilab.spec | 465 +++++++++++++++++++++++++++++ scilab_256x256x32.png | Bin 0 -> 29105 bytes 12 files changed, 1014 insertions(+) create mode 100644 scilab-5.3.0-core-getmodules.patch create mode 100644 scilab-5.3.0-disable-gui.patch create mode 100644 scilab-5.3.0-disable-hdf5.patch create mode 100644 scilab-5.3.0-disable-rpath.patch create mode 100644 scilab-5.3.0-jarnames.patch create mode 100644 scilab-5.3.0-javadefaultdir.patch create mode 100644 scilab-5.3.0-javasci-Scilab.patch create mode 100644 scilab-5.3.0-jogl-jnidir.patch create mode 100644 scilab.desktop create mode 100644 scilab.spec create mode 100644 scilab_256x256x32.png diff --git a/README.md b/README.md index b708912..57958fa 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ # scilab +Scilab is a scientific software package for numerical computations providing a powerful open computing environment for engineering and scientific applications. +Scilab includes hundreds of mathematical functions with the possibility to add interactively programs from various languages (C, Fortran...). It has sophisticated data structures (including lists, polynomials, rational functions, linear systems...), an interpreter and a high level programming language. +Scilab has been designed to be an open system where the user can define new data types and operations on these data types by using overloading. + diff --git a/scilab-5.3.0-core-getmodules.patch b/scilab-5.3.0-core-getmodules.patch new file mode 100644 index 0000000..c0ed499 --- /dev/null +++ b/scilab-5.3.0-core-getmodules.patch @@ -0,0 +1,403 @@ +--- modules/core/src/c/getmodules.c 2010-12-15 08:13:13.000000000 +0100 ++++ modules/core/src/c/getmodules_new-d613ebf3b0679abd199bb02be44cc964753783db.c 2011-02-08 14:58:38.000000000 +0100 +@@ -37,208 +37,215 @@ + /*--------------------------------------------------------------------------*/ + struct MODULESLIST *getmodules(void) + { +- if (ScilabModules==NULL) +- { +- ScilabModules=(struct MODULESLIST *)MALLOC(sizeof(struct MODULESLIST)); +- ReadModulesFile(); +- } +- return ScilabModules; ++ if (ScilabModules==NULL) ++ { ++ ScilabModules=(struct MODULESLIST *)MALLOC(sizeof(struct MODULESLIST)); ++ ReadModulesFile(); ++ } ++ return ScilabModules; + } + /*--------------------------------------------------------------------------*/ + BOOL DisposeModulesInfo(void) + { +- BOOL bOK=FALSE; +- if (ScilabModules) +- { +- int i=0; +- for (i=0;inumberofModules;i++) +- { +- if (ScilabModules->ModuleList[i]) +- { +- FREE(ScilabModules->ModuleList[i]); +- ScilabModules->ModuleList[i]=NULL; +- } +- } +- if (ScilabModules->ModuleList) +- { +- FREE(ScilabModules->ModuleList); +- ScilabModules->ModuleList=NULL; +- } +- ScilabModules->numberofModules=0; +- FREE(ScilabModules); +- ScilabModules=NULL; +- } ++ BOOL bOK=FALSE; ++ if (ScilabModules) ++ { ++ int i=0; ++ for (i=0;inumberofModules;i++) ++ { ++ if (ScilabModules->ModuleList[i]) ++ { ++ FREE(ScilabModules->ModuleList[i]); ++ ScilabModules->ModuleList[i]=NULL; ++ } ++ } ++ if (ScilabModules->ModuleList) ++ { ++ FREE(ScilabModules->ModuleList); ++ ScilabModules->ModuleList=NULL; ++ } ++ ScilabModules->numberofModules=0; ++ FREE(ScilabModules); ++ ScilabModules=NULL; ++ } + +- return bOK; ++ return bOK; + } + /*--------------------------------------------------------------------------*/ + static BOOL ReadModulesFile(void) + { +- BOOL bOK=FALSE; +- char *ModulesFilename=NULL; +- char *SciPath=NULL; +- +- SciPath=getSCIpath(); +- if (SciPath==NULL) +- { +- sciprint(_("The SCI environment variable is not set.\n")); +- return FALSE; +- } +- +- ModulesFilename=(char*)MALLOC((strlen(SciPath)+strlen("/")+strlen(basenamemodulesfile)+1)*sizeof(char)); +- sprintf(ModulesFilename,"%s/%s",SciPath,basenamemodulesfile); +- FREE(SciPath); +- SciPath=NULL; +- +- if (FileExist(ModulesFilename)) +- { +- AppendModules(ModulesFilename); +- FREE(ModulesFilename); +- ModulesFilename=NULL; +- } +- else +- { +- sciprint(_("Cannot load the module declaration file: %s.\n"),ModulesFilename); +- FREE(ModulesFilename); +- ModulesFilename=NULL; +- return FALSE; +- } +- return bOK; ++ BOOL bOK=FALSE; ++ char *ModulesFilename=NULL; ++ char *SciPath=NULL; ++ ++ SciPath=getSCIpath(); ++ if (SciPath==NULL) ++ { ++ sciprint(_("The SCI environment variable is not set.\n")); ++ return FALSE; ++ } ++ ++ ModulesFilename=(char*)MALLOC((strlen(SciPath)+strlen("/")+strlen(basenamemodulesfile)+1)*sizeof(char)); ++ sprintf(ModulesFilename,"%s/%s",SciPath,basenamemodulesfile); ++ FREE(SciPath); ++ SciPath=NULL; ++ ++ if (FileExist(ModulesFilename)) ++ { ++ AppendModules(ModulesFilename); ++ FREE(ModulesFilename); ++ ModulesFilename=NULL; ++ } ++ else ++ { ++ sciprint(_("Cannot load the module declaration file: %s.\n"),ModulesFilename); ++ FREE(ModulesFilename); ++ ModulesFilename=NULL; ++ return FALSE; ++ } ++ return bOK; + } + /*--------------------------------------------------------------------------*/ + static BOOL VerifyModule(char *ModuleName) + { +- BOOL bOK=FALSE; +- char *SciPath=NULL; +- char *FullPathModuleName=NULL; +- +- +- SciPath=getSCIpath(); +- if (SciPath==NULL) +- { +- sciprint(_("The SCI environment variable is not set.\n")); +- return FALSE; +- } +- +- FullPathModuleName=(char*)MALLOC((strlen(SciPath)+strlen("%s/modules/%s/etc/%s.start")+(strlen(ModuleName)*2)+1)*sizeof(char)); +- sprintf(FullPathModuleName,"%s/modules/%s/etc/%s.start",SciPath,ModuleName,ModuleName); +- FREE(SciPath); +- SciPath=NULL; +- +- /* ajouter d'autres tests d'existences */ +- +- if (FileExist(FullPathModuleName)) +- { +- bOK=TRUE; +- } +- FREE(FullPathModuleName); +- FullPathModuleName=NULL; ++ BOOL bOK=TRUE; ++ char *SciPath=NULL; ++ char *FullPathModuleName=NULL; ++ ++ ++ SciPath=getSCIpath(); ++ if (SciPath==NULL) ++ { ++ sciprint(_("The SCI environment variable is not set.\n")); ++ return FALSE; ++ } ++ ++ FullPathModuleName=(char*)MALLOC((strlen(SciPath)+strlen("%s/modules/%s/etc/%s.start")+(strlen(ModuleName)*2)+1)*sizeof(char)); ++ sprintf(FullPathModuleName,"%s/modules/%s/etc/%s.start",SciPath,ModuleName,ModuleName); ++ FREE(SciPath); ++ SciPath=NULL; ++ ++ /* @TODO add more checks (missing files for example) */ ++ ++ if (!FileExist(FullPathModuleName)) ++ { ++ fprintf(stderr,_("Warning: Could not find %s\n"),FullPathModuleName); ++ bOK=FALSE; ++ } ++ FREE(FullPathModuleName); ++ FullPathModuleName=NULL; + +- return bOK; ++ return bOK; + } + /*--------------------------------------------------------------------------*/ + static BOOL AppendModules(char *xmlfilename) + { +- BOOL bOK = FALSE; +- if ( FileExist(xmlfilename) ) +- { +- char *encoding = GetXmlFileEncoding(xmlfilename); +- +- /* Don't care about line return / empty line */ +- xmlKeepBlanksDefault(0); +- /* check if the XML file has been encoded with utf8 (unicode) or not */ +- if (stricmp("utf-8", encoding)==0) +- { +- xmlDocPtr doc = NULL; +- xmlXPathContextPtr xpathCtxt = NULL; +- xmlXPathObjectPtr xpathObj = NULL; +- char *name=NULL; +- int activate=0; +- +- int indice=0; +- BOOL bConvert = FALSE; +- char *shortxmlfilename = getshortpathname(xmlfilename,&bConvert); +- +- if (shortxmlfilename) +- { +- doc = xmlParseFile (shortxmlfilename); +- FREE(shortxmlfilename); +- shortxmlfilename = NULL; +- } +- +- if (doc == NULL) +- { +- printf(_("Error: Could not parse file %s.\n"), xmlfilename); +- if (encoding) {FREE(encoding);encoding=NULL;} +- return bOK; +- } +- +- xpathCtxt = xmlXPathNewContext(doc); +- xpathObj = xmlXPathEval((const xmlChar*)"//modules/module", xpathCtxt); +- +- if(xpathObj && xpathObj->nodesetval->nodeMax) +- { +- /* the Xpath has been understood and there are node */ +- int i; +- for(i = 0; i < xpathObj->nodesetval->nodeNr; i++) +- { +- +- xmlAttrPtr attrib=xpathObj->nodesetval->nodeTab[i]->properties; +- /* Get the properties of */ +- while (attrib != NULL) +- { +- /* loop until when have read all the attributes */ +- if (xmlStrEqual (attrib->name, (const xmlChar*) "name")) +- { +- /* we found the tag name */ +- const char *str=(const char*)attrib->children->content; +- name = strdup(str); +- } +- else if (xmlStrEqual (attrib->name, (const xmlChar*) "activate")) +- { +- /* we found the tag activate */ +- const char *str=(const char*)attrib->children->content; +- if (stricmp(str,"yes")==0 || strcmp(str,"1")==0) { +- activate=1; +- } +- } +- attrib = attrib->next; +- } +- +- if ( (name) && (strlen(name) > 0) && (activate) ) +- { +- if ( VerifyModule(name) ) +- { +- if (indice==0) ScilabModules->ModuleList=(char**)MALLOC(sizeof(char*)*(indice+1)); +- else ScilabModules->ModuleList=(char**)REALLOC(ScilabModules->ModuleList,sizeof(char*)*(indice+1)); +- +- ScilabModules->numberofModules=indice+1; +- +- ScilabModules->ModuleList[indice]= strdup(name); +- indice++; +- } +- else +- { +- sciprint(_("%s module not found.\n"),name); +- } +- } +- if (name) {FREE(name);name = NULL;} +- activate = 0; +- } +- bOK = TRUE; +- } +- +- if(xpathObj) xmlXPathFreeObject(xpathObj); +- if(xpathCtxt) xmlXPathFreeContext(xpathCtxt); +- xmlFreeDoc (doc); +- +- } +- else +- { +- printf(_("Error: Not a valid module file %s (encoding not '%s') Encoding '%s' found.\n"), xmlfilename, "utf-8", encoding); +- } +- if (encoding) {FREE(encoding);encoding=NULL;} +- } +- return bOK; ++ BOOL bOK = FALSE; ++ if ( FileExist(xmlfilename) ) ++ { ++ char *encoding = GetXmlFileEncoding(xmlfilename); ++ ++ /* Don't care about line return / empty line */ ++ xmlKeepBlanksDefault(0); ++ /* check if the XML file has been encoded with utf8 (unicode) or not */ ++ if (stricmp("utf-8", encoding)==0) ++ { ++ xmlDocPtr doc = NULL; ++ xmlXPathContextPtr xpathCtxt = NULL; ++ xmlXPathObjectPtr xpathObj = NULL; ++ char *name=NULL; ++ int activate=0; ++ ++ int indice=0; ++ BOOL bConvert = FALSE; ++ char *shortxmlfilename = getshortpathname(xmlfilename,&bConvert); ++ ++ if (shortxmlfilename) ++ { ++ doc = xmlParseFile (shortxmlfilename); ++ FREE(shortxmlfilename); ++ shortxmlfilename = NULL; ++ } ++ ++ if (doc == NULL) ++ { ++ printf(_("Error: Could not parse file %s.\n"), xmlfilename); ++ if (encoding) {FREE(encoding);encoding=NULL;} ++ return bOK; ++ } ++ ++ xpathCtxt = xmlXPathNewContext(doc); ++ xpathObj = xmlXPathEval((const xmlChar*)"//modules/module", xpathCtxt); ++ ++ if(xpathObj && xpathObj->nodesetval->nodeMax) ++ { ++ /* the Xpath has been understood and there are node */ ++ int i; ++ for(i = 0; i < xpathObj->nodesetval->nodeNr; i++) ++ { ++ ++ xmlAttrPtr attrib=xpathObj->nodesetval->nodeTab[i]->properties; ++ /* Get the properties of */ ++ while (attrib != NULL) ++ { ++ /* loop until when have read all the attributes */ ++ if (xmlStrEqual (attrib->name, (const xmlChar*) "name")) ++ { ++ /* we found the tag name */ ++ const char *str=(const char*)attrib->children->content; ++ name = strdup(str); ++ } ++ else if (xmlStrEqual (attrib->name, (const xmlChar*) "activate")) ++ { ++ /* we found the tag activate */ ++ const char *str=(const char*)attrib->children->content; ++ if (stricmp(str,"yes")==0 || strcmp(str,"1")==0) { ++ activate=1; ++ } ++ } ++ attrib = attrib->next; ++ } ++ ++ if ( (name) && (strlen(name) > 0) && (activate) ) ++ { ++ if ( VerifyModule(name) ) ++ { ++ if (indice==0) ++ { ++ ScilabModules->ModuleList=(char**)MALLOC(sizeof(char*)*(indice+1)); ++ } ++ else ++ { ++ ScilabModules->ModuleList=(char**)REALLOC(ScilabModules->ModuleList,sizeof(char*)*(indice+1)); ++ } ++ ++ ScilabModules->numberofModules=indice+1; ++ ++ ScilabModules->ModuleList[indice]= strdup(name); ++ indice++; ++ } ++ else ++ { ++ sciprint(_("%s module not found.\n"),name); ++ } ++ } ++ if (name) {FREE(name);name = NULL;} ++ activate = 0; ++ } ++ bOK = TRUE; ++ } ++ ++ if(xpathObj) xmlXPathFreeObject(xpathObj); ++ if(xpathCtxt) xmlXPathFreeContext(xpathCtxt); ++ xmlFreeDoc (doc); ++ ++ } ++ else ++ { ++ printf(_("Error: Not a valid module file %s (encoding not '%s') Encoding '%s' found.\n"), xmlfilename, "utf-8", encoding); ++ } ++ if (encoding) {FREE(encoding);encoding=NULL;} ++ } ++ return bOK; + } + /*--------------------------------------------------------------------------*/ diff --git a/scilab-5.3.0-disable-gui.patch b/scilab-5.3.0-disable-gui.patch new file mode 100644 index 0000000..56b7b35 --- /dev/null +++ b/scilab-5.3.0-disable-gui.patch @@ -0,0 +1,11 @@ +--- configure.ac 2011-02-08 09:03:22.000000000 +0100 ++++ configure.ac-gil 2011-02-08 09:07:03.000000000 +0100 +@@ -170,6 +170,8 @@ + ##################################################### + PKG_PROG_PKG_CONFIG + ++with_gui="no" ++ + ##################################################### + ## check if options are correct (or not) + ##################################################### diff --git a/scilab-5.3.0-disable-hdf5.patch b/scilab-5.3.0-disable-hdf5.patch new file mode 100644 index 0000000..1fa59cf --- /dev/null +++ b/scilab-5.3.0-disable-hdf5.patch @@ -0,0 +1,20 @@ +--- configure.ac 2011-02-05 11:40:17.000000000 +0100 ++++ configure.ac-gil 2011-02-05 11:41:06.000000000 +0100 +@@ -655,11 +655,12 @@ + + HDF5_ENABLE=no + +-if test "$with_hdf5" != no; then +- AC_HDF5() +-# TODO: check if the JNI JHDF5 library are available +- HDF5_ENABLE=yes +-fi ++with_hdf5=no ++#if test "$with_hdf5" != no; then ++# AC_HDF5() ++## TODO: check if the JNI JHDF5 library are available ++# HDF5_ENABLE=yes ++#fi + + AC_SUBST(HDF5_ENABLE) + AM_CONDITIONAL(HDF5, test "$with_hdf5" != no) diff --git a/scilab-5.3.0-disable-rpath.patch b/scilab-5.3.0-disable-rpath.patch new file mode 100644 index 0000000..8820135 --- /dev/null +++ b/scilab-5.3.0-disable-rpath.patch @@ -0,0 +1,29 @@ +--- configure.ac 2010-12-15 08:13:09.000000000 +0100 ++++ configure.ac-gil 2011-02-05 11:36:52.000000000 +0100 +@@ -1786,16 +1786,16 @@ + # http://directory.fsf.org/project/chrpath/ + # to remove it before the make install + +-#case ${host} in +-# *-pc-linux-gnu) +-# AC_MSG_RESULT([Fixing libtool for -rpath problems.]) +-# sed < libtool > libtool-2 \ +-# 's/^hardcode_libdir_flag_spec.*$/hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/' +-# mv libtool-2 libtool +-# chmod 755 libtool +-# ;; +-#esac +-# ++case ${host} in ++ *-pc-linux-gnu) ++ AC_MSG_RESULT([Fixing libtool for -rpath problems.]) ++ sed < libtool > libtool-2 \ ++ 's/^hardcode_libdir_flag_spec.*$/hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/' ++ mv libtool-2 libtool ++ chmod 755 libtool ++ ;; ++esac ++ + + echo "" + diff --git a/scilab-5.3.0-jarnames.patch b/scilab-5.3.0-jarnames.patch new file mode 100644 index 0000000..795be37 --- /dev/null +++ b/scilab-5.3.0-jarnames.patch @@ -0,0 +1,29 @@ +--- configure.ac 2011-02-05 12:09:09.000000000 +0100 ++++ configure.ac-gil 2011-02-05 12:10:20.000000000 +0100 +@@ -839,7 +839,7 @@ + AC_SUBST(XMLGRAPHICS_COMMONS) + + # Avalon Framework (PDF) +- AC_JAVA_CHECK_PACKAGE([avalon-framework],[org.apache.avalon.framework.configuration.ConfigurationException],[Common framework for Java server application]) ++ AC_JAVA_CHECK_PACKAGE([excalibur/avalon-framework],[org.apache.avalon.framework.configuration.ConfigurationException],[Common framework for Java server application]) + AVALON_FRAMEWORK=$PACKAGE_JAR_FILE + AC_SUBST(AVALON_FRAMEWORK) + +@@ -889,7 +889,7 @@ + AC_SUBST(ANTLR) + + # Test NG (java unitary test) +- AC_JAVA_CHECK_PACKAGE([testng],[org.testng.TestNG],[TestNG - Unit tests],"yes") ++ AC_JAVA_CHECK_PACKAGE([testng-jdk15],[org.testng.TestNG],[TestNG - Unit tests],"yes") + TESTNG=$PACKAGE_JAR_FILE + AC_SUBST(TESTNG) + +@@ -899,7 +899,7 @@ + AC_SUBST(QDOX) + + # bsh (Java scripting environment) - dependency of TestNG +- AC_JAVA_CHECK_PACKAGE([bsh],[bsh.Console],[Java scripting environment],"yes") ++ AC_JAVA_CHECK_PACKAGE([bsh2/bsh],[bsh.Console],[Java scripting environment],"yes") + BSH=$PACKAGE_JAR_FILE + AC_SUBST(BSH) + diff --git a/scilab-5.3.0-javadefaultdir.patch b/scilab-5.3.0-javadefaultdir.patch new file mode 100644 index 0000000..1a57323 --- /dev/null +++ b/scilab-5.3.0-javadefaultdir.patch @@ -0,0 +1,11 @@ +--- m4/java.m4 2010-12-15 08:13:10.000000000 +0100 ++++ m4/java.m4-gil 2011-02-05 11:33:03.000000000 +0100 +@@ -832,7 +832,7 @@ + PACKAGE_JAR_FILE= + found_jar=no + saved_ac_java_classpath=$ac_java_classpath +- DEFAULT_JAR_DIR="/usr/share/java/ /usr/lib/java/ /usr/share/java /usr/share/java/jar /opt/java/lib /usr/local/java /usr/local/java/jar /usr/local/share/java /usr/local/share/java/jar /usr/local/lib/java $(ls -d /usr/share/java/*/ 2>/dev/null) $(ls -d /usr/lib64/*/ 2>/dev/null) $(ls -d /usr/lib/*/ 2>/dev/null) $(ls -d /usr/share/*/lib/ 2>/dev/null)" ++ DEFAULT_JAR_DIR="/usr/share/java/ /usr/lib/java/ /usr/share/java /usr/share/java/jar /opt/java/lib /usr/local/java /usr/local/java/jar /usr/local/share/java /usr/local/share/java/jar /usr/local/lib/java /usr/lib/jni $(ls -d /usr/share/java/*/ 2>/dev/null) $(ls -d /usr/lib64/*/ 2>/dev/null) $(ls -d /usr/lib/*/ 2>/dev/null) $(ls -d /usr/share/*/lib/ 2>/dev/null)" + for jardir in "`pwd`/thirdparty" "`pwd`/jar" $DEFAULT_JAR_DIR "$_user_libdir"; do + for jar in "$jardir/$1.jar" "$jardir/lib$1.jar" "$jardir/lib$1-java.jar" "$jardir/$1*.jar"; do + # jar=`echo $jar|sed -e 's/ /\\ /'` diff --git a/scilab-5.3.0-javasci-Scilab.patch b/scilab-5.3.0-javasci-Scilab.patch new file mode 100644 index 0000000..53697b1 --- /dev/null +++ b/scilab-5.3.0-javasci-Scilab.patch @@ -0,0 +1,10 @@ +--- modules/javasci/src/java/javasci/Scilab.java 2010-12-15 08:13:26.000000000 +0100 ++++ modules/javasci/src/java/javasci/Scilab.java-gil 2011-02-08 18:07:03.000000000 +0100 +@@ -110,6 +110,7 @@ + static + { + try { ++ System.setProperty("java.library.path", System.getProperty("java.library.path") + ":/usr/lib/java/"); + System.loadLibrary("javasci"); + Scilab.Initialize(); + } catch (SecurityException e) { diff --git a/scilab-5.3.0-jogl-jnidir.patch b/scilab-5.3.0-jogl-jnidir.patch new file mode 100644 index 0000000..71cda49 --- /dev/null +++ b/scilab-5.3.0-jogl-jnidir.patch @@ -0,0 +1,20 @@ +--- configure.ac 2011-02-08 09:17:35.000000000 +0100 ++++ configure.ac-gil 2011-02-08 09:17:51.000000000 +0100 +@@ -747,7 +747,7 @@ + else + LDFLAGS_save=$LDFLAGS + # Provide known paths where distribs/OS can store JNI libs +- LDFLAGS="-L/usr/lib/jni -L/usr/lib64/jni/ -L$SCI_SRCDIR/thirdparty/ -L$SCI_SRCDIR/bin/" ++ LDFLAGS="-L/usr/lib/java -L/usr/lib64/java/ -L$SCI_SRCDIR/thirdparty/ -L$SCI_SRCDIR/bin/" + AC_CHECK_LIB([jogl], [glTexParameterf], [JOGL_LIBS="-ljogl"],[AC_MSG_WARN([Could not link against -ljogl. Will try against -ljogl -lGL])]) + if test -z "$JOGL_LIBS"; then # The previous test failed add more options to the LDFLAGS + # the space after "jogl" in the following line is on +@@ -775,7 +775,7 @@ + else + LDFLAGS_save=$LDFLAGS + # Provide known paths where distribs/OS can store JNI libs +- LDFLAGS="-L/usr/lib/jni -L/usr/lib64/jni/ -ldl -L$SCI_SRCDIR/thirdparty/ -L$SCI_SRCDIR/bin/" ++ LDFLAGS="-L/usr/lib/java -L/usr/lib64/java/ -ldl -L$SCI_SRCDIR/thirdparty/ -L$SCI_SRCDIR/bin/" + symbol="Java_com_sun_gluegen_runtime_UnixDynamicLinkerImpl_dlclose__J" + AC_CHECK_LIB([gluegen-rt], [$symbol], [GLUEGEN_RT_LIBS="-lgluegen-rt"], + [AC_MSG_ERROR([libgluegen-rt: Library missing (Cannot find symbol glTexParameterf). Check if libgluegen-rt - C/Java (JNI) interface for GLUEGEN - is installed and if the version is correct. Note that you might have to update etc/librarypath.xml to provide the actual path the the JNI libraries.])], diff --git a/scilab.desktop b/scilab.desktop new file mode 100644 index 0000000..c4552f9 --- /dev/null +++ b/scilab.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Scilab +GenericName=Scilab: Scientific Software Package +Comment=High-level language for numerical computations +TryExec=scilab +Exec=scilab +Icon=scilab +StartupNotify=false +Terminal=false +Type=Application +Categories=Education;Science;Math; \ No newline at end of file diff --git a/scilab.spec b/scilab.spec new file mode 100644 index 0000000..0ea00df --- /dev/null +++ b/scilab.spec @@ -0,0 +1,465 @@ +%define javahome %{_jvmdir}/jdk +%define with_hdf5 1 +%define with_giws 1 +%define with_swig 1 +%define with_gui 1 +Name: scilab +Version: 5.3.0 +Release: 5mamba +Summary: A scientific software package for numerical computations +Group: Graphical Desktop/Applications/Scientific +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://www.scilab.org/ +Source0: http://www.scilab.org/download/%{version}/scilab-%{version}-src.tar.gz +Source1: scilab.desktop +Source2: scilab_256x256x32.png +Patch0: scilab-5.3.0-javadefaultdir.patch +Patch1: scilab-5.3.0-disable-rpath.patch +# disable hdf5, as we do not have jhdf5 +Patch2: scilab-5.3.0-disable-hdf5.patch +Patch3: scilab-5.3.0-jarnames.patch + +# disable the GUI. require jogl/gluegen == 1.1.1 +Patch5: scilab-5.3.0-disable-gui.patch + +Patch6: scilab-5.3.0-jogl-jnidir.patch + +Patch7: scilab-5.3.0-core-getmodules.patch +# from debian http://patch-tracker.debian.org/patch/series/view/scilab/5.3.0-beta-4-2 +Patch8: scilab-5.3.0-javasci-Scilab.patch + +License: CeCILL, GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: gcc-fortran +BuildRequires: glibc-devel +BuildRequires: libatlas-devel +BuildRequires: libblas-devel +BuildRequires: libfftw-devel +BuildRequires: libgcc +BuildRequires: libgomp-devel +BuildRequires: libhdf5-devel +BuildRequires: liblzma-devel +BuildRequires: libmatio-devel +BuildRequires: libncurses-devel +BuildRequires: libpcre-devel +BuildRequires: libquadmath-devel +BuildRequires: libstdc++6-devel +BuildRequires: libsuitesparse-devel +BuildRequires: libtcl-devel +BuildRequires: libtk-devel +BuildRequires: libxml2-devel +BuildRequires: libz-devel +BuildRequires: pvm +## AUTOBUILDREQ-END +BuildRequires: desktop-file-utils +BuildRequires: ImageMagick +# java stuff +BuildRequires: antlr +BuildRequires: apache-ant +BuildRequires: apache-batik +BuildRequires: apache-fop == 0.95 +BuildRequires: jakarta-commons-beanutils == 1.7.0 +BuildRequires: jakarta-commons-io == 1.4 +BuildRequires: jakarta-commons-logging == 1.1.1 +BuildRequires: java-bsh2 +BuildRequires: java-checkstyle +BuildRequires: java-excalibur-avalon-framework +BuildRequires: java-flexdock +BuildRequires: java-graphx +BuildRequires: java-jeuclid +BuildRequires: java-jlatexmath +BuildRequires: java-junit3 +BuildRequires: java-openjdk +BuildRequires: java-qdox +BuildRequires: java-rosetta +BuildRequires: java-saxon6 +BuildRequires: java-skinlf +BuildRequires: java-testng +BuildRequires: javahelp2 +BuildRequires: jgoodies-looks +BuildRequires: xml-commons-apis +BuildRequires: jpackage-utils +BuildRequires: xmlgraphics-commons == 1.3.1 +%if %with_gui +BuildRequires: java-gluegen1 == 1.1.1 +BuildRequires: java-jogl1 == 1.1.1 +%endif +%if %with_hdf5 +BuildRequires: java-hdf5 +BuildRequires: libhdf5-devel +%endif +BuildRequires: libmpi-devel +BuildRequires: libsablotron-devel +BuildRequires: libXaw3d-devel +BuildRequires: ocaml +BuildRequires: perl-devel + +Requires: docbook-dtds-5-schemas +Requires: antlr +Requires: apache-batik +Requires: apache-fop == 0.95 +Requires: jakarta-commons-beanutils == 1.7.0 +Requires: jakarta-commons-io == 1.4 +Requires: jakarta-commons-logging == 1.1.1 +Requires: java-bsh2 +Requires: java-checkstyle +Requires: java-excalibur-avalon-framework +Requires: java-flexdock +Requires: java-graphx +Requires: java-jeuclid +%if %with_hdf5 +Requires: java-hdf5 +%endif +%if %with_gui +Requires: java-gluegen1 == 1.1.1 +Requires: java-jogl1 == 1.1.1 +%endif +%if %with_swig +BuildRequires: swig +%endif +%if %with_giws +BuildRequires: giws +%endif +BuildRequires: libsuitesparse-devel +Requires: java-jlatexmath +Requires: java-junit3 +Requires: java-openjdk +Requires: java-qdox +Requires: java-rosetta +Requires: java-saxon6 +Requires: java-skinlf +Requires: java-testng +Requires: javahelp2 +Requires: jgoodies-looks +Requires: libatlas +Requires: ocaml +Requires: xml-commons-apis +#Requires: ElectricFence +#Requires: kdbg +#Requires: libtool +#Requires: valgrind +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +Scilab is a scientific software package for numerical computations providing a powerful open computing environment for engineering and scientific applications. +Scilab includes hundreds of mathematical functions with the possibility to add interactively programs from various languages (C, Fortran...). It has sophisticated data structures (including lists, polynomials, rational functions, linear systems...), an interpreter and a high level programming language. +Scilab has been designed to be an open system where the user can define new data types and operations on these data types by using overloading. + +%package devel +Group: Development/Libraries +Summary: Development files for Scilab +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description devel +Scilab - A scientific software package for numerical computations. + +This package contains development files for with Scilab. + +%prep +%setup -q +#-D -T +#:<< _EOF + +%patch0 -p0 +%patch1 -p0 +%if ! %with_hdf5 +%patch2 -p0 +%endif +%patch3 -p0 +%if ! %with_gui +%patch5 -p0 +%else +%patch6 -p0 +%endif +%patch7 -p0 +%patch8 -p0 + +sed -i "s|%{_libdir}/jni|%{_jnidir}|" etc/librarypath.xml + +for j in $(find . -name "*.jar"); do + mv $j $j.no +done + +for c in $(find . -name "*.class"); do + rm -rf $c +done + +for o in $(find . -name "*.so"); do + rm -rf $o +done + +for e in $(find . -name "*.exe"); do + rm -rf $e +done + +for d in $(find . -name "*.dll"); do + rm -rf $d +done + +%build +#:<< _EOF +autoreconf +%if %with_hdf5 +export JHDF5=%{_jnidir}/jhdf5.jar JHDF5_LIBS=%{_jnidir} +%endif +%if %with_gui +export JOGL=%{_javadir}/jogl.jar GLUEGEN_RT=%{_javadir}/gluegen-rt.jar +%endif +# build without -rpath +SCILAB_LIB_RPATH=$PWD/libs/blas/.libs:$PWD/libs/doublylinkedlist/.libs:$PWD/libs/dynamiclibrary/.libs:$PWD/libs/hashtable/.libs:$PWD/libs/lapack/.libs:$PWD/libs/libst/.libs:$PWD/libs/MALLOC/.libs:$PWD/modules/action_binding/.libs:$PWD/modules/api_scilab/.libs:$PWD/modules/arnoldi/.libs:$PWD/modules/boolean/.libs:$PWD/modules/cacsd/.libs:$PWD/modules/call_scilab/.libs:$PWD/modules/commons/.libs:$PWD/modules/completion/.libs:$PWD/modules/console/.libs:$PWD/modules/core/.libs:$PWD/modules/data_structures/.libs:$PWD/modules/differential_equations/.libs:$PWD/modules/double/.libs:$PWD/modules/dynamic_link/.libs:$PWD/modules/elementary_functions/.libs:$PWD/modules/fftw/.libs:$PWD/modules/fileio/.libs:$PWD/modules/functions/.libs:$PWD/modules/graph/.libs:$PWD/modules/graphic_export/.libs:$PWD/modules/graphics/.libs:$PWD/modules/gui/.libs:$PWD/modules/helptools/.libs:$PWD/modules/history_browser/.libs:$PWD/modules/history_manager/.libs:$PWD/modules/integer/.libs:$PWD/modules/interpolation/.libs:$PWD/modules/intersci/.libs:$PWD/modules/io/.libs:$PWD/modules/javasci/.libs:$PWD/modules/jvm/.libs:$PWD/modules/.libs:$PWD/modules/linear_algebra/.libs:$PWD/modules/localization/.libs:$PWD/modules/matio/.libs:$PWD/modules/mexlib/.libs:$PWD/modules/optimization/.libs:$PWD/modules/output_stream/.libs:$PWD/modules/parallel/.libs:$PWD/modules/parameters/.libs:$PWD/modules/polynomials/.libs:$PWD/modules/pvm/.libs:$PWD/modules/randlib/.libs:$PWD/modules/renderer/.libs:$PWD/modules/scicos_blocks/.libs:$PWD/modules/scicos/.libs:$PWD/modules/scinotes/.libs:$PWD/modules/shell/.libs:$PWD/modules/signal_processing/.libs:$PWD/modules/sound/.libs:$PWD/modules/sparse/.libs:$PWD/modules/special_functions/.libs:$PWD/modules/spreadsheet/.libs:$PWD/modules/statistics/.libs:$PWD/modules/string/.libs:$PWD/modules/symbolic/.libs:$PWD/modules/tclsci/.libs:$PWD/modules/time/.libs:$PWD/modules/types/.libs:$PWD/modules/ui_data/.libs:$PWD/modules/umfpack/.libs:$PWD/modules/windows_tools/.libs:file:$PWD/modules/xcos/.libs: +%if %with_hdf5 +SCILAB_LIB_RPATH=$SCILAB_LIB_RPATH:$PWD/modules/hdf5/.libs: +%endif + +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SCILAB_LIB_RPATH +%configure \ + --with-jdk=%javahome \ + --with-ant=$ANT_HOME \ + LDFLAGS="-L/usr/lib/atlas -lgfortran" \ +%if %with_giws + --enable-build-giws \ +%endif +%if %with_swig + --enable-build-swig \ +%endif + --enable-build-help \ + --with-fftw \ + --with-matio \ + --with-pvm \ + --disable-static \ + --enable-shared \ +%if ! %with_gui + --without-gui\ +%endif + --without-scicos \ +%if ! %with_hdf5 + --without-hdf5 +%endif + +%make all + +# --without-scicos Disable Scicos http://www.scicoslab.org/ + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +make install DESTDIR=%{buildroot} + +rm -rf %{buildroot}%{_libdir}/scilab/*.la + +chmod 755 %{buildroot}%{_datadir}/scilab/modules/helptools/bin/manrev2sci +chmod 755 %{buildroot}%{_datadir}/scilab/modules/helptools/bin/man2sci +chmod 755 %{buildroot}%{_datadir}/scilab/modules/helptools/bin/scivalid + +mkdir -p %{buildroot}%{_datadir}/applications +desktop-file-install --mode=644 --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} + +for png in 16 22 24 32 48 64 128; do + mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${png}x${png}/apps/ + convert -resize ${png}x${png} %{SOURCE2} \ + %{buildroot}%{_datadir}/icons/hicolor/${png}x${png}/apps/scilab.png +done + +mkdir -p %{buildroot}%{_datadir}/pixmaps +convert -resize 32x32 %{SOURCE2} \ + %{buildroot}%{_datadir}/pixmaps/scilab.png + +rm -rf %{buildroot}%{_datadir}/.directory +rm -rf %{buildroot}%{_datadir}/scilab/.directory + +%find_lang scilab + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%post +/sbin/ldconfig +touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + +%postun +/sbin/ldconfig +if [ $1 -eq 0 ] ; then + touch --no-create %{_datadir}/icons/hicolor &>/dev/null + gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +fi + +%posttrans +gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + +%files -f scilab.lang +%defattr(-,root,root) +%{_bindir}/intersci +%{_bindir}/scilab +%{_bindir}/scilab-adv-cli +%{_bindir}/scilab-bin +%{_bindir}/scilab-cli +%{_bindir}/scilab-cli-bin +%dir %{_libdir}/scilab +%{_libdir}/scilab/libjavasci.so.* +%{_libdir}/scilab/libjavasci2.so.* +%{_libdir}/scilab/libmat.so.* +%{_libdir}/scilab/libmex.so.* +%{_libdir}/scilab/libmx.so.* +%{_libdir}/scilab/libsci*.so.* +%{_libdir}/scilab/*.so +%dir %{_datadir}/scilab +%{_datadir}/scilab/ACKNOWLEDGEMENTS +%{_datadir}/scilab/CHANGES_* +%{_datadir}/scilab/COPYING* +%{_datadir}/scilab/README_* +%{_datadir}/scilab/RELEASE_NOTES_* +%{_datadir}/scilab/Readme_Visual.txt +%{_datadir}/scilab/contrib +%{_datadir}/scilab/etc +%{_datadir}/scilab/icons +%{_datadir}/scilab/tools +%dir %{_datadir}/scilab/modules +%{_datadir}/scilab/modules/action_binding +%{_datadir}/scilab/modules/api_scilab +%{_datadir}/scilab/modules/arnoldi +%{_datadir}/scilab/modules/atoms +%{_datadir}/scilab/modules/boolean +%{_datadir}/scilab/modules/cacsd +%{_datadir}/scilab/modules/call_scilab +%dir %{_datadir}/scilab/modules/commons +%{_datadir}/scilab/modules/commons/*.txt +%{_datadir}/scilab/modules/commons/version.xml +%{_datadir}/scilab/modules/commons/etc +%{_datadir}/scilab/modules/commons/jar +%{_datadir}/scilab/modules/commons/macros +#%dir %{_datadir}/scilab/modules/commons/sci_gateway +%{_datadir}/scilab/modules/compatibility_functions +%{_datadir}/scilab/modules/completion +%{_datadir}/scilab/modules/console +%{_datadir}/scilab/modules/core +%{_datadir}/scilab/modules/data_structures +%{_datadir}/scilab/modules/demo_tools +%{_datadir}/scilab/modules/development_tools +%{_datadir}/scilab/modules/differential_equations +%{_datadir}/scilab/modules/double +%dir %{_datadir}/scilab/modules/doublylinkedlist +%dir %{_datadir}/scilab/modules/doublylinkedlist/macros +%{_datadir}/scilab/modules/dynamic_link +%dir %{_datadir}/scilab/modules/dynamiclibrary +%dir %{_datadir}/scilab/modules/dynamiclibrary/macros +%{_datadir}/scilab/modules/elementary_functions +%{_datadir}/scilab/modules/fftw +%{_datadir}/scilab/modules/fileio +%{_datadir}/scilab/modules/functions +%{_datadir}/scilab/modules/genetic_algorithms +%dir %{_datadir}/scilab/modules/graph +%{_datadir}/scilab/modules/graph/*.txt +%{_datadir}/scilab/modules/graph/version.xml +%{_datadir}/scilab/modules/graph/etc +%{_datadir}/scilab/modules/graph/jar +%{_datadir}/scilab/modules/graph/macros +%{_datadir}/scilab/modules/graph/tests +#%dir %{_datadir}/scilab/modules/graph/sci_gateway +%{_datadir}/scilab/modules/graphic_export +%{_datadir}/scilab/modules/graphics +%{_datadir}/scilab/modules/gui +%dir %{_datadir}/scilab/modules/hashtable +%dir %{_datadir}/scilab/modules/hashtable/macros +%{_datadir}/scilab/modules/hdf5 +%{_datadir}/scilab/modules/helptools +%dir %{_datadir}/scilab/modules/history_browser +%{_datadir}/scilab/modules/history_browser/*.txt +%{_datadir}/scilab/modules/history_browser/*.xml +%{_datadir}/scilab/modules/history_browser/etc +%{_datadir}/scilab/modules/history_browser/jar +%{_datadir}/scilab/modules/history_browser/macros +%{_datadir}/scilab/modules/history_browser/tests +#%dir %{_datadir}/scilab/modules/history_browser/sci_gateway +%{_datadir}/scilab/modules/history_manager +%{_datadir}/scilab/modules/integer +%{_datadir}/scilab/modules/interpolation +%{_datadir}/scilab/modules/intersci +%{_datadir}/scilab/modules/io +%{_datadir}/scilab/modules/javasci +%{_datadir}/scilab/modules/jvm +%dir %{_datadir}/scilab/modules/libst +%dir %{_datadir}/scilab/modules/libst/macros +%{_datadir}/scilab/modules/linear_algebra +%{_datadir}/scilab/modules/localization +%{_datadir}/scilab/modules/m2sci +%dir %{_datadir}/scilab/modules/malloc +%dir %{_datadir}/scilab/modules/malloc/macros +%{_datadir}/scilab/modules/maple2scilab +%{_datadir}/scilab/modules/matio +%{_datadir}/scilab/modules/mexlib +%{_datadir}/scilab/modules/modules_manager +%{_datadir}/scilab/modules/optimization +%{_datadir}/scilab/modules/output_stream +%{_datadir}/scilab/modules/overloading +%{_datadir}/scilab/modules/parallel +%{_datadir}/scilab/modules/parameters +%{_datadir}/scilab/modules/polynomials +%{_datadir}/scilab/modules/pvm +%{_datadir}/scilab/modules/randlib +%{_datadir}/scilab/modules/renderer +%{_datadir}/scilab/modules/scicos +%{_datadir}/scilab/modules/scinotes +%{_datadir}/scilab/modules/shell +%{_datadir}/scilab/modules/signal_processing +%{_datadir}/scilab/modules/simulated_annealing +%{_datadir}/scilab/modules/sound +%{_datadir}/scilab/modules/sparse +%{_datadir}/scilab/modules/special_functions +%{_datadir}/scilab/modules/spreadsheet +%{_datadir}/scilab/modules/statistics +%{_datadir}/scilab/modules/string +%{_datadir}/scilab/modules/symbolic +%{_datadir}/scilab/modules/tclsci +%{_datadir}/scilab/modules/texmacs +%{_datadir}/scilab/modules/time +%dir %{_datadir}/scilab/modules/types +%{_datadir}/scilab/modules/types/*.txt +%{_datadir}/scilab/modules/types/*.xml +%{_datadir}/scilab/modules/types/etc +%{_datadir}/scilab/modules/types/jar +%{_datadir}/scilab/modules/types/macros +#%dir %{_datadir}/scilab/modules/types/sci_gateway +%{_datadir}/scilab/modules/types/tests +%{_datadir}/scilab/modules/ui_data +%{_datadir}/scilab/modules/umfpack +%{_datadir}/scilab/modules/windows_tools +%{_datadir}/scilab/modules/xcos +%{_datadir}/applications/scilab.desktop +%{_datadir}/icons/hicolor/*x*/apps/scilab.png +%{_datadir}/pixmaps/scilab.png +%doc license.txt + +%files devel +%defattr(-,root,root) +%dir %{_includedir}/scilab +%{_includedir}/scilab/*.h +%{_exec_prefix}/lib/pkgconfig/scilab.pc + +%changelog +* Sat Aug 03 2013 Silvan Calarco 5.3.0-5mamba +- rebuilt with libhdf5 1.8.10 + +* Tue Mar 06 2012 Silvan Calarco 5.3.0-4mamba +- rebuilt with libsuitesparse + +* Tue Feb 08 2011 gil 5.3.0-3mamba +- add getmodules.patch + +* Tue Feb 08 2011 gil 5.3.0-2mamba +- edit configure options add libatlas support + +* Fri Feb 04 2011 gil 5.3.0-1mamba +- update to 5.3.0 + +* Wed Jul 30 2008 gil 4.1.2-1mamba +- update to 4.1.2 + +* Wed Jul 13 2005 Silvan Calarco 3.1.1-3qilnx +- added automatic creation of user configuration for rtai patch + +* Wed Jul 13 2005 Silvan Calarco 3.1.1-2qilnx +- added RTAI patch + +* Mon Jul 11 2005 Silvan Calarco 3.1.1-1qilnx +- package created by autospec \ No newline at end of file diff --git a/scilab_256x256x32.png b/scilab_256x256x32.png new file mode 100644 index 0000000000000000000000000000000000000000..ae46a87917c8aa0bb5648d4bf4eb222f24d0b08b GIT binary patch literal 29105 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

o`>6ZwUc4})xUc{}S z|MJQ;?BqG%Onu`3A;t#84YX?O3FZ8}jB4yTvDHv>IAkYRj!7sMqP#rgDtmXnwZDz& zPbovB4e+I|JaQIw)e!Nu1yWC9@EO4{${D7Wba-rL-g%xTsHj zyZ?q?ZpoQ`)o}0)Dy9A-zd#GAfbuCNlPXbI3PlMM@&kHX_Q6nz_e597)bItFB{}Ap z+aHgi*HS%C5if$mEr-gB+^nAnl-3RNjUcM{2P=fkTA(WC&UQ4Sf$b{T}S?vM!5iJm?d9SDUzr zGO8XrSLlr+(}#u8nKa&Mpwd`KRqty9X$<2Nmq;?Y$En`w%;dHzBtAPDCJ$qf{?-A= zzu8v)Hw(vptKahe-wK>)L!wS%NRHb9O zef!jHQ3`e%ayM|1A&kr6C^>W~DAf5c_Q|JIG_~@N#%xCI_1aNhx6OQCi=U~OR;5_l zD#{HAu*wLs1)W}3^H~gWy}XIK#7{g*r{6%|W=w%7GcuDYmiQ5zxm8G@?r!b8{~PR} zVNA*G<_Ei`SMaU9d$maF8Rql+-W3e(;GvC(>P()bg1J%q63R0$QV@N3Z#+AkQ!CtC z`AKV4t?SQ^<3CjEOxyZa(*WHc#}N$4z10MVECA!!$vl<00JPlzI`b1J`P>C||It_< z%%N4oA0xbfH<2#srsMkyM~?2y9pkBXRcrJUQKdzOc$OYorYBwmIUfw8%EI3OR34#8 z#Dj5@pCfsO_Gk@6qCcW~m)D6@d{vJl#6bE42IjNS{OQ0EtK|DRZt~S74^>35B_-p+ z?iJ~u8U%3azKgFhbR|lG-&zw=PNQzdna125N0C$OXA{LTU4Bmaby)%wa#sA|CZI(K ztVjX7@}Y9zOnCAEHBcPB1uXE_V_-7$lR+Aa=d!QWO-&Tz4?Z=$gt}jI_F-W^5s`QM zDd%L~w_}@)QqNz3s!}st8GG(>PsXB@4Ve-XylbRb&<$wr_~>md_{#y_omdkz?j(r` ze4eQR*Bwhd;(r2xOTAVm|AzEQ7&tFtHx+wcFxJ;2Hhk(xzdS^)9OWEW=6QOcs5 z=2Q%BakKjQGAvJ#OCD#7I2Pz@5H^a=k4)73-Z(3JC&W@UP5>p;9)gm8ICRD3P1vAW zg%XEP5L~vrmb#%Ud;6W3pX@zgOz_>O{UOTArJOgmbWwo!yq^1+7S)>V?)#YfRE&Th zvDq`0n%Hz=U|WqSz&&OARZH!MH5y3{Tc#+0q1A%OtrER0X%v8br&h;Md()rF0R!b* zejIA>hL2%{@rFe;N~pC=HYVgtLMI_c7VZ~Dz}mVaIC}&G{v3yLqH^|oB+pFirA+o zB8)6b_D8!(C>8!tqMAfVKIKPGD}(i)c)Ypr0X~LZ0C`A$7NC@rAJF?8>u@>`4U$Ka z9+z23$%L``{@}@;&T*r<@^%Qx|CWFJPZ^q$JG3e>-JRlu_$6ao0C2nD`}_5+Fvv{W z$J_H!-;~_OCoZL_ZXyhrTn=h*`NiYT%LGzL4=`M1G2~u+)rfQ#10@a(#An1bw^eq0 ztM9h+5{uZ6K1OT%NfoyB(^5JfGDH3Gc4kaTaeDPxn`O-b6J-+BO1=4Q`hCR){_rye z3X*i@$6J)Ol7aou@24$iM)V*}jPw$0S>MG|Ar8GnCQt(&b!jovi>I#h`rTU)hCLur z>@4N?j&)WYy*$0GRm*XJ*=KdZd18!J)Un%LH$K(>9fW~`6au0D|J}^6-qT?cN5#BP UU|mLhiV>hFr}n-|#x(T*0mlRkT>t<8 literal 0 HcmV?d00001