Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gap-nconvex for openSUSE:Factory checked in at 2026-06-16 13:55:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gap-nconvex (Old) and /work/SRC/openSUSE:Factory/.gap-nconvex.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gap-nconvex" Tue Jun 16 13:55:55 2026 rev:3 rq:1359622 version:2025.12.02 Changes: -------- --- /work/SRC/openSUSE:Factory/gap-nconvex/gap-nconvex.changes 2025-10-12 22:28:35.252332787 +0200 +++ /work/SRC/openSUSE:Factory/.gap-nconvex.new.1981/gap-nconvex.changes 2026-06-16 14:01:33.661601794 +0200 @@ -1,0 +2,6 @@ +Mon Jun 15 16:19:25 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 2025.12.02 + * No changelog was provided + +------------------------------------------------------------------- Old: ---- NConvex-2024.12-01.tar.gz New: ---- NConvex-2025.12-02.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gap-nconvex.spec ++++++ --- /var/tmp/diff_new_pack.hsaSqJ/_old 2026-06-16 14:01:34.641642703 +0200 +++ /var/tmp/diff_new_pack.hsaSqJ/_new 2026-06-16 14:01:34.645642870 +0200 @@ -1,7 +1,7 @@ # # spec file for package gap-nconvex # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,8 +17,8 @@ Name: gap-nconvex -Version: 2024.12.01 -%define sillyver 2024.12-01 +Version: 2025.12.02 +%define sillyver 2025.12-02 Release: 0 Summary: GAP: Polyhedral computations License: GPL-2.0-or-later @@ -26,9 +26,9 @@ URL: https://homalg-project.github.io/pkg/NConvex Source: https://github.com/homalg-project/NConvex/releases/download/v%sillyver/NConvex-%sillyver.tar.gz BuildRequires: gap-rpm-devel -Requires: gap-autodoc >= 2018.02.14 +Requires: gap-autodoc >= 2025.12.19 Requires: gap-cddinterface >= 2020.06.24 -Requires: gap-core >= 4.11.1 +Requires: gap-core >= 4.13.0 Requires: gap-modules >= 0.5 Requires: gap-normalizinterface >= 1.1.0 Suggests: gap-4ti2interface >= 2018.07.06 ++++++ NConvex-2024.12-01.tar.gz -> NConvex-2025.12-02.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/PackageInfo.g new/NConvex-2025.12-02/PackageInfo.g --- old/NConvex-2024.12-01/PackageInfo.g 2024-12-28 10:41:18.000000000 +0100 +++ new/NConvex-2025.12-02/PackageInfo.g 2025-12-24 13:44:18.000000000 +0100 @@ -10,9 +10,9 @@ PackageName := "NConvex", Subtitle := "A Gap package to perform polyhedral computations", -Version := "2024.12-01", -Date := "28/12/2024", -Date := "28/12/2024", +Version := "2025.12-02", +Date := "2025-12-24", +Date := "2025-12-24", License := "GPL-2.0-or-later", Persons := [ @@ -35,7 +35,7 @@ rec( IsAuthor := true, - IsMaintainer := true, + IsMaintainer := false, FirstNames := "Sebastian", LastName := "Gutsche", WWWHome := "https://sebasguts.github.io/", @@ -90,8 +90,8 @@ ), Dependencies := rec( - GAP := ">= 4.11.1", - NeededOtherPackages := [ [ "AutoDoc", ">= 2018.02.14" ], + GAP := ">= 4.13.0", + NeededOtherPackages := [ [ "AutoDoc", ">= 2025.12.19" ], [ "Modules", ">= 0.5" ], [ "CddInterface", ">= 2020.06.24" ], [ "NormalizInterface", ">= 1.1.0" ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/README.md new/NConvex-2025.12-02/README.md --- old/NConvex-2024.12-01/README.md 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/README.md 2025-12-24 13:41:12.000000000 +0100 @@ -8,8 +8,6 @@ | [![HTML stable documentation][html-img]][html-url] [![PDF stable documentation][pdf-img]][pdf-url] | [![version][version-img]][version-url] [![date][date-img]][date-url] | [![Build Status][tests-img]][tests-url] | [![Code Coverage][codecov-img]][codecov-url] | <!-- END HEADER --> -[](https://travis-ci.com/homalg-project/NConvex) -[](https://codecov.io/gh/homalg-project/NConvex) Introduction ------------ @@ -17,18 +15,6 @@ cones, polyhedrons, polytopes and fans. Its has been written to provide the needed tools for the package [ToricVarieties](https://github.com/homalg-project/ToricVarieties_project/tree/master/ToricVarieties). <!-- BEGIN FOOTER --> ---- - -### Dependencies - -To obtain current versions of all dependencies, `git clone` (or `git pull` to update) the following repositories: - -| | Repository | git URL | -|--- | ---------- | ------- | -| 1. | [**homalg_project**](https://github.com/homalg-project/homalg_project#readme) | https://github.com/homalg-project/homalg_project.git | -| 2. | [**CddInterface**](https://github.com/homalg-project/CddInterface#readme) | https://github.com/homalg-project/CddInterface.git | -| 3. | [**NormalizInterface**](https://github.com/gap-packages/NormalizInterface#readme) | https://github.com/gap-packages/NormalizInterface.git | - [html-img]: https://img.shields.io/badge/🔗%20HTML-stable-blue.svg [html-url]: https://homalg-project.github.io/NConvex/doc/chap0_mj.html @@ -45,7 +31,7 @@ [tests-url]: https://github.com/homalg-project/NConvex/actions/workflows/Tests.yml?query=branch%3Amaster [codecov-img]: https://codecov.io/gh/homalg-project/NConvex/branch/master/graph/badge.svg -[codecov-url]: https://codecov.io/gh/homalg-project/NConvex +[codecov-url]: https://app.codecov.io/gh/homalg-project/NConvex [code-img]: https://img.shields.io/badge/-View%20code-blue?logo=github [code-url]: https://github.com/homalg-project/NConvex#top diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/ci_gaprc new/NConvex-2025.12-02/ci_gaprc --- old/NConvex-2024.12-01/ci_gaprc 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/ci_gaprc 1970-01-01 01:00:00.000000000 +0100 @@ -1,12 +0,0 @@ -# Prefer GAPInfo.UserGapRoot over other package directories to prevent accidentally testing package -# versions distributed with GAP. -(function() - local name, package_info, pos; - for name in RecNames( GAPInfo.PackagesInfo ) do - package_info := GAPInfo.PackagesInfo.(name); - pos := PositionProperty( package_info, info -> StartsWith( info.InstallationPath, GAPInfo.UserGapRoot ) ); - if pos <> fail then - SetPackagePath( name, package_info[pos].InstallationPath ); - fi; - od; -end)(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/NConvex.toc new/NConvex-2025.12-02/doc/NConvex.toc --- old/NConvex-2024.12-01/doc/NConvex.toc 2024-12-28 10:41:21.000000000 +0100 +++ new/NConvex-2025.12-02/doc/NConvex.toc 1970-01-01 01:00:00.000000000 +0100 @@ -1,136 +0,0 @@ -\contentsline {chapter}{\numberline {1}\textcolor {Chapter }{Introduction}}{3}{chapter.1}% -\contentsline {section}{\numberline {1.1}\textcolor {Chapter }{Installation}}{3}{section.1.1}% -\contentsline {section}{\numberline {1.2}\textcolor {Chapter }{Requirements}}{3}{section.1.2}% -\contentsline {chapter}{\numberline {2}\textcolor {Chapter }{Functionality}}{5}{chapter.2}% -\contentsline {chapter}{\numberline {3}\textcolor {Chapter }{Convex objects}}{6}{chapter.3}% -\contentsline {section}{\numberline {3.1}\textcolor {Chapter }{Attributes}}{6}{section.3.1}% -\contentsline {subsection}{\numberline {3.1.1}\textcolor {Chapter }{AmbientSpaceDimension (for IsConvexObject)}}{6}{subsection.3.1.1}% -\contentsline {subsection}{\numberline {3.1.2}\textcolor {Chapter }{Dimension (for IsConvexObject)}}{6}{subsection.3.1.2}% -\contentsline {subsection}{\numberline {3.1.3}\textcolor {Chapter }{IsFullDimensional (for IsConvexObject)}}{6}{subsection.3.1.3}% -\contentsline {subsection}{\numberline {3.1.4}\textcolor {Chapter }{InteriorPoint (for IsConvexObject)}}{6}{subsection.3.1.4}% -\contentsline {chapter}{\numberline {4}\textcolor {Chapter }{Cones}}{7}{chapter.4}% -\contentsline {section}{\numberline {4.1}\textcolor {Chapter }{Creating cones}}{7}{section.4.1}% -\contentsline {subsection}{\numberline {4.1.1}\textcolor {Chapter }{ConeByInequalities (for IsList)}}{7}{subsection.4.1.1}% -\contentsline {subsection}{\numberline {4.1.2}\textcolor {Chapter }{ConeByEqualitiesAndInequalities (for IsList, IsList)}}{7}{subsection.4.1.2}% -\contentsline {subsection}{\numberline {4.1.3}\textcolor {Chapter }{Cone (for IsList)}}{7}{subsection.4.1.3}% -\contentsline {subsection}{\numberline {4.1.4}\textcolor {Chapter }{Cone (for IsCddPolyhedron)}}{7}{subsection.4.1.4}% -\contentsline {section}{\numberline {4.2}\textcolor {Chapter }{Attributes of Cones}}{8}{section.4.2}% -\contentsline {subsection}{\numberline {4.2.1}\textcolor {Chapter }{DefiningInequalities (for IsCone)}}{8}{subsection.4.2.1}% -\contentsline {subsection}{\numberline {4.2.2}\textcolor {Chapter }{EqualitiesOfCone (for IsCone)}}{8}{subsection.4.2.2}% -\contentsline {subsection}{\numberline {4.2.3}\textcolor {Chapter }{DualCone (for IsCone)}}{8}{subsection.4.2.3}% -\contentsline {subsection}{\numberline {4.2.4}\textcolor {Chapter }{FacesOfCone (for IsCone)}}{8}{subsection.4.2.4}% -\contentsline {subsection}{\numberline {4.2.5}\textcolor {Chapter }{Facets (for IsCone)}}{8}{subsection.4.2.5}% -\contentsline {subsection}{\numberline {4.2.6}\textcolor {Chapter }{FVector (for IsCone)}}{8}{subsection.4.2.6}% -\contentsline {subsection}{\numberline {4.2.7}\textcolor {Chapter }{RelativeInteriorRay (for IsCone)}}{8}{subsection.4.2.7}% -\contentsline {subsection}{\numberline {4.2.8}\textcolor {Chapter }{HilbertBasis (for IsCone)}}{8}{subsection.4.2.8}% -\contentsline {subsection}{\numberline {4.2.9}\textcolor {Chapter }{HilbertBasisOfDualCone (for IsCone)}}{9}{subsection.4.2.9}% -\contentsline {subsection}{\numberline {4.2.10}\textcolor {Chapter }{LinealitySpaceGenerators (for IsCone)}}{9}{subsection.4.2.10}% -\contentsline {subsection}{\numberline {4.2.11}\textcolor {Chapter }{ExternalCddCone (for IsCone)}}{9}{subsection.4.2.11}% -\contentsline {subsection}{\numberline {4.2.12}\textcolor {Chapter }{ExternalNmzCone (for IsCone)}}{9}{subsection.4.2.12}% -\contentsline {subsection}{\numberline {4.2.13}\textcolor {Chapter }{AmbientSpaceDimension (for IsCone)}}{9}{subsection.4.2.13}% -\contentsline {subsection}{\numberline {4.2.14}\textcolor {Chapter }{LatticePointsGenerators (for IsCone)}}{9}{subsection.4.2.14}% -\contentsline {subsection}{\numberline {4.2.15}\textcolor {Chapter }{GridGeneratedByCone (for IsCone)}}{9}{subsection.4.2.15}% -\contentsline {subsection}{\numberline {4.2.16}\textcolor {Chapter }{FactorGrid (for IsCone)}}{10}{subsection.4.2.16}% -\contentsline {subsection}{\numberline {4.2.17}\textcolor {Chapter }{FactorGridMorphism (for IsCone)}}{10}{subsection.4.2.17}% -\contentsline {subsection}{\numberline {4.2.18}\textcolor {Chapter }{GridGeneratedByOrthogonalCone (for IsCone)}}{10}{subsection.4.2.18}% -\contentsline {section}{\numberline {4.3}\textcolor {Chapter }{Properties of Cones}}{10}{section.4.3}% -\contentsline {subsection}{\numberline {4.3.1}\textcolor {Chapter }{IsRegularCone (for IsCone)}}{10}{subsection.4.3.1}% -\contentsline {subsection}{\numberline {4.3.2}\textcolor {Chapter }{IsRay (for IsCone)}}{10}{subsection.4.3.2}% -\contentsline {subsection}{\numberline {4.3.3}\textcolor {Chapter }{IsZero (for IsCone)}}{10}{subsection.4.3.3}% -\contentsline {section}{\numberline {4.4}\textcolor {Chapter }{Operations on cones}}{10}{section.4.4}% -\contentsline {subsection}{\numberline {4.4.1}\textcolor {Chapter }{FourierProjection (for IsCone, IsInt)}}{10}{subsection.4.4.1}% -\contentsline {subsection}{\numberline {4.4.2}\textcolor {Chapter }{IntersectionOfCones (for IsCone, IsCone)}}{11}{subsection.4.4.2}% -\contentsline {subsection}{\numberline {4.4.3}\textcolor {Chapter }{IntersectionOfCones (for IsList)}}{11}{subsection.4.4.3}% -\contentsline {subsection}{\numberline {4.4.4}\textcolor {Chapter }{Contains (for IsCone, IsCone)}}{11}{subsection.4.4.4}% -\contentsline {subsection}{\numberline {4.4.5}\textcolor {Chapter }{IsRelativeInteriorRay (for IsList, IsCone)}}{11}{subsection.4.4.5}% -\contentsline {subsection}{\numberline {4.4.6}\textcolor {Chapter }{NonReducedInequalities (for IsCone)}}{13}{subsection.4.4.6}% -\contentsline {chapter}{\numberline {5}\textcolor {Chapter }{Fans}}{15}{chapter.5}% -\contentsline {section}{\numberline {5.1}\textcolor {Chapter }{Constructors}}{15}{section.5.1}% -\contentsline {subsection}{\numberline {5.1.1}\textcolor {Chapter }{Fan (for IsFan)}}{15}{subsection.5.1.1}% -\contentsline {subsection}{\numberline {5.1.2}\textcolor {Chapter }{Fan (for IsList)}}{15}{subsection.5.1.2}% -\contentsline {subsection}{\numberline {5.1.3}\textcolor {Chapter }{Fan (for IsList, IsList)}}{15}{subsection.5.1.3}% -\contentsline {subsection}{\numberline {5.1.4}\textcolor {Chapter }{FansFromTriangulation (for IsList)}}{17}{subsection.5.1.4}% -\contentsline {subsection}{\numberline {5.1.5}\textcolor {Chapter }{FanFromTriangulation (for IsList)}}{17}{subsection.5.1.5}% -\contentsline {section}{\numberline {5.2}\textcolor {Chapter }{Attributes}}{18}{section.5.2}% -\contentsline {subsection}{\numberline {5.2.1}\textcolor {Chapter }{RayGenerators (for IsFan)}}{18}{subsection.5.2.1}% -\contentsline {subsection}{\numberline {5.2.2}\textcolor {Chapter }{GivenRayGenerators (for IsFan)}}{18}{subsection.5.2.2}% -\contentsline {subsection}{\numberline {5.2.3}\textcolor {Chapter }{RaysInMaximalCones (for IsFan)}}{18}{subsection.5.2.3}% -\contentsline {subsection}{\numberline {5.2.4}\textcolor {Chapter }{MaximalCones (for IsFan)}}{18}{subsection.5.2.4}% -\contentsline {subsection}{\numberline {5.2.5}\textcolor {Chapter }{FVector (for IsFan)}}{18}{subsection.5.2.5}% -\contentsline {section}{\numberline {5.3}\textcolor {Chapter }{Properties}}{18}{section.5.3}% -\contentsline {subsection}{\numberline {5.3.1}\textcolor {Chapter }{IsWellDefinedFan (for IsFan)}}{18}{subsection.5.3.1}% -\contentsline {subsection}{\numberline {5.3.2}\textcolor {Chapter }{IsComplete (for IsFan)}}{18}{subsection.5.3.2}% -\contentsline {subsection}{\numberline {5.3.3}\textcolor {Chapter }{IsPointed (for IsFan)}}{19}{subsection.5.3.3}% -\contentsline {subsection}{\numberline {5.3.4}\textcolor {Chapter }{IsSmooth (for IsFan)}}{19}{subsection.5.3.4}% -\contentsline {subsection}{\numberline {5.3.5}\textcolor {Chapter }{IsSimplicial (for IsFan)}}{19}{subsection.5.3.5}% -\contentsline {subsection}{\numberline {5.3.6}\textcolor {Chapter }{IsNormalFan (for IsFan)}}{19}{subsection.5.3.6}% -\contentsline {subsection}{\numberline {5.3.7}\textcolor {Chapter }{IsRegularFan (for IsFan)}}{19}{subsection.5.3.7}% -\contentsline {subsection}{\numberline {5.3.8}\textcolor {Chapter }{IsFanoFan (for IsFan)}}{19}{subsection.5.3.8}% -\contentsline {section}{\numberline {5.4}\textcolor {Chapter }{Operations on fans}}{19}{section.5.4}% -\contentsline {chapter}{\numberline {6}\textcolor {Chapter }{Polyhedrons}}{21}{chapter.6}% -\contentsline {section}{\numberline {6.1}\textcolor {Chapter }{Creating polyhedron}}{21}{section.6.1}% -\contentsline {subsection}{\numberline {6.1.1}\textcolor {Chapter }{PolyhedronByInequalities (for IsList)}}{21}{subsection.6.1.1}% -\contentsline {subsection}{\numberline {6.1.2}\textcolor {Chapter }{Polyhedron (for IsPolytope, IsCone)}}{21}{subsection.6.1.2}% -\contentsline {subsection}{\numberline {6.1.3}\textcolor {Chapter }{Polyhedron (for IsList, IsCone)}}{21}{subsection.6.1.3}% -\contentsline {subsection}{\numberline {6.1.4}\textcolor {Chapter }{Polyhedron (for IsPolytope, IsList)}}{21}{subsection.6.1.4}% -\contentsline {subsection}{\numberline {6.1.5}\textcolor {Chapter }{Polyhedron (for IsList, IsList)}}{21}{subsection.6.1.5}% -\contentsline {section}{\numberline {6.2}\textcolor {Chapter }{Attributes}}{22}{section.6.2}% -\contentsline {subsection}{\numberline {6.2.1}\textcolor {Chapter }{ExternalCddPolyhedron (for IsPolyhedron)}}{22}{subsection.6.2.1}% -\contentsline {subsection}{\numberline {6.2.2}\textcolor {Chapter }{ExternalNmzPolyhedron (for IsPolyhedron)}}{22}{subsection.6.2.2}% -\contentsline {subsection}{\numberline {6.2.3}\textcolor {Chapter }{DefiningInequalities (for IsPolyhedron)}}{22}{subsection.6.2.3}% -\contentsline {subsection}{\numberline {6.2.4}\textcolor {Chapter }{MainRatPolytope (for IsPolyhedron)}}{22}{subsection.6.2.4}% -\contentsline {subsection}{\numberline {6.2.5}\textcolor {Chapter }{MainPolytope (for IsPolyhedron)}}{22}{subsection.6.2.5}% -\contentsline {subsection}{\numberline {6.2.6}\textcolor {Chapter }{VerticesOfMainRatPolytope (for IsPolyhedron)}}{22}{subsection.6.2.6}% -\contentsline {subsection}{\numberline {6.2.7}\textcolor {Chapter }{VerticesOfMainPolytope (for IsPolyhedron)}}{22}{subsection.6.2.7}% -\contentsline {subsection}{\numberline {6.2.8}\textcolor {Chapter }{TailCone (for IsPolyhedron)}}{23}{subsection.6.2.8}% -\contentsline {subsection}{\numberline {6.2.9}\textcolor {Chapter }{RayGeneratorsOfTailCone (for IsPolyhedron)}}{23}{subsection.6.2.9}% -\contentsline {subsection}{\numberline {6.2.10}\textcolor {Chapter }{LatticePointsGenerators (for IsPolyhedron)}}{23}{subsection.6.2.10}% -\contentsline {subsection}{\numberline {6.2.11}\textcolor {Chapter }{BasisOfLinealitySpace (for IsPolyhedron)}}{23}{subsection.6.2.11}% -\contentsline {subsection}{\numberline {6.2.12}\textcolor {Chapter }{FVector (for IsPolyhedron)}}{23}{subsection.6.2.12}% -\contentsline {section}{\numberline {6.3}\textcolor {Chapter }{Properties}}{23}{section.6.3}% -\contentsline {subsection}{\numberline {6.3.1}\textcolor {Chapter }{IsBounded (for IsPolyhedron)}}{23}{subsection.6.3.1}% -\contentsline {subsection}{\numberline {6.3.2}\textcolor {Chapter }{IsPointed (for IsPolyhedron)}}{23}{subsection.6.3.2}% -\contentsline {section}{\numberline {6.4}\textcolor {Chapter }{Solving Linear programs}}{25}{section.6.4}% -\contentsline {subsection}{\numberline {6.4.1}\textcolor {Chapter }{SolveLinearProgram (for IsPolyhedron, IsString, IsList)}}{25}{subsection.6.4.1}% -\contentsline {subsection}{\numberline {6.4.2}\textcolor {Chapter }{SolveLinearProgram (for IsPolytope, IsString, IsList)}}{25}{subsection.6.4.2}% -\contentsline {section}{\numberline {6.5}\textcolor {Chapter }{ZSolve}}{26}{section.6.5}% -\contentsline {subsection}{\numberline {6.5.1}\textcolor {Chapter }{SolveEqualitiesAndInequalitiesOverIntergers}}{26}{subsection.6.5.1}% -\contentsline {chapter}{\numberline {7}\textcolor {Chapter }{Polytopes}}{28}{chapter.7}% -\contentsline {section}{\numberline {7.1}\textcolor {Chapter }{Creating polytopes}}{28}{section.7.1}% -\contentsline {subsection}{\numberline {7.1.1}\textcolor {Chapter }{PolytopeByInequalities (for IsList)}}{28}{subsection.7.1.1}% -\contentsline {subsection}{\numberline {7.1.2}\textcolor {Chapter }{Polytope (for IsList)}}{28}{subsection.7.1.2}% -\contentsline {section}{\numberline {7.2}\textcolor {Chapter }{Attributes}}{28}{section.7.2}% -\contentsline {subsection}{\numberline {7.2.1}\textcolor {Chapter }{ExternalCddPolytope (for IsPolytope)}}{28}{subsection.7.2.1}% -\contentsline {subsection}{\numberline {7.2.2}\textcolor {Chapter }{LatticePoints (for IsPolytope)}}{28}{subsection.7.2.2}% -\contentsline {subsection}{\numberline {7.2.3}\textcolor {Chapter }{RelativeInteriorLatticePoints (for IsPolytope)}}{28}{subsection.7.2.3}% -\contentsline {subsection}{\numberline {7.2.4}\textcolor {Chapter }{VerticesOfPolytope (for IsPolytope)}}{29}{subsection.7.2.4}% -\contentsline {subsection}{\numberline {7.2.5}\textcolor {Chapter }{Vertices (for IsPolytope)}}{29}{subsection.7.2.5}% -\contentsline {subsection}{\numberline {7.2.6}\textcolor {Chapter }{DefiningInequalities (for IsPolytope)}}{29}{subsection.7.2.6}% -\contentsline {subsection}{\numberline {7.2.7}\textcolor {Chapter }{EqualitiesOfPolytope (for IsPolytope)}}{29}{subsection.7.2.7}% -\contentsline {subsection}{\numberline {7.2.8}\textcolor {Chapter }{FacetInequalities (for IsPolytope)}}{29}{subsection.7.2.8}% -\contentsline {subsection}{\numberline {7.2.9}\textcolor {Chapter }{VerticesInFacets (for IsPolytope)}}{29}{subsection.7.2.9}% -\contentsline {subsection}{\numberline {7.2.10}\textcolor {Chapter }{NormalFan (for IsPolytope)}}{29}{subsection.7.2.10}% -\contentsline {subsection}{\numberline {7.2.11}\textcolor {Chapter }{FaceFan (for IsPolytope)}}{30}{subsection.7.2.11}% -\contentsline {subsection}{\numberline {7.2.12}\textcolor {Chapter }{AffineCone (for IsPolytope)}}{30}{subsection.7.2.12}% -\contentsline {subsection}{\numberline {7.2.13}\textcolor {Chapter }{PolarPolytope (for IsPolytope)}}{30}{subsection.7.2.13}% -\contentsline {subsection}{\numberline {7.2.14}\textcolor {Chapter }{DualPolytope (for IsPolytope)}}{30}{subsection.7.2.14}% -\contentsline {section}{\numberline {7.3}\textcolor {Chapter }{Properties}}{30}{section.7.3}% -\contentsline {subsection}{\numberline {7.3.1}\textcolor {Chapter }{IsEmpty (for IsPolytope)}}{30}{subsection.7.3.1}% -\contentsline {subsection}{\numberline {7.3.2}\textcolor {Chapter }{IsLatticePolytope (for IsPolytope)}}{30}{subsection.7.3.2}% -\contentsline {subsection}{\numberline {7.3.3}\textcolor {Chapter }{IsVeryAmple (for IsPolytope)}}{30}{subsection.7.3.3}% -\contentsline {subsection}{\numberline {7.3.4}\textcolor {Chapter }{IsNormalPolytope (for IsPolytope)}}{31}{subsection.7.3.4}% -\contentsline {subsection}{\numberline {7.3.5}\textcolor {Chapter }{IsSimplicial (for IsPolytope)}}{31}{subsection.7.3.5}% -\contentsline {subsection}{\numberline {7.3.6}\textcolor {Chapter }{IsSimplexPolytope (for IsPolytope)}}{31}{subsection.7.3.6}% -\contentsline {subsection}{\numberline {7.3.7}\textcolor {Chapter }{IsSimplePolytope (for IsPolytope)}}{31}{subsection.7.3.7}% -\contentsline {subsection}{\numberline {7.3.8}\textcolor {Chapter }{IsReflexive (for IsPolytope)}}{31}{subsection.7.3.8}% -\contentsline {subsection}{\numberline {7.3.9}\textcolor {Chapter }{IsFanoPolytope (for IsPolytope)}}{31}{subsection.7.3.9}% -\contentsline {subsection}{\numberline {7.3.10}\textcolor {Chapter }{IsCanonicalFanoPolytope (for IsPolytope)}}{31}{subsection.7.3.10}% -\contentsline {subsection}{\numberline {7.3.11}\textcolor {Chapter }{IsTerminalFanoPolytope (for IsPolytope)}}{32}{subsection.7.3.11}% -\contentsline {subsection}{\numberline {7.3.12}\textcolor {Chapter }{IsSmoothFanoPolytope (for IsPolytope)}}{32}{subsection.7.3.12}% -\contentsline {section}{\numberline {7.4}\textcolor {Chapter }{Operations on polytopes}}{32}{section.7.4}% -\contentsline {subsection}{\numberline {7.4.1}\textcolor {Chapter }{\texttt {\symbol {92}}+ (for IsPolytope, IsPolytope)}}{32}{subsection.7.4.1}% -\contentsline {subsection}{\numberline {7.4.2}\textcolor {Chapter }{\texttt {\symbol {92}}* (for IsInt, IsPolytope)}}{32}{subsection.7.4.2}% -\contentsline {subsection}{\numberline {7.4.3}\textcolor {Chapter }{IntersectionOfPolytopes (for IsPolytope, IsPolytope)}}{32}{subsection.7.4.3}% -\contentsline {subsection}{\numberline {7.4.4}\textcolor {Chapter }{RandomInteriorPoint (for IsPolytope)}}{32}{subsection.7.4.4}% -\contentsline {subsection}{\numberline {7.4.5}\textcolor {Chapter }{IsInteriorPoint (for IsList,IsPolytope)}}{32}{subsection.7.4.5}% -\contentsline {chapter}{Index}{35}{section*.2}% diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/NConvex.xml new/NConvex-2025.12-02/doc/NConvex.xml --- old/NConvex-2024.12-01/doc/NConvex.xml 2024-12-28 10:41:19.000000000 +0100 +++ new/NConvex-2025.12-02/doc/NConvex.xml 2025-12-24 13:44:16.000000000 +0100 @@ -3,7 +3,7 @@ <!-- This is an automatically generated file. --> <!DOCTYPE Book SYSTEM "gapdoc.dtd" [ - [<#Include SYSTEM "_entities.xml"> + <#Include SYSTEM "_entities.xml"> ] > <Book Name="NConvex"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/_Chunks.xml new/NConvex-2025.12-02/doc/_Chunks.xml --- old/NConvex-2024.12-01/doc/_Chunks.xml 2024-12-28 10:41:19.000000000 +0100 +++ new/NConvex-2025.12-02/doc/_Chunks.xml 2025-12-24 13:44:16.000000000 +0100 @@ -516,4 +516,5 @@ <A fan in |R^3> ]]></Listing> + <#/GAPDoc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/_entities.xml new/NConvex-2025.12-02/doc/_entities.xml --- old/NConvex-2024.12-01/doc/_entities.xml 2024-12-28 10:41:19.000000000 +0100 +++ new/NConvex-2025.12-02/doc/_entities.xml 2025-12-24 13:44:16.000000000 +0100 @@ -1,3 +1,6 @@ -<!ENTITY homalg '<Package>homalg</Package>'> -<!ENTITY CAP '<Package>CAP</Package>'> +<!ENTITY VERSION '2025.12-02'> +<!ENTITY RELEASEDATE '24 December 2025'> +<!ENTITY RELEASEYEAR '2025'> +<!ENTITY homalg 'homalg'> +<!ENTITY CAP 'CAP'> <!ENTITY NConvex '<Package>NConvex</Package>'> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/chap0.html new/NConvex-2025.12-02/doc/chap0.html --- old/NConvex-2024.12-01/doc/chap0.html 2024-12-28 10:41:22.000000000 +0100 +++ new/NConvex-2025.12-02/doc/chap0.html 2025-12-24 13:44:19.000000000 +0100 @@ -29,10 +29,10 @@ <h2>A Gap package to perform polyhedral computations</h2> <p> - 2024.12-01</p> + 2025.12-02</p> <p> - 28 December 2024 + 24 December 2025 </p> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/chap0.txt new/NConvex-2025.12-02/doc/chap0.txt --- old/NConvex-2024.12-01/doc/chap0.txt 2024-12-28 10:41:19.000000000 +0100 +++ new/NConvex-2025.12-02/doc/chap0.txt 2025-12-24 13:44:16.000000000 +0100 @@ -6,10 +6,10 @@ [1X A Gap package to perform polyhedral computations [101X - 2024.12-01 + 2025.12-02 - 28 December 2024 + 24 December 2025 Kamal Saleh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/chap0_mj.html new/NConvex-2025.12-02/doc/chap0_mj.html --- old/NConvex-2024.12-01/doc/chap0_mj.html 2024-12-28 10:41:22.000000000 +0100 +++ new/NConvex-2025.12-02/doc/chap0_mj.html 2025-12-24 13:44:19.000000000 +0100 @@ -32,10 +32,10 @@ <h2>A Gap package to perform polyhedral computations</h2> <p> - 2024.12-01</p> + 2025.12-02</p> <p> - 28 December 2024 + 24 December 2025 </p> </div> Binary files old/NConvex-2024.12-01/doc/manual.pdf and new/NConvex-2025.12-02/doc/manual.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/doc/title.xml new/NConvex-2025.12-02/doc/title.xml --- old/NConvex-2024.12-01/doc/title.xml 2024-12-28 10:41:19.000000000 +0100 +++ new/NConvex-2025.12-02/doc/title.xml 2025-12-24 13:44:16.000000000 +0100 @@ -9,7 +9,7 @@ A Gap package to perform polyhedral computations </Subtitle> <Version> - 2024.12-01 + 2025.12-02 </Version> <Author> Kamal Saleh<Alt Only="LaTeX"><Br/></Alt> @@ -38,6 +38,6 @@ </Author> <Date> - 28 December 2024 + 24 December 2025 </Date> </TitlePage> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/make_dist.sh new/NConvex-2025.12-02/make_dist.sh --- old/NConvex-2024.12-01/make_dist.sh 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/make_dist.sh 1970-01-01 01:00:00.000000000 +0100 @@ -1,5 +0,0 @@ -#!/bin/bash - -set -e - -./release-gap-package --skip-existing-release $@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/makedoc.g new/NConvex-2025.12-02/makedoc.g --- old/NConvex-2024.12-01/makedoc.g 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/makedoc.g 2025-12-24 13:41:12.000000000 +0100 @@ -3,9 +3,9 @@ # # This file is a script which compiles the package manual. # -if fail = LoadPackage( "AutoDoc", "2019.05.20" ) then +if fail = LoadPackage( "AutoDoc", "2025.12.19" ) then - Error( "AutoDoc version 2019.05.20 or newer is required." ); + Error( "AutoDoc version 2025.12.19 or newer is required." ); fi; @@ -25,7 +25,7 @@ ), ), scaffold := rec( - entities := [ "homalg", "CAP" ], + entities := rec( homalg := "homalg", CAP := "CAP" ), ), ) ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/makedoc_with_overfull_hbox_warnings.g new/NConvex-2025.12-02/makedoc_with_overfull_hbox_warnings.g --- old/NConvex-2024.12-01/makedoc_with_overfull_hbox_warnings.g 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/makedoc_with_overfull_hbox_warnings.g 2025-12-24 13:41:12.000000000 +0100 @@ -3,9 +3,9 @@ # # This file is a script which compiles the package manual and prints overfull hbox warnings. # -if fail = LoadPackage( "AutoDoc", "2019.05.20" ) then +if fail = LoadPackage( "AutoDoc", "2025.12.19" ) then - Error( "AutoDoc version 2019.05.20 or newer is required." ); + Error( "AutoDoc version 2025.12.19 or newer is required." ); fi; @@ -36,7 +36,7 @@ ), ), scaffold := rec( - entities := [ "homalg", "CAP" ], + entities := rec( homalg := "homalg", CAP := "CAP" ), ), ) ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/makefile new/NConvex-2025.12-02/makefile --- old/NConvex-2024.12-01/makefile 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/makefile 2025-12-24 13:41:12.000000000 +0100 @@ -8,7 +8,7 @@ doc/manual.six: makedoc.g \ PackageInfo.g \ $(wildcard doc/*.autodoc gap/*.gd gap/*.gi examples/*.g examples/*/*.g) - gap makedoc.g + gap --quitonbreak makedoc.g clean: (cd doc ; ./clean) @@ -17,10 +17,10 @@ gap tst/testall.g test-basic-spacing: - grep -RPl "\t" examples/ gap/ && echo "Tabs found" && exit 1 || exit 0 - grep -RPl "\r" examples/ gap/ && echo "Windows line-endings found" && exit 1 || exit 0 - # the second grep is a hack to fix the exit code with -L for grep <= 3.1 - grep -RPzL "\n\z" examples/ gap/ | grep "" && echo "File with no newline at end of file found" && exit 1 || exit 0 + # exit code 1 means no match, which is what we want here (exit code 2 signals an error) + grep -RPl "\t" examples/ gap/; test $$? -eq 1 || (echo "Tabs found" && exit 1) + grep -RPl "\r" examples/ gap/; test $$? -eq 1 || (echo "Windows line-endings found" && exit 1) + grep -RPzL "\n\z" examples/ gap/ | grep ""; test $$? -eq 1 || (echo "File with no newline at end of file found" && exit 1) test-doc: doc cp -aT doc/ doc_tmp/ @@ -32,12 +32,12 @@ gap --quitonbreak --norepl -c 'LoadPackage("profiling"); OutputJsonCoverage("stats", "coverage.json");' test-spacing: - grep -R "[^ [\"] " gap/*.gi && echo "Duplicate spaces found" && exit 1 || exit 0 - grep -RE '[^ ] +$$' gap/* && echo "Trailing whitespace found" && exit 1 || exit 0 + # exit code 1 means no match, which is what we want here (exit code 2 signals an error) + grep -R "[^ [\"] " gap/*.gi; test $$? -eq 1 || (echo "Duplicate spaces found" && exit 1) + grep -RE '[^ ] +$$' gap/*; test $$? -eq 1 || (echo "Trailing whitespace found" && exit 1) for filename in gap/*; do \ echo $$filename; \ gap --quitonbreak --norepl --banner -c "LoadPackage(\"NConvex\"); SizeScreen([4096]); func := ReadAsFunction(\"$$filename\"); FileString(\"gap_spacing\", DisplayString(func));"; \ - echo -e "\033[0m"; \ # In a perfect world, the DisplayString of a function would exactly match our code. However, our line breaks and indentation might differ from the GAP ones, \ # so we remove all indentation, line breaks, and empty lines, and afterwards insert line breaks at semicolons again for better readability. \ cat "gap_spacing" | tail -n +2 | head -n -2 | sed 's/\[ \]/[ ]/g' | sed 's/( )/( )/g' | sed 's/( :/( :/g' | sed 's/ *$$//' | sed 's/^ *//' | grep -v "^$$" | tr "\n" " " | sed 's/;/;\n/g' > modified_gap_spacing; \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/process_coverage.py new/NConvex-2025.12-02/process_coverage.py --- old/NConvex-2024.12-01/process_coverage.py 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/process_coverage.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,90 +0,0 @@ -#!/usr/bin/python3 - -####################################################### -# You should only use the coverage annotations for -# a) lines around errors and warnings, -# b) code solely existing for debugging purposes, -# c) calls of `TryNextMethod` leading to external code. -####################################################### - -# This script applies three rules to all coverage*.json files below the current working directory: -# a) Remove all coverage information of files not below the current working directory -# (this technically includes "tst/testall.g" because it is not referenced by an absolute path). -# b) Strip the current working directory from the paths of files below the current working directory. -# c) Ignore lines with one of the "COVERAGE_IGNORE_..." annotations (see below). - -import json -import re -import os -from pathlib import Path - -regex_block_start = re.compile("^\s*# COVERAGE_IGNORE_BLOCK_START$") -regex_block_end = re.compile("^\s*# COVERAGE_IGNORE_BLOCK_END$") -regex_next_line = re.compile("^\s*# COVERAGE_IGNORE_NEXT_LINE$") -regex_return_void = re.compile("^\s*return;$") - -for coverage_filename in Path("../").glob("**/coverage*.json"): - print("processing coverage file " + str(coverage_filename)) - new_data = {} - new_data["coverage"] = {} - with open(coverage_filename) as json_file: - data = json.load(json_file) - files = data["coverage"] - for filename, lines_covered in files.items(): - if filename.startswith(os.getcwd() + "/"): - print(" processing code file " + filename) - # ignored lines will be delete from lines_covered in-place - new_data["coverage"][filename.replace(os.getcwd() + "/", "", 1)] = lines_covered - line_number = 0 - ignoring = False - ignored_lines = [] - with open(filename) as file: - while True: - line_number += 1 - line = file.readline() - - if not line: - break - - if regex_block_start.match(line) is not None: - if ignoring: - print("Error in line " + str(line_number) + ": start ignoring while already ignoring") - exit(1) - ignoring = True - - if regex_block_end.match(line) is not None: - if not ignoring: - print("Error in line " + str(line_number) + ": end ignoring while not ignoring") - exit(1) - ignoring = False - - if regex_next_line.match(line) is not None: - if ignoring: - print("Error in line " + str(line_number) + ": ignoring next line while already ignoring block") - exit(1) - ignored_lines.append(line_number + 1) - - # ignore empty return statements in precompiled code - # those are inserted automatically by GAP and are never executed - if "precompiled_categories" in filename and regex_return_void.match(line) is not None: - if ignoring: - print("Error in line " + str(line_number) + ": ignoring empty return statement while already ignoring block") - exit(1) - ignored_lines.append(line_number) - - if ignoring: - ignored_lines.append(line_number) - - if ignoring: - print("Error: ignoring until the end of the file") - exit(1) - - for line_number in ignored_lines: - if str(line_number) in lines_covered: - if lines_covered[str(line_number)] != "0": - print("Error in line " + str(line_number) + ": an ignored line is covered") - exit(1) - del lines_covered[str(line_number)] - - with open(coverage_filename, "w") as outfile: - json.dump(new_data, outfile, indent=0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/release-gap-package new/NConvex-2025.12-02/release-gap-package --- old/NConvex-2024.12-01/release-gap-package 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/release-gap-package 1970-01-01 01:00:00.000000000 +0100 @@ -1,686 +0,0 @@ -#!/bin/sh -# -# ReleaseTools - a set of shells script for making GAP package releases -# -# Please always use the latest version of this tool, available from -# <https://github.com/gap-system/ReleaseTools>. -# -# Copyright (c) 2013-2020 Max Horn <[email protected]> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# - -set -e - -###################################################################### -# -# Usage information -# -help() { -cat <<EOF -Usage: $0 [OPTIONS] - -A tool for making releases of GAP packages on GitHub. - -Run this from within a git clone of your package repository, checked out -at the revision you want to release. This tool extracts relevant data -from the PackageInfo.g file, and performs the releases process. - -Actions - -h, --help display this help text and exit - -p, --push perform the final push, completing the release [Default] - -P, --no-push do not perform the final push - -f, --force if a release with the same name already exists: overwrite it - --skip-existing-release if a release with the same name already exists: exit without error - -Paths - --srcdir <path> path of directory containing PackageInfo.g [Default: current directory] - --tmpdir <path> path of temporary directory [Default: tmp subdirectory of srcdir] - --webdir <path> path of web directory [Default: gh-pages subdirectory of srcdir] - --update-script <file> path of the update script [Default: update.g in webdir] - -Custom settings - --token <oauth> GitHub access token - -Notes: -* The package name and version, the list of archive formats, and the GitHub repository - are extracted from PackageInfo.g. -* To learn how to create a GitHub access token, please consult - https://help.github.com/articles/creating-an-access-token-for-command-line-use/ -* Without the --push option, all steps are performed, except for the final push - of the gh-pages changes. These changes are what make the release visible - to the GAP package distribution system. -* Please consult the README for more information. -EOF - exit 0 -} - -###################################################################### -# -# Various little helper functions - - -# print notices in green -notice() { - printf '\033[32m%s\033[0m\n' "$*" -} - -# print warnings in yellow -warning() { - printf '\033[33mWARNING: %s\033[0m\n' "$*" -} - -# print error in red and exit -error() { - printf '\033[31mERROR: %s\033[0m\n' "$*" - exit 1 -} - -# check for uncommitted changes -verify_git_clean() { - git update-index --refresh || error "uncommitted changes detected" - git diff-index --quiet HEAD -- || error "uncommitted changes detected" -} - -# execute GAP commands from a heredoc, and export its output in the shell -# variable `gap_output`; abort if GAP reported any errors -run_gap() { - # Invoke GAP. The final call to 'tr' removes newlines and is a workaround - # for people whose gap script is broken (by not honoring -A, thus loading - # Browse, which inserts that extra character). I am looking at you, - # Sebastian! - gap_output=$( \ - (echo 'OnBreak:=function() Print("FATAL ERROR"); FORCE_QUIT_GAP(1); end;;' ; cat - ; echo ; echo "FORCE_QUIT_GAP(0);") \ - | $GAP -A -q -b 2>&1 \ - | tr -d '\r' ) - mkdir -p "$TMP_DIR" - echo "$gap_output" > "$TMP_DIR/gap-error.log" - if echo "$gap_output" | grep -q '\(Error\|FATAL ERROR\|Syntax \)' ; then - error "there was an error running GAP, see $TMP_DIR/gap-error.log" - fi -} - -# helper function for parsing GitHub's JSON output. Right now, -# we only extract the value of a single key at a time. This means -# we may end up parsing the same JSON data two times, but that -# doesn't really matter as it is tiny. -json_get_key() { - echo "$response" | python -c 'import json,sys;obj=json.load(sys.stdin);print(obj.get("'"$1"'",""))' -} - -# On Mac OS X, tar stores extended attributes in ._FOO files inside archives. -# Setting COPYFILE_DISABLE prevents that. See <http://superuser.com/a/260264> -export COPYFILE_DISABLE=1 - - -###################################################################### -# -# Command line processing -# -SRC_DIR="$PWD" -TMP_DIR="$PWD/tmp" -PackageInfoURL= -README_URL= - -PUSH=yes -FORCE=no -ONLY_TARBALL=no -SKIP_EXISTING_RELEASE=no -while [ x"$1" != x ]; do - option="$1" ; shift - case "$option" in - -h | --help ) help ;; - - --srcdir ) SRC_DIR="$1"; shift ;; - --webdir ) WEB_DIR="$1"; shift ;; - --tmpdir ) TMP_DIR="$1"; shift ;; - --update-script ) UPDATE_SCRIPT="$1"; shift ;; - - --srcdir=*) SRC_DIR=${option#--srcdir=}; shift ;; - --webdir=*) WEB_DIR=${option#--webdir=}; shift ;; - --tmpdir=*) TMP_DIR=${option#--tmpdir=}; shift ;; - --update-script=*) UPDATE_SCRIPT=${option#--update-script=}; shift ;; - - --token ) TOKEN="$1"; shift ;; - - -p | --push ) PUSH=yes ;; - -P | --no-push ) PUSH=no ;; - - -f | --force ) FORCE=yes ;; - --no-force ) FORCE=no ;; - - --only-tarball ) ONLY_TARBALL=yes ;; - - --skip-existing-release ) SKIP_EXISTING_RELEASE=yes ;; - - -- ) break ;; - * ) error "unknown option '$option'" ;; - esac -done - - -###################################################################### -# -# Some initial sanity checks -# - -cd "$SRC_DIR" - -if [ ! -f PackageInfo.g ] ; then - error "unable to read PackageInfo.g file, use --help for instructions" -fi - -# Check for webdir presence -if [ "x$WEB_DIR" = x ] ; then - WEB_DIR="$SRC_DIR/gh-pages" -fi -if [ ! -d "$WEB_DIR" ] ; then - error "could not find 'webdir' with clone of your gh-pages branch" -fi - -# Check for presence of the update script -if [ "x$UPDATE_SCRIPT" = x ] ; then - UPDATE_SCRIPT="$WEB_DIR/update.g" -fi -if [ ! -f "$UPDATE_SCRIPT" ] ; then - error "could not find update script \"${UPDATE_SCRIPT}\"" -fi - -# Check whether GAP is usable -GAP=${GAP:-gap} -command -v "$GAP" >/dev/null 2>&1 || - error "could not find GAP (perhaps set the GAP environment variable?)" - -command -v curl >/dev/null 2>&1 || - error "the 'curl' command was not found, please install it" - -command -v git >/dev/null 2>&1 || - error "the 'git' command was not found, please install it" - -command -v python >/dev/null 2>&1 || - error "the 'python' command was not found, please install it" - -verify_git_clean - - -###################################################################### -# -# Determine package name and version, and other meta data -# -notice "Extracting information from PackageInfo.g..." -run_gap <<EOF -Read("PackageInfo.g"); -Print("PKG=\"",GAPInfo.PackageInfoCurrent.PackageName,"\"\n"); -Print("VERSION=\"",GAPInfo.PackageInfoCurrent.Version,"\"\n"); -tmp:=GAPInfo.PackageInfoCurrent.Date;; # either YYYY-MM-DD or DD/MM/YYYY format -Print("DATE=\"",tmp,"\"\n"); -Print("PackageInfoURL=\"",GAPInfo.PackageInfoCurrent.PackageInfoURL,"\"\n"); -Print("README_URL=\"",GAPInfo.PackageInfoCurrent.README_URL,"\"\n"); -# extract archive formats; these can be comma or space separated, we want -# to output them space separated -tmp := GAPInfo.PackageInfoCurrent.ArchiveFormats;; -tmp := JoinStringsWithSeparator(SplitString(tmp, ", "), " ");; -Print("ARCHIVE_FORMATS=\"",tmp,"\"\n"); -tmp := SplitString(GAPInfo.PackageInfoCurrent.ArchiveURL, "/");; -if Length(tmp) = 9 and tmp{[1,2,3,6,7]} = ["https:","","github.com","releases","download"] then - Print("REPO=\"",Concatenation(tmp[4],"/",tmp[5]),"\"\n"); - Print("TAG=\"",tmp[8],"\"\n"); - len := Length(tmp[9]) - Length(GAPInfo.PackageInfoCurrent.Version); - if len > 0 then - Print("BASENAME=\"",tmp[9]{[1..len]},"\"\n"); - fi; -else - tmp := GAPInfo.PackageInfoCurrent.ArchiveURL; - Print("GAP_ERROR=\"The ArchiveURL has unexpected value '",tmp,"'\"\n"); -fi; -Print("PDFFile=\"",GAPInfo.PackageInfoCurrent.PackageDoc.PDFFile,"\"\n"); -EOF - -# evaluate the output of GAP, which should be valid shell script code -eval "$gap_output" -if [ x"$GAP_ERROR" != "x" ] ; then - error "$GAP_ERROR" -fi - -notice "Package $PKG $VERSION" -case "$VERSION" in - *dev) error "Must not use 'dev' versions for package releases" ;; -esac - -###################################################################### -# -# Run makedoc.g (if present), as that also can uncover mistakes (e.g. -# for projects which generate doc/title.xml from PackageInfo.g, it is -# easy to forget that when making the release commit). -# -if [ -f makedoc.g ] ; then - notice "Building GAP package documentation (using makedoc.g)" - run_gap <<GAPInput -if not IsPackageMarkedForLoading("$PKG", "") then - SetPackagePath("$PKG", "."); -fi; -Read("makedoc.g"); -GAPInput -elif [ -f doc/make_doc ] ; then - notice "Building GAP package documentation (using doc/make_doc)" - cd doc && ./make_doc && cd .. -else - warning "Could not build manual (no makedoc.g and no doc/make_doc found)" -fi - -# check if building the manual modified any files -verify_git_clean - - -###################################################################### -# -# Determine the basename for the package archives -# -# -if [ x"$BASENAME" = "x" ] ; then - BASENAME="$PKG-" -fi -BASENAME="$BASENAME$VERSION" -notice "Using archive basename $BASENAME" - - -###################################################################### -# -# Fetch GitHub oauth token, used to authenticate the following commands. -# See https://help.github.com/articles/git-automation-with-oauth-tokens/ -# -if [ "x$TOKEN" = x ] ; then - TOKEN=$(git config --get github.token || echo) -fi -if [ "x$TOKEN" = x ] && [ -r ~/.github_shell_token ] ; then - TOKEN=$(cat ~/.github_shell_token) -fi -if [ "x$TOKEN" = x ] ; then - error "could not determine GitHub access token, please consult the README" -fi - - -###################################################################### -# -# Determine GitHub repository and username, and the current branch -# -notice "Using GitHub repository $REPO" - -GITHUB_USER=$(dirname "$REPO") -notice "Using GitHub username $GITHUB_USER" - -BRANCH=$(git symbolic-ref -q --short HEAD) -notice "Using branch $BRANCH" - - -###################################################################### -# -# Derive API urls -# -API_URL=https://api.github.com/repos/$REPO/releases -UPLOAD_URL=https://uploads.github.com/repos/$REPO/releases - - -###################################################################### -# -# Determine the tag -# -verify_git_clean - -if git show-ref -q "$TAG" ; then - notice "Using git tag $TAG (derived from ArchiveURL in in PackageInfo.g)" -else - notice "Creating git tag $TAG" - git tag "$TAG" -fi; - -###################################################################### -# -# Check if a GitHub release for this tag already exists -# -response=$(curl -s -S -X GET "$API_URL/tags/$TAG" -H "Authorization: token $TOKEN") -MESSAGE=$(json_get_key message) -RELEASE_ID=$(json_get_key id) - -if [ "$MESSAGE" = "Not Found" ] ; then - MESSAGE= # release does not yet exist -> that's how we like it -elif [ x"$RELEASE_ID" != x ] ; then - # release already exists -> skip, error out or delete it - if [ "x$SKIP_EXISTING_RELEASE" = xyes ] ; then - notice "release $TAG already exists on GitHub, skipping release" - exit 0 - elif [ "x$FORCE" = xyes ] ; then - notice "Deleting existing release $TAG from GitHub" - response=$(curl --fail -s -S -X DELETE "$API_URL/$RELEASE_ID" -H "Authorization: token $TOKEN") - MESSAGE= - else - error "release $TAG already exists on GitHub, aborting (use --force to override this)" - fi -fi - -if [ x"$MESSAGE" != x ] ; then - error "accessing GitHub failed: $MESSAGE" -fi - -###################################################################### -# -# Validate the tag -# -HEAD_REF=$(git rev-parse --verify HEAD) -TAG_REF=$(git rev-parse --verify "$TAG^{}") - -if [ "x$TAG_REF" != "x$HEAD_REF" ] ; then - error "tag $TAG is not the HEAD commit -- did you tag the right commit?" -fi - - -echo "" - - -###################################################################### -# -# Get fresh (unmodified) copies of the files, and generate some stuff -# - -# Clean any remains of previous export attempts -mkdir -p "$TMP_DIR" -rm -rf "${TMP_DIR:?}/$BASENAME"* - -# Set umask to ensure the file permissions in the release -# archives are sane. -umask 0022 - -notice "Exporting repository content for tag '$TAG'" -git archive --prefix="$BASENAME/" "$TAG" . | tar xf - -C "$TMP_DIR" - - -# Build the package documentation, run autoconf, etc. -cd "$TMP_DIR/$BASENAME" - -# adjust date -# Note that we cannot use sed's `-i` option for in-place editing, as -# that is a non-portable extension of POSIX, which works differently in -# BSD and GNU make. -sed "s;Date := .*;Date := \"$(date +%d/%m/%Y)\",;" PackageInfo.g > PackageInfo.g.bak -mv PackageInfo.g.bak PackageInfo.g - -notice "Removing unnecessary files" -# Remove recursively in case there is a .github directory -rm -rf .git* .hg* .cvs* .circleci -rm -f .appveyor.yml .codecov.yml .travis.yml - -# execute .release script, if present -if [ -f .release ] ; then - # the .release script can perform additional preparation, e.g.: - # * add files for distribution which are not part of the repository; - # * remove further files not intended for distribution (e.g. scripts/ directory); - # * build the package manual in a custom way; - # * perform additional sanity checks; - # * ... - . ./.release - rm -f .release -fi - -if [ -x autogen.sh ] ; then - notice "Generating build system files" - sh autogen.sh - rm -rf autom4te.cache -fi - -if [ -f makedoc.g ] ; then - notice "Building GAP package documentation for archives (using makedoc.g)" - run_gap <<GAPInput -if not IsPackageMarkedForLoading("$PKG", "") then - SetPackagePath("$PKG", "."); -fi; -PushOptions(rec(relativePath:="../../..")); -Read("makedoc.g"); -GAPInput - rm -f doc/*.tex - rm -f doc/*.aux doc/*.bbl doc/*.blg doc/*.brf doc/*.idx doc/*.ilg doc/*.ind doc/*.log doc/*.out doc/*.pnr doc/*.tst -elif [ -f doc/make_doc ] ; then - notice "Copying GAP package documentation for archives (using doc/make_doc)" - cp -r "$SRC_DIR/doc" . - cp -r "$SRC_DIR/htm" . - rm -f doc/*.aux doc/*.bbl doc/*.blg doc/*.brf doc/*.idx doc/*.ilg doc/*.ind doc/*.log doc/*.out doc/*.pnr doc/*.tst -fi - -# make sure every file is readable -chmod -R a+r . - -# replace links to packages which are possibly referenced in the documentation, keep this in sync with `Tests.yml.j2` -for package in CAP_project/CAP CAP_project/CompilerForCAP CAP_project/MonoidalCategories CAP_project/CartesianCategories CAP_project/FreydCategoriesForCAP HigherHomologicalAlgebra/ToolsForHigherHomologicalAlgebra homalg_project/homalg homalg_project/Modules Toposes; do - - # adjust links to other manuals - # Note that we cannot use sed's `-i` option for in-place editing, as - # that is a non-portable extension of POSIX, which works differently in - # BSD and GNU make. - for f in ./*/*.htm* ; do - sed "s;href=\"/home/gap/.gap/pkg/$package/doc/;href=\"https://homalg-project.github.io/$package/doc/;g" "$f" > "$f.bak" - mv "$f.bak" "$f" - done - -done - -# basic sanity check -fgrep -q -r '<a href="/' */*.htm* && - error "HTML manual contains absolute paths" - - -###################################################################### -# -# Validate PackageInfo.g -# -echo "" -notice "Validating PackageInfo.g..." -run_gap <<GAPInput || error "validation failed" -if not ValidatePackageInfo("PackageInfo.g") then - FORCE_QUIT_GAP(1); -fi; -GAPInput - - -###################################################################### -# -# Verify README_URL refers to an existing file -# -README_NAME=$(basename "$README_URL") -[ -f "$README_NAME" ] || - error "No file named '$README_NAME' exists; is your README_URL valid?" - - -###################################################################### -# -# Create all archive files requested by ARCHIVE_FORMATS -# -cd "$TMP_DIR" -echo "" -for EXT in $ARCHIVE_FORMATS ; do - ARCHIVENAME=$BASENAME$EXT - FULLNAME="$TMP_DIR/$ARCHIVENAME" - notice "Creating $ARCHIVENAME ..." - case $EXT in - .tar.gz) tar cf - "$BASENAME" | gzip -9c > "$ARCHIVENAME" ;; - .tar.bz2) tar cf - "$BASENAME" | bzip2 -9c > "$ARCHIVENAME" ;; - .zip) zip -r9 --quiet "$ARCHIVENAME" "$BASENAME" ;; - *) - warning "unsupported archive format $EXT" - continue - ;; - esac - if [ ! -f "$FULLNAME" ] ; then - error "failed creating $FULLNAME" - fi -done - - -###################################################################### -# -# Abort early if user requested only creation of tarballs -# -if [ "x$ONLY_TARBALL" = xyes ] ; then - exit 0 -fi - -###################################################################### -# -# Push commits to GitHub -# - -cd "$SRC_DIR" - -# construct GitHub URL for pushing -REMOTE="https://$GITHUB_USER:[email protected]/$REPO" - -# Make sure the branch is on the server -notice "Pushing your branch to GitHub" -git push "$REMOTE" "$BRANCH" - -# Make sure the tag is on the server -notice "Pushing your tag to GitHub" -if [ "x$FORCE" = xyes ] ; then - git push --force "$REMOTE" "$TAG" -else - git push "$REMOTE" "$TAG" -fi - - -###################################################################### -# -# Create the GitHub release -# - -# Create the release by sending suitable JSON -DATA=$(cat <<EOF -{ - "tag_name": "$TAG", - "name": "$PKG $VERSION", - "body": "Release for $PKG", - "draft": false, - "prerelease": false -} -EOF -) - -notice "Creating new release $TAG on GitHub" -response=$(curl -s -S -H "Content-Type: application/json" \ - -X POST --data "$DATA" "$API_URL" -H "Authorization: token $TOKEN") - -MESSAGE=$(json_get_key message) -if [ x"$MESSAGE" != x ] ; then - error "creating release on GitHub failed: $MESSAGE" -fi -RELEASE_ID=$(json_get_key id) -if [ x"$RELEASE_ID" = x ] ; then - error "creating release on GitHub failed: no release id" -fi - - -###################################################################### -# -# Upload all archive files requested by ARCHIVE_FORMATS -# -cd "$TMP_DIR" -echo "" -for EXT in $ARCHIVE_FORMATS ; do - ARCHIVENAME=$BASENAME$EXT - FULLNAME="$TMP_DIR/$ARCHIVENAME" - case $EXT in - .tar.gz) MIMETYPE="application/x-gzip" ;; - .tar.bz2) MIMETYPE="application/x-bzip2" ;; - .zip) MIMETYPE="application/zip" ;; - *) continue ;; - esac - if [ ! -f "$FULLNAME" ] ; then - error "failed creating $FULLNAME" - fi - notice "Uploading $ARCHIVENAME with mime type $MIMETYPE" - response=$(curl --fail --progress-bar -o "$TMP_DIR/upload.log" \ - -X POST "$UPLOAD_URL/$RELEASE_ID/assets?name=$ARCHIVENAME" \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token $TOKEN" \ - -H "Content-Type: $MIMETYPE" \ - --data-binary @"$FULLNAME") -done - - -###################################################################### -# -# Upload PDF -# -cd "$TMP_DIR" -echo "" - -FULLNAME="$TMP_DIR/$BASENAME/$PDFFile" -if [ ! -f "$FULLNAME" ] ; then - error "could not find PDF" -fi -notice "Uploading PDF" -response=$(curl --fail --progress-bar -o "$TMP_DIR/upload_pdf.log" \ - -X POST "$UPLOAD_URL/$RELEASE_ID/assets?name=$BASENAME.pdf" \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token $TOKEN" \ - -H "Content-Type: application/pdf" \ - --data-binary @"$FULLNAME") - - -###################################################################### -# -# Update the website -# -notice "Updating website" -cd "$WEB_DIR" -git pull --ff-only - -cp "$TMP_DIR/$BASENAME/$README_NAME" . -cp "$TMP_DIR/$BASENAME/PackageInfo.g" . -rm -rf doc/ htm/ -if [ -f "$TMP_DIR/$BASENAME/doc/chap0.html" ] ; then - mkdir -p doc/ - for ext in css html js txt ; do - cp "$TMP_DIR/$BASENAME/doc"/*.$ext doc/ - done -fi -if [ -d "$TMP_DIR/$BASENAME/htm" ] ; then - cp -r "$TMP_DIR/$BASENAME/htm" . -fi - -# adjust links to the GAP manuals -# Note that we cannot use sed's `-i` option for in-place editing, as -# that is a non-portable extension of POSIX, which works differently in -# BSD and GNU make. -for f in ./*/*.htm* ; do - sed 's;href="../../../doc/;href="https://www.gap-system.org/Manuals/doc/;g' "$f" > "$f.bak" - mv "$f.bak" "$f" -done - -run_gap <<GAPInput -Read("$UPDATE_SCRIPT"); -GAPInput - -git add -A -git commit -m "Update website for $PKG $VERSION" - -if [ "x$PUSH" = xyes ] ; then - notice "Pushing website changes" - git push "$REMOTE" - notice "Done" - notice "Your PackageInfo.g is now at $PackageInfoURL" -else - warning "To complete your release, run 'git push' in your gh-pages directory" - notice "Afterwards, your PackageInfo.g will be at $PackageInfoURL" -fi - -exit 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/tst/testall.g new/NConvex-2025.12-02/tst/testall.g --- old/NConvex-2024.12-01/tst/testall.g 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/tst/testall.g 2025-12-24 13:41:12.000000000 +0100 @@ -4,16 +4,8 @@ # This file runs package tests. It is also referenced in the package # metadata in PackageInfo.g. # - -# Until the issue https://github.com/homalg-project/NConvex/issues/5 has been solved -exclude := []; -if IsBound( IsPackageLoaded ) and IsPackageLoaded( "majoranaalgebras" ) then - exclude := [ "nconvex02.tst" ]; -fi; - options := rec( exitGAP := true, - exclude := exclude, testOptions := rec( compareFunction := "uptowhitespace", ), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/NConvex-2024.12-01/upload_codecov.sh new/NConvex-2025.12-02/upload_codecov.sh --- old/NConvex-2024.12-01/upload_codecov.sh 2024-12-28 10:36:33.000000000 +0100 +++ new/NConvex-2025.12-02/upload_codecov.sh 1970-01-01 01:00:00.000000000 +0100 @@ -1,26 +0,0 @@ -#!/bin/bash - -set -e - -# get GPG key -curl -O https://keybase.io/codecovsecurity/pgp_keys.asc -# verify fingerprint -if ! gpg --import --import-options show-only --with-fingerprint pgp_keys.asc | grep "2703 4E7F DB85 0E0B BC2C 62FF 806B B28A ED77 9869"; then - echo "Downloaded GPG key has wrong fingerprint" - exit 1 -fi -# import key into special keyring used by gpgv below -gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.kbx --import pgp_keys.asc - -# get uploader with signatures -curl -O https://uploader.codecov.io/latest/linux/codecov -curl -O https://uploader.codecov.io/latest/linux/codecov.SHA256SUM -curl -O https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig - -# verify -gpgv codecov.SHA256SUM.sig codecov.SHA256SUM -shasum -a 256 -c codecov.SHA256SUM - -# execute -chmod +x codecov -./codecov -Z || ./codecov -Z || ./codecov -Z ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.hsaSqJ/_old 2026-06-16 14:01:34.821650217 +0200 +++ /var/tmp/diff_new_pack.hsaSqJ/_new 2026-06-16 14:01:34.829650551 +0200 @@ -1,5 +1,5 @@ -mtime: 1760206308 -commit: 8c64e699032a72e91fd9864d3ec105ae4dea95af5f96ccc463c9f1b7f328c642 +mtime: 1781540382 +commit: 28fecca024dae4f45a9f1d3555d304611aa904e7b110eab434b93b0b21ffda63 url: https://src.opensuse.org/jengelh/gap-nconvex 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-06-15 18:19:42.000000000 +0200 @@ -0,0 +1 @@ +.osc
