macaulay2 (1.19.1+ds-8+rpi1) bookworm-staging; urgency=medium
authorPeter Michael Green <plugwash@raspbian.org>
Sun, 1 May 2022 18:10:02 +0000 (19:10 +0100)
committerPeter Michael Green <plugwash@raspbian.org>
Sun, 1 May 2022 18:10:02 +0000 (19:10 +0100)
  [Changes introduced in 1.18+ds-1+rpi1 by Peter Michael Green]
  * Disable testsuite.
  * Link individual font files rather than whole directory to avoid errors
    on ".uuid" file.
  * Disable upstream clean target, it's worse than useless
  * Start writing manual cleanup (far from complete at this point)

  [changes introduced in 1.19.1+ds-8+rpi1 by Peter Michael Green]
  * Disable documentation build.
  * Extend manual cleaning (still not complete).

[dgit import unpatched macaulay2 1.19.1+ds-8+rpi1]

67 files changed:
1  2 
debian/README.Debian
debian/changelog
debian/clean
debian/control
debian/copyright
debian/elpa-macaulay2.docs
debian/elpa-macaulay2.elpa
debian/elpa-test
debian/examples/Macaulay2Doc/_application__Directory.out
debian/examples/Macaulay2Doc/_application__Directory__Suffix.out
debian/examples/Macaulay2Doc/_getenv.out
debian/examples/Macaulay2Doc/_home__Directory.out
debian/gbp.conf
debian/macaulay2-common.doc-base
debian/macaulay2-common.info
debian/macaulay2-common.install
debian/macaulay2-common.links
debian/macaulay2-common.linktrees
debian/macaulay2-common.lintian-overrides
debian/macaulay2-pkg.el.in
debian/macaulay2.install
debian/macaulay2.links
debian/macaulay2.postinst
debian/macaulay2.prerm
debian/missing-sources/nouislider.css/nouislider.css
debian/missing-sources/nouislider.css/nouislider.pips.css
debian/missing-sources/nouislider.css/nouislider.tooltips.css
debian/missing-sources/nouislider.js/constants.js
debian/missing-sources/nouislider.js/helpers.js
debian/missing-sources/nouislider.js/interface.js
debian/missing-sources/nouislider.js/intro.js
debian/missing-sources/nouislider.js/options.js
debian/missing-sources/nouislider.js/outro.js
debian/missing-sources/nouislider.js/pips.js
debian/missing-sources/nouislider.js/range.js
debian/missing-sources/nouislider.js/scope.js
debian/missing-sources/nouislider.js/scope_end.js
debian/missing-sources/nouislider.js/scope_events.js
debian/missing-sources/nouislider.js/scope_helpers.js
debian/missing-sources/nouislider.js/scope_start.js
debian/missing-sources/nouislider.js/structure.js
debian/missing-sources/nouislider.js/tooltips.js
debian/missing-sources/render-a11y-string.js
debian/not-installed
debian/patches/git-description.patch
debian/patches/givaro-bool-constant.patch
debian/patches/reproducible-version.patch
debian/patches/series
debian/patches/skip-failing-core-tests.patch
debian/patches/skip-failing-package-tests.patch
debian/patches/tbb-2021.patch
debian/patches/use-cached-examples.patch
debian/patches/use-dh-elpa.patch
debian/patches/use-shared-mathicgb-and-friends.patch
debian/rules
debian/salsa-ci.yml
debian/scripts/Debian.m2
debian/scripts/m2-get-orig-source.sh
debian/scripts/m2-tarball-warning.sh
debian/source/format
debian/source/include-binaries
debian/source/lintian-overrides
debian/source/options
debian/tests/check-doc-db.m2
debian/tests/control
debian/upstream/metadata
debian/watch

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fea477a7d402d7fc062d3f47d216e6dfe88e4b01
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,68 @@@
++Macaulay2 for Debian
++====================
++
++Javascript libraries
++--------------------
++Macaulay2 uses a number of Javascript libraries.  In particular, they
++are used to render mathematical expressions in the browser-based
++documentation and to visualize various mathematical objects by the
++Visualize package.
++
++Upstream embeds these libraries in the source code, often minimized.
++This is not desirable for the Debian package.  For the libraries that
++are already available in Debian, we repack the tarball (using
++Files-Excluded in debian/copyright) without the embedded copies and
++use dh_linktree to create symbolic links to the Debian versions.
++
++There are three libraries that are not yet available in Debian, and so
++the embedded copies remain.  In particular:
++
++* BootSideMenu (ITP #960097).  Macaulay2 ships the full source code.
++
++* noUiSlider (ITP #960618).  Macaulay2 ships minified source, so we
++  include the full source code in debian/missing-sources, obtained
++  from https://github.com/leongersen/noUiSlider/tree/8.5.1.
++
++* The render-a11y-string KaTeX extension. It was added in KaTeX
++  version 0.11.0, but only 0.10.2 is currently available in Debian.
++  Macaulay2 ships minified source, so we include the full source code
++  in debian/missing-sources, obtained from
++  https://github.com/KaTeX/KaTeX/tree/v0.12.0.
++
++dwww
++----
++The Macaulay2 documentation is registered with doc-base.  In order to
++view the html documentation properly in your web browser using dwww,
++you must append "/usr/share/Macaulay2" to DWWW_DOCPATH in
++/etc/dwww/dwww.conf.  Otherwise, some resources (e.g., CSS and
++Javascript files) will be unavailable.
++
++Suggested packages
++------------------
++Quite a few additional Debian packages will be installed alongside
++Macaulay2 automatically due to being listed in "Depends" or
++"Recommended", but there are a number of others that are listed under
++"Suggests" that will not be installed unless you pass
++"--install-suggests" to apt or install them separately.  They are:
++
++* dot2tex - Used by showTikZ function in Graphs package.
++
++* fig2dev - Used by gfanRender and gfanRenderStaircase functions in
++  gfanInterface package.
++
++* graphviz - Used by displayGraph function in Graphs package.
++
++* pdf-viewer (virtual package) - Used by displayPoset function in
++  Posets package.  The default pdf viewer is called using xdg-open;
++  use xdg-mime to change it.
++
++* phcpack - Used by MonodromySolver, NumericalSchubertCalculus, and
++  PHCpack packages.
++
++* polymake - Used by Polymake, StatePolytope, and Tropical packages.
++
++* qepcad - Used by CoincidentRootLoci package.
++
++* sdpa - Used by SemidefiniteProgramming package.
++
++ -- Doug Torrance <dtorrance@debian.org>, Thu, 27 Jan 2022 11:32:40 -0500
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1c9b57ed3a289fa48a3cbdb0113b400fc4a069fc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,804 @@@
++macaulay2 (1.19.1+ds-8+rpi1) bookworm-staging; urgency=medium
++
++  [Changes introduced in 1.18+ds-1+rpi1 by Peter Michael Green]
++  * Disable testsuite.
++  * Link individual font files rather than whole directory to avoid errors
++    on ".uuid" file.
++  * Disable upstream clean target, it's worse than useless
++  * Start writing manual cleanup (far from complete at this point)
++  
++  [changes introduced in 1.19.1+ds-8+rpi1 by Peter Michael Green]
++  * Disable documentation build.
++  * Extend manual cleaning (still not complete).
++
++ -- Peter Michael Green <plugwash@raspbian.org>  Sun, 01 May 2022 18:10:02 +0000
++
++macaulay2 (1.19.1+ds-8) unstable; urgency=medium
++
++  * debian/tests/control
++    - Add 4ti2, gfan, and normaliz to Depends for core-tests
++      (Closes: #1010172).
++
++ -- Doug Torrance <dtorrance@debian.org>  Mon, 25 Apr 2022 14:14:15 -0400
++
++macaulay2 (1.19.1+ds-7) unstable; urgency=medium
++
++  * debian/gbp.conf
++    - Switch to "debian/latest" for Debian branch; recommended by DEP-14.
++  * debian/macaulay2-common.links
++    - New file; use dh_link to create symlinks to GPL text for docs.
++  * debian/macaulay2-common.linktree
++    - Stop use dh_linktree for creating symlinks to GPL text for docs;
++      was creating unnecessary versioned dependency on base-files
++      (Closes: #1009838).
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip new failing package tests:
++      + check(4, "ThreadedGB"); failing on ppc64el.
++      + check({25, 31}, "AssociativeAlgebras"); failing  on ppc64el
++         (Closes: #1010096).
++  * debian/scripts/m2-get-orig-source.sh
++    - Run missingPackages() when --merge option is given to see if any new
++      packages should be added to d/copyright.
++  * debian/tests/control
++    - Split each "M2 --check n" into its own separate test.
++    - Use "macaulay2" instead of "@" in Depends since we don't need
++      elpa-macaulay2.
++    - Add test names.
++
++ -- Doug Torrance <dtorrance@debian.org>  Sun, 24 Apr 2022 21:05:14 -0400
++
++macaulay2 (1.19.1+ds-6) unstable; urgency=medium
++
++  * debian/control
++    - Exclude python3-dev from Build-Depends with nopython build profile.
++  * debian/macaulay2-common.install
++    - Install make-M2-symbols.m2; generates files for syntax highlighting
++      in Emacs, Pygments, etc.
++  * debian/patches/skip-failing-package-tests.patch
++    - Properly skip tests marked "no-check-architecture".
++  * debian/patches/tbb-2021.patch
++    - New patch; add support for TBB 2021.
++  * debian/patches/use-dh-elpa.patch
++    - Fix path to M2-emacs-help.txt in documentation.
++  * debian/rules
++    - Don't build with Python support with "nopython" build profile.
++
++ -- Doug Torrance <dtorrance@debian.org>  Fri, 11 Feb 2022 11:25:09 -0500
++
++macaulay2 (1.19.1+ds-5) unstable; urgency=medium
++
++  * debian/control
++    - Remove w3c-markup-validator from Build-Depends-Indep; it is only used
++      for validating the html documentation, which we are currently
++      skipping.
++    - Add phcpack to Suggests.
++  * debian/README.Debian
++    - Add blurb about phcpack to "Suggested packages" section.
++
++ -- Doug Torrance <dtorrance@debian.org>  Thu, 27 Jan 2022 11:42:39 -0500
++
++macaulay2 (1.19.1+ds-4) unstable; urgency=medium
++
++  * debian/patches/givaro-bool-constant.patch
++    - New patch; fix "'givaro_bool_constant' does not name a type" error
++      when building with givaro 4.2.0 and fflas-ffpack 2.5.0, which are
++      now in Debian.
++  * debian/rules
++    - Make dump directories inside the dump file targets instead of their
++      own; fixes strange "unlink" message that was appearing in the build
++      logs.
++  * debian/scripts/m2-get-orig-source.sh
++    - Make the repack suffix a variable.
++
++ -- Doug Torrance <dtorrance@debian.org>  Sun, 19 Dec 2021 07:29:32 -0500
++
++macaulay2 (1.19.1+ds-3) unstable; urgency=medium
++
++  * debian/control
++    - Add versioned dependency on libsingular4-dev; configure script will
++      fail if < 4.2.0 is found.  For this reason, we can't depend on
++      the virtual package libsingular-dev any more.
++    - Add gdbmtool and faketime to Build-Depends-Indep; needed for
++      generating reproducible dumps of the documentation database files.
++    - Add gdbmtool to Depends for macaulay2; needed for new postinst
++      script.
++  * debian/macaulay2.install
++    - Stop installing files in /usr/lib; no longer necessary now that we
++      will generate package documentation databases during postinst.
++  * debian/macaulay2.postinst
++    - New file; load package documentation databases from dump files after
++      installation.
++  * debian/macaulay2.prerem
++    - New file; remove directories containing package documentation
++      databases that were created during postinst.
++  * debian/patches/allow-older-factory.patch
++    - Remove patch; no longer necessary as singular 4.2.1 is now in Debian.
++  * debian/patches/skip-failing-core-tests.patch
++    - Fix ComputationsBook::varieties test instead of skipping it.
++  * debian/rules
++    - Append -indep to execute_before_dh_auto_build target; we only need
++      the dummy KaTeX files and cached examples when building the
++      documentation.
++    - New override_dh_auto_build target; only build documentation when
++      building macaulay2-common.
++    - Append -indep to execute_after_dh_auto_install target; the cached
++      example directories will only exist and need to be removed when
++      building the documentation.
++    - Also in execute_after_dh_auto_install, create dumps of package
++      documentation to ship with macaulay2-common and then load during
++      postinst and then remove the database files.
++    - Remove execute_after_dh_install-arch target; empty directory is now
++      removed with the package documentation database after they're dumped.
++    - Exclude database dump files from dh_compress.
++    - Add override_dh_installdeb target to substitute variables in new
++      maintainer scripts.
++  * debian/salsa-ci.yml
++    - Stop allowing reprotest to fail; the parts of the package that are
++      built on Salsa are now reproducible.
++    - Allow autopkgtest to fail; the new test requires the documentation to
++      be built, which doesn't happen on Salsa.
++  * debian/scripts/Debian.m2
++    - Stop caching almost all examples; since we won't be building them on
++      non-amd64 architectures, we should see far fewer failures.
++    - Add new "skipTestArch" function to skip tests only on a particular
++      architecture.
++  * debian/scripts/m2-get-orig-source.sh
++    - Update string to grep for when "quilt push" fails.
++  * debian/tests/check-doc-db.m2
++    - New CI test for autopkgtest; test that the documentation database can
++      be loaded.
++  * debian/upstream/metadata
++    - Add "---" to signal document start.
++
++ -- Doug Torrance <dtorrance@debian.org>  Tue, 14 Dec 2021 21:24:21 -0500
++
++macaulay2 (1.19.1+ds-2) unstable; urgency=medium
++
++  * debian/*
++    - Update my email address; now a Debian Developer.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip check(3, "K3Surfaces"); failing on s390x.
++  * debian/rules
++    - Stop setting IgnoreExampleErrors to true on certain architectures;
++      most example issues seem to have been cleared up.
++  * debian/scripts/Debian.m2
++    - Cache new failing examples; all failing on s390x:
++      + K3Surfaces::K3(String)
++      + K3Surfaces::LatticePolarizedK3surface Sequence
++      + K3Surfaces::project
++      + SpecialFanoFourfolds::CongruenceOfCurves EmbeddedProjectiveVariety
++      + SpecialFanoFourfolds::map(CongruenceOfCurves)
++      + QuaternaryQuartics::Half canonical degree 20
++
++ -- Doug Torrance <dtorrance@debian.org>  Tue, 30 Nov 2021 12:49:29 -0500
++
++macaulay2 (1.19.1+ds-1) unstable; urgency=medium
++
++  * New upstream release.
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip 000-core; it was renamed from core-tests, which we had been
++      previously skipping.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip new failing package tests:
++      + check(8, "K3Surfaces"); failing on i386 (Closes: #1000772).
++      + check(9, "SpecialFanoFourfolds"); failing on armhf.
++    - Update Bug metadata.
++  * debian/scripts/Debian.m2
++    - Cache Cremona::rationalMap(Ring,Tally); failing on s390x.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Mon, 29 Nov 2021 10:56:36 -0500
++
++macaulay2 (1.19+ds-3) unstable; urgency=medium
++
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip new failing package tests:
++      + check(7, "K3Surfaces"); failing on i386.
++      + check(15, "MultiprojectiveVarieties"); failing on i386.
++  * debian/rules
++    - Ignore example errors on armhf.
++  * debian/scripts/Debian.m2
++    - Cache new failing examples:
++      + BettiCharacters::Example 3; failing on armhf.
++      + CharacteristicClasses::IndsOfSmooth; failing on s390x.
++    - Load Macaulay2Doc first in generateExamples to avoid "global symbols
++      inadvertently defined" error.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Wed, 24 Nov 2021 21:46:44 -0500
++
++macaulay2 (1.19+ds-2) unstable; urgency=medium
++
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip new failing Core tests:
++      + methods; failing on mips64el (Closes: #1000348).
++  * debian/patches/skip-failing-package-tests
++    - Skip new failing package tests:
++      + check(6, "K3Surfaces"); failing on i386.
++      + check({4, 6, 7}, "SpecialFanoFourfolds"); failing on armhf.
++      + check(14, "SpecialFanoFourfolds"); sometimes segfaults.
++  * debian/rules
++    - Ignore example errors on armel, riscv64, and s390x.
++  * debian/scripts/Debian.m2
++    - Cache new failing examples:
++      + NoetherianOperators::gCorners; failing on armel.
++      + NormalToricVarieties::isNef(ToricDivisor); failing on riscv64.
++      + ReesAlgebra::PlaneCurveSingularties; failing on s390x
++        (Closes: #1000350).
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Tue, 23 Nov 2021 06:12:52 -0500
++
++macaulay2 (1.19+ds-1) unstable; urgency=medium
++
++  * New upstream release.
++  * debian/control
++    - Update Maintainer to Debian Math Team.
++    - Add python3-dev to Build-Depends; needed for Python package.
++    - Update Vcs-* fields (science-team -> math-team).
++    - Add qepcad to Suggests; used by CoincidentRootLoci.
++  * debian/copyright
++    - Use leading spaces instead of tabs.
++    - Add license information for new packages and Pygments lexer.
++    - Update my copyright years for debian/*.
++  * debian/examples
++    - Update cached examples:
++      + MultiprojectiveVarieties::EmbeddedProjectiveVariety ===>
++        EmbeddedProjectiveVariety
++      + SpecialFanoFourfolds::detectCongruence(SpecialGushelMukaiFourfold,
++        ZZ)
++  * debian/patches
++    - Refresh for new release.
++    - Remove patches applied upstream:
++      + fix-visualize-firefox.patch
++      + hardening.patch
++      + reproducible-tvalues.patch
++  * debian/patches/allow-older-factory.patch
++    - New patch; upstream requires factory 4.2.0, which isn't in Debian
++      yet.
++  * debian/patches/git-description.patch
++    - Update for new release.
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip ComputationsBook::solving; failing on ppc64.
++    - Actually skip CSM.test.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip new failing tests:
++      + check(5, "FunctionFieldDesingularization")
++      + check(11, "PrimaryDecomposition")
++      + check({12, 13, 15}, "SpecialFanoFourfolds")
++      + check(36, "TestIdeals")
++    - Stop skipping check(4, "NumericalImplicitization"); now commented
++      out upstream.
++  * debian/patches/use-cached-examples.patch
++    - Set UsedCachedExampleOutput for Tropical package so that cached
++      examples are used; Tropical::tropicalCycle was failing on ppc64el.
++  * debian/patches/use-shared-mathicgb-and-friends.patch
++    - Link against memtailor/mathic/mathicgb as shared libraries
++      again.
++  * debian/README.Debian
++    - Add qepcad to section on suggested packages.
++  * debian/rules
++    - Add --with-python option to configure.
++  * debian/scripts/Debian.m2
++    - Update code for generateExample to use new interface to
++      captureExampleOutput.
++    - Update generateExample so that it returns a boolean object (true
++      if an example was generated and false otherwise.)
++    - Update generateExamples so it returns the number of examples that
++      were generated.
++    - Deal with FastLinAlg -> FastMinors rename for cached
++      regularInCodimension example.
++    - Cache new failing examples:
++      + FourTiTwo::toricGraverDegrees; illegal instruction.
++      + Quasidegrees::exceptionalSet; sometimes segfaults.
++      + RandomMonomialIdeal::VariableName; failing on ppc64el.
++      + RationalMaps::inverseOfMap example; sometimes segfaults.
++      + SpecialFanoFourfolds::grassmannianHull; sometimes segfaults.
++      + SpecialFanoFourfolds::specialGushelMukaiFourfold(Array,Array,
++        String,Thing); sometimes segfaults.
++    - Add comment about Tropical::tropicalCycle.
++  * debian/scripts/m2-get-orig-source.sh
++    - Add -g option to commit version bump to git.
++    - Add -m option to merge branch.
++    - Add -R option to set remote.
++  * debian/source/lintian-overrides
++    - Add package-does-not-install-examples override for
++      MonomialIntegerPrograms and Python packages..
++    - Remove source-is-missing overrides; issues fixed upstream.
++  * debian/watch
++    - Update download URL (releases -> tags).
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Wed, 17 Nov 2021 18:04:51 -0500
++
++macaulay2 (1.18+ds-5) unstable; urgency=medium
++
++  * debian/patches/reproducible-version.patch
++    - Rename from reproducible-config-args.patch.
++    - Use dummy compile node name and kernel release for
++      reproducibility.
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip ComputationsBook::geometry; failing on ppc64.
++    - Skip CSM.test; failing on mipsel.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip check(1, "Binomials"); sometimes segfaults.
++  * debian/rules
++    - Use cp's verbose option when copying cached examples to the build
++      directory for improved debugging.
++    - Move removal of cached examples from build directory until after
++      dh_auto_install; otherwise we may try to install one of the affected
++      packages again if another example failed and IgnoreExampleErrors was
++      set to true.  In this case, we may have gotten an error since
++      AuxiliaryFiles was true, but the auxiliary files had already been
++      removed.
++  * debian/scripts/Debian.m2
++    - Use package version from d/changelog for Version.
++    - Cache new failing examples:
++      + MultiprojectiveVarieties::∏; failing on mips64el.
++      + MultiprojectiveVarieties::segre(MultiprojectiveVariety); failing
++        on mips64el.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Thu, 30 Sep 2021 13:02:53 -0400
++
++macaulay2 (1.18+ds-4) unstable; urgency=medium
++
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip isSubset test again; failing on mips64el.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip check(2, "MultiprojectiveVarieties"); failing on mipsel.
++  * debian/rules
++    - Update libxml2 bug number in comment for override_dh_auto_test-indep
++      target.
++  * debian/scripts/Debian.m2
++    - New Macaulay2 package containing various helper functions for
++      maintaining the Debian package; replaces copyright-helper.m2,
++      generate-examples.m2, and skip-test.m2.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Wed, 22 Sep 2021 21:29:54 -0400
++
++macaulay2 (1.18+ds-3) unstable; urgency=medium
++
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip check(5, "MultiprojectiveVarieties"); failing on armhf.
++  * debian/rules
++    - Allow examples to fail on mipsel, mips64el, and ppc64el buildd
++      machines without causing the entire build to fail.
++  * debian/scripts/generate-examples.m2
++    - Cache new failing examples:
++      + HyperplaneArrangements::arrangement(String,PolynomialRing);
++        failing on ppc64el.
++      + SpectralSequences::pruningMaps(SpectralSequencePage), failing on
++        mipsel and mips64el.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Thu, 16 Sep 2021 15:22:15 -0400
++
++macaulay2 (1.18+ds-2) unstable; urgency=medium
++
++  * debian/control
++    - Move dh-elpa from Build-Depends to Build-Depends-Indep (as
++      dh-sequence-elpa).
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip ComputationsBook::constructions; failing on s390x.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip new failing tests:
++      + check({1, 2, 3}, "CharacteristicClasses"); failing on armhf and
++        s390x.
++      + check(68, "EngineTests"); failing on armhf and s390x.
++      + check(21, "IntegralClosure"); failing on armhf.
++      + check(3, "MultiprojectiveVarieties"); failing on armhf.
++      + check(4, "NumericalImplicitization"); failing with LAPACK 3.10.0.
++      + check({0, 1, 2, 3, 5, 7, 8, 9, 10}, "SegreClasses"); failing on
++        armhf and s390x.
++      + check(3, "SparseResultants"); failing on armhf.
++      + check({0, 8}, "SpecialFanoFourfolds"); failing on armhf.
++  * debian/rules
++    - Drop --with elpa, unnecessary now that dh-sequence-elpa is in
++      Build-Depends-Indep.
++    - New execute_before_dh_missing target; remove emacs files when not
++      building elpa-macaulay2; otherwise dh_missing will fail.
++    - Skip validate-html check pending libxml2 bug
++  * debian/scripts/generate-examples.m2
++    - Drop dir argument from generateExample; it will always be the debian
++      directory.
++    - Cache new failing examples:
++      + Macaulay2Doc::MinimalGenerators; failing on s390x.
++      + MixedMultiplicity::mixedVolume; failing on mipsel.
++      + MultiprojectiveVarieties::image(MultirationalMap); failing on
++        s390x.
++      + SparseResultants::char(SparseResultant); failing on s390x
++        (Closes: #993923).
++  * debian/scripts/m2-get-orig-source.sh
++    - Remove dch backup file if present before calling dch to update
++      version number.
++  * debian/scripts/skip-test.m2
++    - New script; helper function for skipping tests
++  * debian/source/lintian-overrides
++    - Add overrides for source-is-missing false positives.
++  * debian/tests/control
++    - Clean up using wrap-and-sort.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Thu, 09 Sep 2021 05:36:24 -0400
++
++macaulay2 (1.18+ds-1) unstable; urgency=medium
++
++  * Upload to unstable.
++  * debian/control
++    - Bump Standards-Version to 4.6.0.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip check(90, "EngineTests"); failing on mips64el.
++  * debian/patches/use-cached-examples.m2
++    - Add TestIdeals package; it was missing and so we weren't actually
++      using the cached example.
++  * debian/rules
++    - Add VERSION variable; removes duplicate code.
++  * debian/scripts/copyright-helper.m2
++    - Improve regular expressions for matching author names.
++    - Add reminder to confirm that a package's copyright information is
++      correct.
++  * debian/scripts/generate-examples.m2
++    - Cache new failing examples, updating d/examples and
++      d/patches/use-cached-examples accordingly:
++      + Elimination::discriminant(RingElement,RingElement); failing on
++        ppc64el.
++      + Three SpectralSequences examples; failing on mipsel.
++    - Raise error if a package hasn't been added to
++      use-cached-examples.patch.
++  * debian/scripts/m2-get-orig-source.sh
++    - Use getopt for command line args
++    - New --no-tarball option; only updates version number.
++    - Add --help option.
++    - Only update d/changelog if necessary.
++    - Don't generate orig tarball if it already exists.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Fri, 20 Aug 2021 21:34:00 -0400
++
++macaulay2 (1.18+ds-1~exp3) experimental; urgency=medium
++
++  * debian/copyright
++    - Add entries for packages that had previously been omitted.
++      + NCAlgebraV2
++      + SubalgebraBases
++      + SuffixTrees
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip plethysms test; failing on mipsel.
++    - Stop schur-2 test a bit earlier; failing on armel and armhf.
++  * debian/scripts/copyright-helper.m2
++    - Improve regex for determining whether packages are actually listed in
++      d/copyright.
++    - Simplify missingPackages function; detect path to d/copyright instead
++      of requiring the user to specify it.
++    - Improve missingPackages function by searching for packages in the
++      source directory (including undistributed packages) instead of just
++      the ones listed in the version hash table.
++  * debian/scripts/generate-examples.m2
++    - Cache new failing examples, updating d/examples and
++      d/patches/use-cached-examples accordingly:
++      + PrimaryDecomposition::primaryDecomposition
++      + M0nbar::writeCurveInSingletonSpineBasis
++      + M0nbar::writeCurveInSingletonSpineBasis(ZZ,List)
++    - Simplify generateExamples function; detect path to debian directory
++      instead of requiring the user to specify it.
++  * debian/tests/control
++    - Remove polymake from Depends; not necessary for most tests and not
++      available in armel.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Thu, 29 Jul 2021 07:50:46 -0400
++
++macaulay2 (1.18+ds-1~exp2) experimental; urgency=medium
++
++  * debian/gbp.conf
++    - Set default debian-branch to debian/master.
++  * debian/patches/hardening.patch
++    - New patch; Don't override -fstack-protector-strong from dpkg-buildflags.
++  * debian/patches/fix-visualize-firefox.patch
++    - Switch from Forwarded to Applied-Upstream.
++  * debian/patches/reproducible-tvalues.patch
++    - New patch; sort files in d directory when making tvalues.m2.  Otherwise,
++      tvalues.m2 is not reproducible.
++  * debian/patches/skip-failing-core-tests.patch
++    - Skip core-tests.m2.
++  * debian/patches/skip-failing-package-tests.patch
++    - Skip new failing tests:
++      + check(8, "DiffAlg")
++      + check(7, "MultiprojectiveVarieties")
++      + check(3, "NumericalImplicitization")
++      + check(8, "NumericalImplicitization")
++      + check(0, "Topcom")
++    - Add missing Bug field.
++  * debian/salsa-ci.yml
++    - Allow reprotest to fail in Salsa pipeline.
++  * debian/scripts/generate-examples.m2
++    - Cache new failing examples:
++      + GraphicalModelsMLE::solverMLE(...,RealPrecision=>...)
++      + MultiprojectiveVarieties::EmbeddedProjectiveVariety ===>
++        EmbeddedProjectiveVariety
++      + SimplicialDecomposability::isSheddingVertex
++      + SpecialFanoFourfolds::toGrass(EmbeddedProjectiveVariety)
++      + SRdeformations::complement(Complex)
++    - Add generated examples to debian/examples.
++    - Set AuxiliaryFiles and CacheExampleOutput options for affected packages
++      in debian/patches/use-cached-examples.patch.
++    - Don't reload package when generating examples unless necessary.  The
++      Macaulay2Doc examples were really slowing down the script -- now we only
++      need to wait for the first one.
++    - Improve error handling; only raise an error if we have extra .out files.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Tue, 27 Jul 2021 10:43:17 -0400
++
++macaulay2 (1.18+ds-1~exp1) experimental; urgency=medium
++
++  * debian/control
++    - Add libmpfi-dev and libtbb-dev to Build-Depends; needed for new
++      features added upstream.
++    - Remove imagemagick from Suggests; no longer required by the
++      Graphs package as it now uses xdg-open to open generated images.
++  * debian/copyright
++    - Remove paragraph from Cygwin files that have been removed from
++      source.
++    - Add/update paragraphs for new/modified packages.
++  * debian/examples
++    - Add cached examples generated by d/scripts/generate-examples.m2.
++  * debian/macaulay2-common.info
++    - New file; use dh_installinfo to install info files instead of
++      dh_install.  This way, we can more easily support builds with
++      "nodoc" in DEB_BUILD_OPTIONS.
++  * debian/macaulay2-common.lintian-overrides
++    - Add package-contains-documentation-outside-usr-share-doc
++      override for new file.
++  * debian/patches
++    - Refresh for new upstream release.
++    - Remove patches applied or otherwise made unnecessary upstream.
++      + dont-capture-check-core-32-bit.patch
++      + dont-capture-diffalg-tests.patch
++      + smaller-points-examples.patch
++      + use-debian-applications.patch
++  * debian/patches/fix-visualize-firefox.patch
++    - New patch; fix Visualize package in Firefox (symlinks to assets
++      weren't working).
++  * debian/patches/remove-build-paths-from-docs
++    - Remove patch; we now cache examples that were causing
++      reproducibility issues.
++  * debian/patches/skip-failing-{core,package}-tests
++    - Stop skipping tests that have been fixed upstream and start
++      skipping new tests that have caused build errors.
++    - Better document which tests go with which upstream issues.
++  * debian/patches/use-cached-examples.patch
++    - New patch replacing use-canned-examples.patch.  Set affected
++      packages to use cached examples that are generated by
++      d/scripts/generate-examples.patch.
++  * debian/README.md
++    - Update descriptions of packages in Suggests.
++  * debian/rules
++    - Export MakeDocumentation variable to support builds with
++      "nodoc" in DEB_BUILD_OPTIONS.
++    - Set installation directory for Emacs files; previously this
++      was done in use-dh-elpa.patch.
++    - Move cached examples generated by d/scripts/generate-examples.m2
++      into the build directory so that they may be properly installed
++      and then clean up afterwards.
++    - Use $(MAKE) instead of explicitly calling make.
++  * debian/salsa-ci.yml
++    - Add Salsa pipelines config file.
++  * debian/scripts/generate-examples.m2
++    - New script; generate examples for the documentation for certain
++      cases which have been known to cause build errors.  Previously,
++      we used canned examples, but cached examples are treated just like
++      standard examples that are generated during build.
++  * debian/scripts/m2-get-orig-source.sh
++    - Add support for version numbers containing "-rc".
++    - Explicitly call GNU awk, as it is necessary for the script to run
++      properly.
++  * debian/source/lintian-overrides
++    - Update package-does-not-install-examples overrides.
++  * debian/watch
++    - Add support for version numbers containing "-rc".
++    - Use more general regular expression to find GitHub releases.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Wed, 07 Jul 2021 13:08:53 +0530
++
++macaulay2 (1.17.1+ds-2) unstable; urgency=medium
++
++  * debian/patches/dont-capture-check-core-32-bit.patch
++    - New patch; don't use capture when running Core and Cremona tests
++      on 32-bit architectures. Otherwise, we run out of memory.
++  * debian/patches/dont-capture-diffalg-tests.patch
++    - New patch; don't use "capture" for DiffAlg package tests.
++  * debian/patches/skip-failing-package-tests.patch
++    - Add core-tests.m2; contains a test with an alarm that isn't
++      caught when running "check".
++    - Skip another segfaulting MinimalPrimes test.
++  * debian/patches/smaller-points-examples.patch
++    - New patch; Remove examples showing less efficient algorithms
++      from Points docs.
++  * debian/patches/use-canned-examples.patch
++    - Add example from TestIdeals package that has been known to
++      segfault.
++  * debian/rules
++    - Exclude .m2 files from being gzipped by dh_compress. Otherwise,
++      package tests may be compressed and won't be found by "check".
++    - Only set VERBOSE variable if DEB_BUILD_OPTIONS doesn't include
++      "terse".
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Sun, 24 Jan 2021 08:57:47 -0500
++
++macaulay2 (1.17.1+ds-1) unstable; urgency=medium
++
++  * New upstream release.
++  * debian/clean
++    - Add autogenerated file debian/macaulay2-pkg.el.
++  * debian/control
++    - Add packages to Recommends.
++      + info: info is used by "infoHelp" function.
++      + texlive-latex-base: latex is used by "showTex" function.
++      + xdg-utils: xdg-open is used by "show" function.
++      + xterm: xterm is used by "edit" function.
++    - Add packages to Suggests.
++      + fig2dev: Used by gfanInterface package.
++      + dot2tex/graphviz/imagemagick: Used by Graphs package.
++      + pdf-viewer: Used by Posets package.
++    - Switch from node-jquery to libjs-jquery (versioned, to ensure
++      that the minified jQuery source is not a symbolic link) in
++      Build-Depends-Indep.
++  * debian/copyright
++    - Various updates for new release.
++  * debian/elpa-macaulay2.{docs,elpa}
++    - Update paths to Emacs-related files files.
++  * debian/macaulay2-common.linktrees
++    - Update path the minified jQuery source needed by Visualize package.
++      Previously, it was shipped in the node-jquery package, but was
++      moved to libjs-jquery in version 3.5.1+dfsg+~3.5.5-4.
++  * debian/patches
++    - Refresh for new release.
++    - Previous skip-*-{example,test}.patch's have been combined into
++      three patches for simplicity:
++      + used-canned-examples.patch: Canned versions of examples that
++        have been known to fail.
++      + skip-failing-core-tests.patch: Tests in M2/Macaulay2/tests that
++        have been known to fail.
++      + skip-package-tests.patch: Package tests that have been known
++        to fail.  We also use the new "-* no-check-flag *-" feature
++        to skip these tests rather than patching them out entirely.
++  * debian/patches/git-description.patch
++    - New patch; provide version#"git description".
++  * debian/patches/use-debian-applications.patch
++    - New patch; tell gfanInterface package where to find fig2dev and
++      Posets package to use xdg-open to view pdf files.
++  * debian/patches/use-dh-elpa.patch
++    - New patch; modifications to work with dh_elpa.
++  * debian/README.Debian
++    - Remove section on orig tarballs; they are no longer generated on
++      Salsa.
++    - Add section discussing packages listed in Suggests.
++  * debian/rules
++    - Add execute_after_dh_install-arch target to remove empty directory.
++    - Simplify debian/macaulay2-pkg.el rule.
++    - Add get-orig-source target.
++  * debian/scripts/copyright-helper.m2
++    - Move file into new debian/scripts directory.
++  * debian/scripts/m2-get-orig-source.sh
++    - New script to generate orig tarballs.
++  * debian/scripts/m2-tarball-warning.sh
++    - New script to display a warning if using uscan to generate a
++      tarball.
++  * debian/tests/control
++    - Add messages before each stage of testing.
++    - Add "M2 --check 2" for testing Core package.
++  * debian/watch
++    - Upstream has begun tagging stable releases, so we switch to
++      GitHub for the link.  However, uscan should only be used
++      to check for new releases, as the tarballs it generates will
++      be missing the files from the M2-emacs submodule.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Sat, 16 Jan 2021 18:14:58 -0500
++
++macaulay2 (1.16.99+git40.3a512e5+ds-1~exp1) experimental; urgency=medium
++
++  * New upstream beta release.
++  * debian/control
++    - Add packages to Build-Depends.
++      + dh-linktree: We now use this debhelper addon to create symbolic
++        links to Debian copies of GPL licenses and various Javascript
++        libraries instead of patching the files directly to point to
++        them.
++      + libboost-regex-dev: Replaces embedded copy of GNU regex library
++        used in previous releases.
++      + libboost-stacktrace-dev: Improves readability of stack traces.
++    - Add Build-Depends-Indep.
++      + jdupes: Moved from Build-Depends; only needed for building
++        documentation.
++      + Various fonts and Javascript libraries; needed during build
++        by dh_linktree.
++      + w3c-markup-validator: Used to validate html in documentation.
++    - Bump Standards-Version to 4.5.1.
++    - Remove Javascript libraries from Recommends.  They will now be
++      pulled in by ${misc:Depends} thanks to dh_linktree.
++    - Add emacs to Recommends for elpa-macaulay2.
++  * debian/copyright
++    - Add KaTeX files to Files-Excluded.
++    - Add paragraph for KaTeX files.
++    - Remove paragraph for embedded GNU regex library.
++    - Add licensing information for new packages added since previous
++      release.
++  * debian/copyright-helper.m2
++    - New Macaulay2 script to help generate debian/copyright paragraphs
++      for new packages.
++  * debian/macaulay2-common.linktrees
++    - New file; tell dh_linktree where Debian copies of GPL licenses
++      and Javascript libraries are located.
++  * debian/macaulay2-common.lintian-overrides
++    - Update package-contains-documentation-outside-usr-share-doc
++      overrides for files that have changed since previous release.
++  * debian/missing-source/render-a11y-string.js
++    - Add source for minified KaTeX file that isn't in Debian yet.
++  * debian/patches
++    - Remove patches applied (or otherwise made unnecessary) upstream.
++      + fix-*.patch
++      + hardening.patch
++      + remove-build-paths-from-cached-files.patch
++      + remove-build-paths-from-docs.patch (Patch remains, but only
++        increases the default print width of examples.)
++      + use-debian-{4ti2,cohomcalg,csdp,gfan,nauty,normaliz,topcom}.patch
++    - Refresh remaining patches for new upstream version.
++  * debian/patches/skip-computations-book-test.patch
++    - Rename from fix-computations-book-test.patch; the behavior of the
++      test is too unpredictable between different architectures, so
++      we skip it entirely instead of trying to fix it.
++  * debian/patches/skip-*-{example,test}.patch
++    - Skip some additional examples and tests that have been known
++      to fail on various architectures.
++  * debian/patches/use-debian-{gpl,javascript}.patch
++    - Remove patches; we use dh_linktree for the same purpose instead.
++  * debian/README.Debian
++    - Add information about KaTeX to "Javascript libraries" section.
++    - Add section on using dwww to view the Macaulay2 documentation.
++  * debian/rules
++    - Use dh_linktree addon.
++    - New execute_before_dh_auto_build target; touch KaTeX files to
++      prevent html-check-links test from failing.
++    - Drop check for "nocheck" in DEB_BUILD_OPTIONS from
++      override_dh_auto_test rule; not necessary in debhelper 13.
++      We also append "-arch" to this target.
++    - New override_dh_auto_test-indep rule to validate html docs.
++    - Switch override_dh_link target that calls jdupes to
++      execute_before_dh_link-indep target.
++    - Switch override_dh_elpa target that generates -pkg.el file
++      to execute_before_dh_elpa target.
++  * debian/tests/check.m2
++    - Remove file; no longer needed.
++  * debian/tests/control
++    - Use upstream's updated --check command line argument to run
++      continuous integration tests.
++  * debian/upstream/metadata
++    - Add recent NSF grants to Funding.
++    - Add new Macaulay2Web interface to Webservice.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Sat, 26 Dec 2020 00:29:42 -0500
++
++macaulay2 (1.16+git55.94c4b7d+ds-2) unstable; urgency=medium
++
++  * Upload to unstable.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Wed, 04 Nov 2020 20:54:18 -0500
++
++macaulay2 (1.16+git55.94c4b7d+ds-2~exp1) experimental; urgency=medium
++
++  * Source-only upload for migration to testing.
++  * debian/control
++    - Add libmps-dev to Build-Depends.
++    - Add lsb-release to Build-Depends so configure can detect the
++      Debian release.
++    - Fix URL in VCS-* fields.
++  * debian/elpa-test
++    - Disable dh_elpa_test so it doesn't override dh_auto_test.
++  * debian/patches/skip-mpsolve-for-now.patch
++    - Remove patch; mpsolve is now in Debian.
++  * debian/patches/{fix,skip}-*-{example,test}.patch:
++    - New patches; fix or skip examples or tests causing build
++      failures on various architectures.
++  * debian/README.Debian
++    - Remove section on 'roots' function.  It is now available since
++      mpsolve is in Debian.
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Wed, 04 Nov 2020 20:54:18 -0500
++
++macaulay2 (1.16+git55.94c4b7d+ds-1) unstable; urgency=low
++
++  * Initial release (Closes: #439888).
++
++ -- Doug Torrance <dtorrance@piedmont.edu>  Sun, 04 Oct 2020 16:31:20 -0400
diff --cc debian/clean
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5e20d6562f44389ce92ecdb932e72938027ce47f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++debian/macaulay2-pkg.el
++M2/usr-host/lib/libmissing.a
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c0969208f3ffd91412e06af4c1ab7e7e2654d55
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,134 @@@
++Source: macaulay2
++Section: math
++Priority: optional
++Maintainer: Debian Math Team <team+math@tracker.debian.org>
++Uploaders: Doug Torrance <dtorrance@debian.org>
++Build-Depends: 4ti2,
++               bison,
++               cohomcalg,
++               coinor-csdp,
++               debhelper-compat (= 13),
++               dh-linktree,
++               fflas-ffpack,
++               flex,
++               gfan,
++               install-info,
++               libatomic-ops-dev,
++               libboost-dev,
++               libboost-regex-dev,
++               libboost-stacktrace-dev,
++               libcdd-dev,
++               libeigen3-dev,
++               libflint-dev (>= 2.6.0~),
++               libfrobby-dev,
++               libgc-dev,
++               libgdbm-dev,
++               libgivaro-dev,
++               libglpk-dev,
++               libgtest-dev,
++               liblapack-dev,
++               liblzma-dev,
++               libmathic-dev,
++               libmathicgb-dev,
++               libmemtailor-dev,
++               libmpfi-dev,
++               libmpfr-dev,
++               libmps-dev,
++               libntl-dev,
++               libreadline-dev,
++               libsingular4-dev (>= 1:4.2.0~),
++               libtbb-dev,
++               libxml2-dev,
++               lrslib,
++               lsb-release,
++               nauty,
++               normaliz,
++               pkg-config,
++               python3-dev <!nopython>,
++               singular-data,
++               time,
++               topcom
++Build-Depends-Indep: dh-sequence-elpa,
++                     faketime,
++                     fonts-glyphicons-halflings,
++                     fonts-katex,
++                     gdbmtool,
++                     jdupes,
++                     libjs-bootstrap,
++                     libjs-d3,
++                     libjs-jquery (>= 3.5.1+dfsg+~3.5.5-4),
++                     libjs-katex,
++                     libjs-three,
++                     libjs-underscore,
++                     node-clipboard
++Standards-Version: 4.6.0
++Homepage: http://macaulay2.com
++Vcs-Browser: https://salsa.debian.org/math-team/macaulay2
++Vcs-Git: https://salsa.debian.org/math-team/macaulay2.git
++Rules-Requires-Root: no
++
++Package: macaulay2
++Architecture: any
++Depends: gdbmtool,
++         macaulay2-common (= ${source:Version}),
++         singular-data,
++         ${misc:Depends},
++         ${shlibs:Depends}
++Recommends: 4ti2,
++            cohomcalg,
++            coinor-csdp,
++            elpa-macaulay2 (= ${source:Version}),
++            gfan,
++            info,
++            lrslib,
++            nauty,
++            normaliz,
++            texlive-latex-base,
++            topcom,
++            www-browser,
++            xdg-utils,
++            xterm
++Suggests: dot2tex,
++          fig2dev,
++          graphviz,
++          pdf-viewer,
++          phcpack,
++          polymake,
++          qepcad,
++          sdpa
++Description: Software system for algebraic geometry research
++ Macaulay 2 is a software system for algebraic geometry research, written by
++ Daniel R. Grayson and Michael E. Stillman.  Based on Groebner bases, it
++ provides algorithms for computing homological invariants of rings and
++ modules.
++ .
++ This package contains the architecture dependent portion of Macaulay2.
++
++Package: macaulay2-common
++Architecture: all
++Multi-Arch: foreign
++Depends: ${misc:Depends}
++Description: Software system for algebraic geometry research (common files)
++ Macaulay 2 is a software system for algebraic geometry research, written by
++ Daniel R. Grayson and Michael E. Stillman.  Based on Groebner bases, it
++ provides algorithms for computing homological invariants of rings and
++ modules.
++ .
++ This package contains the architecture independent portion of Macaulay2, and is
++ normally installed automatically when one of the architecture dependent
++ packages is installed.
++
++Package: elpa-macaulay2
++Architecture: all
++Multi-Arch: foreign
++Section: editors
++Depends: ${elpa:Depends}, ${misc:Depends}
++Recommends: emacs
++Description: Software system for algebraic geometry research (Emacs package)
++ Macaulay 2 is a software system for algebraic geometry research, written by
++ Daniel R. Grayson and Michael E. Stillman.  Based on Groebner bases, it
++ provides algorithms for computing homological invariants of rings and
++ modules.
++ .
++ This package contains the modes for running Macaulay2 within Emacs and
++ editing Macaulay2 code.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b86056e2cd5b4a1cbe7e88f5655a39b0ae8c84ed
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2311 @@@
++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
++Upstream-Name: Macaulay2
++Source: http://macaulay2.com
++Files-Excluded:
++ M2/Macaulay2/packages/Style/katex/contrib/auto-render.min.js
++ M2/Macaulay2/packages/Style/katex/contrib/copy-tex.min.*
++ M2/Macaulay2/packages/Style/katex/fonts
++ M2/Macaulay2/packages/Style/katex/katex.min.*
++ M2/Macaulay2/packages/Style/katex/LICENSE
++ M2/Macaulay2/packages/Visualize/css/bootstrap*.min.css
++ M2/Macaulay2/packages/Visualize/fonts
++ M2/Macaulay2/packages/Visualize/js/bootstrap.min.js
++ M2/Macaulay2/packages/Visualize/js/clipboard.min.js
++ M2/Macaulay2/packages/Visualize/js/d3.v3.min.js
++ M2/Macaulay2/packages/Visualize/js/jquery-1.11.3.min.js
++ M2/Macaulay2/packages/Visualize/js/three.min.js
++ M2/Macaulay2/packages/Visualize/js/underscore.js
++Comment: Files-Excluded field removes embedded Javascript libraries.
++ .
++ An email from Dan Grayson dated 2020-08-03 clarified the
++ licenses of code contributed by authors other than himself and Mike
++ Stillman:
++ .
++ "A priori the author of a file is the copyright holder, by default.
++ We haven't always been alert about asking authors to put their code
++ in the public domain, although I have done that in a few
++ cases. . . My general attitude is that anyone who contributes code to
++ us is putting it in the public domain, implicitly."
++
++Files: *
++Copyright: 1993-2019 Daniel R. Grayson <dan@math.uiuc.edu>
++           1993-2020 Michael E. Stillman <mike@math.cornell.edu>
++License: GPL-2+
++
++Files: debian/*
++Copyright: 2015-2021 Doug Torrance <dtorrance@debian.org>
++License: GPL-2+
++
++Files: debian/missing-sources/render-a11y-string.js
++       M2/Macaulay2/packages/Style/katex/contrib/render-a11y-string.min.js
++Copyright: 2013-2019 Khan Academy and other contributors
++Comment: https://github.com/KaTeX/KaTeX/blob/v0.12.0/LICENSE
++License: Expat
++
++Files: M2/cmake/FindAtomicOps.cmake
++       M2/cmake/FindBDWGC.cmake
++       M2/cmake/FindFactory.cmake
++       M2/cmake/FindFlint.cmake
++       M2/cmake/FindFrobby.cmake
++       M2/cmake/FindGDBM.cmake
++       M2/cmake/FindMathic.cmake
++       M2/cmake/FindMathicgb.cmake
++       M2/cmake/FindMemtailor.cmake
++       M2/cmake/FindMPIR.cmake
++       M2/cmake/FindMPSolve.cmake
++       M2/cmake/FindNTL.cmake
++Copyright: 2020 Mahrud Sayrafi <mahrud@umn.edu>
++Comment: The files themselves only contain the line "Redistribution
++ and use is allowed according to the terms of the BSD license."  In an
++ email, the author confirmed that the license in question is the
++ 3-clause version, which is the same license used by CMake itself.  See
++ https://cmake.org/licensing/.  This comment also applies to the other
++ Find*.cmake files below.
++License: BSD-3-Clause
++
++Files: M2/cmake/FindCDDLIB.cmake
++Copyright: 2006 Laurent Montel <montel@kde.org>
++           2018 Thomas Baumgart <tbaumgart@kde.org>
++           2020 Mahrud Sayrafi <mahrud@umn.edu>
++License: BSD-3-Clause
++
++Files: M2/cmake/FindGMP.cmake
++Copyright: 2016 Jack Poulson <jack.poulson@gmail.com>
++           2020 Mahrud Sayrafi <mahrud@umn.edu>
++License: BSD-3-Clause
++
++Files: M2/cmake/FindMPFR.cmake
++Copyright: 2006, 2007 Montel Laurent <montel@kde.org>
++           2008, 2009 Gael Guennebaud <g.gael@free.fr>
++           2010 Jitse Niesen <jitse@maths.leeds.ac.uk>
++           2015 Jack Poulson <jack.poulson@gmail.com>
++           2020 Mahrud Sayrafi <mahrud@umn.edu>
++License: BSD-3-Clause
++
++Files: M2/cmake/FindTBB.cmake
++Copyright: 2012 Sergiu Dotenco
++License: Expat
++
++Files: M2/config/ax_compare_version.m4
++Copyright: 2008 Tim Toolan <toolan@ele.uri.edu>
++License: FSFAP
++
++Files: M2/config/ax_func_accept_argtypes.m4
++Copyright: 2008 Daniel Richard G. <skunk@iskunk.org>
++License: GPL-2+ with autoconf exception
++
++Files: M2/config/ax_prog_cc_for_build.m4
++Copyright: 2008 Paolo Bonzini <bonzini@gnu.org>
++License: FSFAP
++
++Files: M2/config/gtest.m4
++Copyright: 2012 Canonical, Ltd.
++License: Expat
++
++Files: M2/Macaulay2/d/boost-regex.cpp
++       M2/Macaulay2/d/regex.dd
++       M2/Macaulay2/m2/markdown.m2
++       M2/Macaulay2/m2/regex.m2
++Copyright: 2020 Mahrud Sayrafi
++Comment: See Comment at top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/e/bibasis/*
++       M2/Macaulay2/packages/BIBasis.m2
++Copyright: 2006-2011 Mikhail V. Zinin <mzinin@gmail.com>
++License: GPL-2+
++
++Files: M2/Macaulay2/e/franzi*
++Copyright: Franziska Hinkelmann
++License: public-domain
++
++Files: M2/Macaulay2/e/localring.cpp
++       M2/Macaulay2/e/localring.hpp
++       M2/Macaulay2/e/mutablecomplex.cpp
++       M2/Macaulay2/e/mutablecomplex.hpp
++       M2/Macaulay2/m2/localring.m2
++       M2/Macaulay2/packages/PruneComplex*
++Copyright: 2017 Mahrud Sayrafi <mahrud@berkeley.edu>
++           2017 Mike Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/e/mpreal.h
++Copyright: 2008-2019 Pavel Holoborodko
++License: GPL-3+
++
++Files: M2/Macaulay2/e/mutablemat-imp.hpp
++       M2/Macaulay2/e/NAG.cpp
++       M2/Macaulay2/e/NAG.hpp
++       M2/Macaulay2/e/SLP.cpp
++       M2/Macaulay2/e/SLP.hpp
++       M2/Macaulay2/e/SLP-defs.hpp
++       M2/Macaulay2/e/SLP-imp.hpp
++Copyright: 2008, 2015 Anton Leykin and Mike Stillman
++Comment: Anton Leykin's code in this file is in the public domain.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/e/unit-tests/GivaroTest.cpp
++Copyright: 1994-2009 The Givaro group
++License: CECILL-B
++
++Files: M2/Macaulay2/editors/pygments/macaulay2.py.in
++Copyright: 2006-2021 Pygments team
++Comment: The copyright header says to "see AUTHORS".  This refers to
++ the AUTHORS file in the Pygments source.  See the Debian "pygments"
++ source package or https://github.com/pygments/pygments.
++License: BSD-2-clause
++
++Files: M2/Macaulay2/editors/vim/m2.vim.plugin
++Copyright:  2010 David Cook II <dcook@ms.uky.edu>
++License: public-domain
++
++Files: M2/Macaulay2/m2/book.m2
++Copyright: 1997 Daniel R. Grayson
++           2020 Mahrud Sayrafi
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/m2/expressions.m2
++Copyright: 1992-2002 Daniel R. Grayson
++           2018 P. Zinn-Justin
++Comment: See M2/LICENSING-NOTES
++License:  GPL-2+ and public-domain
++
++Files: M2/Macaulay2/m2/fano.m2
++       M2/Macaulay2/tests/normal/testsubring.m2
++Copyright: 1996, 1997 Michael Stillman and David Eisenbud
++License: GPL-2+
++
++Files: M2/Macaulay2/m2/hypertext.m2
++Copyright: 1993-2003 Daniel R. Grayson
++           2020 P. Zinn-Justin
++           2020 Mahrud Sayrafi
++Comment: See M2/LICENSING-NOTES
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/PrimaryDecomposition*
++Copyright: 2020 Mike Stillman <mike@math.cornell.edu>
++           2020 Carolyn Yackel <cyackel@math.indiana.edu>
++           2020 Justin Chen <justin.chen@math.gatech.edu>
++           2020 Mahrud Sayrafi <mahrud@umn.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/m2/minPres.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/minimalPresentation-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/trim-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/overviewB.m2
++       M2/Macaulay2/packages/PrimaryDecomposition/primaryDecomposition-test.m2
++Copyright: 2006 Amelia Taylor
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/m2/schubert.m2
++Copyright: Bernd Sturmfels
++           Josephine Yu
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/m2/webapp.m2
++       M2/Macaulay2/packages/VectorGraphics*
++Copyright: 2018-2020 Paul Zinn-Justin <pzinn@unimelb.edu.au>
++Comment: See M2/LICENSING-NOTES
++License: public-domain
++
++Files: M2/Macaulay2/packages/AdjointIdeal*
++       M2/Macaulay2/packages/ConvexInterface*
++       M2/Macaulay2/packages/MapleInterface*
++       M2/Macaulay2/packages/Parametrization*
++       M2/Macaulay2/packages/SRdeformations.m2
++Copyright: 2009 Janko Boehm <boehm@math.uni-sb.de>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/AlgebraicSplines.m2
++Copyright: 2014-2015 Mike Dipasquale <mdipasq@okstate.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/AnalyzeSheafOnP1.m2
++       M2/Macaulay2/packages/ChainComplexOperations.m2
++       M2/Macaulay2/packages/CompleteIntersectionResolutions.m2
++       M2/Macaulay2/packages/HigherCIOperators.m2
++       M2/Macaulay2/packages/HomotopyLieAlgebra.m2
++       M2/Macaulay2/packages/MCMApproximations.m2
++Copyright: 2013, 2015, 2017, 2019, 2021 David Eisenbud <de@msri.org>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/AssociativeAlgebras*
++       M2/Macaulay2/packages/NCAlgebraV2.m2
++       M2/Macaulay2/packages/undistributed-packages/SuffixTrees.m2
++Copyright: 2016, 2021 Frank Moore <moorewf@wfu.edu>
++           2016, 2021 Mike Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/AInfinity.m2
++       M2/Macaulay2/packages/BeginningMacaulay2*
++       M2/Macaulay2/packages/EagonResolution.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/pushForward-doc.m2
++       M2/Macaulay2/packages/MonomialOrbits.m2
++       M2/Macaulay2/packages/Truncations.m2
++       M2/Macaulay2/packages/undistributed-packages/RandomSearch.m2
++Copyright: 2006, 2009, 2018, 2020, 2021 David Eisenbud <de@msri.org>
++           2006, 2009, 2018, 2020, 2021 Mike Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Bertini*
++Copyright: 2020 Elizabeth Gross <elizabeth.gross@sjsu.edu>
++           2020 Jose Israel Rodriguez <Jose@math.wisc.edu>
++           2020 Dan Bates <bates@math.colostate.edu>
++           2020 Anton Leykin <leykin@math.gatech.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/BettiCharacters.m2
++       M2/Macaulay2/packages/HighestWeights*
++Copyright: 2014, 2021 Federico Galetto <galetto.federico@gmail.com>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/BGG.m2
++Copyright: 2016 Hirotachi Abo <abo@uidaho.edu>
++           2016 Wolfram Decker <decker@math.uni-sb.de>
++           2016 David Eisenbud <de@msri.org>
++           2016 Frank Schreyer <schreyer@math.uni-sb.de>
++           2016 Gregory G. Smith <ggsmith@mast.queensu.ca>
++           2016 Mike Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/BinomialEdgeIdeals.m2
++Copyright: 2015 Tobias Windisch <windisch@ovgu.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Binomials.m2
++       M2/Macaulay2/packages/Cyclotomic.m2
++Copyright: 2009-2014 Thomas Kahle <thomas-kahle@gmx.de>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/BoijSoederberg.m2
++Copyright: 2015 David Eisenbud <de@msri.org>
++           2015 Frank Schreyer <schreyer@math.uni-sb.de>
++           2015 Mike Stillman <mike@math.cornell.edu>
++           2015 Courtney Gibbons <crgibbon@hamilton.edu>
++           2015 Branden Stone <bstone@adelphi.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Book3264Examples.m2
++Copyright: 2010 Charley Crissman <charleyc@math.berkeley.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/BooleanGB.m2
++Copyright: 2011 Franziska Hinkelmann <fhinkel@vt.edu>
++           2011 Mike Stillman
++           2011 Elizabeth Arnold
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Bruns.m2
++Copyright: 2008 David Eisenbud <de@msri.org>
++           2008 Sonja Petrovic
++           2008 Adam Van Tuyl
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ChainComplexExtras.m2
++Copyright: 2016 David Eisenbud <de@msri.org>
++           2016 Frank Moore <fmoore@math.unl.edu>
++           2016 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++           2016 Greg Smith <ggsmith@mast.queensu.ca>
++           2016 Lily Silverstein <lsilverstein@cpp.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/CharacteristicClasses.m2
++Copyright: 2015 Martin Helmer <martin.helmer@berkeley.edu>
++           2015 Christine Jost <christine.e.jost@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Chordal*
++Copyright: 2017 Diego Cifuentes <diegcif@mit.edu>
++           2017 Pablo Parrilo <parrilo@mit.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/CoincidentRootLoci*
++Copyright: 2020 Maria Chiara Brambilla <brambilla@dipmat.univpm.it>
++           2020 Giovanni Staglianò <giovannistagliano@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Complexes.m2
++Copyright: 2020 Gregory G. Smith <ggsmith@mast.queensu.ca>
++           2020 Mike Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/ConformalBlocks.m2
++       M2/Macaulay2/packages/StatePolytope*
++Copyright: 2008, 2018 Dave Swinarski <dswinarski@fordham.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/CorrespondenceScrolls.m2
++Copyright: 2018 David Eisenbud <de@msri.org>
++           2018 Frank-Olaf Schreyer
++           2018 Alessio Sammartano
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Cremona*
++       M2/Macaulay2/packages/MultiprojectiveVarieties.m2
++       M2/Macaulay2/packages/Resultants.m2
++       M2/Macaulay2/packages/SparseResultants.m2
++       M2/Macaulay2/packages/SpecialFanoFourfolds.m2
++Copyright: 2020 Giovanni Staglianò <giovannistagliano@gmail.com>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/DecomposableSparseSystems*
++Copyright: 2020 Taylor Brysiewicz <taylorbrysiewicz@gmail.com>
++           2020 Jose Israel Rodriguez <Jose@math.wisc.edu>
++           2020 Frank Sottile <sottile@math.tamu.edu>
++           2020 Thomas Yahl <thomasjyahl@tamu.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Depth.m2
++Copyright: 2010 Bart Snapp <snapp@math.ohio-state.edu>
++           2016 David Eisenbud <de@msri.org>
++           2016 Branden Stone <bstone@adelphi.edu>
++License: public-domain
++
++Files: M2/Macaulay2/packages/DeterminantalRepresentations.m2
++Copyright: 2019 Justin Chen <jchen646@gatech.edu>
++           2019 Papri Dey <papridey@berkeley.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/DGAlgebras.m2
++Copyright: 2017 Frank Moore <moorewf@wfu.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/DiffAlg.m2
++Copyright: 2018 Manuel Dubinsky <manudubinsky@gmail.com>
++           2018 Cesar Massri <cmassri@caece.edu.ar>
++           2018 Ariel Molinuevo <amoli@dm.uba.ar>
++           2018 Federico Quallbrunn <fquallb@dm.uba.ar>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Divisor.m2
++Copyright: 2018 Karl Schwede <kschwede@gmail.com>
++           2018 Zhaoning Yang <zyy5054@gmail.com>
++License: public-domain
++
++Files: M2/Macaulay2/packages/Dmodules*
++Copyright: 1999-2009 Anton Leykin <leykin@math.gatech.edu>
++           1999-2009 Harrison Tsai
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/EdgeIdeals.m2
++Copyright: 2008-2010 Chris Francisco <chris@math.okstate.edu>
++           2008-2010 Andrew Hoefel <handrew@mathstat.dal.ca>
++           2008-2010 Adam Van Tuyl <avantuyl@lakeheadu.ca>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/EliminationMatrices.m2
++Copyright: 2011, 2012 Nicolás Botbol <nbotbol@dm.uba.ar>
++           2011, 2012 Laurent Busé <Laurent.Buse@inria.fr>
++           2011, 2012 Manuel Dubinsky <manudubinsky@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/EllipticCurves.m2
++Copyright: 2014 Alessandro Oneto <oneto@math.su.se>
++           2014 Stefano Marseglia <stefanom@math.su.se>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/EngineTests*
++       M2/Macaulay2/packages/undistributed-packages/CustomEngineTests.m2
++       M2/Macaulay2/packages/undistributed-packages/FastLinearAlgebra*
++Copyright: 2011 Michael E. Stillman <mike@math.cornell.edu>
++           2011 Jakob Kröker <kroeker@math.uni-hannover.de>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/EnumerationCurves.m2
++Copyright: 2013 Hiep Dang <hiepdt_tt@dlu.edu.vn>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/EquivariantGB*
++Copyright: 2014 Chris Hillar <chillar@msri.org>
++           2014 Robert Krone <krone@math.gatech.edu>
++           2014 Anton Leykin <leykin@math.gatech.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/EigenSolver.m2
++Copyright: 2020 Laurent Busé <Laurent.Buse@inria.fr>
++           2020 Justin Chen <justin.chen@math.gatech.edu>
++           2020 Kisun Lee <kil004@ucsd.edu>
++           2020 Anton Leykin <anton.leykin@gmail.com>
++           2020 Tomas Pajdla <pajdla@cvut.cz>
++           2020 Erika Pirnes <pirnes@wisc.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ExampleSystems*
++Copyright: 2020 Anton Leykin <leykin@math.gatech.edu>
++           2020 Justin Chen <justin.chen@math.gatech.edu>
++           2020 Kelly Maluccio <kmaluccio@math.tamu.edu>
++           2020 Leah Gold <L.Gold33@csuohio.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ExteriorIdeals.m2
++       M2/Macaulay2/packages/ExteriorModules.m2
++Copyright: 2017, 2021 Marilena Crupi <mcrupi@unime.it>
++           2017, 2021 Luca Amata <lamata@unime.it>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/FastMinors.m2
++Copyright: 2021 Boyana Martinova <u1056124@utah.edu>
++           2021 Marcus Robinson <robinson@math.utah.edu>
++           2021 Karl Schwede <schwede@math.utah.edu>
++           2021 Yuhui (Wei) Yao <yuhuiyao4ever@gmail.com>
++License: public-domain
++
++Files: M2/Macaulay2/packages/FGLM.m2
++Copyright: 2019 Dylan Peifer <djp282@cornell.edu>
++           2019 Mahrud Sayrafi <mahrud@umn.edu>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/FiniteFittingIdeals.m2
++Copyright: 2015 Gustav Sædén Ståhl <gss@math.kth.se>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/FormalGroupLaws.m2
++       M2/Macaulay2/packages/Graphics.m2
++       M2/Macaulay2/packages/WeylGroups*
++Copyright: 2010, 2012 Baptiste Calmès
++           2010, 2012 Viktor Petrov
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/FourierMotzkin.m2
++Copyright: 1998-2000, 2006, 2008, 2010 Gregory G. Smith <ggsmith@mast.queensu.ca>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/FourTiTwo.m2
++Copyright: 2008, 2009 Mike Stillman <mike@math.cornell.edu>
++           2008, 2009 Josephine Yu <jyu@math.mit.edu>
++           2008, 2009 Sonja Petrovic <petrovic@psu.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/FrobeniusThresholds*
++Copyright: 2019 Juliette Bruce <juliette.bruce@math.wisc.edu>
++           2019 Daniel Hernández <hernandez@ku.edu>
++           2019 Karl Schwede <schwede@math.utah.edu>
++           2019 Dan Smolkin <smolkin@math.utah.edu>
++           2019 Pedro Teixeira <pteixeir@knox.edu>
++           2019 Emily Witt <witt@ku.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/FunctionFieldDesingularization.m2
++       M2/Macaulay2/packages/QthPower.m2
++Copyright: 2014, 2021 Douglas A. Leonard <leonada@auburn.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/GenericInitialIdeal.m2
++       M2/Macaulay2/packages/Regularity.m2
++Copyright: 2008, 2009 Alexandra Seceleanu <asecele2@uiuc.edu>
++           2008, 2009 Nathaniel Stapleton <nstaple2@math.uiuc.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/gfanInterface.m2
++Copyright: 2012 Mike Stillman <mike@math.cornell.edu>
++           2012 Andrew Hoefel <andrew.hoefel@gmail.com>
++           2012 Diane Maclagan <D.Maclagan@warwick.ac.uk>
++           2012 Josephine Yu
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/GKMVarieties*
++Copyright: 2020 Chris Eur <chriseur@stanford.edu>
++           2020 Ritvik Ramkumar <ritvik@math.berkeley.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/GradedLieAlgebras*
++Copyright: 2020 Clas Löfwall <clas.lofwall@gmail.com>
++           2020 Samuel Lundqvist <samuel@math.su.se>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/GraphicalModels.m2
++Copyright: 2013 Luis Garcia-Puente <lgarcia@shsu.edu>
++           2013 Sonja Petrovic <sonja@psu.edu>
++           2013 Mike Stillman <mike@math.cornell.edu>
++           2013 Seth Sullivant <smsulli2@ncsu.edu>
++           2013 Alexander Diaz
++           2013 Shaowei Lin
++           2013 David Murrugarra
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/GraphicalModelsMLE.m2
++Copyright: 2020 Carlos Amendola <carlos.amendola@tum.de>
++           2020 Luis David Garcia Puente <lgarcia@shsu.edu>
++           2020 Roser Homs Pons <roser.homs@tum.de>
++           2020 Olga Kuznetsova <kuznetsova.olga@gmail.com>
++           2020 Harshit J Motwani <harshitmotwani2015@gmail.com>
++           2020 Elina Robeva <erobeva@gmail.com>
++           2020 David Swinarski <dswinarski@fordham.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/Graphs.m2
++Copyright: 2010 Amelia Taylor <originalbrickhouse@gmail.com>
++           2010 Augustine O'Keefe <aokeefe@tulane.edu>
++           2014 Jack Burkart <jburkar1@nd.edu>
++           2014 David Cook II <dwcook@eiu.edu>
++           2014 Caroline Jansen <cjansen@nd.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/GroebnerStrata.m2
++Copyright: 2021 Mike Stillman <mike@math.cornell.edu>
++           2021 Kristine Jones <kejones84@gmail.com>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/GroebnerWalk.m2
++Copyright: 2017 Dylan Peifer <djp282@cornell.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/Hadamard.m2
++Copyright: 2020 Iman Bahmani Jafarloo <ibahmani89@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/HodgeIntegrals.m2
++Copyright: 2010 Stephanie Yang <stpyang@math.kth.se>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/HyperplaneArrangements.m2
++Copyright: 2008-2016 Graham Denham
++           2008-2016 Gregory G. Smith <ggsmith@mast.queensu.ca>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/IntegralClosure*
++Copyright: 2020 David Eisenbud <de@msri.org>
++           2020 Mike Stillman <mike@math.cornell.edu>
++           2020 Amelia Taylor <originalbrickhouse@gmail.com>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/InvariantRing.m2
++Copyright: 2014 Thomas Hawes <thomas.hawes@maths.ox.ac.uk>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/InverseSystems.m2
++Copyright: 2018 David Eisenbud <de@msri.org>
++           2018 Mats Boij <boij@kth.se>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Jets*
++Copyright: 2021 Federico Galetto <galetto.federico@gmail.com>
++           2021 Nicholas Iammarino <nickiammarino@gmail.com>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/InvolutiveBases.m2
++Copyright: 2009 Daniel Robertz <daniel@momo.math.rwth-aachen.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/K3Carpets.m2
++Copyright: 2018 David Eisenbud <de@msri.org>
++           2018 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/K3Surfaces.m2
++Copyright: 2021 Michael Hoff <hahn@math.uni-sb.de>
++           2021 Giovanni Staglianò <giovanni.stagliano@unict.it>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Kronecker.m2
++Copyright: 2010 Edward Carter <edward.carter@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/KustinMiller.m2
++Copyright: 2011 Janko Boehm <boehm@math.uni-sb.de>
++           2011 Stavros Papadakis <papadak@math.ist.utl.pt>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/LatticePolytopes.m2
++Copyright: 2015 Anders Lundman <alundman@math.kth.se>
++           2015 Gustav Sædén Ståhl <gss@math.kth.se>
++License: public-domain
++
++Files: M2/Macaulay2/packages/LexIdeals.m2
++Copyright: 2008 Chris Francisco <chris@math.okstate.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/LieTypes.m2
++Copyright: 2018 Dave Swinarski <dswinarski@fordham.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/LinearTruncations.m2
++Copyright: 2021 Lauren Cranton Heller <lch@math.berkeley.edu>
++           2021 David Eisenbud <de@msri.org>
++           2021 Navid Nemati <Navid.Nemati@inria.fr>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/LocalRings*
++Copyright: 2017 Mahrud Sayrafi <mahrud@berkeley.edu>
++           2008, 2017 Mike Stillman <mike@math.cornell.edu>
++           2008 David Eisenbud <de@msri.org>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/M0nbar.m2
++Copyright: 2014 Han-Bom Moon <hmoon8@fordham.edu>
++           2014 David Swinarski <dswinarski@fordham.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/doc_lists.m2
++       M2/Macaulay2/packages/Macaulay2Doc/doc_tables.m2
++Copyright: 2018 Daniel R. Grayson
++           2018 Lily Silverstein
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/accumulate-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/append-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/commonest-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/compositions-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/deepSplice-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/delete-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/demark-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/drop-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/first-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/flatten-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/fold-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/horizontalJoin-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/insert-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/merge-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/part-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/partitions-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/parts-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/polarize-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/prepend-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/separate-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/substring-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/uniform-doc.m2
++Copyright: 2018 Lily Silverstein
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/all-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/any-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/apply-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/atan-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/cos-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/hilbertPolynomial-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/hilbertSeries-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/poincare-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/poincareN-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/reduceHilbert-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/sin-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/sinh-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/tan-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/tanh-doc.m2
++Copyright: L. Gold
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/applyKeys-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/applyPairs-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/applyValues-doc.m2
++Copyright: L. Gold, Lily Silverstein
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/betti-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/koszul-doc.m2
++Copyright: Caviglia, Kummini
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/binomial-doc.m2
++Copyright: M2Fest2005 DE
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/char-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/source-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/target-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/transpose-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/groebner.m2
++Copyright: kummini
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/codim-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/cotangentSheaf-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/dim-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/genera-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/genus-doc.m2
++Copyright: Decker, Popescu
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/cohomology-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/euler-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/HH-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/tangentSheaf-doc.m2
++Copyright: Sorin Popescu
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/compress-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/diagonalMatrix-doc.m2
++Copyright: 2005 M2fest
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/degreesRing-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/hilbertFunction-doc.m2
++Copyright: L. Gold
++           Dan Grayson
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/frac-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/permanents-doc.m2
++Copyright: 2005 M2Fest -- Irena
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/irreducibleCharacteristicSeries-doc.m2
++Copyright: Decker
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/intersect-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/regularity-doc.m2
++       M2/Macaulay2/packages/PrimaryDecomposition/doc.m2
++Copyright: Giulio
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/minors-doc.m2
++Copyright: blasiak, kummini
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/pdim-doc.m2
++Copyright: L.Gold, Josephine, Jonah
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/functions/symbol-percent-doc.m2
++Copyright: kummini, MES
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Macaulay2Doc/monomorderings.m2
++Copyright: Irena, Mike
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Markov.m2
++Copyright: Luis Garcia
++           Mike Stillman
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Matroids.m2
++Copyright: 2020 Justin Chen <jchen@math.berkeley.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/MinimalPrimes*
++Copyright: 2014 Frank Moore <moorewf@wfu.ede>
++           2014 Mike Stillman <mike@math.cornell.edu>
++           2014 Franziska Hinkelmann
++           2020 Justin Chen <justin.chen@math.gatech.edu>
++           2020 Mahrud Sayrafi <mahrud@umn.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Miura.m2
++Copyright: 2017 Joe Suzuki <j-suzuki@sigmath.es.osaka-u.ac.jp>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/MixedMultiplicity.m2
++Copyright: 2020 Kriti Goel <kritigoel.maths@gmail.com>
++           2020 Sudeshna Roy <sudeshnaroy@math.iitb.ac.in>
++           2020 J. K. Verma <jkv@math.iitb.ac.in>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ModuleDeformations.m2
++Copyright: 2007-2008 Bradford Hovinen <hovinen@math.uni-hannover.de>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/MonodromySolver*
++Copyright: 2020 Timothy Duff <tduff3@gatech.edu>
++           2020 Cvetelina Hill <cvetelina.hill@math.gatech.edu>
++           2020 Anders Nedergaard Jensen <jensen@math.au.dk>
++           2020 Kisun Lee <klee669@math.gatech.edu>
++           2020 Anton Leykin <leykin@math.gatech.edu>
++           2020 Jeff Sommars <sommars1@uic.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/MonomialAlgebras*
++Copyright: 2013 David Eisenbud <de@msri.org>
++           2013 Janko Boehm <boehm@mathematik.uni-kl.de.
++           2013 Max Nitsche <nitsche@mis.mpg.de>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/MonomialIntegerPrograms*
++Copyright: Lily Silverstein <lsilverstein@cpp.edu>
++           Jay White <jay.white@uky.edu>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/MultiGradedRationalMap.m2
++Copyright: 2018 Yairon Cid Ruiz <ycid@ub.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/MultiplicitySequence.m2
++Copyright: 2020 Justin Chen <justin.chen@math.gatech.edu>
++           2020 Youngsu Kim <youngsu.kim@csusb.edu>
++           2020 Jonathan Montaño <jmon@nmsu.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/MultiplierIdeals.m2
++Copyright: 2011-2013 Claudiu Raicu
++           2011-2013 Bart Snapp
++           2011-2013 Zach Teitler <zteitler@member.ams.org>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/MultiplierIdealsDim2.m2
++Copyright: 2015 Ferran Dachs-Cadefau <ferran.dachscadefau@wis.kuleuven.be>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/NAGtypes*
++       M2/Macaulay2/packages/undistributed-packages/NAGtools.m2
++Copyright: 2013 Anton Leykin <leykin@math.gatech.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/Nauty.m2
++       M2/Macaulay2/packages/NautyGraphs.m2
++       M2/Macaulay2/packages/SimplicialDecomposability.m2
++Copyright: 2010-2013 David W. Cook II <dwcook@eiu.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/NCAlgebra/*
++       M2/Macaulay2/packages/NCAlgebra.m2
++Copyright: 2016 Frank Moore <moorewf@wfu.edu>
++           2016 Andrew Conner <abc12@stmarys-ca.edu>
++           2016 Courtney Gibbons <crgibbon@hamilton.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/NoetherNormalization.m2
++Copyright: 2010 Bart Snap <snapp@math.ohio-state.edu>
++           2010 Nathaniel Stapleton <nstaple2@math.uiuc.edu>
++License: public-domain
++
++Files: M2/Macaulay2/packages/NoetherianOperators.m2
++Copyright: 2020 Robert Krone <krone@math.gatech.edu>
++           2020 Justin Chen <justin.chen@math.gatech.edu>
++           2020 Marc Harkonen <harkonen@gatech.edu>
++           2020 Yairon Cid-Ruiz <Yairon.CidRuiz@UGent.be>
++           2020 Anton Leykin <anton.leykin@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/NonminimalComplexes.m2
++       M2/Macaulay2/packages/RandomCanonicalCurves.m2
++       M2/Macaulay2/packages/RandomGenus14Curves.m2
++Copyright: 2011 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++           2011 Hans-Christian Graf v. Bothmer <bothmer@uni-math.gwdg.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Normaliz.m2
++Copyright: 2009, 2010 Winfried Bruns
++           2009, 2010 Gesa Kaempf <gkaempf@uni-osnabrueck.de>
++           2011, 2012, 2015, 2016 Christof Soeger <csoeger@uni-osnabrueck.de>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/NormalToricVarieties*
++       M2/Macaulay2/packages/SpectralSequences.m2
++Copyright: 2009-2020 Gregory G. Smith <ggsmith@mast.queensu.ca>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/NumericalAlgebraicGeometry*
++Copyright: 2014 Anton Leykin <leykin@math.gatech.edu>
++           2014 Robert Krone <krone@math.gatech.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/NumericalCertification*
++Copyright: 2018 Kisun Lee <klee669@gatech.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/NumericalImplicitization.m2
++Copyright: 2019 Justin Chen <jchen646@math.gatech.edu>
++           2018 Joe Kileel <jkileel@math.princeton.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/NumericalLinearAlgebra.m2
++Copyright: 2020 Robert Krone <krone@math.gatech.edu>
++           2020 Marc Harkonen <harkonen@gatech.edu>
++           2020 Anton Leykin <anton.leykin@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/NumericalSchubertCalculus*
++Copyright: 2017 Anton Leykin <leykin@math.gatech.edu>
++           2017 Abraham Martin del Campo <abraham.mc@cimat.mx>
++           2017 Frank Sottile <sottile@math.tamu.edu>
++           2017 Jan Verschelde <jan@math.uic.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/NumericSolutions.m2
++Copyright: 2017 Laura Menini <menini@disp.uniroma2.it>
++           2017 Corrado Possieri <possieri@ing.uniroma2.it>
++           2017 Antonio Tornambe <tornambe@disp.uniroma2.it>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/OldPolyhedra.m2
++Copyright: 2010 René Birkner <rbirkner@mi.fu-berlin.de>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/OldToricVectorBundles.m2
++       M2/Macaulay2/packages/ToricVectorBundles.m2
++Copyright: 2010 René Birkner <rbirkner@math.fu-berlin.de>
++           2010 Nathan Owen Ilten <nilten@cs.uchicago.edu>
++           2010 Lars Petersen <petersen@math.fu-berlin.de>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/OpenMath*
++       M2/Macaulay2/packages/SCSCP*
++Copyright: 2009 Dan Roozemond (TU Eindhoven, Netherlands)
++                <dan.roozemond@gmail.com>
++License: Apache-2.0
++
++Files: M2/Macaulay2/packages/PackageCitations.m2
++Copyright: 2017 Aaron Dall <aaronmdall@gmail.com>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/PencilsOfQuadrics.m2
++Copyright: 2020 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++           2020 David Eisenbud <de@msri.org>
++           2020 Yeongrak Kim <kim@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Permanents.m2
++Copyright: 2014 Tair Akhmejanov ta328@cornell.edu
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/PHCpack.m2
++Copyright: 2013 Elizabeth Gross <egross7@uic.edu>
++           2013 Sonja Petrovic <Sonja.Petrovic@iit.edu>
++           2013 Jan Verschelde <jan@math.uic.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/PhylogeneticTrees.m2
++Copyright: 2016 Hector Banos <hdbanoscervantes@alaksa.edu>
++           2016 Nathaniel Bushek <nbushek@alaska.edu>
++           2016 Ruth Davidson <ruth.davidson.math@gmail.com>
++           2016 Elizabeth Gross <elizabeth.gross@sjsu.edu>
++           2016 Pamela Harris <peh2@williams.edu>
++           2016 Robert Krone <rckrone@gmail.com>
++           2016 Colby Long <celong2@ncsu.edu>
++           2016 AJ Stewart <stewaral@seattleu.edu>
++           2016 Robert Walker <robmarsw@umich.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/PieriMaps.m2
++Copyright: 2008, 2009 Steven V Sam <ssam@math.mit.edu>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/Points.m2
++Copyright: 2008 Mike Stillman <mike@math.cornell.edu>
++           2008 Gregory G. Smith <ggsmith@mast.queensu.ca>
++           2008 Stein A. Strømme <stromme@math.uib.no>
++           2016 David Eisenbud <de@msri.org>
++           2018 Federico Galetto <galetto.federico@gmail.com>
++           2018 Joseph W. Skelton <jskelton@tulane.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Polyhedra*
++Copyright: 2010 René Birkner <rbirkner@mi.fu-berlin.de>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/Polymake.m2
++Copyright: 2008 Josephine Yu jyu@math.mit.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Posets.m2
++Copyright: 2011-2014 David Cook II <dwcook@eiu.edu>
++           2011-2014 Sonja Mapes <smapes1@nd.edu>
++           2011-2014 Gwyn Whieldon <whieldon@hood.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/PositivityToricBundles.m2
++Copyright: 2020 Andreas Hochenegger <andreas.hochenegger@sns.it>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/Pullback.m2
++Copyright: 2018 Drew Ellingson
++           2018 Karl Schwede
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/PushForward.m2
++Copyright: 2015 Claudiu Raicu <craicu@nd.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Python.m2
++Copyright: 2021 Daniel R. Grayson <danielrichardgrayson@gmail.com>
++           2021 Doug Torrance <dtorrance@piedmont.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Quasidegrees.m2
++Copyright: 2015 Roberto Barrera <rbarrera@math.tamu.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/QuaternaryQuartics*
++Copyright: 2021 Gregorz Kapustka
++           2021 Michal Kapustka
++           2021 Kristian Ranestad
++           2021 Hal Schenck
++           2021 Mike Stillman <mike@math.cornell.edu>
++           2021 Beihui Yuan
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/QuillenSuslin.m2
++Copyright: 2013 Brett Barwick <bbarwick@uscupstate.edu>
++           2013 Branden Stone <bstone@bard.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/RandomComplexes.m2
++       M2/Macaulay2/packages/SVDComplexes.m2
++Copyright: 2018 Frank Schreyer <schreyer@math.uni-sb.de>
++           2018 Michael E. Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/RandomCurves.m2
++       M2/Macaulay2/packages/RandomPlaneCurves.m2
++       M2/Macaulay2/packages/RandomSpaceCurves.m2
++Copyright: 2011 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++           2011 Hans-Christian Graf v. Bothmer <bothmer@uni-math.gwdg.de>
++           2011 Florian Geiss <fg@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/RandomCurvesOverVerySmallFiniteFields.m2
++Copyright: 2018 Christian Bopp <bopp@math.uni-sb.de>
++           2011 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/RandomIdeals.m2
++       M2/Macaulay2/packages/ResidualIntersections.m2
++Copyright: 2016 Katie Ansaldi <kansaldi@gmail.com>
++           2016 David Eisenbud <de@msri.org>
++           2016 Robert Krone <rckrone@gmail.com>
++           2016 Jay Yang <jkelleyy@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/RandomMonomialIdeals.m2
++Copyright: 2019 Sonja Petrovic <sonja.petrovic@iit.edu>
++           2019 Despina Stasi <stasdes@iit.edu>
++           2019 Dane Wilburne <dwilburn@hawk.iit.edu>
++           2019 Tanner Zielinski <tzielin1@hawk.iit.edu>
++           2019 Daniel Kosmas <dkosmas@hawk.iit.edu>
++           2019 Parker Joncus <pjoncus@hawk.iit.edu>
++           2019 Richard Osborn <rosborn@hawk.iit.edu>
++           2019 Monica Yun <myun1@hawk.iit.edu>
++           2019 Genevieve Hummel <ghummel1@hawk.iit.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/RandomObjects.m2
++Copyright: 2011 Hans-Christian Graf v. Bothmer <bothmer@uni-math.gwdg.de>
++           2011 Florian Geiss <fg@math.uni-sb.de>
++           2011 Daniel R. Grayson <dan@math.uiuc.edu>
++           2011 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/RandomPoints.m2
++Copyright: 2021 Sankhaneel Bisui <sbisu@tulane.edu>
++           2021 Thai Nguyen <tnguyen11@tulane.edu>
++           2021 Karl Schwede <schwede@math.utah.edu>
++           2021 Sarasij Maitra <sm3vg@virginia.edu>
++           2021 Zhan Jiang <zoeng@umich.edu>
++           2021 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/RationalMaps.m2
++Copyright: 2019 Karl Schwede <kschwede@gmail.com>
++           2019 Daniel Smolkin <smolkin@math.utah.edu>
++           2019 S. Hamid Hassanzadeh <hassanzadeh.ufrj@gmail.com>
++           2019 C.J. Bott <cjamesbott@gmail.com>
++License: public-domain
++
++Files: M2/Macaulay2/packages/RationalPoints.m2
++Copyright: 2009 Nathaniel Stapleton <nat.j.stapleton@gmail.com>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/RationalPoints2.m2
++Copyright: 2021 Jieao Song <jieao.song@imj-prg.fr>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/ReactionNetworks*
++Copyright: 2016 Cvetelina Hill <cvetelina.hill@math.gatech.edu>
++           2016 Timothy Duff <timothy.duff@ncf.edu>
++           2016 Kisun Lee <klee669@math.gatech.edu>
++           2016 Anton Leykin <leykin@math.gatech.edu>
++           2018 Alexandru Iosif <alexandru.iosif@ovgu.de>
++           2018 Michael Adamer <adamer@maths.ox.ac.uk>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/RealRoots.m2
++Copyright: 2020 Jordy Lopez <jordy.lopez@tamu.edu>
++           2020 Kelly Maluccio <kmaluccio@tamu.edu>
++           2020 Frank Sottile <sottile@tamu.edu>
++           2020 Thomas Yahl <Thomasjyahl@tamu.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ReesAlgebra.m2
++Copyright: 2006, 2008, 2017, 2019 David Eisenbud <de@msri.org>
++           2006, 2008, 2017, 2019 Amelia Taylor <originalbrickhouse@gmail.com>
++           2006, 2008, 2017, 2019 Sorin Popescu <sorin@math.sunysb.edu>
++           2006, 2008, 2017, 2019 Michael E. Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/RelativeCanonicalResolution.m2
++Copyright: 2020 Christian Bopp <bopp@math.uni-sb.de>
++           2020 Michael Hoff <hahn@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ResLengthThree.m2
++Copyright: 2020 Lars Winther Christensen <lars.w.christensen@ttu.edu>
++           2020 Luigi Ferraro <lferraro@ttu.edu>
++           2020 Francesca Gandini <fra.gandi.phd@gmail.com>
++           2020 Frank Moore <moorewf@wfu.edu>
++           2020 Oana Veliche <o.veliche@northeastern.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/ResolutionsOfStanleyReisnerRings.m2
++Copyright: 2020 Ashleigh Adams <adams869@umn.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/RunExternalM2.m2
++       M2/Macaulay2/packages/VectorFields.m2
++Copyright: 2016 Brian Pike <bapike@gmail.com>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/Saturation*
++Copyright: 2020 Justin Chen <justin.chen@math.gatech.edu>
++           2020 Mahrud Sayrafi <mahrud@umn.edu>
++           2020 Mike Stillman <mike@math.cornell.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/Schubert2*
++Copyright: 2013 Daniel R. Grayson <dan@math.uiuc.edu>
++           2013 Michael E. Stillman <mike@math.cornell.edu>
++           2013 Stein A. Strømme <stromme@math.uib.no>
++           2013 David Eisenbud <de@msri.org>
++           2013 Charley Crissman <charleyc@math.berkeley.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/SchurComplexes.m2
++Copyright: 2019 Michael K. Brown <mkbrown5@wisc.edu>
++           2019 Amy Huang <hhuang235@math.wisc.edu>
++           2019 Robert Laudone <robert.laudone@gmail.com>
++           2019 Michael Perlman <mperlman@nd.edu>
++           2019 Claudiu Raicu <craicu@nd.edu>
++           2019 Steven V. Sam <ssam@sd.edu>
++           2019 Joao Pedro Santos <jsantos3@nd.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SchurFunctors*
++Copyright: 2008 Michael E. Stillman <mike@math.cornell.edu>
++           2008 Anton Leykin
++           2008 Mauricio Velasco
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/SchurRings.m2
++Copyright: 2007, 2011 Michael Stillman <mike@math.cornell.edu>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/SectionRing.m2
++Copyright: 2016 Andrew Bydlon <thelongdivider@gmail.com>
++License: public-domain
++
++Files: M2/Macaulay2/packages/SegreClasses.m2
++Copyright: 2018 Martin Helmer <m.helmer@math.ku.dk>
++           2018 Corey Harris <Corey.Harris@mis.mpg.de>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SemidefiniteProgramming*
++       M2/Macaulay2/packages/SumsOfSquares*
++Copyright: 2018, 2019 Diego Cifuentes <diegcif@mit.edu>
++           2018, 2019 Thomas Kahle <thomas.kahle@ovgu.de>
++           2018, 2019 Pablo A. Parrilo <parrilo@mit.edu>
++           2018, 2019 Helfried Peyrl <peyrl@control.ee.ethz.ch>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Seminormalization.m2
++Copyright: 2019 Karl Schwede <schwede@math.utah.edu>
++           2019 Bernard Serbinowski <bserbinowski@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SimpleDoc*
++Copyright: 2020 Daniel R. Grayson <dan@math.uiuc.edu>
++           2020 Mike Stillman <mike@math.cornell.edu>
++           2020 Mahrud Sayrafi <mahrud@umn.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/SimplicialComplexes.m2
++Copyright: 2006, 2010 Sorin Popescu <sorin@math.sunysb.edu>
++           2006, 2010 Gregory G. Smith <ggsmith@mast.queensu.ca>
++           2006, 2010 Mike Stillman <mike@math.cornell.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/SimplicialPosets.m2
++Copyright: 2019 Nathan Nichols <nicho997@umn.edu>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/SlackIdeals.m2
++Copyright: 2020 Amy Wiebe <w.amy.math@gmail.com>
++           2020 Antonio Macchia <macchia.antonello@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SLnEquivariantMatrices.m2
++Copyright: 2017-2018 Paolo Lella <paolo.lella@polimi.it>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/SLPexpressions*
++Copyright: 2019 Anton Leykin <leykin@math.gatech.edu>
++           2019 Timothy Duff <tduff3@gatech.edu>
++           2019 Justin Chen <jchen646@math.gatech.edu>
++           2019 Mike Stillman <mike@math.cornell.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/SpaceCurves.m2
++Copyright: 2018 Frank Schreyer <schreyer@math.uni-sb.de>
++           2018 Mike Stillman <mike@math.cornell.edu>
++           2018 Mengyuan Zhang <myzhang@berkeley.edu>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/SpechtModule.m2
++Copyright: 2019 Jonathan Niño <ja.nino937@uniandes.edu.co>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/StatGraphs.m2
++Copyright: 2020 Carlos Amendola <carlos.amendola@tum.de>
++           2020 Luis David Garcia Puente <lgarcia@shsu.edu>
++           2020 Roser Homs Pons <roser.homs@tum.de>
++           2020 Olga Kuznetsova <kuznetsova.olga@gmail.com>
++           2020 Harshit J Motwani <harshitmotwani2015@gmail.com>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/StronglyStableIdeals.m2
++Copyright: 2018 Davide Alberelli <davide.alberelli@gmail.com>
++           2018 Paolo Lella <paolo.lella@polimi.it>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SuperLinearAlgebra.m2
++Copyright: 2021 Fereshteh Bahadorykhalily <f.bahadori.khalili@gmail.com>
++           2021 Fatemeh Tarashi Kashani <tarashikashanifatemeh@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SwitchingFields.m2
++Copyright: 2020 Zhan Jiang <zoeng@umich.edu>
++           2020 Sarasij Maitra <sm3vg@virginia.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SymbolicPowers.m2
++Copyright: 2019 Eloisa Grifo <grifo@umich.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SymmetricPolynomials.m2
++       M2/Macaulay2/packages/undistributed-packages/ToricCohomology.m2
++Copyright: 2009 Alexandra Seceleanu
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/TangentCone.m2
++Copyright: 2006 Craig Huneke <huneke@math.ku.edu>
++           2006 David Eisenbud <de@msri.org>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/TateOnProducts.m2
++Copyright: 2020 Daniel Erman <derman@math.wisc.edu>
++           2020 David Eisenbud <de@msri.org>
++           2020 Frank-Olaf Schreyer <schreyer@math.uni-sb.de>
++           2020 Michael E. Stillman <mike@math.cornell.edu>
++           2020 Yeongrak Kim <kim@math.uni-sb.de>
++Comment: See Comment at the top of this file.
++License: GPL-2+ and public-domain
++
++Files: M2/Macaulay2/packages/TensorComplexes.m2
++Copyright: 2011 David Eisenbud <de@msri.org>
++           2011 Daniel Erman <derman@math.stanford.edu>
++           2011 Gregory G. Smith <ggsmith@mast.queensu.ca>
++           2011 Dumitru Stamate <dumitru.stamate@fmi.unibuc.ro>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/TestIdeals*
++Copyright: 2019 Erin Bela <ebela@nd.edu>
++           2019 Alberto F. Boix <albertof.boix@gmail.com>
++           2019 Juliette Bruce <juliette.bruce@math.wisc.edu>
++           2019 Drew Ellingson <drewtell@umich.edu>
++           2019 Daniel Hernandez <hernandez@ku.edu>
++           2019 Zhibek Kadyrsizova <zhikadyr@umich.edu>
++           2019 Mordechai Katzman <m.katzman@sheffield.ac.uk>
++           2019 Sara Malec <malec@hood.edu>
++           2019 Matthew Mastroeni <mmastro@okstate.edu>
++           2019 Maral Mostafazadehfard <maralmostafazadehfard@gmail.com>
++           2019 Marcus Robinson <robinson@math.utah.edu>
++           2019 Karl Schwede <schwede@math.utah.edu>
++           2019 Dan Smolkin <smolkin@math.utah.edu>
++           2019 Pedro Teixeira <pteixeir@knox.edu>
++           2019 Emily Witt <witt@ku.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ThinSincereQuivers.m2
++Copyright: 2019 Mary Barker <marybarker@wustl.edu>
++           2019 Patricio Gallardo <pgallard@ucr.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ThreadedGB.m2
++Copyright: 2020 Sonja Petrovic <sonja.petrovic@iit.edu>
++           2020 Sara Jamshidi Zelenberg <szelenberg@mx.lakeforest.edu>
++           2020 Tanner Zielinski <tzielin1@hawk.iit.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/TorAlgebra.m2
++Copyright: 2018 Lars Winther Christensen <lars.w.christensen@ttu.edu>
++           2018 Oana Veliche <o.veliche@northeastern.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ToricInvariants.m2
++Copyright: 2018 Martin Helmer <m.helmer@math.ku.dk>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/ToricTopology.m2
++Copyright: 2015 Alvise Trevisan <a.trevisan@enpicom.com>
++           2015 Alexander I. Suciu <a.suciu@neu.edu>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/TriangularSets*
++Copyright: 2017 Diego Cifuentes <diegcif@mit.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/Triplets.m2
++Copyright: 2013 Gunnar Floystad <nmagf@uib.no>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Tropical*
++Copyright: 2019 Carlos Amendola <carlos.amendola@tum.de>
++           2019 Kathlen Kohn <kathlen.korn@gmail.com>
++           2019 Sara Lamboglia <lamboglia@math.uni-frankfurt.de>
++           2019 Diane Maclagan <D.Maclagan@warwick.ac.uk>
++           2019 Benjamin Smith <benjamin.smith@qmul.ac.uk>
++           2019 Jeff Sommars <sommars1@uic.edu>
++           2019 Paolo Tripoli <paolo.tripoli@nottingham.ac.uk>
++           2019 Magdalena Zajaczkowska <Magdalena.A.Zajaczkowska@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/TSpreadIdeals.m2
++Copyright: 2021 Luca Amata <lamata@unime.it>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/undistributed-packages/FrobeniusMultiplicities.m2
++       M2/Macaulay2/packages/undistributed-packages/Functoriality.m2
++Copyright: 2009 Jason G McCullough <jmccullo@math.ucr.edu>
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/undistributed-packages/Polyhedra2.m2
++       M2/Macaulay2/packages/undistributed-packages/PolyhedralObjects.m2
++Copyright: 2012 Nathan Ilten <nilten@math.berkeley.edu>
++           2012 Josephine Yu
++           2012 Qingchun Ren
++           2010 Rene Birker
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/undistributed-packages/PolymakeInterface.m2
++Copyright: 2012 Josephine Yu <josephine.yu@math.gatech.edu>
++           2012 Nathan Ilten <nilten@math.berkeley.edu>
++           2012 Qingchun Ren <qingchun.ren@gmail.com>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SubalgebraBases*
++Copyright: 2021 Michael Burr <burr2@clemson.edu>
++           2021 Oliver Clarke <oc17371@bristol.ac.uk>
++           2021 Timothy Duff <tduff3@gatech.edu>
++           2021 Jackson Leaman
++           2021 Nathan Nichols <nathannichols454@gmail.com>
++           2021 Elise Walker <elise.walker@tamu.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/SubalgebraBases/Old-SubalgebraBases/SubalgebraBases/sagbieng.m2
++       M2/Macaulay2/packages/SubalgebraBases/Old-SubalgebraBases/SubalgebraBases/sagbitop.m2
++Copyright: 1997 Mike Stillman <mike@math.cornell.edu>
++           1997 Harry Tsai
++License: GPL-2+
++
++Files: M2/Macaulay2/packages/VersalDeformations.m2
++Copyright: 2020 Nathan Owen Ilten <nilten@math.berkeley.edu>
++License: GPL-3+
++
++Files: M2/Macaulay2/packages/VirtualResolutions*
++Copyright: 2018-2020 Ayah Almousa <aka66@cornell.edu>
++           2018-2020 Christine Berkesch <cberkesc@umn.edu>
++           2018-2020 Juliette Bruce <jebruce2@wisc.edu>
++           2018-2020 David Eisenbud <de@msri.org>
++           2018-2020 Michael Loper <loper012@umn.edu>
++           2018-2020 Mahrud Sayrafi <mahrud@umn.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/packages/Visualize*
++Copyright: 2017 Brett Barwick <bbarwick@uscupstate.edu>
++           2017 Thomas Enkosky <tomenk@bu.edu>
++           2017 Branden Stone <bstone@adelphi.edu>
++           2017 Jim Vallandingham <vlandham@gmail.com>
++License: GPL-2+
++
++Files: debian/missing-sources/nouislider.*/*
++       M2/Macaulay2/packages/Visualize/css/nouislider.*
++       M2/Macaulay2/packages/Visualize/js/nouislider.min.js
++Copyright: 2016 Leon Gersen <leongersen@gmail.com>
++License: WTFPL
++Comment: https://github.com/leongersen/noUiSlider/tree/8.5.1
++
++Files: M2/Macaulay2/packages/Visualize/*/BootSideMenu.*
++Copyright: 2014-2017 Andrea Lombardo <andrealombardo84@gmail.com>
++License: Apache-2.0
++Comment: https://github.com/AndreaLombardo/BootSideMenu
++
++Files: M2/Macaulay2/packages/PrimaryDecomposition/associatedPrimes-test.m2
++Copyright: 2002 Jessica Sidman
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/tests/normal/CSM.test.m2
++Copyright: 2002 Paolo Aluffi
++License: freely-used-if-properly-acknowledged
++ This code can be freely used, provided use is properly acknowledged
++
++Files: M2/Macaulay2/tests/normal/ext2.m2
++Copyright: Ezra Miller <enmiller@math.berkeley.edu>
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/tests/normal/ext3.m2
++Copyright: Hal Schenck
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/tests/normal/groupcoh.m2
++Copyright: Sarah Wasserman
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/tests/normal/monideal2.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/det-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/genericMatrix-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/genericSkewMatrix-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/genericSymmetricMatrix-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/ideal-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isAffineRing-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isCommutative-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isField-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isFreeModule-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isIdeal-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isModule-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isMonomialIdeal-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isPolynomialRing-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isPrime-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isQuotientModule-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isQuotientRing-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isRing-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isSquareFree-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isSubmodule-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/isUnit-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/standardPairs-doc.m2
++       M2/Macaulay2/packages/Macaulay2Doc/functions/vars-doc.m2
++Copyright: Gregory G. Smith
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/tests/normal/schreyer.m2
++Copyright: Frank Schreyer
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/Macaulay2/tests/rationality/*.m2
++Copyright: Christian Boehning
++           Hans-Christian Graf v. Bothmer
++Comment: See Comment at the top of this file.
++License: public-domain
++
++Files: M2/usr-build/pkg.m4
++Copyright: 2004 Scott James Remnant <scott@netsplit.com>.
++           2012-2015 Dan Nicholson <dbn.lists@gmail.com>
++License: GPL-2+ with autoconf exception
++
++Files: M2/util/validator-runner.py
++Copyright: 2020 Janus Troelsen
++License: 0BSD
++Comment: https://github.com/ysangkok/w3c-validator-runner/blob/master/LICENSE
++
++License: 0BSD
++ Permission to use, copy, modify, and/or distribute this software for any
++ purpose with or without fee is hereby granted.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
++ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
++ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
++ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
++ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
++ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
++ PERFORMANCE OF THIS SOFTWARE.
++
++License: BSD-2-clause
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions
++ are met:
++ .
++ 1. Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ 2. Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ .
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
++ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
++ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
++ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
++ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
++ WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++ POSSIBILITY OF SUCH DAMAGE.
++
++License: BSD-3-clause
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are
++ met:
++ .
++ 1. Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++ 2. Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++ 3. Neither the name of the copyright holder nor the names of its
++ contributors may be used to endorse or promote products derived from
++ this software without specific prior written permission.
++ .
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
++ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
++ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
++ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
++ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
++ WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++ POSSIBILITY OF SUCH DAMAGE.
++
++License: CECILL-B
++ CeCILL-B FREE SOFTWARE LICENSE AGREEMENT
++ .
++     Notice
++ .
++ This Agreement is a Free Software license agreement that is the result
++ of discussions between its authors in order to ensure compliance with
++ the two main principles guiding its drafting:
++ .
++     * firstly, compliance with the principles governing the distribution
++       of Free Software: access to source code, broad rights granted to
++       users,
++     * secondly, the election of a governing law, French law, with which
++       it is conformant, both as regards the law of torts and
++       intellectual property law, and the protection that it offers to
++       both authors and holders of the economic rights over software.
++ .
++ The authors of the CeCILL-B (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
++ license are:
++ .
++ Commissariat à l'Energie Atomique - CEA, a public scientific, technical
++ and industrial research establishment, having its principal place of
++ business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
++ .
++ Centre National de la Recherche Scientifique - CNRS, a public scientific
++ and technological establishment, having its principal place of business
++ at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
++ .
++ Institut National de Recherche en Informatique et en Automatique -
++ INRIA, a public scientific and technological establishment, having its
++ principal place of business at Domaine de Voluceau, Rocquencourt, BP
++ 105, 78153 Le Chesnay cedex, France.
++ .
++     Preamble
++ .
++ This Agreement is an open source software license intended to give users
++ significant freedom to modify and redistribute the software licensed
++ hereunder.
++ .
++ The exercising of this freedom is conditional upon a strong obligation
++ of giving credits for everybody that distributes a software
++ incorporating a software ruled by the current license so as all
++ contributions to be properly identified and acknowledged.
++ .
++ In consideration of access to the source code and the rights to copy,
++ modify and redistribute granted by the license, users are provided only
++ with a limited warranty and the software's author, the holder of the
++ economic rights, and the successive licensors only have limited liability.
++ .
++ In this respect, the risks associated with loading, using, modifying
++ and/or developing or reproducing the software by the user are brought to
++ the user's attention, given its Free Software status, which may make it
++ complicated to use, with the result that its use is reserved for
++ developers and experienced professionals having in-depth computer
++ knowledge. Users are therefore encouraged to load and test the
++ suitability of the software as regards their requirements in conditions
++ enabling the security of their systems and/or data to be ensured and,
++ more generally, to use and operate it in the same conditions of
++ security. This Agreement may be freely reproduced and published,
++ provided it is not altered, and that no provisions are either added or
++ removed herefrom.
++ .
++ This Agreement may apply to any or all software for which the holder of
++ the economic rights decides to submit the use thereof to its provisions.
++ .
++     Article 1 - DEFINITIONS
++ .
++ For the purpose of this Agreement, when the following expressions
++ commence with a capital letter, they shall have the following meaning:
++ .
++ Agreement: means this license agreement, and its possible subsequent
++ versions and annexes.
++ .
++ Software: means the software in its Object Code and/or Source Code form
++ and, where applicable, its documentation, "as is" when the Licensee
++ accepts the Agreement.
++ .
++ Initial Software: means the Software in its Source Code and possibly its
++ Object Code form and, where applicable, its documentation, "as is" when
++ it is first distributed under the terms and conditions of the Agreement.
++ .
++ Modified Software: means the Software modified by at least one
++ Contribution.
++ .
++ Source Code: means all the Software's instructions and program lines to
++ which access is required so as to modify the Software.
++ .
++ Object Code: means the binary files originating from the compilation of
++ the Source Code.
++ .
++ Holder: means the holder(s) of the economic rights over the Initial
++ Software.
++ .
++ Licensee: means the Software user(s) having accepted the Agreement.
++ .
++ Contributor: means a Licensee having made at least one Contribution.
++ .
++ Licensor: means the Holder, or any other individual or legal entity, who
++ distributes the Software under the Agreement.
++ .
++ Contribution: means any or all modifications, corrections, translations,
++ adaptations and/or new functions integrated into the Software by any or
++ all Contributors, as well as any or all Internal Modules.
++ .
++ Module: means a set of sources files including their documentation that
++ enables supplementary functions or services in addition to those offered
++ by the Software.
++ .
++ External Module: means any or all Modules, not derived from the
++ Software, so that this Module and the Software run in separate address
++ spaces, with one calling the other when they are run.
++ .
++ Internal Module: means any or all Module, connected to the Software so
++ that they both execute in the same address space.
++ .
++ Parties: mean both the Licensee and the Licensor.
++ .
++ These expressions may be used both in singular and plural form.
++ .
++     Article 2 - PURPOSE
++ .
++ The purpose of the Agreement is the grant by the Licensor to the
++ Licensee of a non-exclusive, transferable and worldwide license for the
++ Software as set forth in Article 5 hereinafter for the whole term of the
++ protection granted by the rights over said Software.
++ .
++     Article 3 - ACCEPTANCE
++ .
++ 3.1 The Licensee shall be deemed as having accepted the terms and
++ conditions of this Agreement upon the occurrence of the first of the
++ following events:
++ .
++     * (i) loading the Software by any or all means, notably, by
++       downloading from a remote server, or by loading from a physical
++       medium;
++     * (ii) the first time the Licensee exercises any of the rights
++       granted hereunder.
++ .
++ 3.2 One copy of the Agreement, containing a notice relating to the
++ characteristics of the Software, to the limited warranty, and to the
++ fact that its use is restricted to experienced users has been provided
++ to the Licensee prior to its acceptance as set forth in Article 3.1
++ hereinabove, and the Licensee hereby acknowledges that it has read and
++ understood it.
++ .
++     Article 4 - EFFECTIVE DATE AND TERM
++ .
++       4.1 EFFECTIVE DATE
++ .
++ The Agreement shall become effective on the date when it is accepted by
++ the Licensee as set forth in Article 3.1.
++ .
++       4.2 TERM
++ .
++ The Agreement shall remain in force for the entire legal term of
++ protection of the economic rights over the Software.
++ .
++     Article 5 - SCOPE OF RIGHTS GRANTED
++ .
++ The Licensor hereby grants to the Licensee, who accepts, the following
++ rights over the Software for any or all use, and for the term of the
++ Agreement, on the basis of the terms and conditions set forth hereinafter.
++ .
++ Besides, if the Licensor owns or comes to own one or more patents
++ protecting all or part of the functions of the Software or of its
++ components, the Licensor undertakes not to enforce the rights granted by
++ these patents against successive Licensees using, exploiting or
++ modifying the Software. If these patents are transferred, the Licensor
++ undertakes to have the transferees subscribe to the obligations set
++ forth in this paragraph.
++ .
++       5.1 RIGHT OF USE
++ .
++ The Licensee is authorized to use the Software, without any limitation
++ as to its fields of application, with it being hereinafter specified
++ that this comprises:
++ .
++    1. permanent or temporary reproduction of all or part of the Software
++       by any or all means and in any or all form.
++ .
++    2. loading, displaying, running, or storing the Software on any or
++       all medium.
++ .
++    3. entitlement to observe, study or test its operation so as to
++       determine the ideas and principles behind any or all constituent
++       elements of said Software. This shall apply when the Licensee
++       carries out any or all loading, displaying, running, transmission
++       or storage operation as regards the Software, that it is entitled
++       to carry out hereunder.
++ .
++       5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
++ .
++ The right to make Contributions includes the right to translate, adapt,
++ arrange, or make any or all modifications to the Software, and the right
++ to reproduce the resulting software.
++ .
++ The Licensee is authorized to make any or all Contributions to the
++ Software provided that it includes an explicit notice that it is the
++ author of said Contribution and indicates the date of the creation thereof.
++ .
++       5.3 RIGHT OF DISTRIBUTION
++ .
++ In particular, the right of distribution includes the right to publish,
++ transmit and communicate the Software to the general public on any or
++ all medium, and by any or all means, and the right to market, either in
++ consideration of a fee, or free of charge, one or more copies of the
++ Software by any means.
++ .
++ The Licensee is further authorized to distribute copies of the modified
++ or unmodified Software to third parties according to the terms and
++ conditions set forth hereinafter.
++ .
++         5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
++ .
++ The Licensee is authorized to distribute true copies of the Software in
++ Source Code or Object Code form, provided that said distribution
++ complies with all the provisions of the Agreement and is accompanied by:
++ .
++    1. a copy of the Agreement,
++ .
++    2. a notice relating to the limitation of both the Licensor's
++       warranty and liability as set forth in Articles 8 and 9,
++ .
++ and that, in the event that only the Object Code of the Software is
++ redistributed, the Licensee allows effective access to the full Source
++ Code of the Software at a minimum during the entire period of its
++ distribution of the Software, it being understood that the additional
++ cost of acquiring the Source Code shall not exceed the cost of
++ transferring the data.
++ .
++         5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
++ .
++ If the Licensee makes any Contribution to the Software, the resulting
++ Modified Software may be distributed under a license agreement other
++ than this Agreement subject to compliance with the provisions of Article
++ 5.3.4.
++ .
++         5.3.3 DISTRIBUTION OF EXTERNAL MODULES
++ .
++ When the Licensee has developed an External Module, the terms and
++ conditions of this Agreement do not apply to said External Module, that
++ may be distributed under a separate license agreement.
++ .
++         5.3.4 CREDITS
++ .
++ Any Licensee who may distribute a Modified Software hereby expressly
++ agrees to:
++ .
++    1. indicate in the related documentation that it is based on the
++       Software licensed hereunder, and reproduce the intellectual
++       property notice for the Software,
++ .
++    2. ensure that written indications of the Software intended use,
++       intellectual property notice and license hereunder are included in
++       easily accessible format from the Modified Software interface,
++ .
++    3. mention, on a freely accessible website describing the Modified
++       Software, at least throughout the distribution term thereof, that
++       it is based on the Software licensed hereunder, and reproduce the
++       Software intellectual property notice,
++ .
++    4. where it is distributed to a third party that may distribute a
++       Modified Software without having to make its source code
++       available, make its best efforts to ensure that said third party
++       agrees to comply with the obligations set forth in this Article .
++ .
++ If the Software, whether or not modified, is distributed with an
++ External Module designed for use in connection with the Software, the
++ Licensee shall submit said External Module to the foregoing obligations.
++ .
++         5.3.5 COMPATIBILITY WITH THE CeCILL AND CeCILL-C LICENSES
++ .
++ Where a Modified Software contains a Contribution subject to the CeCILL
++ license, the provisions set forth in Article 5.3.4 shall be optional.
++ .
++ A Modified Software may be distributed under the CeCILL-C license. In
++ such a case the provisions set forth in Article 5.3.4 shall be optional.
++ .
++     Article 6 - INTELLECTUAL PROPERTY
++ .
++       6.1 OVER THE INITIAL SOFTWARE
++ .
++ The Holder owns the economic rights over the Initial Software. Any or
++ all use of the Initial Software is subject to compliance with the terms
++ and conditions under which the Holder has elected to distribute its work
++ and no one shall be entitled to modify the terms and conditions for the
++ distribution of said Initial Software.
++ .
++ The Holder undertakes that the Initial Software will remain ruled at
++ least by this Agreement, for the duration set forth in Article 4.2.
++ .
++       6.2 OVER THE CONTRIBUTIONS
++ .
++ The Licensee who develops a Contribution is the owner of the
++ intellectual property rights over this Contribution as defined by
++ applicable law.
++ .
++       6.3 OVER THE EXTERNAL MODULES
++ .
++ The Licensee who develops an External Module is the owner of the
++ intellectual property rights over this External Module as defined by
++ applicable law and is free to choose the type of agreement that shall
++ govern its distribution.
++ .
++       6.4 JOINT PROVISIONS
++ .
++ The Licensee expressly undertakes:
++ .
++    1. not to remove, or modify, in any manner, the intellectual property
++       notices attached to the Software;
++ .
++    2. to reproduce said notices, in an identical manner, in the copies
++       of the Software modified or not.
++ .
++ The Licensee undertakes not to directly or indirectly infringe the
++ intellectual property rights of the Holder and/or Contributors on the
++ Software and to take, where applicable, vis-�-vis its staff, any and all
++ measures required to ensure respect of said intellectual property rights
++ of the Holder and/or Contributors.
++ .
++     Article 7 - RELATED SERVICES
++ .
++ 7.1 Under no circumstances shall the Agreement oblige the Licensor to
++ provide technical assistance or maintenance services for the Software.
++ .
++ However, the Licensor is entitled to offer this type of services. The
++ terms and conditions of such technical assistance, and/or such
++ maintenance, shall be set forth in a separate instrument. Only the
++ Licensor offering said maintenance and/or technical assistance services
++ shall incur liability therefor.
++ .
++ 7.2 Similarly, any Licensor is entitled to offer to its licensees, under
++ its sole responsibility, a warranty, that shall only be binding upon
++ itself, for the redistribution of the Software and/or the Modified
++ Software, under terms and conditions that it is free to decide. Said
++ warranty, and the financial terms and conditions of its application,
++ shall be subject of a separate instrument executed between the Licensor
++ and the Licensee.
++ .
++     Article 8 - LIABILITY
++ .
++ 8.1 Subject to the provisions of Article 8.2, the Licensee shall be
++ entitled to claim compensation for any direct loss it may have suffered
++ from the Software as a result of a fault on the part of the relevant
++ Licensor, subject to providing evidence thereof.
++ .
++ 8.2 The Licensor's liability is limited to the commitments made under
++ this Agreement and shall not be incurred as a result of in particular:
++ (i) loss due the Licensee's total or partial failure to fulfill its
++ obligations, (ii) direct or consequential loss that is suffered by the
++ Licensee due to the use or performance of the Software, and (iii) more
++ generally, any consequential loss. In particular the Parties expressly
++ agree that any or all pecuniary or business loss (i.e. loss of data,
++ loss of profits, operating loss, loss of customers or orders,
++ opportunity cost, any disturbance to business activities) or any or all
++ legal proceedings instituted against the Licensee by a third party,
++ shall constitute consequential loss and shall not provide entitlement to
++ any or all compensation from the Licensor.
++ .
++     Article 9 - WARRANTY
++ .
++ 9.1 The Licensee acknowledges that the scientific and technical
++ state-of-the-art when the Software was distributed did not enable all
++ possible uses to be tested and verified, nor for the presence of
++ possible defects to be detected. In this respect, the Licensee's
++ attention has been drawn to the risks associated with loading, using,
++ modifying and/or developing and reproducing the Software which are
++ reserved for experienced users.
++ .
++ The Licensee shall be responsible for verifying, by any or all means,
++ the suitability of the product for its requirements, its good working
++ order, and for ensuring that it shall not cause damage to either persons
++ or properties.
++ .
++ 9.2 The Licensor hereby represents, in good faith, that it is entitled
++ to grant all the rights over the Software (including in particular the
++ rights set forth in Article 5).
++ .
++ 9.3 The Licensee acknowledges that the Software is supplied "as is" by
++ the Licensor without any other express or tacit warranty, other than
++ that provided for in Article 9.2 and, in particular, without any warranty
++ as to its commercial value, its secured, safe, innovative or relevant
++ nature.
++ .
++ Specifically, the Licensor does not warrant that the Software is free
++ from any error, that it will operate without interruption, that it will
++ be compatible with the Licensee's own equipment and software
++ configuration, nor that it will meet the Licensee's requirements.
++ .
++ 9.4 The Licensor does not either expressly or tacitly warrant that the
++ Software does not infringe any third party intellectual property right
++ relating to a patent, software or any other property right. Therefore,
++ the Licensor disclaims any and all liability towards the Licensee
++ arising out of any or all proceedings for infringement that may be
++ instituted in respect of the use, modification and redistribution of the
++ Software. Nevertheless, should such proceedings be instituted against
++ the Licensee, the Licensor shall provide it with technical and legal
++ assistance for its defense. Such technical and legal assistance shall be
++ decided on a case-by-case basis between the relevant Licensor and the
++ Licensee pursuant to a memorandum of understanding. The Licensor
++ disclaims any and all liability as regards the Licensee's use of the
++ name of the Software. No warranty is given as regards the existence of
++ prior rights over the name of the Software or as regards the existence
++ of a trademark.
++ .
++     Article 10 - TERMINATION
++ .
++ 10.1 In the event of a breach by the Licensee of its obligations
++ hereunder, the Licensor may automatically terminate this Agreement
++ thirty (30) days after notice has been sent to the Licensee and has
++ remained ineffective.
++ .
++ 10.2 A Licensee whose Agreement is terminated shall no longer be
++ authorized to use, modify or distribute the Software. However, any
++ licenses that it may have granted prior to termination of the Agreement
++ shall remain valid subject to their having been granted in compliance
++ with the terms and conditions hereof.
++ .
++     Article 11 - MISCELLANEOUS
++ .
++       11.1 EXCUSABLE EVENTS
++ .
++ Neither Party shall be liable for any or all delay, or failure to
++ perform the Agreement, that may be attributable to an event of force
++ majeure, an act of God or an outside cause, such as defective
++ functioning or interruptions of the electricity or telecommunications
++ networks, network paralysis following a virus attack, intervention by
++ government authorities, natural disasters, water damage, earthquakes,
++ fire, explosions, strikes and labor unrest, war, etc.
++ .
++ 11.2 Any failure by either Party, on one or more occasions, to invoke
++ one or more of the provisions hereof, shall under no circumstances be
++ interpreted as being a waiver by the interested Party of its right to
++ invoke said provision(s) subsequently.
++ .
++ 11.3 The Agreement cancels and replaces any or all previous agreements,
++ whether written or oral, between the Parties and having the same
++ purpose, and constitutes the entirety of the agreement between said
++ Parties concerning said purpose. No supplement or modification to the
++ terms and conditions hereof shall be effective as between the Parties
++ unless it is made in writing and signed by their duly authorized
++ representatives.
++ .
++ 11.4 In the event that one or more of the provisions hereof were to
++ conflict with a current or future applicable act or legislative text,
++ said act or legislative text shall prevail, and the Parties shall make
++ the necessary amendments so as to comply with said act or legislative
++ text. All other provisions shall remain effective. Similarly, invalidity
++ of a provision of the Agreement, for any reason whatsoever, shall not
++ cause the Agreement as a whole to be invalid.
++ .
++       11.5 LANGUAGE
++ .
++ The Agreement is drafted in both French and English and both versions
++ are deemed authentic.
++ .
++     Article 12 - NEW VERSIONS OF THE AGREEMENT
++ .
++ 12.1 Any person is authorized to duplicate and distribute copies of this
++ Agreement.
++ .
++ 12.2 So as to ensure coherence, the wording of this Agreement is
++ protected and may only be modified by the authors of the License, who
++ reserve the right to periodically publish updates or new versions of the
++ Agreement, each with a separate number. These subsequent versions may
++ address new issues encountered by Free Software.
++ .
++ 12.3 Any Software distributed under a given version of the Agreement may
++ only be subsequently distributed under the same version of the Agreement
++ or a subsequent version.
++ .
++     Article 13 - GOVERNING LAW AND JURISDICTION
++ .
++ 13.1 The Agreement is governed by French law. The Parties agree to
++ endeavor to seek an amicable solution to any disagreements or disputes
++ that may arise during the performance of the Agreement.
++ .
++ 13.2 Failing an amicable solution within two (2) months as from their
++ occurrence, and unless emergency proceedings are necessary, the
++ disagreements or disputes shall be referred to the Paris Courts having
++ jurisdiction, by the more diligent Party.
++ .
++ Version 1.0 dated 2006-09-05.
++
++License: Expat
++ Permission is hereby granted, free of charge, to any person obtaining
++ a copy of this software and associated documentation files (the
++ "Software"), to deal in the Software without restriction, including
++ without limitation the rights to use, copy, modify, merge, publish,
++ distribute, sublicense, and/or sell copies of the Software, and to
++ permit persons to whom the Software is furnished to do so, subject to
++ the following conditions:
++ .
++ The above copyright notice and this permission notice shall be included
++ in all copies or substantial portions of the Software.
++ .
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++License: FSFAP
++ Copying and distribution of this file, with or without modification,
++ are permitted in any medium without royalty provided the copyright
++ notice and this notice are preserved. This file is offered as-is,
++ without any warranty.
++
++License: GPL-2+
++ This package 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 package 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, see <http://www.gnu.org/licenses/>
++ .
++ On Debian systems, the complete text of the GNU General
++ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
++
++License: GPL-2+ with autoconf exception
++ This package 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 package 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, see <http://www.gnu.org/licenses/>
++ .
++ As a special exception, the respective Autoconf Macro's copyright owner
++ gives unlimited permission to copy, distribute and modify the configure
++ scripts that are the output of Autoconf when processing the Macro. You
++ need not follow the terms of the GNU General Public License when using
++ or distributing such scripts, even though portions of the text of the
++ Macro appear in them. The GNU General Public License (GPL) does govern
++ all other use of the material that constitutes the Autoconf Macro.
++ .
++ This special exception to the GPL applies to versions of the Autoconf
++ Macro released by the Autoconf Archive. When you make and distribute a
++ modified version of the Autoconf Macro, you may extend this special
++ exception to the GPL to apply to your modified version as well.
++ .
++ On Debian systems, the complete text of the GNU General
++ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
++
++License: GPL-3+
++ 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 3 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, see <http://www.gnu.org/licenses/>.
++ .
++ On Debian systems, the complete text of the GNU General
++ Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
++
++License: public-domain
++ This file is in the public domain.
++
++License: Apache-2.0
++ Licensed under the Apache License, Version 2.0 (the "License");
++ you may not use this file except in compliance with the License.
++ You may obtain a copy of the License at
++ .
++     http://www.apache.org/licenses/LICENSE-2.0
++ .
++ Unless required by applicable law or agreed to in writing, software
++ distributed under the License is distributed on an "AS IS" BASIS,
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ See the License for the specific language governing permissions and
++ limitations under the License.
++ .
++ On Debian systems, the complete text of the Apache License Version 2.0
++ can be found in `/usr/share/common-licenses/Apache-2.0'.
++
++License: WTFPL
++ This work is free. You can redistribute it and/or modify it under the
++ terms of the Do What The Fuck You Want To Public License, Version 2,
++ as published by Sam Hocevar.
++ .
++ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
++ Version 2, December 2004
++ .
++ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
++ .
++ Everyone is permitted to copy and distribute verbatim or modified
++ copies of this license document, and changing it is allowed as long
++ as the name is changed.
++ .
++ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
++ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++ .
++ 0. You just DO WHAT THE FUCK YOU WANT TO.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f58e26a696e61441d1b6b060b27e3feb0545b0b1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.m2
++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.md
++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.txt
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6afce0e894529e3493955cfeac2310e370aced86
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++debian/macaulay2-pkg.el
++debian/tmp/usr/share/emacs/site-lisp/elpa/macaulay2-*/*.el
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..401265d75fc8c33607dcef699e0092d59455cc2c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++# don't override dh_auto_test with dh_elpa_test
++disable = true
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..82988dcde7ea809c5a29025b80d5249021928d42
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++-- -*- M2-comint -*- hash: 869580758
++
++i1 : applicationDirectory()
++
++o1 = /home/m2user/.Macaulay2/
++
++i2 : 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7fee690956a92b5eece0056a32eff7084fe18ae0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++-- -*- M2-comint -*- hash: -664800848
++
++i1 : applicationDirectorySuffix
++
++o1 = .Macaulay2/
++
++i2 : applicationDirectory()
++
++o2 = /home/m2user/.Macaulay2/
++
++i3 : applicationDirectorySuffix = "local/Mac2"
++
++o3 = local/Mac2
++
++i4 : applicationDirectory()
++
++o4 = /home/m2user/local/Mac2
++
++i5 : 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..15dfc6430328fc192d1a2f169780c682bfe16459
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++-- -*- M2-comint -*- hash: 121703874
++
++i1 : getenv "HOME"
++
++o1 = /home/m2user
++
++i2 : 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d92344bfd9825fb4ee5e691cea16b7e59aa172e1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++-- -*- M2-comint -*- hash: -60053658
++
++i1 : homeDirectory
++
++o1 = /home/m2user/
++
++i2 : 
diff --cc debian/gbp.conf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e676edb309cc28e5097a470e52b8f430b9572d4a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++[DEFAULT]
++debian-branch = debian/latest
++
++[buildpackage]
++pristine-tar = True
++# need M2-emacs submodule
++preexport = git submodule init M2/Macaulay2/editors/emacs &&
++  git submodule update
++postexport = SOURCE_DIR=`echo $GBP_GIT_DIR | sed 's/\/\.git//'` &&
++  cp -r $SOURCE_DIR/M2/Macaulay2/editors/emacs/* \
++    $GBP_TMP_DIR/M2/Macaulay2/editors/emacs
++# if we're not using export-dir
++prebuild = if test ! -f M2/Macaulay2/editors/emacs/make-M2-emacs-help.m2
++  then git submodule init M2/Macaulay2/editors/emacs &&
++    git submodule update
++  fi
++
++[export-orig]
++pristine-tar = True
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..33fc4bd6ad9b34cef6c6e1f35f59b830a04875a1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,16 @@@
++Document: macaulay2
++Title: Macaulay2 Documentation
++Author: Daniel R. Grayson and Michael E. Stillman
++Abstract: Macaulay2 is a software system devoted to supporting research in
++ algebraic geometry and commutative algebra, developed with funding from the
++ National Science Foundation. We are eager to help new users get started with
++ it.
++Section: Science/Mathematics
++
++Format: HTML
++Index: /usr/share/doc/Macaulay2/Macaulay2Doc/html/index.html
++Files: /usr/share/doc/Macaulay2/*/html/*.html
++
++Format: Info
++Index: /usr/share/info/Macaulay2Doc.info.gz
++Files: /usr/share/info/*.info.gz
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0ac0fbf6a8ef150871ff80ca02aac1c718adfd63
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/share/info/*.info
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8ee1328433db23de6ecb82a5d9578d0b02933685
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++M2/Macaulay2/editors/make-M2-symbols.m2 usr/share/Macaulay2
++usr/share/Macaulay2
++usr/share/doc
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ea0cdb3ed8a6e8388610092bedcf565d5a1fe82d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/share/common-licenses/GPL-2 usr/share/doc/Macaulay2/COPYING-GPL-2
++usr/share/common-licenses/GPL-3 usr/share/doc/Macaulay2/COPYING-GPL-3
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6998a98025e431ae1ee60ff3da5462d2b737eef0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,80 @@@
++#################################
++# Embedded Javascript libraries #
++#################################
++
++# Visualize
++embed-weakdep usr/share/fonts-glyphicons usr/share/Macaulay2/Visualize/fonts
++embed-weakdep usr/share/javascript/bootstrap/css/bootstrap.min.css usr/share/Macaulay2/Visualize/css/bootstrap.min.css
++embed-weakdep usr/share/javascript/bootstrap/js/bootstrap.min.js usr/share/Macaulay2/Visualize/js/bootstrap.min.js
++embed-weakdep usr/share/nodejs/clipboard/dist/clipboard.js usr/share/Macaulay2/Visualize/js/clipboard.min.js
++embed-weakdep usr/share/javascript/d3/d3.min.js usr/share/Macaulay2/Visualize/js/d3.v3.min.js
++embed-weakdep usr/share/javascript/jquery/jquery.min.js usr/share/Macaulay2/Visualize/js/jquery-1.11.3.min.js
++embed-weakdep usr/share/javascript/three/three.min.js usr/share/Macaulay2/Visualize/js/three.min.js
++embed-weakdep usr/share/javascript/underscore/underscore.min.js usr/share/Macaulay2/Visualize/js/underscore.js
++
++# KaTeX
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_AMS-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_AMS-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_AMS-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_AMS-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_AMS-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_AMS-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Caligraphic-Bold.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Caligraphic-Bold.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Caligraphic-Bold.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Caligraphic-Bold.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Caligraphic-Bold.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Caligraphic-Bold.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Caligraphic-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Caligraphic-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Caligraphic-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Caligraphic-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Caligraphic-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Caligraphic-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Fraktur-Bold.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Fraktur-Bold.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Fraktur-Bold.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Fraktur-Bold.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Fraktur-Bold.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Fraktur-Bold.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Fraktur-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Fraktur-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Fraktur-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Fraktur-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Fraktur-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Fraktur-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-BoldItalic.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-BoldItalic.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-BoldItalic.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-BoldItalic.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-BoldItalic.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-BoldItalic.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Bold.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Bold.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Bold.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Bold.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Bold.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Bold.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Italic.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Italic.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Italic.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Italic.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Italic.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Italic.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Main-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Main-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Math-BoldItalic.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Math-BoldItalic.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Math-BoldItalic.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Math-BoldItalic.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Math-BoldItalic.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Math-BoldItalic.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Math-Italic.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Math-Italic.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Math-Italic.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Math-Italic.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Math-Italic.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Math-Italic.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Bold.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Bold.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Bold.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Bold.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Bold.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Bold.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Italic.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Italic.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Italic.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Italic.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Italic.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Italic.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_SansSerif-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_SansSerif-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Script-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Script-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Script-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Script-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Script-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Script-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size1-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size1-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size1-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size1-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size1-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size1-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size2-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size2-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size2-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size2-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size2-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size2-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size3-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size3-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size3-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size3-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size3-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size3-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size4-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size4-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size4-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size4-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Size4-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Size4-Regular.woff2
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Typewriter-Regular.ttf usr/share/Macaulay2/Style/katex/fonts/KaTeX_Typewriter-Regular.ttf
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Typewriter-Regular.woff usr/share/Macaulay2/Style/katex/fonts/KaTeX_Typewriter-Regular.woff
++embed-weakdep usr/share/fonts/truetype/katex/KaTeX_Typewriter-Regular.woff2 usr/share/Macaulay2/Style/katex/fonts/KaTeX_Typewriter-Regular.woff2
++embed-weakdep usr/share/javascript/katex/contrib/auto-render.js usr/share/Macaulay2/Style/katex/contrib/auto-render.min.js
++embed-weakdep usr/share/javascript/katex/contrib/copy-tex.css usr/share/Macaulay2/Style/katex/contrib/copy-tex.min.css
++embed-weakdep usr/share/javascript/katex/contrib/copy-tex.js usr/share/Macaulay2/Style/katex/contrib/copy-tex.min.js
++embed-weakdep usr/share/javascript/katex/katex.css usr/share/Macaulay2/Style/katex/katex.min.css
++embed-weakdep usr/share/javascript/katex/katex.js usr/share/Macaulay2/Style/katex/katex.min.js
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..07db3a6f89b9c05d2408c4ed1aa978cdb1e621b2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,56 @@@
++# these files describe the contents of the corresponding package directories
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Macaulay2Doc/COPYRIGHT
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Macaulay2Doc/README
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Matroids/SmallMatroids.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/MonodromySolver/paper-examples/README.md
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/README
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TST/README.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NAGtypes/TO-DO-doc.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NCAlgebra/installNCAlgebra.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smallSmoothProjectiveToricVarieties.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties5.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties6.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-WSet.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-arb.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-doc.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-SLEvaluatorCompiled.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/EXA/Table2/README
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/FunctionsExported.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/README
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/ToDo
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Polyhedra/tests/fails_from_googlegroup.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Polyhedra/TODO
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReactionNetworks/Readme.md
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks-dim3.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks1-n5.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks11+24-n200.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks2-n36.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks21-n100.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks3-n244.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks300-n20.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks491-n1.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks5+53-n204.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks5-n50.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks9+21-n10.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SCSCP/README-gap.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SLPexpressions/TO-DO.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/elliptic_quartics.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/letter_to_collino.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/toricubics.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/character.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schur.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schurModule.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schurModulesMap.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/splitCharacter.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/straightenSchur.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SimpleDoc/doc.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SimpleDoc/helpers-doc.txt
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/digraph-example.html
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/graph-example.html
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/ideal2d-example.html
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/ideal3d-example.html
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/poset-example.html
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/simplicial-complex-example.html
++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/WeylGroups/tutorial.html
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2e91670dc78ee8140716539474dca4b71640d53d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++(define-package "macaulay2" "@VERSION@" "Emacs Package for Macaulay2" 'nil)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a65408f7ad114e94d1a0ba87ae557e5ccc5896ed
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/bin
++usr/share/man
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..be451e0c1763e82f561ecc826a65f34945039219
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/share/man/man1/M2.1 usr/share/man/man1/M2-binary.1
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e3a69950e95a0967932cfb8aa07eea0aa2eb9f64
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,49 @@@
++#!/bin/sh
++# postinst script for macaulay2
++#
++# see: dh_installdeb(1)
++
++set -e
++
++# summary of how this script can be called:
++#        * <postinst> `configure' <most-recently-configured-version>
++#        * <old-postinst> `abort-upgrade' <new version>
++#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
++#          <new-version>
++#        * <postinst> `abort-remove'
++#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
++#          <failed-install-package> <version> `removing'
++#          <conflicting-package> <version>
++# for details, see https://www.debian.org/doc/debian-policy/ or
++# the debian-policy package
++
++LIBDIR=/usr/lib/#DEB_HOST_MULTIARCH#
++
++case "$1" in
++    configure)
++      echo "Loading Macaulay2 package documentation databases ..."
++      PKGS=$(find /usr/share/doc/Macaulay2 -name rawdocumentation.dump | \
++                 sed -E 's|.*/Macaulay2/(.*)/dump/.*|\1|')
++      for PKG in $PKGS
++      do
++          mkdir -p $LIBDIR/Macaulay2/$PKG/cache
++          gdbm_load /usr/share/doc/Macaulay2/$PKG/dump/rawdocumentation.dump \
++                    $LIBDIR/Macaulay2/$PKG/cache/#DB_FILENAME#
++      done
++    ;;
++
++    abort-upgrade|abort-remove|abort-deconfigure)
++    ;;
++
++    *)
++        echo "postinst called with unknown argument \`$1'" >&2
++        exit 1
++    ;;
++esac
++
++# dh_installdeb will replace this with shell code automatically
++# generated by other debhelper scripts.
++
++#DEBHELPER#
++
++exit 0
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..555dc732cfa108565671e52828ac3ca0b8ac77ae
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,41 @@@
++#!/bin/sh
++# prerm script for macaulay2
++#
++# see: dh_installdeb(1)
++
++set -e
++
++# summary of how this script can be called:
++#        * <prerm> `remove'
++#        * <old-prerm> `upgrade' <new-version>
++#        * <new-prerm> `failed-upgrade' <old-version>
++#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
++#        * <deconfigured's-prerm> `deconfigure' `in-favour'
++#          <package-being-installed> <version> `removing'
++#          <conflicting-package> <version>
++# for details, see https://www.debian.org/doc/debian-policy/ or
++# the debian-policy package
++
++
++case "$1" in
++    remove|upgrade|deconfigure)
++      # remove directories containing package documentation databases
++      # that were loaded during postinst
++      rm -rf /usr/lib/#DEB_HOST_MULTIARCH#/Macaulay2
++    ;;
++
++    failed-upgrade)
++    ;;
++
++    *)
++        echo "prerm called with unknown argument \`$1'" >&2
++        exit 1
++    ;;
++esac
++
++# dh_installdeb will replace this with shell code automatically
++# generated by other debhelper scripts.
++
++#DEBHELPER#
++
++exit 0
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c512f344ad7ae057828ddc84e45fbd3b9c219621
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,165 @@@
++
++/* Functional styling;
++ * These styles are required for noUiSlider to function.
++ * You don't need to change these rules to apply your design.
++ */
++.noUi-target,
++.noUi-target * {
++-webkit-touch-callout: none;
++-webkit-user-select: none;
++-ms-touch-action: none;
++      touch-action: none;
++-ms-user-select: none;
++-moz-user-select: none;
++      user-select: none;
++-moz-box-sizing: border-box;
++      box-sizing: border-box;
++}
++.noUi-target {
++      position: relative;
++      direction: ltr;
++}
++.noUi-base {
++      width: 100%;
++      height: 100%;
++      position: relative;
++      z-index: 1; /* Fix 401 */
++}
++.noUi-origin {
++      position: absolute;
++      right: 0;
++      top: 0;
++      left: 0;
++      bottom: 0;
++}
++.noUi-handle {
++      position: relative;
++      z-index: 1;
++}
++.noUi-stacking .noUi-handle {
++/* This class is applied to the lower origin when
++   its values is > 50%. */
++      z-index: 10;
++}
++.noUi-state-tap .noUi-origin {
++-webkit-transition: left 0.3s, top 0.3s;
++      transition: left 0.3s, top 0.3s;
++}
++.noUi-state-drag * {
++      cursor: inherit !important;
++}
++
++/* Painting and performance;
++ * Browsers can paint handles in their own layer.
++ */
++.noUi-base,
++.noUi-handle {
++      -webkit-transform: translate3d(0,0,0);
++      transform: translate3d(0,0,0);
++}
++
++/* Slider size and handle placement;
++ */
++.noUi-horizontal {
++      height: 18px;
++}
++.noUi-horizontal .noUi-handle {
++      width: 34px;
++      height: 28px;
++      left: -17px;
++      top: -6px;
++}
++.noUi-vertical {
++      width: 18px;
++}
++.noUi-vertical .noUi-handle {
++      width: 28px;
++      height: 34px;
++      left: -6px;
++      top: -17px;
++}
++
++/* Styling;
++ */
++.noUi-background {
++      background: #FAFAFA;
++      box-shadow: inset 0 1px 1px #f0f0f0;
++}
++.noUi-connect {
++      background: #3FB8AF;
++      box-shadow: inset 0 0 3px rgba(51,51,51,0.45);
++-webkit-transition: background 450ms;
++      transition: background 450ms;
++}
++.noUi-origin {
++      border-radius: 2px;
++}
++.noUi-target {
++      border-radius: 4px;
++      border: 1px solid #D3D3D3;
++      box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB;
++}
++.noUi-target.noUi-connect {
++      box-shadow: inset 0 0 3px rgba(51,51,51,0.45), 0 3px 6px -5px #BBB;
++}
++
++/* Handles and cursors;
++ */
++.noUi-draggable {
++      cursor: w-resize;
++}
++.noUi-vertical .noUi-draggable {
++      cursor: n-resize;
++}
++.noUi-handle {
++      border: 1px solid #D9D9D9;
++      border-radius: 3px;
++      background: #FFF;
++      cursor: default;
++      box-shadow: inset 0 0 1px #FFF,
++                              inset 0 1px 7px #EBEBEB,
++                              0 3px 6px -3px #BBB;
++}
++.noUi-active {
++      box-shadow: inset 0 0 1px #FFF,
++                              inset 0 1px 7px #DDD,
++                              0 3px 6px -3px #BBB;
++}
++
++/* Handle stripes;
++ */
++.noUi-handle:before,
++.noUi-handle:after {
++      content: "";
++      display: block;
++      position: absolute;
++      height: 14px;
++      width: 1px;
++      background: #E8E7E6;
++      left: 14px;
++      top: 6px;
++}
++.noUi-handle:after {
++      left: 17px;
++}
++.noUi-vertical .noUi-handle:before,
++.noUi-vertical .noUi-handle:after {
++      width: 14px;
++      height: 1px;
++      left: 6px;
++      top: 14px;
++}
++.noUi-vertical .noUi-handle:after {
++      top: 17px;
++}
++
++/* Disabled state;
++ */
++[disabled].noUi-connect,
++[disabled] .noUi-connect {
++      background: #B8B8B8;
++}
++[disabled].noUi-origin,
++[disabled] .noUi-handle {
++      cursor: not-allowed;
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a3376971ae1ed551d933d04865ed72852edd2898
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++
++/* Base;
++ *
++ */
++.noUi-pips,
++.noUi-pips * {
++-moz-box-sizing: border-box;
++      box-sizing: border-box;
++}
++.noUi-pips {
++      position: absolute;
++      color: #999;
++}
++
++/* Values;
++ *
++ */
++.noUi-value {
++      position: absolute;
++      text-align: center;
++}
++.noUi-value-sub {
++      color: #ccc;
++      font-size: 10px;
++}
++
++/* Markings;
++ *
++ */
++.noUi-marker {
++      position: absolute;
++      background: #CCC;
++}
++.noUi-marker-sub {
++      background: #AAA;
++}
++.noUi-marker-large {
++      background: #AAA;
++}
++
++/* Horizontal layout;
++ *
++ */
++.noUi-pips-horizontal {
++      padding: 10px 0;
++      height: 80px;
++      top: 100%;
++      left: 0;
++      width: 100%;
++}
++.noUi-value-horizontal {
++      -webkit-transform: translate3d(-50%,50%,0);
++      transform: translate3d(-50%,50%,0);
++}
++
++.noUi-marker-horizontal.noUi-marker {
++      margin-left: -1px;
++      width: 2px;
++      height: 5px;
++}
++.noUi-marker-horizontal.noUi-marker-sub {
++      height: 10px;
++}
++.noUi-marker-horizontal.noUi-marker-large {
++      height: 15px;
++}
++
++/* Vertical layout;
++ *
++ */
++.noUi-pips-vertical {
++      padding: 0 10px;
++      height: 100%;
++      top: 0;
++      left: 100%;
++}
++.noUi-value-vertical {
++      -webkit-transform: translate3d(0,-50%,0);
++      transform: translate3d(0,-50%,0);
++      padding-left: 25px;
++}
++
++.noUi-marker-vertical.noUi-marker {
++      width: 5px;
++      height: 2px;
++      margin-top: -1px;
++}
++.noUi-marker-vertical.noUi-marker-sub {
++      width: 10px;
++}
++.noUi-marker-vertical.noUi-marker-large {
++      width: 15px;
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..19bdf4f70c91e750acd6017b1aef5e9cd134c292
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++.noUi-tooltip {
++      display: block;
++      position: absolute;
++      border: 1px solid #D9D9D9;
++      border-radius: 3px;
++      background: #fff;
++      padding: 5px;
++      text-align: center;
++}
++
++.noUi-horizontal .noUi-handle-lower .noUi-tooltip {
++      top: -32px;
++}
++.noUi-horizontal .noUi-handle-upper .noUi-tooltip {
++      bottom: -32px;
++}
++.noUi-vertical .noUi-handle-lower .noUi-tooltip {
++      left: 120%;
++}
++.noUi-vertical .noUi-handle-upper .noUi-tooltip {
++      right: 120%;
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ccdc2558295e7f7960176a4599dfdcb536b08bae
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++      // we provide a function to compute constants instead
++      // of accessing window.* as soon as the module needs it
++      // so that we do not compute anything if not needed
++      function getActions ( ) {
++
++              // Determine the events to bind. IE11 implements pointerEvents without
++              // a prefix, which breaks compatibility with the IE10 implementation.
++              return window.navigator.pointerEnabled ? {
++                      start: 'pointerdown',
++                      move: 'pointermove',
++                      end: 'pointerup'
++              } : window.navigator.msPointerEnabled ? {
++                      start: 'MSPointerDown',
++                      move: 'MSPointerMove',
++                      end: 'MSPointerUp'
++              } : {
++                      start: 'mousedown touchstart',
++                      move: 'mousemove touchmove',
++                      end: 'mouseup touchend'
++              };
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..68005d4d55ac71b57b15c74bc762cdc750e090ed
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,99 @@@
++
++      // Removes duplicates from an array.
++      function unique(array) {
++              return array.filter(function(a){
++                      return !this[a] ? this[a] = true : false;
++              }, {});
++      }
++
++      // Round a value to the closest 'to'.
++      function closest ( value, to ) {
++              return Math.round(value / to) * to;
++      }
++
++      // Current position of an element relative to the document.
++      function offset ( elem ) {
++
++      var rect = elem.getBoundingClientRect(),
++              doc = elem.ownerDocument,
++              docElem = doc.documentElement,
++              pageOffset = getPageOffset();
++
++              // getBoundingClientRect contains left scroll in Chrome on Android.
++              // I haven't found a feature detection that proves this. Worst case
++              // scenario on mis-match: the 'tap' feature on horizontal sliders breaks.
++              if ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) {
++                      pageOffset.x = 0;
++              }
++
++              return {
++                      top: rect.top + pageOffset.y - docElem.clientTop,
++                      left: rect.left + pageOffset.x - docElem.clientLeft
++              };
++      }
++
++      // Checks whether a value is numerical.
++      function isNumeric ( a ) {
++              return typeof a === 'number' && !isNaN( a ) && isFinite( a );
++      }
++
++      // Sets a class and removes it after [duration] ms.
++      function addClassFor ( element, className, duration ) {
++              addClass(element, className);
++              setTimeout(function(){
++                      removeClass(element, className);
++              }, duration);
++      }
++
++      // Limits a value to 0 - 100
++      function limit ( a ) {
++              return Math.max(Math.min(a, 100), 0);
++      }
++
++      // Wraps a variable as an array, if it isn't one yet.
++      function asArray ( a ) {
++              return Array.isArray(a) ? a : [a];
++      }
++
++      // Counts decimals
++      function countDecimals ( numStr ) {
++              var pieces = numStr.split(".");
++              return pieces.length > 1 ? pieces[1].length : 0;
++      }
++
++      // http://youmightnotneedjquery.com/#add_class
++      function addClass ( el, className ) {
++              if ( el.classList ) {
++                      el.classList.add(className);
++              } else {
++                      el.className += ' ' + className;
++              }
++      }
++
++      // http://youmightnotneedjquery.com/#remove_class
++      function removeClass ( el, className ) {
++              if ( el.classList ) {
++                      el.classList.remove(className);
++              } else {
++                      el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
++              }
++      }
++
++      // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/
++      function hasClass ( el, className ) {
++              return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className);
++      }
++
++      // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes
++      function getPageOffset ( ) {
++
++              var supportPageOffset = window.pageXOffset !== undefined,
++                      isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"),
++                      x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft,
++                      y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;
++
++              return {
++                      x: x,
++                      y: y
++              };
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..188125a3e5e2ddde96f027a2f64ed6ee45064eed
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++
++      // Run the standard initializer
++      function initialize ( target, originalOptions ) {
++
++              if ( !target.nodeName ) {
++                      throw new Error('noUiSlider.create requires a single element.');
++              }
++
++              // Test the options and create the slider environment;
++              var options = testOptions( originalOptions, target ),
++                      slider = closure( target, options, originalOptions );
++
++              // Use the public value method to set the start values.
++              slider.set(options.start);
++
++              target.noUiSlider = slider;
++              return slider;
++      }
++
++      // Use an object instead of a function for future expansibility;
++      return {
++              create: initialize
++      };
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..be3175e574e925bf9e2d14f919c8a4c54a2e2ba9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++(function (factory) {
++
++    if ( typeof define === 'function' && define.amd ) {
++
++        // AMD. Register as an anonymous module.
++        define([], factory);
++
++    } else if ( typeof exports === 'object' ) {
++
++        // Node/CommonJS
++        module.exports = factory();
++
++    } else {
++
++        // Browser globals
++        window.noUiSlider = factory();
++    }
++
++}(function( ){
++
++      'use strict';
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..af927bba8c1c1f492fc54d08c211fb8e07bc1ef8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,378 @@@
++/*    Every input option is tested and parsed. This'll prevent
++      endless validation in internal methods. These tests are
++      structured with an item for every option available. An
++      option can be marked as required by setting the 'r' flag.
++      The testing function is provided with three arguments:
++              - The provided value for the option;
++              - A reference to the options object;
++              - The name for the option;
++
++      The testing function returns false when an error is detected,
++      or true when everything is OK. It can also modify the option
++      object, to make sure all values can be correctly looped elsewhere. */
++
++      var defaultFormatter = { 'to': function( value ){
++              return value !== undefined && value.toFixed(2);
++      }, 'from': Number };
++
++      function testStep ( parsed, entry ) {
++
++              if ( !isNumeric( entry ) ) {
++                      throw new Error("noUiSlider: 'step' is not numeric.");
++              }
++
++              // The step option can still be used to set stepping
++              // for linear sliders. Overwritten if set in 'range'.
++              parsed.singleStep = entry;
++      }
++
++      function testRange ( parsed, entry ) {
++
++              // Filter incorrect input.
++              if ( typeof entry !== 'object' || Array.isArray(entry) ) {
++                      throw new Error("noUiSlider: 'range' is not an object.");
++              }
++
++              // Catch missing start or end.
++              if ( entry.min === undefined || entry.max === undefined ) {
++                      throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'.");
++              }
++
++              // Catch equal start or end.
++              if ( entry.min === entry.max ) {
++                      throw new Error("noUiSlider: 'range' 'min' and 'max' cannot be equal.");
++              }
++
++              parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep);
++      }
++
++      function testStart ( parsed, entry ) {
++
++              entry = asArray(entry);
++
++              // Validate input. Values aren't tested, as the public .val method
++              // will always provide a valid location.
++              if ( !Array.isArray( entry ) || !entry.length || entry.length > 2 ) {
++                      throw new Error("noUiSlider: 'start' option is incorrect.");
++              }
++
++              // Store the number of handles.
++              parsed.handles = entry.length;
++
++              // When the slider is initialized, the .val method will
++              // be called with the start options.
++              parsed.start = entry;
++      }
++
++      function testSnap ( parsed, entry ) {
++
++              // Enforce 100% stepping within subranges.
++              parsed.snap = entry;
++
++              if ( typeof entry !== 'boolean' ){
++                      throw new Error("noUiSlider: 'snap' option must be a boolean.");
++              }
++      }
++
++      function testAnimate ( parsed, entry ) {
++
++              // Enforce 100% stepping within subranges.
++              parsed.animate = entry;
++
++              if ( typeof entry !== 'boolean' ){
++                      throw new Error("noUiSlider: 'animate' option must be a boolean.");
++              }
++      }
++
++      function testAnimationDuration ( parsed, entry ) {
++
++              parsed.animationDuration = entry;
++
++              if ( typeof entry !== 'number' ){
++                      throw new Error("noUiSlider: 'animationDuration' option must be a number.");
++              }
++      }
++
++      function testConnect ( parsed, entry ) {
++
++              if ( entry === 'lower' && parsed.handles === 1 ) {
++                      parsed.connect = 1;
++              } else if ( entry === 'upper' && parsed.handles === 1 ) {
++                      parsed.connect = 2;
++              } else if ( entry === true && parsed.handles === 2 ) {
++                      parsed.connect = 3;
++              } else if ( entry === false ) {
++                      parsed.connect = 0;
++              } else {
++                      throw new Error("noUiSlider: 'connect' option doesn't match handle count.");
++              }
++      }
++
++      function testOrientation ( parsed, entry ) {
++
++              // Set orientation to an a numerical value for easy
++              // array selection.
++              switch ( entry ){
++                case 'horizontal':
++                      parsed.ort = 0;
++                      break;
++                case 'vertical':
++                      parsed.ort = 1;
++                      break;
++                default:
++                      throw new Error("noUiSlider: 'orientation' option is invalid.");
++              }
++      }
++
++      function testMargin ( parsed, entry ) {
++
++              if ( !isNumeric(entry) ){
++                      throw new Error("noUiSlider: 'margin' option must be numeric.");
++              }
++
++              // Issue #582
++              if ( entry === 0 ) {
++                      return;
++              }
++
++              parsed.margin = parsed.spectrum.getMargin(entry);
++
++              if ( !parsed.margin ) {
++                      throw new Error("noUiSlider: 'margin' option is only supported on linear sliders.");
++              }
++      }
++
++      function testLimit ( parsed, entry ) {
++
++              if ( !isNumeric(entry) ){
++                      throw new Error("noUiSlider: 'limit' option must be numeric.");
++              }
++
++              parsed.limit = parsed.spectrum.getMargin(entry);
++
++              if ( !parsed.limit ) {
++                      throw new Error("noUiSlider: 'limit' option is only supported on linear sliders.");
++              }
++      }
++
++      function testDirection ( parsed, entry ) {
++
++              // Set direction as a numerical value for easy parsing.
++              // Invert connection for RTL sliders, so that the proper
++              // handles get the connect/background classes.
++              switch ( entry ) {
++                case 'ltr':
++                      parsed.dir = 0;
++                      break;
++                case 'rtl':
++                      parsed.dir = 1;
++                      parsed.connect = [0,2,1,3][parsed.connect];
++                      break;
++                default:
++                      throw new Error("noUiSlider: 'direction' option was not recognized.");
++              }
++      }
++
++      function testBehaviour ( parsed, entry ) {
++
++              // Make sure the input is a string.
++              if ( typeof entry !== 'string' ) {
++                      throw new Error("noUiSlider: 'behaviour' must be a string containing options.");
++              }
++
++              // Check if the string contains any keywords.
++              // None are required.
++              var tap = entry.indexOf('tap') >= 0,
++                      drag = entry.indexOf('drag') >= 0,
++                      fixed = entry.indexOf('fixed') >= 0,
++                      snap = entry.indexOf('snap') >= 0,
++                      hover = entry.indexOf('hover') >= 0;
++
++              // Fix #472
++              if ( drag && !parsed.connect ) {
++                      throw new Error("noUiSlider: 'drag' behaviour must be used with 'connect': true.");
++              }
++
++              parsed.events = {
++                      tap: tap || snap,
++                      drag: drag,
++                      fixed: fixed,
++                      snap: snap,
++                      hover: hover
++              };
++      }
++
++      function testTooltips ( parsed, entry ) {
++
++              var i;
++
++              if ( entry === false ) {
++                      return;
++              } else if ( entry === true ) {
++
++                      parsed.tooltips = [];
++
++                      for ( i = 0; i < parsed.handles; i++ ) {
++                              parsed.tooltips.push(true);
++                      }
++
++              } else {
++
++                      parsed.tooltips = asArray(entry);
++
++                      if ( parsed.tooltips.length !== parsed.handles ) {
++                              throw new Error("noUiSlider: must pass a formatter for all handles.");
++                      }
++
++                      parsed.tooltips.forEach(function(formatter){
++                              if ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) {
++                                      throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'.");
++                              }
++                      });
++              }
++      }
++
++      function testFormat ( parsed, entry ) {
++
++              parsed.format = entry;
++
++              // Any object with a to and from method is supported.
++              if ( typeof entry.to === 'function' && typeof entry.from === 'function' ) {
++                      return true;
++              }
++
++              throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods.");
++      }
++
++      function testCssPrefix ( parsed, entry ) {
++
++              if ( entry !== undefined && typeof entry !== 'string' && entry !== false ) {
++                      throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`.");
++              }
++
++              parsed.cssPrefix = entry;
++      }
++
++      function testCssClasses ( parsed, entry ) {
++
++              if ( entry !== undefined && typeof entry !== 'object' ) {
++                      throw new Error("noUiSlider: 'cssClasses' must be an object.");
++              }
++
++              if ( typeof parsed.cssPrefix === 'string' ) {
++                      parsed.cssClasses = {};
++
++                      for ( var key in entry ) {
++                              if ( !entry.hasOwnProperty(key) ) { continue; }
++
++                              parsed.cssClasses[key] = parsed.cssPrefix + entry[key];
++                      }
++              } else {
++                      parsed.cssClasses = entry;
++              }
++      }
++
++      // Test all developer settings and parse to assumption-safe values.
++      function testOptions ( options ) {
++
++              // To prove a fix for #537, freeze options here.
++              // If the object is modified, an error will be thrown.
++              // Object.freeze(options);
++
++              var parsed = {
++                      margin: 0,
++                      limit: 0,
++                      animate: true,
++                      animationDuration: 300,
++                      format: defaultFormatter
++              }, tests;
++
++              // Tests are executed in the order they are presented here.
++              tests = {
++                      'step': { r: false, t: testStep },
++                      'start': { r: true, t: testStart },
++                      'connect': { r: true, t: testConnect },
++                      'direction': { r: true, t: testDirection },
++                      'snap': { r: false, t: testSnap },
++                      'animate': { r: false, t: testAnimate },
++                      'animationDuration': { r: false, t: testAnimationDuration },
++                      'range': { r: true, t: testRange },
++                      'orientation': { r: false, t: testOrientation },
++                      'margin': { r: false, t: testMargin },
++                      'limit': { r: false, t: testLimit },
++                      'behaviour': { r: true, t: testBehaviour },
++                      'format': { r: false, t: testFormat },
++                      'tooltips': { r: false, t: testTooltips },
++                      'cssPrefix': { r: false, t: testCssPrefix },
++                      'cssClasses': { r: false, t: testCssClasses }
++              };
++
++              var defaults = {
++                      'connect': false,
++                      'direction': 'ltr',
++                      'behaviour': 'tap',
++                      'orientation': 'horizontal',
++                      'cssPrefix' : 'noUi-',
++                      'cssClasses': {
++                              target: 'target',
++                              base: 'base',
++                              origin: 'origin',
++                              handle: 'handle',
++                              handleLower: 'handle-lower',
++                              handleUpper: 'handle-upper',
++                              horizontal: 'horizontal',
++                              vertical: 'vertical',
++                              background: 'background',
++                              connect: 'connect',
++                              ltr: 'ltr',
++                              rtl: 'rtl',
++                              draggable: 'draggable',
++                              drag: 'state-drag',
++                              tap: 'state-tap',
++                              active: 'active',
++                              stacking: 'stacking',
++                              tooltip: 'tooltip',
++                              pips: 'pips',
++                              pipsHorizontal: 'pips-horizontal',
++                              pipsVertical: 'pips-vertical',
++                              marker: 'marker',
++                              markerHorizontal: 'marker-horizontal',
++                              markerVertical: 'marker-vertical',
++                              markerNormal: 'marker-normal',
++                              markerLarge: 'marker-large',
++                              markerSub: 'marker-sub',
++                              value: 'value',
++                              valueHorizontal: 'value-horizontal',
++                              valueVertical: 'value-vertical',
++                              valueNormal: 'value-normal',
++                              valueLarge: 'value-large',
++                              valueSub: 'value-sub'
++                      }
++              };
++
++              // Run all options through a testing mechanism to ensure correct
++              // input. It should be noted that options might get modified to
++              // be handled properly. E.g. wrapping integers in arrays.
++              Object.keys(tests).forEach(function( name ){
++
++                      // If the option isn't set, but it is required, throw an error.
++                      if ( options[name] === undefined && defaults[name] === undefined ) {
++
++                              if ( tests[name].r ) {
++                                      throw new Error("noUiSlider: '" + name + "' is required.");
++                              }
++
++                              return true;
++                      }
++
++                      tests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] );
++              });
++
++              // Forward pips options
++              parsed.pips = options.pips;
++
++              // Pre-define the styles.
++              parsed.style = parsed.ort ? 'top' : 'left';
++
++              return parsed;
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..57d3e4820a18414f533bdf477cf27fc7ed142854
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++}));
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9d56ffda55c778cfb2e0e184c2fb4853ac679994
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,247 @@@
++
++      function getGroup ( mode, values, stepped ) {
++
++              // Use the range.
++              if ( mode === 'range' || mode === 'steps' ) {
++                      return scope_Spectrum.xVal;
++              }
++
++              if ( mode === 'count' ) {
++
++                      // Divide 0 - 100 in 'count' parts.
++                      var spread = ( 100 / (values-1) ), v, i = 0;
++                      values = [];
++
++                      // List these parts and have them handled as 'positions'.
++                      while ((v=i++*spread) <= 100 ) {
++                              values.push(v);
++                      }
++
++                      mode = 'positions';
++              }
++
++              if ( mode === 'positions' ) {
++
++                      // Map all percentages to on-range values.
++                      return values.map(function( value ){
++                              return scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value );
++                      });
++              }
++
++              if ( mode === 'values' ) {
++
++                      // If the value must be stepped, it needs to be converted to a percentage first.
++                      if ( stepped ) {
++
++                              return values.map(function( value ){
++
++                                      // Convert to percentage, apply step, return to value.
++                                      return scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) );
++                              });
++
++                      }
++
++                      // Otherwise, we can simply use the values.
++                      return values;
++              }
++      }
++
++      function generateSpread ( density, mode, group ) {
++
++              function safeIncrement(value, increment) {
++                      // Avoid floating point variance by dropping the smallest decimal places.
++                      return (value + increment).toFixed(7) / 1;
++              }
++
++              var originalSpectrumDirection = scope_Spectrum.direction,
++                      indexes = {},
++                      firstInRange = scope_Spectrum.xVal[0],
++                      lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1],
++                      ignoreFirst = false,
++                      ignoreLast = false,
++                      prevPct = 0;
++
++              // This function loops the spectrum in an ltr linear fashion,
++              // while the toStepping method is direction aware. Trick it into
++              // believing it is ltr.
++              scope_Spectrum.direction = 0;
++
++              // Create a copy of the group, sort it and filter away all duplicates.
++              group = unique(group.slice().sort(function(a, b){ return a - b; }));
++
++              // Make sure the range starts with the first element.
++              if ( group[0] !== firstInRange ) {
++                      group.unshift(firstInRange);
++                      ignoreFirst = true;
++              }
++
++              // Likewise for the last one.
++              if ( group[group.length - 1] !== lastInRange ) {
++                      group.push(lastInRange);
++                      ignoreLast = true;
++              }
++
++              group.forEach(function ( current, index ) {
++
++                      // Get the current step and the lower + upper positions.
++                      var step, i, q,
++                              low = current,
++                              high = group[index+1],
++                              newPct, pctDifference, pctPos, type,
++                              steps, realSteps, stepsize;
++
++                      // When using 'steps' mode, use the provided steps.
++                      // Otherwise, we'll step on to the next subrange.
++                      if ( mode === 'steps' ) {
++                              step = scope_Spectrum.xNumSteps[ index ];
++                      }
++
++                      // Default to a 'full' step.
++                      if ( !step ) {
++                              step = high-low;
++                      }
++
++                      // Low can be 0, so test for false. If high is undefined,
++                      // we are at the last subrange. Index 0 is already handled.
++                      if ( low === false || high === undefined ) {
++                              return;
++                      }
++
++                      // Find all steps in the subrange.
++                      for ( i = low; i <= high; i = safeIncrement(i, step) ) {
++
++                              // Get the percentage value for the current step,
++                              // calculate the size for the subrange.
++                              newPct = scope_Spectrum.toStepping( i );
++                              pctDifference = newPct - prevPct;
++
++                              steps = pctDifference / density;
++                              realSteps = Math.round(steps);
++
++                              // This ratio represents the ammount of percentage-space a point indicates.
++                              // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided.
++                              // Round the percentage offset to an even number, then divide by two
++                              // to spread the offset on both sides of the range.
++                              stepsize = pctDifference/realSteps;
++
++                              // Divide all points evenly, adding the correct number to this subrange.
++                              // Run up to <= so that 100% gets a point, event if ignoreLast is set.
++                              for ( q = 1; q <= realSteps; q += 1 ) {
++
++                                      // The ratio between the rounded value and the actual size might be ~1% off.
++                                      // Correct the percentage offset by the number of points
++                                      // per subrange. density = 1 will result in 100 points on the
++                                      // full range, 2 for 50, 4 for 25, etc.
++                                      pctPos = prevPct + ( q * stepsize );
++                                      indexes[pctPos.toFixed(5)] = ['x', 0];
++                              }
++
++                              // Determine the point type.
++                              type = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 );
++
++                              // Enforce the 'ignoreFirst' option by overwriting the type for 0.
++                              if ( !index && ignoreFirst ) {
++                                      type = 0;
++                              }
++
++                              if ( !(i === high && ignoreLast)) {
++                                      // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.
++                                      indexes[newPct.toFixed(5)] = [i, type];
++                              }
++
++                              // Update the percentage count.
++                              prevPct = newPct;
++                      }
++              });
++
++              // Reset the spectrum.
++              scope_Spectrum.direction = originalSpectrumDirection;
++
++              return indexes;
++      }
++
++      function addMarking ( spread, filterFunc, formatter ) {
++
++              var element = document.createElement('div'),
++                      out = '',
++                      valueSizeClasses = [
++                              options.cssClasses.valueNormal,
++                              options.cssClasses.valueLarge,
++                              options.cssClasses.valueSub
++                      ],
++                      markerSizeClasses = [
++                              options.cssClasses.markerNormal,
++                              options.cssClasses.markerLarge,
++                              options.cssClasses.markerSub
++                      ],
++                      valueOrientationClasses = [
++                              options.cssClasses.valueHorizontal,
++                              options.cssClasses.valueVertical
++                      ],
++                      markerOrientationClasses = [
++                              options.cssClasses.markerHorizontal,
++                              options.cssClasses.markerVertical
++                      ];
++
++              addClass(element, options.cssClasses.pips);
++              addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical);
++
++              function getClasses( type, source ){
++                      var a = source === options.cssClasses.value,
++                              orientationClasses = a ? valueOrientationClasses : markerOrientationClasses,
++                              sizeClasses = a ? valueSizeClasses : markerSizeClasses;
++
++                      return source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type];
++              }
++
++              function getTags( offset, source, values ) {
++                      return 'class="' + getClasses(values[1], source) + '" style="' + options.style + ': ' + offset + '%"';
++              }
++
++              function addSpread ( offset, values ){
++
++                      if ( scope_Spectrum.direction ) {
++                              offset = 100 - offset;
++                      }
++
++                      // Apply the filter function, if it is set.
++                      values[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1];
++
++                      // Add a marker for every point
++                      out += '<div ' + getTags(offset, options.cssClasses.marker, values) + '></div>';
++
++                      // Values are only appended for points marked '1' or '2'.
++                      if ( values[1] ) {
++                              out += '<div ' + getTags(offset, options.cssClasses.value, values) + '>' + formatter.to(values[0]) + '</div>';
++                      }
++              }
++
++              // Append all points.
++              Object.keys(spread).forEach(function(a){
++                      addSpread(a, spread[a]);
++              });
++
++              element.innerHTML = out;
++
++              return element;
++      }
++
++      function pips ( grid ) {
++
++      var mode = grid.mode,
++              density = grid.density || 1,
++              filter = grid.filter || false,
++              values = grid.values || false,
++              stepped = grid.stepped || false,
++              group = getGroup( mode, values, stepped ),
++              spread = generateSpread( density, mode, group ),
++              format = grid.format || {
++                      to: Math.round
++              };
++
++              return scope_Target.appendChild(addMarking(
++                      spread,
++                      filter,
++                      format
++              ));
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..475433c9cb4500bac12825f4a241431eec1d03ad
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,272 @@@
++
++// Value calculation
++
++      // Determine the size of a sub-range in relation to a full range.
++      function subRangeRatio ( pa, pb ) {
++              return (100 / (pb - pa));
++      }
++
++      // (percentage) How many percent is this value of this range?
++      function fromPercentage ( range, value ) {
++              return (value * 100) / ( range[1] - range[0] );
++      }
++
++      // (percentage) Where is this value on this range?
++      function toPercentage ( range, value ) {
++              return fromPercentage( range, range[0] < 0 ?
++                      value + Math.abs(range[0]) :
++                              value - range[0] );
++      }
++
++      // (value) How much is this percentage on this range?
++      function isPercentage ( range, value ) {
++              return ((value * ( range[1] - range[0] )) / 100) + range[0];
++      }
++
++
++// Range conversion
++
++      function getJ ( value, arr ) {
++
++              var j = 1;
++
++              while ( value >= arr[j] ){
++                      j += 1;
++              }
++
++              return j;
++      }
++
++      // (percentage) Input a value, find where, on a scale of 0-100, it applies.
++      function toStepping ( xVal, xPct, value ) {
++
++              if ( value >= xVal.slice(-1)[0] ){
++                      return 100;
++              }
++
++              var j = getJ( value, xVal ), va, vb, pa, pb;
++
++              va = xVal[j-1];
++              vb = xVal[j];
++              pa = xPct[j-1];
++              pb = xPct[j];
++
++              return pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb));
++      }
++
++      // (value) Input a percentage, find where it is on the specified range.
++      function fromStepping ( xVal, xPct, value ) {
++
++              // There is no range group that fits 100
++              if ( value >= 100 ){
++                      return xVal.slice(-1)[0];
++              }
++
++              var j = getJ( value, xPct ), va, vb, pa, pb;
++
++              va = xVal[j-1];
++              vb = xVal[j];
++              pa = xPct[j-1];
++              pb = xPct[j];
++
++              return isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb));
++      }
++
++      // (percentage) Get the step that applies at a certain value.
++      function getStep ( xPct, xSteps, snap, value ) {
++
++              if ( value === 100 ) {
++                      return value;
++              }
++
++              var j = getJ( value, xPct ), a, b;
++
++              // If 'snap' is set, steps are used as fixed points on the slider.
++              if ( snap ) {
++
++                      a = xPct[j-1];
++                      b = xPct[j];
++
++                      // Find the closest position, a or b.
++                      if ((value - a) > ((b-a)/2)){
++                              return b;
++                      }
++
++                      return a;
++              }
++
++              if ( !xSteps[j-1] ){
++                      return value;
++              }
++
++              return xPct[j-1] + closest(
++                      value - xPct[j-1],
++                      xSteps[j-1]
++              );
++      }
++
++
++// Entry parsing
++
++      function handleEntryPoint ( index, value, that ) {
++
++              var percentage;
++
++              // Wrap numerical input in an array.
++              if ( typeof value === "number" ) {
++                      value = [value];
++              }
++
++              // Reject any invalid input, by testing whether value is an array.
++              if ( Object.prototype.toString.call( value ) !== '[object Array]' ){
++                      throw new Error("noUiSlider: 'range' contains invalid value.");
++              }
++
++              // Covert min/max syntax to 0 and 100.
++              if ( index === 'min' ) {
++                      percentage = 0;
++              } else if ( index === 'max' ) {
++                      percentage = 100;
++              } else {
++                      percentage = parseFloat( index );
++              }
++
++              // Check for correct input.
++              if ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) {
++                      throw new Error("noUiSlider: 'range' value isn't numeric.");
++              }
++
++              // Store values.
++              that.xPct.push( percentage );
++              that.xVal.push( value[0] );
++
++              // NaN will evaluate to false too, but to keep
++              // logging clear, set step explicitly. Make sure
++              // not to override the 'step' setting with false.
++              if ( !percentage ) {
++                      if ( !isNaN( value[1] ) ) {
++                              that.xSteps[0] = value[1];
++                      }
++              } else {
++                      that.xSteps.push( isNaN(value[1]) ? false : value[1] );
++              }
++      }
++
++      function handleStepPoint ( i, n, that ) {
++
++              // Ignore 'false' stepping.
++              if ( !n ) {
++                      return true;
++              }
++
++              // Factor to range ratio
++              that.xSteps[i] = fromPercentage([
++                       that.xVal[i]
++                      ,that.xVal[i+1]
++              ], n) / subRangeRatio (
++                      that.xPct[i],
++                      that.xPct[i+1] );
++      }
++
++
++// Interface
++
++      // The interface to Spectrum handles all direction-based
++      // conversions, so the above values are unaware.
++
++      function Spectrum ( entry, snap, direction, singleStep ) {
++
++              this.xPct = [];
++              this.xVal = [];
++              this.xSteps = [ singleStep || false ];
++              this.xNumSteps = [ false ];
++
++              this.snap = snap;
++              this.direction = direction;
++
++              var index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ];
++
++              // Map the object keys to an array.
++              for ( index in entry ) {
++                      if ( entry.hasOwnProperty(index) ) {
++                              ordered.push([entry[index], index]);
++                      }
++              }
++
++              // Sort all entries by value (numeric sort).
++              if ( ordered.length && typeof ordered[0][0] === "object" ) {
++                      ordered.sort(function(a, b) { return a[0][0] - b[0][0]; });
++              } else {
++                      ordered.sort(function(a, b) { return a[0] - b[0]; });
++              }
++
++
++              // Convert all entries to subranges.
++              for ( index = 0; index < ordered.length; index++ ) {
++                      handleEntryPoint(ordered[index][1], ordered[index][0], this);
++              }
++
++              // Store the actual step values.
++              // xSteps is sorted in the same order as xPct and xVal.
++              this.xNumSteps = this.xSteps.slice(0);
++
++              // Convert all numeric steps to the percentage of the subrange they represent.
++              for ( index = 0; index < this.xNumSteps.length; index++ ) {
++                      handleStepPoint(index, this.xNumSteps[index], this);
++              }
++      }
++
++      Spectrum.prototype.getMargin = function ( value ) {
++              return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false;
++      };
++
++      Spectrum.prototype.toStepping = function ( value ) {
++
++              value = toStepping( this.xVal, this.xPct, value );
++
++              // Invert the value if this is a right-to-left slider.
++              if ( this.direction ) {
++                      value = 100 - value;
++              }
++
++              return value;
++      };
++
++      Spectrum.prototype.fromStepping = function ( value ) {
++
++              // Invert the value if this is a right-to-left slider.
++              if ( this.direction ) {
++                      value = 100 - value;
++              }
++
++              return fromStepping( this.xVal, this.xPct, value );
++      };
++
++      Spectrum.prototype.getStep = function ( value ) {
++
++              // Find the proper step for rtl sliders by search in inverse direction.
++              // Fixes issue #262.
++              if ( this.direction ) {
++                      value = 100 - value;
++              }
++
++              value = getStep(this.xPct, this.xSteps, this.snap, value );
++
++              if ( this.direction ) {
++                      value = 100 - value;
++              }
++
++              return value;
++      };
++
++      Spectrum.prototype.getApplicableStep = function ( value ) {
++
++              // If the value is 100%, return the negative step twice.
++              var j = getJ(value, this.xPct), offset = value === 100 ? 2 : 1;
++              return [this.xNumSteps[j-2], this.xVal[j-offset], this.xNumSteps[j-offset]];
++      };
++
++      // Outside testing
++      Spectrum.prototype.convert = function ( value ) {
++              return this.getStep(this.toStepping(value));
++      };
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d8f11eb777751d5f7f6c0acc68a43bff563b3944
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,312 @@@
++
++      // Test suggested values and apply margin, step.
++      function setHandle ( handle, to, noLimitOption ) {
++
++              var trigger = handle !== scope_Handles[0] ? 1 : 0,
++                      lowerMargin = scope_Locations[0] + options.margin,
++                      upperMargin = scope_Locations[1] - options.margin,
++                      lowerLimit = scope_Locations[0] + options.limit,
++                      upperLimit = scope_Locations[1] - options.limit;
++
++              // For sliders with multiple handles,
++              // limit movement to the other handle.
++              // Apply the margin option by adding it to the handle positions.
++              if ( scope_Handles.length > 1 ) {
++                      to = trigger ? Math.max( to, lowerMargin ) : Math.min( to, upperMargin );
++              }
++
++              // The limit option has the opposite effect, limiting handles to a
++              // maximum distance from another. Limit must be > 0, as otherwise
++              // handles would be unmoveable. 'noLimitOption' is set to 'false'
++              // for the .val() method, except for pass 4/4.
++              if ( noLimitOption !== false && options.limit && scope_Handles.length > 1 ) {
++                      to = trigger ? Math.min ( to, lowerLimit ) : Math.max( to, upperLimit );
++              }
++
++              // Handle the step option.
++              to = scope_Spectrum.getStep( to );
++
++              // Limit percentage to the 0 - 100 range
++              to = limit(to);
++
++              // Return false if handle can't move
++              if ( to === scope_Locations[trigger] ) {
++                      return false;
++              }
++
++              // Set the handle to the new position.
++              // Use requestAnimationFrame for efficient painting.
++              // No significant effect in Chrome, Edge sees dramatic
++              // performace improvements.
++              if ( window.requestAnimationFrame ) {
++                      window.requestAnimationFrame(function(){
++                              handle.style[options.style] = to + '%';
++                      });
++              } else {
++                      handle.style[options.style] = to + '%';
++              }
++
++              // Force proper handle stacking
++              if ( !handle.previousSibling ) {
++                      removeClass(handle, options.cssClasses.stacking);
++                      if ( to > 50 ) {
++                              addClass(handle, options.cssClasses.stacking);
++                      }
++              }
++
++              // Update locations.
++              scope_Locations[trigger] = to;
++
++              // Convert the value to the slider stepping/range.
++              scope_Values[trigger] = scope_Spectrum.fromStepping( to );
++
++              fireEvent('update', trigger);
++
++              return true;
++      }
++
++      // Loop values from value method and apply them.
++      function setValues ( count, values ) {
++
++              var i, trigger, to;
++
++              // With the limit option, we'll need another limiting pass.
++              if ( options.limit ) {
++                      count += 1;
++              }
++
++              // If there are multiple handles to be set run the setting
++              // mechanism twice for the first handle, to make sure it
++              // can be bounced of the second one properly.
++              for ( i = 0; i < count; i += 1 ) {
++
++                      trigger = i%2;
++
++                      // Get the current argument from the array.
++                      to = values[trigger];
++
++                      // Setting with null indicates an 'ignore'.
++                      // Inputting 'false' is invalid.
++                      if ( to !== null && to !== false ) {
++
++                              // If a formatted number was passed, attemt to decode it.
++                              if ( typeof to === 'number' ) {
++                                      to = String(to);
++                              }
++
++                              to = options.format.from( to );
++
++                              // Request an update for all links if the value was invalid.
++                              // Do so too if setting the handle fails.
++                              if ( to === false || isNaN(to) || setHandle( scope_Handles[trigger], scope_Spectrum.toStepping( to ), i === (3 - options.dir) ) === false ) {
++                                      fireEvent('update', trigger);
++                              }
++                      }
++              }
++      }
++
++      // Set the slider value.
++      function valueSet ( input, fireSetEvent ) {
++
++              var count, values = asArray( input ), i;
++
++              // Event fires by default
++              fireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent);
++
++              // The RTL settings is implemented by reversing the front-end,
++              // internal mechanisms are the same.
++              if ( options.dir && options.handles > 1 ) {
++                      values.reverse();
++              }
++
++              // Animation is optional.
++              // Make sure the initial values where set before using animated placement.
++              if ( options.animate && scope_Locations[0] !== -1 ) {
++                      addClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );
++              }
++
++              // Determine how often to set the handles.
++              count = scope_Handles.length > 1 ? 3 : 1;
++
++              if ( values.length === 1 ) {
++                      count = 1;
++              }
++
++              setValues ( count, values );
++
++              // Fire the 'set' event for both handles.
++              for ( i = 0; i < scope_Handles.length; i++ ) {
++
++                      // Fire the event only for handles that received a new value, as per #579
++                      if ( values[i] !== null && fireSetEvent ) {
++                              fireEvent('set', i);
++                      }
++              }
++      }
++
++      // Get the slider value.
++      function valueGet ( ) {
++
++              var i, retour = [];
++
++              // Get the value from all handles.
++              for ( i = 0; i < options.handles; i += 1 ){
++                      retour[i] = options.format.to( scope_Values[i] );
++              }
++
++              return inSliderOrder( retour );
++      }
++
++      // Removes classes from the root and empties it.
++      function destroy ( ) {
++
++              for ( var key in options.cssClasses ) {
++                      if ( !options.cssClasses.hasOwnProperty(key) ) { continue; }
++                      removeClass(scope_Target, options.cssClasses[key]);
++              }
++
++              while (scope_Target.firstChild) {
++                      scope_Target.removeChild(scope_Target.firstChild);
++              }
++
++              delete scope_Target.noUiSlider;
++      }
++
++      // Get the current step size for the slider.
++      function getCurrentStep ( ) {
++
++              // Check all locations, map them to their stepping point.
++              // Get the step point, then find it in the input list.
++              var retour = scope_Locations.map(function( location, index ){
++
++                      var step = scope_Spectrum.getApplicableStep( location ),
++
++                              // As per #391, the comparison for the decrement step can have some rounding issues.
++                              // Round the value to the precision used in the step.
++                              stepDecimals = countDecimals(String(step[2])),
++
++                              // Get the current numeric value
++                              value = scope_Values[index],
++
++                              // To move the slider 'one step up', the current step value needs to be added.
++                              // Use null if we are at the maximum slider value.
++                              increment = location === 100 ? null : step[2],
++
++                              // Going 'one step down' might put the slider in a different sub-range, so we
++                              // need to switch between the current or the previous step.
++                              prev = Number((value - step[2]).toFixed(stepDecimals)),
++
++                              // If the value fits the step, return the current step value. Otherwise, use the
++                              // previous step. Return null if the slider is at its minimum value.
++                              decrement = location === 0 ? null : (prev >= step[1]) ? step[2] : (step[0] || false);
++
++                      return [decrement, increment];
++              });
++
++              // Return values in the proper order.
++              return inSliderOrder( retour );
++      }
++
++      // Attach an event to this slider, possibly including a namespace
++      function bindEvent ( namespacedEvent, callback ) {
++              scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || [];
++              scope_Events[namespacedEvent].push(callback);
++
++              // If the event bound is 'update,' fire it immediately for all handles.
++              if ( namespacedEvent.split('.')[0] === 'update' ) {
++                      scope_Handles.forEach(function(a, index){
++                              fireEvent('update', index);
++                      });
++              }
++      }
++
++      // Undo attachment of event
++      function removeEvent ( namespacedEvent ) {
++
++              var event = namespacedEvent && namespacedEvent.split('.')[0],
++                      namespace = event && namespacedEvent.substring(event.length);
++
++              Object.keys(scope_Events).forEach(function( bind ){
++
++                      var tEvent = bind.split('.')[0],
++                              tNamespace = bind.substring(tEvent.length);
++
++                      if ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) {
++                              delete scope_Events[bind];
++                      }
++              });
++      }
++
++      // Updateable: margin, limit, step, range, animate, snap
++      function updateOptions ( optionsToUpdate, fireSetEvent ) {
++
++              // Spectrum is created using the range, snap, direction and step options.
++              // 'snap' and 'step' can be updated, 'direction' cannot, due to event binding.
++              // If 'snap' and 'step' are not passed, they should remain unchanged.
++              var v = valueGet(), newOptions = testOptions({
++                      start: [0, 0],
++                      margin: optionsToUpdate.margin,
++                      limit: optionsToUpdate.limit,
++                      step: optionsToUpdate.step === undefined ? options.singleStep : optionsToUpdate.step,
++                      range: optionsToUpdate.range,
++                      animate: optionsToUpdate.animate,
++                      snap: optionsToUpdate.snap === undefined ? options.snap : optionsToUpdate.snap
++              });
++
++              ['margin', 'limit', 'range', 'animate'].forEach(function(name){
++
++                      // Only change options that we're actually passed to update.
++                      if ( optionsToUpdate[name] !== undefined ) {
++                              options[name] = optionsToUpdate[name];
++                      }
++              });
++
++              // Save current spectrum direction as testOptions in testRange call
++              // doesn't rely on current direction
++              newOptions.spectrum.direction = scope_Spectrum.direction;
++              scope_Spectrum = newOptions.spectrum;
++
++              // Invalidate the current positioning so valueSet forces an update.
++              scope_Locations = [-1, -1];
++              valueSet(optionsToUpdate.start || v, fireSetEvent);
++      }
++
++
++      // Throw an error if the slider was already initialized.
++      if ( scope_Target.noUiSlider ) {
++              throw new Error('Slider was already initialized.');
++      }
++
++      // Create the base element, initialise HTML and set classes.
++      // Add handles and links.
++      scope_Base = addSlider( options.dir, options.ort, scope_Target );
++      scope_Handles = addHandles( options.handles, options.dir, scope_Base );
++
++      // Set the connect classes.
++      addConnection ( options.connect, scope_Target, scope_Handles );
++
++      if ( options.pips ) {
++              pips(options.pips);
++      }
++
++      if ( options.tooltips ) {
++              tooltips();
++      }
++
++      scope_Self = {
++              destroy: destroy,
++              steps: getCurrentStep,
++              on: bindEvent,
++              off: removeEvent,
++              get: valueGet,
++              set: valueSet,
++              updateOptions: updateOptions,
++              options: originalOptions, // Issue #600
++              target: scope_Target, // Issue #597
++              pips: pips // Issue #594
++      };
++
++      // Attach user events.
++      events( options.events );
++
++      return scope_Self;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5c34318c2147fb2285de5a1513f46168e33e6baf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..158c9f27b70a7c2583b6496ccfff84c3eab72ab0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,316 @@@
++
++      // Handler for attaching events trough a proxy.
++      function attach ( events, element, callback, data ) {
++
++              // This function can be used to 'filter' events to the slider.
++              // element is a node, not a nodeList
++
++              var method = function ( e ){
++
++                      if ( scope_Target.hasAttribute('disabled') ) {
++                              return false;
++                      }
++
++                      // Stop if an active 'tap' transition is taking place.
++                      if ( hasClass(scope_Target, options.cssClasses.tap) ) {
++                              return false;
++                      }
++
++                      e = fixEvent(e, data.pageOffset);
++
++                      // Ignore right or middle clicks on start #454
++                      if ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) {
++                              return false;
++                      }
++
++                      // Ignore right or middle clicks on start #454
++                      if ( data.hover && e.buttons ) {
++                              return false;
++                      }
++
++                      e.calcPoint = e.points[ options.ort ];
++
++                      // Call the event handler with the event [ and additional data ].
++                      callback ( e, data );
++
++              }, methods = [];
++
++              // Bind a closure on the target for every event type.
++              events.split(' ').forEach(function( eventName ){
++                      element.addEventListener(eventName, method, false);
++                      methods.push([eventName, method]);
++              });
++
++              return methods;
++      }
++
++      // Handle movement on document for handle and range drag.
++      function move ( event, data ) {
++
++              // Fix #498
++              // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty).
++              // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero
++              // IE9 has .buttons and .which zero on mousemove.
++              // Firefox breaks the spec MDN defines.
++              if ( navigator.appVersion.indexOf("MSIE 9") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) {
++                      return end(event, data);
++              }
++
++              var handles = data.handles || scope_Handles, positions, state = false,
++                      proposal = ((event.calcPoint - data.start) * 100) / data.baseSize,
++                      handleNumber = handles[0] === scope_Handles[0] ? 0 : 1, i;
++
++              // Calculate relative positions for the handles.
++              positions = getPositions( proposal, data.positions, handles.length > 1);
++
++              state = setHandle ( handles[0], positions[handleNumber], handles.length === 1 );
++
++              if ( handles.length > 1 ) {
++
++                      state = setHandle ( handles[1], positions[handleNumber?0:1], false ) || state;
++
++                      if ( state ) {
++                              // fire for both handles
++                              for ( i = 0; i < data.handles.length; i++ ) {
++                                      fireEvent('slide', i);
++                              }
++                      }
++              } else if ( state ) {
++                      // Fire for a single handle
++                      fireEvent('slide', handleNumber);
++              }
++      }
++
++      // Unbind move events on document, call callbacks.
++      function end ( event, data ) {
++
++              // The handle is no longer active, so remove the class.
++              var active = scope_Base.querySelector( '.' + options.cssClasses.active ),
++                      handleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1;
++
++              if ( active !== null ) {
++                      removeClass(active, options.cssClasses.active);
++              }
++
++              // Remove cursor styles and text-selection events bound to the body.
++              if ( event.cursor ) {
++                      document.body.style.cursor = '';
++                      document.body.removeEventListener('selectstart', document.body.noUiListener);
++              }
++
++              var d = document.documentElement;
++
++              // Unbind the move and end events, which are added on 'start'.
++              d.noUiListeners.forEach(function( c ) {
++                      d.removeEventListener(c[0], c[1]);
++              });
++
++              // Remove dragging class.
++              removeClass(scope_Target, options.cssClasses.drag);
++
++              // Fire the change and set events.
++              fireEvent('set', handleNumber);
++              fireEvent('change', handleNumber);
++
++              // If this is a standard handle movement, fire the end event.
++              if ( data.handleNumber !== undefined ) {
++                      fireEvent('end', data.handleNumber);
++              }
++      }
++
++      // Fire 'end' when a mouse or pen leaves the document.
++      function documentLeave ( event, data ) {
++              if ( event.type === "mouseout" && event.target.nodeName === "HTML" && event.relatedTarget === null ){
++                      end ( event, data );
++              }
++      }
++
++      // Bind move events on document.
++      function start ( event, data ) {
++
++              var d = document.documentElement;
++
++              // Mark the handle as 'active' so it can be styled.
++              if ( data.handles.length === 1 ) {
++                      // Support 'disabled' handles
++                      if ( data.handles[0].hasAttribute('disabled') ) {
++                              return false;
++                      }
++
++                      addClass(data.handles[0].children[0], options.cssClasses.active);
++              }
++
++              // Fix #551, where a handle gets selected instead of dragged.
++              event.preventDefault();
++
++              // A drag should never propagate up to the 'tap' event.
++              event.stopPropagation();
++
++              // Attach the move and end events.
++              var moveEvent = attach(actions.move, d, move, {
++                      start: event.calcPoint,
++                      baseSize: baseSize(),
++                      pageOffset: event.pageOffset,
++                      handles: data.handles,
++                      handleNumber: data.handleNumber,
++                      buttonsProperty: event.buttons,
++                      positions: [
++                              scope_Locations[0],
++                              scope_Locations[scope_Handles.length - 1]
++                      ]
++              }), endEvent = attach(actions.end, d, end, {
++                      handles: data.handles,
++                      handleNumber: data.handleNumber
++              });
++
++              var outEvent = attach("mouseout", d, documentLeave, {
++                      handles: data.handles,
++                      handleNumber: data.handleNumber
++              });
++
++              d.noUiListeners = moveEvent.concat(endEvent, outEvent);
++
++              // Text selection isn't an issue on touch devices,
++              // so adding cursor styles can be skipped.
++              if ( event.cursor ) {
++
++                      // Prevent the 'I' cursor and extend the range-drag cursor.
++                      document.body.style.cursor = getComputedStyle(event.target).cursor;
++
++                      // Mark the target with a dragging state.
++                      if ( scope_Handles.length > 1 ) {
++                              addClass(scope_Target, options.cssClasses.drag);
++                      }
++
++                      var f = function(){
++                              return false;
++                      };
++
++                      document.body.noUiListener = f;
++
++                      // Prevent text selection when dragging the handles.
++                      document.body.addEventListener('selectstart', f, false);
++              }
++
++              if ( data.handleNumber !== undefined ) {
++                      fireEvent('start', data.handleNumber);
++              }
++      }
++
++      // Move closest handle to tapped location.
++      function tap ( event ) {
++
++              var location = event.calcPoint, total = 0, handleNumber, to;
++
++              // The tap event shouldn't propagate up and cause 'edge' to run.
++              event.stopPropagation();
++
++              // Add up the handle offsets.
++              scope_Handles.forEach(function(a){
++                      total += offset(a)[ options.style ];
++              });
++
++              // Find the handle closest to the tapped position.
++              handleNumber = ( location < total/2 || scope_Handles.length === 1 ) ? 0 : 1;
++
++              // Check if handler is not disablet if yes set number to the next handler
++              if (scope_Handles[handleNumber].hasAttribute('disabled')) {
++                      handleNumber = handleNumber ? 0 : 1;
++              }
++
++              location -= offset(scope_Base)[ options.style ];
++
++              // Calculate the new position.
++              to = ( location * 100 ) / baseSize();
++
++              if ( !options.events.snap ) {
++                      // Flag the slider as it is now in a transitional state.
++                      // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that.
++                      addClassFor( scope_Target, options.cssClasses.tap, options.animationDuration );
++              }
++
++              // Support 'disabled' handles
++              if ( scope_Handles[handleNumber].hasAttribute('disabled') ) {
++                      return false;
++              }
++
++              // Find the closest handle and calculate the tapped point.
++              // The set handle to the new position.
++              setHandle( scope_Handles[handleNumber], to );
++
++              fireEvent('slide', handleNumber, true);
++              fireEvent('set', handleNumber, true);
++              fireEvent('change', handleNumber, true);
++
++              if ( options.events.snap ) {
++                      start(event, { handles: [scope_Handles[handleNumber]] });
++              }
++      }
++
++      // Fires a 'hover' event for a hovered mouse/pen position.
++      function hover ( event ) {
++
++              var location = event.calcPoint - offset(scope_Base)[ options.style ],
++                      to = scope_Spectrum.getStep(( location * 100 ) / baseSize()),
++                      value = scope_Spectrum.fromStepping( to );
++
++              Object.keys(scope_Events).forEach(function( targetEvent ) {
++                      if ( 'hover' === targetEvent.split('.')[0] ) {
++                              scope_Events[targetEvent].forEach(function( callback ) {
++                                      callback.call( scope_Self, value );
++                              });
++                      }
++              });
++      }
++
++      // Attach events to several slider parts.
++      function events ( behaviour ) {
++
++              // Attach the standard drag event to the handles.
++              if ( !behaviour.fixed ) {
++
++                      scope_Handles.forEach(function( handle, index ){
++
++                              // These events are only bound to the visual handle
++                              // element, not the 'real' origin element.
++                              attach ( actions.start, handle.children[0], start, {
++                                      handles: [ handle ],
++                                      handleNumber: index
++                              });
++                      });
++              }
++
++              // Attach the tap event to the slider base.
++              if ( behaviour.tap ) {
++
++                      attach ( actions.start, scope_Base, tap, {
++                              handles: scope_Handles
++                      });
++              }
++
++              // Fire hover events
++              if ( behaviour.hover ) {
++                      attach ( actions.move, scope_Base, hover, { hover: true } );
++              }
++
++              // Make the range draggable.
++              if ( behaviour.drag ){
++
++                      var drag = [scope_Base.querySelector( '.' + options.cssClasses.connect )];
++                      addClass(drag[0], options.cssClasses.draggable);
++
++                      // When the range is fixed, the entire range can
++                      // be dragged by the handles. The handle in the first
++                      // origin will propagate the start event upward,
++                      // but it needs to be bound manually on the other.
++                      if ( behaviour.fixed ) {
++                              drag.push(scope_Handles[(drag[0] === scope_Handles[0] ? 1 : 0)].children[0]);
++                      }
++
++                      drag.forEach(function( element ) {
++                              attach ( actions.start, element, start, {
++                                      handles: scope_Handles
++                              });
++                      });
++              }
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e7759f637c74fd037eaf03c2e9776d7ac3706e47
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,63 @@@
++
++      // Shorthand for base dimensions.
++      function baseSize ( ) {
++              var rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort];
++              return options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]);
++      }
++
++      // External event handling
++      function fireEvent ( event, handleNumber, tap ) {
++
++              var i;
++
++              // During initialization, do not fire events.
++              for ( i = 0; i < options.handles; i++ ) {
++                      if ( scope_Locations[i] === -1 ) {
++                              return;
++                      }
++              }
++
++              if ( handleNumber !== undefined && options.handles !== 1 ) {
++                      handleNumber = Math.abs(handleNumber - options.dir);
++              }
++
++              Object.keys(scope_Events).forEach(function( targetEvent ) {
++
++                      var eventType = targetEvent.split('.')[0];
++
++                      if ( event === eventType ) {
++                              scope_Events[targetEvent].forEach(function( callback ) {
++
++                                      callback.call(
++                                              // Use the slider public API as the scope ('this')
++                                              scope_Self,
++                                              // Return values as array, so arg_1[arg_2] is always valid.
++                                              asArray(valueGet()),
++                                              // Handle index, 0 or 1
++                                              handleNumber,
++                                              // Unformatted slider values
++                                              asArray(inSliderOrder(Array.prototype.slice.call(scope_Values))),
++                                              // Event is fired by tap, true or false
++                                              tap || false,
++                                              // Left offset of the handle, in relation to the slider
++                                              scope_Locations
++                                      );
++                              });
++                      }
++              });
++      }
++
++      // Returns the input array, respecting the slider direction configuration.
++      function inSliderOrder ( values ) {
++
++              // If only one handle is used, return a single value.
++              if ( values.length === 1 ){
++                      return values[0];
++              }
++
++              if ( options.dir ) {
++                      return values.reverse();
++              }
++
++              return values;
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..79a904b2bd9787fea505e879e667ec1a9516f55a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,13 @@@
++
++function closure ( target, options, originalOptions ){
++      var
++              actions = getActions( ),
++              // All variables local to 'closure' are prefixed with 'scope_'
++              scope_Target = target,
++              scope_Locations = [-1, -1],
++              scope_Base,
++              scope_Handles,
++              scope_Spectrum = options.spectrum,
++              scope_Values = [],
++              scope_Events = {},
++              scope_Self;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..36a5e36b70cd804159f6ed299b4b442026937a05
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,143 @@@
++
++      // Delimit proposed values for handle positions.
++      function getPositions ( a, b, delimit ) {
++
++              // Add movement to current position.
++              var c = a + b[0], d = a + b[1];
++
++              // Only alter the other position on drag,
++              // not on standard sliding.
++              if ( delimit ) {
++                      if ( c < 0 ) {
++                              d += Math.abs(c);
++                      }
++                      if ( d > 100 ) {
++                              c -= ( d - 100 );
++                      }
++
++                      // Limit values to 0 and 100.
++                      return [limit(c), limit(d)];
++              }
++
++              return [c,d];
++      }
++
++      // Provide a clean event with standardized offset values.
++      function fixEvent ( e, pageOffset ) {
++
++              // Prevent scrolling and panning on touch events, while
++              // attempting to slide. The tap event also depends on this.
++              e.preventDefault();
++
++              // Filter the event to register the type, which can be
++              // touch, mouse or pointer. Offset changes need to be
++              // made on an event specific basis.
++              var touch = e.type.indexOf('touch') === 0,
++                      mouse = e.type.indexOf('mouse') === 0,
++                      pointer = e.type.indexOf('pointer') === 0,
++                      x,y, event = e;
++
++              // IE10 implemented pointer events with a prefix;
++              if ( e.type.indexOf('MSPointer') === 0 ) {
++                      pointer = true;
++              }
++
++              if ( touch ) {
++                      // noUiSlider supports one movement at a time,
++                      // so we can select the first 'changedTouch'.
++                      x = e.changedTouches[0].pageX;
++                      y = e.changedTouches[0].pageY;
++              }
++
++              pageOffset = pageOffset || getPageOffset();
++
++              if ( mouse || pointer ) {
++                      x = e.clientX + pageOffset.x;
++                      y = e.clientY + pageOffset.y;
++              }
++
++              event.pageOffset = pageOffset;
++              event.points = [x, y];
++              event.cursor = mouse || pointer; // Fix #435
++
++              return event;
++      }
++
++      // Append a handle to the base.
++      function addHandle ( direction, index ) {
++
++              var origin = document.createElement('div'),
++                      handle = document.createElement('div'),
++                      classModifier = [options.cssClasses.handleLower, options.cssClasses.handleUpper];
++
++              if ( direction ) {
++                      classModifier.reverse();
++              }
++
++              addClass(handle, options.cssClasses.handle);
++              addClass(handle, classModifier[index]);
++
++              addClass(origin, options.cssClasses.origin);
++              origin.appendChild(handle);
++
++              return origin;
++      }
++
++      // Add the proper connection classes.
++      function addConnection ( connect, target, handles ) {
++
++              // Apply the required connection classes to the elements
++              // that need them. Some classes are made up for several
++              // segments listed in the class list, to allow easy
++              // renaming and provide a minor compression benefit.
++              switch ( connect ) {
++                      case 1: addClass(target, options.cssClasses.connect);
++                                      addClass(handles[0], options.cssClasses.background);
++                                      break;
++                      case 3: addClass(handles[1], options.cssClasses.background);
++                                      /* falls through */
++                      case 2: addClass(handles[0], options.cssClasses.connect);
++                                      /* falls through */
++                      case 0: addClass(target, options.cssClasses.background);
++                                      break;
++              }
++      }
++
++      // Add handles to the slider base.
++      function addHandles ( nrHandles, direction, base ) {
++
++              var index, handles = [];
++
++              // Append handles.
++              for ( index = 0; index < nrHandles; index += 1 ) {
++
++                      // Keep a list of all added handles.
++                      handles.push( base.appendChild(addHandle( direction, index )) );
++              }
++
++              return handles;
++      }
++
++      // Initialize a single slider.
++      function addSlider ( direction, orientation, target ) {
++
++              // Apply classes and data to the target.
++              addClass(target, options.cssClasses.target);
++
++              if ( direction === 0 ) {
++                      addClass(target, options.cssClasses.ltr);
++              } else {
++                      addClass(target, options.cssClasses.rtl);
++              }
++
++              if ( orientation === 0 ) {
++                      addClass(target, options.cssClasses.horizontal);
++              } else {
++                      addClass(target, options.cssClasses.vertical);
++              }
++
++              var div = document.createElement('div');
++              addClass(div, options.cssClasses.base);
++              target.appendChild(div);
++              return div;
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fd5d6732ac99f06535e84c59de3d8b2fa25f9adb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,33 @@@
++
++      function addTooltip ( handle, index ) {
++
++              if ( !options.tooltips[index] ) {
++                      return false;
++              }
++
++              var element = document.createElement('div');
++              element.className = options.cssClasses.tooltip;
++              return handle.firstChild.appendChild(element);
++      }
++
++      // The tooltips option is a shorthand for using the 'update' event.
++      function tooltips ( ) {
++
++              if ( options.dir ) {
++                      options.tooltips.reverse();
++              }
++
++              // Tooltips are added with options.tooltips in original order.
++              var tips = scope_Handles.map(addTooltip);
++
++              if ( options.dir ) {
++                      tips.reverse();
++                      options.tooltips.reverse();
++              }
++
++              bindEvent('update', function(f, o, r) {
++                      if ( tips[o] ) {
++                              tips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]);
++                      }
++              });
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8cdbc0c27086b272c836da4c1a3b798ea15b85e5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,712 @@@
++// @flow
++/**
++ * renderA11yString returns a readable string.
++ *
++ * In some cases the string will have the proper semantic math
++ * meaning,:
++ *   renderA11yString("\\frac{1}{2}"")
++ *   -> "start fraction, 1, divided by, 2, end fraction"
++ *
++ * However, other cases do not:
++ *   renderA11yString("f(x) = x^2")
++ *   -> "f, left parenthesis, x, right parenthesis, equals, x, squared"
++ *
++ * The commas in the string aim to increase ease of understanding
++ * when read by a screenreader.
++ */
++
++// NOTE: since we're importing types here these files won't actually be
++// included in the build.
++import type {Atom} from "../../src/symbols";
++import type {AnyParseNode} from "../../src/parseNode";
++import type {SettingsOptions} from "../../src/Settings";
++
++// $FlowIgnore: we import the types directly anyways
++import katex from "katex";
++
++const stringMap = {
++    "(": "left parenthesis",
++    ")": "right parenthesis",
++    "[": "open bracket",
++    "]": "close bracket",
++    "\\{": "left brace",
++    "\\}": "right brace",
++    "\\lvert": "open vertical bar",
++    "\\rvert": "close vertical bar",
++    "|": "vertical bar",
++    "\\uparrow": "up arrow",
++    "\\Uparrow": "up arrow",
++    "\\downarrow": "down arrow",
++    "\\Downarrow": "down arrow",
++    "\\updownarrow": "up down arrow",
++    "\\leftarrow": "left arrow",
++    "\\Leftarrow": "left arrow",
++    "\\rightarrow": "right arrow",
++    "\\Rightarrow": "right arrow",
++    "\\langle": "open angle",
++    "\\rangle": "close angle",
++    "\\lfloor": "open floor",
++    "\\rfloor": "close floor",
++    "\\int": "integral",
++    "\\intop": "integral",
++    "\\lim": "limit",
++    "\\ln": "natural log",
++    "\\log": "log",
++    "\\sin": "sine",
++    "\\cos": "cosine",
++    "\\tan": "tangent",
++    "\\cot": "cotangent",
++    "\\sum": "sum",
++    "/": "slash",
++    ",": "comma",
++    ".": "point",
++    "-": "negative",
++    "+": "plus",
++    "~": "tilde",
++    ":": "colon",
++    "?": "question mark",
++    "'": "apostrophe",
++    "\\%": "percent",
++    " ": "space",
++    "\\ ": "space",
++    "\\$": "dollar sign",
++    "\\angle": "angle",
++    "\\degree": "degree",
++    "\\circ": "circle",
++    "\\vec": "vector",
++    "\\triangle": "triangle",
++    "\\pi": "pi",
++    "\\prime": "prime",
++    "\\infty": "infinity",
++    "\\alpha": "alpha",
++    "\\beta": "beta",
++    "\\gamma": "gamma",
++    "\\omega": "omega",
++    "\\theta": "theta",
++    "\\sigma": "sigma",
++    "\\lambda": "lambda",
++    "\\tau": "tau",
++    "\\Delta": "delta",
++    "\\delta": "delta",
++    "\\mu": "mu",
++    "\\rho": "rho",
++    "\\nabla": "del",
++    "\\ell": "ell",
++    "\\ldots": "dots",
++    // TODO: add entries for all accents
++    "\\hat": "hat",
++    "\\acute": "acute",
++};
++
++const powerMap = {
++    "prime": "prime",
++    "degree": "degrees",
++    "circle": "degrees",
++    "2": "squared",
++    "3": "cubed",
++};
++
++const openMap = {
++    "|": "open vertical bar",
++    ".": "",
++};
++
++const closeMap = {
++    "|": "close vertical bar",
++    ".": "",
++};
++
++const binMap = {
++    "+": "plus",
++    "-": "minus",
++    "\\pm": "plus minus",
++    "\\cdot": "dot",
++    "*": "times",
++    "/": "divided by",
++    "\\times": "times",
++    "\\div": "divided by",
++    "\\circ": "circle",
++    "\\bullet": "bullet",
++};
++
++const relMap = {
++    "=": "equals",
++    "\\approx": "approximately equals",
++    "≠": "does not equal",
++    "\\geq": "is greater than or equal to",
++    "\\ge": "is greater than or equal to",
++    "\\leq": "is less than or equal to",
++    "\\le": "is less than or equal to",
++    ">": "is greater than",
++    "<": "is less than",
++    "\\leftarrow": "left arrow",
++    "\\Leftarrow": "left arrow",
++    "\\rightarrow": "right arrow",
++    "\\Rightarrow": "right arrow",
++    ":": "colon",
++};
++
++const accentUnderMap = {
++    "\\underleftarrow": "left arrow",
++    "\\underrightarrow": "right arrow",
++    "\\underleftrightarrow": "left-right arrow",
++    "\\undergroup": "group",
++    "\\underlinesegment": "line segment",
++    "\\utilde": "tilde",
++};
++
++type NestedArray<T> = Array<T | NestedArray<T>>;
++
++const buildString = (
++    str: string,
++    type: Atom | "normal",
++    a11yStrings: NestedArray<string>,
++) => {
++    if (!str) {
++        return;
++    }
++
++    let ret;
++
++    if (type === "open") {
++        ret = str in openMap ? openMap[str] : stringMap[str] || str;
++    } else if (type === "close") {
++        ret = str in closeMap ? closeMap[str] : stringMap[str] || str;
++    } else if (type === "bin") {
++        ret = binMap[str] || str;
++    } else if (type === "rel") {
++        ret = relMap[str] || str;
++    } else {
++        ret = stringMap[str] || str;
++    }
++
++    // If the text to add is a number and there is already a string
++    // in the list and the last string is a number then we should
++    // combine them into a single number
++    if (
++        /^\d+$/.test(ret) &&
++        a11yStrings.length > 0 &&
++        // TODO(kevinb): check that the last item in a11yStrings is a string
++        // I think we might be able to drop the nested arrays, which would make
++        // this easier to type - $FlowFixMe
++        /^\d+$/.test(a11yStrings[a11yStrings.length - 1])
++    ) {
++        a11yStrings[a11yStrings.length - 1] += ret;
++    } else if (ret) {
++        a11yStrings.push(ret);
++    }
++};
++
++const buildRegion = (
++    a11yStrings: NestedArray<string>,
++    callback: (regionStrings: NestedArray<string>) => void,
++) => {
++    const regionStrings: NestedArray<string> = [];
++    a11yStrings.push(regionStrings);
++    callback(regionStrings);
++};
++
++const handleObject = (
++    tree: AnyParseNode,
++    a11yStrings: NestedArray<string>,
++    atomType: Atom | "normal",
++) => {
++     // Everything else is assumed to be an object...
++    switch (tree.type) {
++        case "accent": {
++            buildRegion(a11yStrings, (a11yStrings) => {
++                buildA11yStrings(tree.base, a11yStrings, atomType);
++                a11yStrings.push("with");
++                buildString(tree.label, "normal", a11yStrings);
++                a11yStrings.push("on top");
++            });
++            break;
++        }
++
++        case "accentUnder": {
++            buildRegion(a11yStrings, (a11yStrings) => {
++                buildA11yStrings(tree.base, a11yStrings, atomType);
++                a11yStrings.push("with");
++                buildString(accentUnderMap[tree.label], "normal", a11yStrings);
++                a11yStrings.push("underneath");
++            });
++            break;
++        }
++
++        case "accent-token": {
++            // Used internally by accent symbols.
++            break;
++        }
++
++        case "atom": {
++            const {text} = tree;
++            switch (tree.family) {
++                case "bin": {
++                    buildString(text, "bin", a11yStrings);
++                    break;
++                }
++                case "close": {
++                    buildString(text, "close", a11yStrings);
++                    break;
++                }
++                // TODO(kevinb): figure out what should be done for inner
++                case "inner": {
++                    buildString(tree.text, "inner", a11yStrings);
++                    break;
++                }
++                case "open": {
++                    buildString(text, "open", a11yStrings);
++                    break;
++                }
++                case "punct": {
++                    buildString(text, "punct", a11yStrings);
++                    break;
++                }
++                case "rel": {
++                    buildString(text, "rel", a11yStrings);
++                    break;
++                }
++                default: {
++                    (tree.family: empty);
++                    throw new Error(`"${tree.family}" is not a valid atom type`);
++                }
++            }
++            break;
++        }
++
++        case "color": {
++            const color = tree.color.replace(/katex-/, "");
++
++            buildRegion(a11yStrings, (regionStrings) => {
++                regionStrings.push("start color " + color);
++                buildA11yStrings(tree.body, regionStrings, atomType);
++                regionStrings.push("end color " + color);
++            });
++            break;
++        }
++
++        case "color-token": {
++            // Used by \color, \colorbox, and \fcolorbox but not directly rendered.
++            // It's a leaf node and has no children so just break.
++            break;
++        }
++
++        case "delimsizing": {
++            if (tree.delim && tree.delim !== ".") {
++                buildString(tree.delim, "normal", a11yStrings);
++            }
++            break;
++        }
++
++        case "genfrac": {
++            buildRegion(a11yStrings, (regionStrings) => {
++                // genfrac can have unbalanced delimiters
++                const {leftDelim, rightDelim} = tree;
++
++                // NOTE: Not sure if this is a safe assumption
++                // hasBarLine true -> fraction, false -> binomial
++                if (tree.hasBarLine) {
++                    regionStrings.push("start fraction");
++                    leftDelim && buildString(leftDelim, "open", regionStrings);
++                    buildA11yStrings(tree.numer, regionStrings, atomType);
++                    regionStrings.push("divided by");
++                    buildA11yStrings(tree.denom, regionStrings, atomType);
++                    rightDelim && buildString(rightDelim, "close", regionStrings);
++                    regionStrings.push("end fraction");
++                } else {
++                    regionStrings.push("start binomial");
++                    leftDelim && buildString(leftDelim, "open", regionStrings);
++                    buildA11yStrings(tree.numer, regionStrings, atomType);
++                    regionStrings.push("over");
++                    buildA11yStrings(tree.denom, regionStrings, atomType);
++                    rightDelim && buildString(rightDelim, "close", regionStrings);
++                    regionStrings.push("end binomial");
++                }
++            });
++            break;
++        }
++
++        case "kern": {
++            // No op: we don't attempt to present kerning information
++            // to the screen reader.
++            break;
++        }
++
++        case "leftright": {
++            buildRegion(a11yStrings, (regionStrings) => {
++                buildString(tree.left, "open", regionStrings);
++                buildA11yStrings(tree.body, regionStrings, atomType);
++                buildString(tree.right, "close", regionStrings);
++            });
++            break;
++        }
++
++        case "leftright-right": {
++            // TODO: double check that this is a no-op
++            break;
++        }
++
++        case "lap": {
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "mathord": {
++            buildString(tree.text, "normal", a11yStrings);
++            break;
++        }
++
++        case "op": {
++            const {body, name} = tree;
++            if (body) {
++                buildA11yStrings(body, a11yStrings, atomType);
++            } else if (name) {
++                buildString(name, "normal", a11yStrings);
++            }
++            break;
++        }
++
++        case "op-token": {
++            // Used internally by operator symbols.
++            buildString(tree.text, atomType, a11yStrings);
++            break;
++        }
++
++        case "ordgroup": {
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "overline": {
++            buildRegion(a11yStrings, function(a11yStrings) {
++                a11yStrings.push("start overline");
++                buildA11yStrings(tree.body, a11yStrings, atomType);
++                a11yStrings.push("end overline");
++            });
++            break;
++        }
++
++        case "phantom": {
++            a11yStrings.push("empty space");
++            break;
++        }
++
++        case "raisebox": {
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "rule": {
++            a11yStrings.push("rectangle");
++            break;
++        }
++
++        case "sizing": {
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "spacing": {
++            a11yStrings.push("space");
++            break;
++        }
++
++        case "styling": {
++            // We ignore the styling and just pass through the contents
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "sqrt": {
++            buildRegion(a11yStrings, (regionStrings) => {
++                const {body, index} = tree;
++                if (index) {
++                    const indexString = flatten(
++                        buildA11yStrings(index, [], atomType)).join(",");
++                    if (indexString === "3") {
++                        regionStrings.push("cube root of");
++                        buildA11yStrings(body, regionStrings, atomType);
++                        regionStrings.push("end cube root");
++                        return;
++                    }
++
++                    regionStrings.push("root");
++                    regionStrings.push("start index");
++                    buildA11yStrings(index, regionStrings, atomType);
++                    regionStrings.push("end index");
++                    return;
++                }
++
++                regionStrings.push("square root of");
++                buildA11yStrings(body, regionStrings, atomType);
++                regionStrings.push("end square root");
++            });
++            break;
++        }
++
++        case "supsub": {
++            const {base, sub, sup} = tree;
++            let isLog = false;
++
++            if (base) {
++                buildA11yStrings(base, a11yStrings, atomType);
++                isLog = base.type === "op" && base.name === "\\log";
++            }
++
++            if (sub) {
++                const regionName = isLog ? "base" : "subscript";
++                buildRegion(a11yStrings, function(regionStrings) {
++                    regionStrings.push(`start ${regionName}`);
++                    buildA11yStrings(sub, regionStrings, atomType);
++                    regionStrings.push(`end ${regionName}`);
++                });
++            }
++
++            if (sup) {
++                buildRegion(a11yStrings, function(regionStrings) {
++                    const supString = flatten(
++                        buildA11yStrings(sup, [], atomType)).join(",");
++
++                    if (supString in powerMap) {
++                        regionStrings.push(powerMap[supString]);
++                        return;
++                    }
++
++                    regionStrings.push("start superscript");
++                    buildA11yStrings(sup, regionStrings, atomType);
++                    regionStrings.push("end superscript");
++                });
++            }
++            break;
++        }
++
++        case "text": {
++            // TODO: handle other fonts
++            if (tree.font === "\\textbf") {
++                buildRegion(a11yStrings, function(regionStrings) {
++                    regionStrings.push("start bold text");
++                    buildA11yStrings(tree.body, regionStrings, atomType);
++                    regionStrings.push("end bold text");
++                });
++                break;
++            }
++            buildRegion(a11yStrings, function(regionStrings) {
++                regionStrings.push("start text");
++                buildA11yStrings(tree.body, regionStrings, atomType);
++                regionStrings.push("end text");
++            });
++            break;
++        }
++
++        case "textord": {
++            buildString(tree.text, atomType, a11yStrings);
++            break;
++        }
++
++        case "smash": {
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "enclose": {
++            // TODO: create a map for these.
++            // TODO: differentiate between a body with a single atom, e.g.
++            // "cancel a" instead of "start cancel, a, end cancel"
++            if (/cancel/.test(tree.label)) {
++                buildRegion(a11yStrings, function(regionStrings) {
++                    regionStrings.push("start cancel");
++                    buildA11yStrings(tree.body, regionStrings, atomType);
++                    regionStrings.push("end cancel");
++                });
++                break;
++            } else if (/box/.test(tree.label)) {
++                buildRegion(a11yStrings, function(regionStrings) {
++                    regionStrings.push("start box");
++                    buildA11yStrings(tree.body, regionStrings, atomType);
++                    regionStrings.push("end box");
++                });
++                break;
++            } else if (/sout/.test(tree.label)) {
++                buildRegion(a11yStrings, function(regionStrings) {
++                    regionStrings.push("start strikeout");
++                    buildA11yStrings(tree.body, regionStrings, atomType);
++                    regionStrings.push("end strikeout");
++                });
++                break;
++            }
++            throw new Error(
++                `KaTeX-a11y: enclose node with ${tree.label} not supported yet`);
++        }
++
++        case "vphantom": {
++            throw new Error("KaTeX-a11y: vphantom not implemented yet");
++        }
++
++        case "hphantom": {
++            throw new Error("KaTeX-a11y: hphantom not implemented yet");
++        }
++
++        case "operatorname": {
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "array": {
++            throw new Error("KaTeX-a11y: array not implemented yet");
++        }
++
++        case "raw": {
++            throw new Error("KaTeX-a11y: raw not implemented yet");
++        }
++
++        case "size": {
++            // Although there are nodes of type "size" in the parse tree, they have
++            // no semantic meaning and should be ignored.
++            break;
++        }
++
++        case "url": {
++            throw new Error("KaTeX-a11y: url not implemented yet");
++        }
++
++        case "tag": {
++            throw new Error("KaTeX-a11y: tag not implemented yet");
++        }
++
++        case "verb": {
++            buildString(`start verbatim`, "normal", a11yStrings);
++            buildString(tree.body, "normal", a11yStrings);
++            buildString(`end verbatim`, "normal", a11yStrings);
++            break;
++        }
++
++        case "environment": {
++            throw new Error("KaTeX-a11y: environment not implemented yet");
++        }
++
++        case "horizBrace": {
++            buildString(`start ${tree.label.slice(1)}`, "normal", a11yStrings);
++            buildA11yStrings(tree.base, a11yStrings, atomType);
++            buildString(`end ${tree.label.slice(1)}`, "normal", a11yStrings);
++            break;
++        }
++
++        case "infix": {
++            // All infix nodes are replace with other nodes.
++            break;
++        }
++
++        case "includegraphics": {
++            throw new Error("KaTeX-a11y: includegraphics not implemented yet");
++        }
++
++        case "font": {
++            // TODO: callout the start/end of specific fonts
++            // TODO: map \BBb{N} to "the naturals" or something like that
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "href": {
++            throw new Error("KaTeX-a11y: href not implemented yet");
++        }
++
++        case "cr": {
++            // This is used by environments.
++            throw new Error("KaTeX-a11y: cr not implemented yet");
++        }
++
++        case "underline": {
++            buildRegion(a11yStrings, function(a11yStrings) {
++                a11yStrings.push("start underline");
++                buildA11yStrings(tree.body, a11yStrings, atomType);
++                a11yStrings.push("end underline");
++            });
++            break;
++        }
++
++        case "xArrow": {
++            throw new Error("KaTeX-a11y: xArrow not implemented yet");
++        }
++
++        case "mclass": {
++            // \neq and \ne are macros so we let "htmlmathml" render the mathmal
++            // side of things and extract the text from that.
++            const atomType = tree.mclass.slice(1);
++            // $FlowFixMe: drop the leading "m" from the values in mclass
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        case "mathchoice": {
++            // TODO: track which which style we're using, e.g. dispaly, text, etc.
++            // default to text style if even that may not be the correct style
++            buildA11yStrings(tree.text, a11yStrings, atomType);
++            break;
++        }
++
++        case "htmlmathml": {
++            buildA11yStrings(tree.mathml, a11yStrings, atomType);
++            break;
++        }
++
++        case "middle": {
++            buildString(tree.delim, atomType, a11yStrings);
++            break;
++        }
++
++        case "internal": {
++            // internal nodes are never included in the parse tree
++            break;
++        }
++
++        case "html": {
++            buildA11yStrings(tree.body, a11yStrings, atomType);
++            break;
++        }
++
++        default:
++            (tree.type: empty);
++            throw new Error("KaTeX a11y un-recognized type: " + tree.type);
++    }
++};
++
++const buildA11yStrings = (
++    tree: AnyParseNode | AnyParseNode[],
++    a11yStrings: NestedArray<string> = [],
++    atomType: Atom | "normal",
++) => {
++    if (tree instanceof Array) {
++        for (let i = 0; i < tree.length; i++) {
++            buildA11yStrings(tree[i], a11yStrings, atomType);
++        }
++    } else {
++        handleObject(tree, a11yStrings, atomType);
++    }
++
++    return a11yStrings;
++};
++
++
++const flatten = function(array) {
++    let result = [];
++
++    array.forEach(function(item) {
++        if (item instanceof Array) {
++            result = result.concat(flatten(item));
++        } else {
++            result.push(item);
++        }
++    });
++
++    return result;
++};
++
++const renderA11yString = function(text: string, settings?: SettingsOptions) {
++
++    const tree = katex.__parse(text, settings);
++    const a11yStrings = buildA11yStrings(tree, [], "normal");
++    return flatten(a11yStrings).join(", ");
++};
++
++export default renderA11yString;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bdd8c073b39c97242b6f3d872efbb81f4ee27b43
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/share/info/dir
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9cfdf755f66ea653aba9671fe7e632e465506441
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++Description: Provide version#"git description".
++ Since we may not be building the package from a git repository, we
++ hardcode the git description ahead of time.  This patch is
++ automatically updated by debian/scripts/m2-get-orig-source.sh.
++Author: Doug Torrance <dtorrance@debian.org>
++Forwarded: not-needed
++Last-Update: 2020-12-21
++
++--- a/M2/configure.ac
+++++ b/M2/configure.ac
++@@ -535,7 +535,7 @@
++ NEW_COMMITS=`$GIT rev-list $($GIT rev-list -1 HEAD $srcdir/VERSION)..HEAD --count`
++ GIT_COMMIT=`$GIT describe --dirty --always --match HEAD`
++ if test "$NEW_COMMITS-$GIT_COMMIT" = "-"
++-then GIT_DESCRIPTION=version-$PACKAGE_VERSION-unknown
+++then GIT_DESCRIPTION=version-1.19.1-3-07e46f040
++ else GIT_DESCRIPTION=version-$PACKAGE_VERSION-$NEW_COMMITS-$GIT_COMMIT
++ fi
++ AC_DEFINE_UNQUOTED(GIT_DESCRIPTION,"$GIT_DESCRIPTION",[summary of git status])
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..68e36b5d9361c5ece64891f9e8fe8899de349feb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,37 @@@
++Description: Fix "'givaro_bool_constant' does not name a type" error.
++Origin: https://github.com/Macaulay2/M2/commit/ff0f0cb (reversed)
++Bug: https://github.com/Macaulay2/M2/issues/2347
++Last-Update: 2021-12-18
++
++--- a/M2/Macaulay2/e/aring-gf-givaro.hpp
+++++ b/M2/Macaulay2/e/aring-gf-givaro.hpp
++@@ -40,7 +40,6 @@
++ };
++ 
++ #else
++-#define bool_constant givaro_bool_constant
++ #include <givaro/gfq.h>
++ #include <givaro/givpower.h>
++ #include <givaro/givtimer.h>
++@@ -50,7 +49,7 @@
++ #include <givaro/givintnumtheo.h>
++ #include <givaro/givpower.h>
++ #include <givaro/givpoly1padic.h>
++-#undef bool_constant
+++
++ #include <type_traits>
++ 
++ namespace M2 {
++--- a/M2/Macaulay2/e/aring-zzp-ffpack.hpp
+++++ b/M2/Macaulay2/e/aring-zzp-ffpack.hpp
++@@ -17,9 +17,8 @@
++ 
++ // this fixes a weird problem in the package "openblas" of Arch Linux, which somehow fails to declare this function:
++ extern "C" void openblas_set_num_threads(int num_threads);
++-#define bool_constant givaro_bool_constant
+++
++ #include <fflas-ffpack/ffpack/ffpack.h>
++-#undef bool_constant
++ #pragma GCC diagnostic pop
++ 
++ namespace M2 {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..52ec8d71471341cfcf9a484aafea18e460cbc0c9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,37 @@@
++Description: Reproducible version hash table.
++ - For version#"configure arguments", we replace the build directory
++   with "/build/path" in all the instances of the -fdebug-prefix-map
++   flag.
++ - For version#"compile-node-name" and version#"operating system release", we
++   use dummy values.
++Author: Doug Torrance <dtorrance@debian.org>
++Forwarded: not-needed
++Last-Update: 2021-09-23
++
++--- a/M2/configure.ac
+++++ b/M2/configure.ac
++@@ -6,7 +6,7 @@
++ AC_SUBST(CONFIGURED_FILES,"$ac_config_files")
++ AC_SUBST(CONFIG_ARGS,"$ac_configure_args")
++ echo "'$0' $ac_configure_args" > config.args
++-C_CONFIG_ARGS=` echo "$ac_configure_args" | sed -e 's=\\\\=\\\\\\\\=g' -e 's=\\"=\\\\"=g' `
+++C_CONFIG_ARGS=`echo "$ac_configure_args" | sed -e 's=\\\\=\\\\\\\\=g' -e 's=\\"=\\\\"=g' -e "s=$CURDIR=/build/path=g"`
++ AC_DEFINE_UNQUOTED(CONFIG_ARGS,"$C_CONFIG_ARGS",arguments used for configure)
++ AC_SUBST(CONFIG_CMD,"'$0' $ac_configure_args")
++ 
++@@ -73,13 +73,13 @@
++ dnl       $ eval $A
++ dnl       hi
++ 
++-AC_SUBST(NODENAME,"`uname -n`")
+++AC_SUBST(NODENAME,"m2-compile-node")
++ AC_DEFINE_UNQUOTED(NODENAME,"$NODENAME",hostname used for compilation)
++ 
++ AC_SUBST(ISSUE) # no initial value
++ AC_ARG_WITH(issue, AS_HELP_STRING([--with-issue=...,specify the OS issue (e.g., Ubuntu-7.10)]),ISSUE=$withval)
++ AC_SUBST(OS,"`  uname -s | sed s=/=-=g  `")
++-AC_SUBST(REL,"`  uname -r | sed -e s=/=-=g -e 's= =+=' -e 's=[()]==g'  `")
+++AC_SUBST(REL,"m2-os-release")
++ AC_SUBST(UNAME_INFO_COMMAND," uname -pmso 2>/dev/null || uname -pms ")
++ AC_SUBST(UNAME_INFO,"` eval $UNAME_INFO_COMMAND `")
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..957cf8de6218cd5cd255a82228232f7a5d9f83d1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,9 @@@
++git-description.patch
++reproducible-version.patch
++use-cached-examples.patch
++skip-failing-core-tests.patch
++skip-failing-package-tests.patch
++use-dh-elpa.patch
++use-shared-mathicgb-and-friends.patch
++givaro-bool-constant.patch
++tbb-2021.patch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..494266b87fd78a32159f6d4b8f91f78ffc44b59e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,117 @@@
++Description: Skip Core tests that have been known to fail on various
++ architectures.
++Bug: https://github.com/Macaulay2/M2/issues/241 (plethysms)
++Bug: https://github.com/Macaulay2/M2/issues/1304 (ComputationsBook/varieties)
++Bug: https://github.com/Macaulay2/M2/issues/1578 (isSubset)
++Bug: https://github.com/Macaulay2/M2/issues/1580 (smith)
++Bug: https://github.com/Macaulay2/M2/issues/1663 (schur-2)
++Bug: https://github.com/Macaulay2/M2/issues/1742 (ComputationsBook/
++ monomialIdeals)
++Bug: https://github.com/Macaulay2/M2/issues/2014 (timing-quotient)
++Bug: https://github.com/Macaulay2/M2/issues/2162 (ComputationsBook/
++ constructions)
++Bug: https://github.com/Macaulay2/M2/issues/2184 (000-core)
++Bug: https://github.com/Macaulay2/M2/issues/2206 (CSM.test, methods)
++Bug: https://github.com/Macaulay2/M2/issues/2242 (ComputationsBook/geometry)
++Author: Doug Torrance <dtorrance@debian.org>
++Origin: https://github.com/Macaulay2/M2/pull/2358 (ComputationsBook/varieties)
++Last-Update: 2021-12-13
++
++--- a/M2/Macaulay2/tests/ComputationsBook/Makefile.in
+++++ b/M2/Macaulay2/tests/ComputationsBook/Makefile.in
++@@ -1,8 +1,8 @@
++ # @configure_input@
++ include ../../../include/config.Makefile
++ VPATH = @srcdir@
++-CHAPTERS = completeIntersections constructions d-modules exterior-algebra geometry \
++-        monomialIdeals preface programming schemes solving toricHilbertScheme varieties
+++CHAPTERS = completeIntersections d-modules exterior-algebra \
+++        preface programming schemes toricHilbertScheme varieties
++ .PHONY: changes capture
++ all:
++ $(CHAPTERS):; $(MKDIR_P) "$@"
++--- a/M2/Macaulay2/tests/normal/smith.m2
+++++ b/M2/Macaulay2/tests/normal/smith.m2
++@@ -27,7 +27,6 @@
++ 
++ R = QQ[x]
++ time (g,t,s) = smithNormalForm ( f = random(R^8,R^3,MaximalRank=>true) * matrix "14+x,,;,140-x2,;,,1261+2x" * random(R^3,R^10,MaximalRank=>true) );
++-time assert ( t*f*s == g )
++ time assert ( # pivots g == 3 )
++ 
++ S = QQ [x, MonomialOrder => {Position => Down}]
++--- a/M2/Macaulay2/tests/slow/isSubset.m2
+++++ b/M2/Macaulay2/tests/slow/isSubset.m2
++@@ -42,10 +42,3 @@
++ K = I+J;
++ f = J_(numgens J - 1);
++ m = a*b*c^6
++-assert( m % leadTerm K == 0 )
++-assert( m % K != m )
++-s = select( flatten entries leadTerm K, n -> m % leadMonomial n == 0 )
++-assert( m % ideal s == 0 )
++-assert( f % K == 0 )
++-assert isSubset(J,K)
++-assert ( gens gb gens gb K == gens gb K )
++--- a/M2/Macaulay2/tests/threads/schur-2.m2
+++++ b/M2/Macaulay2/tests/threads/schur-2.m2
++@@ -4,4 +4,4 @@
++ S = schurRing(s,3);
++ rep = s_{5};
++ M = {1_S,s_{5},s_{10},s_{15},s_{20},s_{25},s_{30}};
++-for i to 15 do ( stderr << i << endl; schurResolution(rep,M,SyzygyLimit => 3) );
+++for i to 7 do ( stderr << i << endl; schurResolution(rep,M,SyzygyLimit => 3) );
++--- a/M2/Macaulay2/tests/normal/timing-quotient.m2
+++++ b/M2/Macaulay2/tests/normal/timing-quotient.m2
++@@ -221,10 +221,8 @@
++ -- https://github.com/Macaulay2/M2/issues/1804
++ -- https://github.com/Macaulay2/M2/pull/1811
++ -- https://github.com/Macaulay2/M2/pull/1957
++-assert BinaryOperation {symbol <, tim#0, standardSecond}
++ 
++ P=QQ[x,y,z,MonomialOrder=>Lex];
++ d=z^4+z^2*x*y^9+z*x^9*y+x^5*y^5;
++ phi=map(P,P,matrix{{x^13*y^4,x^3*y,x^20*y^6*z}});
++ tim = timing factor(phi(d));
++-assert BinaryOperation {symbol <, tim#0, .05 * standardSecond}
++--- a/M2/Macaulay2/tests/Makefile.test.in
+++++ b/M2/Macaulay2/tests/Makefile.test.in
++@@ -33,7 +33,8 @@
++ LIMIT += ulimit -s $(SLIMIT) ;
++ endif
++ 
++-TESTFILES := $(wildcard $(SRCDIR)/*.m2)
+++PROBLEM_TESTS := $(patsubst %, $(SRCDIR)/%.m2, 000-core CSM.test methods)
+++TESTFILES := $(filter-out $(PROBLEM_TESTS), $(wildcard $(SRCDIR)/*.m2))
++ 
++ RESULTS := $(notdir $(patsubst %.m2, %.out, $(TESTFILES))) \
++         $(notdir $(patsubst %.m2-input, %.out, $(wildcard $(SRCDIR)/*.m2-input)))
++--- a/M2/Macaulay2/tests/slow/plethysms.m2
+++++ b/M2/Macaulay2/tests/slow/plethysms.m2
++@@ -23,8 +23,6 @@
++ G = flagBundle {6,4}
++ (S,Q) = G.Bundles
++ E = exteriorPower_3 S
++-time apply(0 .. 20, i -> chi exteriorPower_i E)
++-assert( oo == (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1) )
++ time integral ( chern_20 E * (chern_1 G.TangentBundle)^4 )
++ assert( oo == 14520000 )
++ 
++--- a/M2/Macaulay2/tests/ComputationsBook/varieties/Makefile.in
+++++ b/M2/Macaulay2/tests/ComputationsBook/varieties/Makefile.in
++@@ -1,15 +1,6 @@
++ # @configure_input@
++ chapter_srcdir = @srcdir@
++ 
++-# it seems that factory gives a different order of factors, depending on whether
++-# we are on a 32 bit machine
++-
++-ifeq "$(shell uname -m)" "i686"
++-EXPECTED = test.out.expected-32
++-endif
++-
++-diff-32:; diff -u @srcdir@/test.out.expected @srcdir@/test.out.expected-32
++-
++ include ../Makefile.chapter
++ 
++ Makefile: Makefile.in; cd ../../../..; ./config.status Macaulay2/tests/ComputationsBook/varieties/Makefile
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0273d79d1bc8765b759cee9592c0aca7b2044a2b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,746 @@@
++Description: Skip package tests that have been known to fail on
++ various architectures.
++Author: Doug Torrance <dtorrance@debian.org>
++Bug: https://github.com/Macaulay2/M2/issues/1064
++Bug: https://github.com/Macaulay2/M2/issues/1392
++Bug: https://github.com/Macaulay2/M2/issues/1456
++Bug: https://github.com/Macaulay2/M2/issues/1463
++Bug: https://github.com/Macaulay2/M2/issues/1539
++Bug: https://github.com/Macaulay2/M2/issues/1563
++Bug: https://github.com/Macaulay2/M2/issues/1579
++Bug: https://github.com/Macaulay2/M2/issues/1581
++Bug: https://github.com/Macaulay2/M2/issues/1697
++Bug: https://github.com/Macaulay2/M2/issues/1707
++Bug: https://github.com/Macaulay2/M2/issues/1728
++Bug: https://github.com/Macaulay2/M2/issues/1742
++Bug: https://github.com/Macaulay2/M2/issues/1745
++Bug: https://github.com/Macaulay2/M2/issues/1746
++Bug: https://github.com/Macaulay2/M2/issues/1747
++Bug: https://github.com/Macaulay2/M2/issues/1903
++Bug: https://github.com/Macaulay2/M2/issues/1968
++Bug: https://github.com/Macaulay2/M2/issues/1984
++Bug: https://github.com/Macaulay2/M2/issues/2119
++Bug: https://github.com/Macaulay2/M2/issues/2162
++Bug: https://github.com/Macaulay2/M2/issues/2183
++Bug: https://github.com/Macaulay2/M2/issues/2205
++Bug: https://github.com/Macaulay2/M2/issues/2206
++Bug: https://github.com/Macaulay2/M2/issues/2319
++Last-Update: 2022-04-28
++
++--- a/M2/Macaulay2/m2/testing.m2
+++++ b/M2/Macaulay2/m2/testing.m2
++@@ -60,6 +60,14 @@
++     if match("no-check-flag", teststring) then (
++      checkmsg("skipping", desc);
++      return true);
+++    if (m := regex("(?<=no-check-architecture:)[^(\\n]*", teststring)) =!= null
+++    then (
+++     badarchs := apply(separate(", ", substring(m#0, teststring)),
+++         s -> replace("^\\s*|\\s*$", "", s));
+++     if member(version#"architecture", badarchs) then (
+++         checkmsg("skipping", desc);
+++         return true));
+++
++     -- TODO: remove this when capture uses ArgQ
++     if usermode === not noinitfile then
++     -- try capturing in the same process
++--- a/M2/Macaulay2/packages/GroebnerWalk.m2
+++++ b/M2/Macaulay2/packages/GroebnerWalk.m2
++@@ -726,6 +726,7 @@
++ ///
++ 
++ TEST /// -- groebnerWalk
+++-- no-check-flag #1563
++ R1 = QQ[x,y,z, MonomialOrder=>Weights=>{1,1,10}]
++ I1 = ideal(y^2-x, z^3-x)
++ R2 = QQ[x,y,z, MonomialOrder=>Weights=>{10,1,1}]
++--- a/M2/Macaulay2/packages/LLLBases.m2
+++++ b/M2/Macaulay2/packages/LLLBases.m2
++@@ -1303,6 +1303,7 @@
++ -- kernelLLL ------
++ -------------------
++ TEST ///
+++-- no-check-flag #1697
++ 
++     time m1 = map(ZZ^10, ZZ^10, (j,i) -> (i+1)^3 * (j+1)^2 + i + j + 2)
++     time m = syz m1
++--- a/M2/Macaulay2/packages/SumsOfSquares.m2
+++++ b/M2/Macaulay2/packages/SumsOfSquares.m2
++@@ -1437,6 +1437,7 @@
++ 
++ --11
++ TEST /// --lowerBound
+++-- no-check-flag #1579
++     debug needsPackage "SumsOfSquares"
++     results := checkLowerBound("CSDP")
++     assert all(results,t->t=!=false);
++--- a/M2/Macaulay2/packages/CoincidentRootLoci/tests.m2
+++++ b/M2/Macaulay2/packages/CoincidentRootLoci/tests.m2
++@@ -180,6 +180,7 @@
++ ///
++ 
++ TEST /// -- singularLocus
+++-- no-check-flag #1581
++ X10 = coincidentRootLocus(toList(10:1),ZZ/101,Variable=>x)
++ A10 = {{},{{10}},{{10}},{{9,1}},{{10}},{{7,3},{8,2},{9,1}},{{8,1,1}},{{10}},{{6,4},{7,3},{9,1}},{{8,2}},{{6,2,2},{6,3,1},{7,2,1},{8,1,1}},{{7,1,1,1}},{},{{5,5},{6,4},{9,1}},{{5,5},{7,3},{8,2}},{{5,4,1},{6,3,1},{8,1,1}},{{5,3,2},{6,2,2},{7,2,1}},{{5,2,2,1},{5,3,1,1},{6,2,1,1},{7,1,1,1}},{{5,5},{6,1,1,1,1}},{{6,4}},{{5,4,1}},{{7,3}},{{4,3,3},{4,4,2},{5,3,2},{5,4,1},{6,3,1},{7,2,1}},{{4,3,3},{4,4,1,1},{5,3,1,1},{7,1,1,1}},{{4,4,2},{6,2,2}},{{4,2,2,2},{4,3,2,1},{4,4,1,1},{5,2,2,1},{6,2,1,1}},{{4,2,2,1,1},{4,3,1,1,1},{4,4,2},{5,2,1,1,1},{6,1,1,1,1}},{{4,4,1,1},{5,1,1,1,1,1}},{{4,3,3}},{{5,3,2}},{{3,3,2,2},{3,3,3,1},{4,3,2,1},{5,3,1,1}},{{3,3,3,1},{4,3,1,1,1}},{{3,3,2,2},{4,2,2,2},{5,2,2,1}},{{3,2,2,2,1},{3,3,2,1,1},{3,3,2,2},{4,2,2,1,1},{5,2,1,1,1}},{{3,2,2,1,1,1},{3,3,1,1,1,1},{3,3,2,1,1},{4,2,1,1,1,1},{5,1,1,1,1,1}},{{3,3,1,1,1,1},{4,1,1,1,1,1,1}},{},{{2,2,2,2,2},{3,2,2,2,1}},{{2,2,2,2,1,1},{3,2,2,1,1,1},{4,4,2}},{{2,2,2,1,1,1,1},{3,2,1,1,1,1,1},{4,4,1,1}},{{2,2,1,1,1,1,1,1},{3,1,1,1,1,1,1,1}},{}}
++ assert(sort apply(apply(subsets X10,singularLocus),L -> sort apply(L,partition)) === sort apply(A10,sort))
++--- a/M2/Macaulay2/packages/Matroids.m2
+++++ b/M2/Macaulay2/packages/Matroids.m2
++@@ -3890,6 +3890,7 @@
++ ///\r
++ \r
++ TEST ///\r
+++-- no-check-flag #1392\r
++ M0 = matroid graph({{a,b},{b,c},{c,d},{d,e},{e,f},{f,g},{f,h},{c,h},{c,f},{a,g},{d,g}})\r
++ M1 = matroid graph({{a,b},{b,c},{c,d},{d,e},{e,f},{f,g},{f,h},{c,h},{c,f},{a,g},{a,h}})\r
++ T = ZZ[x,y]\r
++--- a/M2/Macaulay2/packages/VersalDeformations.m2
+++++ b/M2/Macaulay2/packages/VersalDeformations.m2
++@@ -1366,6 +1366,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1392
++ needsPackage "Truncations"
++ S = ZZ/32003[a..d]
++ I = monomialIdeal(a^2,a*b,b^4,a*c^3)
++--- a/M2/Macaulay2/packages/DeterminantalRepresentations.m2
+++++ b/M2/Macaulay2/packages/DeterminantalRepresentations.m2
++@@ -1305,6 +1305,7 @@
++ -- TESTS
++ 
++ TEST /// -- Quadratic case: over QQ, RR, CC
+++-- no-check-flag #1746
++ S = QQ[x1,x2,x3]
++ f = 1 - 8*x1*x2 - 4*x1*x3 - 100*x2^2 - 12*x2*x3 - x3^2 - 5*x1^2
++ M = first detRep(f, Tolerance => 1e-10)
++@@ -1517,6 +1518,7 @@
++ ///
++ 
++ TEST /// -- cholesky, randomPSD
+++-- no-check-flag #1745
++ eps = 1e-15
++ A = randomPSD 5
++ E = eigenvectors(A, Hermitian => true)
++--- a/M2/Macaulay2/packages/Dmodules/DHom.m2
+++++ b/M2/Macaulay2/packages/Dmodules/DHom.m2
++@@ -871,6 +871,7 @@
++ 
++ 
++ TEST ///
+++-- no-check-flag #1747
++ -- TESTS TO WRITE (exported symbols);
++ --    PolyExt Ideal
++ --    PolyExt Module
++--- a/M2/Macaulay2/packages/MinimalPrimes/tests.m2
+++++ b/M2/Macaulay2/packages/MinimalPrimes/tests.m2
++@@ -72,6 +72,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1064
++    R = QQ[x,r,v,u,b, MonomialOrder=>{Lex=>5}]
++    I = ideal(b^3-7*b^2+14*b-7,r^2-u*r+(-2*b^2+9*b-5)*u^2+b^2-4*b,x^2+(b-2)*x*r+r^2+b^2-4*b)
++    elapsedTime C = minprimes(I, Verbosity=>2);
++@@ -95,6 +96,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1064
++    -- Over a tower of rings
++    R = QQ[b][u][x,r,v, MonomialOrder=>{Lex=>3}]
++    I = ideal(b^3-7*b^2+14*b-7,r^2-u*r+(-2*b^2+9*b-5)*u^2+b^2-4*b,x^2+(b-2)*x*r+r^2+b^2-4*b)
++@@ -638,6 +640,7 @@
++ ///
++ 
++ SIMPLETEST ///
+++-- no-check-flag #1742
++   needsPackage "MinimalPrimes"
++   R = QQ[vars(0..8)];
++   I = ideal(b*d+a*e,c*d+a*f,c*e+b*f,b*g+a*h,c*g+a*i,c*h+b*i,e*g+d*h,f*g+d*i,f*h+e*i)
++@@ -648,6 +651,7 @@
++ ///
++ 
++ SIMPLETEST ///
+++-- no-check-flag #1742
++   needsPackage "MinimalPrimes"
++   R = QQ[vars(0..8),MonomialOrder=>Lex];
++   I = ideal(b*d+a*e,c*d+a*f,c*e+b*f,b*g+a*h,c*g+a*i,c*h+b*i,e*g+d*h,f*g+d*i,f*h+e*i)
++@@ -1604,6 +1608,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1064
++   -- this test occurs as a crash in github issue #190.
++   -- seems to work after recent changes to factory.
++   -- it might be too long for a test...
++@@ -1696,6 +1701,7 @@
++ ///
++ 
++ TEST ///
+++  -- no-check-flag #1742
++   -- permanents!
++   R = ZZ/32003[r,s,t,u,v,w,x,y,z]
++   I = ideal(
++--- a/M2/Macaulay2/packages/PrimaryDecomposition/primaryDecomposition-test.m2
+++++ b/M2/Macaulay2/packages/PrimaryDecomposition/primaryDecomposition-test.m2
++@@ -1,3 +1,4 @@
+++-- no-check-flag #1742
++ -- this example is provided by Amelia Taylor
++ 
++ k = QQ
++--- a/M2/Macaulay2/packages/RationalMaps.m2
+++++ b/M2/Macaulay2/packages/RationalMaps.m2
++@@ -2281,6 +2281,7 @@
++      -------------------------------------
++ 
++ TEST /// --test #23
+++-- no-check-flag #1742
++     -- Let's find the inverse of the projection map from
++     -- the blow up of P^2 to P^2
++ 
++--- a/M2/Macaulay2/packages/Divisor.m2
+++++ b/M2/Macaulay2/packages/Divisor.m2
++@@ -4324,6 +4324,7 @@
++ ///
++ 
++ TEST /// --check #11, test functoriality for a finite map
+++-- no-check-flag #1742
++ R = QQ[x,y,z,w]/ideal(z^2-y*w,y*z-x*w,y^2-x*z);
++ T = QQ[a,b];
++ h = map(T, R, {a^3, a^2*b, a*b^2, b^3}); --this is the natural inclusion map
++--- a/M2/Macaulay2/packages/Topcom.m2
+++++ b/M2/Macaulay2/packages/Topcom.m2
++@@ -366,6 +366,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1707
++ -*
++   restart
++   debug needsPackage "Topcom"
++@@ -379,6 +380,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1707
++   needsPackage "Topcom"
++   -- test of isRegularTriangulation
++   A = transpose matrix {{0,3},{0,1},{-1,-1},{1,-1},{-4,-2},{4,-2}}
++@@ -438,6 +440,7 @@
++ ///
++ 
++ TEST ///  
+++-- no-check-flag #1707
++   needsPackage "Topcom"
++   needsPackage "Polyhedra"
++   
++--- a/M2/Macaulay2/packages/DiffAlg.m2
+++++ b/M2/Macaulay2/packages/DiffAlg.m2
++@@ -1309,6 +1309,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1728
++ w = random newForm(3,2,2,"a")
++ h = newForm(3,1,1,"b")
++ L = genKer(w^(diff h) + h ^ (diff w), h)
++@@ -1316,6 +1317,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flags #1728
++ w = random newForm(3,2,2,"a")
++ h = newForm(3,1,1,"b")
++ L = genKer(w^(diff h) + h ^ (diff w), h)
++--- a/M2/Macaulay2/packages/AssociativeAlgebras/tests.m2
+++++ b/M2/Macaulay2/packages/AssociativeAlgebras/tests.m2
++@@ -727,6 +727,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-architecture: powerpc64le (#2119)
++ -*
++   restart
++   debug needsPackage "AssociativeAlgebras"
++@@ -1134,6 +1135,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1903
++ -- testing kernels
++ -*
++   restart
++@@ -1171,6 +1173,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-architecture: powerpc64le (#2119)
++ -- testing kernels
++ -*
++   restart
++--- a/M2/Macaulay2/packages/RunExternalM2.m2
+++++ b/M2/Macaulay2/packages/RunExternalM2.m2
++@@ -1049,6 +1049,7 @@
++ 
++ -- Check that ulimits and statistics work
++ TEST ///
+++-- no-check-flag #1968
++ fn=temporaryFileName()|".m2";
++ fn<<////
++ spin = (x,t) -> (
++--- a/M2/Macaulay2/packages/SuperLinearAlgebra.m2
+++++ b/M2/Macaulay2/packages/SuperLinearAlgebra.m2
++@@ -219,6 +219,7 @@
++ )
++ 
++ TEST///
+++-- no-check-flag #1984
++ R1 = QQ[x_0..x_3];
++ R2 = QQ[z_0..z_2];
++ R = superRing(R1, R2);
++@@ -271,6 +272,7 @@
++ )
++ 
++ TEST ///
+++-- no-check-flag #1984
++ R1 = QQ[x_0..x_3];
++ R2 = QQ[z_0..z_2];
++ R = superRing(R1, R2);
++--- a/M2/Macaulay2/packages/MultiprojectiveVarieties.m2
+++++ b/M2/Macaulay2/packages/MultiprojectiveVarieties.m2
++@@ -3645,6 +3645,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2206
++ R = ZZ/300007[x_0..x_3];
++ C3 = ideal(x_2^2-x_1*x_3,x_1*x_2-x_0*x_3,x_1^2-x_0*x_2);
++ C2 = ideal(x_1^2-x_0*x_2,x_3);
++@@ -3665,6 +3666,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2162
++ ringP4 := ZZ/300007[a..e];
++ f = rationalMap minors(2,matrix {{a,b,c,d},{b,c,d,e}});
++ g = rationalMap(minors(2,matrix{{a,b,c},{b,c,d}}) + ideal e);
++@@ -3695,6 +3697,7 @@
++ ///
++ 
++ TEST///
+++-- no-check-flag #2162
++ Phi = last graph rationalMap projectiveVariety({1},{4},ZZ/300007);
++ assert(multidegree(,Phi) == multidegree Phi)
++ assert(projectiveDegrees Phi == multidegree Phi)
++@@ -3738,6 +3741,7 @@
++ ///
++ 
++ TEST /// -- product must be strict associative
+++-- no-check-flag #1742
++ K = ZZ/333331;
++ X = projectiveVariety({1,1},{2,3},K);
++ Y = random({3},projectiveVariety(2,2,K));
++@@ -3862,6 +3866,7 @@
++ ///
++ 
++ TEST /// -- parametrizations 2
+++-- no-check-flag #1742
++ checkInverseParametrization = X -> (
++     f := parametrize X;
++     <<f<<endl;
++@@ -3907,6 +3912,7 @@
++ ///
++ 
++ TEST /// -- parametrizations 3
+++-- no-check-flag #1539
++ needsPackage "SpecialFanoFourfolds";
++ debug SpecialFanoFourfolds;
++ checkInverseParametrization = X -> (
++--- a/M2/Macaulay2/packages/SimplicialDecomposability.m2
+++++ b/M2/Macaulay2/packages/SimplicialDecomposability.m2
++@@ -1025,6 +1025,7 @@
++ 
++ -- Tests isDecomposable: see Examples V6F10-{1,6,7} in [MT].
++ TEST ///
+++-- no-check-flag #1742
++ R = QQ[a..f];
++ S1 = simplicialComplex {a*b*c, a*b*d, a*b*f, a*c*d, a*c*e, b*d*e, b*e*f, c*d*f, c*e*f, d*e*f};
++ S6 = simplicialComplex {a*b*c, a*b*d, a*b*e, a*c*d, a*c*f, b*d*e, b*e*f, c*d*f, c*e*f, d*e*f};
++--- a/M2/Macaulay2/packages/MultiGradedRationalMap.m2
+++++ b/M2/Macaulay2/packages/MultiGradedRationalMap.m2
++@@ -1272,6 +1272,7 @@
++ 
++ 
++ TEST ///
+++-- no-check-flag #1742
++      R = QQ[x,y,z]
++      A = matrix{ {x, x^5 + y^5},
++                  {-y, y^5 + z*x^2*y^2},
++--- a/M2/Macaulay2/packages/SpecialFanoFourfolds.m2
+++++ b/M2/Macaulay2/packages/SpecialFanoFourfolds.m2
++@@ -2821,6 +2821,7 @@
++ ------------------------------------------------------------------------
++ 
++ TEST /// -- Test 0 -- cubic fourfolds from strings: describe, discriminant, parameterCount
+++-- no-check-flag #2162
++ strIn := {"quintic del Pezzo surface", "quartic scroll", "3-nodal septic scroll", "one-nodal septic del Pezzo surface", "general cubic 4-fold of discriminant 38", "general cubic 4-fold of discriminant 42", "cubic 4-fold of discriminant 48"};
++ strOut := "Special cubic fourfold of discriminant 14
++ containing a (smooth) surface of degree 5 and sectional genus 1
++@@ -2856,6 +2857,7 @@
++ ///
++ 
++ TEST /// -- Test 1 (1/2) -- GM fourfolds from strings: describe, discriminant, parameterCount, toGrass
+++-- no-check-flag #1539
++ strIn := {"sigma-plane", "rho-plane", "tau-quadric"};
++ strOut := "Special Gushel-Mukai fourfold of discriminant 10('')
++ containing a surface in PP^8 of degree 1 and sectional genus 0
++@@ -2887,6 +2889,7 @@
++ ///
++ 
++ TEST /// -- Test 2 (2/2) -- GM fourfolds from strings: describe, discriminant, parameterCount, toGrass
+++-- no-check-flag #1539
++ strIn := {"cubic scroll", "quintic del Pezzo surface", "general GM 4-fold of discriminant 20"};
++ strOut := "Special Gushel-Mukai fourfold of discriminant 12
++ containing a surface in PP^8 of degree 3 and sectional genus 0
++@@ -2919,6 +2922,7 @@
++ ///
++ 
++ TEST /// -- Test 3 -- 21 examples from GMtables
+++-- no-check-flag #1539
++ X = for i from 1 to 21 list (
++    A = GMtables(i,ZZ/65521);
++    time specialGushelMukaiFourfold((rationalMap(ideal A_0,Dominant=>2)) ideal A_1,InputCheck=>0)
++@@ -2931,6 +2935,7 @@
++ ///
++ 
++ TEST /// -- Test 4 -- parametrizations of Fano fourfolds
+++-- no-check-flag #1539
++ setRandomSeed 0;
++ for dg in {(2,0),(3,1),(4,1),(5,1),(4,3),(6,4),(8,5),(10,6),(12,7),(14,8),(16,9),(18,10)} do (
++     <<"(d,g) = "<<dg<<endl;
++@@ -2949,6 +2954,7 @@
++ ///
++ 
++ TEST /// -- Test 5 -- rational and unirational parametrizations
+++-- no-check-flag #1742
++ X = specialCubicFourfold surface({3,4},ZZ/333331);
++ time h = parametrize X;
++ assert(degree(h,Strategy=>"random point") == 1 and target h === X and ambient source h == source h and h#"inverse" =!= null);
++@@ -2965,20 +2971,24 @@
++ ///
++ 
++ TEST /// -- Test 6 (1/3) -- associated K3 surfaces
+++-- no-check-flag #1539
++ f = last associatedK3surface(specialCubicFourfold "quartic scroll",Verbose=>true);
++ assert(f#"image" =!= null and dim image f == 2 and degree image f == 14 and dim target f == 8)
++ ///
++ 
++ TEST /// -- Test 7 (2/3) -- associated K3 surfaces
+++-- no-check-flag #1539
++ g = last associatedK3surface(specialCubicFourfold "quintic del Pezzo surface",Verbose=>true);
++ assert(g#"image" =!= null and dim image g == 2 and degree image g == 14 and dim target g == 8)
++ ///
++ 
++ TEST /// -- Test 8 (3/3) -- associated K3 surfaces
+++-- no-check-flag #2162
++ associatedK3surface(specialGushelMukaiFourfold "tau-quadric",Verbose=>true);
++ ///
++ 
++ TEST /// -- Test 9 -- simple tests on schubertCycle
+++-- no-check-flag #1539
++ debug MultiprojectiveVarieties;
++ S = schubertCycle({2,2},GG(ZZ/33331,1,4),Standard=>true)
++ assert(idealOfSubvariety S == idealOfSubvariety tangentialChowForm(projectiveVariety ideal((Grass(0,4,ZZ/33331,Variable=>"x"))_0,(Grass(0,4,ZZ/33331,Variable=>"x"))_1),1,1))
++@@ -2993,6 +3003,7 @@
++ ///
++ 
++ TEST /// -- Test 11 (2/2) -- detectCongruence
+++-- no-check-flag #1539
++ use Grass(1,4,ZZ/33331);
++ S31 = ideal(p_(3,4),p_(2,4),p_(1,4),p_(0,4),p_(2,3),p_(1,3),p_(1,2));
++ Y = specialGushelMukaiFourfold(S31,InputCheck=>0);
++@@ -3003,6 +3014,7 @@
++ ///
++ 
++ TEST /// -- Test 12 (1/2) -- GM fourfolds containing nodal surfaces
+++-- no-check-flag #2162
++ debug SpecialFanoFourfolds;
++ K = ZZ/65521;
++ X = makeGMfromCurveOnSurfaceInP6((surface({2,0,0,0},K,ambient=>6)).cache#"takeCurve" (1,(0,0,0)),InputCheck=>0);
++@@ -3014,6 +3026,7 @@
++ ///
++ 
++ TEST /// -- Test 13 (2/2) -- GM fourfolds containing nodal surfaces
+++-- no-check-flag #1742
++ X = specialGushelMukaiFourfold("nodal surface of degree 11 and genus 3 with class (7,4)",ZZ/33331,InputCheck=>0);
++ assert(discriminant X == 26 and last cycleClass X == (7,4) and degree surface X == 11 and sectionalGenus surface X == 3);
++ Y = specialGushelMukaiFourfold("nodal D44",ZZ/33331,InputCheck=>0);
++@@ -3021,6 +3034,7 @@
++ ///
++ 
++ TEST /// -- Test 14 -- gluing scrolls along curves
+++-- no-check-flag #1742
++ debug SpecialFanoFourfolds
++ S = surface({3,4,0,0},ambient=>6);
++ for a in {(1,0),(2,0),(3,0),(4,0),(5,0),(5,1)} do (
++@@ -3045,6 +3059,7 @@
++ ///
++ 
++ TEST /// -- Test 15
+++-- no-check-flag #1539
++ debug SpecialFanoFourfolds
++ L = takeGMsfromSurfaceInP6(surface({3,1,1,0},ambient=>6),InputCheck=>0,"Gluing"=>"cubic scroll",Degrees=>hashTable{1=>(1,1),2=>(19,infinity),3=>(0,0)});
++ X = first L;
++--- a/M2/Macaulay2/packages/VectorFields.m2
+++++ b/M2/Macaulay2/packages/VectorFields.m2
++@@ -2858,6 +2858,7 @@
++ 
++ -- isHolonomic, isHHolonomic
++ TEST ///
+++-- no-check-flag #1742
++ R=QQ[a,b,c];
++ 
++ -- some special cases
++--- a/M2/Macaulay2/packages/NumericalImplicitization/tests.m2
+++++ b/M2/Macaulay2/packages/NumericalImplicitization/tests.m2
++@@ -37,6 +37,7 @@
++ ///
++ 
++ TEST /// -- Grassmannian Gr(3, 5) = G(P^2,P^4)
+++-- no-check-flag #1456
++ setRandomSeed 0
++ (k, n) = (3,5)
++ R = CC[x_(1,1)..x_(k,n)]
++@@ -137,6 +138,7 @@
++ ///
++ 
++ TEST /// -- Twisted cubic projections
+++-- no-check-flag #2183
++ R = CC[x_0..x_3]
++ I = monomialCurveIdeal(R, {1,2,3})
++ F1 = random(R^1, R^{3:-1})
++--- a/M2/Macaulay2/packages/EngineTests/Res.f4.m2
+++++ b/M2/Macaulay2/packages/EngineTests/Res.f4.m2
++@@ -553,6 +553,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2205
++   setRandomSeed "10"
++   needsPackage "BGG"
++   S = ZZ/101[x_0..x_5] -- P^5
++--- a/M2/Macaulay2/packages/CharacteristicClasses.m2
+++++ b/M2/Macaulay2/packages/CharacteristicClasses.m2
++@@ -2488,6 +2488,7 @@
++ 
++ TEST ///
++ -*
+++   no-check-flag #2162
++    restart
++    needsPackage "CharacteristicClasses"
++ *-
++@@ -2501,6 +2502,7 @@
++ 
++ TEST ///
++ -*
+++   no-check-flag #2162
++    restart
++    needsPackage "CharacteristicClasses"
++ *-
++@@ -2521,6 +2523,7 @@
++ 
++ TEST ///
++ -*
+++   no-check-flag #2162
++    restart
++    needsPackage "CharacteristicClasses"
++    installPackage "CharacteristicClasses"
++--- a/M2/Macaulay2/packages/EngineTests/GB.Test.Mathic.m2
+++++ b/M2/Macaulay2/packages/EngineTests/GB.Test.Mathic.m2
++@@ -159,6 +159,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2162
++   R1 = ZZ/32003[w,x,y,z,MonomialOrder => Lex]
++   J1 = ideal"
++     -2w2+9wx+8x2+9wy+9xy+6y2-7wz-3xz-7yz-6z2-4w+8x+4y+8z+2,
++--- a/M2/Macaulay2/packages/SegreClasses.m2
+++++ b/M2/Macaulay2/packages/SegreClasses.m2
++@@ -941,6 +941,7 @@
++ 
++ 
++ TEST ///
+++-- no-check-flag #2162
++ -- union of coordinate axes in PP3 (diagonal)
++ -*
++ restart
++@@ -959,6 +960,7 @@
++ 
++ TEST ///
++ -*
+++   no-check-flag #2162
++ restart
++ needsPackage "SegreClasses"
++ *-
++@@ -972,6 +974,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2162
++ -- union of coordinate axes in PP3 (diagonal)
++ -*
++ restart
++@@ -991,6 +994,7 @@
++ 
++ TEST ///
++ -*
+++no-check-flag #2162
++ restart
++ needsPackage "SegreClasses"
++ *-
++@@ -1024,6 +1028,7 @@
++ 
++ TEST ///
++ -*
+++no-check-flag #2162
++ restart
++ needsPackage "SegreClasses"
++ *-
++@@ -1060,6 +1065,7 @@
++ 
++ TEST ///
++ -*
+++no-check-flag #2162
++ restart
++ needsPackage "SegreClasses"
++ *-
++@@ -1080,6 +1086,7 @@
++ 
++ TEST ///
++ -*
+++no-check-flag #2162
++ restart
++ needsPackage "SegreClasses"
++ *-
++@@ -1095,6 +1102,7 @@
++ 
++ TEST ///
++ -*
+++no-check-flag #2162
++ restart
++ needsPackage "SegreClasses"
++ *-
++@@ -1111,6 +1119,7 @@
++ 
++ TEST ///
++ -*
+++no-check-flag #2162
++ restart
++ needsPackage "SegreClasses"
++ *-
++--- a/M2/Macaulay2/packages/SparseResultants.m2
+++++ b/M2/Macaulay2/packages/SparseResultants.m2
++@@ -1736,6 +1736,7 @@
++ ///
++ 
++ TEST /// -- Corollary 2.2, p. 256 [GKZ]
+++-- no-check-flag #2162
++ property = (M) -> (
++     M = transpose matrix M;
++     K := ZZ/33331; n := numRows M;
++--- a/M2/Macaulay2/packages/IntegralClosure.m2
+++++ b/M2/Macaulay2/packages/IntegralClosure.m2
++@@ -2820,6 +2820,7 @@
++ --huneke2
++ TEST ///
++ -*
+++  no-check-flag #2162
++   restart
++   loadPackage("IntegralClosure", Reload => true)
++ *-
++--- a/M2/Macaulay2/packages/FunctionFieldDesingularization.m2
+++++ b/M2/Macaulay2/packages/FunctionFieldDesingularization.m2
++@@ -749,6 +749,7 @@
++      assert(#tree#0==8)
++ ///
++ TEST ///
+++-- no-check-flag #1742
++      fout := openOut "/dev/null"
++         F := ZZ/2
++         d := 3
++--- a/M2/Macaulay2/packages/Binomials.m2
+++++ b/M2/Macaulay2/packages/Binomials.m2
++@@ -1923,6 +1923,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #1742
++ R = QQ[c,d,x,y,z,w];
++ I = ideal(x^3*d^2*w-c*z^2,x^5*y^2-w^7,w^3-z^8,z^2-d*w*x^7)
++ time bpd = binomialPrimaryDecomposition (I,Verbose=>false);
++--- a/M2/Macaulay2/packages/PrimaryDecomposition/tests.m2
+++++ b/M2/Macaulay2/packages/PrimaryDecomposition/tests.m2
++@@ -68,6 +68,7 @@
++     )
++ 
++ TEST /// -- testing strategies
+++-- no-check-flag #1742
++   importFrom_PrimaryDecomposition {"testResult"}
++   w,x,y,z
++   scan({  QQ, ZZ/3, ZZ/2, ZZ/101, ZZ/32003}, k -> (
++--- a/M2/Macaulay2/packages/TestIdeals/CompatiblySplitTest.m2
+++++ b/M2/Macaulay2/packages/TestIdeals/CompatiblySplitTest.m2
++@@ -7,6 +7,7 @@
++ ///
++ 
++ TEST /// 
+++-- no-check-flag #1742
++ R=ZZ/2[x_{21},x_{31},x_{32},x_{41},x_{42},x_{43}];
++ u=x_{41}*(x_{31}*x_{42}-x_{41}*x_{32})*(x_{41}-x_{21}*x_{42}-x_{31}*x_{43}+x_{21}*x_{32}*x_{43});
++ time CompatibleIdeals=compatibleIdeals(u);
++--- a/M2/Macaulay2/packages/K3Surfaces.m2
+++++ b/M2/Macaulay2/packages/K3Surfaces.m2
++@@ -1033,6 +1033,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2319
++ for g from 3 to 12 do (
++     for d from 3 to 5 do (
++         <<"(g,d,n) = "<<(g,d,0)<<endl;
++@@ -1079,6 +1080,7 @@
++ ///
++ 
++ TEST /// -- randomMukaiThreefoldContainingLine
+++-- no-check-flag #2319
++ debug K3Surfaces;
++ K = ZZ/333331;
++ setRandomSeed 123456789
++@@ -1095,6 +1097,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2319
++ for g from 3 to 7 do (
++     setRandomSeed 123456789;
++     <<"(g,d,n) = "<<(g,2,-2)<<endl;
++@@ -1109,6 +1112,7 @@
++ ///
++ 
++ TEST ///
+++-- no-check-flag #2319
++ for g in {3,4,5,6,7,8,9} do (<<"g = "<<g<<endl; time K3 g); 
++ ///;
++ 
++--- a/M2/Macaulay2/packages/ThreadedGB.m2
+++++ b/M2/Macaulay2/packages/ThreadedGB.m2
++@@ -587,6 +587,7 @@
++     assert (x^2*z == H#"(0-1)")
++ ///;
++ 
+++-- no-check-architecture: powerpc64le (#1463)
++ TEST /// -- consistent with gens gb 
++     R = ZZ/101[x,y,z, MonomialOrder=>GLex];
++     I = ideal(x - y, y - z, -x + z);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a35b72ba3013c03780658dfdb073d744d74ffadc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,107 @@@
++Description: Add support for TBB 2021.
++Author: Jay Yang <yangj306@mcmaster.ca>
++Forwarded: https://github.com/Macaulay2/M2/pull/2367
++
++--- a/M2/configure.ac
+++++ b/M2/configure.ac
++@@ -362,8 +362,10 @@
++    AC_LANG(C++)
++    AC_CHECK_HEADER(tbb/tbb.h,
++       [AC_SEARCH_LIBS(TBB_runtime_interface_version,"tbb",
++-      LIBTBB=$ac_cv_search_TBB_runtime_interface_version
++-      HAVE_LIBTBB=yes,
+++      [LIBTBB=$ac_cv_search_TBB_runtime_interface_version
+++          HAVE_LIBTBB=yes
+++          AC_CHECK_HEADER(tbb/version.h,[AC_DEFINE(HAVE_TBB2021,[],[TBB version at least 2021])])
+++         ],
++       [AC_MSG_ERROR([tbb library not found])])],
++        [AC_MSG_ERROR([tbb include file (tbb.h) not found])])
++    AC_LANG(C)
++--- a/M2/include/M2/config.h.cmake
+++++ b/M2/include/M2/config.h.cmake
++@@ -350,4 +350,6 @@
++ /* Define to `unsigned int' if <sys/types.h> does not define. */
++ #cmakedefine size_t ${CMAKE_HOST_SYSTEM}
++ 
+++#cmakedefine HAVE_TBB2021
+++
++ #endif /* _M2_CONFIG_H */
++--- a/M2/Macaulay2/d/version.dd
+++++ b/M2/Macaulay2/d/version.dd
++@@ -61,13 +61,12 @@
++    #include <givaro/givconfig.h>
++    Givaro::GivaroMain givaroMain;
++ 
++-   /* TODO - fix conditionals once TBB 2021 support is added (#2105) */
++-   #if 1 /* TBB 2020 */
+++   #ifdef HAVE_TBB2021
+++     #include <tbb/version.h>
+++   #else /* TBB 2020 */
++      #include <tbb/tbb_stddef.h>
++      #define TBB_VERSION_STRING \\
++        (stringize(TBB_VERSION_MAJOR) \".\" stringize(TBB_VERSION_MINOR))
++-   #else /* TBB 2021 */
++-     #include <tbb/version.h>
++    #endif
++ 
++    #include <Eigen/Core>
++--- a/M2/Macaulay2/e/NCAlgebras/NCF4.cpp
+++++ b/M2/Macaulay2/e/NCAlgebras/NCF4.cpp
++@@ -529,6 +529,17 @@
++   // can't do this loop as a range-based for loop since we are adding to it
++   // during the for loop
++   // process each element in mReducersTodo
+++#ifdef HAVE_TBB2021
+++  tbb::parallel_for_each(mReducersTodo.begin(), mReducersTodo.end(),
+++      [&](const PreRow& prerow, PreRowFeeder& feeder)
+++      {
+++        auto& data = threadData.local();
+++        processPreRow(prerow,
+++                      data.rowsVector,
+++                      *data.memoryBlock,
+++                      &feeder);
+++      });
+++#else /*TBB 2020*/
++   tbb::parallel_do(mReducersTodo.begin(), mReducersTodo.end(),
++       [&](const PreRow& prerow, PreRowFeeder& feeder)
++       {
++@@ -538,6 +549,7 @@
++                       *data.memoryBlock,
++                       &feeder);
++       });
+++#endif /* HAVE_TBB2021 */
++ 
++   // combine the thread local rows into mRows
++   for (const auto& data : threadData)
++--- a/M2/Macaulay2/e/NCAlgebras/NCF4.hpp
+++++ b/M2/Macaulay2/e/NCAlgebras/NCF4.hpp
++@@ -1,9 +1,15 @@
++ #ifndef __nc_f4_hpp__
++ #define __nc_f4_hpp__
++ 
+++#include "M2/config.h"
+++
++ #include <tbb/queuing_mutex.h>                // for queuing_mutex
++ #include <tbb/null_mutex.h>                   // for null_mutex
++-#include <tbb/parallel_do.h>                  // for parallel_do_feeder
+++#ifdef HAVE_TBB2021
+++#include <tbb/parallel_for_each.h>                 // for feeder
+++#else /*TBB 2020*/
+++#include <tbb/parallel_do.h>                 // for parallel_do_feeder
+++#endif /*HAVE_TBB2021*/
++ #include <tbb/concurrent_unordered_map.h>     // for concurrent_unordered_map
++ //#include <tbb/concurrent_vector.h>          // for concurrent_vector (no longer needed)
++ 
++@@ -86,8 +92,11 @@
++   // unfortunately we must use the GC allocator here for now
++   using RowsVector = std::vector<Row,gc_allocator<Row>>;
++   //using RowsVector = tbb::concurrent_vector<Row>;
++-
+++#ifdef HAVE_TBB2021
+++  using PreRowFeeder = tbb::feeder<PreRow>;
+++#else /* TBB 2020 */
++   using PreRowFeeder = tbb::parallel_do_feeder<PreRow>;
+++#endif /* HAVE_TBB2021 */
++   // The pair in this unordered_map is (i,j) where:
++   //    i is the column number
++   //    j is the row that reduces it
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b5eea6305289f633ce0d9fdfd57a82ae1377b016
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18 @@@
++Description: Set AuxiliaryFiles and UseCachedExampleOutput options to
++ true for several packages whose examples are cached because
++ generating them has been known to cause build failures on various
++ architectures.  See debian/scripts/generate-examples.m2.
++Author: Doug Torrance <dtorrance@debian.org>
++Forwarded: not-needed
++Last-Update: 2021-02-20
++
++--- a/M2/Macaulay2/packages/Macaulay2Doc.m2
+++++ b/M2/Macaulay2/packages/Macaulay2Doc.m2
++@@ -6,6 +6,7 @@
++ newPackage ("Macaulay2Doc",
++      InfoDirSection => "Macaulay2 and its packages", 
++      AuxiliaryFiles => true,
+++     UseCachedExampleOutput => true,
++      Headline => "Macaulay2 documentation", 
++      Authors => {
++        {Name => "Daniel R. Grayson", Email => "dan@math.uiuc.edu", HomePage => "http://www.math.uiuc.edu/~dan/"},
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0aa396f63c9f0393b05c1d13a34c62185651a8cc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,56 @@@
++Description: Modifications to work with dh_elpa.
++ * Strip down setupEmacs() function.  We only set f12 as a global key
++   to start Macaulay2 inside Emacs.  This also strips (load "M2-init")
++   from a user's existing .emacs-Macaulay2 file, which would cause
++   errors if they haven't installed elpa-macaulay2.  We also warn the
++   user if elpa-macaulay2 isn't installed.
++ * Fix path to M2-emacs-help.txt in documentation.
++Author: Doug Torrance <dtorrance@debian.org>
++Forwarded: not-needed
++Last-Update: 2022-02-08
++
++--- a/M2/Macaulay2/m2/files.m2
+++++ b/M2/Macaulay2/m2/files.m2
++@@ -387,12 +387,6 @@
++ ///
++ 
++ dotemacsFix0 = ///
++-;; this version will give an error if M2-init.el is not found:
++-(load "M2-init")
++-
++-;; this version will not give an error if M2-init.el is not found:
++-;(load "M2-init" t)
++-
++ ; You may comment out the following line with an initial semicolon if you 
++ ; want to use your f12 key for something else.  However, this action
++ ; will be undone the next time you run setup() or setupEmacs().
++@@ -474,10 +468,15 @@
++ setupEmacs = method()
++ setup = method()
++ mungeEmacs = () -> (
++-     dotemacsFix = concatenate(emacsHeader, apply(emacsfixes, (var,dir,templ) -> fix(var,dir,"",templ)), dotemacsFix0);
+++     dotemacsFix = concatenate(emacsHeader, dotemacsFix0);
++      supplantStringFile(dotemacsFix,"~/"|M2emacs,false);
++-     mungeFile("~/"|".emacs", ";; Macaulay 2 start", ";; Macaulay 2 end", M2emacsRead )
++-     )
+++     ret := mungeFile("~/"|".emacs", ";; Macaulay 2 start", ";; Macaulay 2 end", M2emacsRead );
+++     if run("dpkg -s elpa-macaulay2 2> /dev/null | " |
+++       "grep -q \"^Status:.* installed\"") != 0 then
+++       stderr << "--warning: you must run \"apt install elpa-macaulay2\" "
+++            << "as root in order to use" << endl
+++            <<  "  Macaulay2 with Emacs." << endl;
+++     ret)
++ prelim := () -> (
++      promptUser = true;
++      if prefixDirectory === null then error "can't determine Macaulay 2 prefix (prefixDirectory not set)";
++--- a/M2/Macaulay2/packages/Macaulay2Doc/ov_getting_started.m2
+++++ b/M2/Macaulay2/packages/Macaulay2Doc/ov_getting_started.m2
++@@ -926,7 +926,7 @@
++      It also provides for dynamic completion of symbols in the language.",
++      PARA{},
++      "There is an ASCII version of this section of the documentation distributed
++-     in the file ", TT (Layout#1#"emacs" | "M2-emacs-help.txt"), ". It might be useful for you to visit
+++     in the file ", TT "/usr/share/doc/elpa-macaulay2/M2-emacs-help.txt.gz", ". It might be useful for you to visit
++      that file with emacs now, thereby avoiding having to cut and paste bits of
++      text into emacs buffers for the deomonstrations below.",
++      PARA{},
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1d908ced3e4146a4f0851d555ac817c4ad18d4cf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,170 @@@
++Description: Link against mathicgb and friends as shared libraries again.
++Author: Doug Torrance <dtorrance@debian.org>
++Forwarded: TODO
++Last-Update: 2021-07-13
++
++--- a/M2/Macaulay2/e/Makefile.files
+++++ b/M2/Macaulay2/e/Makefile.files
++@@ -26,40 +26,6 @@
++      NCResolutions/nc-res-computation \
++      Polynomial \
++      monomial-collection \
++-     mathicgb/mathicgb/CFile \
++-     mathicgb/mathicgb/LogDomain \
++-     mathicgb/mathicgb/LogDomainSet \
++-     mathicgb/mathicgb/PolyRing \
++-     mathicgb/mathicgb/Basis \
++-     mathicgb/mathicgb/MonoLookup \
++-     mathicgb/mathicgb/PolyBasis \
++-     mathicgb/mathicgb/SparseMatrix \
++-     mathicgb/mathicgb/QuadMatrix \
++-     mathicgb/mathicgb/QuadMatrixBuilder \
++-     mathicgb/mathicgb/Scanner \
++-     mathicgb/mathicgb/ClassicGBAlg \
++-     mathicgb/mathicgb/F4MatrixBuilder \
++-     mathicgb/mathicgb/F4MatrixBuilder2 \
++-     mathicgb/mathicgb/F4MatrixProjection \
++-     mathicgb/mathicgb/F4MatrixReducer \
++-     mathicgb/mathicgb/F4ProtoMatrix \
++-     mathicgb/mathicgb/F4Reducer \
++-     mathicgb/mathicgb/Reducer \
++-     mathicgb/mathicgb/TypicalReducer \
++-     mathicgb/mathicgb/ReducerDedup \
++-     mathicgb/mathicgb/ReducerHash \
++-     mathicgb/mathicgb/ReducerHashPack \
++-     mathicgb/mathicgb/ReducerNoDedup \
++-     mathicgb/mathicgb/ReducerPack \
++-     mathicgb/mathicgb/ReducerPackDedup \
++-     mathicgb/mathicgb/ModuleMonoSet \
++-     mathicgb/mathicgb/PolyHashTable \
++-     mathicgb/mathicgb/SPairs \
++-     mathicgb/mathicgb/SigPolyBasis \
++-     mathicgb/mathicgb/SigSPairQueue \
++-     mathicgb/mathicgb/SigSPairs \
++-     mathicgb/mathicgb/SignatureGB \
++-     mathicgb/mathicgb/io-util \
++      eigen \
++      monomial-sets \
++      mutablecomplex \
++@@ -212,18 +178,6 @@
++      weylalg
++ 
++ COMMANDS = \
++-     memtailor/memtailor \
++-     memtailor/memtailor/Arena \
++-     memtailor/memtailor/BufferPool \
++-     memtailor/memtailor/MemoryBlocks \
++-     mathic/mathic \
++-     mathic/mathic/BitTriangle \
++-     mathic/mathic/ColumnPrinter \
++-     mathic/mathic/DivMask \
++-     mathic/mathic/Timer \
++-     mathic/mathic/display \
++-     mathic/mathic/error \
++-     mathicgb/mathicgb \
++      ntl-internal \
++      ntl-debugio \
++      matrix-kbasis \
++@@ -252,26 +206,6 @@
++      franzi-interface
++ 
++ NAMES_H = \
++-     mathicgb/mathicgb/Atomic \
++-     mathicgb/mathicgb/PrimeField \
++-     mathicgb/mathicgb/MonoMonoid \
++-     mathicgb/mathicgb/Range \
++-     mathicgb/mathicgb/Poly \
++-     mathicgb/mathicgb/FixedSizeMonomialMap \
++-     mathicgb/mathicgb/KoszulQueue \
++-     mathicgb/mathicgb/MathicIO \
++-     mathicgb/mathicgb/MonoArena \
++-     mathicgb/mathicgb/MonoOrder \
++-     mathicgb/mathicgb/MonoProcessor \
++-     mathicgb/mathicgb/MonomialMap \
++-     mathicgb/mathicgb/NonCopyable \
++-     mathicgb/mathicgb/RawVector \
++-     mathicgb/mathicgb/ReducerHelper \
++-     mathicgb/mathicgb/ScopeExit \
++-     mathicgb/mathicgb/StaticMonoMap \
++-     mathicgb/mathicgb/Unchar \
++-     mathicgb/mathicgb/mtbb \
++-     mathicgb/mathicgb/stdinc \
++      f4/f4-types \
++      f4/memblock \
++      VectorArithmetic \
++--- a/M2/configure.ac
+++++ b/M2/configure.ac
++@@ -1214,35 +1214,35 @@
++      BUILTLIBS="-lreadline -lhistory $BUILTLIBS"
++ fi
++ 
++-dnl if test $BUILD_memtailor = no
++-dnl then AC_LANG(C++)
++-dnl      SAVE_CXXFLAGS="$CXXFLAGS"
++-dnl      CXXFLAGS="$CXXFLAGS"
++-dnl      AC_SEARCH_LIBS(MEMTAILOR_VERSION_STRING,memtailor,,BUILD_memtailor=yes)
++-dnl      AC_CHECK_HEADER(memtailor.h,,BUILD_memtailor=yes)
++-dnl      CXXFLAGS="$SAVE_CXXFLAGS"
++-dnl fi
++-dnl test $BUILD_memtailor = yes && BUILTLIBS="-lmemtailor $BUILTLIBS"
+++if test $BUILD_memtailor = no
+++then AC_LANG(C++)
+++     SAVE_CXXFLAGS="$CXXFLAGS"
+++     CXXFLAGS="$CXXFLAGS"
+++     AC_SEARCH_LIBS(MEMTAILOR_VERSION_STRING,memtailor,,BUILD_memtailor=yes)
+++     AC_CHECK_HEADER(memtailor.h,,BUILD_memtailor=yes)
+++     CXXFLAGS="$SAVE_CXXFLAGS"
+++fi
+++test $BUILD_memtailor = yes && BUILTLIBS="-lmemtailor $BUILTLIBS"
++ 
++-dnl if test $BUILD_mathic = no
++-dnl then AC_LANG(C++)
++-dnl      SAVE_CXXFLAGS="$CXXFLAGS"
++-dnl      CXXFLAGS="$CXXFLAGS"
++-dnl      AC_SEARCH_LIBS(MATHIC_VERSION_STRING,mathic,,BUILD_mathic=yes)
++-dnl      AC_CHECK_HEADER(mathic.h,,BUILD_mathic=yes)
++-dnl      CXXFLAGS="$SAVE_CXXFLAGS"
++-dnl fi
++-dnl test $BUILD_mathic = yes && BUILTLIBS="-lmathic $BUILTLIBS"
+++if test $BUILD_mathic = no
+++then AC_LANG(C++)
+++     SAVE_CXXFLAGS="$CXXFLAGS"
+++     CXXFLAGS="$CXXFLAGS"
+++     AC_SEARCH_LIBS(MATHIC_VERSION_STRING,mathic,,BUILD_mathic=yes)
+++     AC_CHECK_HEADER(mathic.h,,BUILD_mathic=yes)
+++     CXXFLAGS="$SAVE_CXXFLAGS"
+++fi
+++test $BUILD_mathic = yes && BUILTLIBS="-lmathic $BUILTLIBS"
++ 
++-dnl if test $BUILD_mathicgb = no
++-dnl then AC_LANG(C++)
++-dnl      SAVE_CXXFLAGS="$CXXFLAGS"
++-dnl      CXXFLAGS="$CXXFLAGS"
++-dnl      AC_CHECK_HEADER(mathicgb.h,,BUILD_mathicgb=yes; AC_MSG_NOTICE(will build mathicgb))
++-dnl      AC_SEARCH_LIBS(MATHICGB_VERSION_STRING,mathicgb,,BUILD_mathicgb=yes; AC_MSG_NOTICE(will build mathicgb))
++-dnl      CXXFLAGS="$SAVE_CXXFLAGS"
++-dnl fi
++-dnl test $BUILD_mathicgb = yes && BUILTLIBS="-lmathicgb $BUILTLIBS"
+++if test $BUILD_mathicgb = no
+++then AC_LANG(C++)
+++     SAVE_CXXFLAGS="$CXXFLAGS"
+++     CXXFLAGS="$CXXFLAGS"
+++     AC_CHECK_HEADER(mathicgb.h,,BUILD_mathicgb=yes; AC_MSG_NOTICE(will build mathicgb))
+++     AC_SEARCH_LIBS(MATHICGB_VERSION_STRING,mathicgb,,BUILD_mathicgb=yes; AC_MSG_NOTICE(will build mathicgb))
+++     CXXFLAGS="$SAVE_CXXFLAGS"
+++fi
+++test $BUILD_mathicgb = yes && BUILTLIBS="-lmathicgb $BUILTLIBS"
++ 
++ if test $BUILD_gtest = no
++ then
++--- a/M2/GNUmakefile.in
+++++ b/M2/GNUmakefile.in
++@@ -214,7 +214,7 @@
++ ifeq "@DEVELOPMENT@" "yes"
++ all-in-Macaulay2: all-in-submodules
++ else
++-all-in-Macaulay2: all-in-submodules git-checkout-in-memtailor git-checkout-in-mathic git-checkout-in-mathicgb
+++all-in-Macaulay2: all-in-submodules
++ endif
++ 
++ ## 
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bac288b2f9da15ac12e071eb14233eed0d147274
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,145 @@@
++#!/usr/bin/make -f
++
++include /usr/share/dpkg/architecture.mk
++include /usr/share/dpkg/pkg-info.mk # for SOURCE_DATE_EPOCH
++
++export DEB_BUILD_MAINT_OPTIONS=hardening=+all
++
++ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
++export VERBOSE=1
++endif
++
++# needed for reproducible-version.patch
++export CURDIR
++
++VERSION := $(shell cat M2/VERSION)
++
++%:
++      dh $@ --sourcedirectory=M2 --with linktree
++
++# use exec_prefix instead of prefix in libdir, as that's what's needed
++# to properly substitute paths in Layout#2, and set emacs lisp file
++# installation directory so that the documentation matches where dh_elpa
++# installs them
++EMACSDIR := \
++      \$${prefix}/share/emacs/site-lisp/elpa/macaulay2-$(VERSION)
++WITH_PYTHON := $(if $(filter nopython, $(DEB_BUILD_PROFILES)),, --with-python)
++override_dh_auto_configure:
++      dh_auto_configure -- \
++              --libdir=\$${exec_prefix}/lib/$(DEB_HOST_MULTIARCH) \
++              --with-emacsdir=$(EMACSDIR) $(WITH_PYTHON)
++
++# prevent html-check-links from failing to find KaTeX files before
++# they get added by dh_linktree
++KATEX_DIR := $(CURDIR)/M2/Macaulay2/packages/Style/katex
++KATEX_FILES := $(patsubst %, $(KATEX_DIR)/%, \
++      katex.min.css katex.min.js contrib/auto-render.min.js \
++      contrib/copy-tex.min.css contrib/copy-tex.min.js)
++
++$(KATEX_DIR)/%:
++      touch $@
++
++# copy cached example output files (for examples known to fail on
++# various architectures) to source directory
++# see debian/scripts/generate-examples.m2
++EXAMPLE_SRC := $(wildcard $(CURDIR)/debian/examples/*)
++EXAMPLE_DEST := $(patsubst $(CURDIR)/debian/examples/%, \
++      $(CURDIR)/M2/Macaulay2/packages/%/examples, $(EXAMPLE_SRC))
++
++$(CURDIR)/M2/Macaulay2/packages/%/examples: $(CURDIR)/debian/examples/%
++      mkdir -p $@
++      cp -v $</*.out $@
++
++execute_before_dh_auto_build-indep: $(KATEX_FILES) $(EXAMPLE_DEST)
++
++#ifneq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
++MakeDocumentation = false
++#else
++#MakeDocumentation := $(if $(shell dh_listpackages -i),true,false)
++#endif
++
++override_dh_auto_build:
++      dh_auto_build -- MakeDocumentation=$(MakeDocumentation)
++
++# since a "test" target exists, dh_auto_test defaults to using that, but
++# it just prints the values of some variables.  we want the "check" target
++# instead to run the test suite
++# related: https://bugs.debian.org/924052
++override_dh_auto_test-arch:
++#     $(MAKE) -C M2 check
++
++override_dh_auto_test-indep:
++# uncomment after #994765 is fixed
++#     $(MAKE) -C M2 validate-html
++
++# create dumps of package documentation databases to ship with macaulay2-common
++# and then load during postinst
++PKGLIBDIR := debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/Macaulay2
++PKGDOCDIR := debian/tmp/usr/share/doc/Macaulay2
++DB_FILENAME := rawdocumentation-$(if \
++      $(filter little, $(DEB_HOST_ARCH_ENDIAN)),dcba,abcd)-$(if \
++      $(filter 64, $(DEB_HOST_ARCH_BITS)),8,4).db
++
++DB_FILES = $(wildcard $(PKGLIBDIR)/*/cache/$(DB_FILENAME))
++DUMP_FILES = $(DB_FILES:$(PKGLIBDIR)/%/cache/$(DB_FILENAME)=\
++      $(PKGDOCDIR)/%/dump/rawdocumentation.dump)
++
++$(PKGDOCDIR)/%/dump/rawdocumentation.dump: $(PKGLIBDIR)/%/cache/$(DB_FILENAME)
++      mkdir -p $(dir $@)
++# gdbm_load records the path of the database file and the timestamp in the
++# dump file, so use a relative path and faketime for reproducibility
++      cd $(dir $<) && \
++              faketime '@$(SOURCE_DATE_EPOCH)' \
++              gdbm_dump $(notdir $<) $(CURDIR)/$@
++
++execute_after_dh_auto_install-indep: $(DUMP_FILES)
++      rm -rf $(EXAMPLE_DEST)
++      for DIR in $(subst /examples,,$(EXAMPLE_DEST)); \
++      do if [ -z "$$(ls -A $$DIR)" ]; then rm -rf $$DIR; fi; \
++      done
++      rm -rf $(PKGLIBDIR) # remove package documentation database files
++
++# https://github.com/Macaulay2/M2/issues/1144
++execute_before_dh_link-indep:
++      jdupes -rl debian/macaulay2-common/usr/share/doc/Macaulay2
++
++# example output, package test files, and database dumps must be plain text
++override_dh_compress:
++      dh_compress -Xexample-output -X.m2 -X.dump
++
++execute_before_dh_elpa: debian/macaulay2-pkg.el
++
++debian/macaulay2-pkg.el: debian/macaulay2-pkg.el.in
++      sed -e 's|@VERSION@|$(VERSION)|g' $< > $@
++
++# prevent dh_missing from failing when only building arch-dependent packages
++execute_before_dh_missing:
++      if [ ! -f debian/macaulay2-pkg.el ]; \
++      then \
++              rm -rf debian/tmp/usr/share/emacs; \
++      fi
++
++override_dh_installdeb:
++      dh_installdeb --define DEB_HOST_MULTIARCH=$(DEB_HOST_MULTIARCH) \
++              --define DB_FILENAME=$(DB_FILENAME)
++
++# we use uscan to check for the most recent version, but to create an
++# orig tarball, we also need the contents of the M2-emacs submodule,
++# so use this target instead of uscan directly
++get-orig-source:
++      debian/scripts/m2-get-orig-source.sh
++
++override_dh_auto_clean:
++      echo upstream clean target is borked
++      rm -f M2/Macaulay2/m2/.gdbinit.root M2/Macaulay2/packages/Style/katex/contrib/auto-render.min.js M2/Macaulay2/packages/Style/katex/contrib/copy-tex.min.css M2/Macaulay2/packages/Style/katex/contrib/copy-tex.min.js M2/Macaulay2/packages/Style/katex/katex.min.css M2/Macaulay2/packages/Style/katex/katex.min.js
++      rm -rf M2/usr-dist
++      rm -f M2/Macaulay2/bin/M2.debug-info M2/Macaulay2/c/scc1 M2/Macaulay2/d/typecode.db M2/Macaulay2/util/echoout M2/Macaulay2/d/arithmetic.dep M2/Macaulay2/d/arithmetic.dep.tmp M2/Macaulay2/m2/.Macaulay2-made M2/Macaulay2/m2/.gdbinit  M2/Macaulay2/util/gc_test M2/Macaulay2/util/gc_tested M2/Macaulay2/util/timestmp
++      find . -name '*.o' -delete
++      sed -i s/python3.10/python3.9/ M2/Macaulay2/packages/Python/examples/_add__Py__To__M2__Function.out
++      sed -i 's/range_iterator object at 0x[0-9,a-f]*/range_iterator object at 0x7f4fd3629c30/' M2/Macaulay2/packages/Python/examples/_iter.out
++      sed -i 's/range_iterator object at 0x[0-9,a-f]*/range_iterator object at 0x7f83f73cbc30/' M2/Macaulay2/packages/Python/examples/_next.out
++      rm -f M2/GNUmakefile M2/M2 M2/Macaulay2/Makefile M2/Macaulay2/README M2/Macaulay2/bin/M2 M2/Macaulay2/bin/Makefile M2/Macaulay2/c/.gdbinit M2/Macaulay2/c/Makefile M2/Macaulay2/c/grammar.c M2/Macaulay2/d/M2-exports.h M2/Macaulay2/d/M2-exports.h.tmp M2/Macaulay2/d/M2-tmp.c M2/Macaulay2/d/M2.dep M2/Macaulay2/d/M2.dep.tmp M2/Macaulay2/d/M2.sig M2/Macaulay2/d/M2.sig.tmp M2/Macaulay2/d/Makefile M2/Macaulay2/d/Makefile.files M2/Macaulay2/d/actors-exports.h M2/Macaulay2/d/actors-exports.h.tmp M2/Macaulay2/d/actors-tmp.c M2/Macaulay2/d/actors.dep M2/Macaulay2/d/actors.dep.tmp M2/Macaulay2/d/actors.sig M2/Macaulay2/d/actors.sig.tmp M2/Macaulay2/d/actors2-exports.h M2/Macaulay2/d/actors2-exports.h.tmp M2/Macaulay2/d/actors2-tmp.cc M2/Macaulay2/d/actors2.dep M2/Macaulay2/d/actors2.dep.tmp M2/Macaulay2/d/actors2.sig M2/Macaulay2/d/actors2.sig.tmp M2/Macaulay2/d/actors3-exports.h M2/Macaulay2/d/actors3-exports.h.tmp M2/Macaulay2/d/actors3-tmp.c M2/Macaulay2/d/actors3.dep M2/Macaulay2/d/actors3.dep.tmp M2/Macaulay2/d/actors3.sig M2/Macaulay2/d/actors3.sig.tmp M2/Macaulay2/d/actors4-exports.h M2/Macaulay2/d/actors4-exports.h.tmp M2/Macaulay2/d/actors4-tmp.c M2/Macaulay2/d/actors4.dep M2/Macaulay2/d/actors4.dep.tmp M2/Macaulay2/d/actors4.sig M2/Macaulay2/d/actors4.sig.tmp M2/Macaulay2/d/actors5-exports.h M2/Macaulay2/d/actors5-exports.h.tmp M2/Macaulay2/d/actors5-tmp.c M2/Macaulay2/d/actors5.dep M2/Macaulay2/d/actors5.dep.tmp M2/Macaulay2/d/actors5.sig M2/Macaulay2/d/actors5.sig.tmp M2/Macaulay2/d/actors6-exports.h M2/Macaulay2/d/actors6-exports.h.tmp M2/Macaulay2/d/actors6-tmp.cc M2/Macaulay2/d/actors6.dep M2/Macaulay2/d/actors6.dep.tmp M2/Macaulay2/d/actors6.sig M2/Macaulay2/d/actors6.sig.tmp M2/Macaulay2/d/arithmetic-exports.h M2/Macaulay2/d/arithmetic-exports.h.tmp M2/Macaulay2/d/arithmetic-tmp.c M2/Macaulay2/d/arithmetic.sig M2/Macaulay2/d/arithmetic.sig.tmp M2/Macaulay2/d/atomic-exports.h M2/Macaulay2/d/atomic-exports.h.tmp M2/Macaulay2/d/atomic-tmp.c M2/Macaulay2/d/atomic.dep M2/Macaulay2/d/atomic.dep.tmp M2/Macaulay2/d/atomic.sig M2/Macaulay2/d/atomic.sig.tmp M2/Macaulay2/d/basic-exports.h M2/Macaulay2/d/basic-exports.h.tmp M2/Macaulay2/d/basic-tmp.c M2/Macaulay2/d/basic.dep M2/Macaulay2/d/basic.dep.tmp M2/Macaulay2/d/basic.sig M2/Macaulay2/d/basic.sig.tmp M2/Macaulay2/d/binding-exports.h M2/Macaulay2/d/binding-exports.h.tmp M2/Macaulay2/d/binding-tmp.c M2/Macaulay2/d/binding.dep M2/Macaulay2/d/binding.dep.tmp M2/Macaulay2/d/binding.sig M2/Macaulay2/d/binding.sig.tmp M2/Macaulay2/d/buckets-exports.h M2/Macaulay2/d/buckets-exports.h.tmp M2/Macaulay2/d/buckets-tmp.cc M2/Macaulay2/d/buckets.dep M2/Macaulay2/d/buckets.dep.tmp M2/Macaulay2/d/buckets.sig M2/Macaulay2/d/buckets.sig.tmp M2/Macaulay2/d/classes-exports.h M2/Macaulay2/d/classes-exports.h.tmp M2/Macaulay2/d/classes-tmp.cc M2/Macaulay2/d/classes.dep M2/Macaulay2/d/classes.dep.tmp M2/Macaulay2/d/classes.sig M2/Macaulay2/d/classes.sig.tmp M2/Macaulay2/d/common-exports.h M2/Macaulay2/d/common-exports.h.tmp M2/Macaulay2/d/common-tmp.c M2/Macaulay2/d/common.dep M2/Macaulay2/d/common.dep.tmp M2/Macaulay2/d/common.sig M2/Macaulay2/d/common.sig.tmp M2/Macaulay2/d/convertr-exports.h M2/Macaulay2/d/convertr-exports.h.tmp M2/Macaulay2/d/convertr-tmp.c M2/Macaulay2/d/convertr.dep M2/Macaulay2/d/convertr.dep.tmp M2/Macaulay2/d/convertr.sig M2/Macaulay2/d/convertr.sig.tmp M2/Macaulay2/d/ctype-exports.h M2/Macaulay2/d/ctype-exports.h.tmp M2/Macaulay2/d/ctype-tmp.c M2/Macaulay2/d/ctype.dep M2/Macaulay2/d/ctype.dep.tmp M2/Macaulay2/d/ctype.sig M2/Macaulay2/d/ctype.sig.tmp M2/Macaulay2/d/distributed-packages.h M2/Macaulay2/d/engine-exports.h M2/Macaulay2/d/engine-exports.h.tmp M2/Macaulay2/d/engine-tmp.cc M2/Macaulay2/d/engine.dep M2/Macaulay2/d/engine.dep.tmp M2/Macaulay2/d/engine.sig M2/Macaulay2/d/engine.sig.tmp M2/Macaulay2/d/equality-exports.h M2/Macaulay2/d/equality-exports.h.tmp M2/Macaulay2/d/equality-tmp.cc M2/Macaulay2/d/equality.dep M2/Macaulay2/d/equality.dep.tmp M2/Macaulay2/d/equality.sig M2/Macaulay2/d/equality.sig.tmp M2/Macaulay2/d/err-exports.h M2/Macaulay2/d/err-exports.h.tmp M2/Macaulay2/d/err-tmp.c M2/Macaulay2/d/err.dep M2/Macaulay2/d/err.dep.tmp M2/Macaulay2/d/err.sig M2/Macaulay2/d/err.sig.tmp M2/Macaulay2/d/errio-exports.h M2/Macaulay2/d/errio-exports.h.tmp M2/Macaulay2/d/errio-tmp.c M2/Macaulay2/d/errio.dep M2/Macaulay2/d/errio.dep.tmp M2/Macaulay2/d/errio.sig M2/Macaulay2/d/errio.sig.tmp M2/Macaulay2/d/evaluate-exports.h M2/Macaulay2/d/evaluate-exports.h.tmp M2/Macaulay2/d/evaluate-tmp.c M2/Macaulay2/d/evaluate.dep M2/Macaulay2/d/evaluate.dep.tmp M2/Macaulay2/d/evaluate.sig M2/Macaulay2/d/evaluate.sig.tmp M2/Macaulay2/d/expr-exports.h M2/Macaulay2/d/expr-exports.h.tmp M2/Macaulay2/d/expr-tmp.c M2/Macaulay2/d/expr.dep M2/Macaulay2/d/expr.dep.tmp M2/Macaulay2/d/expr.sig M2/Macaulay2/d/expr.sig.tmp M2/Macaulay2/d/getline-exports.h M2/Macaulay2/d/getline-exports.h.tmp M2/Macaulay2/d/getline-tmp.c M2/Macaulay2/d/getline.dep M2/Macaulay2/d/getline.dep.tmp M2/Macaulay2/d/getline.sig M2/Macaulay2/d/getline.sig.tmp M2/Macaulay2/d/gmp-exports.h M2/Macaulay2/d/gmp-exports.h.tmp M2/Macaulay2/d/gmp-tmp.c M2/Macaulay2/d/gmp.dep M2/Macaulay2/d/gmp.dep.tmp M2/Macaulay2/d/gmp.sig M2/Macaulay2/d/gmp.sig.tmp M2/Macaulay2/d/gmp1-exports.h M2/Macaulay2/d/gmp1-exports.h.tmp M2/Macaulay2/d/gmp1-tmp.c M2/Macaulay2/d/gmp1.dep M2/Macaulay2/d/gmp1.dep.tmp M2/Macaulay2/d/gmp1.sig M2/Macaulay2/d/gmp1.sig.tmp M2/Macaulay2/d/hashtables-exports.h M2/Macaulay2/d/hashtables-exports.h.tmp M2/Macaulay2/d/hashtables-tmp.cc M2/Macaulay2/d/hashtables.dep M2/Macaulay2/d/hashtables.dep.tmp M2/Macaulay2/d/hashtables.sig M2/Macaulay2/d/hashtables.sig.tmp M2/Macaulay2/d/interface-exports.h M2/Macaulay2/d/interface-exports.h.tmp M2/Macaulay2/d/interface-tmp.cc M2/Macaulay2/d/interface.dep M2/Macaulay2/d/interface.dep.tmp M2/Macaulay2/d/interface.sig M2/Macaulay2/d/interface.sig.tmp M2/Macaulay2/d/interface2-exports.h M2/Macaulay2/d/interface2-exports.h.tmp M2/Macaulay2/d/interface2-tmp.c M2/Macaulay2/d/interface2.dep M2/Macaulay2/d/interface2.dep.tmp M2/Macaulay2/d/interface2.sig M2/Macaulay2/d/interface2.sig.tmp M2/Macaulay2/d/interp-exports.h M2/Macaulay2/d/interp-exports.h.tmp M2/Macaulay2/d/interp-tmp.cc M2/Macaulay2/d/interp.dep M2/Macaulay2/d/interp.dep.tmp M2/Macaulay2/d/interp.sig M2/Macaulay2/d/interp.sig.tmp M2/Macaulay2/d/interrupts-exports.h M2/Macaulay2/d/interrupts-exports.h.tmp M2/Macaulay2/d/interrupts-tmp.c M2/Macaulay2/d/interrupts.dep M2/Macaulay2/d/interrupts.dep.tmp M2/Macaulay2/d/interrupts.sig M2/Macaulay2/d/interrupts.sig.tmp M2/Macaulay2/d/lex-exports.h M2/Macaulay2/d/lex-exports.h.tmp M2/Macaulay2/d/lex-tmp.c M2/Macaulay2/d/lex.dep M2/Macaulay2/d/lex.dep.tmp M2/Macaulay2/d/lex.sig M2/Macaulay2/d/lex.sig.tmp M2/Macaulay2/d/mysqldummy-exports.h M2/Macaulay2/d/mysqldummy-exports.h.tmp M2/Macaulay2/d/mysqldummy-tmp.c M2/Macaulay2/d/mysqldummy.dep M2/Macaulay2/d/mysqldummy.dep.tmp M2/Macaulay2/d/mysqldummy.sig M2/Macaulay2/d/mysqldummy.sig.tmp M2/Macaulay2/d/nets-exports.h M2/Macaulay2/d/nets-exports.h.tmp M2/Macaulay2/d/nets-tmp.c M2/Macaulay2/d/nets.dep M2/Macaulay2/d/nets.dep.tmp M2/Macaulay2/d/nets.sig M2/Macaulay2/d/nets.sig.tmp M2/Macaulay2/d/parse-exports.h M2/Macaulay2/d/parse-exports.h.tmp M2/Macaulay2/d/parse-tmp.c M2/Macaulay2/d/parse.dep M2/Macaulay2/d/parse.dep.tmp M2/Macaulay2/d/parse.sig M2/Macaulay2/d/parse.sig.tmp M2/Macaulay2/d/parser-exports.h M2/Macaulay2/d/parser-exports.h.tmp M2/Macaulay2/d/parser-tmp.c M2/Macaulay2/d/parser.dep M2/Macaulay2/d/parser.dep.tmp M2/Macaulay2/d/parser.sig M2/Macaulay2/d/parser.sig.tmp M2/Macaulay2/d/pthread-exports.h M2/Macaulay2/d/pthread-exports.h.tmp M2/Macaulay2/d/pthread-tmp.c M2/Macaulay2/d/pthread.dep M2/Macaulay2/d/pthread.dep.tmp M2/Macaulay2/d/pthread.sig M2/Macaulay2/d/pthread.sig.tmp M2/Macaulay2/d/pthread0-exports.h M2/Macaulay2/d/pthread0-exports.h.tmp M2/Macaulay2/d/pthread0-tmp.c M2/Macaulay2/d/pthread0.dep M2/Macaulay2/d/pthread0.dep.tmp M2/Macaulay2/d/pthread0.sig M2/Macaulay2/d/pthread0.sig.tmp M2/Macaulay2/d/python-exports.h M2/Macaulay2/d/python-exports.h.tmp M2/Macaulay2/d/python-tmp.c M2/Macaulay2/d/python.dep M2/Macaulay2/d/python.dep.tmp M2/Macaulay2/d/python.sig M2/Macaulay2/d/python.sig.tmp M2/Macaulay2/d/regex-exports.h M2/Macaulay2/d/regex-exports.h.tmp M2/Macaulay2/d/regex-tmp.cc M2/Macaulay2/d/regex.dep M2/Macaulay2/d/regex.dep.tmp M2/Macaulay2/d/regex.sig M2/Macaulay2/d/regex.sig.tmp M2/Macaulay2/d/sets-exports.h M2/Macaulay2/d/sets-exports.h.tmp M2/Macaulay2/d/sets-tmp.cc M2/Macaulay2/d/sets.dep M2/Macaulay2/d/sets.dep.tmp M2/Macaulay2/d/sets.sig M2/Macaulay2/d/sets.sig.tmp M2/Macaulay2/d/startup.c M2/Macaulay2/d/stdio-exports.h M2/Macaulay2/d/stdio-exports.h.tmp M2/Macaulay2/d/stdio-tmp.c M2/Macaulay2/d/stdio.dep M2/Macaulay2/d/stdio.dep.tmp M2/Macaulay2/d/stdio.sig M2/Macaulay2/d/stdio.sig.tmp M2/Macaulay2/d/stdio0-exports.h M2/Macaulay2/d/stdio0-exports.h.tmp M2/Macaulay2/d/stdio0-tmp.c M2/Macaulay2/d/stdio0.dep M2/Macaulay2/d/stdio0.dep.tmp M2/Macaulay2/d/stdio0.sig M2/Macaulay2/d/stdio0.sig.tmp M2/Macaulay2/d/stdiop-exports.h M2/Macaulay2/d/stdiop-exports.h.tmp M2/Macaulay2/d/stdiop-tmp.c M2/Macaulay2/d/stdiop.dep M2/Macaulay2/d/stdiop.dep.tmp M2/Macaulay2/d/stdiop.sig M2/Macaulay2/d/stdiop.sig.tmp M2/Macaulay2/d/stdiop0-exports.h M2/Macaulay2/d/stdiop0-exports.h.tmp M2/Macaulay2/d/stdiop0-tmp.c M2/Macaulay2/d/stdiop0.dep M2/Macaulay2/d/stdiop0.dep.tmp M2/Macaulay2/d/stdiop0.sig M2/Macaulay2/d/stdiop0.sig.tmp M2/Macaulay2/d/strings-exports.h M2/Macaulay2/d/strings-exports.h.tmp M2/Macaulay2/d/strings-tmp.c M2/Macaulay2/d/strings.dep M2/Macaulay2/d/strings.dep.tmp M2/Macaulay2/d/strings.sig M2/Macaulay2/d/strings.sig.tmp M2/Macaulay2/d/strings1-exports.h M2/Macaulay2/d/strings1-exports.h.tmp M2/Macaulay2/d/strings1-tmp.c M2/Macaulay2/d/strings1.dep M2/Macaulay2/d/strings1.dep.tmp M2/Macaulay2/d/strings1.sig M2/Macaulay2/d/strings1.sig.tmp M2/Macaulay2/d/struct-exports.h M2/Macaulay2/d/struct-exports.h.tmp M2/Macaulay2/d/struct-tmp.c M2/Macaulay2/d/struct.dep M2/Macaulay2/d/struct.dep.tmp M2/Macaulay2/d/struct.sig M2/Macaulay2/d/struct.sig.tmp M2/Macaulay2/d/system-exports.h M2/Macaulay2/d/system-exports.h.tmp M2/Macaulay2/d/system-tmp.c M2/Macaulay2/d/system.dep M2/Macaulay2/d/system.dep.tmp M2/Macaulay2/d/system.sig M2/Macaulay2/d/system.sig.tmp M2/Macaulay2/d/texmacs-exports.h M2/Macaulay2/d/texmacs-exports.h.tmp M2/Macaulay2/d/texmacs-tmp.c M2/Macaulay2/d/texmacs.dep M2/Macaulay2/d/texmacs.dep.tmp M2/Macaulay2/d/texmacs.sig M2/Macaulay2/d/texmacs.sig.tmp M2/Macaulay2/d/threads-exports.h M2/Macaulay2/d/threads-exports.h.tmp M2/Macaulay2/d/threads-tmp.cc M2/Macaulay2/d/threads.dep M2/Macaulay2/d/threads.dep.tmp M2/Macaulay2/d/threads.sig M2/Macaulay2/d/threads.sig.tmp M2/Macaulay2/d/tokens-exports.h M2/Macaulay2/d/tokens-exports.h.tmp M2/Macaulay2/d/tokens-tmp.c M2/Macaulay2/d/tokens.dep M2/Macaulay2/d/tokens.dep.tmp M2/Macaulay2/d/tokens.sig M2/Macaulay2/d/tokens.sig.tmp M2/Macaulay2/d/util-exports.h M2/Macaulay2/d/util-exports.h.tmp M2/Macaulay2/d/util-tmp.c M2/Macaulay2/d/util.dep M2/Macaulay2/d/util.dep.tmp M2/Macaulay2/d/util.sig M2/Macaulay2/d/util.sig.tmp M2/Macaulay2/d/vararray-exports.h M2/Macaulay2/d/vararray-exports.h.tmp M2/Macaulay2/d/vararray-tmp.c M2/Macaulay2/d/vararray.dep M2/Macaulay2/d/vararray.dep.tmp M2/Macaulay2/d/vararray.sig M2/Macaulay2/d/vararray.sig.tmp M2/Macaulay2/d/varnets-exports.h M2/Macaulay2/d/varnets-exports.h.tmp M2/Macaulay2/d/varnets-tmp.c M2/Macaulay2/d/varnets.dep M2/Macaulay2/d/varnets.dep.tmp M2/Macaulay2/d/varnets.sig M2/Macaulay2/d/varnets.sig.tmp M2/Macaulay2/d/varstrin-exports.h M2/Macaulay2/d/varstrin-exports.h.tmp M2/Macaulay2/d/varstrin-tmp.c M2/Macaulay2/d/varstrin.dep M2/Macaulay2/d/varstrin.dep.tmp M2/Macaulay2/d/varstrin.sig M2/Macaulay2/d/varstrin.sig.tmp M2/Macaulay2/d/version-exports.h M2/Macaulay2/d/version-exports.h.tmp M2/Macaulay2/d/version-tmp.cc M2/Macaulay2/d/version.dep M2/Macaulay2/d/version.dep.tmp M2/Macaulay2/d/version.sig M2/Macaulay2/d/version.sig.tmp M2/Macaulay2/d/xml-exports.h M2/Macaulay2/d/xml-exports.h.tmp M2/Macaulay2/d/xml-tmp.c M2/Macaulay2/d/xml.dep M2/Macaulay2/d/xml.dep.tmp M2/Macaulay2/d/xml.sig M2/Macaulay2/d/xml.sig.tmp M2/Macaulay2/d/xmlactors-exports.h M2/Macaulay2/d/xmlactors-exports.h.tmp M2/Macaulay2/d/xmlactors-tmp.c M2/Macaulay2/d/xmlactors.dep M2/Macaulay2/d/xmlactors.dep.tmp M2/Macaulay2/d/xmlactors.sig M2/Macaulay2/d/xmlactors.sig.tmp M2/Macaulay2/e/Eschreyer.dep M2/Macaulay2/e/GF.dep M2/Macaulay2/e/LLL.dep M2/Macaulay2/e/M2FreeAlgebra.dep M2/Macaulay2/e/M2FreeAlgebraQuotient.dep M2/Macaulay2/e/Makefile M2/Macaulay2/e/Makefile.common M2/Macaulay2/e/NAG.dep M2/Macaulay2/e/NCAlgebras/FreeAlgebra.dep M2/Macaulay2/e/NCAlgebras/FreeAlgebraQuotient.dep M2/Macaulay2/e/NCAlgebras/FreeMonoid.dep M2/Macaulay2/e/NCAlgebras/NCF4.dep M2/Macaulay2/e/NCAlgebras/NCGroebner.dep M2/Macaulay2/e/NCAlgebras/NCReduction.dep M2/Macaulay2/e/NCAlgebras/OverlapTable.dep M2/Macaulay2/e/NCAlgebras/SuffixTree.dep M2/Macaulay2/e/NCAlgebras/Word.dep M2/Macaulay2/e/NCAlgebras/WordTable.dep M2/Macaulay2/e/NCResolutions/nc-res-computation.dep M2/Macaulay2/e/Polynomial.dep M2/Macaulay2/e/SLP.dep M2/Macaulay2/e/ZZ.dep M2/Macaulay2/e/ZZp.dep M2/Macaulay2/e/aring-CC.dep M2/Macaulay2/e/aring-CCC.dep M2/Macaulay2/e/aring-RR.dep M2/Macaulay2/e/aring-RRR.dep M2/Macaulay2/e/aring-RRi.dep M2/Macaulay2/e/aring-gf-flint-big.dep M2/Macaulay2/e/aring-gf-flint.dep M2/Macaulay2/e/aring-gf-givaro.dep M2/Macaulay2/e/aring-m2-gf.dep M2/Macaulay2/e/aring-qq-flint.dep M2/Macaulay2/e/aring-qq-gmp.dep M2/Macaulay2/e/aring-tower.dep M2/Macaulay2/e/aring-zz-flint.dep M2/Macaulay2/e/aring-zz-gmp.dep M2/Macaulay2/e/aring-zzp-ffpack.dep M2/Macaulay2/e/aring-zzp-flint.dep M2/Macaulay2/e/aring-zzp.dep M2/Macaulay2/e/aring.dep M2/Macaulay2/e/assprime.dep M2/Macaulay2/e/betti.dep M2/Macaulay2/e/bibasis/allocator.dep M2/Macaulay2/e/bibasis/bibasis.dep M2/Macaulay2/e/bibasis/launcher.dep M2/Macaulay2/e/bibasis/monom.dep M2/Macaulay2/e/bibasis/monomDL.dep M2/Macaulay2/e/bibasis/monomDRL.dep M2/Macaulay2/e/bibasis/monomLex.dep M2/Macaulay2/e/bibasis/settings-manager.dep M2/Macaulay2/e/buffer.dep M2/Macaulay2/e/coeffrings.dep M2/Macaulay2/e/comb.dep M2/Macaulay2/e/comp-gb-declared.dep M2/Macaulay2/e/comp-gb-proxy.dep M2/Macaulay2/e/comp-gb.dep M2/Macaulay2/e/comp-res.dep M2/Macaulay2/e/comp.dep M2/Macaulay2/e/complex.dep M2/Macaulay2/e/cra.dep M2/Macaulay2/e/debug.dep M2/Macaulay2/e/det.dep M2/Macaulay2/e/dmat.dep M2/Macaulay2/e/dpoly.dep M2/Macaulay2/e/eigen.dep M2/Macaulay2/e/engine.dep M2/Macaulay2/e/error.dep M2/Macaulay2/e/exptable.dep M2/Macaulay2/e/f4/f4-computation.dep M2/Macaulay2/e/f4/f4-m2-interface.dep M2/Macaulay2/e/f4/f4-mem.dep M2/Macaulay2/e/f4/f4-monlookup.dep M2/Macaulay2/e/f4/f4-spairs.dep M2/Macaulay2/e/f4/f4.dep M2/Macaulay2/e/f4/gausser.dep M2/Macaulay2/e/f4/hilb-fcn.dep M2/Macaulay2/e/f4/monhashtable.dep M2/Macaulay2/e/f4/moninfo.dep M2/Macaulay2/e/f4/ntuple-monomial.dep M2/Macaulay2/e/f4/varpower-monomial.dep M2/Macaulay2/e/finalize.dep M2/Macaulay2/e/fplll-interface.dep M2/Macaulay2/e/frac.dep M2/Macaulay2/e/fractionfreeLU.dep M2/Macaulay2/e/franzi-brp.dep M2/Macaulay2/e/franzi-gb.dep M2/Macaulay2/e/franzi-interface.dep M2/Macaulay2/e/freemod.dep M2/Macaulay2/e/gauss.dep M2/Macaulay2/e/gb-default.dep M2/Macaulay2/e/gb-homog2.dep M2/Macaulay2/e/gb-sugarless.dep M2/Macaulay2/e/gb-test1.dep M2/Macaulay2/e/gb-toric.dep M2/Macaulay2/e/gb-walk.dep M2/Macaulay2/e/gbring.dep M2/Macaulay2/e/gbweight.dep M2/Macaulay2/e/hermite.dep M2/Macaulay2/e/hilb.dep M2/Macaulay2/e/imonorder.dep M2/Macaulay2/e/int-bag.dep M2/Macaulay2/e/intarray.dep M2/Macaulay2/e/interface/aring.dep M2/Macaulay2/e/interface/cra.dep M2/Macaulay2/e/interface/factory.dep M2/Macaulay2/e/interface/flint.dep M2/Macaulay2/e/interface/freemodule.dep M2/Macaulay2/e/interface/groebner.dep M2/Macaulay2/e/interface/matrix.dep M2/Macaulay2/e/interface/monoid.dep M2/Macaulay2/e/interface/monomial-ideal.dep M2/Macaulay2/e/interface/monomial-ordering.dep M2/Macaulay2/e/interface/mutable-matrix.dep M2/Macaulay2/e/interface/polyroots.dep M2/Macaulay2/e/interface/random.dep M2/Macaulay2/e/interface/ring.dep M2/Macaulay2/e/interface/ringelement.dep M2/Macaulay2/e/interface/ringmap.dep M2/Macaulay2/e/interreduce.dep M2/Macaulay2/e/interrupted.dep M2/Macaulay2/e/lapack.dep M2/Macaulay2/e/localring.dep M2/Macaulay2/e/mat.dep M2/Macaulay2/e/matrix-con.dep M2/Macaulay2/e/matrix-kbasis.dep M2/Macaulay2/e/matrix-ncbasis.dep M2/Macaulay2/e/matrix-sort.dep M2/Macaulay2/e/matrix-stream.dep M2/Macaulay2/e/matrix-symm.dep M2/Macaulay2/e/matrix.dep M2/Macaulay2/e/mem.dep M2/Macaulay2/e/memory-status.dep M2/Macaulay2/e/monideal-minprimes.dep M2/Macaulay2/e/monideal.dep M2/Macaulay2/e/monoid.dep M2/Macaulay2/e/monomial-collection.dep M2/Macaulay2/e/monomial-sets.dep M2/Macaulay2/e/monomial.dep M2/Macaulay2/e/monsort.dep M2/Macaulay2/e/montable.dep M2/Macaulay2/e/montableZZ.dep M2/Macaulay2/e/mutablecomplex.dep M2/Macaulay2/e/myalloc.dep M2/Macaulay2/e/ntl-debugio.dep M2/Macaulay2/e/ntl-interface.dep M2/Macaulay2/e/ntl-internal.dep M2/Macaulay2/e/ntuple.dep M2/Macaulay2/e/overflow.dep M2/Macaulay2/e/pfaff.dep M2/Macaulay2/e/poly.dep M2/Macaulay2/e/polyquotient.dep M2/Macaulay2/e/polyring.dep M2/Macaulay2/e/qring.dep M2/Macaulay2/e/reader.dep M2/Macaulay2/e/reducedgb-ZZ.dep M2/Macaulay2/e/reducedgb-field-local.dep M2/Macaulay2/e/reducedgb-field.dep M2/Macaulay2/e/reducedgb-marked.dep M2/Macaulay2/e/reducedgb.dep M2/Macaulay2/e/relem.dep M2/Macaulay2/e/res-a0-poly.dep M2/Macaulay2/e/res-a0.dep M2/Macaulay2/e/res-a1-poly.dep M2/Macaulay2/e/res-a1.dep M2/Macaulay2/e/res-a2-gb.dep M2/Macaulay2/e/res-a2.dep M2/Macaulay2/e/ring-vecs.dep M2/Macaulay2/e/ring.dep M2/Macaulay2/e/ringmap.dep M2/Macaulay2/e/sagbi.dep M2/Macaulay2/e/schorder.dep M2/Macaulay2/e/schreyer-resolution/res-f4-computation.dep M2/Macaulay2/e/schreyer-resolution/res-f4-m2-interface.dep M2/Macaulay2/e/schreyer-resolution/res-f4-monlookup.dep M2/Macaulay2/e/schreyer-resolution/res-f4.dep M2/Macaulay2/e/schreyer-resolution/res-gausser-QQ-hybrid.dep M2/Macaulay2/e/schreyer-resolution/res-gausser-QQ.dep M2/Macaulay2/e/schreyer-resolution/res-gausser-ZZp.dep M2/Macaulay2/e/schreyer-resolution/res-gausser.dep M2/Macaulay2/e/schreyer-resolution/res-moninfo-dense.dep M2/Macaulay2/e/schreyer-resolution/res-moninfo-sparse.dep M2/Macaulay2/e/schreyer-resolution/res-moninfo.dep M2/Macaulay2/e/schreyer-resolution/res-monomial-sorter.dep M2/Macaulay2/e/schreyer-resolution/res-poly-ring.dep M2/Macaulay2/e/schreyer-resolution/res-schreyer-frame.dep M2/Macaulay2/e/schreyer-resolution/res-varpower-monomial.dep M2/Macaulay2/e/schur.dep M2/Macaulay2/e/schur2.dep M2/Macaulay2/e/schurSn.dep M2/Macaulay2/e/skew.dep M2/Macaulay2/e/skewpoly.dep M2/Macaulay2/e/solvable.dep M2/Macaulay2/e/spair.dep M2/Macaulay2/e/table.dep M2/Macaulay2/e/text-io.dep M2/Macaulay2/e/tower.dep M2/Macaulay2/e/unit-tests/Makefile M2/Macaulay2/e/util.dep M2/Macaulay2/e/varpower.dep M2/Macaulay2/e/weylalg.dep M2/Macaulay2/editors/Makefile M2/Macaulay2/html-check-links/Makefile M2/Macaulay2/m2/.gdb-directories M2/Macaulay2/m2/.gdb-files M2/Macaulay2/m2/Makefile M2/Macaulay2/m2/startup.m2 M2/Macaulay2/m2/tvalues.m2 M2/Macaulay2/m2/version.m2 M2/Macaulay2/man/M2.1 M2/Macaulay2/man/Makefile M2/Macaulay2/packages/Macaulay2Doc/examples/_application__Directory.out M2/Macaulay2/packages/Macaulay2Doc/examples/_application__Directory__Suffix.out M2/Macaulay2/packages/Macaulay2Doc/examples/_getenv.out M2/Macaulay2/packages/Macaulay2Doc/examples/_home__Directory.out M2/Macaulay2/packages/Makefile M2/Macaulay2/packages/SCSCP/docinput/Makefile M2/Macaulay2/packages/Style/Makefile M2/Macaulay2/srcdir M2/Macaulay2/system/Makefile M2/Macaulay2/system/m2file.dep M2/Macaulay2/system/supervisor.dep M2/Macaulay2/system/tests.dep M2/Macaulay2/tests/ComputationsBook/Makefile M2/Macaulay2/tests/ComputationsBook/Makefile.chapter M2/Macaulay2/tests/ComputationsBook/completeIntersections/Makefile M2/Macaulay2/tests/ComputationsBook/constructions/Makefile M2/Macaulay2/tests/ComputationsBook/d-modules/Makefile M2/Macaulay2/tests/ComputationsBook/exterior-algebra/Makefile M2/Macaulay2/tests/ComputationsBook/geometry/Makefile M2/Macaulay2/tests/ComputationsBook/monomialIdeals/Makefile M2/Macaulay2/tests/ComputationsBook/preface/Makefile M2/Macaulay2/tests/ComputationsBook/programming/Makefile M2/Macaulay2/tests/ComputationsBook/schemes/Makefile M2/Macaulay2/tests/ComputationsBook/solving/Makefile M2/Macaulay2/tests/ComputationsBook/toricHilbertScheme/Makefile M2/Macaulay2/tests/ComputationsBook/varieties/Makefile M2/Macaulay2/tests/Makefile M2/Macaulay2/tests/Makefile.test M2/Macaulay2/tests/engine/Makefile M2/Macaulay2/tests/gigantic/Makefile M2/Macaulay2/tests/goals/Makefile M2/Macaulay2/tests/normal/Makefile M2/Macaulay2/tests/quarantine/Makefile M2/Macaulay2/tests/rationality/Makefile M2/Macaulay2/tests/slow/Makefile M2/Macaulay2/tests/threads/Makefile M2/Macaulay2/util/Makefile M2/check-configure/Makefile M2/config.args M2/config.log M2/config.status M2/distributions/Makefile M2/distributions/deb/Makefile M2/distributions/deb/macaulay2-common/postinst M2/distributions/deb/macaulay2-common/postrm M2/distributions/deb/macaulay2-common/preinst M2/distributions/deb/macaulay2-common/prerm M2/distributions/deb/macaulay2/postinst M2/distributions/deb/macaulay2/postrm M2/distributions/deb/macaulay2/preinst M2/distributions/deb/macaulay2/prerm M2/distributions/dmg/Makefile M2/distributions/freebsd/Makefile M2/distributions/freebsd/post-deinstall M2/distributions/freebsd/post-install M2/distributions/install/Makefile M2/distributions/rpm/Macaulay2-body.spec M2/distributions/rpm/Macaulay2-common-body.spec M2/distributions/rpm/Makefile M2/distributions/tar/Makefile M2/distributions/top/INSTALL M2/distributions/top/Makefile M2/distributions/top/postinstall M2/distributions/top/preremove M2/include/M2/config.h M2/include/config.Makefile M2/include/configuration M2/libraries/4ti2/Makefile M2/libraries/M2/Makefile M2/libraries/Makefile M2/libraries/Makefile.library M2/libraries/atomic_ops/Makefile M2/libraries/cddlib/Makefile M2/libraries/cddplus/Makefile M2/libraries/cohomcalg/Makefile M2/libraries/csdp/Makefile M2/libraries/factory/Makefile M2/libraries/fflas_ffpack/Makefile M2/libraries/flint/Makefile M2/libraries/fplll/Makefile M2/libraries/frobby/Makefile M2/libraries/gc/Makefile M2/libraries/gdbm/Makefile M2/libraries/gfan/Makefile M2/libraries/gftables/Makefile M2/libraries/givaro/Makefile M2/libraries/glpk/Makefile M2/libraries/gmp/Makefile M2/libraries/gtest/Makefile M2/libraries/lapack/Makefile M2/libraries/libtool/Makefile M2/libraries/linbox/Makefile M2/libraries/lrslib/Makefile M2/libraries/mpfi/Makefile M2/libraries/mpfr/Makefile M2/libraries/mpir/Makefile M2/libraries/mpsolve/Makefile M2/libraries/nauty/Makefile M2/libraries/normaliz/Makefile M2/libraries/ntl/Makefile M2/libraries/pari/Makefile M2/libraries/polymake/Makefile M2/libraries/readline/Makefile M2/libraries/topcom/Makefile M2/srcdir 
++      rm -f M2/Macaulay2/html-check-links/html-check-links
++
++override_dh_installinfo:
++      echo documentation disabled
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..59e7718f154e6c0ea343f267ca7d2c92c12e9957
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++---
++variables:
++  DEB_BUILD_OPTIONS: "nocheck nodoc"
++  SALSA_CI_GBP_BUILDPACKAGE_ARGS: "--git-hooks"
++
++include:
++  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
++  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
++
++autopkgtest:
++  allow_failure: true
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0905f3b476fed22d1403e5d73dee710d5ee759f6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,309 @@@
++srcdir := minimizeFilename(currentFileDirectory | "../../")
++if not fileExists(srcdir | "debian/copyright") then
++    error "package must be loaded from the debian source directory"
++
++newPackage("Debian",
++    Version => get("!cd " | srcdir |
++      " && dpkg-parsechangelog -S Version | tr -d '\n'"),
++    Date => "2021-09-22",
++    Headline => "helper functions for packaging Macaulay2 for Debian",
++    Authors => {{
++          Name => "Doug Torrance",
++          Email => "dtorrance@debian.org",
++          HomePage => "https://webwork.piedmont.edu/~dtorrance"}}
++    )
++
++export {
++    "copyrightHelper",
++    "generateExample",
++    "generateExamples",
++    "missingPackages",
++    "skipTest",
++    "skipTestArch"
++    }
++
++importFrom_Core {
++    "captureExampleOutput",
++    "storeExampleOutput",
++    "toFilename",
++    "topSrcdir"
++    }
++
++getfilename := pkg -> (
++    for file in apply({"", "undistributed-packages/"}, dir ->
++      srcdir | "M2/Macaulay2/packages/" | dir | pkg | ".m2") do
++      if fileExists file then return file;
++    error "file not found")
++readpkg := pkg -> readPackage(pkg, FileName => getfilename pkg)
++
++-- no need to list packages written only by Dan and/or Mike
++danMikeRegex := {"^Jane Doe$", -- "author" of FirstPackage/SecondPackage
++    "^Daniel R\\. Grayson$",
++    "^Mi(ke|chael E\\.) Stillman$"}
++
++-- function to help generate d/copyright paragraphs for Macaulay2 packages
++-- manually check each file to ensure the license information is correct
++copyrightHelper = pkgName -> (
++    pkg := readpkg pkgName;
++    filename := getfilename pkgName;
++    files := replace(regexQuote srcdir | "(.*)\\.m2$", "\\1", filename) |
++      if pkg#AuxiliaryFiles then "*" else ".m2";
++    year := if pkg#Date =!= null then
++      (first select(///[\d]{4}///, pkg#Date)) | " " else "";
++    danOrMike := any(apply(pkg#Authors, author ->
++          last first author), name -> match(danMikeRegex, name));
++    print("Files: " | files | newline |
++      "Copyright: " |
++      demark(newline | "         ",
++          apply(hashTable \ pkg#Authors, author ->
++          year | author#Name |
++          (if author#?Email then " <" | author#Email | ">" else ""))) |
++      newline | "Comment: See Comment at the top of this file." | newline |
++      "License: " | (if danOrMike then "GPL-2+ and " else "") |
++      "public-domain" | newline);
++    << flush;
++    printerr "warning: confirm that this copyright information is correct:";
++    print(filename | ":1:1:");
++)
++
++missingPackages = () -> (
++    dCopyright := get(srcdir | "debian/copyright");
++    distributedPkgs := apply(
++      select(readDirectory(srcdir | "M2/Macaulay2/packages"),
++          f -> match("\\.m2$", f)), f -> replace("\\.m2$", "", f));
++    undistributedPkgs := apply(select(readDirectory(srcdir |
++              "M2/Macaulay2/packages/undistributed-packages"),
++          f -> match("\\.m2$", f) and not member(f, {
++                  -- reading any of these packages will raise an error
++                  "CodepthThree.m2",
++                  "CustomEngineTests.m2",
++                  "FastLinearAlgebra.m2",
++                  "MemoryLeaks.m2",
++                  "SecondPackage.m2",
++                  -- false positives
++                  "RisaAsir.m2", -- author field empty
++                  "SchurRingsOld.m2" -- copyright dan, not package authors
++                  })), f -> replace("\\.m2$", "", f));
++    pkgs := sort(distributedPkgs | undistributedPkgs);
++    missing := select(pkgs, pkg ->
++      not match("M2/Macaulay2/packages/(undistributed-packages/)?" | pkg |
++          "(\\.m2|\\*)", dCopyright));
++    select(missing, pkg ->
++      not all(hashTable \ (readpkg pkg)#Authors, author ->
++          match(danMikeRegex, author#Name)))
++)
++
++-- from installPackage.m2
++gethash := outf -> (
++    f := get outf;
++    -- this regular expression detects the format used in runFile
++    m := regex("\\`.* hash: *(-?[0-9]+)", f);
++    if m =!= null then value substring(m#1, f));
++
++dir := minimizeFilename(currentFileDirectory | "../")
++generateExample = (pkgname, fkey) -> (
++    tmpdir := temporaryFileName();
++    makeDirectory tmpdir;
++    installdir := replace("^~", getenv "HOME", dir) | "/examples/" | pkgname;
++    makeDirectory installdir;
++    inf := tmpdir | "/" | toFilename fkey | ".m2";
++    outf := installdir | "/" | toFilename fkey | ".out";
++    errf := installdir | "/" | toFilename fkey | ".errors";
++    pkg := needsPackage(pkgname, LoadDocumentation => true);
++    if pkg#?"documentation not loaded" then pkg = loadPackage(
++      pkgname, LoadDocumentation => true, Reload => true);
++    inputs := pkg#"example inputs"#(format makeDocumentTag fkey);
++    if fileExists outf and gethash outf == hash inputs then (
++      printerr("example result for ", format fkey,
++          " already exists; skipping");
++      return false);
++    elapsedTime captureExampleOutput(
++      "example result for " | format fkey,
++      demark_newline inputs,
++      pkg,
++      inf,
++      outf,
++      errf,
++      {},
++      hash inputs,
++      () -> null,
++      false);
++    topSrcdir = "/top/src/dir/"; -- for reproduciblePaths
++    storeExampleOutput(pkg, fkey, outf, printerr);
++    true)
++
++problemExamples = {
++    -- load Macaulay2Doc first to avoid #2328
++    ("Macaulay2Doc", "applicationDirectory"),                   -- #1149
++    ("Macaulay2Doc", "applicationDirectorySuffix"),             -- #1149
++    ("Macaulay2Doc", "getenv"),                                 -- #1149
++    ("Macaulay2Doc", "homeDirectory")                           -- #1149
++}
++
++generateExamples = () -> (
++    n := 0;
++    tmp := path;
++    path = {srcdir | "/M2/Macaulay2/packages/"};
++    scan(problemExamples, (pkg, fkey) ->
++      if generateExample(pkg, fkey) then n = n + 1);
++    path = tmp;
++    ls := d -> select(readDirectory d, file -> last file != ".");
++    exdir := dir | "/examples/";
++    extraExamples := set flatten apply(ls exdir, pkg ->
++      for outf in ls(exdir |  pkg) list if match ("\\.out$", outf)
++          then (pkg, outf) else continue) -
++      set apply(problemExamples, (pkg, fkey) ->
++          (pkg, toFilename fkey | ".out"));
++    if #extraExamples > 0 then error("extra cached examples: " | newline |
++      toString \\ stack \\ apply(toList extraExamples, extra ->
++          extra_0 | "::" | replace("\\.out$", "", extra_1)));
++    cachepatch := get(dir | "patches/use-cached-examples.patch");
++    missingFromPatch := select(unique \\ first \ problemExamples, pkg -> (
++          opts := readPackage(pkg, FileName => dir |
++              "../M2/Macaulay2/packages/" | pkg | ".m2");
++          not (opts.AuxiliaryFiles and
++              opts.OptionalComponentsPresent =!= null or
++              match("M2/Macaulay2/packages/" | pkg | "\\.m2", cachepatch))));
++    if #missingFromPatch > 0 then error(
++      "add these packages to d/patches/use-cached-examples.patch:" | newline |
++      toString stack missingFromPatch);
++    n)
++
++
++skipTestHelper = (i, pkgname, str) -> (
++    tmp := path;
++    path = {srcdir | "/M2/Macaulay2/packages/"};
++    run("cd " | srcdir | " && " |
++      "quilt pop -aq; " |
++      "quilt push -q skip-failing-package-tests.patch");
++    pkg := loadPackage(pkgname, LoadDocumentation => true, Reload => true);
++    path = tmp;
++    test := locate (tests pkg)#i;
++    testfile := relativizeFilename(realpath srcdir, realpath first test);
++    run("cd " | srcdir | " && quilt add " | testfile | "; " |
++      "sed -i '" | test_1 + 1 | "i " | str | "' " | testfile |
++      " && quilt refresh && quilt pop -aq");
++    )
++
++skipTest = (i, pkgname, issue) ->
++    skipTestHelper(i, pkgname, "\\-\\- no\\-check\\-flag #" | issue)
++
++skipTestArch = (i, pkgname, arch, issue) ->
++    skipTestHelper(i, pkgname, "\\-\\- no\\-check\\-architecture: " | arch |
++      " (#" | issue | ")")
++
++
++beginDocumentation()
++
++doc ///
++  Key
++    Debian
++  Headline
++    helper functions for packaging Macaulay2 for Debian
++  Description
++    Text
++      A collection of helper functions to simplify maintaining the Debian
++      package of Macaulay2.
++///
++
++doc ///
++  Key
++    missingPackages
++  Headline
++    find packages that are missing from d/copyright
++  Usage
++    missingPackages()
++  Description
++    Text
++      Check that all packages are mentioned in d/copyright unless the
++      only authors are Dan and/or Mike (or Jane Doe for FirstPackage).
++///
++
++doc ///
++  Key
++    copyrightHelper
++  Headline
++    get package license information
++  Usage
++    copyrightHelper pkg
++  Inputs
++    pkg:String
++  Description
++    Text
++      Help generate @TT "d/copyright"@ paragraphs for Macaulay2 packages.
++      Manually check each file to ensure the license information is correct.
++    Example
++      copyrightHelper "Graphs"
++///
++
++doc ///
++  Key
++    generateExample
++  Headline
++    generate cached example
++  Usage
++    generateExample(pkg, key)
++  Inputs
++    pkg:String
++    key:String
++  Description
++    Text
++      Generates the given example and saves it in @TT "d/examples/pkg"@.
++      Make sure that the @TO AuxiliaryFiles@ and
++      @TO UseCachedExampleOutput@ options to @TO installPackage@ for
++      @TT "pkg"@ are @TO true@.  Otherwise, add these to
++      @TT "d/patches/use-cached-example-output.patch"@.
++///
++
++doc ///
++  Key
++    generateExamples
++  Headline
++    generate cached versions of all known problem examples
++  Usage
++    generateExamples()
++  Description
++    Text
++      Run @TO generateExample@ on every example listed in @TT "problemExamples"@
++      in the source code for this package, if necessary.
++///
++
++doc ///
++  Key
++    skipTest
++  Headline
++    skip a failing test
++  Usage
++    skipTest(i, pkg, issue)
++  Inputs
++    i:ZZ
++    pkg:String
++    issue:ZZ
++  Description
++    Text
++      Skip @TT "check(i, pkg)"@ when running package tests by adding
++      it to @TT "d/patches/skip-failing-package-tests.patch"@ using
++      @TT "no-check-flag"@ with an appropriate comment, indicated by
++      @TT "issue"@, the upstream issue number.
++///
++
++doc ///
++  Key
++    skipTestArch
++  Headline
++    skip a failing test on a specific architecture
++  Usage
++    skipTest(i, pkg, arch, issue)
++  Inputs
++    i:ZZ
++    pkg:String
++    arch:String -- matching @TO2 {"version", "version#\"architecture\""}@
++    issue:ZZ
++  Description
++    Text
++      Skip @TT "check(i, pkg)"@ when running package tests on a
++      specificic architecture by adding it to @TT
++      "d/patches/skip-failing-package-tests.patch"@ using @TT
++      "no-check-architecture"@ with an appropriate comment, indicated
++      by @TT "issue"@, the upstream issue number.
++///
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dd4840667809325d7dad9c1952954ecde594acc7
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,297 @@@
++#!/bin/sh
++
++# generate Macaulay2 orig tarball for creating Debian packages
++# combines contents of M2 and M2-emacs git repositories and removes
++# any files specified by Files-Excluded in debian/copyright
++#
++# also updates git-description.patch and d/changelog with the corresponding
++# git description/version number
++
++set -e
++
++TEMP=$(getopt -o 'udr:ngmhR:' \
++            -l 'uscan,dev,ref,no-tarball,git-commit,merge,help,remote' \
++            -n "m2-get-orig-source" \
++            -- "$@")
++
++if [ $? -ne 0 ]; then
++        echo 'Terminating...' >&2
++        exit 1
++fi
++
++eval set -- "$TEMP"
++unset TEMP
++
++call_uscan() {
++    echo -n "finding newest version using uscan ... "
++    VERSION=$(uscan --report-status | grep newversion | \
++                awk '{print $3}')
++    echo $VERSION
++    REF="release-$(echo $VERSION | sed 's/~rc/-rc/')"
++}
++
++REMOTE=Macaulay2
++
++while true; do
++    case "$1" in
++        '-u'|'--uscan')
++          call_uscan
++          shift
++          continue
++          ;;
++      '-d'|'--dev')
++          REF="development"
++          shift
++          continue
++          ;;
++      '-r'|'--ref')
++          REF=$2
++          shift 2
++          continue
++          ;;
++      '-n'|'--no-tarball')
++          NOTARBALL=1
++          shift
++          continue
++          ;;
++      '-g'|'--git-commit')
++          DO_GIT_COMMIT=1
++          shift
++          continue
++          ;;
++      '-m'|'--merge')
++          MERGE=1
++          shift
++          continue
++          ;;
++      '-R'|'--remote')
++          REMOTE=$2
++          shift 2
++          continue
++          ;;
++      '-h'|'--help')
++          echo "debian/scripts/m2-get-orig-source.sh:"
++          echo " create orig tarball and update" \
++               "d/changelog (and d/p/git-description.patch) with"
++          echo " version number\n"
++          echo "options:"
++          echo "  -u, --uscan"
++          echo "    use uscan to determine newest stable version (default)"
++          echo "  -d, --dev"
++          echo "    use 'development' branch"
++          echo "  -r, --ref <ref>"
++          echo "    use branch or tag specificed by <ref>"
++          echo "  -n, --no-tarball"
++          echo "    don't generate tarball; only update d/changelog"
++          echo "  -g, --git-commit"
++          echo "    commit version bump to git"
++          echo "  -m, --merge"
++          echo "    merge branch"
++          echo "  -R, --remote"
++          echo "    set remote (default 'Macaulay2')"
++          echo "  -h, --help"
++          echo "    display this help and exit"
++          exit 0
++          ;;
++      '--')
++          shift
++          break
++          ;;
++      *)
++          echo 'Internal error!' >&2
++          exit 1
++          ;;
++    esac
++done
++
++if [ "x$REF" = "x" ]
++then
++    call_uscan
++fi
++
++if [ -z $NOTARBALL ]
++then
++    echo "making tarball for ref '$REF'"
++else
++    echo "getting version number for ref '$REF'"
++fi
++
++git fetch https://github.com/$REMOTE/M2 $REF 2> /dev/null
++
++echo -n "determining version number ... "
++GIT_VERSION=$(git show FETCH_HEAD:M2/VERSION)
++NEW_COMMITS=$(git rev-list \
++                $(git rev-list -1 FETCH_HEAD M2/VERSION)..FETCH_HEAD --count)
++GIT_COMMIT=$(git rev-parse FETCH_HEAD) # cut -c 1-7 (or 9)
++
++if [ -z $VERSION ]
++then
++    VERSION=$GIT_VERSION+git$NEW_COMMITS.$(echo $GIT_COMMIT | cut -c 1-7)
++fi
++echo $VERSION
++
++if [ $MERGE ]
++then
++    echo -n "merging '$REF' ... "
++    if git merge-base --is-ancestor FETCH_HEAD HEAD
++    then
++      echo "not needed"
++    else
++      echo
++      git merge --no-edit FETCH_HEAD
++
++      echo -n "refreshing patches ... "
++
++      REFRESH_PATCHES=
++      quilt pop -a > /dev/null 2>&1 || true
++
++      while true
++      do
++          QUILT_PUSH=$(quilt push 2> /dev/null || true)
++          if echo $QUILT_PUSH | grep "FAILED" > /dev/null
++          then
++              echo "\ncan't apply patch; refresh manually"
++              exit 1
++          elif echo $QUILT_PUSH | grep offset > /dev/null
++          then
++              quilt refresh > /dev/null
++              REFRESH_PATCHES=1
++          elif [ -z "$QUILT_PUSH" ]
++          then
++              break
++          fi
++      done
++
++      quilt pop -a > /dev/null 2>&1 || true
++
++      if [ $REFRESH_PATCHES ]
++      then
++          echo "done"
++          git add debian/patches
++          git commit -m "Refresh patches for $VERSION"
++      else
++          echo "not needed"
++      fi
++
++      echo -n "regenerating examples ... "
++      NUM_EXAMPLES=$(
++          M2 --srcdir M2 --silent -e \
++             'loadPackage("Debian", FileName => "debian/scripts/Debian.m2");
++              print generateExamples();
++              exit 0' 2> /dev/null)
++      echo "$NUM_EXAMPLES change(s)"
++      if [ $NUM_EXAMPLES -gt 0 ]
++      then
++          git add debian/examples
++          git commit -m "Regenerating examples for $VERSION"
++      fi
++
++      echo -n "checking for new packages not in d/copyright ... "
++      M2 --srcdir M2 --silent -e \
++         'loadPackage("Debian", FileName => "debian/scripts/Debian.m2");
++          pkgs = missingPackages();
++          print(#pkgs);
++          for pkg in pkgs do print("  " | toString pkg);
++          exit 0'
++    fi
++fi
++
++CURRENT_VERSION=$(dpkg-parsechangelog | awk '/^Version:/ {print $2}')
++REPACK_SUFFIX=+ds
++DEBIAN_REVISION=-1
++FULL_VERSION=$VERSION$REPACK_SUFFIX$DEBIAN_REVISION
++
++if [ $FULL_VERSION = $CURRENT_VERSION ]
++then
++    echo "debian/changelog already up to date"
++    DO_GIT_COMMIT=
++else
++    GIT_DESCRIPTION=version-$GIT_VERSION-$NEW_COMMITS-$(echo $GIT_COMMIT | \
++                                                      cut -c 1-9)
++    echo "using git description ... $GIT_DESCRIPTION"
++
++    echo -n "updating debian/patches/git-description.patch ... "
++    quilt push debian/patches/git-description.patch > /dev/null
++    sed -i "s/^then GIT_DESCRIPTION=.*/then GIT_DESCRIPTION=$GIT_DESCRIPTION/" \
++      M2/configure.ac
++    quilt refresh > /dev/null
++    quilt pop -a > /dev/null
++    echo "done"
++
++    echo -n "updating debian/changelog ... "
++    rm -f debian/changelog.dch # dch raises an error if backup file present
++    dch -m -b -v "$FULL_VERSION" "" 2> /dev/null
++    echo "done"
++fi
++
++if [ $DO_GIT_COMMIT ]
++then
++    git add debian/changelog debian/patches/git-description.patch
++    git commit -m "Bump to version $VERSION$DEBIAN_SUFFIX"
++fi
++
++if [ $NOTARBALL ]
++then
++   exit
++fi
++
++TARBALL=macaulay2_$VERSION$REPACK_SUFFIX.orig.tar.xz
++
++if [ -e ../$TARBALL ]
++then
++    echo "../$TARBALL already exists; exiting"
++    exit
++fi
++
++echo -n "generating M2 tarball ... "
++git archive -o ../macaulay2_$VERSION.orig.tar FETCH_HEAD
++echo "done"
++
++M2_EMACS_PATH=M2/Macaulay2/editors/emacs
++echo -n "finding M2-emacs commit ... "
++M2_EMACS_COMMIT=$(git ls-tree FETCH_HEAD -- $M2_EMACS_PATH | awk '{print $3}')
++echo $M2_EMACS_COMMIT
++
++echo -n "generating M2-emacs tarball ... "
++git submodule update --quiet --init $M2_EMACS_PATH
++cd $M2_EMACS_PATH
++git archive -o "../../../../../M2-emacs.tar" --prefix $M2_EMACS_PATH/ \
++    $M2_EMACS_COMMIT
++cd ../../../..
++git submodule deinit --quiet $M2_EMACS_PATH
++echo "done"
++
++echo -n "merging tarballs ... "
++tar --concatenate --file ../macaulay2_$VERSION.orig.tar ../M2-emacs.tar
++rm ../M2-emacs.tar
++echo "done"
++
++echo -n "removing Files-Excluded from debian/copyright ... "
++FILES_EXCLUDED=$(gawk '/^Files-Excluded:/ {print $2; flag = 1; next} \
++    /^\S/ {flag = 0} flag {print $1}' debian/copyright)
++for FILE in $FILES_EXCLUDED
++do
++    if tar -tf ../macaulay2_$VERSION.orig.tar | grep $FILE > /dev/null
++    then
++      tar --delete --wildcards --file ../macaulay2_$VERSION.orig.tar $FILE
++    else
++      MISSING_FILES="$MISSING_FILES $FILE"
++    fi
++done
++mv ../macaulay2_$VERSION.orig.tar ../macaulay2_$VERSION$REPACK_SUFFIX.orig.tar
++echo "done"
++
++if [ ! -z "$MISSING_FILES" ]
++then
++    echo "warning: in Files-Excluded but not tarball:"
++    for FILE in $MISSING_FILES
++    do
++      echo "  $FILE"
++    done
++fi
++
++echo -n "compressing ... "
++xz -fz ../macaulay2_$VERSION$REPACK_SUFFIX.orig.tar
++echo "done"
++
++echo "orig tarball: ../$TARBALL"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8f63e17e9ebe729c59fc95ba95ef9366ab08b724
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++>&2 echo "+-----------------------------------------------------------------+"
++>&2 echo "| Do NOT use this tarball.  It is missing files from the M2-emacs |"
++>&2 echo "| submodule.  Instead, run 'debian/rules get-orig-source'.        |"
++>&2 echo "+-----------------------------------------------------------------+"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dc58491cf86dcfde8bccf4bdb205cfe2e6d7edc5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++M2/Macaulay2/editors/emacs/M2-symbols.el.gz
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b68757e402fd51c879758b803599b64188a7745b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,16 @@@
++# Pre-generated example code used by Macaulay2's built-in help system.
++macaulay2 source: package-does-not-install-examples debian/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/AdjointIdeal/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Bertini/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/ConvexInterface/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/DecomposableSparseSystems/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MapleInterface/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MonodromySolver/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MonomialIntegerPrograms/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/NCAlgebra/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/NumericalSchubertCalculus/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/PHCpack/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Python/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Parametrization/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/StatePolytope/examples/
++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Tropical/examples/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fae5abdcc50b68ab8cd72ee6323b5579ec63c111
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++extend-diff-ignore = "M2/submodules"
++extend-diff-ignore = "M2/BUILD"
++extend-diff-ignore = "M2/Macaulay2/m2/TAGS.doc"
++extend-diff-ignore = "M2/configure"
++extend-diff-ignore = "M2/include/M2/config.h.in"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7beb74c0a447f479f833e033f91ae0bbf61f029f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++stdio << "checking if documentation database can be loaded ... "
++-- check a key containing a UTF-8 character that is known to cause problems
++-- when a gdbm database is loaded on the wrong architecture
++if (needsPackage "Macaulay2Doc")#"raw documentation database"#?"Gröbner bases"
++then (print "yes"; exit 0) else (print "no"; exit 1)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6b8adef4600e3c38481d6d6dc5583cfe37154a25
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18 @@@
++Test-Command: M2 --silent --check 1 -q --stop -E "exit 0"
++Depends: macaulay2
++Restrictions: allow-stderr
++Features: test-name=basic-tests
++
++Test-Command: M2 --check 2
++Depends: 4ti2, gfan, macaulay2, normaliz
++Restrictions: allow-stderr
++Features: test-name=core-tests
++
++Test-Command: M2 --check 3
++Depends: 4ti2, cohomcalg, coinor-csdp, gfan, macaulay2, nauty, normaliz, topcom
++Restrictions: allow-stderr
++Features: test-name=package-tests
++
++Test-Command: M2 --script debian/tests/check-doc-db.m2
++Depends: macaulay2
++Features: test-name=database-smoke-test
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fd4c2ca3ae8b754695faa19b3f92d7fd99d221ec
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,29 @@@
++---
++Repository: https://github.com/Macaulay2/M2
++Bug-Database: https://github.com/Macaulay2/M2/issues
++Funding:
++  - NSF DMS 92-10805
++  - NSF DMS 92-10807
++  - NSF DMS 96-22608
++  - NSF DMS 96-23232
++  - NSF DMS 99-70085
++  - NSF DMS 99-70348
++  - NSF DMS 03-11378
++  - NSF DMS 03-11806
++  - NSF DMS 08-10918
++  - NSF DMS 08-10948
++  - NSF DMS 10-02171
++  - NSF DMS 10-02210
++  - NSF DMS 15-02209
++  - NSF DMS 15-02294
++  - NSF DMS 20-01206
++  - NSF DMS 20-01267
++  - NSF DMS 20-01367
++Reference:
++  Author: Grayson, Daniel R. and Stillman, Michael E.
++  Title: Macaulay2, a software system for research in algebraic geometry
++  Type: misc
++  URL: https://faculty.math.illinois.edu/Macaulay2/
++Webservice:
++  - http://web.macaulay2.com/
++  - https://www.unimelb-macaulay2.cloud.edu.au/
diff --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e6c59211dadfc1255125eda4ad8164261415b9ce
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++version=4
++opts=dversionmangle=s/@DEB_EXT@//,repacksuffix=+ds,uversionmangle=s/-rc/~rc/ \
++https://github.com/Macaulay2/M2/tags .*/release-@ANY_VERSION@@ARCHIVE_EXT@ \
++debian debian/scripts/m2-tarball-warning.sh