From: Doug Torrance Date: Mon, 2 May 2022 00:14:15 +0000 (+0100) Subject: macaulay2 (1.19.1+ds-9) unstable; urgency=medium X-Git-Tag: archive/raspbian/1.19.1+ds-9+rpi1^2~10 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f997efea6beb9b8352ec34b7078fa41c7550d487;p=macaulay2.git macaulay2 (1.19.1+ds-9) unstable; urgency=medium * debian/tests/control - Mark package-tests as flaky since it regularly times out on armhf (Closes: #1010453). [dgit import unpatched macaulay2 1.19.1+ds-9] --- f997efea6beb9b8352ec34b7078fa41c7550d487 diff --cc debian/README.Debian index 0000000,0000000..fea477a new file mode 100644 --- /dev/null +++ b/debian/README.Debian @@@ -1,0 -1,0 +1,68 @@@ ++Macaulay2 for Debian ++==================== ++ ++Javascript libraries ++-------------------- ++Macaulay2 uses a number of Javascript libraries. In particular, they ++are used to render mathematical expressions in the browser-based ++documentation and to visualize various mathematical objects by the ++Visualize package. ++ ++Upstream embeds these libraries in the source code, often minimized. ++This is not desirable for the Debian package. For the libraries that ++are already available in Debian, we repack the tarball (using ++Files-Excluded in debian/copyright) without the embedded copies and ++use dh_linktree to create symbolic links to the Debian versions. ++ ++There are three libraries that are not yet available in Debian, and so ++the embedded copies remain. In particular: ++ ++* BootSideMenu (ITP #960097). Macaulay2 ships the full source code. ++ ++* noUiSlider (ITP #960618). Macaulay2 ships minified source, so we ++ include the full source code in debian/missing-sources, obtained ++ from https://github.com/leongersen/noUiSlider/tree/8.5.1. ++ ++* The render-a11y-string KaTeX extension. It was added in KaTeX ++ version 0.11.0, but only 0.10.2 is currently available in Debian. ++ Macaulay2 ships minified source, so we include the full source code ++ in debian/missing-sources, obtained from ++ https://github.com/KaTeX/KaTeX/tree/v0.12.0. ++ ++dwww ++---- ++The Macaulay2 documentation is registered with doc-base. In order to ++view the html documentation properly in your web browser using dwww, ++you must append "/usr/share/Macaulay2" to DWWW_DOCPATH in ++/etc/dwww/dwww.conf. Otherwise, some resources (e.g., CSS and ++Javascript files) will be unavailable. ++ ++Suggested packages ++------------------ ++Quite a few additional Debian packages will be installed alongside ++Macaulay2 automatically due to being listed in "Depends" or ++"Recommended", but there are a number of others that are listed under ++"Suggests" that will not be installed unless you pass ++"--install-suggests" to apt or install them separately. They are: ++ ++* dot2tex - Used by showTikZ function in Graphs package. ++ ++* fig2dev - Used by gfanRender and gfanRenderStaircase functions in ++ gfanInterface package. ++ ++* graphviz - Used by displayGraph function in Graphs package. ++ ++* pdf-viewer (virtual package) - Used by displayPoset function in ++ Posets package. The default pdf viewer is called using xdg-open; ++ use xdg-mime to change it. ++ ++* phcpack - Used by MonodromySolver, NumericalSchubertCalculus, and ++ PHCpack packages. ++ ++* polymake - Used by Polymake, StatePolytope, and Tropical packages. ++ ++* qepcad - Used by CoincidentRootLoci package. ++ ++* sdpa - Used by SemidefiniteProgramming package. ++ ++ -- Doug Torrance , Thu, 27 Jan 2022 11:32:40 -0500 diff --cc debian/changelog index 0000000,0000000..8355a07 new file mode 100644 --- /dev/null +++ b/debian/changelog @@@ -1,0 -1,0 +1,797 @@@ ++macaulay2 (1.19.1+ds-9) unstable; urgency=medium ++ ++ * debian/tests/control ++ - Mark package-tests as flaky since it regularly times out on armhf ++ (Closes: #1010453). ++ ++ -- Doug Torrance Sun, 01 May 2022 20:14:15 -0400 ++ ++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 using 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 --cc debian/clean index 0000000,0000000..5e20d65 new file mode 100644 --- /dev/null +++ b/debian/clean @@@ -1,0 -1,0 +1,2 @@@ ++debian/macaulay2-pkg.el ++M2/usr-host/lib/libmissing.a diff --cc debian/control index 0000000,0000000..9c09692 new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,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 --cc debian/copyright index 0000000,0000000..b86056e new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -1,0 -1,0 +1,2311 @@@ ++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ ++Upstream-Name: Macaulay2 ++Source: http://macaulay2.com ++Files-Excluded: ++ M2/Macaulay2/packages/Style/katex/contrib/auto-render.min.js ++ M2/Macaulay2/packages/Style/katex/contrib/copy-tex.min.* ++ M2/Macaulay2/packages/Style/katex/fonts ++ M2/Macaulay2/packages/Style/katex/katex.min.* ++ M2/Macaulay2/packages/Style/katex/LICENSE ++ M2/Macaulay2/packages/Visualize/css/bootstrap*.min.css ++ M2/Macaulay2/packages/Visualize/fonts ++ M2/Macaulay2/packages/Visualize/js/bootstrap.min.js ++ M2/Macaulay2/packages/Visualize/js/clipboard.min.js ++ M2/Macaulay2/packages/Visualize/js/d3.v3.min.js ++ M2/Macaulay2/packages/Visualize/js/jquery-1.11.3.min.js ++ M2/Macaulay2/packages/Visualize/js/three.min.js ++ M2/Macaulay2/packages/Visualize/js/underscore.js ++Comment: Files-Excluded field removes embedded Javascript libraries. ++ . ++ An email from Dan Grayson dated 2020-08-03 clarified the ++ licenses of code contributed by authors other than himself and Mike ++ Stillman: ++ . ++ "A priori the author of a file is the copyright holder, by default. ++ We haven't always been alert about asking authors to put their code ++ in the public domain, although I have done that in a few ++ cases. . . My general attitude is that anyone who contributes code to ++ us is putting it in the public domain, implicitly." ++ ++Files: * ++Copyright: 1993-2019 Daniel R. Grayson ++ 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 --cc debian/elpa-macaulay2.docs index 0000000,0000000..f58e26a new file mode 100644 --- /dev/null +++ b/debian/elpa-macaulay2.docs @@@ -1,0 -1,0 +1,3 @@@ ++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.m2 ++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.md ++usr/share/emacs/site-lisp/elpa/macaulay2-*/*.txt diff --cc debian/elpa-macaulay2.elpa index 0000000,0000000..6afce0e new file mode 100644 --- /dev/null +++ b/debian/elpa-macaulay2.elpa @@@ -1,0 -1,0 +1,2 @@@ ++debian/macaulay2-pkg.el ++debian/tmp/usr/share/emacs/site-lisp/elpa/macaulay2-*/*.el diff --cc debian/elpa-test index 0000000,0000000..401265d new file mode 100644 --- /dev/null +++ b/debian/elpa-test @@@ -1,0 -1,0 +1,2 @@@ ++# don't override dh_auto_test with dh_elpa_test ++disable = true diff --cc debian/examples/Macaulay2Doc/_application__Directory.out index 0000000,0000000..82988dc new file mode 100644 --- /dev/null +++ b/debian/examples/Macaulay2Doc/_application__Directory.out @@@ -1,0 -1,0 +1,7 @@@ ++-- -*- M2-comint -*- hash: 869580758 ++ ++i1 : applicationDirectory() ++ ++o1 = /home/m2user/.Macaulay2/ ++ ++i2 : diff --cc debian/examples/Macaulay2Doc/_application__Directory__Suffix.out index 0000000,0000000..7fee690 new file mode 100644 --- /dev/null +++ b/debian/examples/Macaulay2Doc/_application__Directory__Suffix.out @@@ -1,0 -1,0 +1,19 @@@ ++-- -*- M2-comint -*- hash: -664800848 ++ ++i1 : applicationDirectorySuffix ++ ++o1 = .Macaulay2/ ++ ++i2 : applicationDirectory() ++ ++o2 = /home/m2user/.Macaulay2/ ++ ++i3 : applicationDirectorySuffix = "local/Mac2" ++ ++o3 = local/Mac2 ++ ++i4 : applicationDirectory() ++ ++o4 = /home/m2user/local/Mac2 ++ ++i5 : diff --cc debian/examples/Macaulay2Doc/_getenv.out index 0000000,0000000..15dfc64 new file mode 100644 --- /dev/null +++ b/debian/examples/Macaulay2Doc/_getenv.out @@@ -1,0 -1,0 +1,7 @@@ ++-- -*- M2-comint -*- hash: 121703874 ++ ++i1 : getenv "HOME" ++ ++o1 = /home/m2user ++ ++i2 : diff --cc debian/examples/Macaulay2Doc/_home__Directory.out index 0000000,0000000..d92344b new file mode 100644 --- /dev/null +++ b/debian/examples/Macaulay2Doc/_home__Directory.out @@@ -1,0 -1,0 +1,7 @@@ ++-- -*- M2-comint -*- hash: -60053658 ++ ++i1 : homeDirectory ++ ++o1 = /home/m2user/ ++ ++i2 : diff --cc debian/gbp.conf index 0000000,0000000..e676edb new file mode 100644 --- /dev/null +++ b/debian/gbp.conf @@@ -1,0 -1,0 +1,19 @@@ ++[DEFAULT] ++debian-branch = debian/latest ++ ++[buildpackage] ++pristine-tar = True ++# need M2-emacs submodule ++preexport = git submodule init M2/Macaulay2/editors/emacs && ++ git submodule update ++postexport = SOURCE_DIR=`echo $GBP_GIT_DIR | sed 's/\/\.git//'` && ++ cp -r $SOURCE_DIR/M2/Macaulay2/editors/emacs/* \ ++ $GBP_TMP_DIR/M2/Macaulay2/editors/emacs ++# if we're not using export-dir ++prebuild = if test ! -f M2/Macaulay2/editors/emacs/make-M2-emacs-help.m2 ++ then git submodule init M2/Macaulay2/editors/emacs && ++ git submodule update ++ fi ++ ++[export-orig] ++pristine-tar = True diff --cc debian/macaulay2-common.doc-base index 0000000,0000000..33fc4bd new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.doc-base @@@ -1,0 -1,0 +1,16 @@@ ++Document: macaulay2 ++Title: Macaulay2 Documentation ++Author: Daniel R. Grayson and Michael E. Stillman ++Abstract: Macaulay2 is a software system devoted to supporting research in ++ algebraic geometry and commutative algebra, developed with funding from the ++ National Science Foundation. We are eager to help new users get started with ++ it. ++Section: Science/Mathematics ++ ++Format: HTML ++Index: /usr/share/doc/Macaulay2/Macaulay2Doc/html/index.html ++Files: /usr/share/doc/Macaulay2/*/html/*.html ++ ++Format: Info ++Index: /usr/share/info/Macaulay2Doc.info.gz ++Files: /usr/share/info/*.info.gz diff --cc debian/macaulay2-common.info index 0000000,0000000..0ac0fbf new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.info @@@ -1,0 -1,0 +1,1 @@@ ++usr/share/info/*.info diff --cc debian/macaulay2-common.install index 0000000,0000000..8ee1328 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.install @@@ -1,0 -1,0 +1,3 @@@ ++M2/Macaulay2/editors/make-M2-symbols.m2 usr/share/Macaulay2 ++usr/share/Macaulay2 ++usr/share/doc diff --cc debian/macaulay2-common.links index 0000000,0000000..ea0cdb3 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.links @@@ -1,0 -1,0 +1,2 @@@ ++usr/share/common-licenses/GPL-2 usr/share/doc/Macaulay2/COPYING-GPL-2 ++usr/share/common-licenses/GPL-3 usr/share/doc/Macaulay2/COPYING-GPL-3 diff --cc debian/macaulay2-common.linktrees index 0000000,0000000..e176607 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.linktrees @@@ -1,0 -1,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 --cc debian/macaulay2-common.lintian-overrides index 0000000,0000000..07db3a6 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-common.lintian-overrides @@@ -1,0 -1,0 +1,56 @@@ ++# these files describe the contents of the corresponding package directories ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Macaulay2Doc/COPYRIGHT ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Macaulay2Doc/README ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Matroids/SmallMatroids.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/MonodromySolver/paper-examples/README.md ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/README ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TST/README.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NAGtypes/TO-DO-doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NCAlgebra/installNCAlgebra.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smallSmoothProjectiveToricVarieties.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties5.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NormalToricVarieties/smoothFanoToricVarieties6.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-WSet.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-arb.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO-SLEvaluatorCompiled.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalAlgebraicGeometry/TO-DO.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/EXA/Table2/README ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/FunctionsExported.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/README ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/NumericalSchubertCalculus/ToDo ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Polyhedra/tests/fails_from_googlegroup.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Polyhedra/TODO ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReactionNetworks/Readme.md ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks-dim3.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks1-n5.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks11+24-n200.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks2-n36.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks21-n100.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks3-n244.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks300-n20.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks491-n1.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks5+53-n204.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks5-n50.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/ReflexivePolytopesDB/ks9+21-n10.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SCSCP/README-gap.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SLPexpressions/TO-DO.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/elliptic_quartics.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/letter_to_collino.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Schubert2/Stromme/toricubics.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/character.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schur.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schurModule.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/schurModulesMap.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/splitCharacter.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SchurFunctors/straightenSchur.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SimpleDoc/doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/SimpleDoc/helpers-doc.txt ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/digraph-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/graph-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/ideal2d-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/ideal3d-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/poset-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/Visualize/simplicial-complex-example.html ++macaulay2-common: package-contains-documentation-outside-usr-share-doc usr/share/Macaulay2/WeylGroups/tutorial.html diff --cc debian/macaulay2-pkg.el.in index 0000000,0000000..2e91670 new file mode 100644 --- /dev/null +++ b/debian/macaulay2-pkg.el.in @@@ -1,0 -1,0 +1,1 @@@ ++(define-package "macaulay2" "@VERSION@" "Emacs Package for Macaulay2" 'nil) diff --cc debian/macaulay2.install index 0000000,0000000..a65408f new file mode 100644 --- /dev/null +++ b/debian/macaulay2.install @@@ -1,0 -1,0 +1,2 @@@ ++usr/bin ++usr/share/man diff --cc debian/macaulay2.links index 0000000,0000000..be451e0 new file mode 100644 --- /dev/null +++ b/debian/macaulay2.links @@@ -1,0 -1,0 +1,1 @@@ ++usr/share/man/man1/M2.1 usr/share/man/man1/M2-binary.1 diff --cc debian/macaulay2.postinst index 0000000,0000000..e3a6995 new file mode 100755 --- /dev/null +++ b/debian/macaulay2.postinst @@@ -1,0 -1,0 +1,49 @@@ ++#!/bin/sh ++# postinst script for macaulay2 ++# ++# see: dh_installdeb(1) ++ ++set -e ++ ++# summary of how this script can be called: ++# * `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 --cc debian/macaulay2.prerm index 0000000,0000000..555dc73 new file mode 100755 --- /dev/null +++ b/debian/macaulay2.prerm @@@ -1,0 -1,0 +1,41 @@@ ++#!/bin/sh ++# prerm script for macaulay2 ++# ++# see: dh_installdeb(1) ++ ++set -e ++ ++# summary of how this script can be called: ++# * `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 --cc debian/missing-sources/nouislider.css/nouislider.css index 0000000,0000000..c512f34 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.css/nouislider.css @@@ -1,0 -1,0 +1,165 @@@ ++ ++/* Functional styling; ++ * These styles are required for noUiSlider to function. ++ * You don't need to change these rules to apply your design. ++ */ ++.noUi-target, ++.noUi-target * { ++-webkit-touch-callout: none; ++-webkit-user-select: none; ++-ms-touch-action: none; ++ touch-action: none; ++-ms-user-select: none; ++-moz-user-select: none; ++ user-select: none; ++-moz-box-sizing: border-box; ++ box-sizing: border-box; ++} ++.noUi-target { ++ position: relative; ++ direction: ltr; ++} ++.noUi-base { ++ width: 100%; ++ height: 100%; ++ position: relative; ++ z-index: 1; /* Fix 401 */ ++} ++.noUi-origin { ++ position: absolute; ++ right: 0; ++ top: 0; ++ left: 0; ++ bottom: 0; ++} ++.noUi-handle { ++ position: relative; ++ z-index: 1; ++} ++.noUi-stacking .noUi-handle { ++/* This class is applied to the lower origin when ++ its values is > 50%. */ ++ z-index: 10; ++} ++.noUi-state-tap .noUi-origin { ++-webkit-transition: left 0.3s, top 0.3s; ++ transition: left 0.3s, top 0.3s; ++} ++.noUi-state-drag * { ++ cursor: inherit !important; ++} ++ ++/* Painting and performance; ++ * Browsers can paint handles in their own layer. ++ */ ++.noUi-base, ++.noUi-handle { ++ -webkit-transform: translate3d(0,0,0); ++ transform: translate3d(0,0,0); ++} ++ ++/* Slider size and handle placement; ++ */ ++.noUi-horizontal { ++ height: 18px; ++} ++.noUi-horizontal .noUi-handle { ++ width: 34px; ++ height: 28px; ++ left: -17px; ++ top: -6px; ++} ++.noUi-vertical { ++ width: 18px; ++} ++.noUi-vertical .noUi-handle { ++ width: 28px; ++ height: 34px; ++ left: -6px; ++ top: -17px; ++} ++ ++/* Styling; ++ */ ++.noUi-background { ++ background: #FAFAFA; ++ box-shadow: inset 0 1px 1px #f0f0f0; ++} ++.noUi-connect { ++ background: #3FB8AF; ++ box-shadow: inset 0 0 3px rgba(51,51,51,0.45); ++-webkit-transition: background 450ms; ++ transition: background 450ms; ++} ++.noUi-origin { ++ border-radius: 2px; ++} ++.noUi-target { ++ border-radius: 4px; ++ border: 1px solid #D3D3D3; ++ box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; ++} ++.noUi-target.noUi-connect { ++ box-shadow: inset 0 0 3px rgba(51,51,51,0.45), 0 3px 6px -5px #BBB; ++} ++ ++/* Handles and cursors; ++ */ ++.noUi-draggable { ++ cursor: w-resize; ++} ++.noUi-vertical .noUi-draggable { ++ cursor: n-resize; ++} ++.noUi-handle { ++ border: 1px solid #D9D9D9; ++ border-radius: 3px; ++ background: #FFF; ++ cursor: default; ++ box-shadow: inset 0 0 1px #FFF, ++ inset 0 1px 7px #EBEBEB, ++ 0 3px 6px -3px #BBB; ++} ++.noUi-active { ++ box-shadow: inset 0 0 1px #FFF, ++ inset 0 1px 7px #DDD, ++ 0 3px 6px -3px #BBB; ++} ++ ++/* Handle stripes; ++ */ ++.noUi-handle:before, ++.noUi-handle:after { ++ content: ""; ++ display: block; ++ position: absolute; ++ height: 14px; ++ width: 1px; ++ background: #E8E7E6; ++ left: 14px; ++ top: 6px; ++} ++.noUi-handle:after { ++ left: 17px; ++} ++.noUi-vertical .noUi-handle:before, ++.noUi-vertical .noUi-handle:after { ++ width: 14px; ++ height: 1px; ++ left: 6px; ++ top: 14px; ++} ++.noUi-vertical .noUi-handle:after { ++ top: 17px; ++} ++ ++/* Disabled state; ++ */ ++[disabled].noUi-connect, ++[disabled] .noUi-connect { ++ background: #B8B8B8; ++} ++[disabled].noUi-origin, ++[disabled] .noUi-handle { ++ cursor: not-allowed; ++} diff --cc debian/missing-sources/nouislider.css/nouislider.pips.css index 0000000,0000000..a337697 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.css/nouislider.pips.css @@@ -1,0 -1,0 +1,93 @@@ ++ ++/* Base; ++ * ++ */ ++.noUi-pips, ++.noUi-pips * { ++-moz-box-sizing: border-box; ++ box-sizing: border-box; ++} ++.noUi-pips { ++ position: absolute; ++ color: #999; ++} ++ ++/* Values; ++ * ++ */ ++.noUi-value { ++ position: absolute; ++ text-align: center; ++} ++.noUi-value-sub { ++ color: #ccc; ++ font-size: 10px; ++} ++ ++/* Markings; ++ * ++ */ ++.noUi-marker { ++ position: absolute; ++ background: #CCC; ++} ++.noUi-marker-sub { ++ background: #AAA; ++} ++.noUi-marker-large { ++ background: #AAA; ++} ++ ++/* Horizontal layout; ++ * ++ */ ++.noUi-pips-horizontal { ++ padding: 10px 0; ++ height: 80px; ++ top: 100%; ++ left: 0; ++ width: 100%; ++} ++.noUi-value-horizontal { ++ -webkit-transform: translate3d(-50%,50%,0); ++ transform: translate3d(-50%,50%,0); ++} ++ ++.noUi-marker-horizontal.noUi-marker { ++ margin-left: -1px; ++ width: 2px; ++ height: 5px; ++} ++.noUi-marker-horizontal.noUi-marker-sub { ++ height: 10px; ++} ++.noUi-marker-horizontal.noUi-marker-large { ++ height: 15px; ++} ++ ++/* Vertical layout; ++ * ++ */ ++.noUi-pips-vertical { ++ padding: 0 10px; ++ height: 100%; ++ top: 0; ++ left: 100%; ++} ++.noUi-value-vertical { ++ -webkit-transform: translate3d(0,-50%,0); ++ transform: translate3d(0,-50%,0); ++ padding-left: 25px; ++} ++ ++.noUi-marker-vertical.noUi-marker { ++ width: 5px; ++ height: 2px; ++ margin-top: -1px; ++} ++.noUi-marker-vertical.noUi-marker-sub { ++ width: 10px; ++} ++.noUi-marker-vertical.noUi-marker-large { ++ width: 15px; ++} diff --cc debian/missing-sources/nouislider.css/nouislider.tooltips.css index 0000000,0000000..19bdf4f new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.css/nouislider.tooltips.css @@@ -1,0 -1,0 +1,22 @@@ ++.noUi-tooltip { ++ display: block; ++ position: absolute; ++ border: 1px solid #D9D9D9; ++ border-radius: 3px; ++ background: #fff; ++ padding: 5px; ++ text-align: center; ++} ++ ++.noUi-horizontal .noUi-handle-lower .noUi-tooltip { ++ top: -32px; ++} ++.noUi-horizontal .noUi-handle-upper .noUi-tooltip { ++ bottom: -32px; ++} ++.noUi-vertical .noUi-handle-lower .noUi-tooltip { ++ left: 120%; ++} ++.noUi-vertical .noUi-handle-upper .noUi-tooltip { ++ right: 120%; ++} diff --cc debian/missing-sources/nouislider.js/constants.js index 0000000,0000000..ccdc255 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/constants.js @@@ -1,0 -1,0 +1,21 @@@ ++ // we provide a function to compute constants instead ++ // of accessing window.* as soon as the module needs it ++ // so that we do not compute anything if not needed ++ function getActions ( ) { ++ ++ // Determine the events to bind. IE11 implements pointerEvents without ++ // a prefix, which breaks compatibility with the IE10 implementation. ++ return window.navigator.pointerEnabled ? { ++ start: 'pointerdown', ++ move: 'pointermove', ++ end: 'pointerup' ++ } : window.navigator.msPointerEnabled ? { ++ start: 'MSPointerDown', ++ move: 'MSPointerMove', ++ end: 'MSPointerUp' ++ } : { ++ start: 'mousedown touchstart', ++ move: 'mousemove touchmove', ++ end: 'mouseup touchend' ++ }; ++ } diff --cc debian/missing-sources/nouislider.js/helpers.js index 0000000,0000000..68005d4 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/helpers.js @@@ -1,0 -1,0 +1,99 @@@ ++ ++ // Removes duplicates from an array. ++ function unique(array) { ++ return array.filter(function(a){ ++ return !this[a] ? this[a] = true : false; ++ }, {}); ++ } ++ ++ // Round a value to the closest 'to'. ++ function closest ( value, to ) { ++ return Math.round(value / to) * to; ++ } ++ ++ // Current position of an element relative to the document. ++ function offset ( elem ) { ++ ++ var rect = elem.getBoundingClientRect(), ++ doc = elem.ownerDocument, ++ docElem = doc.documentElement, ++ pageOffset = getPageOffset(); ++ ++ // getBoundingClientRect contains left scroll in Chrome on Android. ++ // I haven't found a feature detection that proves this. Worst case ++ // scenario on mis-match: the 'tap' feature on horizontal sliders breaks. ++ if ( /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) ) { ++ pageOffset.x = 0; ++ } ++ ++ return { ++ top: rect.top + pageOffset.y - docElem.clientTop, ++ left: rect.left + pageOffset.x - docElem.clientLeft ++ }; ++ } ++ ++ // Checks whether a value is numerical. ++ function isNumeric ( a ) { ++ return typeof a === 'number' && !isNaN( a ) && isFinite( a ); ++ } ++ ++ // Sets a class and removes it after [duration] ms. ++ function addClassFor ( element, className, duration ) { ++ addClass(element, className); ++ setTimeout(function(){ ++ removeClass(element, className); ++ }, duration); ++ } ++ ++ // Limits a value to 0 - 100 ++ function limit ( a ) { ++ return Math.max(Math.min(a, 100), 0); ++ } ++ ++ // Wraps a variable as an array, if it isn't one yet. ++ function asArray ( a ) { ++ return Array.isArray(a) ? a : [a]; ++ } ++ ++ // Counts decimals ++ function countDecimals ( numStr ) { ++ var pieces = numStr.split("."); ++ return pieces.length > 1 ? pieces[1].length : 0; ++ } ++ ++ // http://youmightnotneedjquery.com/#add_class ++ function addClass ( el, className ) { ++ if ( el.classList ) { ++ el.classList.add(className); ++ } else { ++ el.className += ' ' + className; ++ } ++ } ++ ++ // http://youmightnotneedjquery.com/#remove_class ++ function removeClass ( el, className ) { ++ if ( el.classList ) { ++ el.classList.remove(className); ++ } else { ++ el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); ++ } ++ } ++ ++ // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/ ++ function hasClass ( el, className ) { ++ return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className); ++ } ++ ++ // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes ++ function getPageOffset ( ) { ++ ++ var supportPageOffset = window.pageXOffset !== undefined, ++ isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"), ++ x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft, ++ y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; ++ ++ return { ++ x: x, ++ y: y ++ }; ++ } diff --cc debian/missing-sources/nouislider.js/interface.js index 0000000,0000000..188125a new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/interface.js @@@ -1,0 -1,0 +1,23 @@@ ++ ++ // Run the standard initializer ++ function initialize ( target, originalOptions ) { ++ ++ if ( !target.nodeName ) { ++ throw new Error('noUiSlider.create requires a single element.'); ++ } ++ ++ // Test the options and create the slider environment; ++ var options = testOptions( originalOptions, target ), ++ slider = closure( target, options, originalOptions ); ++ ++ // Use the public value method to set the start values. ++ slider.set(options.start); ++ ++ target.noUiSlider = slider; ++ return slider; ++ } ++ ++ // Use an object instead of a function for future expansibility; ++ return { ++ create: initialize ++ }; diff --cc debian/missing-sources/nouislider.js/intro.js index 0000000,0000000..be3175e new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/intro.js @@@ -1,0 -1,0 +1,21 @@@ ++(function (factory) { ++ ++ if ( typeof define === 'function' && define.amd ) { ++ ++ // AMD. Register as an anonymous module. ++ define([], factory); ++ ++ } else if ( typeof exports === 'object' ) { ++ ++ // Node/CommonJS ++ module.exports = factory(); ++ ++ } else { ++ ++ // Browser globals ++ window.noUiSlider = factory(); ++ } ++ ++}(function( ){ ++ ++ 'use strict'; diff --cc debian/missing-sources/nouislider.js/options.js index 0000000,0000000..af927bb new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/options.js @@@ -1,0 -1,0 +1,378 @@@ ++/* Every input option is tested and parsed. This'll prevent ++ endless validation in internal methods. These tests are ++ structured with an item for every option available. An ++ option can be marked as required by setting the 'r' flag. ++ The testing function is provided with three arguments: ++ - The provided value for the option; ++ - A reference to the options object; ++ - The name for the option; ++ ++ The testing function returns false when an error is detected, ++ or true when everything is OK. It can also modify the option ++ object, to make sure all values can be correctly looped elsewhere. */ ++ ++ var defaultFormatter = { 'to': function( value ){ ++ return value !== undefined && value.toFixed(2); ++ }, 'from': Number }; ++ ++ function testStep ( parsed, entry ) { ++ ++ if ( !isNumeric( entry ) ) { ++ throw new Error("noUiSlider: 'step' is not numeric."); ++ } ++ ++ // The step option can still be used to set stepping ++ // for linear sliders. Overwritten if set in 'range'. ++ parsed.singleStep = entry; ++ } ++ ++ function testRange ( parsed, entry ) { ++ ++ // Filter incorrect input. ++ if ( typeof entry !== 'object' || Array.isArray(entry) ) { ++ throw new Error("noUiSlider: 'range' is not an object."); ++ } ++ ++ // Catch missing start or end. ++ if ( entry.min === undefined || entry.max === undefined ) { ++ throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'."); ++ } ++ ++ // Catch equal start or end. ++ if ( entry.min === entry.max ) { ++ throw new Error("noUiSlider: 'range' 'min' and 'max' cannot be equal."); ++ } ++ ++ parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep); ++ } ++ ++ function testStart ( parsed, entry ) { ++ ++ entry = asArray(entry); ++ ++ // Validate input. Values aren't tested, as the public .val method ++ // will always provide a valid location. ++ if ( !Array.isArray( entry ) || !entry.length || entry.length > 2 ) { ++ throw new Error("noUiSlider: 'start' option is incorrect."); ++ } ++ ++ // Store the number of handles. ++ parsed.handles = entry.length; ++ ++ // When the slider is initialized, the .val method will ++ // be called with the start options. ++ parsed.start = entry; ++ } ++ ++ function testSnap ( parsed, entry ) { ++ ++ // Enforce 100% stepping within subranges. ++ parsed.snap = entry; ++ ++ if ( typeof entry !== 'boolean' ){ ++ throw new Error("noUiSlider: 'snap' option must be a boolean."); ++ } ++ } ++ ++ function testAnimate ( parsed, entry ) { ++ ++ // Enforce 100% stepping within subranges. ++ parsed.animate = entry; ++ ++ if ( typeof entry !== 'boolean' ){ ++ throw new Error("noUiSlider: 'animate' option must be a boolean."); ++ } ++ } ++ ++ function testAnimationDuration ( parsed, entry ) { ++ ++ parsed.animationDuration = entry; ++ ++ if ( typeof entry !== 'number' ){ ++ throw new Error("noUiSlider: 'animationDuration' option must be a number."); ++ } ++ } ++ ++ function testConnect ( parsed, entry ) { ++ ++ if ( entry === 'lower' && parsed.handles === 1 ) { ++ parsed.connect = 1; ++ } else if ( entry === 'upper' && parsed.handles === 1 ) { ++ parsed.connect = 2; ++ } else if ( entry === true && parsed.handles === 2 ) { ++ parsed.connect = 3; ++ } else if ( entry === false ) { ++ parsed.connect = 0; ++ } else { ++ throw new Error("noUiSlider: 'connect' option doesn't match handle count."); ++ } ++ } ++ ++ function testOrientation ( parsed, entry ) { ++ ++ // Set orientation to an a numerical value for easy ++ // array selection. ++ switch ( entry ){ ++ case 'horizontal': ++ parsed.ort = 0; ++ break; ++ case 'vertical': ++ parsed.ort = 1; ++ break; ++ default: ++ throw new Error("noUiSlider: 'orientation' option is invalid."); ++ } ++ } ++ ++ function testMargin ( parsed, entry ) { ++ ++ if ( !isNumeric(entry) ){ ++ throw new Error("noUiSlider: 'margin' option must be numeric."); ++ } ++ ++ // Issue #582 ++ if ( entry === 0 ) { ++ return; ++ } ++ ++ parsed.margin = parsed.spectrum.getMargin(entry); ++ ++ if ( !parsed.margin ) { ++ throw new Error("noUiSlider: 'margin' option is only supported on linear sliders."); ++ } ++ } ++ ++ function testLimit ( parsed, entry ) { ++ ++ if ( !isNumeric(entry) ){ ++ throw new Error("noUiSlider: 'limit' option must be numeric."); ++ } ++ ++ parsed.limit = parsed.spectrum.getMargin(entry); ++ ++ if ( !parsed.limit ) { ++ throw new Error("noUiSlider: 'limit' option is only supported on linear sliders."); ++ } ++ } ++ ++ function testDirection ( parsed, entry ) { ++ ++ // Set direction as a numerical value for easy parsing. ++ // Invert connection for RTL sliders, so that the proper ++ // handles get the connect/background classes. ++ switch ( entry ) { ++ case 'ltr': ++ parsed.dir = 0; ++ break; ++ case 'rtl': ++ parsed.dir = 1; ++ parsed.connect = [0,2,1,3][parsed.connect]; ++ break; ++ default: ++ throw new Error("noUiSlider: 'direction' option was not recognized."); ++ } ++ } ++ ++ function testBehaviour ( parsed, entry ) { ++ ++ // Make sure the input is a string. ++ if ( typeof entry !== 'string' ) { ++ throw new Error("noUiSlider: 'behaviour' must be a string containing options."); ++ } ++ ++ // Check if the string contains any keywords. ++ // None are required. ++ var tap = entry.indexOf('tap') >= 0, ++ drag = entry.indexOf('drag') >= 0, ++ fixed = entry.indexOf('fixed') >= 0, ++ snap = entry.indexOf('snap') >= 0, ++ hover = entry.indexOf('hover') >= 0; ++ ++ // Fix #472 ++ if ( drag && !parsed.connect ) { ++ throw new Error("noUiSlider: 'drag' behaviour must be used with 'connect': true."); ++ } ++ ++ parsed.events = { ++ tap: tap || snap, ++ drag: drag, ++ fixed: fixed, ++ snap: snap, ++ hover: hover ++ }; ++ } ++ ++ function testTooltips ( parsed, entry ) { ++ ++ var i; ++ ++ if ( entry === false ) { ++ return; ++ } else if ( entry === true ) { ++ ++ parsed.tooltips = []; ++ ++ for ( i = 0; i < parsed.handles; i++ ) { ++ parsed.tooltips.push(true); ++ } ++ ++ } else { ++ ++ parsed.tooltips = asArray(entry); ++ ++ if ( parsed.tooltips.length !== parsed.handles ) { ++ throw new Error("noUiSlider: must pass a formatter for all handles."); ++ } ++ ++ parsed.tooltips.forEach(function(formatter){ ++ if ( typeof formatter !== 'boolean' && (typeof formatter !== 'object' || typeof formatter.to !== 'function') ) { ++ throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'."); ++ } ++ }); ++ } ++ } ++ ++ function testFormat ( parsed, entry ) { ++ ++ parsed.format = entry; ++ ++ // Any object with a to and from method is supported. ++ if ( typeof entry.to === 'function' && typeof entry.from === 'function' ) { ++ return true; ++ } ++ ++ throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods."); ++ } ++ ++ function testCssPrefix ( parsed, entry ) { ++ ++ if ( entry !== undefined && typeof entry !== 'string' && entry !== false ) { ++ throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`."); ++ } ++ ++ parsed.cssPrefix = entry; ++ } ++ ++ function testCssClasses ( parsed, entry ) { ++ ++ if ( entry !== undefined && typeof entry !== 'object' ) { ++ throw new Error("noUiSlider: 'cssClasses' must be an object."); ++ } ++ ++ if ( typeof parsed.cssPrefix === 'string' ) { ++ parsed.cssClasses = {}; ++ ++ for ( var key in entry ) { ++ if ( !entry.hasOwnProperty(key) ) { continue; } ++ ++ parsed.cssClasses[key] = parsed.cssPrefix + entry[key]; ++ } ++ } else { ++ parsed.cssClasses = entry; ++ } ++ } ++ ++ // Test all developer settings and parse to assumption-safe values. ++ function testOptions ( options ) { ++ ++ // To prove a fix for #537, freeze options here. ++ // If the object is modified, an error will be thrown. ++ // Object.freeze(options); ++ ++ var parsed = { ++ margin: 0, ++ limit: 0, ++ animate: true, ++ animationDuration: 300, ++ format: defaultFormatter ++ }, tests; ++ ++ // Tests are executed in the order they are presented here. ++ tests = { ++ 'step': { r: false, t: testStep }, ++ 'start': { r: true, t: testStart }, ++ 'connect': { r: true, t: testConnect }, ++ 'direction': { r: true, t: testDirection }, ++ 'snap': { r: false, t: testSnap }, ++ 'animate': { r: false, t: testAnimate }, ++ 'animationDuration': { r: false, t: testAnimationDuration }, ++ 'range': { r: true, t: testRange }, ++ 'orientation': { r: false, t: testOrientation }, ++ 'margin': { r: false, t: testMargin }, ++ 'limit': { r: false, t: testLimit }, ++ 'behaviour': { r: true, t: testBehaviour }, ++ 'format': { r: false, t: testFormat }, ++ 'tooltips': { r: false, t: testTooltips }, ++ 'cssPrefix': { r: false, t: testCssPrefix }, ++ 'cssClasses': { r: false, t: testCssClasses } ++ }; ++ ++ var defaults = { ++ 'connect': false, ++ 'direction': 'ltr', ++ 'behaviour': 'tap', ++ 'orientation': 'horizontal', ++ 'cssPrefix' : 'noUi-', ++ 'cssClasses': { ++ target: 'target', ++ base: 'base', ++ origin: 'origin', ++ handle: 'handle', ++ handleLower: 'handle-lower', ++ handleUpper: 'handle-upper', ++ horizontal: 'horizontal', ++ vertical: 'vertical', ++ background: 'background', ++ connect: 'connect', ++ ltr: 'ltr', ++ rtl: 'rtl', ++ draggable: 'draggable', ++ drag: 'state-drag', ++ tap: 'state-tap', ++ active: 'active', ++ stacking: 'stacking', ++ tooltip: 'tooltip', ++ pips: 'pips', ++ pipsHorizontal: 'pips-horizontal', ++ pipsVertical: 'pips-vertical', ++ marker: 'marker', ++ markerHorizontal: 'marker-horizontal', ++ markerVertical: 'marker-vertical', ++ markerNormal: 'marker-normal', ++ markerLarge: 'marker-large', ++ markerSub: 'marker-sub', ++ value: 'value', ++ valueHorizontal: 'value-horizontal', ++ valueVertical: 'value-vertical', ++ valueNormal: 'value-normal', ++ valueLarge: 'value-large', ++ valueSub: 'value-sub' ++ } ++ }; ++ ++ // Run all options through a testing mechanism to ensure correct ++ // input. It should be noted that options might get modified to ++ // be handled properly. E.g. wrapping integers in arrays. ++ Object.keys(tests).forEach(function( name ){ ++ ++ // If the option isn't set, but it is required, throw an error. ++ if ( options[name] === undefined && defaults[name] === undefined ) { ++ ++ if ( tests[name].r ) { ++ throw new Error("noUiSlider: '" + name + "' is required."); ++ } ++ ++ return true; ++ } ++ ++ tests[name].t( parsed, options[name] === undefined ? defaults[name] : options[name] ); ++ }); ++ ++ // Forward pips options ++ parsed.pips = options.pips; ++ ++ // Pre-define the styles. ++ parsed.style = parsed.ort ? 'top' : 'left'; ++ ++ return parsed; ++ } diff --cc debian/missing-sources/nouislider.js/outro.js index 0000000,0000000..57d3e48 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/outro.js @@@ -1,0 -1,0 +1,1 @@@ ++})); diff --cc debian/missing-sources/nouislider.js/pips.js index 0000000,0000000..9d56ffd new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/pips.js @@@ -1,0 -1,0 +1,247 @@@ ++ ++ function getGroup ( mode, values, stepped ) { ++ ++ // Use the range. ++ if ( mode === 'range' || mode === 'steps' ) { ++ return scope_Spectrum.xVal; ++ } ++ ++ if ( mode === 'count' ) { ++ ++ // Divide 0 - 100 in 'count' parts. ++ var spread = ( 100 / (values-1) ), v, i = 0; ++ values = []; ++ ++ // List these parts and have them handled as 'positions'. ++ while ((v=i++*spread) <= 100 ) { ++ values.push(v); ++ } ++ ++ mode = 'positions'; ++ } ++ ++ if ( mode === 'positions' ) { ++ ++ // Map all percentages to on-range values. ++ return values.map(function( value ){ ++ return scope_Spectrum.fromStepping( stepped ? scope_Spectrum.getStep( value ) : value ); ++ }); ++ } ++ ++ if ( mode === 'values' ) { ++ ++ // If the value must be stepped, it needs to be converted to a percentage first. ++ if ( stepped ) { ++ ++ return values.map(function( value ){ ++ ++ // Convert to percentage, apply step, return to value. ++ return scope_Spectrum.fromStepping( scope_Spectrum.getStep( scope_Spectrum.toStepping( value ) ) ); ++ }); ++ ++ } ++ ++ // Otherwise, we can simply use the values. ++ return values; ++ } ++ } ++ ++ function generateSpread ( density, mode, group ) { ++ ++ function safeIncrement(value, increment) { ++ // Avoid floating point variance by dropping the smallest decimal places. ++ return (value + increment).toFixed(7) / 1; ++ } ++ ++ var originalSpectrumDirection = scope_Spectrum.direction, ++ indexes = {}, ++ firstInRange = scope_Spectrum.xVal[0], ++ lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length-1], ++ ignoreFirst = false, ++ ignoreLast = false, ++ prevPct = 0; ++ ++ // This function loops the spectrum in an ltr linear fashion, ++ // while the toStepping method is direction aware. Trick it into ++ // believing it is ltr. ++ scope_Spectrum.direction = 0; ++ ++ // Create a copy of the group, sort it and filter away all duplicates. ++ group = unique(group.slice().sort(function(a, b){ return a - b; })); ++ ++ // Make sure the range starts with the first element. ++ if ( group[0] !== firstInRange ) { ++ group.unshift(firstInRange); ++ ignoreFirst = true; ++ } ++ ++ // Likewise for the last one. ++ if ( group[group.length - 1] !== lastInRange ) { ++ group.push(lastInRange); ++ ignoreLast = true; ++ } ++ ++ group.forEach(function ( current, index ) { ++ ++ // Get the current step and the lower + upper positions. ++ var step, i, q, ++ low = current, ++ high = group[index+1], ++ newPct, pctDifference, pctPos, type, ++ steps, realSteps, stepsize; ++ ++ // When using 'steps' mode, use the provided steps. ++ // Otherwise, we'll step on to the next subrange. ++ if ( mode === 'steps' ) { ++ step = scope_Spectrum.xNumSteps[ index ]; ++ } ++ ++ // Default to a 'full' step. ++ if ( !step ) { ++ step = high-low; ++ } ++ ++ // Low can be 0, so test for false. If high is undefined, ++ // we are at the last subrange. Index 0 is already handled. ++ if ( low === false || high === undefined ) { ++ return; ++ } ++ ++ // Find all steps in the subrange. ++ for ( i = low; i <= high; i = safeIncrement(i, step) ) { ++ ++ // Get the percentage value for the current step, ++ // calculate the size for the subrange. ++ newPct = scope_Spectrum.toStepping( i ); ++ pctDifference = newPct - prevPct; ++ ++ steps = pctDifference / density; ++ realSteps = Math.round(steps); ++ ++ // This ratio represents the ammount of percentage-space a point indicates. ++ // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided. ++ // Round the percentage offset to an even number, then divide by two ++ // to spread the offset on both sides of the range. ++ stepsize = pctDifference/realSteps; ++ ++ // Divide all points evenly, adding the correct number to this subrange. ++ // Run up to <= so that 100% gets a point, event if ignoreLast is set. ++ for ( q = 1; q <= realSteps; q += 1 ) { ++ ++ // The ratio between the rounded value and the actual size might be ~1% off. ++ // Correct the percentage offset by the number of points ++ // per subrange. density = 1 will result in 100 points on the ++ // full range, 2 for 50, 4 for 25, etc. ++ pctPos = prevPct + ( q * stepsize ); ++ indexes[pctPos.toFixed(5)] = ['x', 0]; ++ } ++ ++ // Determine the point type. ++ type = (group.indexOf(i) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 ); ++ ++ // Enforce the 'ignoreFirst' option by overwriting the type for 0. ++ if ( !index && ignoreFirst ) { ++ type = 0; ++ } ++ ++ if ( !(i === high && ignoreLast)) { ++ // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value. ++ indexes[newPct.toFixed(5)] = [i, type]; ++ } ++ ++ // Update the percentage count. ++ prevPct = newPct; ++ } ++ }); ++ ++ // Reset the spectrum. ++ scope_Spectrum.direction = originalSpectrumDirection; ++ ++ return indexes; ++ } ++ ++ function addMarking ( spread, filterFunc, formatter ) { ++ ++ var element = document.createElement('div'), ++ out = '', ++ valueSizeClasses = [ ++ options.cssClasses.valueNormal, ++ options.cssClasses.valueLarge, ++ options.cssClasses.valueSub ++ ], ++ markerSizeClasses = [ ++ options.cssClasses.markerNormal, ++ options.cssClasses.markerLarge, ++ options.cssClasses.markerSub ++ ], ++ valueOrientationClasses = [ ++ options.cssClasses.valueHorizontal, ++ options.cssClasses.valueVertical ++ ], ++ markerOrientationClasses = [ ++ options.cssClasses.markerHorizontal, ++ options.cssClasses.markerVertical ++ ]; ++ ++ addClass(element, options.cssClasses.pips); ++ addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical); ++ ++ function getClasses( type, source ){ ++ var a = source === options.cssClasses.value, ++ orientationClasses = a ? valueOrientationClasses : markerOrientationClasses, ++ sizeClasses = a ? valueSizeClasses : markerSizeClasses; ++ ++ return source + ' ' + orientationClasses[options.ort] + ' ' + sizeClasses[type]; ++ } ++ ++ function getTags( offset, source, values ) { ++ return 'class="' + getClasses(values[1], source) + '" style="' + options.style + ': ' + offset + '%"'; ++ } ++ ++ function addSpread ( offset, values ){ ++ ++ if ( scope_Spectrum.direction ) { ++ offset = 100 - offset; ++ } ++ ++ // Apply the filter function, if it is set. ++ values[1] = (values[1] && filterFunc) ? filterFunc(values[0], values[1]) : values[1]; ++ ++ // Add a marker for every point ++ out += '
'; ++ ++ // 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 --cc debian/missing-sources/nouislider.js/range.js index 0000000,0000000..475433c new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/range.js @@@ -1,0 -1,0 +1,272 @@@ ++ ++// Value calculation ++ ++ // Determine the size of a sub-range in relation to a full range. ++ function subRangeRatio ( pa, pb ) { ++ return (100 / (pb - pa)); ++ } ++ ++ // (percentage) How many percent is this value of this range? ++ function fromPercentage ( range, value ) { ++ return (value * 100) / ( range[1] - range[0] ); ++ } ++ ++ // (percentage) Where is this value on this range? ++ function toPercentage ( range, value ) { ++ return fromPercentage( range, range[0] < 0 ? ++ value + Math.abs(range[0]) : ++ value - range[0] ); ++ } ++ ++ // (value) How much is this percentage on this range? ++ function isPercentage ( range, value ) { ++ return ((value * ( range[1] - range[0] )) / 100) + range[0]; ++ } ++ ++ ++// Range conversion ++ ++ function getJ ( value, arr ) { ++ ++ var j = 1; ++ ++ while ( value >= arr[j] ){ ++ j += 1; ++ } ++ ++ return j; ++ } ++ ++ // (percentage) Input a value, find where, on a scale of 0-100, it applies. ++ function toStepping ( xVal, xPct, value ) { ++ ++ if ( value >= xVal.slice(-1)[0] ){ ++ return 100; ++ } ++ ++ var j = getJ( value, xVal ), va, vb, pa, pb; ++ ++ va = xVal[j-1]; ++ vb = xVal[j]; ++ pa = xPct[j-1]; ++ pb = xPct[j]; ++ ++ return pa + (toPercentage([va, vb], value) / subRangeRatio (pa, pb)); ++ } ++ ++ // (value) Input a percentage, find where it is on the specified range. ++ function fromStepping ( xVal, xPct, value ) { ++ ++ // There is no range group that fits 100 ++ if ( value >= 100 ){ ++ return xVal.slice(-1)[0]; ++ } ++ ++ var j = getJ( value, xPct ), va, vb, pa, pb; ++ ++ va = xVal[j-1]; ++ vb = xVal[j]; ++ pa = xPct[j-1]; ++ pb = xPct[j]; ++ ++ return isPercentage([va, vb], (value - pa) * subRangeRatio (pa, pb)); ++ } ++ ++ // (percentage) Get the step that applies at a certain value. ++ function getStep ( xPct, xSteps, snap, value ) { ++ ++ if ( value === 100 ) { ++ return value; ++ } ++ ++ var j = getJ( value, xPct ), a, b; ++ ++ // If 'snap' is set, steps are used as fixed points on the slider. ++ if ( snap ) { ++ ++ a = xPct[j-1]; ++ b = xPct[j]; ++ ++ // Find the closest position, a or b. ++ if ((value - a) > ((b-a)/2)){ ++ return b; ++ } ++ ++ return a; ++ } ++ ++ if ( !xSteps[j-1] ){ ++ return value; ++ } ++ ++ return xPct[j-1] + closest( ++ value - xPct[j-1], ++ xSteps[j-1] ++ ); ++ } ++ ++ ++// Entry parsing ++ ++ function handleEntryPoint ( index, value, that ) { ++ ++ var percentage; ++ ++ // Wrap numerical input in an array. ++ if ( typeof value === "number" ) { ++ value = [value]; ++ } ++ ++ // Reject any invalid input, by testing whether value is an array. ++ if ( Object.prototype.toString.call( value ) !== '[object Array]' ){ ++ throw new Error("noUiSlider: 'range' contains invalid value."); ++ } ++ ++ // Covert min/max syntax to 0 and 100. ++ if ( index === 'min' ) { ++ percentage = 0; ++ } else if ( index === 'max' ) { ++ percentage = 100; ++ } else { ++ percentage = parseFloat( index ); ++ } ++ ++ // Check for correct input. ++ if ( !isNumeric( percentage ) || !isNumeric( value[0] ) ) { ++ throw new Error("noUiSlider: 'range' value isn't numeric."); ++ } ++ ++ // Store values. ++ that.xPct.push( percentage ); ++ that.xVal.push( value[0] ); ++ ++ // NaN will evaluate to false too, but to keep ++ // logging clear, set step explicitly. Make sure ++ // not to override the 'step' setting with false. ++ if ( !percentage ) { ++ if ( !isNaN( value[1] ) ) { ++ that.xSteps[0] = value[1]; ++ } ++ } else { ++ that.xSteps.push( isNaN(value[1]) ? false : value[1] ); ++ } ++ } ++ ++ function handleStepPoint ( i, n, that ) { ++ ++ // Ignore 'false' stepping. ++ if ( !n ) { ++ return true; ++ } ++ ++ // Factor to range ratio ++ that.xSteps[i] = fromPercentage([ ++ that.xVal[i] ++ ,that.xVal[i+1] ++ ], n) / subRangeRatio ( ++ that.xPct[i], ++ that.xPct[i+1] ); ++ } ++ ++ ++// Interface ++ ++ // The interface to Spectrum handles all direction-based ++ // conversions, so the above values are unaware. ++ ++ function Spectrum ( entry, snap, direction, singleStep ) { ++ ++ this.xPct = []; ++ this.xVal = []; ++ this.xSteps = [ singleStep || false ]; ++ this.xNumSteps = [ false ]; ++ ++ this.snap = snap; ++ this.direction = direction; ++ ++ var index, ordered = [ /* [0, 'min'], [1, '50%'], [2, 'max'] */ ]; ++ ++ // Map the object keys to an array. ++ for ( index in entry ) { ++ if ( entry.hasOwnProperty(index) ) { ++ ordered.push([entry[index], index]); ++ } ++ } ++ ++ // Sort all entries by value (numeric sort). ++ if ( ordered.length && typeof ordered[0][0] === "object" ) { ++ ordered.sort(function(a, b) { return a[0][0] - b[0][0]; }); ++ } else { ++ ordered.sort(function(a, b) { return a[0] - b[0]; }); ++ } ++ ++ ++ // Convert all entries to subranges. ++ for ( index = 0; index < ordered.length; index++ ) { ++ handleEntryPoint(ordered[index][1], ordered[index][0], this); ++ } ++ ++ // Store the actual step values. ++ // xSteps is sorted in the same order as xPct and xVal. ++ this.xNumSteps = this.xSteps.slice(0); ++ ++ // Convert all numeric steps to the percentage of the subrange they represent. ++ for ( index = 0; index < this.xNumSteps.length; index++ ) { ++ handleStepPoint(index, this.xNumSteps[index], this); ++ } ++ } ++ ++ Spectrum.prototype.getMargin = function ( value ) { ++ return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false; ++ }; ++ ++ Spectrum.prototype.toStepping = function ( value ) { ++ ++ value = toStepping( this.xVal, this.xPct, value ); ++ ++ // Invert the value if this is a right-to-left slider. ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ return value; ++ }; ++ ++ Spectrum.prototype.fromStepping = function ( value ) { ++ ++ // Invert the value if this is a right-to-left slider. ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ return fromStepping( this.xVal, this.xPct, value ); ++ }; ++ ++ Spectrum.prototype.getStep = function ( value ) { ++ ++ // Find the proper step for rtl sliders by search in inverse direction. ++ // Fixes issue #262. ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ value = getStep(this.xPct, this.xSteps, this.snap, value ); ++ ++ if ( this.direction ) { ++ value = 100 - value; ++ } ++ ++ return value; ++ }; ++ ++ Spectrum.prototype.getApplicableStep = function ( value ) { ++ ++ // If the value is 100%, return the negative step twice. ++ var j = getJ(value, this.xPct), offset = value === 100 ? 2 : 1; ++ return [this.xNumSteps[j-2], this.xVal[j-offset], this.xNumSteps[j-offset]]; ++ }; ++ ++ // Outside testing ++ Spectrum.prototype.convert = function ( value ) { ++ return this.getStep(this.toStepping(value)); ++ }; diff --cc debian/missing-sources/nouislider.js/scope.js index 0000000,0000000..d8f11eb new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope.js @@@ -1,0 -1,0 +1,312 @@@ ++ ++ // Test suggested values and apply margin, step. ++ function setHandle ( handle, to, noLimitOption ) { ++ ++ var trigger = handle !== scope_Handles[0] ? 1 : 0, ++ lowerMargin = scope_Locations[0] + options.margin, ++ upperMargin = scope_Locations[1] - options.margin, ++ lowerLimit = scope_Locations[0] + options.limit, ++ upperLimit = scope_Locations[1] - options.limit; ++ ++ // For sliders with multiple handles, ++ // limit movement to the other handle. ++ // Apply the margin option by adding it to the handle positions. ++ if ( scope_Handles.length > 1 ) { ++ to = trigger ? Math.max( to, lowerMargin ) : Math.min( to, upperMargin ); ++ } ++ ++ // The limit option has the opposite effect, limiting handles to a ++ // maximum distance from another. Limit must be > 0, as otherwise ++ // handles would be unmoveable. 'noLimitOption' is set to 'false' ++ // for the .val() method, except for pass 4/4. ++ if ( noLimitOption !== false && options.limit && scope_Handles.length > 1 ) { ++ to = trigger ? Math.min ( to, lowerLimit ) : Math.max( to, upperLimit ); ++ } ++ ++ // Handle the step option. ++ to = scope_Spectrum.getStep( to ); ++ ++ // Limit percentage to the 0 - 100 range ++ to = limit(to); ++ ++ // Return false if handle can't move ++ if ( to === scope_Locations[trigger] ) { ++ return false; ++ } ++ ++ // Set the handle to the new position. ++ // Use requestAnimationFrame for efficient painting. ++ // No significant effect in Chrome, Edge sees dramatic ++ // performace improvements. ++ if ( window.requestAnimationFrame ) { ++ window.requestAnimationFrame(function(){ ++ handle.style[options.style] = to + '%'; ++ }); ++ } else { ++ handle.style[options.style] = to + '%'; ++ } ++ ++ // Force proper handle stacking ++ if ( !handle.previousSibling ) { ++ removeClass(handle, options.cssClasses.stacking); ++ if ( to > 50 ) { ++ addClass(handle, options.cssClasses.stacking); ++ } ++ } ++ ++ // Update locations. ++ scope_Locations[trigger] = to; ++ ++ // Convert the value to the slider stepping/range. ++ scope_Values[trigger] = scope_Spectrum.fromStepping( to ); ++ ++ fireEvent('update', trigger); ++ ++ return true; ++ } ++ ++ // Loop values from value method and apply them. ++ function setValues ( count, values ) { ++ ++ var i, trigger, to; ++ ++ // With the limit option, we'll need another limiting pass. ++ if ( options.limit ) { ++ count += 1; ++ } ++ ++ // If there are multiple handles to be set run the setting ++ // mechanism twice for the first handle, to make sure it ++ // can be bounced of the second one properly. ++ for ( i = 0; i < count; i += 1 ) { ++ ++ trigger = i%2; ++ ++ // Get the current argument from the array. ++ to = values[trigger]; ++ ++ // Setting with null indicates an 'ignore'. ++ // Inputting 'false' is invalid. ++ if ( to !== null && to !== false ) { ++ ++ // If a formatted number was passed, attemt to decode it. ++ if ( typeof to === 'number' ) { ++ to = String(to); ++ } ++ ++ to = options.format.from( to ); ++ ++ // Request an update for all links if the value was invalid. ++ // Do so too if setting the handle fails. ++ if ( to === false || isNaN(to) || setHandle( scope_Handles[trigger], scope_Spectrum.toStepping( to ), i === (3 - options.dir) ) === false ) { ++ fireEvent('update', trigger); ++ } ++ } ++ } ++ } ++ ++ // Set the slider value. ++ function valueSet ( input, fireSetEvent ) { ++ ++ var count, values = asArray( input ), i; ++ ++ // Event fires by default ++ fireSetEvent = (fireSetEvent === undefined ? true : !!fireSetEvent); ++ ++ // The RTL settings is implemented by reversing the front-end, ++ // internal mechanisms are the same. ++ if ( options.dir && options.handles > 1 ) { ++ values.reverse(); ++ } ++ ++ // Animation is optional. ++ // Make sure the initial values where set before using animated placement. ++ if ( options.animate && scope_Locations[0] !== -1 ) { ++ addClassFor( scope_Target, options.cssClasses.tap, options.animationDuration ); ++ } ++ ++ // Determine how often to set the handles. ++ count = scope_Handles.length > 1 ? 3 : 1; ++ ++ if ( values.length === 1 ) { ++ count = 1; ++ } ++ ++ setValues ( count, values ); ++ ++ // Fire the 'set' event for both handles. ++ for ( i = 0; i < scope_Handles.length; i++ ) { ++ ++ // Fire the event only for handles that received a new value, as per #579 ++ if ( values[i] !== null && fireSetEvent ) { ++ fireEvent('set', i); ++ } ++ } ++ } ++ ++ // Get the slider value. ++ function valueGet ( ) { ++ ++ var i, retour = []; ++ ++ // Get the value from all handles. ++ for ( i = 0; i < options.handles; i += 1 ){ ++ retour[i] = options.format.to( scope_Values[i] ); ++ } ++ ++ return inSliderOrder( retour ); ++ } ++ ++ // Removes classes from the root and empties it. ++ function destroy ( ) { ++ ++ for ( var key in options.cssClasses ) { ++ if ( !options.cssClasses.hasOwnProperty(key) ) { continue; } ++ removeClass(scope_Target, options.cssClasses[key]); ++ } ++ ++ while (scope_Target.firstChild) { ++ scope_Target.removeChild(scope_Target.firstChild); ++ } ++ ++ delete scope_Target.noUiSlider; ++ } ++ ++ // Get the current step size for the slider. ++ function getCurrentStep ( ) { ++ ++ // Check all locations, map them to their stepping point. ++ // Get the step point, then find it in the input list. ++ var retour = scope_Locations.map(function( location, index ){ ++ ++ var step = scope_Spectrum.getApplicableStep( location ), ++ ++ // As per #391, the comparison for the decrement step can have some rounding issues. ++ // Round the value to the precision used in the step. ++ stepDecimals = countDecimals(String(step[2])), ++ ++ // Get the current numeric value ++ value = scope_Values[index], ++ ++ // To move the slider 'one step up', the current step value needs to be added. ++ // Use null if we are at the maximum slider value. ++ increment = location === 100 ? null : step[2], ++ ++ // Going 'one step down' might put the slider in a different sub-range, so we ++ // need to switch between the current or the previous step. ++ prev = Number((value - step[2]).toFixed(stepDecimals)), ++ ++ // If the value fits the step, return the current step value. Otherwise, use the ++ // previous step. Return null if the slider is at its minimum value. ++ decrement = location === 0 ? null : (prev >= step[1]) ? step[2] : (step[0] || false); ++ ++ return [decrement, increment]; ++ }); ++ ++ // Return values in the proper order. ++ return inSliderOrder( retour ); ++ } ++ ++ // Attach an event to this slider, possibly including a namespace ++ function bindEvent ( namespacedEvent, callback ) { ++ scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || []; ++ scope_Events[namespacedEvent].push(callback); ++ ++ // If the event bound is 'update,' fire it immediately for all handles. ++ if ( namespacedEvent.split('.')[0] === 'update' ) { ++ scope_Handles.forEach(function(a, index){ ++ fireEvent('update', index); ++ }); ++ } ++ } ++ ++ // Undo attachment of event ++ function removeEvent ( namespacedEvent ) { ++ ++ var event = namespacedEvent && namespacedEvent.split('.')[0], ++ namespace = event && namespacedEvent.substring(event.length); ++ ++ Object.keys(scope_Events).forEach(function( bind ){ ++ ++ var tEvent = bind.split('.')[0], ++ tNamespace = bind.substring(tEvent.length); ++ ++ if ( (!event || event === tEvent) && (!namespace || namespace === tNamespace) ) { ++ delete scope_Events[bind]; ++ } ++ }); ++ } ++ ++ // Updateable: margin, limit, step, range, animate, snap ++ function updateOptions ( optionsToUpdate, fireSetEvent ) { ++ ++ // Spectrum is created using the range, snap, direction and step options. ++ // 'snap' and 'step' can be updated, 'direction' cannot, due to event binding. ++ // If 'snap' and 'step' are not passed, they should remain unchanged. ++ var v = valueGet(), newOptions = testOptions({ ++ start: [0, 0], ++ margin: optionsToUpdate.margin, ++ limit: optionsToUpdate.limit, ++ step: optionsToUpdate.step === undefined ? options.singleStep : optionsToUpdate.step, ++ range: optionsToUpdate.range, ++ animate: optionsToUpdate.animate, ++ snap: optionsToUpdate.snap === undefined ? options.snap : optionsToUpdate.snap ++ }); ++ ++ ['margin', 'limit', 'range', 'animate'].forEach(function(name){ ++ ++ // Only change options that we're actually passed to update. ++ if ( optionsToUpdate[name] !== undefined ) { ++ options[name] = optionsToUpdate[name]; ++ } ++ }); ++ ++ // Save current spectrum direction as testOptions in testRange call ++ // doesn't rely on current direction ++ newOptions.spectrum.direction = scope_Spectrum.direction; ++ scope_Spectrum = newOptions.spectrum; ++ ++ // Invalidate the current positioning so valueSet forces an update. ++ scope_Locations = [-1, -1]; ++ valueSet(optionsToUpdate.start || v, fireSetEvent); ++ } ++ ++ ++ // Throw an error if the slider was already initialized. ++ if ( scope_Target.noUiSlider ) { ++ throw new Error('Slider was already initialized.'); ++ } ++ ++ // Create the base element, initialise HTML and set classes. ++ // Add handles and links. ++ scope_Base = addSlider( options.dir, options.ort, scope_Target ); ++ scope_Handles = addHandles( options.handles, options.dir, scope_Base ); ++ ++ // Set the connect classes. ++ addConnection ( options.connect, scope_Target, scope_Handles ); ++ ++ if ( options.pips ) { ++ pips(options.pips); ++ } ++ ++ if ( options.tooltips ) { ++ tooltips(); ++ } ++ ++ scope_Self = { ++ destroy: destroy, ++ steps: getCurrentStep, ++ on: bindEvent, ++ off: removeEvent, ++ get: valueGet, ++ set: valueSet, ++ updateOptions: updateOptions, ++ options: originalOptions, // Issue #600 ++ target: scope_Target, // Issue #597 ++ pips: pips // Issue #594 ++ }; ++ ++ // Attach user events. ++ events( options.events ); ++ ++ return scope_Self; diff --cc debian/missing-sources/nouislider.js/scope_end.js index 0000000,0000000..5c34318 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_end.js @@@ -1,0 -1,0 +1,1 @@@ ++} diff --cc debian/missing-sources/nouislider.js/scope_events.js index 0000000,0000000..158c9f2 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_events.js @@@ -1,0 -1,0 +1,316 @@@ ++ ++ // Handler for attaching events trough a proxy. ++ function attach ( events, element, callback, data ) { ++ ++ // This function can be used to 'filter' events to the slider. ++ // element is a node, not a nodeList ++ ++ var method = function ( e ){ ++ ++ if ( scope_Target.hasAttribute('disabled') ) { ++ return false; ++ } ++ ++ // Stop if an active 'tap' transition is taking place. ++ if ( hasClass(scope_Target, options.cssClasses.tap) ) { ++ return false; ++ } ++ ++ e = fixEvent(e, data.pageOffset); ++ ++ // Ignore right or middle clicks on start #454 ++ if ( events === actions.start && e.buttons !== undefined && e.buttons > 1 ) { ++ return false; ++ } ++ ++ // Ignore right or middle clicks on start #454 ++ if ( data.hover && e.buttons ) { ++ return false; ++ } ++ ++ e.calcPoint = e.points[ options.ort ]; ++ ++ // Call the event handler with the event [ and additional data ]. ++ callback ( e, data ); ++ ++ }, methods = []; ++ ++ // Bind a closure on the target for every event type. ++ events.split(' ').forEach(function( eventName ){ ++ element.addEventListener(eventName, method, false); ++ methods.push([eventName, method]); ++ }); ++ ++ return methods; ++ } ++ ++ // Handle movement on document for handle and range drag. ++ function move ( event, data ) { ++ ++ // Fix #498 ++ // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty). ++ // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero ++ // IE9 has .buttons and .which zero on mousemove. ++ // Firefox breaks the spec MDN defines. ++ if ( navigator.appVersion.indexOf("MSIE 9") === -1 && event.buttons === 0 && data.buttonsProperty !== 0 ) { ++ return end(event, data); ++ } ++ ++ var handles = data.handles || scope_Handles, positions, state = false, ++ proposal = ((event.calcPoint - data.start) * 100) / data.baseSize, ++ handleNumber = handles[0] === scope_Handles[0] ? 0 : 1, i; ++ ++ // Calculate relative positions for the handles. ++ positions = getPositions( proposal, data.positions, handles.length > 1); ++ ++ state = setHandle ( handles[0], positions[handleNumber], handles.length === 1 ); ++ ++ if ( handles.length > 1 ) { ++ ++ state = setHandle ( handles[1], positions[handleNumber?0:1], false ) || state; ++ ++ if ( state ) { ++ // fire for both handles ++ for ( i = 0; i < data.handles.length; i++ ) { ++ fireEvent('slide', i); ++ } ++ } ++ } else if ( state ) { ++ // Fire for a single handle ++ fireEvent('slide', handleNumber); ++ } ++ } ++ ++ // Unbind move events on document, call callbacks. ++ function end ( event, data ) { ++ ++ // The handle is no longer active, so remove the class. ++ var active = scope_Base.querySelector( '.' + options.cssClasses.active ), ++ handleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1; ++ ++ if ( active !== null ) { ++ removeClass(active, options.cssClasses.active); ++ } ++ ++ // Remove cursor styles and text-selection events bound to the body. ++ if ( event.cursor ) { ++ document.body.style.cursor = ''; ++ document.body.removeEventListener('selectstart', document.body.noUiListener); ++ } ++ ++ var d = document.documentElement; ++ ++ // Unbind the move and end events, which are added on 'start'. ++ d.noUiListeners.forEach(function( c ) { ++ d.removeEventListener(c[0], c[1]); ++ }); ++ ++ // Remove dragging class. ++ removeClass(scope_Target, options.cssClasses.drag); ++ ++ // Fire the change and set events. ++ fireEvent('set', handleNumber); ++ fireEvent('change', handleNumber); ++ ++ // If this is a standard handle movement, fire the end event. ++ if ( data.handleNumber !== undefined ) { ++ fireEvent('end', data.handleNumber); ++ } ++ } ++ ++ // Fire 'end' when a mouse or pen leaves the document. ++ function documentLeave ( event, data ) { ++ if ( event.type === "mouseout" && event.target.nodeName === "HTML" && event.relatedTarget === null ){ ++ end ( event, data ); ++ } ++ } ++ ++ // Bind move events on document. ++ function start ( event, data ) { ++ ++ var d = document.documentElement; ++ ++ // Mark the handle as 'active' so it can be styled. ++ if ( data.handles.length === 1 ) { ++ // Support 'disabled' handles ++ if ( data.handles[0].hasAttribute('disabled') ) { ++ return false; ++ } ++ ++ addClass(data.handles[0].children[0], options.cssClasses.active); ++ } ++ ++ // Fix #551, where a handle gets selected instead of dragged. ++ event.preventDefault(); ++ ++ // A drag should never propagate up to the 'tap' event. ++ event.stopPropagation(); ++ ++ // Attach the move and end events. ++ var moveEvent = attach(actions.move, d, move, { ++ start: event.calcPoint, ++ baseSize: baseSize(), ++ pageOffset: event.pageOffset, ++ handles: data.handles, ++ handleNumber: data.handleNumber, ++ buttonsProperty: event.buttons, ++ positions: [ ++ scope_Locations[0], ++ scope_Locations[scope_Handles.length - 1] ++ ] ++ }), endEvent = attach(actions.end, d, end, { ++ handles: data.handles, ++ handleNumber: data.handleNumber ++ }); ++ ++ var outEvent = attach("mouseout", d, documentLeave, { ++ handles: data.handles, ++ handleNumber: data.handleNumber ++ }); ++ ++ d.noUiListeners = moveEvent.concat(endEvent, outEvent); ++ ++ // Text selection isn't an issue on touch devices, ++ // so adding cursor styles can be skipped. ++ if ( event.cursor ) { ++ ++ // Prevent the 'I' cursor and extend the range-drag cursor. ++ document.body.style.cursor = getComputedStyle(event.target).cursor; ++ ++ // Mark the target with a dragging state. ++ if ( scope_Handles.length > 1 ) { ++ addClass(scope_Target, options.cssClasses.drag); ++ } ++ ++ var f = function(){ ++ return false; ++ }; ++ ++ document.body.noUiListener = f; ++ ++ // Prevent text selection when dragging the handles. ++ document.body.addEventListener('selectstart', f, false); ++ } ++ ++ if ( data.handleNumber !== undefined ) { ++ fireEvent('start', data.handleNumber); ++ } ++ } ++ ++ // Move closest handle to tapped location. ++ function tap ( event ) { ++ ++ var location = event.calcPoint, total = 0, handleNumber, to; ++ ++ // The tap event shouldn't propagate up and cause 'edge' to run. ++ event.stopPropagation(); ++ ++ // Add up the handle offsets. ++ scope_Handles.forEach(function(a){ ++ total += offset(a)[ options.style ]; ++ }); ++ ++ // Find the handle closest to the tapped position. ++ handleNumber = ( location < total/2 || scope_Handles.length === 1 ) ? 0 : 1; ++ ++ // Check if handler is not disablet if yes set number to the next handler ++ if (scope_Handles[handleNumber].hasAttribute('disabled')) { ++ handleNumber = handleNumber ? 0 : 1; ++ } ++ ++ location -= offset(scope_Base)[ options.style ]; ++ ++ // Calculate the new position. ++ to = ( location * 100 ) / baseSize(); ++ ++ if ( !options.events.snap ) { ++ // Flag the slider as it is now in a transitional state. ++ // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that. ++ addClassFor( scope_Target, options.cssClasses.tap, options.animationDuration ); ++ } ++ ++ // Support 'disabled' handles ++ if ( scope_Handles[handleNumber].hasAttribute('disabled') ) { ++ return false; ++ } ++ ++ // Find the closest handle and calculate the tapped point. ++ // The set handle to the new position. ++ setHandle( scope_Handles[handleNumber], to ); ++ ++ fireEvent('slide', handleNumber, true); ++ fireEvent('set', handleNumber, true); ++ fireEvent('change', handleNumber, true); ++ ++ if ( options.events.snap ) { ++ start(event, { handles: [scope_Handles[handleNumber]] }); ++ } ++ } ++ ++ // Fires a 'hover' event for a hovered mouse/pen position. ++ function hover ( event ) { ++ ++ var location = event.calcPoint - offset(scope_Base)[ options.style ], ++ to = scope_Spectrum.getStep(( location * 100 ) / baseSize()), ++ value = scope_Spectrum.fromStepping( to ); ++ ++ Object.keys(scope_Events).forEach(function( targetEvent ) { ++ if ( 'hover' === targetEvent.split('.')[0] ) { ++ scope_Events[targetEvent].forEach(function( callback ) { ++ callback.call( scope_Self, value ); ++ }); ++ } ++ }); ++ } ++ ++ // Attach events to several slider parts. ++ function events ( behaviour ) { ++ ++ // Attach the standard drag event to the handles. ++ if ( !behaviour.fixed ) { ++ ++ scope_Handles.forEach(function( handle, index ){ ++ ++ // These events are only bound to the visual handle ++ // element, not the 'real' origin element. ++ attach ( actions.start, handle.children[0], start, { ++ handles: [ handle ], ++ handleNumber: index ++ }); ++ }); ++ } ++ ++ // Attach the tap event to the slider base. ++ if ( behaviour.tap ) { ++ ++ attach ( actions.start, scope_Base, tap, { ++ handles: scope_Handles ++ }); ++ } ++ ++ // Fire hover events ++ if ( behaviour.hover ) { ++ attach ( actions.move, scope_Base, hover, { hover: true } ); ++ } ++ ++ // Make the range draggable. ++ if ( behaviour.drag ){ ++ ++ var drag = [scope_Base.querySelector( '.' + options.cssClasses.connect )]; ++ addClass(drag[0], options.cssClasses.draggable); ++ ++ // When the range is fixed, the entire range can ++ // be dragged by the handles. The handle in the first ++ // origin will propagate the start event upward, ++ // but it needs to be bound manually on the other. ++ if ( behaviour.fixed ) { ++ drag.push(scope_Handles[(drag[0] === scope_Handles[0] ? 1 : 0)].children[0]); ++ } ++ ++ drag.forEach(function( element ) { ++ attach ( actions.start, element, start, { ++ handles: scope_Handles ++ }); ++ }); ++ } ++ } diff --cc debian/missing-sources/nouislider.js/scope_helpers.js index 0000000,0000000..e7759f6 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_helpers.js @@@ -1,0 -1,0 +1,63 @@@ ++ ++ // Shorthand for base dimensions. ++ function baseSize ( ) { ++ var rect = scope_Base.getBoundingClientRect(), alt = 'offset' + ['Width', 'Height'][options.ort]; ++ return options.ort === 0 ? (rect.width||scope_Base[alt]) : (rect.height||scope_Base[alt]); ++ } ++ ++ // External event handling ++ function fireEvent ( event, handleNumber, tap ) { ++ ++ var i; ++ ++ // During initialization, do not fire events. ++ for ( i = 0; i < options.handles; i++ ) { ++ if ( scope_Locations[i] === -1 ) { ++ return; ++ } ++ } ++ ++ if ( handleNumber !== undefined && options.handles !== 1 ) { ++ handleNumber = Math.abs(handleNumber - options.dir); ++ } ++ ++ Object.keys(scope_Events).forEach(function( targetEvent ) { ++ ++ var eventType = targetEvent.split('.')[0]; ++ ++ if ( event === eventType ) { ++ scope_Events[targetEvent].forEach(function( callback ) { ++ ++ callback.call( ++ // Use the slider public API as the scope ('this') ++ scope_Self, ++ // Return values as array, so arg_1[arg_2] is always valid. ++ asArray(valueGet()), ++ // Handle index, 0 or 1 ++ handleNumber, ++ // Unformatted slider values ++ asArray(inSliderOrder(Array.prototype.slice.call(scope_Values))), ++ // Event is fired by tap, true or false ++ tap || false, ++ // Left offset of the handle, in relation to the slider ++ scope_Locations ++ ); ++ }); ++ } ++ }); ++ } ++ ++ // Returns the input array, respecting the slider direction configuration. ++ function inSliderOrder ( values ) { ++ ++ // If only one handle is used, return a single value. ++ if ( values.length === 1 ){ ++ return values[0]; ++ } ++ ++ if ( options.dir ) { ++ return values.reverse(); ++ } ++ ++ return values; ++ } diff --cc debian/missing-sources/nouislider.js/scope_start.js index 0000000,0000000..79a904b new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/scope_start.js @@@ -1,0 -1,0 +1,13 @@@ ++ ++function closure ( target, options, originalOptions ){ ++ var ++ actions = getActions( ), ++ // All variables local to 'closure' are prefixed with 'scope_' ++ scope_Target = target, ++ scope_Locations = [-1, -1], ++ scope_Base, ++ scope_Handles, ++ scope_Spectrum = options.spectrum, ++ scope_Values = [], ++ scope_Events = {}, ++ scope_Self; diff --cc debian/missing-sources/nouislider.js/structure.js index 0000000,0000000..36a5e36 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/structure.js @@@ -1,0 -1,0 +1,143 @@@ ++ ++ // Delimit proposed values for handle positions. ++ function getPositions ( a, b, delimit ) { ++ ++ // Add movement to current position. ++ var c = a + b[0], d = a + b[1]; ++ ++ // Only alter the other position on drag, ++ // not on standard sliding. ++ if ( delimit ) { ++ if ( c < 0 ) { ++ d += Math.abs(c); ++ } ++ if ( d > 100 ) { ++ c -= ( d - 100 ); ++ } ++ ++ // Limit values to 0 and 100. ++ return [limit(c), limit(d)]; ++ } ++ ++ return [c,d]; ++ } ++ ++ // Provide a clean event with standardized offset values. ++ function fixEvent ( e, pageOffset ) { ++ ++ // Prevent scrolling and panning on touch events, while ++ // attempting to slide. The tap event also depends on this. ++ e.preventDefault(); ++ ++ // Filter the event to register the type, which can be ++ // touch, mouse or pointer. Offset changes need to be ++ // made on an event specific basis. ++ var touch = e.type.indexOf('touch') === 0, ++ mouse = e.type.indexOf('mouse') === 0, ++ pointer = e.type.indexOf('pointer') === 0, ++ x,y, event = e; ++ ++ // IE10 implemented pointer events with a prefix; ++ if ( e.type.indexOf('MSPointer') === 0 ) { ++ pointer = true; ++ } ++ ++ if ( touch ) { ++ // noUiSlider supports one movement at a time, ++ // so we can select the first 'changedTouch'. ++ x = e.changedTouches[0].pageX; ++ y = e.changedTouches[0].pageY; ++ } ++ ++ pageOffset = pageOffset || getPageOffset(); ++ ++ if ( mouse || pointer ) { ++ x = e.clientX + pageOffset.x; ++ y = e.clientY + pageOffset.y; ++ } ++ ++ event.pageOffset = pageOffset; ++ event.points = [x, y]; ++ event.cursor = mouse || pointer; // Fix #435 ++ ++ return event; ++ } ++ ++ // Append a handle to the base. ++ function addHandle ( direction, index ) { ++ ++ var origin = document.createElement('div'), ++ handle = document.createElement('div'), ++ classModifier = [options.cssClasses.handleLower, options.cssClasses.handleUpper]; ++ ++ if ( direction ) { ++ classModifier.reverse(); ++ } ++ ++ addClass(handle, options.cssClasses.handle); ++ addClass(handle, classModifier[index]); ++ ++ addClass(origin, options.cssClasses.origin); ++ origin.appendChild(handle); ++ ++ return origin; ++ } ++ ++ // Add the proper connection classes. ++ function addConnection ( connect, target, handles ) { ++ ++ // Apply the required connection classes to the elements ++ // that need them. Some classes are made up for several ++ // segments listed in the class list, to allow easy ++ // renaming and provide a minor compression benefit. ++ switch ( connect ) { ++ case 1: addClass(target, options.cssClasses.connect); ++ addClass(handles[0], options.cssClasses.background); ++ break; ++ case 3: addClass(handles[1], options.cssClasses.background); ++ /* falls through */ ++ case 2: addClass(handles[0], options.cssClasses.connect); ++ /* falls through */ ++ case 0: addClass(target, options.cssClasses.background); ++ break; ++ } ++ } ++ ++ // Add handles to the slider base. ++ function addHandles ( nrHandles, direction, base ) { ++ ++ var index, handles = []; ++ ++ // Append handles. ++ for ( index = 0; index < nrHandles; index += 1 ) { ++ ++ // Keep a list of all added handles. ++ handles.push( base.appendChild(addHandle( direction, index )) ); ++ } ++ ++ return handles; ++ } ++ ++ // Initialize a single slider. ++ function addSlider ( direction, orientation, target ) { ++ ++ // Apply classes and data to the target. ++ addClass(target, options.cssClasses.target); ++ ++ if ( direction === 0 ) { ++ addClass(target, options.cssClasses.ltr); ++ } else { ++ addClass(target, options.cssClasses.rtl); ++ } ++ ++ if ( orientation === 0 ) { ++ addClass(target, options.cssClasses.horizontal); ++ } else { ++ addClass(target, options.cssClasses.vertical); ++ } ++ ++ var div = document.createElement('div'); ++ addClass(div, options.cssClasses.base); ++ target.appendChild(div); ++ return div; ++ } diff --cc debian/missing-sources/nouislider.js/tooltips.js index 0000000,0000000..fd5d673 new file mode 100644 --- /dev/null +++ b/debian/missing-sources/nouislider.js/tooltips.js @@@ -1,0 -1,0 +1,33 @@@ ++ ++ function addTooltip ( handle, index ) { ++ ++ if ( !options.tooltips[index] ) { ++ return false; ++ } ++ ++ var element = document.createElement('div'); ++ element.className = options.cssClasses.tooltip; ++ return handle.firstChild.appendChild(element); ++ } ++ ++ // The tooltips option is a shorthand for using the 'update' event. ++ function tooltips ( ) { ++ ++ if ( options.dir ) { ++ options.tooltips.reverse(); ++ } ++ ++ // Tooltips are added with options.tooltips in original order. ++ var tips = scope_Handles.map(addTooltip); ++ ++ if ( options.dir ) { ++ tips.reverse(); ++ options.tooltips.reverse(); ++ } ++ ++ bindEvent('update', function(f, o, r) { ++ if ( tips[o] ) { ++ tips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]); ++ } ++ }); ++ } diff --cc debian/missing-sources/render-a11y-string.js index 0000000,0000000..8cdbc0c new file mode 100644 --- /dev/null +++ b/debian/missing-sources/render-a11y-string.js @@@ -1,0 -1,0 +1,712 @@@ ++// @flow ++/** ++ * renderA11yString returns a readable string. ++ * ++ * In some cases the string will have the proper semantic math ++ * meaning,: ++ * renderA11yString("\\frac{1}{2}"") ++ * -> "start fraction, 1, divided by, 2, end fraction" ++ * ++ * However, other cases do not: ++ * renderA11yString("f(x) = x^2") ++ * -> "f, left parenthesis, x, right parenthesis, equals, x, squared" ++ * ++ * The commas in the string aim to increase ease of understanding ++ * when read by a screenreader. ++ */ ++ ++// NOTE: since we're importing types here these files won't actually be ++// included in the build. ++import type {Atom} from "../../src/symbols"; ++import type {AnyParseNode} from "../../src/parseNode"; ++import type {SettingsOptions} from "../../src/Settings"; ++ ++// $FlowIgnore: we import the types directly anyways ++import katex from "katex"; ++ ++const stringMap = { ++ "(": "left parenthesis", ++ ")": "right parenthesis", ++ "[": "open bracket", ++ "]": "close bracket", ++ "\\{": "left brace", ++ "\\}": "right brace", ++ "\\lvert": "open vertical bar", ++ "\\rvert": "close vertical bar", ++ "|": "vertical bar", ++ "\\uparrow": "up arrow", ++ "\\Uparrow": "up arrow", ++ "\\downarrow": "down arrow", ++ "\\Downarrow": "down arrow", ++ "\\updownarrow": "up down arrow", ++ "\\leftarrow": "left arrow", ++ "\\Leftarrow": "left arrow", ++ "\\rightarrow": "right arrow", ++ "\\Rightarrow": "right arrow", ++ "\\langle": "open angle", ++ "\\rangle": "close angle", ++ "\\lfloor": "open floor", ++ "\\rfloor": "close floor", ++ "\\int": "integral", ++ "\\intop": "integral", ++ "\\lim": "limit", ++ "\\ln": "natural log", ++ "\\log": "log", ++ "\\sin": "sine", ++ "\\cos": "cosine", ++ "\\tan": "tangent", ++ "\\cot": "cotangent", ++ "\\sum": "sum", ++ "/": "slash", ++ ",": "comma", ++ ".": "point", ++ "-": "negative", ++ "+": "plus", ++ "~": "tilde", ++ ":": "colon", ++ "?": "question mark", ++ "'": "apostrophe", ++ "\\%": "percent", ++ " ": "space", ++ "\\ ": "space", ++ "\\$": "dollar sign", ++ "\\angle": "angle", ++ "\\degree": "degree", ++ "\\circ": "circle", ++ "\\vec": "vector", ++ "\\triangle": "triangle", ++ "\\pi": "pi", ++ "\\prime": "prime", ++ "\\infty": "infinity", ++ "\\alpha": "alpha", ++ "\\beta": "beta", ++ "\\gamma": "gamma", ++ "\\omega": "omega", ++ "\\theta": "theta", ++ "\\sigma": "sigma", ++ "\\lambda": "lambda", ++ "\\tau": "tau", ++ "\\Delta": "delta", ++ "\\delta": "delta", ++ "\\mu": "mu", ++ "\\rho": "rho", ++ "\\nabla": "del", ++ "\\ell": "ell", ++ "\\ldots": "dots", ++ // TODO: add entries for all accents ++ "\\hat": "hat", ++ "\\acute": "acute", ++}; ++ ++const powerMap = { ++ "prime": "prime", ++ "degree": "degrees", ++ "circle": "degrees", ++ "2": "squared", ++ "3": "cubed", ++}; ++ ++const openMap = { ++ "|": "open vertical bar", ++ ".": "", ++}; ++ ++const closeMap = { ++ "|": "close vertical bar", ++ ".": "", ++}; ++ ++const binMap = { ++ "+": "plus", ++ "-": "minus", ++ "\\pm": "plus minus", ++ "\\cdot": "dot", ++ "*": "times", ++ "/": "divided by", ++ "\\times": "times", ++ "\\div": "divided by", ++ "\\circ": "circle", ++ "\\bullet": "bullet", ++}; ++ ++const relMap = { ++ "=": "equals", ++ "\\approx": "approximately equals", ++ "≠": "does not equal", ++ "\\geq": "is greater than or equal to", ++ "\\ge": "is greater than or equal to", ++ "\\leq": "is less than or equal to", ++ "\\le": "is less than or equal to", ++ ">": "is greater than", ++ "<": "is less than", ++ "\\leftarrow": "left arrow", ++ "\\Leftarrow": "left arrow", ++ "\\rightarrow": "right arrow", ++ "\\Rightarrow": "right arrow", ++ ":": "colon", ++}; ++ ++const accentUnderMap = { ++ "\\underleftarrow": "left arrow", ++ "\\underrightarrow": "right arrow", ++ "\\underleftrightarrow": "left-right arrow", ++ "\\undergroup": "group", ++ "\\underlinesegment": "line segment", ++ "\\utilde": "tilde", ++}; ++ ++type NestedArray = 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 --cc debian/not-installed index 0000000,0000000..bdd8c07 new file mode 100644 --- /dev/null +++ b/debian/not-installed @@@ -1,0 -1,0 +1,1 @@@ ++usr/share/info/dir diff --cc debian/patches/git-description.patch index 0000000,0000000..9cfdf75 new file mode 100644 --- /dev/null +++ b/debian/patches/git-description.patch @@@ -1,0 -1,0 +1,19 @@@ ++Description: Provide version#"git description". ++ Since we may not be building the package from a git repository, we ++ hardcode the git description ahead of time. This patch is ++ automatically updated by debian/scripts/m2-get-orig-source.sh. ++Author: Doug Torrance ++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 --cc debian/patches/givaro-bool-constant.patch index 0000000,0000000..68e36b5 new file mode 100644 --- /dev/null +++ b/debian/patches/givaro-bool-constant.patch @@@ -1,0 -1,0 +1,37 @@@ ++Description: Fix "'givaro_bool_constant' does not name a type" error. ++Origin: https://github.com/Macaulay2/M2/commit/ff0f0cb (reversed) ++Bug: https://github.com/Macaulay2/M2/issues/2347 ++Last-Update: 2021-12-18 ++ ++--- a/M2/Macaulay2/e/aring-gf-givaro.hpp +++++ b/M2/Macaulay2/e/aring-gf-givaro.hpp ++@@ -40,7 +40,6 @@ ++ }; ++ ++ #else ++-#define bool_constant givaro_bool_constant ++ #include ++ #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 --cc debian/patches/reproducible-version.patch index 0000000,0000000..52ec8d7 new file mode 100644 --- /dev/null +++ b/debian/patches/reproducible-version.patch @@@ -1,0 -1,0 +1,37 @@@ ++Description: Reproducible version hash table. ++ - For version#"configure arguments", we replace the build directory ++ with "/build/path" in all the instances of the -fdebug-prefix-map ++ flag. ++ - For version#"compile-node-name" and version#"operating system release", we ++ use dummy values. ++Author: Doug Torrance ++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 --cc debian/patches/series index 0000000,0000000..957cf8d new file mode 100644 --- /dev/null +++ b/debian/patches/series @@@ -1,0 -1,0 +1,9 @@@ ++git-description.patch ++reproducible-version.patch ++use-cached-examples.patch ++skip-failing-core-tests.patch ++skip-failing-package-tests.patch ++use-dh-elpa.patch ++use-shared-mathicgb-and-friends.patch ++givaro-bool-constant.patch ++tbb-2021.patch diff --cc debian/patches/skip-failing-core-tests.patch index 0000000,0000000..494266b new file mode 100644 --- /dev/null +++ b/debian/patches/skip-failing-core-tests.patch @@@ -1,0 -1,0 +1,117 @@@ ++Description: Skip Core tests that have been known to fail on various ++ architectures. ++Bug: https://github.com/Macaulay2/M2/issues/241 (plethysms) ++Bug: https://github.com/Macaulay2/M2/issues/1304 (ComputationsBook/varieties) ++Bug: https://github.com/Macaulay2/M2/issues/1578 (isSubset) ++Bug: https://github.com/Macaulay2/M2/issues/1580 (smith) ++Bug: https://github.com/Macaulay2/M2/issues/1663 (schur-2) ++Bug: https://github.com/Macaulay2/M2/issues/1742 (ComputationsBook/ ++ monomialIdeals) ++Bug: https://github.com/Macaulay2/M2/issues/2014 (timing-quotient) ++Bug: https://github.com/Macaulay2/M2/issues/2162 (ComputationsBook/ ++ constructions) ++Bug: https://github.com/Macaulay2/M2/issues/2184 (000-core) ++Bug: https://github.com/Macaulay2/M2/issues/2206 (CSM.test, methods) ++Bug: https://github.com/Macaulay2/M2/issues/2242 (ComputationsBook/geometry) ++Author: Doug Torrance ++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 --cc debian/patches/skip-failing-package-tests.patch index 0000000,0000000..0273d79 new file mode 100644 --- /dev/null +++ b/debian/patches/skip-failing-package-tests.patch @@@ -1,0 -1,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 --cc debian/patches/tbb-2021.patch index 0000000,0000000..a35b72b new file mode 100644 --- /dev/null +++ b/debian/patches/tbb-2021.patch @@@ -1,0 -1,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 --cc debian/patches/use-cached-examples.patch index 0000000,0000000..b5eea63 new file mode 100644 --- /dev/null +++ b/debian/patches/use-cached-examples.patch @@@ -1,0 -1,0 +1,18 @@@ ++Description: Set AuxiliaryFiles and UseCachedExampleOutput options to ++ true for several packages whose examples are cached because ++ generating them has been known to cause build failures on various ++ architectures. See debian/scripts/generate-examples.m2. ++Author: Doug Torrance ++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 --cc debian/patches/use-dh-elpa.patch index 0000000,0000000..0aa396f new file mode 100644 --- /dev/null +++ b/debian/patches/use-dh-elpa.patch @@@ -1,0 -1,0 +1,56 @@@ ++Description: Modifications to work with dh_elpa. ++ * Strip down setupEmacs() function. We only set f12 as a global key ++ to start Macaulay2 inside Emacs. This also strips (load "M2-init") ++ from a user's existing .emacs-Macaulay2 file, which would cause ++ errors if they haven't installed elpa-macaulay2. We also warn the ++ user if elpa-macaulay2 isn't installed. ++ * Fix path to M2-emacs-help.txt in documentation. ++Author: Doug Torrance ++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 --cc debian/patches/use-shared-mathicgb-and-friends.patch index 0000000,0000000..1d908ce new file mode 100644 --- /dev/null +++ b/debian/patches/use-shared-mathicgb-and-friends.patch @@@ -1,0 -1,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 --cc debian/rules index 0000000,0000000..00683fd new file mode 100755 --- /dev/null +++ b/debian/rules @@@ -1,0 -1,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 --cc debian/salsa-ci.yml index 0000000,0000000..59e7718 new file mode 100644 --- /dev/null +++ b/debian/salsa-ci.yml @@@ -1,0 -1,0 +1,11 @@@ ++--- ++variables: ++ DEB_BUILD_OPTIONS: "nocheck nodoc" ++ SALSA_CI_GBP_BUILDPACKAGE_ARGS: "--git-hooks" ++ ++include: ++ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml ++ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml ++ ++autopkgtest: ++ allow_failure: true diff --cc debian/scripts/Debian.m2 index 0000000,0000000..0905f3b new file mode 100644 --- /dev/null +++ b/debian/scripts/Debian.m2 @@@ -1,0 -1,0 +1,309 @@@ ++srcdir := minimizeFilename(currentFileDirectory | "../../") ++if not fileExists(srcdir | "debian/copyright") then ++ error "package must be loaded from the debian source directory" ++ ++newPackage("Debian", ++ Version => get("!cd " | srcdir | ++ " && dpkg-parsechangelog -S Version | tr -d '\n'"), ++ Date => "2021-09-22", ++ Headline => "helper functions for packaging Macaulay2 for Debian", ++ Authors => {{ ++ Name => "Doug Torrance", ++ Email => "dtorrance@debian.org", ++ HomePage => "https://webwork.piedmont.edu/~dtorrance"}} ++ ) ++ ++export { ++ "copyrightHelper", ++ "generateExample", ++ "generateExamples", ++ "missingPackages", ++ "skipTest", ++ "skipTestArch" ++ } ++ ++importFrom_Core { ++ "captureExampleOutput", ++ "storeExampleOutput", ++ "toFilename", ++ "topSrcdir" ++ } ++ ++getfilename := pkg -> ( ++ for file in apply({"", "undistributed-packages/"}, dir -> ++ srcdir | "M2/Macaulay2/packages/" | dir | pkg | ".m2") do ++ if fileExists file then return file; ++ error "file not found") ++readpkg := pkg -> readPackage(pkg, FileName => getfilename pkg) ++ ++-- no need to list packages written only by Dan and/or Mike ++danMikeRegex := {"^Jane Doe$", -- "author" of FirstPackage/SecondPackage ++ "^Daniel R\\. Grayson$", ++ "^Mi(ke|chael E\\.) Stillman$"} ++ ++-- function to help generate d/copyright paragraphs for Macaulay2 packages ++-- manually check each file to ensure the license information is correct ++copyrightHelper = pkgName -> ( ++ pkg := readpkg pkgName; ++ filename := getfilename pkgName; ++ files := replace(regexQuote srcdir | "(.*)\\.m2$", "\\1", filename) | ++ if pkg#AuxiliaryFiles then "*" else ".m2"; ++ year := if pkg#Date =!= null then ++ (first select(///[\d]{4}///, pkg#Date)) | " " else ""; ++ danOrMike := any(apply(pkg#Authors, author -> ++ last first author), name -> match(danMikeRegex, name)); ++ print("Files: " | files | newline | ++ "Copyright: " | ++ demark(newline | " ", ++ apply(hashTable \ pkg#Authors, author -> ++ year | author#Name | ++ (if author#?Email then " <" | author#Email | ">" else ""))) | ++ newline | "Comment: See Comment at the top of this file." | newline | ++ "License: " | (if danOrMike then "GPL-2+ and " else "") | ++ "public-domain" | newline); ++ << flush; ++ printerr "warning: confirm that this copyright information is correct:"; ++ print(filename | ":1:1:"); ++) ++ ++missingPackages = () -> ( ++ dCopyright := get(srcdir | "debian/copyright"); ++ distributedPkgs := apply( ++ select(readDirectory(srcdir | "M2/Macaulay2/packages"), ++ f -> match("\\.m2$", f)), f -> replace("\\.m2$", "", f)); ++ undistributedPkgs := apply(select(readDirectory(srcdir | ++ "M2/Macaulay2/packages/undistributed-packages"), ++ f -> match("\\.m2$", f) and not member(f, { ++ -- reading any of these packages will raise an error ++ "CodepthThree.m2", ++ "CustomEngineTests.m2", ++ "FastLinearAlgebra.m2", ++ "MemoryLeaks.m2", ++ "SecondPackage.m2", ++ -- false positives ++ "RisaAsir.m2", -- author field empty ++ "SchurRingsOld.m2" -- copyright dan, not package authors ++ })), f -> replace("\\.m2$", "", f)); ++ pkgs := sort(distributedPkgs | undistributedPkgs); ++ missing := select(pkgs, pkg -> ++ not match("M2/Macaulay2/packages/(undistributed-packages/)?" | pkg | ++ "(\\.m2|\\*)", dCopyright)); ++ select(missing, pkg -> ++ not all(hashTable \ (readpkg pkg)#Authors, author -> ++ match(danMikeRegex, author#Name))) ++) ++ ++-- from installPackage.m2 ++gethash := outf -> ( ++ f := get outf; ++ -- this regular expression detects the format used in runFile ++ m := regex("\\`.* hash: *(-?[0-9]+)", f); ++ if m =!= null then value substring(m#1, f)); ++ ++dir := minimizeFilename(currentFileDirectory | "../") ++generateExample = (pkgname, fkey) -> ( ++ tmpdir := temporaryFileName(); ++ makeDirectory tmpdir; ++ installdir := replace("^~", getenv "HOME", dir) | "/examples/" | pkgname; ++ makeDirectory installdir; ++ inf := tmpdir | "/" | toFilename fkey | ".m2"; ++ outf := installdir | "/" | toFilename fkey | ".out"; ++ errf := installdir | "/" | toFilename fkey | ".errors"; ++ pkg := needsPackage(pkgname, LoadDocumentation => true); ++ if pkg#?"documentation not loaded" then pkg = loadPackage( ++ pkgname, LoadDocumentation => true, Reload => true); ++ inputs := pkg#"example inputs"#(format makeDocumentTag fkey); ++ if fileExists outf and gethash outf == hash inputs then ( ++ printerr("example result for ", format fkey, ++ " already exists; skipping"); ++ return false); ++ elapsedTime captureExampleOutput( ++ "example result for " | format fkey, ++ demark_newline inputs, ++ pkg, ++ inf, ++ outf, ++ errf, ++ {}, ++ hash inputs, ++ () -> null, ++ false); ++ topSrcdir = "/top/src/dir/"; -- for reproduciblePaths ++ storeExampleOutput(pkg, fkey, outf, printerr); ++ true) ++ ++problemExamples = { ++ -- load Macaulay2Doc first to avoid #2328 ++ ("Macaulay2Doc", "applicationDirectory"), -- #1149 ++ ("Macaulay2Doc", "applicationDirectorySuffix"), -- #1149 ++ ("Macaulay2Doc", "getenv"), -- #1149 ++ ("Macaulay2Doc", "homeDirectory") -- #1149 ++} ++ ++generateExamples = () -> ( ++ n := 0; ++ tmp := path; ++ path = {srcdir | "/M2/Macaulay2/packages/"}; ++ scan(problemExamples, (pkg, fkey) -> ++ if generateExample(pkg, fkey) then n = n + 1); ++ path = tmp; ++ ls := d -> select(readDirectory d, file -> last file != "."); ++ exdir := dir | "/examples/"; ++ extraExamples := set flatten apply(ls exdir, pkg -> ++ for outf in ls(exdir | pkg) list if match ("\\.out$", outf) ++ then (pkg, outf) else continue) - ++ set apply(problemExamples, (pkg, fkey) -> ++ (pkg, toFilename fkey | ".out")); ++ if #extraExamples > 0 then error("extra cached examples: " | newline | ++ toString \\ stack \\ apply(toList extraExamples, extra -> ++ extra_0 | "::" | replace("\\.out$", "", extra_1))); ++ cachepatch := get(dir | "patches/use-cached-examples.patch"); ++ missingFromPatch := select(unique \\ first \ problemExamples, pkg -> ( ++ opts := readPackage(pkg, FileName => dir | ++ "../M2/Macaulay2/packages/" | pkg | ".m2"); ++ not (opts.AuxiliaryFiles and ++ opts.OptionalComponentsPresent =!= null or ++ match("M2/Macaulay2/packages/" | pkg | "\\.m2", cachepatch)))); ++ if #missingFromPatch > 0 then error( ++ "add these packages to d/patches/use-cached-examples.patch:" | newline | ++ toString stack missingFromPatch); ++ n) ++ ++ ++skipTestHelper = (i, pkgname, str) -> ( ++ tmp := path; ++ path = {srcdir | "/M2/Macaulay2/packages/"}; ++ run("cd " | srcdir | " && " | ++ "quilt pop -aq; " | ++ "quilt push -q skip-failing-package-tests.patch"); ++ pkg := loadPackage(pkgname, LoadDocumentation => true, Reload => true); ++ path = tmp; ++ test := locate (tests pkg)#i; ++ testfile := relativizeFilename(realpath srcdir, realpath first test); ++ run("cd " | srcdir | " && quilt add " | testfile | "; " | ++ "sed -i '" | test_1 + 1 | "i " | str | "' " | testfile | ++ " && quilt refresh && quilt pop -aq"); ++ ) ++ ++skipTest = (i, pkgname, issue) -> ++ skipTestHelper(i, pkgname, "\\-\\- no\\-check\\-flag #" | issue) ++ ++skipTestArch = (i, pkgname, arch, issue) -> ++ skipTestHelper(i, pkgname, "\\-\\- no\\-check\\-architecture: " | arch | ++ " (#" | issue | ")") ++ ++ ++beginDocumentation() ++ ++doc /// ++ Key ++ Debian ++ Headline ++ helper functions for packaging Macaulay2 for Debian ++ Description ++ Text ++ A collection of helper functions to simplify maintaining the Debian ++ package of Macaulay2. ++/// ++ ++doc /// ++ Key ++ missingPackages ++ Headline ++ find packages that are missing from d/copyright ++ Usage ++ missingPackages() ++ Description ++ Text ++ Check that all packages are mentioned in d/copyright unless the ++ only authors are Dan and/or Mike (or Jane Doe for FirstPackage). ++/// ++ ++doc /// ++ Key ++ copyrightHelper ++ Headline ++ get package license information ++ Usage ++ copyrightHelper pkg ++ Inputs ++ pkg:String ++ Description ++ Text ++ Help generate @TT "d/copyright"@ paragraphs for Macaulay2 packages. ++ Manually check each file to ensure the license information is correct. ++ Example ++ copyrightHelper "Graphs" ++/// ++ ++doc /// ++ Key ++ generateExample ++ Headline ++ generate cached example ++ Usage ++ generateExample(pkg, key) ++ Inputs ++ pkg:String ++ key:String ++ Description ++ Text ++ Generates the given example and saves it in @TT "d/examples/pkg"@. ++ Make sure that the @TO AuxiliaryFiles@ and ++ @TO UseCachedExampleOutput@ options to @TO installPackage@ for ++ @TT "pkg"@ are @TO true@. Otherwise, add these to ++ @TT "d/patches/use-cached-example-output.patch"@. ++/// ++ ++doc /// ++ Key ++ generateExamples ++ Headline ++ generate cached versions of all known problem examples ++ Usage ++ generateExamples() ++ Description ++ Text ++ Run @TO generateExample@ on every example listed in @TT "problemExamples"@ ++ in the source code for this package, if necessary. ++/// ++ ++doc /// ++ Key ++ skipTest ++ Headline ++ skip a failing test ++ Usage ++ skipTest(i, pkg, issue) ++ Inputs ++ i:ZZ ++ pkg:String ++ issue:ZZ ++ Description ++ Text ++ Skip @TT "check(i, pkg)"@ when running package tests by adding ++ it to @TT "d/patches/skip-failing-package-tests.patch"@ using ++ @TT "no-check-flag"@ with an appropriate comment, indicated by ++ @TT "issue"@, the upstream issue number. ++/// ++ ++doc /// ++ Key ++ skipTestArch ++ Headline ++ skip a failing test on a specific architecture ++ Usage ++ skipTest(i, pkg, arch, issue) ++ Inputs ++ i:ZZ ++ pkg:String ++ arch:String -- matching @TO2 {"version", "version#\"architecture\""}@ ++ issue:ZZ ++ Description ++ Text ++ Skip @TT "check(i, pkg)"@ when running package tests on a ++ specificic architecture by adding it to @TT ++ "d/patches/skip-failing-package-tests.patch"@ using @TT ++ "no-check-architecture"@ with an appropriate comment, indicated ++ by @TT "issue"@, the upstream issue number. ++/// diff --cc debian/scripts/m2-get-orig-source.sh index 0000000,0000000..dd48406 new file mode 100755 --- /dev/null +++ b/debian/scripts/m2-get-orig-source.sh @@@ -1,0 -1,0 +1,297 @@@ ++#!/bin/sh ++ ++# generate Macaulay2 orig tarball for creating Debian packages ++# combines contents of M2 and M2-emacs git repositories and removes ++# any files specified by Files-Excluded in debian/copyright ++# ++# also updates git-description.patch and d/changelog with the corresponding ++# git description/version number ++ ++set -e ++ ++TEMP=$(getopt -o 'udr:ngmhR:' \ ++ -l 'uscan,dev,ref,no-tarball,git-commit,merge,help,remote' \ ++ -n "m2-get-orig-source" \ ++ -- "$@") ++ ++if [ $? -ne 0 ]; then ++ echo 'Terminating...' >&2 ++ exit 1 ++fi ++ ++eval set -- "$TEMP" ++unset TEMP ++ ++call_uscan() { ++ echo -n "finding newest version using uscan ... " ++ VERSION=$(uscan --report-status | grep newversion | \ ++ awk '{print $3}') ++ echo $VERSION ++ REF="release-$(echo $VERSION | sed 's/~rc/-rc/')" ++} ++ ++REMOTE=Macaulay2 ++ ++while true; do ++ case "$1" in ++ '-u'|'--uscan') ++ call_uscan ++ shift ++ continue ++ ;; ++ '-d'|'--dev') ++ REF="development" ++ shift ++ continue ++ ;; ++ '-r'|'--ref') ++ REF=$2 ++ shift 2 ++ continue ++ ;; ++ '-n'|'--no-tarball') ++ NOTARBALL=1 ++ shift ++ continue ++ ;; ++ '-g'|'--git-commit') ++ DO_GIT_COMMIT=1 ++ shift ++ continue ++ ;; ++ '-m'|'--merge') ++ MERGE=1 ++ shift ++ continue ++ ;; ++ '-R'|'--remote') ++ REMOTE=$2 ++ shift 2 ++ continue ++ ;; ++ '-h'|'--help') ++ echo "debian/scripts/m2-get-orig-source.sh:" ++ echo " create orig tarball and update" \ ++ "d/changelog (and d/p/git-description.patch) with" ++ echo " version number\n" ++ echo "options:" ++ echo " -u, --uscan" ++ echo " use uscan to determine newest stable version (default)" ++ echo " -d, --dev" ++ echo " use 'development' branch" ++ echo " -r, --ref " ++ 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 --cc debian/scripts/m2-tarball-warning.sh index 0000000,0000000..8f63e17 new file mode 100755 --- /dev/null +++ b/debian/scripts/m2-tarball-warning.sh @@@ -1,0 -1,0 +1,4 @@@ ++>&2 echo "+-----------------------------------------------------------------+" ++>&2 echo "| Do NOT use this tarball. It is missing files from the M2-emacs |" ++>&2 echo "| submodule. Instead, run 'debian/rules get-orig-source'. |" ++>&2 echo "+-----------------------------------------------------------------+" diff --cc debian/source/format index 0000000,0000000..163aaf8 new file mode 100644 --- /dev/null +++ b/debian/source/format @@@ -1,0 -1,0 +1,1 @@@ ++3.0 (quilt) diff --cc debian/source/include-binaries index 0000000,0000000..dc58491 new file mode 100644 --- /dev/null +++ b/debian/source/include-binaries @@@ -1,0 -1,0 +1,1 @@@ ++M2/Macaulay2/editors/emacs/M2-symbols.el.gz diff --cc debian/source/lintian-overrides index 0000000,0000000..b68757e new file mode 100644 --- /dev/null +++ b/debian/source/lintian-overrides @@@ -1,0 -1,0 +1,16 @@@ ++# Pre-generated example code used by Macaulay2's built-in help system. ++macaulay2 source: package-does-not-install-examples debian/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/AdjointIdeal/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Bertini/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/ConvexInterface/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/DecomposableSparseSystems/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MapleInterface/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MonodromySolver/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/MonomialIntegerPrograms/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/NCAlgebra/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/NumericalSchubertCalculus/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/PHCpack/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Python/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Parametrization/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/StatePolytope/examples/ ++macaulay2 source: package-does-not-install-examples M2/Macaulay2/packages/Tropical/examples/ diff --cc debian/source/options index 0000000,0000000..fae5abd new file mode 100644 --- /dev/null +++ b/debian/source/options @@@ -1,0 -1,0 +1,5 @@@ ++extend-diff-ignore = "M2/submodules" ++extend-diff-ignore = "M2/BUILD" ++extend-diff-ignore = "M2/Macaulay2/m2/TAGS.doc" ++extend-diff-ignore = "M2/configure" ++extend-diff-ignore = "M2/include/M2/config.h.in" diff --cc debian/tests/check-doc-db.m2 index 0000000,0000000..7beb74c new file mode 100644 --- /dev/null +++ b/debian/tests/check-doc-db.m2 @@@ -1,0 -1,0 +1,5 @@@ ++stdio << "checking if documentation database can be loaded ... " ++-- check a key containing a UTF-8 character that is known to cause problems ++-- when a gdbm database is loaded on the wrong architecture ++if (needsPackage "Macaulay2Doc")#"raw documentation database"#?"Gröbner bases" ++then (print "yes"; exit 0) else (print "no"; exit 1) diff --cc debian/tests/control index 0000000,0000000..b468d66 new file mode 100644 --- /dev/null +++ b/debian/tests/control @@@ -1,0 -1,0 +1,18 @@@ ++Test-Command: M2 --silent --check 1 -q --stop -E "exit 0" ++Depends: macaulay2 ++Restrictions: allow-stderr ++Features: test-name=basic-tests ++ ++Test-Command: M2 --check 2 ++Depends: 4ti2, gfan, macaulay2, normaliz ++Restrictions: allow-stderr ++Features: test-name=core-tests ++ ++Test-Command: M2 --check 3 ++Depends: 4ti2, cohomcalg, coinor-csdp, gfan, macaulay2, nauty, normaliz, topcom ++Restrictions: allow-stderr, flaky ++Features: test-name=package-tests ++ ++Test-Command: M2 --script debian/tests/check-doc-db.m2 ++Depends: macaulay2 ++Features: test-name=database-smoke-test diff --cc debian/upstream/metadata index 0000000,0000000..fd4c2ca new file mode 100644 --- /dev/null +++ b/debian/upstream/metadata @@@ -1,0 -1,0 +1,29 @@@ ++--- ++Repository: https://github.com/Macaulay2/M2 ++Bug-Database: https://github.com/Macaulay2/M2/issues ++Funding: ++ - NSF DMS 92-10805 ++ - NSF DMS 92-10807 ++ - NSF DMS 96-22608 ++ - NSF DMS 96-23232 ++ - NSF DMS 99-70085 ++ - NSF DMS 99-70348 ++ - NSF DMS 03-11378 ++ - NSF DMS 03-11806 ++ - NSF DMS 08-10918 ++ - NSF DMS 08-10948 ++ - NSF DMS 10-02171 ++ - NSF DMS 10-02210 ++ - NSF DMS 15-02209 ++ - NSF DMS 15-02294 ++ - NSF DMS 20-01206 ++ - NSF DMS 20-01267 ++ - NSF DMS 20-01367 ++Reference: ++ Author: Grayson, Daniel R. and Stillman, Michael E. ++ Title: Macaulay2, a software system for research in algebraic geometry ++ Type: misc ++ URL: https://faculty.math.illinois.edu/Macaulay2/ ++Webservice: ++ - http://web.macaulay2.com/ ++ - https://www.unimelb-macaulay2.cloud.edu.au/ diff --cc debian/watch index 0000000,0000000..e6c5921 new file mode 100644 --- /dev/null +++ b/debian/watch @@@ -1,0 -1,0 +1,4 @@@ ++version=4 ++opts=dversionmangle=s/@DEB_EXT@//,repacksuffix=+ds,uversionmangle=s/-rc/~rc/ \ ++https://github.com/Macaulay2/M2/tags .*/release-@ANY_VERSION@@ARCHIVE_EXT@ \ ++debian debian/scripts/m2-tarball-warning.sh