diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e8faff7d..f82483134 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,7 +180,10 @@ jobs: VER: '3.0' CPPSTD: c++11 - SWIGLANG: scilab - os: ubuntu-18.04 # scilab-6.1 in ubuntu-20.04 not yet working + VER: '5.5.2' + - SWIGLANG: scilab + os: ubuntu-18.04 # scilab 6.0 + - SWIGLANG: scilab - SWIGLANG: tcl # c++11 testing - SWIGLANG: csharp @@ -213,7 +216,9 @@ jobs: CPPSTD: c++11 - SWIGLANG: scilab CPPSTD: c++11 - os: ubuntu-18.04 # scilab-6.1 in ubuntu-20.04 not yet working + os: ubuntu-18.04 # scilab 6.0 + - SWIGLANG: scilab + CPPSTD: c++11 - SWIGLANG: tcl CPPSTD: c++11 # c++14 testing @@ -249,7 +254,9 @@ jobs: CPPSTD: c++14 - SWIGLANG: scilab CPPSTD: c++14 - os: ubuntu-18.04 # scilab-6.1 in ubuntu-20.04 not yet working + os: ubuntu-18.04 # scilab 6.0 + - SWIGLANG: scilab + CPPSTD: c++14 - SWIGLANG: tcl CPPSTD: c++14 # c++17 testing (using gcc11) @@ -298,7 +305,6 @@ jobs: - SWIGLANG: scilab CPPSTD: c++17 GCC: 11 - os: ubuntu-18.04 # scilab-6.1 in ubuntu-20.04 not yet working - SWIGLANG: tcl CPPSTD: c++17 GCC: 11 diff --git a/Examples/Makefile.in b/Examples/Makefile.in index eeb7a25a5..67db611b7 100644 --- a/Examples/Makefile.in +++ b/Examples/Makefile.in @@ -1357,6 +1357,7 @@ r_clean: SCILAB = @SCILAB@ SCILAB_INC= @SCILABINCLUDE@ SCILAB_OPT = @SCILABOPT@ +SCILAB_VERSION = @SCILAB_VERSION@ SCILAB_LIBPREFIX = lib # ---------------------------------------------------------------- @@ -1389,7 +1390,7 @@ scilab_run: # ----------------------------------------------------------------- scilab_version: - echo `$(SCILAB) -version | head -1` + echo `$(SCILAB) -nwni -version | head -1` # ----------------------------------------------------------------- # Cleaning the scilab examples diff --git a/Tools/CI-linux-install.sh b/Tools/CI-linux-install.sh index 99614550c..ff194c719 100644 --- a/Tools/CI-linux-install.sh +++ b/Tools/CI-linux-install.sh @@ -137,11 +137,14 @@ case "$SWIGLANG" in fi ;; "scilab") - # Travis has the wrong version of Java pre-installed resulting in error using scilab: - # /usr/bin/scilab-bin: error while loading shared libraries: libjava.so: cannot open shared object file: No such file or directory - echo "JAVA_HOME was set to $JAVA_HOME" - unset JAVA_HOME - $RETRY sudo apt-get -qq install scilab + if [[ -z "$VER" ]]; then + $RETRY sudo apt-get -qq install scilab scilab-include + else + $RETRY wget --progress=dot:giga "https://www.scilab.org/download/$VER/scilab-$VER.bin.linux-x86_64.tar.gz" + # $HOME/.local/bin is in PATH and writeable + mkdir -p "$HOME/.local" + tar -xzf "scilab-$VER.bin.linux-x86_64.tar.gz" --strip-components=1 -C "$HOME/.local" + fi ;; "tcl") $RETRY sudo apt-get -qq install tcl-dev diff --git a/configure.ac b/configure.ac index 5a9cea5ef..641b16aa2 100644 --- a/configure.ac +++ b/configure.ac @@ -1218,7 +1218,7 @@ if test x"${SCILABBIN}" = xno; then else # Check for Scilab executable if test "x$SCILABBIN" = xyes; then - AC_CHECK_PROGS(SCILAB, scilab) + AC_PATH_PROG(SCILAB, scilab) else AC_MSG_CHECKING(for scilab) if test -f "$SCILABBIN"; then @@ -1231,18 +1231,18 @@ else if test -n "$SCILAB"; then # Check for Scilab version (needs api_scilab so needs version 5.3.3 or higher) - SCILAB_FULL_VERSION=`$SCILAB -version | head -1 | sed -e 's|Scilab version \"\(.*\)\"|\1|g'` + SCILAB_VERSION=`$SCILAB -nwni -version | head -1 | sed -e 's|Scilab version \"\(.*\)\"|\1|g'` AC_MSG_CHECKING(Scilab version is 5.3.3 or higher) - SCILAB_MAJOR_VERSION=`echo $SCILAB_FULL_VERSION | cut -d. -f1` - SCILAB_MINOR_VERSION=`echo $SCILAB_FULL_VERSION | cut -d. -f2` - SCILAB_MAINTENANCE_VERSION=`echo $SCILAB_FULL_VERSION | cut -d. -f3` - SCILAB_VERSION="$SCILAB_MAJOR_VERSION$SCILAB_MINOR_VERSION$SCILAB_MAINTENANCE_VERSION" + SCILAB_MAJOR_VERSION=`echo $SCILAB_VERSION | cut -d. -f1` + SCILAB_MINOR_VERSION=`echo $SCILAB_VERSION | cut -d. -f2` + SCILAB_MAINTENANCE_VERSION=`echo $SCILAB_VERSION | cut -d. -f3` + SCILAB_VERSION_NO_DOTS="$SCILAB_MAJOR_VERSION$SCILAB_MINOR_VERSION$SCILAB_MAINTENANCE_VERSION" - if test $SCILAB_VERSION -ge 533; then - AC_MSG_RESULT(yes) + if test -n "$SCILAB_VERSION_NO_DOTS" && test "$SCILAB_VERSION_NO_DOTS" -ge 533; then + AC_MSG_RESULT(yes - $SCILAB_VERSION) else - AC_MSG_RESULT(no) + AC_MSG_RESULT(no - $SCILAB_VERSION) SCILAB= fi @@ -1250,22 +1250,27 @@ else # Set Scilab startup options depending on version AC_MSG_CHECKING(for Scilab startup options) SCILABOPT="-nwni -nb" - if test $SCILAB_VERSION -ge 540; then + if test $SCILAB_VERSION_NO_DOTS -ge 540; then SCILABOPT+=" -noatomsautoload" fi - if test $SCILAB_VERSION -ge 600; then + if test $SCILAB_VERSION_NO_DOTS -ge 600; then SCILABOPT+=" -quit" fi AC_MSG_RESULT($SCILABOPT) # Check for Scilab header files AC_MSG_CHECKING(for Scilab header files) + headers="`AS_DIRNAME(["$SCILAB"])`/../include" if test "$SCILABINCDIR" != ""; then dirs="$SCILABINCDIR" + elif test -d "$SCI"; then + dirs="$SCI/include $SCI/../../include" + elif test -d "$headers"; then + dirs="$headers" elif test -n "$PKG_CONFIG "; then dirs=`$PKG_CONFIG scilab --cflags-only-I | sed -e 's/-I//g'` else - dirs="" + dirs="/usr/include" fi for i in $dirs; do if test -r $i/api_scilab.h; then @@ -1290,6 +1295,7 @@ fi AC_SUBST(SCILAB) AC_SUBST(SCILABINCLUDE) AC_SUBST(SCILABOPT) +AC_SUBST(SCILAB_VERSION) #----------------------------------------------------------------