{"id":23219037,"url":"https://github.com/passagemath/passagemath","last_synced_at":"2026-04-19T21:01:43.469Z","repository":{"id":257966514,"uuid":"872228176","full_name":"passagemath/passagemath","owner":"passagemath","description":"General purpose mathematical software system, compatible fork of https://github.com/sagemath/sage supporting modularized installation with pip. Main repository, containing Sage library (src/), modularized pip-installable packages (pkgs/), Sage distribution (build/). Source repo for most packages in https://pypi.org/org/passagemath/","archived":false,"fork":false,"pushed_at":"2026-04-02T05:47:01.000Z","size":424446,"stargazers_count":81,"open_issues_count":203,"forks_count":20,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-03T01:42:36.795Z","etag":null,"topics":["computer-algebra-system","mathematics"],"latest_commit_sha":null,"homepage":"https://passagemath.discourse.group/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/passagemath.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-14T04:19:39.000Z","updated_at":"2026-04-02T05:47:04.000Z","dependencies_parsed_at":"2026-03-22T07:00:30.633Z","dependency_job_id":"0ac9891f-a334-4466-b9da-73c7cffe5bc1","html_url":"https://github.com/passagemath/passagemath","commit_stats":null,"previous_names":["passagemath/passagemath"],"tags_count":207,"template":false,"template_full_name":null,"purl":"pkg:github/passagemath/passagemath","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passagemath%2Fpassagemath","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passagemath%2Fpassagemath/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passagemath%2Fpassagemath/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passagemath%2Fpassagemath/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/passagemath","download_url":"https://codeload.github.com/passagemath/passagemath/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passagemath%2Fpassagemath/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32022561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-algebra-system","mathematics"],"created_at":"2024-12-18T21:18:55.102Z","updated_at":"2026-04-19T21:01:43.380Z","avatar_url":"https://github.com/passagemath.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"passagemath: General purpose mathematical software system, a fork of SageMath\n=============================================================================\n\npassagemath is open source mathematical software released under the GNU General Public\nLicence GPLv2+.\n\nIt is a fork of [SageMath](https://www.sagemath.org/), created in October 2024 with the following goals:\n\n* providing [modularized installation with pip](https://github.com/sagemath/sage/issues/29705),\n* establishing first-class membership in the scientific Python ecosystem,\n* giving [clear attribution of upstream projects](https://groups.google.com/g/sage-devel/c/6HO1HEtL1Fs/m/G002rPGpAAAJ),\n* inviting collaborations with upstream projects,\n* [maintaining a professional, respectful, inclusive community](https://groups.google.com/g/sage-devel/c/xBzaINHWwUQ),\n* developing a port to [Pyodide](https://pyodide.org/en/stable/) for serverless deployment with Javascript,\n* developing a native Windows port.\n\n[People all around the globe](https://www.sagemath.org/development-map.html) have contributed to the\ndevelopment of SageMath, and hence of passagemath.\n\n[Full documentation](https://doc.sagemath.org/html/en/index.html) is available online.\n\n\npassagemath community\n---------------------\n\nJoin [passagemath.discourse.group](https://passagemath.discourse.group/) for help and discussions.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for how you can contribute.\n\n\nFull installation\n-----------------\n\nUnless you need to install passagemath into a specific existing environment, we recommend\nto create and activate a fresh virtual environment over a suitable Python (3.9.x-3.12.x),\nfor example `~/passagemath-venv/`:\n\n            $ python3 --version\n            Python 3.12.7\n            $ python3 -m venv ~/passagemath-venv\n            $ source ~/passagemath-venv/bin/activate\n\nNext, if you want to build from PyPI, use the following command:\n\n            passagemath $ export SAGE_CONF_TARGETS=build\n\nIf you want to build from a local clone of the passagemath repository instead,\nuse the following command first.\n\n            passagemath $ export SAGE_ROOT=$(pwd)\n            passagemath $ export PIP_CONSTRAINT=\"$(pwd)/constraints_pkgs.txt\"\n            passagemath $ export SAGE_CONF_TARGETS=build-local\n\nAs the first installation step, install [![PyPI: passagemath-conf](https://img.shields.io/pypi/v/passagemath-conf.svg?label=passagemath-conf)](https://pypi.python.org/pypi/passagemath-conf),\nwhich builds various prerequisite non-Python packages in a subdirectory of `~/.sage/`.\nThe build can be customized by setting `SAGE_CONF_CONFIGURE_ARGS`.\n\n            (passagemath-venv) $ python3 -m pip install -v passagemath-conf\n\nAfter a successful installation, a wheelhouse provides various Python packages.\nYou can list the wheels using the command:\n\n            (passagemath-venv) $ ls $(sage-config SAGE_SPKG_WHEELS)\n\nIf this gives an error saying that `sage-config` is not found, check any messages\nthat the `pip install` command may have printed. You may need to adjust your `PATH`,\nfor example by:\n\n            $ export PATH=\"$(python3 -c 'import sysconfig; print(sysconfig.get_path(\"scripts\", \"posix_user\"))'):$PATH\"\n\nNow install the packages from the wheelhouse:\n\n            (passagemath-venv) $ python3 -m pip install $(sage-config SAGE_SPKG_WHEELS)/*.whl\n\nNext, install the [![PyPI: passagemath-setup](https://img.shields.io/pypi/v/passagemath-setup.svg?label=passagemath-setup)](https://pypi.python.org/pypi/passagemath-setup) package:\n\n            (passagemath-venv) $ python3 -m pip install passagemath-setup\n\nFinally, install the Sage library from the package [![PyPI: passagemath-standard](https://img.shields.io/pypi/v/passagemath-standard.svg?label=passagemath-standard)](https://pypi.python.org/pypi/passagemath-standard):\n\n            (passagemath-venv) $ python3 -m pip install --no-build-isolation -v passagemath-standard\n\nThe above instructions install the latest stable release of passagemath.\nTo install the latest development version instead, add the switch `--pre` to all invocations of\n`python3 -m pip install`.\n\nModularized distributions\n-------------------------\n\npassagemath provides the Sage library in a number of distributions (pip-installable packages) that can be installed separately.\n\nAuthors of packages that depend on the Sage library can declare dependencies on these distributions. The benefit for users of the package: There is no longer a need to first install Sage. Instead, the parts of the Sage library that are needed by the package are automatically installed. Thus, the package becomes a first-class member of the Python ecosystem.\n\n- [sage-numerical-interactive-mip](https://github.com/passagemath/sage-numerical-interactive-mip) is an example of a pure Python package that [declares dependencies](https://github.com/passagemath/sage-numerical-interactive-mip/blob/master/pyproject.toml) on four distributions: passagemath-polyhedra, passagemath-plot, passagemath-repl, and passagemath-flint.\n- [kerrgeodesic_gw](https://github.com/BlackHolePerturbationToolkit/kerrgeodesic_gw) is an example of a pure Python package that [declares optional dependencies (\"extras-require\")](https://github.com/BlackHolePerturbationToolkit/kerrgeodesic_gw/blob/master/setup.py#L49) on three distributions: passagemath-symbolics, passagemath-plot, and passagemath-repl.\n\nHere is an overview of the available distribution packages.\n\n### Distributions named after a basic mathematical structure\n\nThe packages may also cover a wide range of generalizations/applications of the structure after which they are named. Users who work in a specialized research area will, of course, recognize what structures they need. The down-to-earth naming also creates discoverability by a broader audience.\n\n[![PyPI: passagemath-combinat](https://img.shields.io/pypi/v/passagemath-combinat.svg?label=passagemath-combinat)](https://pypi.python.org/pypi/passagemath-combinat) provides \"everything combinatorial\", except for graphs. It consists of about 350 first-party Python and Cython modules and also provides the functionality of [SYMMETRICA](http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA), the library for representation theory of the symmetric group, combinatorics of tableaux, symmetric functions, etc.\n\n[![PyPI: passagemath-graphs](https://img.shields.io/pypi/v/passagemath-graphs.svg?label=passagemath-graphs)](https://pypi.python.org/pypi/passagemath-graphs) provides directed and undirected graphs, but also posets, combinatorial designs, abstract simplicial complexes, quivers, etc.  It consists of over 170 first-party Python and Cython modules and uses the [Boost Graph Library](https://github.com/boostorg/graph), with additional functionality from [NetworkX](https://networkx.github.io/) and several other libraries.\n\n[![PyPI: passagemath-groups](https://img.shields.io/pypi/v/passagemath-groups.svg?label=passagemath-groups)](https://pypi.python.org/pypi/passagemath-groups) provides groups and invariant theory. It heavily depends on [GAP](https://www.gap-system.org) via passagemath-gap.\n\n[![PyPI: passagemath-modules](https://img.shields.io/pypi/v/passagemath-modules.svg?label=passagemath-modules)](https://pypi.python.org/pypi/passagemath-modules) provides vector spaces, modules, matrices, tensors, homology, coding theory, abelian groups, matroids, etc. It consists of over 440 first-party Python and Cython modules and depends on the [GNU Scientific Library](http://www.gnu.org/software/gsl/) and [NumPy](https://numpy.org/).\n\n[![PyPI: passagemath-polyhedra](https://img.shields.io/pypi/v/passagemath-polyhedra.svg?label=passagemath-polyhedra)](https://pypi.python.org/pypi/passagemath-polyhedra) provides convex polyhedra in arbitrary dimension on the basis of the [Parma Polyhedra Library](https://www.bugseng.com/ppl). It consists of about 130 first-party Python and Cython modules that also provide fans, hyperplane arrangements, polyhedral complexes, linear and mixed-integer optimization, lattice point sets, and toric varieties.\n\n[![PyPI: passagemath-schemes](https://img.shields.io/pypi/v/passagemath-schemes.svg?label=passagemath-schemes)](https://pypi.python.org/pypi/passagemath-schemes) provides algebraic varieties, schemes, elliptic curves, modular forms, etc.\n\n[![PyPI: passagemath-symbolics](https://img.shields.io/pypi/v/passagemath-symbolics.svg?label=passagemath-symbolics)](https://pypi.python.org/pypi/passagemath-symbolics) provides symbolic expressions implemented in Pynac, a fork of [GiNaC](https://www.ginac.de/), symbolic calculus using [Maxima](http://maxima.sourceforge.net), and interfaces to various other symbolic software systems including [SymPy](https://www.sympy.org/en/index.html), as well as differential geometry ([SageManifolds](https://sagemanifolds.obspm.fr/)).\n\n### Distributions named after a third-party non-Python dependency\n\nThis makes technical sense because the dependencies will be localized to this distribution package, but it also helps give **attribution and visibility** to these libraries and projects that Sage depends on.\n   | Standard packages | Optional packages  |\n   | :---------------- | :----------------  |\n   | [![PyPI: passagemath-cddlib](https://img.shields.io/pypi/v/passagemath-cddlib.svg?label=passagemath-cddlib)](https://pypi.python.org/pypi/passagemath-cddlib) provides the functionality of [cddlib](https://github.com/cddlib/cddlib), the library for polyhedral representation conversion. | [![PyPI: passagemath-benzene](https://img.shields.io/pypi/v/passagemath-benzene.svg?label=passagemath-benzene)](https://pypi.python.org/pypi/passagemath-benzene)  |\n   | [![PyPI: passagemath-cliquer](https://img.shields.io/pypi/v/passagemath-cliquer.svg?label=passagemath-cliquer)](https://pypi.python.org/pypi/passagemath-cliquer) provides the functionality of [cliquer](https://users.aalto.fi/~pat/cliquer.html), finding cliques in weighted graphs. | [![PyPI: passagemath-bliss](https://img.shields.io/pypi/v/passagemath-bliss.svg?label=passagemath-bliss)](https://pypi.python.org/pypi/passagemath-bliss) provides the functionality of [bliss](https://users.aalto.fi/~tjunttil/bliss/index.html), a tool for computing automorphism groups and canonical forms of graphs.  |\n   | [![PyPI: passagemath-eclib](https://img.shields.io/pypi/v/passagemath-eclib.svg?label=passagemath-eclib)](https://pypi.python.org/pypi/passagemath-eclib) provides modules depending on [eclib](https://github.com/JohnCremona/eclib), the library for enumerating and computing with elliptic curves defined over the rational numbers. |   |\n   | [![PyPI: passagemath-flint](https://img.shields.io/pypi/v/passagemath-flint.svg?label=passagemath-flint)](https://pypi.python.org/pypi/passagemath-flint) provides modules depending on [FLINT](https://flintlib.org), the Fast Library for Number Theory. | [![PyPI: passagemath-brial](https://img.shields.io/pypi/v/passagemath-brial.svg?label=passagemath-brial)](https://pypi.python.org/pypi/passagemath-brial) provides the functionality of [BRiAl](https://github.com/BRiAl/BRiAl), a Boolean Ring Algebra implementation using binary decision diagrams, the successor to PolyBoRi.  |\n   | [![PyPI: passagemath-gap](https://img.shields.io/pypi/v/passagemath-gap.svg?label=passagemath-gap)](https://pypi.python.org/pypi/passagemath-gap) provides modules depending on [GAP](https://www.gap-system.org), the system for computational discrete algebra with particular emphasis on Computational Group Theory. | [![PyPI: passagemath-buckygen](https://img.shields.io/pypi/v/passagemath-buckygen.svg?label=passagemath-buckygen)](https://pypi.python.org/pypi/passagemath-buckygen)  |\n   | [![PyPI: passagemath-gfan](https://img.shields.io/pypi/v/passagemath-gfan.svg?label=passagemath-gfan)](https://pypi.python.org/pypi/passagemath-gfan) provides the functionality of [gfan](https://users-math.au.dk/jensen/software/gfan/gfan.html), computing Groebner fans and tropical varieties. | [![PyPI: passagemath-coxeter3](https://img.shields.io/pypi/v/passagemath-coxeter3.svg?label=passagemath-coxeter3)](https://pypi.python.org/pypi/passagemath-coxeter3)  |\n   | [![PyPI: passagemath-giac](https://img.shields.io/pypi/v/passagemath-giac.svg?label=passagemath-giac)](https://pypi.python.org/pypi/passagemath-giac) provides the functionality of [Giac](http://www-fourier.ujf-grenoble.fr/~parisse/giac.html), a general purpose computer algebra system. | [![PyPI: passagemath-frobby](https://img.shields.io/pypi/v/passagemath-frobby.svg?label=passagemath-frobby)](https://pypi.python.org/pypi/passagemath-frobby)  |\n   | [![PyPI: passagemath-glpk](https://img.shields.io/pypi/v/passagemath-glpk.svg?label=passagemath-glpk)](https://pypi.python.org/pypi/passagemath-glpk) provides a mixed integer linear optimization backend using [GLPK](http://www.gnu.org/software/glpk), the GNU Linear Programming Kit. | [![PyPI: passagemath-glucose](https://img.shields.io/pypi/v/passagemath-glucose.svg?label=passagemath-glucose)](https://pypi.python.org/pypi/passagemath-glucose)  |\n   | [![PyPI: passagemath-homfly](https://img.shields.io/pypi/v/passagemath-homfly.svg?label=passagemath-homfly)](https://pypi.python.org/pypi/passagemath-homfly) provides the functionality of [libhomfly](https://github.com/miguelmarco/libhomfly), the library to compute the homfly polynomial of knots and links. | [![PyPI: passagemath-kissat](https://img.shields.io/pypi/v/passagemath-kissat.svg?label=passagemath-kissat)](https://pypi.python.org/pypi/passagemath-kissat)  |\n   | [![PyPI: passagemath-lcalc](https://img.shields.io/pypi/v/passagemath-lcalc.svg?label=passagemath-lcalc)](https://pypi.python.org/pypi/passagemath-lcalc) provides the functionality of [lcalc](http://oto.math.uwaterloo.ca/~mrubinst/L_function_public/L.html), the L-function calculator. | [![PyPI: passagemath-latte-4ti2](https://img.shields.io/pypi/v/passagemath-latte-4ti2.svg?label=passagemath-latte-4ti2)](https://pypi.python.org/pypi/passagemath-latte-4ti2) provides  interfaces to [LattE integrale](https://www.math.ucdavis.edu/~latte/) and [4ti2](https://github.com/4ti2/4ti2)  |\n   | [![PyPI: passagemath-libbraiding](https://img.shields.io/pypi/v/passagemath-libbraiding.svg?label=passagemath-libbraiding)](https://pypi.python.org/pypi/passagemath-libbraiding) provides the functionality of [libbraiding](https://github.com/miguelmarco/libbraiding), computing centralizers, conjugacy, and other properties of braids. | [![PyPI: passagemath-lrslib](https://img.shields.io/pypi/v/passagemath-lrslib.svg?label=passagemath-lrslib)](https://pypi.python.org/pypi/passagemath-lrslib) provides the functionality of [lrslib](http://cgm.cs.mcgill.ca/~avis/C/lrs.html), reverse search for vertex enumeration and convex hull problems. |\n   | [![PyPI: passagemath-libecm](https://img.shields.io/pypi/v/passagemath-libecm.svg?label=passagemath-libecm)](https://pypi.python.org/pypi/passagemath-libecm) provides the functionality of [GMP-ECM](https://gitlab.inria.fr/zimmerma/ecm), the elliptic curve method for integer factorization. | [![PyPI: passagemath-macaulay2](https://img.shields.io/pypi/v/passagemath-macaulay2.svg?label=passagemath-macaulay2)](https://pypi.python.org/pypi/passagemath-macaulay2)  |\n   | [![PyPI: passagemath-linbox](https://img.shields.io/pypi/v/passagemath-linbox.svg?label=passagemath-linbox)](https://pypi.python.org/pypi/passagemath-linbox) | [![PyPI: passagemath-mcqd](https://img.shields.io/pypi/v/passagemath-mcqd.svg?label=passagemath-mcqd)](https://pypi.python.org/pypi/passagemath-mcqd)  |\n   | [![PyPI: passagemath-nauty](https://img.shields.io/pypi/v/passagemath-nauty.svg?label=passagemath-nauty)](https://pypi.python.org/pypi/passagemath-nauty) provides the functionality of [nauty and traces](https://pallini.di.uniroma1.it), computing automorphism groups of graphs and digraphs. | [![PyPI: passagemath-meataxe](https://img.shields.io/pypi/v/passagemath-meataxe.svg?label=passagemath-meataxe)](https://pypi.python.org/pypi/passagemath-meataxe)  |\n   | [![PyPI: passagemath-ntl](https://img.shields.io/pypi/v/passagemath-ntl.svg?label=passagemath-ntl)](https://pypi.python.org/pypi/passagemath-ntl) provides the functionality of [NTL](http://www.shoup.net/ntl/), a library for doing number theory. | [![PyPI: passagemath-msolve](https://img.shields.io/pypi/v/passagemath-msolve.svg?label=passagemath-msolve)](https://pypi.python.org/pypi/passagemath-msolve) provides an interface to [msolve](https://msolve.lip6.fr/), the polynomial system solver.  |\n   | [![PyPI: passagemath-palp](https://img.shields.io/pypi/v/passagemath-palp.svg?label=passagemath-palp)](https://pypi.python.org/pypi/passagemath-palp) provides the functionality of [PALP](http://hep.itp.tuwien.ac.at/~kreuzer/CY/CYpalp.html), lattice polytopes with applications to toric geometry. | [![PyPI: passagemath-plantri](https://img.shields.io/pypi/v/passagemath-plantri.svg?label=passagemath-plantri)](https://pypi.python.org/pypi/passagemath-plantri) provides the functionality of [plantri](https://users.cecs.anu.edu.au/~bdm/plantri/), generating planar graphs. |\n   | [![PyPI: passagemath-pari](https://img.shields.io/pypi/v/passagemath-pari.svg?label=passagemath-pari)](https://pypi.python.org/pypi/passagemath-pari) provides the functionality of [PARI/GP](http://pari.math.u-bordeaux.fr/), the computer algebra system for fast computations in number theory. | [![PyPI: passagemath-qepcad](https://img.shields.io/pypi/v/passagemath-qepcad.svg?label=passagemath-qepcad)](https://pypi.python.org/pypi/passagemath-qepcad) provides the functionality of [QEPCAD](https://github.com/chriswestbrown/qepcad), quantifier elimination by partial cylindrical algebraic decomposition.  |\n   | [![PyPI: passagemath-planarity](https://img.shields.io/pypi/v/passagemath-planarity.svg?label=passagemath-planarity)](https://pypi.python.org/pypi/passagemath-planarity) provides the functionality of the [Edge Addition Planarity Suite](https://github.com/graph-algorithms/edge-addition-planarity-suite/) for graphs. | [![PyPI: passagemath-rubiks](https://img.shields.io/pypi/v/passagemath-rubiks.svg?label=passagemath-rubiks)](https://pypi.python.org/pypi/passagemath-rubiks) provides algorithms for Rubik's cube.  |\n   | [![PyPI: passagemath-rankwidth](https://img.shields.io/pypi/v/passagemath-rankwidth.svg?label=passagemath-rankwidth)](https://pypi.python.org/pypi/passagemath-rankwidth) provides the functionality of [rw](https://sourceforge.net/projects/rankwidth), rank decompositions of graphs. | [![PyPI: passagemath-sirocco](https://img.shields.io/pypi/v/passagemath-sirocco.svg?label=passagemath-sirocco)](https://pypi.python.org/pypi/passagemath-sirocco) provides the functinality of [sirocco](https://github.com/miguelmarco/SIROCCO2), certified root continuation of bivariate polynomials. |\n   | [![PyPI: passagemath-singular](https://img.shields.io/pypi/v/passagemath-singular.svg?label=passagemath-singular)](https://pypi.python.org/pypi/passagemath-singular) provides the functionality from [Singular](https://www.singular.uni-kl.de/), the computer algebra system for polynomial computations, algebraic geometry, singularity theory. | [![PyPI: passagemath-tdlib](https://img.shields.io/pypi/v/passagemath-tdlib.svg?label=passagemath-tdlib)](https://pypi.python.org/pypi/passagemath-tdlib) provides the functionality of [treedec](https://gitlab.com/freetdi/treedec), algorithms concerning tree decompositions of graphs.  |\n   | [![PyPI: passagemath-sympow](https://img.shields.io/pypi/v/passagemath-sympow.svg?label=passagemath-sympow)](https://pypi.python.org/pypi/passagemath-sympow) provides the functionality of [sympow](https://gitlab.com/rezozer/forks/sympow), special values of symmetric power elliptic curve L-functions.  | [![PyPI: passagemath-topcom](https://img.shields.io/pypi/v/passagemath-topcom.svg?label=passagemath-topcom)](https://pypi.python.org/pypi/passagemath-topcom) provides the functionality of [TOPCOM](https://www.wm.uni-bayreuth.de/de/team/rambau_joerg/TOPCOM/), triangulations of point configurations and oriented matroids.  |\n\n### Distributions named after a technical functionality\n\n[![PyPI: passagemath-objects](https://img.shields.io/pypi/v/passagemath-objects.svg?label=passagemath-objects)](https://pypi.python.org/pypi/passagemath-objects) Sage extends Python's object system by dynamic   mix-in classes that are driven by categories and axioms. It is loosely   modeled on concepts of category theory and inspired by   Scratchpad/Axiom/FriCAS, Magma, and MuPAD. This distribution package makes Sage objects, the element/parent framework, basic categories and functors,   the coercion system and the related metaclasses available. It only depends on the basic arithmetic libraries [GMP](http://gmplib.org), [MPFR](http://mpfr.org/), [MPC](https://www.multiprecision.org/mpc), on the Cython interface [gmpy2](https://pypi.org/project/gmpy2/) to these libraries, and on  [cysignals](https://github.com/sagemath/cysignals).\n\n[![PyPI: passagemath-categories](https://img.shields.io/pypi/v/passagemath-categories.svg?label=passagemath-categories)](https://pypi.python.org/pypi/passagemath-categories) This distribution package contains the full set of categories defined by Sage, as well as basic mathematical objects such as integers and rational numbers, a basic implementation of polynomials, and affine spaces.  None of this brings in additional dependencies.\n\n[![PyPI: passagemath-environment](https://img.shields.io/pypi/v/passagemath-environment.svg?label=passagemath-environment)](https://pypi.python.org/pypi/passagemath-environment) provides the `sage` script for launching the Sage REPL and accessing various developer tools and Python modules that provide the connection to the system and software environment.\n\n[![PyPI: passagemath-repl](https://img.shields.io/pypi/v/passagemath-repl.svg?label=passagemath-repl)](https://pypi.python.org/pypi/passagemath-repl) The top-level interactive environment with the preparser that defines the surface language of Sage. This distribution also includes the doctesting facilities (`sage -t`), as the doctests are written in the surface language.\n\n[![PyPI: passagemath-plot](https://img.shields.io/pypi/v/passagemath-plot.svg?label=passagemath-plot)](https://pypi.python.org/pypi/passagemath-plot) Plotting facilities, depending on [matplotlib](https://matplotlib.org).\n\n[![PyPI: passagemath-standard-no-symbolics](https://img.shields.io/pypi/v/passagemath-standard-no-symbolics.svg?label=passagemath-standard-no-symbolics)](https://pypi.python.org/pypi/passagemath-standard-no-symbolics) Ideally an empty meta-package that depends on everything that is not in passagemath-symbolics; as a catch-all mechanism, this distribution ships all modules that do not carry a `# sage_setup: distribution = ...` directive.\n\n[![PyPI: passagemath-standard](https://img.shields.io/pypi/v/passagemath-standard.svg?label=passagemath-standard)](https://pypi.python.org/pypi/passagemath-standard) Everything as provided by a standard installation of the Sage distribution. This is reduced to an empty meta-package.\n\n[![PyPI: passagemath-conf](https://img.shields.io/pypi/v/passagemath-conf.svg?label=passagemath-conf)](https://pypi.python.org/pypi/passagemath-conf) Confectionery and configuration system.\n\n[![PyPI: passagemath-setup](https://img.shields.io/pypi/v/passagemath-setup.svg?label=passagemath-setup)](https://pypi.python.org/pypi/passagemath-setup) Build system for the Sage library.\n\n[![PyPI: passagemath-docbuild](https://img.shields.io/pypi/v/passagemath-docbuild.svg?label=passagemath-docbuild)](https://pypi.python.org/pypi/passagemath-docbuild) Build system for the Sage documentation.\n\n\n\nTable of Contents\n-----------------\n\n* [Getting Started](#getting-started)\n* [Supported Platforms](#supported-platforms)\n* [\\[Windows\\] Preparing the Platform](#windows-preparing-the-platform)\n* [\\[macOS\\] Preparing the Platform](#macos-preparing-the-platform)\n* [Instructions to Build from Source](#instructions-to-build-from-source)\n* [SageMath Docker Images](#sagemath-docker-images)\n* [Directory Layout](#directory-layout)\n* [Build System](#build-system)\n* [Relocation](#relocation)\n* [Redistribution](#redistribution)\n* [Build System](#build-system)\n* [Changes to Included Software](#changes-to-included-software)\n\nGetting Started\n---------------\n\nThose who are impatient may use prebuilt Sage available online from any of\n\n\u003c!-- [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/sagemath/sage-binder-env/master\n) \u0026nbsp; ---\u003e\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/passagemath/passagemath/tree/main\n) \u0026nbsp; [![Open in GitHub Codespaces](https://img.shields.io/badge/Open_in_GitHub_Codespaces-black?logo=github)](https://codespaces.new/passagemath/passagemath/tree/main)\n\nwithout local installation. Otherwise read on.\n\nThe [Sage Installation Guide](https://doc.sagemath.org/html/en/installation/index.html)\nprovides a decision tree that guides you to the type of installation\nthat will work best for you. This includes building from source,\nobtaining Sage from a package manager, using a container image, or using\nSage in the cloud.\n\n**This README contains self-contained instructions for building Sage from source.**\nThis requires you to clone the git repository (as described in this README) or download the\n[sources](https://www.sagemath.org/download-source.html) in the form\nof a tarball.\n\nSupported Platforms\n-------------------\n\nSage attempts to support all major Linux distributions, recent versions of\nmacOS, and Windows (using Windows Subsystem for Linux or\nvirtualization).\n\nDetailed information on supported platforms for a specific version of Sage\ncan be found in the section _Availability and installation help_ of the\n[release notes for this version](https://github.com/passagemath/passagemath/releases).\n\nWe highly appreciate contributions to Sage that fix portability bugs\nand help port Sage to new platforms; let us know at the [sage-devel\nmailing list](https://groups.google.com/group/sage-devel).\n\n[Windows] Preparing the Platform\n--------------------------------\n\nThe preferred way to run Sage on Windows is using Windows Subsystem for\nLinux (WSL). Follow the\n[official WSL setup guide](https://docs.microsoft.com/en-us/windows/wsl/faq)\nto install Ubuntu (or another Linux distribution).\nMake sure you allocate WSL sufficient RAM; 5GB is known to work, while\n2GB might be not enough for building Sage from source.\nThen all instructions for installation in Linux apply.\n\nAs an alternative, you can also run Linux on Windows using Docker ([see\nbelow](#sagemath-docker-images)) or other virtualization solutions.\n\n[macOS] Preparing the Platform\n------------------------------\n\n- If your Mac uses the Apple Silicon (M1, M2, M3, M4; arm64) architecture and\n  you set up your Mac by transferring files from an older Mac, make sure\n  that the directory ``/usr/local`` does not contain an old copy of Homebrew\n  (or other software) for the x86_64 architecture that you may have copied\n  over.  Note that Homebrew for the M1 is installed in ``/opt/homebrew``, not\n  ``/usr/local``.\n\n- If you wish to use conda, please see the [section on\n  conda](https://doc.sagemath.org/html/en/installation/conda.html) in the Sage\n  Installation Manual for guidance.\n\n- Otherwise, we strongly recommend to use Homebrew (\"the missing package\n  manager for macOS\") from https://brew.sh/, which provides the ``gfortran``\n  compiler and many libraries.\n\n- Otherwise, if you do not wish to install Homebrew, you will need to install\n  the latest version of Xcode Command Line Tools.  Open a terminal window and\n  run `xcode-select --install`; then click \"Install\" in the pop-up window.  If\n  the Xcode Command Line Tools are already installed, you may want to check if\n  they need to be updated by typing `softwareupdate -l`.\n\nInstructions to Build from Source\n---------------------------------\n\nLike many other software packages, Sage is built from source using\n`./configure`, followed by `make`.  However, we strongly recommend to\nread the following step-by-step instructions for building Sage.\n\nThe instructions cover all of Linux, macOS, and WSL.\n\nMore details, providing a background for these instructions, can be found\nin the section [Install from Source Code](https://doc.sagemath.org/html/en/installation/source.html)\nin the Installation Guide.\n\n\n1.  Decide on the source/build directory (`SAGE_ROOT`):\n\n    - On personal computers, any subdirectory of your :envvar:`HOME`\n      directory should do.\n\n    - For example, you could use `SAGE_ROOT=~/sage/sage`, which we\n      will use as the running example below.\n\n    - You need at least 10 GB of free disk space.\n\n    - The full path to the source directory must contain **no spaces**.\n\n    - After starting the build, you cannot move the source/build\n      directory without breaking things.\n\n    - You may want to avoid slow filesystems such as\n      [network file systems (NFS)](https://en.wikipedia.org/wiki/Network_File_System)\n      and the like.\n\n    - [macOS] macOS allows changing directories without using exact capitalization.\n      Beware of this convenience when compiling for macOS. Ignoring exact\n      capitalization when changing into :envvar:`SAGE_ROOT` can lead to build\n      errors for dependencies requiring exact capitalization in path names.\n\n2.  Clone the sources with `git`:\n\n    - To check that `git` is available, open a terminal and enter\n      the following command at the shell prompt (`$`):\n\n            $ git --version\n            git version 2.42.0\n\n      The exact version does not matter, but if this command gives an error,\n      install `git` using your package manager, using one of these commands:\n\n            $ sudo pacman -S git                          # on Arch Linux\n            $ sudo apt-get update \u0026\u0026 apt-get install git  # on Debian/Ubuntu\n            $ sudo yum install git                        # on Fedora/Redhat/CentOS\n            $ sudo zypper install git                     # on openSUSE\n            $ sudo xbps-install git                       # on Void Linux\n\n    - Create the directory where `SAGE_ROOT` should be established:\n\n            $ mkdir -p ~/sage\n            $ cd ~/sage\n\n    - Clone the passagemath git repository:\n\n            $ git clone -c core.symlinks=true --filter blob:none  \\\n                        --origin passagemath \\\n                        https://github.com/passagemath/passagemath.git\n\n      This will create the subdirectory `~/sage/passagemath`. (See the section\n      [Setting up git](https://doc.sagemath.org/html/en/developer/git_setup.html)\n      and the following sections in the Sage Developer's Guide\n      for more information.)\n\n    - Change into the created subdirectory:\n\n            $ cd passagemath\n\n    - [Windows] The Sage source tree contains symbolic links, and the\n      build will not work if Windows line endings rather than UNIX\n      line endings are used.\n\n      Therefore it is recommended (but not necessary) to use the\n      WSL version of `git`.\n\n3.  Install system packages.\n\n    Either refer for this to the [section on installation from\n    source](https://doc.sagemath.org/html/en/installation/source.html) in the\n    Sage Installation Manual for compilations of system packages\n    that you can install. When done, skip to step 7 (bootstrapping).\n\n    Alternatively, follow the more fine-grained approach below.\n\n4.  [Linux, WSL] Install the required minimal build prerequisites:\n\n    - Compilers: `gcc`, `gfortran`, `g++` (GCC versions from 9.x to 14.x\n      and recent versions of Clang (LLVM) are supported).\n      See [build/pkgs/gcc/SPKG.rst](build/pkgs/gcc/SPKG.rst) and\n      [build/pkgs/gfortran/SPKG.rst](build/pkgs/gfortran/SPKG.rst)\n      for a discussion of suitable compilers.\n\n    - Build tools: GNU `make`, GNU `m4`, `perl` (including\n      `ExtUtils::MakeMaker`), `ranlib`, `git`, `tar`, `bc`.\n      See [build/pkgs/_prereq/SPKG.rst](build/pkgs/_prereq/SPKG.rst) for\n      more details.\n\n    - Python 3.4 or later, or Python 2.7, a full installation including\n      `urllib`; but ideally version 3.9.x, 3.10.x, 3.11.x, 3.12.x, which\n      will avoid having to build Sage's own copy of Python 3.\n      See [build/pkgs/python3/SPKG.rst](build/pkgs/python3/SPKG.rst)\n      for more details.\n\n    We have collected lists of system packages that provide these build\n    prerequisites. See, in the folder\n    [build/pkgs/_prereq/distros](build/pkgs/_prereq/distros),\n    the files\n    [arch.txt](build/pkgs/_prereq/distros/arch.txt),\n    [debian.txt](build/pkgs/_prereq/distros/debian.txt)\n    (also for Ubuntu, Linux Mint, etc.),\n    [fedora.txt](build/pkgs/_prereq/distros/fedora.txt)\n    (also for Red Hat, CentOS),\n    [opensuse.txt](build/pkgs/_prereq/distros/opensuse.txt),\n    [slackware.txt](build/pkgs/_prereq/distros/slackware.txt), and\n    [void.txt](build/pkgs/_prereq/distros/void.txt), or visit\n    https://doc.sagemath.org/html/en/reference/spkg/_prereq.html#spkg-prereq\n\n5.  Optional: It is recommended that you have both LaTeX and\n    the ImageMagick tools (e.g. the \"convert\" command) installed\n    since some plotting functionality benefits from them.\n\n6.  [Development] If you plan to do Sage development or otherwise work with\n    ticket branches and not only releases, install the bootstrapping\n    prerequisites. See the files in the folder\n    [build/pkgs/_bootstrap/distros](build/pkgs/_bootstrap/distros), or\n    visit\n    https://doc.sagemath.org/html/en/reference/spkg/_bootstrap.html#spkg-bootstrap\n\n7.  Bootstrap the source tree using the following command:\n\n        $ make configure\n\n    (If the bootstrapping prerequisites are not installed, this command\n    will download a package providing pre-built bootstrap output instead.)\n\n8.  Sanitize the build environment. Use the command\n\n        $ env\n\n    to inspect the current environment variables, in particular `PATH`,\n    `PKG_CONFIG_PATH`, `LD_LIBRARY_PATH`, `CFLAGS`, `CPPFLAGS`, `CXXFLAGS`,\n    and `LDFLAGS` (if set).\n\n    Remove items from these (colon-separated) environment variables\n    that Sage should not use for its own build. In particular, remove\n    items if they refer to a previous Sage installation.\n\n    - [WSL] In particular, WSL imports many items from the Windows\n      `PATH` variable into the Linux environment, which can lead to\n      confusing build errors. These items typically start with `/mnt/c`.\n      It is best to remove all of them from the environment variables.\n      For example, you can set `PATH` using the command:\n\n            $ export PATH=/usr/sbin/:/sbin/:/bin/:/usr/lib/wsl/lib/\n\n    - [macOS with homebrew] Set required environment variables for the build:\n\n            $ source ./.homebrew-build-env\n\n      This is to make some of Homebrew's packages (so-called keg-only\n      packages) available for the build. Run it once to apply the\n      suggestions for the current terminal session. You may need to\n      repeat this command before you rebuild Sage from a new terminal\n      session, or after installing additional homebrew packages.  (You\n      can also add it to your shell profile so that it gets run\n      automatically in all future sessions.)\n\n9.  Optionally, decide on the installation prefix (`SAGE_LOCAL`):\n\n    - Traditionally, and by default, Sage is installed into the\n      subdirectory hierarchy rooted at `SAGE_ROOT/local/`.\n\n    - This can be changed using `./configure --prefix=SAGE_LOCAL`,\n      where `SAGE_LOCAL` is the desired installation prefix, which\n      must be writable by the user.\n\n      Unless you use this option in combination with `--enable-editable`,\n      you can delete the entire Sage source tree after completing\n      the build process.  What is installed in `SAGE_LOCAL` will be\n      a self-contained installation of Sage.\n\n    - Note that in Sage's build process, `make` builds **and**\n      installs (`make install` is a no-op).  Therefore the\n      installation hierarchy must be writable by the user.\n\n    - See the Sage Installation Manual for options if you want to\n      install into shared locations such as `/usr/local/`.\n      Do not attempt to build Sage as `root`.\n\n10. Optionally, review the configuration options, which includes\n    many optional packages:\n\n        $ ./configure --help\n\n    Notable options for Sage developers are the following:\n\n    - Use the option `--config-cache` to have `configure`\n      keep a disk cache of configuration values. This gives a nice speedup\n      when trying out ticket branches that make package upgrades, which\n      involves automatic re-runs of the configuration step.\n\n    - Use the option `--enable-ccache` to have Sage install and use the\n      optional package `ccache`, which is preconfigured to keep a\n      disk cache of object files created from source files. This can give\n      a great speedup when switching between different branches, at the\n      expense of disk space use.\n\n11. Optional, but highly recommended: Set some environment variables to\n    customize the build.\n\n    For example, the `MAKE` environment variable controls whether to\n    run several jobs in parallel.  On a machine with 4 processors, say,\n    typing `export MAKE=\"make -j4\"` will configure the build script to\n    perform a parallel compilation of Sage using 4 jobs. On some\n    powerful machines, you might even consider `-j16`, as building with\n    more jobs than CPU cores can speed things up further.\n\n    To reduce the terminal output during the build, type `export V=0`.\n    (`V` stands for \"verbosity\".)\n\n    Some environment variables deserve a special mention: `CC`,\n    `CXX` and `FC`. These variables defining your compilers\n    can be set at configuration time and their values will be recorded for\n    further use at build time and runtime.\n\n    For an in-depth discussion of more environment variables for\n    building Sage, see [the installation\n    guide](https://doc.sagemath.org/html/en/installation/source.html#environment-variables).\n\n12. Type `./configure`, followed by any options that you wish to use.\n    For example, to build Sage with `gf2x` package supplied by Sage,\n    use `./configure --with-system-gf2x=no`.\n\n    At the end of a successful `./configure` run, you may see messages\n    recommending to install extra system packages using your package\n    manager.\n\n    For a large [list of Sage\n    packages](https://github.com/sagemath/sage/issues/27330), Sage is able to\n    detect whether an installed system package is suitable for use with\n    Sage; in that case, Sage will not build another copy from source.\n\n    Sometimes, the messages will recommend to install packages that are\n    already installed on your system. See the earlier configure\n    messages or the file `config.log` for explanation.  Also, the\n    messages may recommend to install packages that are actually not\n    available; only the most recent releases of your distribution will\n    have all of these recommended packages.\n\n13. Optional: If you choose to install the additional system packages,\n    a re-run of `./configure` will test whether the versions installed\n    are usable for Sage; if they are, this will reduce the compilation\n    time and disk space needed by Sage. The usage of packages may be\n    adjusted by `./configure` parameters (check again the output of\n    `./configure --help`).\n\n14. Type `make`.  That's it! Everything is automatic and\n    non-interactive.\n\n    If you followed the above instructions, in particular regarding the\n    installation of system packages recommended by the output of\n    `./configure` (step 11), and regarding the parallel build (step 10),\n    building Sage takes less than one hour on a modern computer.\n    (Otherwise, it can take much longer.)\n\n    The build should work fine on all fully supported platforms. If it\n    does not, we want to know!\n\n15. Type `./sage` to try it out. In Sage, try for example `2 + 2`,\n    `plot(x^2)`, `plot3d(lambda x, y: x*y, (-1, 1), (-1, 1))`\n    to test a simple computation and plotting in 2D and 3D.\n    Type \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eD\u003c/kbd\u003e or `quit` to quit Sage.\n\n16. Optional: Type `make ptestlong` to test all examples in the documentation\n    (over 200,000 lines of input!) -- this takes from 10 minutes to\n    several hours. Don't get too disturbed if there are 2 to 3 failures,\n    but always feel free to email the section of `logs/ptestlong.log` that\n    contains errors to the [sage-support mailing list](https://groups.google.com/group/sage-support).\n    If there are numerous failures, there was a serious problem with your build.\n\n17. The HTML version of the [documentation](https://doc.sagemath.org/html/en/index.html)\n    is built during the compilation process of Sage and resides in the directory\n    `local/share/doc/sage/html/`. You may want to bookmark it in your browser.\n\n18. Optional: If you want to build the PDF version of the documentation,\n    run `make doc-pdf` (this requires LaTeX to be installed).\n\n19. Optional: Install optional packages of interest to you:\n    get a list by typing  `./sage --optional` or by visiting the\n    [packages documentation page](https://doc.sagemath.org/html/en/reference/spkg/).\n\n20. Optional: Create a symlink to the installed `sage` script in a\n    directory in your `PATH`, for example `/usr/local`. This will\n    allow you to start Sage by typing `sage` from anywhere rather than\n    having to either type the full path or navigate to the Sage\n    directory and type `./sage`. This can be done by running:\n\n        $ sudo ln -s $(./sage -sh -c 'ls $SAGE_ROOT/venv/bin/sage') /usr/local/bin\n\n21. Optional: Set up SageMath as a Jupyter kernel in an existing Jupyter notebook\n    or JupyterLab installation, as described in the section\n    [Launching SageMath](https://doc.sagemath.org/html/en/installation/launching.html)\n    in the Sage Installation Guide.\n\nDirectory Layout\n----------------\n\nSimplified directory layout (only essential files/directories):\n```\nSAGE_ROOT                 Root directory (create by git clone)\n├── build\n│   └── pkgs              Every package is a subdirectory here\n│       ├── 4ti2/\n│       …\n│       └── zlib/\n├── configure             Top-level configure script\n├── COPYING.txt           Copyright information\n├── pkgs                  Source trees of Python distribution packages\n│   ├── sage-conf\n│   │   ├── sage_conf.py\n│   │   └── setup.py\n│   ├── sage-docbuild\n│   │   ├── sage_docbuild/\n│   │   └── setup.py\n│   ├── sage-setup\n│   │   ├── sage_setup/\n│   │   └── setup.py\n│   ├── sage-sws2rst\n│   │   ├── sage_sws2rst/\n│   │   └── setup.py\n│   └── sagemath-standard\n│       ├── bin/\n│       ├── sage -\u003e ../../src/sage\n│       └── setup.py\n├── local  (SAGE_LOCAL)   Installation hierarchy for non-Python packages\n│   ├── bin               Executables\n│   ├── include           C/C++ headers\n│   ├── lib               Shared libraries, architecture-dependent data\n│   ├── share             Databases, architecture-independent data, docs\n│   │   └── doc           Viewable docs of Sage and of some components\n│   └── var\n│       ├── lib/sage\n│       │   ├── installed/\n│       │   │             Records of installed non-Python packages\n│       │   ├── scripts/  Scripts for uninstalling installed packages\n│       │   └── venv-python3.9  (SAGE_VENV)\n│       │       │         Installation hierarchy (virtual environment)\n│       │       │         for Python packages\n│       │       ├── bin/  Executables and installed scripts\n│       │       ├── lib/python3.9/site-packages/\n│       │       │         Python modules/packages are installed here\n│       │       └── var/lib/sage/\n│       │           └── wheels/\n│       │                 Python wheels for all installed Python packages\n│       │\n│       └── tmp/sage/     Temporary files when building Sage\n├── logs\n│   ├── install.log       Full install log\n│   └── pkgs              Build logs of individual packages\n│       ├── alabaster-0.7.12.log\n│       …\n│       └── zlib-1.2.11.log\n├── m4                    M4 macros for generating the configure script\n│   └── *.m4\n├── Makefile              Running \"make\" uses this file\n├── prefix -\u003e SAGE_LOCAL  Convenience symlink to the installation tree\n├── README.md             This file\n├── sage                  Script to start Sage\n├── src                   Monolithic Sage library source tree\n│   ├── bin/              Scripts that Sage uses internally\n│   ├── doc/              Sage documentation sources\n│   └── sage/             The Sage library source code\n├── upstream              Source tarballs of packages\n│   ├── Babel-2.9.1.tar.gz\n│   …\n│   └── zlib-1.2.11.tar.gz\n├── venv -\u003e SAGE_VENV     Convenience symlink to the virtual environment\n└── VERSION.txt\n```\nFor more details see [our Developer's Guide](https://doc.sagemath.org/html/en/developer/coding_basics.html#files-and-directory-structure).\n\nBuild System\n------------\n\nThis is a brief summary of the Sage software distribution's build system.\nThere are two components to the full Sage system--the Sage Python library\nand its associated user interfaces, and the larger software distribution of\nSage's main dependencies (for those dependencies not supplied by the user's\nsystem).\n\nSage's Python library is built and installed using a `setup.py` script as is\nstandard for Python packages (Sage's `setup.py` is non-trivial, but not\nunusual).\n\nMost of the rest of the build system is concerned with building all of Sage's\ndependencies in the correct order in relation to each other.  The dependencies\nincluded by Sage are referred to as SPKGs (i.e. \"Sage Packages\") and are listed\nunder `build/pkgs`.\n\nThe main entrypoint to Sage's build system is the top-level `Makefile` at the\nroot of the source tree.  Unlike most normal projects that use autoconf (Sage\ndoes as well, as described below), this `Makefile` is not generated.  Instead,\nit contains a few high-level targets and targets related to bootstrapping the\nsystem.  Nonetheless, we still run `make \u003ctarget\u003e` from the root of the source\ntree--targets not explicitly defined in the top-level `Makefile` are passed\nthrough to another Makefile under `build/make/Makefile`.\n\nThe latter `build/make/Makefile` *is* generated by an autoconf-generated\n`configure` script, using the template in `build/make/Makefile.in`.  This\nincludes rules for building the Sage library itself (`make sagelib`), and for\nbuilding and installing each of Sage's dependencies (e.g. `make gf2x`).\n\nThe `configure` script itself, if it is not already built, can be generated by\nrunning the `bootstrap` script (the latter requires _GNU autotools_ being installed).\nThe top-level `Makefile` also takes care of this automatically.\n\nTo summarize, running a command like `make python3` at the top-level of the\nsource tree goes something like this:\n\n1.  `make python3`\n2.  run `./bootstrap` if `configure` needs updating\n3.  run `./configure` with any previously configured options if `build/make/Makefile`\n    needs updating\n4.  change directory into `build/make` and run the `install` script--this is\n    little more than a front-end to running `make -f build/make/Makefile python3`,\n    which sets some necessary environment variables and logs some information\n5.  `build/make/Makefile` contains the actual rule for building `python3`; this\n    includes building all of `python3`'s dependencies first (and their\n    dependencies, recursively); the actual package installation is performed\n    with the `sage-spkg` program\n\nRelocation\n----------\n\nIt is not supported to move the `SAGE_ROOT` or `SAGE_LOCAL` directory\nafter building Sage.  If you do move the directories, you will have to\nrun ``make distclean`` and build Sage again from scratch.\n\nFor a system-wide installation, you have to build Sage as a \"normal\" user\nand then as root you can change permissions. See the [Installation Guide](https://doc.sagemath.org/html/en/installation/source.html#installation-in-a-multiuser-environment)\nfor further information.\n\nRedistribution\n--------------\n\nYour local Sage install is almost exactly the same as any \"developer\"\ninstall. You can make changes to documentation, source, etc., and very\neasily package the complete results up for redistribution just like we\ndo.\n\n1.  To make a binary distribution with your currently installed packages,\n    visit [sagemath/binary-pkg](https://github.com/sagemath/binary-pkg).\n\n2.  To make your own source tarball of Sage, type:\n\n        $ make dist\n\n    The result is placed in the directory `dist/`.\n\nChanges to Included Software\n----------------------------\n\nAll software included with Sage is copyrighted by the respective authors\nand released under an open source license that is __GPL version 3 or\nlater__ compatible. See [COPYING.txt](./COPYING.txt) for more details.\n\nSources are in unmodified (as far as possible) tarballs in the\n`upstream/` directory. The remaining description, version\ninformation, patches, and build scripts are in the accompanying\n`build/pkgs/\u003cpackagename\u003e` directory. This directory is\npart of the Sage git repository.\n\n\u003cp align=\"center\"\u003e\n   Copyright (C) 2005-2024 The Sage Development Team\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n   https://www.sagemath.org\n\u003c/p\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpassagemath%2Fpassagemath","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpassagemath%2Fpassagemath","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpassagemath%2Fpassagemath/lists"}