Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gap-singular for openSUSE:Factory checked in at 2026-05-06 19:18:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gap-singular (Old) and /work/SRC/openSUSE:Factory/.gap-singular.new.30200 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gap-singular" Wed May 6 19:18:13 2026 rev:5 rq:1351035 version:2026.05.05 Changes: -------- --- /work/SRC/openSUSE:Factory/gap-singular/gap-singular.changes 2026-04-15 16:06:33.807914819 +0200 +++ /work/SRC/openSUSE:Factory/.gap-singular.new.30200/gap-singular.changes 2026-05-06 19:20:03.386422429 +0200 @@ -1,0 +2,6 @@ +Tue May 5 18:00:54 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to relesae 2026.05.05 + * Added the `IsSingularExecutableAvailable` helper + +------------------------------------------------------------------- Old: ---- singular-2026.04.09.tar.gz New: ---- singular-2026.05.05.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gap-singular.spec ++++++ --- /var/tmp/diff_new_pack.FcM4T4/_old 2026-05-06 19:20:03.962446153 +0200 +++ /var/tmp/diff_new_pack.FcM4T4/_new 2026-05-06 19:20:03.966446318 +0200 @@ -17,7 +17,7 @@ Name: gap-singular -Version: 2026.04.09 +Version: 2026.05.05 Release: 0 Summary: GAP: An interface to Singular License: GPL-2.0-or-later ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.FcM4T4/_old 2026-05-06 19:20:04.014448295 +0200 +++ /var/tmp/diff_new_pack.FcM4T4/_new 2026-05-06 19:20:04.022448624 +0200 @@ -1,5 +1,5 @@ -mtime: 1776174449 -commit: e361843e11acbd3ea427b752c5053e2c7cfaa2582d78e5b325ea8450a632899a +mtime: 1778004075 +commit: fad451ffa9da2714b0935737d4f5803d51322c6e8623882d9536bc7cdadc090a url: https://src.opensuse.org/jengelh/gap-singular revision: master ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-05-05 20:01:15.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ singular-2026.04.09.tar.gz -> singular-2026.05.05.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/CHANGES.md new/singular-2026.05.05/CHANGES.md --- old/singular-2026.04.09/CHANGES.md 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/CHANGES.md 2026-05-05 02:00:00.000000000 +0200 @@ -1,5 +1,8 @@ This file describes changes in the GAP package `singular`. +- 2026.05.05 + - Add `IsSingularExecutableAvailable` helper + - 2026.04.09 - janitorial changes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/PackageInfo.g new/singular-2026.05.05/PackageInfo.g --- old/singular-2026.04.09/PackageInfo.g 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/PackageInfo.g 2026-05-05 02:00:00.000000000 +0200 @@ -11,7 +11,7 @@ SetPackageInfo( rec( PackageName := "singular", Subtitle := "A GAP interface to Singular", -Version := "2026.04.09", +Version := "2026.05.05", Date := Concatenation( ~.Version{[ 9, 10 ]}, "/", ~.Version{[ 6, 7 ]}, "/", ~.Version{[ 1 .. 4 ]} ), License := "GPL-2.0-or-later", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/README.md new/singular-2026.05.05/README.md --- old/singular-2026.04.09/README.md 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/README.md 2026-05-05 02:00:00.000000000 +0200 @@ -37,6 +37,10 @@ gap> LoadPackage("singular"); true + To check whether GAP can already find the Singular executable, run + + gap> IsSingularExecutableAvailable(); + 4. The documentation is in the `doc` subdirectory: it is more up-to-date than this README file. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chap0.html new/singular-2026.05.05/doc/chap0.html --- old/singular-2026.04.09/doc/chap0.html 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chap0.html 2026-05-05 02:00:00.000000000 +0200 @@ -29,10 +29,10 @@ <h2>A <strong class="pkg">GAP</strong> interface to Singular</h2> <p> - 2026.04.09</p> + 2026.05.05</p> <p> - 9 April 2026 + 5 May 2026 </p> </div> @@ -81,6 +81,7 @@ <strong class="pkg">singular</strong></span></a> </span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap1.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span> +<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1.html#X867572118162AAA5">1.2-5 IsSingularExecutableAvailable</a></span> </div></div> <div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1.html#X7E8229C88005E2EA">1.3 <span class="Heading">Interaction with <strong class="pkg">Singular</strong></span></a> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chap0.txt new/singular-2026.05.05/doc/chap0.txt --- old/singular-2026.04.09/doc/chap0.txt 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chap0.txt 2026-05-05 02:00:00.000000000 +0200 @@ -6,10 +6,10 @@ [1X A [5XGAP[105X interface to Singular [101X - 2026.04.09 + 2026.05.05 - 9 April 2026 + 5 May 2026 Marco Costantini @@ -44,6 +44,7 @@ 1.2-2 [33X[0;0YInstalling the system [5XGAP[105X[133X 1.2-3 [33X[0;0YInstalling the package [5Xsingular[105X[133X 1.2-4 sing_exec + 1.2-5 IsSingularExecutableAvailable 1.3 [33X[0;0YInteraction with [5XSingular[105X[133X 1.3-1 StartSingular 1.3-2 SingularHelp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chap0_mj.html new/singular-2026.05.05/doc/chap0_mj.html --- old/singular-2026.04.09/doc/chap0_mj.html 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chap0_mj.html 2026-05-05 02:00:00.000000000 +0200 @@ -32,10 +32,10 @@ <h2>A <strong class="pkg">GAP</strong> interface to Singular</h2> <p> - 2026.04.09</p> + 2026.05.05</p> <p> - 9 April 2026 + 5 May 2026 </p> </div> @@ -84,6 +84,7 @@ <strong class="pkg">singular</strong></span></a> </span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span> +<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X867572118162AAA5">1.2-5 IsSingularExecutableAvailable</a></span> </div></div> <div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X7E8229C88005E2EA">1.3 <span class="Heading">Interaction with <strong class="pkg">Singular</strong></span></a> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chap1.html new/singular-2026.05.05/doc/chap1.html --- old/singular-2026.04.09/doc/chap1.html 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chap1.html 2026-05-05 02:00:00.000000000 +0200 @@ -46,6 +46,7 @@ <strong class="pkg">singular</strong></span></a> </span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap1.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span> +<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1.html#X867572118162AAA5">1.2-5 IsSingularExecutableAvailable</a></span> </div></div> <div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1.html#X7E8229C88005E2EA">1.3 <span class="Heading">Interaction with <strong class="pkg">Singular</strong></span></a> @@ -285,6 +286,21 @@ <p>Another possibility is to run Gap from within the Cygwin shell. In this case, with a standard installation of Cygwin and <strong class="pkg">Singular</strong>, no change is required,</p> +<p><a id="X867572118162AAA5" name="X867572118162AAA5"></a></p> + +<h5>1.2-5 IsSingularExecutableAvailable</h5> + +<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSingularExecutableAvailable</code>( )</td><td class="tdright">( function )</td></tr></table></div> +<p>The function <var class="Arg">IsSingularExecutableAvailable</var> checks whether the current value of <code class="func">sing_exec</code> (<a href="chap1.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) already points to an executable file, and otherwise tries to resolve it automatically. In particular, if <code class="func">sing_exec</code> (<a href="chap1.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) names only a directory, then the file <code class="file">Singular</code> inside that directory is tried; if it contains no directory separator, then it is searched in the system program path; and if <code class="func">sing_exec</code> (<a href="chap1.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) is not set or cannot be used, then the program name <code class="file">Singular</code> is searched in the system program path.</p> + + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">IsSingularExecutableAvailable();</span> +true +</pre></div> + +<p>If the function returns <code class="keyw">true</code>, then <code class="func">sing_exec</code> (<a href="chap1.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) has been normalized to a usable executable path. If it returns <code class="keyw">false</code>, then the package still does not know how to start <strong class="pkg">Singular</strong>, and <code class="func">sing_exec</code> (<a href="chap1.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) should be set explicitly before calling <code class="func">StartSingular</code> (<a href="chap1.html#X79C5E6F27C37DA10"><span class="RefLink">1.3-1</span></a>).</p> + <p><a id="X7E8229C88005E2EA" name="X7E8229C88005E2EA"></a></p> <h4>1.3 <span class="Heading">Interaction with @@ -298,7 +314,7 @@ <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ StartSingular</code>( )</td><td class="tdright">( function )</td></tr></table></div> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CloseSingular</code>( )</td><td class="tdright">( function )</td></tr></table></div> -<p>After the package <strong class="pkg">singular</strong> has been loaded, <strong class="pkg">Singular</strong> is started automatically when one of the functions of the interface is called. Alternatively, one can start <strong class="pkg">Singular</strong> with the command <var class="Arg">StartSingular</var>.</p> +<p>After the package <strong class="pkg">singular</strong> has been loaded, <strong class="pkg">Singular</strong> is started automatically when one of the functions of the interface is called. Alternatively, one can start <strong class="pkg">Singular</strong> with the command <var class="Arg">StartSingular</var>. To check beforehand whether the executable can be found, use <code class="func">IsSingularExecutableAvailable</code> (<a href="chap1.html#X867572118162AAA5"><span class="RefLink">1.2-5</span></a>).</p> <div class="example"><pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chap1.txt new/singular-2026.05.05/doc/chap1.txt --- old/singular-2026.04.09/doc/chap1.txt 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chap1.txt 2026-05-05 02:00:00.000000000 +0200 @@ -284,6 +284,28 @@ case, with a standard installation of Cygwin and [5XSingular[105X, no change is required,[133X + [1X1.2-5 IsSingularExecutableAvailable[101X + + [33X[1;0Y[29X[2XIsSingularExecutableAvailable[102X( ) [32X function[133X + + [33X[0;0YThe function [3XIsSingularExecutableAvailable[103X checks whether the current value + of [2Xsing_exec[102X ([14X1.2-4[114X) already points to an executable file, and otherwise + tries to resolve it automatically. In particular, if [2Xsing_exec[102X ([14X1.2-4[114X) names + only a directory, then the file [11XSingular[111X inside that directory is tried; if + it contains no directory separator, then it is searched in the system + program path; and if [2Xsing_exec[102X ([14X1.2-4[114X) is not set or cannot be used, then + the program name [11XSingular[111X is searched in the system program path.[133X + + [4X[32X Example [32X[104X + [4X[25Xgap>[125X [27XIsSingularExecutableAvailable();[127X[104X + [4X[28Xtrue[128X[104X + [4X[32X[104X + + [33X[0;0YIf the function returns [9Xtrue[109X, then [2Xsing_exec[102X ([14X1.2-4[114X) has been normalized to + a usable executable path. If it returns [9Xfalse[109X, then the package still does + not know how to start [5XSingular[105X, and [2Xsing_exec[102X ([14X1.2-4[114X) should be set + explicitly before calling [2XStartSingular[102X ([14X1.3-1[114X).[133X + [1X1.3 [33X[0;0YInteraction with [5XSingular[105X[101X[1X[133X[101X @@ -297,7 +319,9 @@ [33X[0;0YAfter the package [5Xsingular[105X has been loaded, [5XSingular[105X is started automatically when one of the functions of the interface is called. - Alternatively, one can start [5XSingular[105X with the command [3XStartSingular[103X.[133X + Alternatively, one can start [5XSingular[105X with the command [3XStartSingular[103X. To + check beforehand whether the executable can be found, use + [2XIsSingularExecutableAvailable[102X ([14X1.2-5[114X).[133X [4X[32X Example [32X[104X [4X[25Xgap>[125X [27XStartSingular();[127X[104X diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chap1_mj.html new/singular-2026.05.05/doc/chap1_mj.html --- old/singular-2026.04.09/doc/chap1_mj.html 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chap1_mj.html 2026-05-05 02:00:00.000000000 +0200 @@ -49,6 +49,7 @@ <strong class="pkg">singular</strong></span></a> </span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span> +<span class="ContSS"><br /><span class="nocss"> </span><a href="chap1_mj.html#X867572118162AAA5">1.2-5 IsSingularExecutableAvailable</a></span> </div></div> <div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap1_mj.html#X7E8229C88005E2EA">1.3 <span class="Heading">Interaction with <strong class="pkg">Singular</strong></span></a> @@ -288,6 +289,21 @@ <p>Another possibility is to run Gap from within the Cygwin shell. In this case, with a standard installation of Cygwin and <strong class="pkg">Singular</strong>, no change is required,</p> +<p><a id="X867572118162AAA5" name="X867572118162AAA5"></a></p> + +<h5>1.2-5 IsSingularExecutableAvailable</h5> + +<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsSingularExecutableAvailable</code>( )</td><td class="tdright">( function )</td></tr></table></div> +<p>The function <var class="Arg">IsSingularExecutableAvailable</var> checks whether the current value of <code class="func">sing_exec</code> (<a href="chap1_mj.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) already points to an executable file, and otherwise tries to resolve it automatically. In particular, if <code class="func">sing_exec</code> (<a href="chap1_mj.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) names only a directory, then the file <code class="file">Singular</code> inside that directory is tried; if it contains no directory separator, then it is searched in the system program path; and if <code class="func">sing_exec</code> (<a href="chap1_mj.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) is not set or cannot be used, then the program name <code class="file">Singular</code> is searched in the system program path.</p> + + +<div class="example"><pre> +<span class="GAPprompt">gap></span> <span class="GAPinput">IsSingularExecutableAvailable();</span> +true +</pre></div> + +<p>If the function returns <code class="keyw">true</code>, then <code class="func">sing_exec</code> (<a href="chap1_mj.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) has been normalized to a usable executable path. If it returns <code class="keyw">false</code>, then the package still does not know how to start <strong class="pkg">Singular</strong>, and <code class="func">sing_exec</code> (<a href="chap1_mj.html#X8229A3C4793932BA"><span class="RefLink">1.2-4</span></a>) should be set explicitly before calling <code class="func">StartSingular</code> (<a href="chap1_mj.html#X79C5E6F27C37DA10"><span class="RefLink">1.3-1</span></a>).</p> + <p><a id="X7E8229C88005E2EA" name="X7E8229C88005E2EA"></a></p> <h4>1.3 <span class="Heading">Interaction with @@ -301,7 +317,7 @@ <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ StartSingular</code>( )</td><td class="tdright">( function )</td></tr></table></div> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CloseSingular</code>( )</td><td class="tdright">( function )</td></tr></table></div> -<p>After the package <strong class="pkg">singular</strong> has been loaded, <strong class="pkg">Singular</strong> is started automatically when one of the functions of the interface is called. Alternatively, one can start <strong class="pkg">Singular</strong> with the command <var class="Arg">StartSingular</var>.</p> +<p>After the package <strong class="pkg">singular</strong> has been loaded, <strong class="pkg">Singular</strong> is started automatically when one of the functions of the interface is called. Alternatively, one can start <strong class="pkg">Singular</strong> with the command <var class="Arg">StartSingular</var>. To check beforehand whether the executable can be found, use <code class="func">IsSingularExecutableAvailable</code> (<a href="chap1_mj.html#X867572118162AAA5"><span class="RefLink">1.2-5</span></a>).</p> <div class="example"><pre> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chapInd.html new/singular-2026.05.05/doc/chapInd.html --- old/singular-2026.04.09/doc/chapInd.html 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chapInd.html 2026-05-05 02:00:00.000000000 +0200 @@ -37,6 +37,7 @@ <code class="func">GroebnerBasis</code> <a href="chap1.html#X7A43611E876B7560">1.5-1</a> <br /> <code class="func">HasTrivialGroebnerBasis</code> <a href="chap1.html#X83668E317A047D24">1.5-3</a> <br /> <code class="func">InfoSingular</code> <a href="chap1.html#X843C50B18098609A">1.7-8</a> <br /> +<code class="func">IsSingularExecutableAvailable</code> <a href="chap1.html#X867572118162AAA5">1.2-5</a> <br /> <code class="func">SetTermOrdering</code> <a href="chap1.html#X813A17AF85BFACB9">1.3-5</a> <br /> <code class="func">sing_exec</code> <a href="chap1.html#X8229A3C4793932BA">1.2-4</a> <br /> <code class="func">sing_exec_options</code> <a href="chap1.html#X8229A3C4793932BA">1.2-4</a> <br /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chapInd.txt new/singular-2026.05.05/doc/chapInd.txt --- old/singular-2026.04.09/doc/chapInd.txt 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chapInd.txt 2026-05-05 02:00:00.000000000 +0200 @@ -14,6 +14,7 @@ [2XGroebnerBasis[102X 1.5-1 [2XHasTrivialGroebnerBasis[102X 1.5-3 [2XInfoSingular[102X 1.7-8 + [2XIsSingularExecutableAvailable[102X 1.2-5 [2XSetTermOrdering[102X 1.3-5 [2Xsing_exec[102X 1.2-4 [2Xsing_exec_options[102X 1.2-4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/chapInd_mj.html new/singular-2026.05.05/doc/chapInd_mj.html --- old/singular-2026.04.09/doc/chapInd_mj.html 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/chapInd_mj.html 2026-05-05 02:00:00.000000000 +0200 @@ -40,6 +40,7 @@ <code class="func">GroebnerBasis</code> <a href="chap1_mj.html#X7A43611E876B7560">1.5-1</a> <br /> <code class="func">HasTrivialGroebnerBasis</code> <a href="chap1_mj.html#X83668E317A047D24">1.5-3</a> <br /> <code class="func">InfoSingular</code> <a href="chap1_mj.html#X843C50B18098609A">1.7-8</a> <br /> +<code class="func">IsSingularExecutableAvailable</code> <a href="chap1_mj.html#X867572118162AAA5">1.2-5</a> <br /> <code class="func">SetTermOrdering</code> <a href="chap1_mj.html#X813A17AF85BFACB9">1.3-5</a> <br /> <code class="func">sing_exec</code> <a href="chap1_mj.html#X8229A3C4793932BA">1.2-4</a> <br /> <code class="func">sing_exec_options</code> <a href="chap1_mj.html#X8229A3C4793932BA">1.2-4</a> <br /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/manual.lab new/singular-2026.05.05/doc/manual.lab --- old/singular-2026.04.09/doc/manual.lab 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/manual.lab 2026-05-05 02:00:00.000000000 +0200 @@ -27,6 +27,7 @@ \makelabel{singular:singexec}{1.2.4}{X8229A3C4793932BA} \makelabel{singular:singexecoptions}{1.2.4}{X8229A3C4793932BA} \makelabel{singular:SingularTempDirectory}{1.2.4}{X8229A3C4793932BA} +\makelabel{singular:IsSingularExecutableAvailable}{1.2.5}{X867572118162AAA5} \makelabel{singular:StartSingular}{1.3.1}{X79C5E6F27C37DA10} \makelabel{singular:CloseSingular}{1.3.1}{X79C5E6F27C37DA10} \makelabel{singular:SingularHelp}{1.3.2}{X81FDDDE47EBA9698} Binary files old/singular-2026.04.09/doc/manual.pdf and new/singular-2026.05.05/doc/manual.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/manual.six new/singular-2026.05.05/doc/manual.six --- old/singular-2026.04.09/doc/manual.six 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/manual.six 2026-05-05 02:00:00.000000000 +0200 @@ -40,51 +40,51 @@ "installing the package singular", "X7AC4165B7843F037" ], [ "\033[1X\033[33X\033[0;-2YInteraction with \033[5XSingular\033[105X\033[101\ -X\027\033[1X\027\033[133X\033[101X", "1.3", [ 1, 3, 0 ], 287, 7, +X\027\033[1X\027\033[133X\033[101X", "1.3", [ 1, 3, 0 ], 309, 8, "interaction with singular", "X7E8229C88005E2EA" ], [ "\033[1X\033[33X\033[0;-2YRings and orderings\033[133X\033[101X", - "1.3-3", [ 1, 3, 3 ], 345, 8, "rings and orderings", + "1.3-3", [ 1, 3, 3 ], 369, 9, "rings and orderings", "X86C329A285955655" ], [ "\033[1X\033[33X\033[0;-2YSupported coefficients fields\033[133X\033[101X" - , "1.3-4", [ 1, 3, 4 ], 360, 9, "supported coefficients fields", + , "1.3-4", [ 1, 3, 4 ], 384, 9, "supported coefficients fields", "X840BA4C9839D3CF4" ], [ "\033[1X\033[33X\033[0;-2YInteraction with \033[5XSingular\033[105X\033[101\ -X\027\033[1X\027 at low level\033[133X\033[101X", "1.4", [ 1, 4, 0 ], 625, +X\027\033[1X\027 at low level\033[133X\033[101X", "1.4", [ 1, 4, 0 ], 649, 13, "interaction with singular at low level", "X874F7C2F7CF4192E" ], [ "\033[1X\033[33X\033[0;-2YOther mathematical functions of the package\033[1\ -33X\033[101X", "1.5", [ 1, 5, 0 ], 640, 13, +33X\033[101X", "1.5", [ 1, 5, 0 ], 664, 13, "other mathematical functions of the package", "X82726C947AFEC357" ], [ "\033[1X\033[33X\033[0;-2YAlgebraic-geometric codes functions\033[133X\033[\ -101X", "1.6", [ 1, 6, 0 ], 819, 16, "algebraic-geometric codes functions", +101X", "1.6", [ 1, 6, 0 ], 843, 16, "algebraic-geometric codes functions", "X7E4CD3FF8230789C" ], [ "\033[1X\033[33X\033[0;-2YTroubleshooting and technical stuff\033[133X\033[\ -101X", "1.7", [ 1, 7, 0 ], 898, 18, "troubleshooting and technical stuff", +101X", "1.7", [ 1, 7, 0 ], 922, 18, "troubleshooting and technical stuff", "X8562222580239DA6" ], [ "\033[1X\033[33X\033[0;-2YSupported platforms and underlying \033[5XGAP\\ 033[105X\033[101X\027\033[1X\027 functions\033[133X\033[101X", "1.7-1", - [ 1, 7, 1 ], 901, 18, "supported platforms and underlying gap functions" + [ 1, 7, 1 ], 925, 18, "supported platforms and underlying gap functions" , "X7C1724F780B84A6C" ], [ "\033[1X\033[33X\033[0;-2YHow different versions of \033[5XGAP\033[105X\\ 033[101X\027\033[1X\027 display polynomial rings and polynomials\033[133X\033[\ -101X", "1.7-2", [ 1, 7, 2 ], 934, 18, +101X", "1.7-2", [ 1, 7, 2 ], 958, 18, "how different versions of gap display polynomial rings and polynomials" , "X82CDC01B7AABF5F5" ], [ "\033[1X\033[33X\033[0;-2YTest file\033[133X\033[101X", "1.7-3", - [ 1, 7, 3 ], 970, 19, "test file", "X7DE6DC637A7FAC93" ], + [ 1, 7, 3 ], 994, 19, "test file", "X7DE6DC637A7FAC93" ], [ "\033[1X\033[33X\033[0;-2YCommon problems\033[133X\033[101X", "1.7-4", - [ 1, 7, 4 ], 982, 19, "common problems", "X82260C8E82090E87" ], + [ 1, 7, 4 ], 1006, 19, "common problems", "X82260C8E82090E87" ], [ "\033[1X\033[33X\033[0;-2YErrors on the \033[5XSingular\033[105X\033[101X\\ -027\033[1X\027 side\033[133X\033[101X", "1.7-5", [ 1, 7, 5 ], 1016, 19, +027\033[1X\027 side\033[133X\033[101X", "1.7-5", [ 1, 7, 5 ], 1040, 20, "errors on the singular side", "X7D38248D79425B28" ], [ "\033[1X\033[33X\033[0;-2YSending a report\033[133X\033[101X", "1.7-6", - [ 1, 7, 6 ], 1031, 20, "sending a report", "X7C8AE6BD787CD237" ], + [ 1, 7, 6 ], 1055, 20, "sending a report", "X7C8AE6BD787CD237" ], [ "Index", "ind", [ "Ind", 0, 0 ], 1, 22, "index", "X83A0356F839C696F" ], [ "\033[2Xsing_exec\033[102X", "1.2-4", [ 1, 2, 4 ], 203, 6, "sing_exec", "X8229A3C4793932BA" ], @@ -92,53 +92,55 @@ "sing_exec_options", "X8229A3C4793932BA" ], [ "\033[2XSingularTempDirectory\033[102X", "1.2-4", [ 1, 2, 4 ], 203, 6, "singulartempdirectory", "X8229A3C4793932BA" ], - [ "\033[2XStartSingular\033[102X", "1.3-1", [ 1, 3, 1 ], 293, 7, + [ "\033[2XIsSingularExecutableAvailable\033[102X", "1.2-5", [ 1, 2, 5 ], + 287, 7, "issingularexecutableavailable", "X867572118162AAA5" ], + [ "\033[2XStartSingular\033[102X", "1.3-1", [ 1, 3, 1 ], 315, 8, "startsingular", "X79C5E6F27C37DA10" ], - [ "\033[2XCloseSingular\033[102X", "1.3-1", [ 1, 3, 1 ], 293, 7, + [ "\033[2XCloseSingular\033[102X", "1.3-1", [ 1, 3, 1 ], 315, 8, "closesingular", "X79C5E6F27C37DA10" ], - [ "\033[2XSingularHelp\033[102X", "1.3-2", [ 1, 3, 2 ], 320, 8, + [ "\033[2XSingularHelp\033[102X", "1.3-2", [ 1, 3, 2 ], 344, 8, "singularhelp", "X81FDDDE47EBA9698" ], - [ "\033[2XSetTermOrdering\033[102X", "1.3-5", [ 1, 3, 5 ], 388, 9, + [ "\033[2XSetTermOrdering\033[102X", "1.3-5", [ 1, 3, 5 ], 412, 9, "settermordering", "X813A17AF85BFACB9" ], - [ "\033[2XTermOrdering\033[102X", "1.3-5", [ 1, 3, 5 ], 388, 9, + [ "\033[2XTermOrdering\033[102X", "1.3-5", [ 1, 3, 5 ], 412, 9, "termordering", "X813A17AF85BFACB9" ], - [ "\033[2XSingularSetBaseRing\033[102X", "1.3-6", [ 1, 3, 6 ], 442, 10, + [ "\033[2XSingularSetBaseRing\033[102X", "1.3-6", [ 1, 3, 6 ], 466, 10, "singularsetbasering", "X84A3CD498011A10C" ], - [ "\033[2XSingularBaseRing\033[102X", "1.3-6", [ 1, 3, 6 ], 442, 10, + [ "\033[2XSingularBaseRing\033[102X", "1.3-6", [ 1, 3, 6 ], 466, 10, "singularbasering", "X84A3CD498011A10C" ], - [ "\033[2XSingularLibrary\033[102X", "1.3-7", [ 1, 3, 7 ], 469, 10, + [ "\033[2XSingularLibrary\033[102X", "1.3-7", [ 1, 3, 7 ], 493, 11, "singularlibrary", "X871A5AF87DAE21E6" ], - [ "\033[2XSingularInterface\033[102X", "1.3-8", [ 1, 3, 8 ], 488, 11, + [ "\033[2XSingularInterface\033[102X", "1.3-8", [ 1, 3, 8 ], 512, 11, "singularinterface", "X876BA78F7CF049C3" ], - [ "\033[2XSingularType\033[102X", "1.3-9", [ 1, 3, 9 ], 619, 13, + [ "\033[2XSingularType\033[102X", "1.3-9", [ 1, 3, 9 ], 643, 13, "singulartype", "X79B84D5C7AC98756" ], - [ "\033[2XSingularCommand\033[102X", "1.4-1", [ 1, 4, 1 ], 628, 13, + [ "\033[2XSingularCommand\033[102X", "1.4-1", [ 1, 4, 1 ], 652, 13, "singularcommand", "X85EEFDDE8111A67B" ], - [ "\033[2XGapInterface\033[102X", "1.4-2", [ 1, 4, 2 ], 634, 13, + [ "\033[2XGapInterface\033[102X", "1.4-2", [ 1, 4, 2 ], 658, 13, "gapinterface", "X7B8471948055DD90" ], - [ "\033[2XGroebnerBasis\033[102X", "1.5-1", [ 1, 5, 1 ], 643, 13, + [ "\033[2XGroebnerBasis\033[102X", "1.5-1", [ 1, 5, 1 ], 667, 13, "groebnerbasis", "X7A43611E876B7560" ], - [ "\033[2XSINGULARGBASIS\033[102X", "1.5-2", [ 1, 5, 2 ], 666, 14, + [ "\033[2XSINGULARGBASIS\033[102X", "1.5-2", [ 1, 5, 2 ], 690, 14, "singulargbasis", "X7A594BFA7B521F98" ], - [ "\033[2XHasTrivialGroebnerBasis\033[102X", "1.5-3", [ 1, 5, 3 ], 698, 14, + [ "\033[2XHasTrivialGroebnerBasis\033[102X", "1.5-3", [ 1, 5, 3 ], 722, 14, "hastrivialgroebnerbasis", "X83668E317A047D24" ], [ "\033[2XGcdUsingSingular\033[102X for polynomials", "1.5-4", [ 1, 5, 4 ], - 719, 14, "gcdusingsingular for polynomials", "X877960128076E656" ], + 743, 15, "gcdusingsingular for polynomials", "X877960128076E656" ], [ "\033[2XGcdUsingSingular\033[102X for a list of polynomials", "1.5-4", - [ 1, 5, 4 ], 719, 14, "gcdusingsingular for a list of polynomials", + [ 1, 5, 4 ], 743, 15, "gcdusingsingular for a list of polynomials", "X877960128076E656" ], - [ "\033[2XFactorsUsingSingularNC\033[102X", "1.5-5", [ 1, 5, 5 ], 743, 15, + [ "\033[2XFactorsUsingSingularNC\033[102X", "1.5-5", [ 1, 5, 5 ], 767, 15, "factorsusingsingularnc", "X84AC005C837CE13C" ], - [ "\033[2XFactorsUsingSingular\033[102X", "1.5-6", [ 1, 5, 6 ], 774, 15, + [ "\033[2XFactorsUsingSingular\033[102X", "1.5-6", [ 1, 5, 6 ], 798, 16, "factorsusingsingular", "X87A0E69B81E52AA2" ], - [ "\033[2XGeneratorsOfInvariantRing\033[102X", "1.5-7", [ 1, 5, 7 ], 796, + [ "\033[2XGeneratorsOfInvariantRing\033[102X", "1.5-7", [ 1, 5, 7 ], 820, 16, "generatorsofinvariantring", "X7EAC34C984599470" ], - [ "\033[2XAllPointsOnCurve\033[102X", "1.6-1", [ 1, 6, 1 ], 835, 16, + [ "\033[2XAllPointsOnCurve\033[102X", "1.6-1", [ 1, 6, 1 ], 859, 17, "allpointsoncurve", "X80553C51807FA705" ], - [ "\033[2XAGCode\033[102X", "1.6-2", [ 1, 6, 2 ], 855, 17, "agcode", + [ "\033[2XAGCode\033[102X", "1.6-2", [ 1, 6, 2 ], 879, 17, "agcode", "X78E2235083D9FDCC" ], - [ "\033[2XSingularReportInformation\033[102X", "1.7-7", [ 1, 7, 7 ], 1052, + [ "\033[2XSingularReportInformation\033[102X", "1.7-7", [ 1, 7, 7 ], 1076, 20, "singularreportinformation", "X78BE74C97BF4E287" ], - [ "\033[2XInfoSingular\033[102X", "1.7-8", [ 1, 7, 8 ], 1075, 20, + [ "\033[2XInfoSingular\033[102X", "1.7-8", [ 1, 7, 8 ], 1099, 21, "infosingular", "X843C50B18098609A" ] ] ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/singular.tex new/singular-2026.05.05/doc/singular.tex --- old/singular-2026.04.09/doc/singular.tex 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/singular.tex 2026-05-05 02:00:00.000000000 +0200 @@ -98,8 +98,8 @@ {\Huge \textbf{ A \textsf{GAP} interface to Singular \mbox{}}}\\ \vfill -{\Huge 2026.04.09 \mbox{}}\\[1cm] -{ 9 April 2026 \mbox{}}\\[1cm] +{\Huge 2026.05.05 \mbox{}}\\[1cm] +{ 5 May 2026 \mbox{}}\\[1cm] \mbox{}\\[2cm] {\Large \textbf{ Marco Costantini\\ \mbox{}}}\\ @@ -368,6 +368,25 @@ Another possibility is to run Gap from within the Cygwin shell. In this case, with a standard installation of Cygwin and \textsf{Singular}, no change is required, } + + +\subsection{\textcolor{Chapter }{IsSingularExecutableAvailable}} +\logpage{[ 1, 2, 5 ]}\nobreak +\hyperdef{L}{X867572118162AAA5}{} +{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsSingularExecutableAvailable({\mdseries\slshape })\index{IsSingularExecutableAvailable@\texttt{IsSingularExecutableAvailable}} +\label{IsSingularExecutableAvailable} +}\hfill{\scriptsize (function)}}\\ + + + The function \mbox{\texttt{\mdseries\slshape IsSingularExecutableAvailable}} checks whether the current value of \texttt{sing{\textunderscore}exec} (\ref{singuScoreexec}) already points to an executable file, and otherwise tries to resolve it +automatically. In particular, if \texttt{sing{\textunderscore}exec} (\ref{singuScoreexec}) names only a directory, then the file \texttt{Singular} inside that directory is tried; if it contains no directory separator, then it +is searched in the system program path; and if \texttt{sing{\textunderscore}exec} (\ref{singuScoreexec}) is not set or cannot be used, then the program name \texttt{Singular} is searched in the system program path. +\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example] + !gapprompt@gap>| !gapinput@IsSingularExecutableAvailable();| + true +\end{Verbatim} + If the function returns \texttt{true}, then \texttt{sing{\textunderscore}exec} (\ref{singuScoreexec}) has been normalized to a usable executable path. If it returns \texttt{false}, then the package still does not know how to start \textsf{Singular}, and \texttt{sing{\textunderscore}exec} (\ref{singuScoreexec}) should be set explicitly before calling \texttt{StartSingular} (\ref{StartSingular}). } + } @@ -389,7 +408,7 @@ After the package \textsf{singular} has been loaded, \textsf{Singular} is started automatically when one of the functions of the interface is called. -Alternatively, one can start \textsf{Singular} with the command \mbox{\texttt{\mdseries\slshape StartSingular}}. +Alternatively, one can start \textsf{Singular} with the command \mbox{\texttt{\mdseries\slshape StartSingular}}. To check beforehand whether the executable can be found, use \texttt{IsSingularExecutableAvailable} (\ref{IsSingularExecutableAvailable}). \begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example] !gapprompt@gap>| !gapinput@StartSingular();| \end{Verbatim} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/singular.xml new/singular-2026.05.05/doc/singular.xml --- old/singular-2026.04.09/doc/singular.xml 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/singular.xml 2026-05-05 02:00:00.000000000 +0200 @@ -464,7 +464,36 @@ </Description> -</ManSection> +</ManSection> + +<ManSection> +<Func Name="IsSingularExecutableAvailable" Arg = ""/> +<Description> + + +The function <A>IsSingularExecutableAvailable</A> checks whether the +current value of <Ref Var="sing_exec"/> already points to an executable +file, and otherwise tries to resolve it automatically. In particular, if +<Ref Var="sing_exec"/> names only a directory, then the file +<File>Singular</File> inside that directory is tried; if it contains no +directory separator, then it is searched in the system program path; and +if <Ref Var="sing_exec"/> is not set or cannot be used, then the program +name <File>Singular</File> is searched in the system program path. + +<Example> +gap> IsSingularExecutableAvailable(); +true +</Example> + +If the function returns <K>true</K>, then <Ref Var="sing_exec"/> has been +normalized to a usable executable path. If it returns <K>false</K>, then +the package still does not know how to start <Package>Singular</Package>, +and <Ref Var="sing_exec"/> should be set explicitly before calling +<Ref Func="StartSingular"/>. + +</Description> + +</ManSection> @@ -488,6 +517,8 @@ <Package>Singular</Package> is started automatically when one of the functions of the interface is called. Alternatively, one can start <Package>Singular</Package> with the command <A>StartSingular</A>. +To check beforehand whether the executable can be found, use +<Ref Func="IsSingularExecutableAvailable"/>. <Example> gap> StartSingular(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/doc/title.xml new/singular-2026.05.05/doc/title.xml --- old/singular-2026.04.09/doc/title.xml 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/doc/title.xml 2026-05-05 02:00:00.000000000 +0200 @@ -9,7 +9,7 @@ A &GAP; interface to Singular </Subtitle> <Version> - 2026.04.09 + 2026.05.05 </Version> <Author> Marco Costantini<Alt Only="LaTeX"><Br/></Alt> @@ -29,6 +29,6 @@ </Author> <Date> - 9 April 2026 + 5 May 2026 </Date> </TitlePage> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/singular-2026.04.09/gap/singular.g new/singular-2026.05.05/gap/singular.g --- old/singular-2026.04.09/gap/singular.g 2026-04-09 02:00:00.000000000 +0200 +++ new/singular-2026.05.05/gap/singular.g 2026-05-05 02:00:00.000000000 +0200 @@ -231,8 +231,8 @@ -BindGlobal( "CheckSingularExecutableAndTempDir", function ( ) - local i, IsExec; +BindGlobal( "IsSingularExecutableAvailable", function ( ) + local IsExec; # check the Singular executable file, and if needed try to # autodetermine, or print an appropriate error message @@ -260,8 +260,15 @@ fi; fi; + return IsBound( sing_exec ) and IsExec( sing_exec ); +end ); + + +BindGlobal( "CheckSingularExecutableAndTempDir", function ( ) + local i; + # check the executable file, if failed print an error message - while not IsBound( sing_exec ) or not IsExec( sing_exec ) do + while not IsSingularExecutableAvailable() do Print( " Type 'sing_exec:=\"<path>\"; return;' where <path>\n" ); Print( " is the path of the Singular executable file on your \ system.\n" );
