From 898df615f192a8c23091ce0b18eca87b356bd042 Mon Sep 17 00:00:00 2001 From: Doug Torrance Date: Mon, 25 Apr 2022 19:14:15 +0100 Subject: [PATCH] Import macaulay2_1.19.1+ds-8.debian.tar.xz [dgit import tarball macaulay2 1.19.1+ds-8 macaulay2_1.19.1+ds-8.debian.tar.xz] --- README.Debian | 68 + changelog | 789 ++++++ clean | 2 + control | 134 + copyright | 2311 +++++++++++++++++ elpa-macaulay2.docs | 3 + elpa-macaulay2.elpa | 2 + elpa-test | 2 + .../Macaulay2Doc/_application__Directory.out | 7 + .../_application__Directory__Suffix.out | 19 + examples/Macaulay2Doc/_getenv.out | 7 + examples/Macaulay2Doc/_home__Directory.out | 7 + gbp.conf | 19 + macaulay2-common.doc-base | 16 + macaulay2-common.info | 1 + macaulay2-common.install | 3 + macaulay2-common.links | 2 + macaulay2-common.linktrees | 21 + macaulay2-common.lintian-overrides | 56 + macaulay2-pkg.el.in | 1 + macaulay2.install | 2 + macaulay2.links | 1 + macaulay2.postinst | 49 + macaulay2.prerm | 41 + missing-sources/nouislider.css/nouislider.css | 165 ++ .../nouislider.css/nouislider.pips.css | 93 + .../nouislider.css/nouislider.tooltips.css | 22 + missing-sources/nouislider.js/constants.js | 21 + missing-sources/nouislider.js/helpers.js | 99 + missing-sources/nouislider.js/interface.js | 23 + missing-sources/nouislider.js/intro.js | 21 + missing-sources/nouislider.js/options.js | 378 +++ missing-sources/nouislider.js/outro.js | 1 + missing-sources/nouislider.js/pips.js | 247 ++ missing-sources/nouislider.js/range.js | 272 ++ missing-sources/nouislider.js/scope.js | 312 +++ missing-sources/nouislider.js/scope_end.js | 1 + missing-sources/nouislider.js/scope_events.js | 316 +++ .../nouislider.js/scope_helpers.js | 63 + missing-sources/nouislider.js/scope_start.js | 13 + missing-sources/nouislider.js/structure.js | 143 + missing-sources/nouislider.js/tooltips.js | 33 + missing-sources/render-a11y-string.js | 712 +++++ not-installed | 1 + patches/git-description.patch | 19 + patches/givaro-bool-constant.patch | 37 + patches/reproducible-version.patch | 37 + patches/series | 9 + patches/skip-failing-core-tests.patch | 117 + patches/skip-failing-package-tests.patch | 746 ++++++ patches/tbb-2021.patch | 107 + patches/use-cached-examples.patch | 18 + patches/use-dh-elpa.patch | 56 + patches/use-shared-mathicgb-and-friends.patch | 170 ++ rules | 130 + salsa-ci.yml | 11 + scripts/Debian.m2 | 309 +++ scripts/m2-get-orig-source.sh | 297 +++ scripts/m2-tarball-warning.sh | 4 + source/format | 1 + source/include-binaries | 1 + source/lintian-overrides | 16 + source/options | 5 + tests/check-doc-db.m2 | 5 + tests/control | 18 + upstream/metadata | 29 + watch | 4 + 67 files changed, 8645 insertions(+) create mode 100644 README.Debian create mode 100644 changelog create mode 100644 clean create mode 100644 control create mode 100644 copyright create mode 100644 elpa-macaulay2.docs create mode 100644 elpa-macaulay2.elpa create mode 100644 elpa-test create mode 100644 examples/Macaulay2Doc/_application__Directory.out create mode 100644 examples/Macaulay2Doc/_application__Directory__Suffix.out create mode 100644 examples/Macaulay2Doc/_getenv.out create mode 100644 examples/Macaulay2Doc/_home__Directory.out create mode 100644 gbp.conf create mode 100644 macaulay2-common.doc-base create mode 100644 macaulay2-common.info create mode 100644 macaulay2-common.install create mode 100644 macaulay2-common.links create mode 100644 macaulay2-common.linktrees create mode 100644 macaulay2-common.lintian-overrides create mode 100644 macaulay2-pkg.el.in create mode 100644 macaulay2.install create mode 100644 macaulay2.links create mode 100755 macaulay2.postinst create mode 100755 macaulay2.prerm create mode 100644 missing-sources/nouislider.css/nouislider.css create mode 100644 missing-sources/nouislider.css/nouislider.pips.css create mode 100644 missing-sources/nouislider.css/nouislider.tooltips.css create mode 100644 missing-sources/nouislider.js/constants.js create mode 100644 missing-sources/nouislider.js/helpers.js create mode 100644 missing-sources/nouislider.js/interface.js create mode 100644 missing-sources/nouislider.js/intro.js create mode 100644 missing-sources/nouislider.js/options.js create mode 100644 missing-sources/nouislider.js/outro.js create mode 100644 missing-sources/nouislider.js/pips.js create mode 100644 missing-sources/nouislider.js/range.js create mode 100644 missing-sources/nouislider.js/scope.js create mode 100644 missing-sources/nouislider.js/scope_end.js create mode 100644 missing-sources/nouislider.js/scope_events.js create mode 100644 missing-sources/nouislider.js/scope_helpers.js create mode 100644 missing-sources/nouislider.js/scope_start.js create mode 100644 missing-sources/nouislider.js/structure.js create mode 100644 missing-sources/nouislider.js/tooltips.js create mode 100644 missing-sources/render-a11y-string.js create mode 100644 not-installed create mode 100644 patches/git-description.patch create mode 100644 patches/givaro-bool-constant.patch create mode 100644 patches/reproducible-version.patch create mode 100644 patches/series create mode 100644 patches/skip-failing-core-tests.patch create mode 100644 patches/skip-failing-package-tests.patch create mode 100644 patches/tbb-2021.patch create mode 100644 patches/use-cached-examples.patch create mode 100644 patches/use-dh-elpa.patch create mode 100644 patches/use-shared-mathicgb-and-friends.patch create mode 100755 rules create mode 100644 salsa-ci.yml create mode 100644 scripts/Debian.m2 create mode 100755 scripts/m2-get-orig-source.sh create mode 100755 scripts/m2-tarball-warning.sh create mode 100644 source/format create mode 100644 source/include-binaries create mode 100644 source/lintian-overrides create mode 100644 source/options create mode 100644 tests/check-doc-db.m2 create mode 100644 tests/control create mode 100644 upstream/metadata create mode 100644 watch diff --git a/README.Debian b/README.Debian new file mode 100644 index 0000000..fea477a --- /dev/null +++ b/README.Debian @@ -0,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 , Thu, 27 Jan 2022 11:32:40 -0500 diff --git a/changelog b/changelog new file mode 100644 index 0000000..f23a047 --- /dev/null +++ b/changelog @@ -0,0 +1,789 @@ +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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Sat, 26 Dec 2020 00:29:42 -0500 + +macaulay2 (1.16+git55.94c4b7d+ds-2) unstable; urgency=medium + + * Upload to unstable. + + -- Doug Torrance 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 Wed, 04 Nov 2020 20:54:18 -0500 + +macaulay2 (1.16+git55.94c4b7d+ds-1) unstable; urgency=low + + * Initial release (Closes: #439888). + + -- Doug Torrance Sun, 04 Oct 2020 16:31:20 -0400 diff --git a/clean b/clean new file mode 100644 index 0000000..5e20d65 --- /dev/null +++ b/clean @@ -0,0 +1,2 @@ +debian/macaulay2-pkg.el +M2/usr-host/lib/libmissing.a diff --git a/control b/control new file mode 100644 index 0000000..9c09692 --- /dev/null +++ b/control @@ -0,0 +1,134 @@ +Source: macaulay2 +Section: math +Priority: optional +Maintainer: Debian Math Team +Uploaders: Doug Torrance +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 , + 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. diff --git a/copyright b/copyright new file mode 100644 index 0000000..b86056e --- /dev/null +++ b/copyright @@ -0,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 + 1993-2020 Michael E. Stillman +License: GPL-2+ + +Files: debian/* +Copyright: 2015-2021 Doug Torrance +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 +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 + 2018 Thomas Baumgart + 2020 Mahrud Sayrafi +License: BSD-3-Clause + +Files: M2/cmake/FindGMP.cmake +Copyright: 2016 Jack Poulson + 2020 Mahrud Sayrafi +License: BSD-3-Clause + +Files: M2/cmake/FindMPFR.cmake +Copyright: 2006, 2007 Montel Laurent + 2008, 2009 Gael Guennebaud + 2010 Jitse Niesen + 2015 Jack Poulson + 2020 Mahrud Sayrafi +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 +License: FSFAP + +Files: M2/config/ax_func_accept_argtypes.m4 +Copyright: 2008 Daniel Richard G. +License: GPL-2+ with autoconf exception + +Files: M2/config/ax_prog_cc_for_build.m4 +Copyright: 2008 Paolo Bonzini +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 +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 + 2017 Mike Stillman +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 +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 + 2020 Carolyn Yackel + 2020 Justin Chen + 2020 Mahrud Sayrafi +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 +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/AlgebraicSplines.m2 +Copyright: 2014-2015 Mike Dipasquale +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 +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 + 2016, 2021 Mike Stillman +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 + 2006, 2009, 2018, 2020, 2021 Mike Stillman +Comment: See Comment at the top of this file. +License: GPL-2+ and public-domain + +Files: M2/Macaulay2/packages/Bertini* +Copyright: 2020 Elizabeth Gross + 2020 Jose Israel Rodriguez + 2020 Dan Bates + 2020 Anton Leykin +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 +License: GPL-3+ + +Files: M2/Macaulay2/packages/BGG.m2 +Copyright: 2016 Hirotachi Abo + 2016 Wolfram Decker + 2016 David Eisenbud + 2016 Frank Schreyer + 2016 Gregory G. Smith + 2016 Mike Stillman +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 +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/BoijSoederberg.m2 +Copyright: 2015 David Eisenbud + 2015 Frank Schreyer + 2015 Mike Stillman + 2015 Courtney Gibbons + 2015 Branden Stone +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 +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/BooleanGB.m2 +Copyright: 2011 Franziska Hinkelmann + 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 + 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 + 2016 Frank Moore + 2016 Frank-Olaf Schreyer + 2016 Greg Smith + 2016 Lily Silverstein +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/CharacteristicClasses.m2 +Copyright: 2015 Martin Helmer + 2015 Christine Jost +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Chordal* +Copyright: 2017 Diego Cifuentes + 2017 Pablo Parrilo +License: GPL-2+ + +Files: M2/Macaulay2/packages/CoincidentRootLoci* +Copyright: 2020 Maria Chiara Brambilla + 2020 Giovanni Staglianò +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Complexes.m2 +Copyright: 2020 Gregory G. Smith + 2020 Mike Stillman +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 +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/CorrespondenceScrolls.m2 +Copyright: 2018 David Eisenbud + 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ò +License: GPL-2+ + +Files: M2/Macaulay2/packages/DecomposableSparseSystems* +Copyright: 2020 Taylor Brysiewicz + 2020 Jose Israel Rodriguez + 2020 Frank Sottile + 2020 Thomas Yahl +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Depth.m2 +Copyright: 2010 Bart Snapp + 2016 David Eisenbud + 2016 Branden Stone +License: public-domain + +Files: M2/Macaulay2/packages/DeterminantalRepresentations.m2 +Copyright: 2019 Justin Chen + 2019 Papri Dey +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/DGAlgebras.m2 +Copyright: 2017 Frank Moore +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/DiffAlg.m2 +Copyright: 2018 Manuel Dubinsky + 2018 Cesar Massri + 2018 Ariel Molinuevo + 2018 Federico Quallbrunn +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Divisor.m2 +Copyright: 2018 Karl Schwede + 2018 Zhaoning Yang +License: public-domain + +Files: M2/Macaulay2/packages/Dmodules* +Copyright: 1999-2009 Anton Leykin + 1999-2009 Harrison Tsai +License: GPL-2+ + +Files: M2/Macaulay2/packages/EdgeIdeals.m2 +Copyright: 2008-2010 Chris Francisco + 2008-2010 Andrew Hoefel + 2008-2010 Adam Van Tuyl +License: GPL-2+ + +Files: M2/Macaulay2/packages/EliminationMatrices.m2 +Copyright: 2011, 2012 Nicolás Botbol + 2011, 2012 Laurent Busé + 2011, 2012 Manuel Dubinsky +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/EllipticCurves.m2 +Copyright: 2014 Alessandro Oneto + 2014 Stefano Marseglia +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 + 2011 Jakob Kröker +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 +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/EquivariantGB* +Copyright: 2014 Chris Hillar + 2014 Robert Krone + 2014 Anton Leykin +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/EigenSolver.m2 +Copyright: 2020 Laurent Busé + 2020 Justin Chen + 2020 Kisun Lee + 2020 Anton Leykin + 2020 Tomas Pajdla + 2020 Erika Pirnes +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/ExampleSystems* +Copyright: 2020 Anton Leykin + 2020 Justin Chen + 2020 Kelly Maluccio + 2020 Leah Gold +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 + 2017, 2021 Luca Amata +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/FastMinors.m2 +Copyright: 2021 Boyana Martinova + 2021 Marcus Robinson + 2021 Karl Schwede + 2021 Yuhui (Wei) Yao +License: public-domain + +Files: M2/Macaulay2/packages/FGLM.m2 +Copyright: 2019 Dylan Peifer + 2019 Mahrud Sayrafi +License: GPL-3+ + +Files: M2/Macaulay2/packages/FiniteFittingIdeals.m2 +Copyright: 2015 Gustav Sædén Ståhl +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/FourTiTwo.m2 +Copyright: 2008, 2009 Mike Stillman + 2008, 2009 Josephine Yu + 2008, 2009 Sonja Petrovic +Comment: See Comment at the top of this file. +License: GPL-2+ and public-domain + +Files: M2/Macaulay2/packages/FrobeniusThresholds* +Copyright: 2019 Juliette Bruce + 2019 Daniel Hernández + 2019 Karl Schwede + 2019 Dan Smolkin + 2019 Pedro Teixeira + 2019 Emily Witt +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 +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 + 2008, 2009 Nathaniel Stapleton +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/gfanInterface.m2 +Copyright: 2012 Mike Stillman + 2012 Andrew Hoefel + 2012 Diane Maclagan + 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 + 2020 Ritvik Ramkumar +License: GPL-2+ + +Files: M2/Macaulay2/packages/GradedLieAlgebras* +Copyright: 2020 Clas Löfwall + 2020 Samuel Lundqvist +License: GPL-2+ + +Files: M2/Macaulay2/packages/GraphicalModels.m2 +Copyright: 2013 Luis Garcia-Puente + 2013 Sonja Petrovic + 2013 Mike Stillman + 2013 Seth Sullivant + 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 + 2020 Luis David Garcia Puente + 2020 Roser Homs Pons + 2020 Olga Kuznetsova + 2020 Harshit J Motwani + 2020 Elina Robeva + 2020 David Swinarski +License: GPL-2+ + +Files: M2/Macaulay2/packages/Graphs.m2 +Copyright: 2010 Amelia Taylor + 2010 Augustine O'Keefe + 2014 Jack Burkart + 2014 David Cook II + 2014 Caroline Jansen +License: GPL-2+ + +Files: M2/Macaulay2/packages/GroebnerStrata.m2 +Copyright: 2021 Mike Stillman + 2021 Kristine Jones +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/Hadamard.m2 +Copyright: 2020 Iman Bahmani Jafarloo +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/HodgeIntegrals.m2 +Copyright: 2010 Stephanie Yang +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/IntegralClosure* +Copyright: 2020 David Eisenbud + 2020 Mike Stillman + 2020 Amelia Taylor +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/InverseSystems.m2 +Copyright: 2018 David Eisenbud + 2018 Mats Boij +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Jets* +Copyright: 2021 Federico Galetto + 2021 Nicholas Iammarino +License: GPL-3+ + +Files: M2/Macaulay2/packages/InvolutiveBases.m2 +Copyright: 2009 Daniel Robertz +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/K3Carpets.m2 +Copyright: 2018 David Eisenbud + 2018 Frank-Olaf Schreyer +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/K3Surfaces.m2 +Copyright: 2021 Michael Hoff + 2021 Giovanni Staglianò +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Kronecker.m2 +Copyright: 2010 Edward Carter +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/KustinMiller.m2 +Copyright: 2011 Janko Boehm + 2011 Stavros Papadakis +License: GPL-2+ + +Files: M2/Macaulay2/packages/LatticePolytopes.m2 +Copyright: 2015 Anders Lundman + 2015 Gustav Sædén Ståhl +License: public-domain + +Files: M2/Macaulay2/packages/LexIdeals.m2 +Copyright: 2008 Chris Francisco +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/LieTypes.m2 +Copyright: 2018 Dave Swinarski +License: GPL-2+ + +Files: M2/Macaulay2/packages/LinearTruncations.m2 +Copyright: 2021 Lauren Cranton Heller + 2021 David Eisenbud + 2021 Navid Nemati +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/LocalRings* +Copyright: 2017 Mahrud Sayrafi + 2008, 2017 Mike Stillman + 2008 David Eisenbud +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 + 2014 David Swinarski +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 +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/MinimalPrimes* +Copyright: 2014 Frank Moore + 2014 Mike Stillman + 2014 Franziska Hinkelmann + 2020 Justin Chen + 2020 Mahrud Sayrafi +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 +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/MixedMultiplicity.m2 +Copyright: 2020 Kriti Goel + 2020 Sudeshna Roy + 2020 J. K. Verma +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/ModuleDeformations.m2 +Copyright: 2007-2008 Bradford Hovinen +License: GPL-2+ + +Files: M2/Macaulay2/packages/MonodromySolver* +Copyright: 2020 Timothy Duff + 2020 Cvetelina Hill + 2020 Anders Nedergaard Jensen + 2020 Kisun Lee + 2020 Anton Leykin + 2020 Jeff Sommars +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/MonomialAlgebras* +Copyright: 2013 David Eisenbud + 2013 Janko Boehm +License: GPL-2+ + +Files: M2/Macaulay2/packages/MonomialIntegerPrograms* +Copyright: Lily Silverstein + Jay White +License: GPL-3+ + +Files: M2/Macaulay2/packages/MultiGradedRationalMap.m2 +Copyright: 2018 Yairon Cid Ruiz +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/MultiplicitySequence.m2 +Copyright: 2020 Justin Chen + 2020 Youngsu Kim + 2020 Jonathan Montaño +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 +License: GPL-3+ + +Files: M2/Macaulay2/packages/MultiplierIdealsDim2.m2 +Copyright: 2015 Ferran Dachs-Cadefau +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 +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/NCAlgebra/* + M2/Macaulay2/packages/NCAlgebra.m2 +Copyright: 2016 Frank Moore + 2016 Andrew Conner + 2016 Courtney Gibbons +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/NoetherNormalization.m2 +Copyright: 2010 Bart Snap + 2010 Nathaniel Stapleton +License: public-domain + +Files: M2/Macaulay2/packages/NoetherianOperators.m2 +Copyright: 2020 Robert Krone + 2020 Justin Chen + 2020 Marc Harkonen + 2020 Yairon Cid-Ruiz + 2020 Anton Leykin +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 + 2011 Hans-Christian Graf v. Bothmer +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 + 2011, 2012, 2015, 2016 Christof Soeger +License: GPL-2+ + +Files: M2/Macaulay2/packages/NormalToricVarieties* + M2/Macaulay2/packages/SpectralSequences.m2 +Copyright: 2009-2020 Gregory G. Smith +License: GPL-3+ + +Files: M2/Macaulay2/packages/NumericalAlgebraicGeometry* +Copyright: 2014 Anton Leykin + 2014 Robert Krone +License: GPL-2+ + +Files: M2/Macaulay2/packages/NumericalCertification* +Copyright: 2018 Kisun Lee +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/NumericalImplicitization.m2 +Copyright: 2019 Justin Chen + 2018 Joe Kileel +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/NumericalLinearAlgebra.m2 +Copyright: 2020 Robert Krone + 2020 Marc Harkonen + 2020 Anton Leykin +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/NumericalSchubertCalculus* +Copyright: 2017 Anton Leykin + 2017 Abraham Martin del Campo + 2017 Frank Sottile + 2017 Jan Verschelde +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/NumericSolutions.m2 +Copyright: 2017 Laura Menini + 2017 Corrado Possieri + 2017 Antonio Tornambe +License: GPL-3+ + +Files: M2/Macaulay2/packages/OldPolyhedra.m2 +Copyright: 2010 René Birkner +License: GPL-3+ + +Files: M2/Macaulay2/packages/OldToricVectorBundles.m2 + M2/Macaulay2/packages/ToricVectorBundles.m2 +Copyright: 2010 René Birkner + 2010 Nathan Owen Ilten + 2010 Lars Petersen +License: GPL-3+ + +Files: M2/Macaulay2/packages/OpenMath* + M2/Macaulay2/packages/SCSCP* +Copyright: 2009 Dan Roozemond (TU Eindhoven, Netherlands) + +License: Apache-2.0 + +Files: M2/Macaulay2/packages/PackageCitations.m2 +Copyright: 2017 Aaron Dall +License: GPL-2+ + +Files: M2/Macaulay2/packages/PencilsOfQuadrics.m2 +Copyright: 2020 Frank-Olaf Schreyer + 2020 David Eisenbud + 2020 Yeongrak Kim +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 + 2013 Sonja Petrovic + 2013 Jan Verschelde +License: GPL-2+ + +Files: M2/Macaulay2/packages/PhylogeneticTrees.m2 +Copyright: 2016 Hector Banos + 2016 Nathaniel Bushek + 2016 Ruth Davidson + 2016 Elizabeth Gross + 2016 Pamela Harris + 2016 Robert Krone + 2016 Colby Long + 2016 AJ Stewart + 2016 Robert Walker +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/PieriMaps.m2 +Copyright: 2008, 2009 Steven V Sam +License: GPL-3+ + +Files: M2/Macaulay2/packages/Points.m2 +Copyright: 2008 Mike Stillman + 2008 Gregory G. Smith + 2008 Stein A. Strømme + 2016 David Eisenbud + 2018 Federico Galetto + 2018 Joseph W. Skelton +Comment: See Comment at the top of this file. +License: GPL-2+ and public-domain + +Files: M2/Macaulay2/packages/Polyhedra* +Copyright: 2010 René Birkner +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 + 2011-2014 Sonja Mapes + 2011-2014 Gwyn Whieldon +License: GPL-2+ + +Files: M2/Macaulay2/packages/PositivityToricBundles.m2 +Copyright: 2020 Andreas Hochenegger +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 +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Python.m2 +Copyright: 2021 Daniel R. Grayson + 2021 Doug Torrance +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 +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 + 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 + 2013 Branden Stone +License: GPL-2+ + +Files: M2/Macaulay2/packages/RandomComplexes.m2 + M2/Macaulay2/packages/SVDComplexes.m2 +Copyright: 2018 Frank Schreyer + 2018 Michael E. Stillman +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 + 2011 Hans-Christian Graf v. Bothmer + 2011 Florian Geiss +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/RandomCurvesOverVerySmallFiniteFields.m2 +Copyright: 2018 Christian Bopp + 2011 Frank-Olaf Schreyer +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 + 2016 David Eisenbud + 2016 Robert Krone + 2016 Jay Yang +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/RandomMonomialIdeals.m2 +Copyright: 2019 Sonja Petrovic + 2019 Despina Stasi + 2019 Dane Wilburne + 2019 Tanner Zielinski + 2019 Daniel Kosmas + 2019 Parker Joncus + 2019 Richard Osborn + 2019 Monica Yun + 2019 Genevieve Hummel +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 + 2011 Florian Geiss + 2011 Daniel R. Grayson + 2011 Frank-Olaf Schreyer +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 + 2021 Thai Nguyen + 2021 Karl Schwede + 2021 Sarasij Maitra + 2021 Zhan Jiang + 2021 Frank-Olaf Schreyer +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/RationalMaps.m2 +Copyright: 2019 Karl Schwede + 2019 Daniel Smolkin + 2019 S. Hamid Hassanzadeh + 2019 C.J. Bott +License: public-domain + +Files: M2/Macaulay2/packages/RationalPoints.m2 +Copyright: 2009 Nathaniel Stapleton +License: GPL-2+ + +Files: M2/Macaulay2/packages/RationalPoints2.m2 +Copyright: 2021 Jieao Song +License: GPL-2+ + +Files: M2/Macaulay2/packages/ReactionNetworks* +Copyright: 2016 Cvetelina Hill + 2016 Timothy Duff + 2016 Kisun Lee + 2016 Anton Leykin + 2018 Alexandru Iosif + 2018 Michael Adamer +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/RealRoots.m2 +Copyright: 2020 Jordy Lopez + 2020 Kelly Maluccio + 2020 Frank Sottile + 2020 Thomas Yahl +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 + 2006, 2008, 2017, 2019 Amelia Taylor + 2006, 2008, 2017, 2019 Sorin Popescu + 2006, 2008, 2017, 2019 Michael E. Stillman +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 + 2020 Michael Hoff +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/ResLengthThree.m2 +Copyright: 2020 Lars Winther Christensen + 2020 Luigi Ferraro + 2020 Francesca Gandini + 2020 Frank Moore + 2020 Oana Veliche +License: GPL-2+ + +Files: M2/Macaulay2/packages/ResolutionsOfStanleyReisnerRings.m2 +Copyright: 2020 Ashleigh Adams +License: GPL-2+ + +Files: M2/Macaulay2/packages/RunExternalM2.m2 + M2/Macaulay2/packages/VectorFields.m2 +Copyright: 2016 Brian Pike +License: GPL-2+ + +Files: M2/Macaulay2/packages/Saturation* +Copyright: 2020 Justin Chen + 2020 Mahrud Sayrafi + 2020 Mike Stillman +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 + 2013 Michael E. Stillman + 2013 Stein A. Strømme + 2013 David Eisenbud + 2013 Charley Crissman +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 + 2019 Amy Huang + 2019 Robert Laudone + 2019 Michael Perlman + 2019 Claudiu Raicu + 2019 Steven V. Sam + 2019 Joao Pedro Santos +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/SchurFunctors* +Copyright: 2008 Michael E. Stillman + 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 +License: GPL-3+ + +Files: M2/Macaulay2/packages/SectionRing.m2 +Copyright: 2016 Andrew Bydlon +License: public-domain + +Files: M2/Macaulay2/packages/SegreClasses.m2 +Copyright: 2018 Martin Helmer + 2018 Corey Harris +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 + 2018, 2019 Thomas Kahle + 2018, 2019 Pablo A. Parrilo + 2018, 2019 Helfried Peyrl +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Seminormalization.m2 +Copyright: 2019 Karl Schwede + 2019 Bernard Serbinowski +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/SimpleDoc* +Copyright: 2020 Daniel R. Grayson + 2020 Mike Stillman + 2020 Mahrud Sayrafi +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 + 2006, 2010 Gregory G. Smith + 2006, 2010 Mike Stillman +License: GPL-2+ + +Files: M2/Macaulay2/packages/SimplicialPosets.m2 +Copyright: 2019 Nathan Nichols +License: GPL-3+ + +Files: M2/Macaulay2/packages/SlackIdeals.m2 +Copyright: 2020 Amy Wiebe + 2020 Antonio Macchia +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/SLnEquivariantMatrices.m2 +Copyright: 2017-2018 Paolo Lella +License: GPL-2+ + +Files: M2/Macaulay2/packages/SLPexpressions* +Copyright: 2019 Anton Leykin + 2019 Timothy Duff + 2019 Justin Chen + 2019 Mike Stillman +License: GPL-2+ + +Files: M2/Macaulay2/packages/SpaceCurves.m2 +Copyright: 2018 Frank Schreyer + 2018 Mike Stillman + 2018 Mengyuan Zhang +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 +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/StatGraphs.m2 +Copyright: 2020 Carlos Amendola + 2020 Luis David Garcia Puente + 2020 Roser Homs Pons + 2020 Olga Kuznetsova + 2020 Harshit J Motwani +License: GPL-2+ + +Files: M2/Macaulay2/packages/StronglyStableIdeals.m2 +Copyright: 2018 Davide Alberelli + 2018 Paolo Lella +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/SuperLinearAlgebra.m2 +Copyright: 2021 Fereshteh Bahadorykhalily + 2021 Fatemeh Tarashi Kashani +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/SwitchingFields.m2 +Copyright: 2020 Zhan Jiang + 2020 Sarasij Maitra +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/SymbolicPowers.m2 +Copyright: 2019 Eloisa Grifo +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 + 2006 David Eisenbud +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/TateOnProducts.m2 +Copyright: 2020 Daniel Erman + 2020 David Eisenbud + 2020 Frank-Olaf Schreyer + 2020 Michael E. Stillman + 2020 Yeongrak Kim +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 + 2011 Daniel Erman + 2011 Gregory G. Smith + 2011 Dumitru Stamate +License: GPL-3+ + +Files: M2/Macaulay2/packages/TestIdeals* +Copyright: 2019 Erin Bela + 2019 Alberto F. Boix + 2019 Juliette Bruce + 2019 Drew Ellingson + 2019 Daniel Hernandez + 2019 Zhibek Kadyrsizova + 2019 Mordechai Katzman + 2019 Sara Malec + 2019 Matthew Mastroeni + 2019 Maral Mostafazadehfard + 2019 Marcus Robinson + 2019 Karl Schwede + 2019 Dan Smolkin + 2019 Pedro Teixeira + 2019 Emily Witt +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/ThinSincereQuivers.m2 +Copyright: 2019 Mary Barker + 2019 Patricio Gallardo +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/ThreadedGB.m2 +Copyright: 2020 Sonja Petrovic + 2020 Sara Jamshidi Zelenberg + 2020 Tanner Zielinski +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/TorAlgebra.m2 +Copyright: 2018 Lars Winther Christensen + 2018 Oana Veliche +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/ToricInvariants.m2 +Copyright: 2018 Martin Helmer +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/ToricTopology.m2 +Copyright: 2015 Alvise Trevisan + 2015 Alexander I. Suciu +License: GPL-3+ + +Files: M2/Macaulay2/packages/TriangularSets* +Copyright: 2017 Diego Cifuentes +License: GPL-2+ + +Files: M2/Macaulay2/packages/Triplets.m2 +Copyright: 2013 Gunnar Floystad +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Tropical* +Copyright: 2019 Carlos Amendola + 2019 Kathlen Kohn + 2019 Sara Lamboglia + 2019 Diane Maclagan + 2019 Benjamin Smith + 2019 Jeff Sommars + 2019 Paolo Tripoli + 2019 Magdalena Zajaczkowska +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/TSpreadIdeals.m2 +Copyright: 2021 Luca Amata +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 +License: GPL-2+ + +Files: M2/Macaulay2/packages/undistributed-packages/Polyhedra2.m2 + M2/Macaulay2/packages/undistributed-packages/PolyhedralObjects.m2 +Copyright: 2012 Nathan Ilten + 2012 Josephine Yu + 2012 Qingchun Ren + 2010 Rene Birker +License: GPL-3+ + +Files: M2/Macaulay2/packages/undistributed-packages/PolymakeInterface.m2 +Copyright: 2012 Josephine Yu + 2012 Nathan Ilten + 2012 Qingchun Ren +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/SubalgebraBases* +Copyright: 2021 Michael Burr + 2021 Oliver Clarke + 2021 Timothy Duff + 2021 Jackson Leaman + 2021 Nathan Nichols + 2021 Elise Walker +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 + 1997 Harry Tsai +License: GPL-2+ + +Files: M2/Macaulay2/packages/VersalDeformations.m2 +Copyright: 2020 Nathan Owen Ilten +License: GPL-3+ + +Files: M2/Macaulay2/packages/VirtualResolutions* +Copyright: 2018-2020 Ayah Almousa + 2018-2020 Christine Berkesch + 2018-2020 Juliette Bruce + 2018-2020 David Eisenbud + 2018-2020 Michael Loper + 2018-2020 Mahrud Sayrafi +Comment: See Comment at the top of this file. +License: public-domain + +Files: M2/Macaulay2/packages/Visualize* +Copyright: 2017 Brett Barwick + 2017 Thomas Enkosky + 2017 Branden Stone + 2017 Jim Vallandingham +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 +License: WTFPL +Comment: https://github.com/leongersen/noUiSlider/tree/8.5.1 + +Files: M2/Macaulay2/packages/Visualize/*/BootSideMenu.* +Copyright: 2014-2017 Andrea Lombardo +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 +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 . + 2012-2015 Dan Nicholson +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 + . + 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 + . + 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 . + . + 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 + . + 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. diff --git a/elpa-macaulay2.docs b/elpa-macaulay2.docs new file mode 100644 index 0000000..f58e26a --- /dev/null +++ b/elpa-macaulay2.docs @@ -0,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 diff --git a/elpa-macaulay2.elpa b/elpa-macaulay2.elpa new file mode 100644 index 0000000..6afce0e --- /dev/null +++ b/elpa-macaulay2.elpa @@ -0,0 +1,2 @@ +debian/macaulay2-pkg.el +debian/tmp/usr/share/emacs/site-lisp/elpa/macaulay2-*/*.el diff --git a/elpa-test b/elpa-test new file mode 100644 index 0000000..401265d --- /dev/null +++ b/elpa-test @@ -0,0 +1,2 @@ +# don't override dh_auto_test with dh_elpa_test +disable = true diff --git a/examples/Macaulay2Doc/_application__Directory.out b/examples/Macaulay2Doc/_application__Directory.out new file mode 100644 index 0000000..82988dc --- /dev/null +++ b/examples/Macaulay2Doc/_application__Directory.out @@ -0,0 +1,7 @@ +-- -*- M2-comint -*- hash: 869580758 + +i1 : applicationDirectory() + +o1 = /home/m2user/.Macaulay2/ + +i2 : diff --git a/examples/Macaulay2Doc/_application__Directory__Suffix.out b/examples/Macaulay2Doc/_application__Directory__Suffix.out new file mode 100644 index 0000000..7fee690 --- /dev/null +++ b/examples/Macaulay2Doc/_application__Directory__Suffix.out @@ -0,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 : diff --git a/examples/Macaulay2Doc/_getenv.out b/examples/Macaulay2Doc/_getenv.out new file mode 100644 index 0000000..15dfc64 --- /dev/null +++ b/examples/Macaulay2Doc/_getenv.out @@ -0,0 +1,7 @@ +-- -*- M2-comint -*- hash: 121703874 + +i1 : getenv "HOME" + +o1 = /home/m2user + +i2 : diff --git a/examples/Macaulay2Doc/_home__Directory.out b/examples/Macaulay2Doc/_home__Directory.out new file mode 100644 index 0000000..d92344b --- /dev/null +++ b/examples/Macaulay2Doc/_home__Directory.out @@ -0,0 +1,7 @@ +-- -*- M2-comint -*- hash: -60053658 + +i1 : homeDirectory + +o1 = /home/m2user/ + +i2 : diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 0000000..e676edb --- /dev/null +++ b/gbp.conf @@ -0,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 diff --git a/macaulay2-common.doc-base b/macaulay2-common.doc-base new file mode 100644 index 0000000..33fc4bd --- /dev/null +++ b/macaulay2-common.doc-base @@ -0,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 diff --git a/macaulay2-common.info b/macaulay2-common.info new file mode 100644 index 0000000..0ac0fbf --- /dev/null +++ b/macaulay2-common.info @@ -0,0 +1 @@ +usr/share/info/*.info diff --git a/macaulay2-common.install b/macaulay2-common.install new file mode 100644 index 0000000..8ee1328 --- /dev/null +++ b/macaulay2-common.install @@ -0,0 +1,3 @@ +M2/Macaulay2/editors/make-M2-symbols.m2 usr/share/Macaulay2 +usr/share/Macaulay2 +usr/share/doc diff --git a/macaulay2-common.links b/macaulay2-common.links new file mode 100644 index 0000000..ea0cdb3 --- /dev/null +++ b/macaulay2-common.links @@ -0,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 diff --git a/macaulay2-common.linktrees b/macaulay2-common.linktrees new file mode 100644 index 0000000..e176607 --- /dev/null +++ b/macaulay2-common.linktrees @@ -0,0 +1,21 @@ +################################# +# 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 usr/share/Macaulay2/Style/katex/fonts +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 diff --git a/macaulay2-common.lintian-overrides b/macaulay2-common.lintian-overrides new file mode 100644 index 0000000..07db3a6 --- /dev/null +++ b/macaulay2-common.lintian-overrides @@ -0,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 diff --git a/macaulay2-pkg.el.in b/macaulay2-pkg.el.in new file mode 100644 index 0000000..2e91670 --- /dev/null +++ b/macaulay2-pkg.el.in @@ -0,0 +1 @@ +(define-package "macaulay2" "@VERSION@" "Emacs Package for Macaulay2" 'nil) diff --git a/macaulay2.install b/macaulay2.install new file mode 100644 index 0000000..a65408f --- /dev/null +++ b/macaulay2.install @@ -0,0 +1,2 @@ +usr/bin +usr/share/man diff --git a/macaulay2.links b/macaulay2.links new file mode 100644 index 0000000..be451e0 --- /dev/null +++ b/macaulay2.links @@ -0,0 +1 @@ +usr/share/man/man1/M2.1 usr/share/man/man1/M2-binary.1 diff --git a/macaulay2.postinst b/macaulay2.postinst new file mode 100755 index 0000000..e3a6995 --- /dev/null +++ b/macaulay2.postinst @@ -0,0 +1,49 @@ +#!/bin/sh +# postinst script for macaulay2 +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# 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 diff --git a/macaulay2.prerm b/macaulay2.prerm new file mode 100755 index 0000000..555dc73 --- /dev/null +++ b/macaulay2.prerm @@ -0,0 +1,41 @@ +#!/bin/sh +# prerm script for macaulay2 +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# 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 diff --git a/missing-sources/nouislider.css/nouislider.css b/missing-sources/nouislider.css/nouislider.css new file mode 100644 index 0000000..c512f34 --- /dev/null +++ b/missing-sources/nouislider.css/nouislider.css @@ -0,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; +} diff --git a/missing-sources/nouislider.css/nouislider.pips.css b/missing-sources/nouislider.css/nouislider.pips.css new file mode 100644 index 0000000..a337697 --- /dev/null +++ b/missing-sources/nouislider.css/nouislider.pips.css @@ -0,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; +} diff --git a/missing-sources/nouislider.css/nouislider.tooltips.css b/missing-sources/nouislider.css/nouislider.tooltips.css new file mode 100644 index 0000000..19bdf4f --- /dev/null +++ b/missing-sources/nouislider.css/nouislider.tooltips.css @@ -0,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%; +} diff --git a/missing-sources/nouislider.js/constants.js b/missing-sources/nouislider.js/constants.js new file mode 100644 index 0000000..ccdc255 --- /dev/null +++ b/missing-sources/nouislider.js/constants.js @@ -0,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' + }; + } diff --git a/missing-sources/nouislider.js/helpers.js b/missing-sources/nouislider.js/helpers.js new file mode 100644 index 0000000..68005d4 --- /dev/null +++ b/missing-sources/nouislider.js/helpers.js @@ -0,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 + }; + } diff --git a/missing-sources/nouislider.js/interface.js b/missing-sources/nouislider.js/interface.js new file mode 100644 index 0000000..188125a --- /dev/null +++ b/missing-sources/nouislider.js/interface.js @@ -0,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 + }; diff --git a/missing-sources/nouislider.js/intro.js b/missing-sources/nouislider.js/intro.js new file mode 100644 index 0000000..be3175e --- /dev/null +++ b/missing-sources/nouislider.js/intro.js @@ -0,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'; diff --git a/missing-sources/nouislider.js/options.js b/missing-sources/nouislider.js/options.js new file mode 100644 index 0000000..af927bb --- /dev/null +++ b/missing-sources/nouislider.js/options.js @@ -0,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; + } diff --git a/missing-sources/nouislider.js/outro.js b/missing-sources/nouislider.js/outro.js new file mode 100644 index 0000000..57d3e48 --- /dev/null +++ b/missing-sources/nouislider.js/outro.js @@ -0,0 +1 @@ +})); \ No newline at end of file diff --git a/missing-sources/nouislider.js/pips.js b/missing-sources/nouislider.js/pips.js new file mode 100644 index 0000000..9d56ffd --- /dev/null +++ b/missing-sources/nouislider.js/pips.js @@ -0,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 += '
'; + + // Values are only appended for points marked '1' or '2'. + if ( values[1] ) { + out += '
' + formatter.to(values[0]) + '
'; + } + } + + // 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 + )); + } diff --git a/missing-sources/nouislider.js/range.js b/missing-sources/nouislider.js/range.js new file mode 100644 index 0000000..475433c --- /dev/null +++ b/missing-sources/nouislider.js/range.js @@ -0,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)); + }; diff --git a/missing-sources/nouislider.js/scope.js b/missing-sources/nouislider.js/scope.js new file mode 100644 index 0000000..d8f11eb --- /dev/null +++ b/missing-sources/nouislider.js/scope.js @@ -0,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; diff --git a/missing-sources/nouislider.js/scope_end.js b/missing-sources/nouislider.js/scope_end.js new file mode 100644 index 0000000..5c34318 --- /dev/null +++ b/missing-sources/nouislider.js/scope_end.js @@ -0,0 +1 @@ +} diff --git a/missing-sources/nouislider.js/scope_events.js b/missing-sources/nouislider.js/scope_events.js new file mode 100644 index 0000000..158c9f2 --- /dev/null +++ b/missing-sources/nouislider.js/scope_events.js @@ -0,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 + }); + }); + } + } diff --git a/missing-sources/nouislider.js/scope_helpers.js b/missing-sources/nouislider.js/scope_helpers.js new file mode 100644 index 0000000..e7759f6 --- /dev/null +++ b/missing-sources/nouislider.js/scope_helpers.js @@ -0,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; + } diff --git a/missing-sources/nouislider.js/scope_start.js b/missing-sources/nouislider.js/scope_start.js new file mode 100644 index 0000000..79a904b --- /dev/null +++ b/missing-sources/nouislider.js/scope_start.js @@ -0,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; diff --git a/missing-sources/nouislider.js/structure.js b/missing-sources/nouislider.js/structure.js new file mode 100644 index 0000000..36a5e36 --- /dev/null +++ b/missing-sources/nouislider.js/structure.js @@ -0,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; + } diff --git a/missing-sources/nouislider.js/tooltips.js b/missing-sources/nouislider.js/tooltips.js new file mode 100644 index 0000000..fd5d673 --- /dev/null +++ b/missing-sources/nouislider.js/tooltips.js @@ -0,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]); + } + }); + } diff --git a/missing-sources/render-a11y-string.js b/missing-sources/render-a11y-string.js new file mode 100644 index 0000000..8cdbc0c --- /dev/null +++ b/missing-sources/render-a11y-string.js @@ -0,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 = Array>; + +const buildString = ( + str: string, + type: Atom | "normal", + a11yStrings: NestedArray, +) => { + 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, + callback: (regionStrings: NestedArray) => void, +) => { + const regionStrings: NestedArray = []; + a11yStrings.push(regionStrings); + callback(regionStrings); +}; + +const handleObject = ( + tree: AnyParseNode, + a11yStrings: NestedArray, + 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 = [], + 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; diff --git a/not-installed b/not-installed new file mode 100644 index 0000000..bdd8c07 --- /dev/null +++ b/not-installed @@ -0,0 +1 @@ +usr/share/info/dir diff --git a/patches/git-description.patch b/patches/git-description.patch new file mode 100644 index 0000000..9cfdf75 --- /dev/null +++ b/patches/git-description.patch @@ -0,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 +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]) diff --git a/patches/givaro-bool-constant.patch b/patches/givaro-bool-constant.patch new file mode 100644 index 0000000..68e36b5 --- /dev/null +++ b/patches/givaro-bool-constant.patch @@ -0,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 + #include + #include +@@ -50,7 +49,7 @@ + #include + #include + #include +-#undef bool_constant ++ + #include + + 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 +-#undef bool_constant + #pragma GCC diagnostic pop + + namespace M2 { diff --git a/patches/reproducible-version.patch b/patches/reproducible-version.patch new file mode 100644 index 0000000..52ec8d7 --- /dev/null +++ b/patches/reproducible-version.patch @@ -0,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 +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 `") + diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..957cf8d --- /dev/null +++ b/patches/series @@ -0,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 diff --git a/patches/skip-failing-core-tests.patch b/patches/skip-failing-core-tests.patch new file mode 100644 index 0000000..494266b --- /dev/null +++ b/patches/skip-failing-core-tests.patch @@ -0,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 +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 diff --git a/patches/skip-failing-package-tests.patch b/patches/skip-failing-package-tests.patch new file mode 100644 index 0000000..0273d79 --- /dev/null +++ b/patches/skip-failing-package-tests.patch @@ -0,0 +1,746 @@ +Description: Skip package tests that have been known to fail on + various architectures. +Author: Doug Torrance +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 @@ + /// + + TEST /// ++-- no-check-flag #1392 + 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}}) + 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}}) + T = ZZ[x,y] +--- 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< ( +--- 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; + < ( +--- 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) = "<"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)<GLex]; + I = ideal(x - y, y - z, -x + z); diff --git a/patches/tbb-2021.patch b/patches/tbb-2021.patch new file mode 100644 index 0000000..a35b72b --- /dev/null +++ b/patches/tbb-2021.patch @@ -0,0 +1,107 @@ +Description: Add support for TBB 2021. +Author: Jay Yang +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 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::GivaroMain givaroMain; + +- /* TODO - fix conditionals once TBB 2021 support is added (#2105) */ +- #if 1 /* TBB 2020 */ ++ #ifdef HAVE_TBB2021 ++ #include ++ #else /* TBB 2020 */ + #include + #define TBB_VERSION_STRING \\ + (stringize(TBB_VERSION_MAJOR) \".\" stringize(TBB_VERSION_MINOR)) +- #else /* TBB 2021 */ +- #include + #endif + + #include +--- 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 // for queuing_mutex + #include // for null_mutex +-#include // for parallel_do_feeder ++#ifdef HAVE_TBB2021 ++#include // for feeder ++#else /*TBB 2020*/ ++#include // for parallel_do_feeder ++#endif /*HAVE_TBB2021*/ + #include // for concurrent_unordered_map + //#include // for concurrent_vector (no longer needed) + +@@ -86,8 +92,11 @@ + // unfortunately we must use the GC allocator here for now + using RowsVector = std::vector>; + //using RowsVector = tbb::concurrent_vector; +- ++#ifdef HAVE_TBB2021 ++ using PreRowFeeder = tbb::feeder; ++#else /* TBB 2020 */ + using PreRowFeeder = tbb::parallel_do_feeder; ++#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 diff --git a/patches/use-cached-examples.patch b/patches/use-cached-examples.patch new file mode 100644 index 0000000..b5eea63 --- /dev/null +++ b/patches/use-cached-examples.patch @@ -0,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 +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/"}, diff --git a/patches/use-dh-elpa.patch b/patches/use-dh-elpa.patch new file mode 100644 index 0000000..0aa396f --- /dev/null +++ b/patches/use-dh-elpa.patch @@ -0,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 +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{}, diff --git a/patches/use-shared-mathicgb-and-friends.patch b/patches/use-shared-mathicgb-and-friends.patch new file mode 100644 index 0000000..1d908ce --- /dev/null +++ b/patches/use-shared-mathicgb-and-friends.patch @@ -0,0 +1,170 @@ +Description: Link against mathicgb and friends as shared libraries again. +Author: Doug Torrance +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 --git a/rules b/rules new file mode 100755 index 0000000..00683fd --- /dev/null +++ b/rules @@ -0,0 +1,130 @@ +#!/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 $ $@ + +# 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 diff --git a/salsa-ci.yml b/salsa-ci.yml new file mode 100644 index 0000000..59e7718 --- /dev/null +++ b/salsa-ci.yml @@ -0,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 diff --git a/scripts/Debian.m2 b/scripts/Debian.m2 new file mode 100644 index 0000000..0905f3b --- /dev/null +++ b/scripts/Debian.m2 @@ -0,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. +/// diff --git a/scripts/m2-get-orig-source.sh b/scripts/m2-get-orig-source.sh new file mode 100755 index 0000000..dd48406 --- /dev/null +++ b/scripts/m2-get-orig-source.sh @@ -0,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 " + echo " use branch or tag specificed by " + 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" diff --git a/scripts/m2-tarball-warning.sh b/scripts/m2-tarball-warning.sh new file mode 100755 index 0000000..8f63e17 --- /dev/null +++ b/scripts/m2-tarball-warning.sh @@ -0,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 "+-----------------------------------------------------------------+" diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/include-binaries b/source/include-binaries new file mode 100644 index 0000000..dc58491 --- /dev/null +++ b/source/include-binaries @@ -0,0 +1 @@ +M2/Macaulay2/editors/emacs/M2-symbols.el.gz diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 0000000..b68757e --- /dev/null +++ b/source/lintian-overrides @@ -0,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/ diff --git a/source/options b/source/options new file mode 100644 index 0000000..fae5abd --- /dev/null +++ b/source/options @@ -0,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" diff --git a/tests/check-doc-db.m2 b/tests/check-doc-db.m2 new file mode 100644 index 0000000..7beb74c --- /dev/null +++ b/tests/check-doc-db.m2 @@ -0,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) diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..6b8adef --- /dev/null +++ b/tests/control @@ -0,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 diff --git a/upstream/metadata b/upstream/metadata new file mode 100644 index 0000000..fd4c2ca --- /dev/null +++ b/upstream/metadata @@ -0,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 --git a/watch b/watch new file mode 100644 index 0000000..e6c5921 --- /dev/null +++ b/watch @@ -0,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 -- 2.30.2