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">&nbsp;&nbsp;</span><a 
href="chap1.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span>
+<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a 
href="chap1.html#X867572118162AAA5">1.2-5 
IsSingularExecutableAvailable</a></span>
 </div></div>
 <div class="ContSect"><span class="tocline"><span 
class="nocss">&nbsp;</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 @@
                           A GAP interface to Singular 
   
   
-                                   2026.04.09
+                                   2026.05.05
   
   
-                                  9 April 2026
+                                   5 May 2026
   
   
                                 Marco Costantini
@@ -44,6 +44,7 @@
       1.2-2 Installing the system GAP
       1.2-3 Installing the package singular
       1.2-4 sing_exec
+      1.2-5 IsSingularExecutableAvailable
     1.3 Interaction with Singular
       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">&nbsp;&nbsp;</span><a 
href="chap1_mj.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span>
+<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a 
href="chap1_mj.html#X867572118162AAA5">1.2-5 
IsSingularExecutableAvailable</a></span>
 </div></div>
 <div class="ContSect"><span class="tocline"><span 
class="nocss">&nbsp;</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">&nbsp;&nbsp;</span><a 
href="chap1.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span>
+<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a 
href="chap1.html#X867572118162AAA5">1.2-5 
IsSingularExecutableAvailable</a></span>
 </div></div>
 <div class="ContSect"><span class="tocline"><span 
class="nocss">&nbsp;</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">&#8227; IsSingularExecutableAvailable</code>( 
 )</td><td class="tdright">(&nbsp;function&nbsp;)</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&gt;</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">&#8227; StartSingular</code>(  )</td><td 
class="tdright">(&nbsp;function&nbsp;)</td></tr></table></div>
 <div class="func"><table class="func" width="100%"><tr><td 
class="tdleft"><code class="func">&#8227; CloseSingular</code>(  )</td><td 
class="tdright">(&nbsp;function&nbsp;)</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 Singular, no 
change is
   required,
   
+  1.2-5 IsSingularExecutableAvailable
+  
+  IsSingularExecutableAvailable(  )  
function
+  
+  The  function IsSingularExecutableAvailable checks 
whether the current value
+  of  sing_exec  (1.2-4)  already  points to an 
executable file, and otherwise
+  tries to resolve it automatically. In particular, if sing_exec 
(1.2-4) names
+  only  a directory, then the file Singular inside that directory 
is tried; if
+  it  contains  no  directory  separator,  then  it  is searched in the system
+  program  path;  and  if sing_exec (1.2-4) is not set or 
cannot be used, then
+  the program name Singular is searched in the system program 
path.
+  
+    Example  
+    gap> IsSingularExecutableAvailable();
+    true
+  
+  
+  If  the function returns true, then sing_exec 
(1.2-4) has been normalized to
+  a  usable  executable path. If it returns false, then the package 
still does
+  not  know  how  to  start  Singular,  and  sing_exec  
(1.2-4)  should be set
+  explicitly before calling StartSingular (1.3-1).
+  
   
   1.3 Interaction with 
Singular
   
@@ -297,7 +319,9 @@
   
   After   the   package   singular   has  been  loaded,  
Singular  is  started
   automatically  when  one  of  the  functions  of  the  interface  is called.
-  Alternatively, one can start Singular with the command 
StartSingular.
+  Alternatively,  one  can  start  Singular with the command 
StartSingular. To
+  check    beforehand    whether    the   executable   can   be   found,   use
+  IsSingularExecutableAvailable (1.2-5).
   
     Example  
     gap> StartSingular();
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">&nbsp;&nbsp;</span><a 
href="chap1_mj.html#X8229A3C4793932BA">1.2-4 sing_exec</a></span>
+<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a 
href="chap1_mj.html#X867572118162AAA5">1.2-5 
IsSingularExecutableAvailable</a></span>
 </div></div>
 <div class="ContSect"><span class="tocline"><span 
class="nocss">&nbsp;</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">&#8227; IsSingularExecutableAvailable</code>( 
 )</td><td class="tdright">(&nbsp;function&nbsp;)</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&gt;</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">&#8227; StartSingular</code>(  )</td><td 
class="tdright">(&nbsp;function&nbsp;)</td></tr></table></div>
 <div class="func"><table class="func" width="100%"><tr><td 
class="tdleft"><code class="func">&#8227; CloseSingular</code>(  )</td><td 
class="tdright">(&nbsp;function&nbsp;)</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 @@
   GroebnerBasis 1.5-1 
   HasTrivialGroebnerBasis 1.5-3 
   InfoSingular 1.7-8 
+  IsSingularExecutableAvailable 1.2-5 
   SetTermOrdering 1.3-5 
   sing_exec 1.2-4 
   sing_exec_options 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" );

Reply via email to