Hi All,
I have recently released Octave 5.1.0

https://cygwin.com/ml/cygwin-announce/2020-01/msg00010.html
https://cygwin.com/ml/cygwin-announce/2020-01/msg00011.html

that I built and packaged around 28 of December without
any compilation and test issue.

Than I passed to build the next version and started to see
unexpected segfault during the package test.
Trying to investigate I rebuilt the 5.1.0 and now I see also
there the same thing:

libinterp/corefcn/file-io.cc-tst ...............................fatal: caught signal Segmentation fault -- stopping myself... /bin/sh: line 1: 3771 Segmentation fault (core dumped) /bin/sh ../run-octave --norc --silent --no-history -p /cygdrive/d/cyg_pub/devel/octave/prova_311_510/octave-5.1.0-2.x86_64/build/test/mex /cygdrive/d/cyg_pub/devel/octave/prova_311_510/octave-5.1.0-2.x86_64/src/octave-5.1.0/test/fntests.m /cygdrive/d/cyg_pub/devel/octave/prova_311_510/octave-5.1.0-2.x86_64/src/octave-5.1.0/test
make[3]: *** [Makefile:31176: check-local] Error 139


I do not see any new cygwin package released in the last month that I
installed that could cause the simple file tests to fail

%!test
%! f = tempname ();
%! fid = fopen (f, "w+");
%! fprintf (fid, "1\n2\n3\n4\n5\n6");
%! fseek (fid, 0, "bof");
%! c = textscan (fid, "%f %f", 2);   <- here comes the segfault

I also tried the cygwin release 3.1.1 and 2020-01-14 snapshot
in addition to the 3.1.2 to see if something different was
coming with no difference in the outcome.

Now I am seriously thinking about BLODA, but I have not
noted any difference from the two AVs I was using
Antivir and MS Defender, so I am wandering if last
update for W10 Home x64 is the culprit.

Can anyone try to rebuild the Octave package and let me know
if the segfault during test is present or not in your system ?

Be aware that build time is very long (~ 4 hours) and requires
a ton of mathematical libraries.

Any suggestion will be appreciated
Marco




NAME="octave"
VERSION="5.1.0"
RELEASE=2

CATEGORY="Math"
DESCRIPTION="GNU Octave is a high-level language for numerical computations"
HOMEPAGE="http://www.gnu.org/software/octave/";

OR="${PV}"
SRC_URI="https://ftp.gnu.org/gnu/octave/${PN}-${PV}.tar.lz
https://ftp.gnu.org/gnu/octave/${PN}-${PV}.tar.lz.sig";
SRC_DIR="${PN}-${PV}"

PATCH_URI="
octave-postinstall.patch"

PKG_NAMES="octave octave-devel octave-doc"

octave_SUMMARY="GNU Octave language for numerical computations"
octave_devel_SUMMARY="GNU Octave (development)"
octave_doc_SUMMARY="GNU Octave additional docs in html and pdf"

octave_CONTENTS='etc var usr/bin/cyg* usr/bin/oct* 
usr/lib/octave/'${OR}'/[eos]* usr/lib/octave/[as]*  usr/share/[aimos]* 
usr/share/doc/octave/[ABCINPRTe]*'

octave_devel_CONTENTS=' usr/bin/mk* usr/include/ usr/lib/octave/'${OR}'/lib* 
usr/lib/pkgconfig'

octave_doc_CONTENTS='usr/share/doc/octave/[hp]*'

DIFF_EXCLUDES="*octave.info* config.in.h version.texi stamp-vti 
  version-octave.texi stamp-1 version-liboctave.texi"

src_compile() {
        cd ${S}
        cygautoreconf
        cd ${B}
        cygconf --libexecdir=/usr/lib \
                --enable-shared \
                --enable-float-truncate \
                --disable-java \
                --enable-link-all-dependencies \
                LIBS="-lsuitesparseconfig"

# workaround to avoid rebuilding of all interpreter documentation
        touch AUTHORS BUGS INSTALL.OCTAVE

        cygmake LIBS="-lsuitesparseconfig"
}

src_test() {
        cd ${B}
        make check      
}

src_install() {
        cd ${B}
        ARC=$(./libtool --features | grep "host:" |sed -e "s/host: //")

        keepdir /usr/lib/octave/${OR}/site/exec/${ARC}
        keepdir /usr/lib/octave/${OR}/site/oct/${ARC}
        keepdir /usr/lib/octave/api-v53/site/exec/${ARC}
        keepdir /usr/lib/octave/site/oct/api-v53/${ARC} 
        keepdir /usr/lib/octave/${OR}/site/exec
        keepdir /usr/lib/octave/${OR}/site/oct
        keepdir /usr/lib/octave/api-v53/site/exec
        keepdir /usr/lib/octave/site/exec/${ARC}
        keepdir /usr/lib/octave/site/oct/api-v53
        keepdir /usr/lib/octave/site/oct/${ARC}
        keepdir /usr/share/octave/${OR}/site/m
        keepdir /usr/share/octave/site/api-v53/m
        keepdir /usr/lib/octave/${OR}/site
        keepdir /usr/lib/octave/api-v53/site
        keepdir /usr/lib/octave/site/exec
        keepdir /usr/lib/octave/site/oct
        keepdir /usr/share/octave/${OR}/site
        keepdir /usr/share/octave/site/api-v53
        keepdir /usr/lib/octave/api-v53
        keepdir /usr/lib/octave/site

        cyginstall 
        
        insinto /usr/share/doc/${PN}/etc
        doins ${S}/etc/PROJECTS
        insinto /usr/share/doc/${PN}
        doins ${S}/NEWS
        doins ${S}/ChangeLog

        dodir /usr/share/doc/${PN}/pdf
        insinto /usr/share/doc/${PN}/pdf
        doins ${S}/doc/interpreter/octave.pdf
        doins ${S}/doc/liboctave/liboctave.pdf
        doins ${S}/doc/refcard/refcard-a4.pdf
        doins ${S}/doc/refcard/refcard-legal.pdf
        doins ${S}/doc/refcard/refcard-letter.pdf
#       doins ${S}/doc/faq/OctaveFAQ.pdf
 
        dodir /usr/share/doc/${PN}/html/interpreter
        insinto /usr/share/doc/${PN}/html/interpreter
        doins ${S}/doc/interpreter/octave.html/*.html
        doins ${S}/doc/interpreter/octave.html/*.png 

        dodir /usr/share/doc/${PN}/html/liboctave
        insinto /usr/share/doc/${PN}/html/liboctave
        doins ${S}/doc/liboctave/liboctave.html/* 

        dodir /usr/share/info
        insinto /usr/share/info
        doins ${S}/doc/interpreter/octave.info* 
        doins ${S}/doc/liboctave/liboctave.info
#       doins ${S}/doc/faq/OctaveFAQ.info

#       postinstall script
        insinto /var/lib/octave
        doins ${S}/CYGWIN-PATCHES/update_packages_list
        insinto /etc/postinstall
        doins ${S}/CYGWIN-PATCHES/zp_octave_finish.dash
}
--- origsrc/octave-4.0.0/CYGWIN-PATCHES/postinstall.sh  1970-01-01 
01:00:00.000000000 +0100
+++ CYGWIN-PATCHES/postinstall.sh       2015-05-31 22:32:05.501058300 +0200
@@ -0,0 +1,4 @@
+if [ ! -f /var/lib/octave/update.flag ]
+then
+    touch /var/lib/octave/update.flag
+fi
--- origsrc/octave-4.0.0/CYGWIN-PATCHES/update_packages_list    1970-01-01 
01:00:00.000000000 +0100
+++ CYGWIN-PATCHES/update_packages_list 2015-05-31 22:49:05.809416600 +0200
@@ -0,0 +1,18 @@
+##  to updated automatically the package database every time a package is 
+##  added or removed.
+##  preinstall and postremove for every forge package should create the flag
+
+# global package directory
+packages_dir=stat("/usr/share/octave/packages");
+
+# if no package directory, we remove database 
+# otherwise we rebuild
+if (isempty(packages_dir))
+       unlink("/usr/share/octave/octave_packages");    
+else
+       pkg rebuild -noauto -global
+       pkg list
+endif
+
+# removing package list rebuild flag
+unlink("/var/lib/octave/update.flag")
--- origsrc/octave-4.0.0/CYGWIN-PATCHES/zp_octave_finish.dash   1970-01-01 
01:00:00.000000000 +0100
+++ CYGWIN-PATCHES/zp_octave_finish.dash        2015-06-01 22:37:28.000000000 
+0200
@@ -0,0 +1,10 @@
+#!/bin/dash
+# only update if flag exists
+# PATH must include lapack directory
+# octave doesn't like a closed input stream so we use "< /dev/null" 
+
+if [ -f /var/lib/octave/update.flag ]
+then
+  export PATH=/usr/bin:/bin:/usr/lib/lapack
+  /usr/bin/octave-cli  /var/lib/octave/update_packages_list < /dev/null > 
/var/lib/octave/update.log  2>&1
+fi
%!test
%! f = tempname ();
%! fid = fopen (f, "w+");
%! fprintf (fid, "1\n2\n3\n4\n5\n6");
%! fseek (fid, 0, "bof");
%! c = textscan (fid, "%f %f", 2);
%! E = feof (fid);
%! fclose (fid);
%! unlink (f);
%! assert (c, {1, 2});
%! assert (! E);
%!test
%! f = tempname ();
%! fid = fopen (f, "w+");
%! fprintf (fid, "1\r\n2\r3\n4\r\n5\n6");
%! fseek (fid, 0, "bof");
%! c = textscan (fid, "%f %f", 4);
%! fclose (fid);
%! unlink (f);
%! assert (c, {[1;3], [2;4]});
--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply via email to