From 939d617b72326e43e36d1f581acb95ae453692c6 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 4 Mar 2024 20:48:18 -0800 Subject: [PATCH 01/14] pkgs/sage-project: New --- pkgs/sage-project/MANIFEST.in | 1 + pkgs/sage-project/README.rst | 23 ++++++++++ pkgs/sage-project/VERSION.txt | 1 + pkgs/sage-project/pyproject.toml | 43 +++++++++++++++++++ .../.devcontainer/downstream-archlinux-latest | 1 + .../downstream-conda-forge-latest | 1 + .../.devcontainer/downstream-docker-cocalc | 1 + .../.devcontainer/downstream-docker-computop | 1 + .../downstream-docker-sagemath-sagemath | 1 + ...ownstream-docker-sagemath-sagemath-develop | 1 + ...ownstream-docker-sagemathinc-sagemath-core | 1 + .../.devcontainer/onCreate-conda.sh | 1 + .../.devcontainer/onCreate.sh | 1 + 13 files changed, 77 insertions(+) create mode 100644 pkgs/sage-project/MANIFEST.in create mode 100644 pkgs/sage-project/README.rst create mode 100644 pkgs/sage-project/VERSION.txt create mode 100644 pkgs/sage-project/pyproject.toml create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh create mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh diff --git a/pkgs/sage-project/MANIFEST.in b/pkgs/sage-project/MANIFEST.in new file mode 100644 index 00000000000..74282fceee2 --- /dev/null +++ b/pkgs/sage-project/MANIFEST.in @@ -0,0 +1 @@ +include VERSION.txt diff --git a/pkgs/sage-project/README.rst b/pkgs/sage-project/README.rst new file mode 100644 index 00000000000..178f9f213c9 --- /dev/null +++ b/pkgs/sage-project/README.rst @@ -0,0 +1,23 @@ +================================================================================ + Sage: Open Source Mathematics Software: Build system of the Sage documentation +================================================================================ + +About SageMath +-------------- + + "Creating a Viable Open Source Alternative to + Magma, Maple, Mathematica, and MATLAB" + + Copyright (C) 2005-2020 The Sage Development Team + + https://www.sagemath.org + +SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (using Windows Subsystem for Linux). + +The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.sagemath.org/download-source.html). Sage-the-distribution first builds a large number of open source packages from source (unless it finds suitable versions installed in the system) and then installs the Sage Library (sagelib, implemented in Python and Cython). + + +About this pip-installable source distribution +---------------------------------------------- + +This is the build system of the Sage documentation, based on Sphinx. diff --git a/pkgs/sage-project/VERSION.txt b/pkgs/sage-project/VERSION.txt new file mode 100644 index 00000000000..b33291c9c02 --- /dev/null +++ b/pkgs/sage-project/VERSION.txt @@ -0,0 +1 @@ +10.3.rc2 diff --git a/pkgs/sage-project/pyproject.toml b/pkgs/sage-project/pyproject.toml new file mode 100644 index 00000000000..3a118cd531c --- /dev/null +++ b/pkgs/sage-project/pyproject.toml @@ -0,0 +1,43 @@ +[build-system] +requires = ["setuptools>=61.2"] +build-backend = "setuptools.build_meta" + +[project] +name = "sage-project" +description = "Sage: Open Source Mathematics Software: Script for maintaining a SageMath-based project" +license = {text = "GNU General Public License (GPL) v2 or later"} +authors = [{name = "The Sage Developers", email = "sage-support@googlegroups.com"}] +classifiers = [ + "Development Status :: 6 - Mature", + "Intended Audience :: Education", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", + "Operating System :: POSIX", + "Operating System :: MacOS :: MacOS X", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: Implementation :: CPython", + "Topic :: Scientific/Engineering :: Mathematics", +] +urls = {Homepage = "https://www.sagemath.org"} +dynamic = ["version"] + +[project.readme] +file = "README.rst" +content-type = "text/x-rst" + +[tool.setuptools] +packages = [ + "sage_project", +] +include-package-data = false + +[tools.setuptools.package-data] +"sage_project" = [ + "template*/**" +] + +[tool.setuptools.dynamic] +version = {file = ["VERSION.txt"]} diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest new file mode 120000 index 00000000000..d63a304bbff --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest @@ -0,0 +1 @@ +../../../../../.devcontainer/downstream-archlinux-latest \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest new file mode 120000 index 00000000000..c505f39c320 --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest @@ -0,0 +1 @@ +../../../../../.devcontainer/downstream-conda-forge-latest \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc new file mode 120000 index 00000000000..e26403004d2 --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc @@ -0,0 +1 @@ +../../../../../.devcontainer/downstream-docker-cocalc \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop new file mode 120000 index 00000000000..ae2d079b801 --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop @@ -0,0 +1 @@ +../../../../../.devcontainer/downstream-docker-computop \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath new file mode 120000 index 00000000000..8c2c79b9a87 --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath @@ -0,0 +1 @@ +../../../../../.devcontainer/downstream-docker-sagemath-sagemath \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop new file mode 120000 index 00000000000..20df92d83c1 --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop @@ -0,0 +1 @@ +../../../../../.devcontainer/downstream-docker-sagemath-sagemath-develop \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core new file mode 120000 index 00000000000..523d467acde --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core @@ -0,0 +1 @@ +../../../../../.devcontainer/downstream-docker-sagemathinc-sagemath-core \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh new file mode 120000 index 00000000000..3fd022f1d57 --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh @@ -0,0 +1 @@ +../../../../../.devcontainer/onCreate-conda.sh \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh new file mode 120000 index 00000000000..d7e9c033d12 --- /dev/null +++ b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh @@ -0,0 +1 @@ +../../../../../.devcontainer/onCreate.sh \ No newline at end of file From 4b2dfdfd8223214ceda3b19d364a3758e676017e Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 4 Mar 2024 22:48:31 -0800 Subject: [PATCH 02/14] Renames, adds --- pkgs/sage-project/README.rst | 52 +++++++++++++++++-- pkgs/sage-project/pyproject.toml | 3 ++ .../cookiecutter.json | 3 ++ .../.devcontainer/downstream-archlinux-latest | 1 - .../downstream-conda-forge-latest | 1 - .../.devcontainer/downstream-docker-cocalc | 1 - .../.devcontainer/downstream-docker-computop | 1 - .../downstream-docker-sagemath-sagemath | 1 - ...ownstream-docker-sagemath-sagemath-develop | 1 - ...ownstream-docker-sagemathinc-sagemath-core | 1 - .../.devcontainer/onCreate-conda.sh | 1 - .../.devcontainer/onCreate.sh | 1 - .../cookiecutter.json | 3 ++ .../user-project-template/cookiecutter.json | 6 +++ .../.devcontainer/downstream-archlinux-latest | 1 + .../downstream-conda-forge-latest | 1 + .../.devcontainer/downstream-docker-cocalc | 1 + .../.devcontainer/downstream-docker-computop | 1 + .../downstream-docker-sagemath-sagemath | 1 + ...ownstream-docker-sagemath-sagemath-develop | 1 + ...ownstream-docker-sagemathinc-sagemath-core | 1 + .../.devcontainer/onCreate-conda.sh | 1 + .../.devcontainer/onCreate.sh | 1 + 23 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 pkgs/sage-project/sage_project/downstream-package-template/cookiecutter.json delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh delete mode 120000 pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh create mode 100644 pkgs/sage-project/sage_project/upstream-package-template/cookiecutter.json create mode 100644 pkgs/sage-project/sage_project/user-project-template/cookiecutter.json create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh create mode 120000 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh diff --git a/pkgs/sage-project/README.rst b/pkgs/sage-project/README.rst index 178f9f213c9..177d663f467 100644 --- a/pkgs/sage-project/README.rst +++ b/pkgs/sage-project/README.rst @@ -1,6 +1,6 @@ -================================================================================ - Sage: Open Source Mathematics Software: Build system of the Sage documentation -================================================================================ +========================================================================================= + Sage: Open Source Mathematics Software: Script for maintaining a SageMath-based project +========================================================================================= About SageMath -------------- @@ -8,7 +8,7 @@ About SageMath "Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, and MATLAB" - Copyright (C) 2005-2020 The Sage Development Team + Copyright (C) 2005-2024 The Sage Development Team https://www.sagemath.org @@ -20,4 +20,46 @@ The traditional and recommended way to install SageMath is from source via Sage- About this pip-installable source distribution ---------------------------------------------- -This is the build system of the Sage documentation, based on Sphinx. +Creating a user project +~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + $ sage-project create PROJECT-DIRECTORY + +This creates configuration files: + +- ``environment*.yml`` for local use with conda-forge in Linux, macOS +- ``.devcontainer/downstream-*/`` for use in dev container on Linux, macOS, Windows + +It can also be invoked as follows:: + + $ pipx run cookiecutter gh:sagemath/sage --directory="pkgs/sage-project/sage_project/user-project-template" + +See https://cookiecutter.readthedocs.io/en/latest/README.html for available options. + + +Creating a pip-installable downstream package +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + $ sage-project create --downstream-package PROJECT-DIRECTORY + +Additionally creates: + +- ``.github/workflows/`` + + +Adding Sage CI portability/integration testing infrastructure to an upstream project +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + $ sage-project create --upstream-package PROJECT-DIRECTORY + +Creates: + +- ``.github/workflows/ci-sage.yml`` +- ``.devcontainer/portability-*`` +- ``.devcontainer/tox-docker-in-docker`` diff --git a/pkgs/sage-project/pyproject.toml b/pkgs/sage-project/pyproject.toml index 3a118cd531c..cbfd62d4760 100644 --- a/pkgs/sage-project/pyproject.toml +++ b/pkgs/sage-project/pyproject.toml @@ -22,6 +22,9 @@ classifiers = [ "Topic :: Scientific/Engineering :: Mathematics", ] urls = {Homepage = "https://www.sagemath.org"} +dependencies = [ + "cookiecutter", +] dynamic = ["version"] [project.readme] diff --git a/pkgs/sage-project/sage_project/downstream-package-template/cookiecutter.json b/pkgs/sage-project/sage_project/downstream-package-template/cookiecutter.json new file mode 100644 index 00000000000..cc9c0bc2c0d --- /dev/null +++ b/pkgs/sage-project/sage_project/downstream-package-template/cookiecutter.json @@ -0,0 +1,3 @@ +{ + "package_directory": "my-package-directory", +} diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest deleted file mode 120000 index d63a304bbff..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-archlinux-latest +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/downstream-archlinux-latest \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest deleted file mode 120000 index c505f39c320..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-conda-forge-latest +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/downstream-conda-forge-latest \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc deleted file mode 120000 index e26403004d2..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-cocalc +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/downstream-docker-cocalc \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop deleted file mode 120000 index ae2d079b801..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-computop +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/downstream-docker-computop \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath deleted file mode 120000 index 8c2c79b9a87..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/downstream-docker-sagemath-sagemath \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop deleted file mode 120000 index 20df92d83c1..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemath-sagemath-develop +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/downstream-docker-sagemath-sagemath-develop \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core deleted file mode 120000 index 523d467acde..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/downstream-docker-sagemathinc-sagemath-core +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/downstream-docker-sagemathinc-sagemath-core \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh deleted file mode 120000 index 3fd022f1d57..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate-conda.sh +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/onCreate-conda.sh \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh b/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh deleted file mode 120000 index d7e9c033d12..00000000000 --- a/pkgs/sage-project/sage_project/template-downstream/.devcontainer/onCreate.sh +++ /dev/null @@ -1 +0,0 @@ -../../../../../.devcontainer/onCreate.sh \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/upstream-package-template/cookiecutter.json b/pkgs/sage-project/sage_project/upstream-package-template/cookiecutter.json new file mode 100644 index 00000000000..cc9c0bc2c0d --- /dev/null +++ b/pkgs/sage-project/sage_project/upstream-package-template/cookiecutter.json @@ -0,0 +1,3 @@ +{ + "package_directory": "my-package-directory", +} diff --git a/pkgs/sage-project/sage_project/user-project-template/cookiecutter.json b/pkgs/sage-project/sage_project/user-project-template/cookiecutter.json new file mode 100644 index 00000000000..3858a51e06c --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/cookiecutter.json @@ -0,0 +1,6 @@ +{ + "project_name": "my-sage-project", + "__prompts__": { + "project_name": "Name of the project (directory name to create)" + } +} diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest new file mode 120000 index 00000000000..ba542c5e8a9 --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest @@ -0,0 +1 @@ +../../../../../../.devcontainer/downstream-archlinux-latest \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest new file mode 120000 index 00000000000..4b393c1dc04 --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest @@ -0,0 +1 @@ +../../../../../../.devcontainer/downstream-conda-forge-latest \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc new file mode 120000 index 00000000000..bc690de5851 --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc @@ -0,0 +1 @@ +../../../../../../.devcontainer/downstream-docker-cocalc \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop new file mode 120000 index 00000000000..6b42aecbe8a --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop @@ -0,0 +1 @@ +../../../../../../.devcontainer/downstream-docker-computop \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath new file mode 120000 index 00000000000..c223ee0629f --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath @@ -0,0 +1 @@ +../../../../../../.devcontainer/downstream-docker-sagemath-sagemath \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop new file mode 120000 index 00000000000..744da1541e7 --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop @@ -0,0 +1 @@ +../../../../../../.devcontainer/downstream-docker-sagemath-sagemath-develop \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core new file mode 120000 index 00000000000..b50d647d13f --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core @@ -0,0 +1 @@ +../../../../../../.devcontainer/downstream-docker-sagemathinc-sagemath-core \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh new file mode 120000 index 00000000000..358e08c20d1 --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh @@ -0,0 +1 @@ +../../../../../../.devcontainer/onCreate-conda.sh \ No newline at end of file diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh new file mode 120000 index 00000000000..8d293ca2439 --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh @@ -0,0 +1 @@ +../../../../../../.devcontainer/onCreate.sh \ No newline at end of file From 15b26694dbe88e8db59a93009f6ef4e3d1323b03 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 5 Mar 2024 00:20:20 -0800 Subject: [PATCH 03/14] pkgs/sage-project/sage_project/user-project-template: Add environment.yml --- .../{{cookiecutter.project_name}}/environment.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/environment.yml diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/environment.yml b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/environment.yml new file mode 100644 index 00000000000..600e1cb7e16 --- /dev/null +++ b/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/environment.yml @@ -0,0 +1,14 @@ +## This is a conda environment file for use on Linux or macOS. +## +## Use it as follows: +## +## conda env create -f environment.yml +## conda activate {{cookiecutter.project_name}} +## +name: {{cookiecutter.project_name}} +channels: + - conda-forge + - defaults +dependencies: + - python==3.11 + - sage From 20a6c10cb4f4da980f381c5e0f5629c4648cd0d6 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 17 Mar 2024 23:11:38 -0700 Subject: [PATCH 04/14] pkgs/sage-project-cookiecutter: Rename from sage-project --- .../MANIFEST.in | 0 .../README.rst | 21 +++++++++++++++---- .../VERSION.txt | 0 .../pyproject.toml | 6 ++++-- .../cookiecutter.json | 0 .../cookiecutter.json | 0 .../user-project-template/cookiecutter.json | 0 .../.devcontainer/downstream-archlinux-latest | 0 .../downstream-conda-forge-latest | 0 .../.devcontainer/downstream-docker-cocalc | 0 .../.devcontainer/downstream-docker-computop | 0 .../downstream-docker-sagemath-sagemath | 0 ...ownstream-docker-sagemath-sagemath-develop | 0 ...ownstream-docker-sagemathinc-sagemath-core | 0 .../.devcontainer/onCreate-conda.sh | 0 .../.devcontainer/onCreate.sh | 0 .../environment.yml | 0 17 files changed, 21 insertions(+), 6 deletions(-) rename pkgs/{sage-project => sage-project-cookiecutter}/MANIFEST.in (100%) rename pkgs/{sage-project => sage-project-cookiecutter}/README.rst (76%) rename pkgs/{sage-project => sage-project-cookiecutter}/VERSION.txt (100%) rename pkgs/{sage-project => sage-project-cookiecutter}/pyproject.toml (91%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/downstream-package-template/cookiecutter.json (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/upstream-package-template/cookiecutter.json (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/cookiecutter.json (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh (100%) rename pkgs/{sage-project/sage_project => sage-project-cookiecutter/sage_project_cookiecutter}/user-project-template/{{cookiecutter.project_name}}/environment.yml (100%) diff --git a/pkgs/sage-project/MANIFEST.in b/pkgs/sage-project-cookiecutter/MANIFEST.in similarity index 100% rename from pkgs/sage-project/MANIFEST.in rename to pkgs/sage-project-cookiecutter/MANIFEST.in diff --git a/pkgs/sage-project/README.rst b/pkgs/sage-project-cookiecutter/README.rst similarity index 76% rename from pkgs/sage-project/README.rst rename to pkgs/sage-project-cookiecutter/README.rst index 177d663f467..f48ea83f4bd 100644 --- a/pkgs/sage-project/README.rst +++ b/pkgs/sage-project-cookiecutter/README.rst @@ -25,7 +25,7 @@ Creating a user project :: - $ sage-project create PROJECT-DIRECTORY + $ sage-project-cookiecutter create PROJECT-DIRECTORY This creates configuration files: @@ -34,7 +34,7 @@ This creates configuration files: It can also be invoked as follows:: - $ pipx run cookiecutter gh:sagemath/sage --directory="pkgs/sage-project/sage_project/user-project-template" + $ pipx run cookiecutter gh:sagemath/sage --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template" See https://cookiecutter.readthedocs.io/en/latest/README.html for available options. @@ -44,7 +44,7 @@ Creating a pip-installable downstream package :: - $ sage-project create --downstream-package PROJECT-DIRECTORY + $ sage-project-cookiecutter create --downstream-package PROJECT-DIRECTORY Additionally creates: @@ -56,10 +56,23 @@ Adding Sage CI portability/integration testing infrastructure to an upstream pro :: - $ sage-project create --upstream-package PROJECT-DIRECTORY + $ sage-project-cookiecutter create --upstream-package PROJECT-DIRECTORY Creates: - ``.github/workflows/ci-sage.yml`` - ``.devcontainer/portability-*`` - ``.devcontainer/tox-docker-in-docker`` + + +Creating a pip-installable upstream package of the SageMath organization +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + $ sage-project-cookiecutter create --sagemath-upstream-package PROJECT-DIRECTORY + +Additionally creates: + +- ``CODE_OF_CONDUCT.md`` +- ``CONTRIBUTING.md`` diff --git a/pkgs/sage-project/VERSION.txt b/pkgs/sage-project-cookiecutter/VERSION.txt similarity index 100% rename from pkgs/sage-project/VERSION.txt rename to pkgs/sage-project-cookiecutter/VERSION.txt diff --git a/pkgs/sage-project/pyproject.toml b/pkgs/sage-project-cookiecutter/pyproject.toml similarity index 91% rename from pkgs/sage-project/pyproject.toml rename to pkgs/sage-project-cookiecutter/pyproject.toml index cbfd62d4760..740cbeb8a83 100644 --- a/pkgs/sage-project/pyproject.toml +++ b/pkgs/sage-project-cookiecutter/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=61.2"] build-backend = "setuptools.build_meta" [project] -name = "sage-project" +name = "sage-project-cookiecutter" description = "Sage: Open Source Mathematics Software: Script for maintaining a SageMath-based project" license = {text = "GNU General Public License (GPL) v2 or later"} authors = [{name = "The Sage Developers", email = "sage-support@googlegroups.com"}] @@ -18,12 +18,14 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering :: Mathematics", ] urls = {Homepage = "https://www.sagemath.org"} dependencies = [ "cookiecutter", + "cruft", ] dynamic = ["version"] @@ -38,7 +40,7 @@ packages = [ include-package-data = false [tools.setuptools.package-data] -"sage_project" = [ +"sage_project_cookiecutter" = [ "template*/**" ] diff --git a/pkgs/sage-project/sage_project/downstream-package-template/cookiecutter.json b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/downstream-package-template/cookiecutter.json similarity index 100% rename from pkgs/sage-project/sage_project/downstream-package-template/cookiecutter.json rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/downstream-package-template/cookiecutter.json diff --git a/pkgs/sage-project/sage_project/upstream-package-template/cookiecutter.json b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/upstream-package-template/cookiecutter.json similarity index 100% rename from pkgs/sage-project/sage_project/upstream-package-template/cookiecutter.json rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/upstream-package-template/cookiecutter.json diff --git a/pkgs/sage-project/sage_project/user-project-template/cookiecutter.json b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/cookiecutter.json similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/cookiecutter.json rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/cookiecutter.json diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-archlinux-latest diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-conda-forge-latest diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-cocalc diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-computop diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemath-sagemath-develop diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/downstream-docker-sagemathinc-sagemath-core diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate-conda.sh diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/.devcontainer/onCreate.sh diff --git a/pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/environment.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/environment.yml similarity index 100% rename from pkgs/sage-project/sage_project/user-project-template/{{cookiecutter.project_name}}/environment.yml rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template/{{cookiecutter.project_name}}/environment.yml From 7ca4de6e494f739383cbd541475606d40a3b3423 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 17 Mar 2024 23:24:55 -0700 Subject: [PATCH 05/14] sage_project_cookiecutter/sagemath-upstream-package-template: New --- pkgs/sage-project-cookiecutter/README.rst | 30 +++++++++++++++++-- .../cookiecutter.json | 6 ++++ .../CODE_OF_CONDUCT.md | 4 +++ .../CONTRIBUTING.md | 9 ++++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/cookiecutter.json create mode 100644 pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CODE_OF_CONDUCT.md create mode 100644 pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CONTRIBUTING.md diff --git a/pkgs/sage-project-cookiecutter/README.rst b/pkgs/sage-project-cookiecutter/README.rst index f48ea83f4bd..ebc5592a495 100644 --- a/pkgs/sage-project-cookiecutter/README.rst +++ b/pkgs/sage-project-cookiecutter/README.rst @@ -34,9 +34,12 @@ This creates configuration files: It can also be invoked as follows:: - $ pipx run cookiecutter gh:sagemath/sage --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template" + $ pipx run cruft create https://github.com/mkoeppe/sage --checkout sagemath-environment-cookiecutter \ + --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/user-project-template" -See https://cookiecutter.readthedocs.io/en/latest/README.html for available options. +TODO: Update URL, remove --checkout ... before merging. + +See https://cruft.github.io/cruft/ for available options. Creating a pip-installable downstream package @@ -50,6 +53,11 @@ Additionally creates: - ``.github/workflows/`` +It can also be invoked as follows:: + + $ pipx run cruft create https://github.com/mkoeppe/sage --checkout sagemath-environment-cookiecutter \ + --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/downstream-package-template" + Adding Sage CI portability/integration testing infrastructure to an upstream project ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -64,6 +72,11 @@ Creates: - ``.devcontainer/portability-*`` - ``.devcontainer/tox-docker-in-docker`` +It can also be invoked as follows:: + + $ pipx run cruft create https://github.com/mkoeppe/sage --checkout sagemath-environment-cookiecutter \ + --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/upstream-package-template" + Creating a pip-installable upstream package of the SageMath organization ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -76,3 +89,16 @@ Additionally creates: - ``CODE_OF_CONDUCT.md`` - ``CONTRIBUTING.md`` + +It can also be invoked as follows:: + + $ pipx run cruft create https://github.com/mkoeppe/sage --checkout sagemath-environment-cookiecutter \ + --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template" + + +Updating a project +~~~~~~~~~~~~~~~~~~ + +:: + + $ pipx run cruft update diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/cookiecutter.json b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/cookiecutter.json new file mode 100644 index 00000000000..3858a51e06c --- /dev/null +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/cookiecutter.json @@ -0,0 +1,6 @@ +{ + "project_name": "my-sage-project", + "__prompts__": { + "project_name": "Name of the project (directory name to create)" + } +} diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CODE_OF_CONDUCT.md b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..fcbba0a5674 --- /dev/null +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CODE_OF_CONDUCT.md @@ -0,0 +1,4 @@ +This is an open-source project maintained by the SageMath community. + +The [Code of Conduct](https://github.com/sagemath/sage/blob/develop/CODE_OF_CONDUCT.md) +of the Sage community applies. diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CONTRIBUTING.md b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CONTRIBUTING.md new file mode 100644 index 00000000000..73f3cb08fc9 --- /dev/null +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/CONTRIBUTING.md @@ -0,0 +1,9 @@ +This is an open-source project maintained by the SageMath community. + +Contributions of all sorts are heartily welcomed. + +See https://github.com/sagemath/sage/blob/develop/CONTRIBUTING.md for general +guidance on how to contribute. + +Open issues or submit pull requests at https://github.com/sagemath/{{cookiecutter.project_name}} +and join https://groups.google.com/group/sage-devel to discuss. From 7cb7280da30ebc8a156d3c541523c98d4b4f49fb Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 18 Mar 2024 00:53:56 -0700 Subject: [PATCH 06/14] sage_project_cookiecutter/sagemath-upstream-package-template: Add dist.yml --- .../.github/workflows/dist.yml | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/.github/workflows/dist.yml diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/.github/workflows/dist.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/.github/workflows/dist.yml new file mode 100644 index 00000000000..d475819fa1e --- /dev/null +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/.github/workflows/dist.yml @@ -0,0 +1,135 @@ +name: Distributions + +on: + push: + pull_request: + workflow_dispatch: + +concurrency: + # Cancel previous runs of this workflow for the same branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + + sdists_for_pypi: + name: Build sdist (and upload to PyPI on release tags) + runs-on: ubuntu-latest + env: + CAN_DEPLOY: ${{ secrets.SAGEMATH_PYPI_API_TOKEN != '' }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + - name: make sdist + run: | + python3 -m pip install build + python3 -m build --sdist + - uses: actions/upload-artifact@v3 + with: + path: "dist/*.tar.gz" + name: dist + - uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.SAGEMATH_PYPI_API_TOKEN }} + skip_existing: true + verbose: true + if: env.CAN_DEPLOY == 'true' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + + build_wheels: + name: Build wheels on ${{ matrix.os }}, arch ${{ matrix.arch }} + runs-on: ${{ matrix.os }} + needs: sdists_for_pypi + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + arch: x86_64 + - os: ubuntu-latest + arch: i686 + - os: macos-latest + arch: auto + - os: macos-14 + arch: auto + env: + # SPKGs to install as system packages + SPKGS: _bootstrap _prereq + # Non-Python packages to install as spkgs + TARGETS_PRE: {{cookiecutter.project_name}}-build-deps + # Disable building PyPy wheels on all platforms + # Disable musllinux until #33083 provides alpine package information + CIBW_SKIP: "pp* *-musllinux*" + # + CIBW_ARCHS: ${{ matrix.arch }} + # https://cibuildwheel.readthedocs.io/en/stable/options/#requires-python + CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" + # Environment during wheel build + CIBW_ENVIRONMENT: "PATH=$(pwd)/local/bin:$PATH CPATH=$(pwd)/local/include:$CPATH LIBRARY_PATH=$(pwd)/local/lib:$LIBRARY_PATH LD_LIBRARY_PATH=$(pwd)/local/lib:$LD_LIBRARY_PATH PKG_CONFIG_PATH=$(pwd)/local/share/pkgconfig:$PKG_CONFIG_PATH ACLOCAL_PATH=/usr/share/aclocal" + # Use 'build', not 'pip wheel' + CIBW_BUILD_FRONTEND: build + steps: + - uses: actions/checkout@v4 + with: + repository: sagemath/sage + ref: develop + + - uses: actions/download-artifact@v3 + with: + name: dist + path: dist + + - uses: actions/setup-python@v5 + # As of 2024-02-03, the macOS M1 runners do not have preinstalled python or pipx. + # Installing pipx follows the approach of https://github.com/pypa/cibuildwheel/pull/1743 + id: python + with: + python-version: "3.8 - 3.12" + update-environment: false + + - name: Build platform wheels + # We build the wheel from the sdist. + # But we must run cibuildwheel with the unpacked source directory, not a tarball, + # so that SAGE_ROOT is copied into the build containers. + # + # In the CIBW_BEFORE_ALL phase, we install libraries using the Sage distribution. + # https://cibuildwheel.readthedocs.io/en/stable/options/#before-all + run: | + "${{ steps.python.outputs.python-path }}" -m pip install pipx + export PATH=build/bin:$PATH + export CIBW_BEFORE_ALL="( $(sage-print-system-package-command debian --yes --no-install-recommends install $(sage-get-system-packages debian $SPKGS)) || $(sage-print-system-package-command fedora --yes --no-install-recommends install $(sage-get-system-packages fedora $SPKGS | sed s/pkg-config/pkgconfig/)) || ( $(sage-print-system-package-command homebrew --yes --no-install-recommends install $(sage-get-system-packages homebrew $SPKGS)) || echo error ignored) ) && ./bootstrap && ./configure --enable-build-as-root && make -j4 V=0 $TARGETS_PRE" + mkdir -p unpacked + for pkg in {{cookiecutter.project_name}}; do + (cd unpacked && tar xfz - ) < dist/$pkg*.tar.gz + "${{ steps.python.outputs.python-path }}" -m pipx run cibuildwheel==2.17.0 unpacked/$pkg* + done + + - uses: actions/upload-artifact@v3 + with: + name: wheels + path: ./wheelhouse/*.whl + + pypi-publish: + # https://github.com/pypa/gh-action-pypi-publish + name: Upload wheels to PyPI + needs: build_wheels + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + runs-on: ubuntu-latest + env: + CAN_DEPLOY: ${{ secrets.SAGEMATH_PYPI_API_TOKEN != '' }} + steps: + + - uses: actions/download-artifact@v3 + with: + name: wheels + path: wheelhouse + + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.SAGEMATH_PYPI_API_TOKEN }} + packages_dir: wheelhouse/ + skip_existing: true + verbose: true + if: env.CAN_DEPLOY == 'true' From 18e3d1a8ad28f61b1507e8ee674b61dba2871853 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 19 Mar 2024 16:51:28 -0700 Subject: [PATCH 07/14] pkgs/sage-project-cookiecutter/README.rst: Document using --overwrite-if-exists --- pkgs/sage-project-cookiecutter/README.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkgs/sage-project-cookiecutter/README.rst b/pkgs/sage-project-cookiecutter/README.rst index ebc5592a495..9467ebdb861 100644 --- a/pkgs/sage-project-cookiecutter/README.rst +++ b/pkgs/sage-project-cookiecutter/README.rst @@ -66,7 +66,7 @@ Adding Sage CI portability/integration testing infrastructure to an upstream pro $ sage-project-cookiecutter create --upstream-package PROJECT-DIRECTORY -Creates: +Creates in the existing ``PROJECT-DIRECTORY``: - ``.github/workflows/ci-sage.yml`` - ``.devcontainer/portability-*`` @@ -74,8 +74,11 @@ Creates: It can also be invoked as follows:: - $ pipx run cruft create https://github.com/mkoeppe/sage --checkout sagemath-environment-cookiecutter \ - --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/upstream-package-template" + [alice@localhost PROJECT-DIRECTORY]$ (cd .. && pipx run cruft create \ + https://github.com/mkoeppe/sage --checkout sagemath-environment-cookiecutter \ + --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/upstream-package-template" \ + --overwrite-if-exists) + [1/1] Name of the project (directory name to create) (my-sage-project): PROJECT-DIRECTORY Creating a pip-installable upstream package of the SageMath organization From af737386861d450e8cf1208e4f5ffc34b7e2f489 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 19 Mar 2024 18:27:50 -0700 Subject: [PATCH 08/14] sage_project_cookiecutter/sagemath-upstream-package-template: Add dist.yml (fixup) --- .../.github/workflows/dist.yml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{ => {{cookiecutter.project_name}}}/.github/workflows/dist.yml (85%) diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/.github/workflows/dist.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml similarity index 85% rename from pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/.github/workflows/dist.yml rename to pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml index d475819fa1e..a259ac77c85 100644 --- a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/.github/workflows/dist.yml +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml @@ -7,7 +7,7 @@ on: concurrency: # Cancel previous runs of this workflow for the same branch - group: ${{ github.workflow }}-${{ github.ref }} + group: {{"${{"}} github.workflow {{"}}"}}-{{"${{"}} github.ref {{"}}"}} cancel-in-progress: true jobs: @@ -16,7 +16,7 @@ jobs: name: Build sdist (and upload to PyPI on release tags) runs-on: ubuntu-latest env: - CAN_DEPLOY: ${{ secrets.SAGEMATH_PYPI_API_TOKEN != '' }} + CAN_DEPLOY: {{"${{"}} secrets.SAGEMATH_PYPI_API_TOKEN != '' {{"}}"}} steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v4 @@ -31,14 +31,14 @@ jobs: - uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ - password: ${{ secrets.SAGEMATH_PYPI_API_TOKEN }} + password: {{"${{"}} secrets.SAGEMATH_PYPI_API_TOKEN {{"}}"}} skip_existing: true verbose: true if: env.CAN_DEPLOY == 'true' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags') build_wheels: - name: Build wheels on ${{ matrix.os }}, arch ${{ matrix.arch }} - runs-on: ${{ matrix.os }} + name: Build wheels on {{"${{"}} matrix.os {{"}}"}}, arch {{"${{"}} matrix.arch {{"}}"}} + runs-on: {{"${{"}} matrix.os {{"}}"}} needs: sdists_for_pypi strategy: fail-fast: false @@ -61,7 +61,7 @@ jobs: # Disable musllinux until #33083 provides alpine package information CIBW_SKIP: "pp* *-musllinux*" # - CIBW_ARCHS: ${{ matrix.arch }} + CIBW_ARCHS: {{"${{"}} matrix.arch {{"}}"}} # https://cibuildwheel.readthedocs.io/en/stable/options/#requires-python CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" # Environment during wheel build @@ -95,13 +95,13 @@ jobs: # In the CIBW_BEFORE_ALL phase, we install libraries using the Sage distribution. # https://cibuildwheel.readthedocs.io/en/stable/options/#before-all run: | - "${{ steps.python.outputs.python-path }}" -m pip install pipx + "{{"${{"}} steps.python.outputs.python-path {{"}}"}}" -m pip install pipx export PATH=build/bin:$PATH export CIBW_BEFORE_ALL="( $(sage-print-system-package-command debian --yes --no-install-recommends install $(sage-get-system-packages debian $SPKGS)) || $(sage-print-system-package-command fedora --yes --no-install-recommends install $(sage-get-system-packages fedora $SPKGS | sed s/pkg-config/pkgconfig/)) || ( $(sage-print-system-package-command homebrew --yes --no-install-recommends install $(sage-get-system-packages homebrew $SPKGS)) || echo error ignored) ) && ./bootstrap && ./configure --enable-build-as-root && make -j4 V=0 $TARGETS_PRE" mkdir -p unpacked for pkg in {{cookiecutter.project_name}}; do (cd unpacked && tar xfz - ) < dist/$pkg*.tar.gz - "${{ steps.python.outputs.python-path }}" -m pipx run cibuildwheel==2.17.0 unpacked/$pkg* + "{{"${{"}} steps.python.outputs.python-path {{"}}"}}" -m pipx run cibuildwheel==2.17.0 unpacked/$pkg* done - uses: actions/upload-artifact@v3 @@ -116,7 +116,7 @@ jobs: if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') runs-on: ubuntu-latest env: - CAN_DEPLOY: ${{ secrets.SAGEMATH_PYPI_API_TOKEN != '' }} + CAN_DEPLOY: {{"${{"}} secrets.SAGEMATH_PYPI_API_TOKEN != '' {{"}}"}} steps: - uses: actions/download-artifact@v3 @@ -128,7 +128,7 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ - password: ${{ secrets.SAGEMATH_PYPI_API_TOKEN }} + password: {{"${{"}} secrets.SAGEMATH_PYPI_API_TOKEN {{"}}"}} packages_dir: wheelhouse/ skip_existing: true verbose: true From 807ea944930138cea0c54da8b47ddef07b4298d7 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 19 Mar 2024 23:26:52 -0700 Subject: [PATCH 09/14] sagemath-upstream-package-template: .github/workflows/dist.yml: Fix 'make -j' --- .../{{cookiecutter.project_name}}/.github/workflows/dist.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml index a259ac77c85..2c96da2c70e 100644 --- a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml @@ -97,7 +97,7 @@ jobs: run: | "{{"${{"}} steps.python.outputs.python-path {{"}}"}}" -m pip install pipx export PATH=build/bin:$PATH - export CIBW_BEFORE_ALL="( $(sage-print-system-package-command debian --yes --no-install-recommends install $(sage-get-system-packages debian $SPKGS)) || $(sage-print-system-package-command fedora --yes --no-install-recommends install $(sage-get-system-packages fedora $SPKGS | sed s/pkg-config/pkgconfig/)) || ( $(sage-print-system-package-command homebrew --yes --no-install-recommends install $(sage-get-system-packages homebrew $SPKGS)) || echo error ignored) ) && ./bootstrap && ./configure --enable-build-as-root && make -j4 V=0 $TARGETS_PRE" + export CIBW_BEFORE_ALL="( $(sage-print-system-package-command debian --yes --no-install-recommends install $(sage-get-system-packages debian $SPKGS)) || $(sage-print-system-package-command fedora --yes --no-install-recommends install $(sage-get-system-packages fedora $SPKGS | sed s/pkg-config/pkgconfig/)) || ( $(sage-print-system-package-command homebrew --yes --no-install-recommends install $(sage-get-system-packages homebrew $SPKGS)) || echo error ignored) ) && ./bootstrap && ./configure --enable-build-as-root --enable-fat-binary && MAKE=\"make -j6\" make V=0 $TARGETS_PRE" mkdir -p unpacked for pkg in {{cookiecutter.project_name}}; do (cd unpacked && tar xfz - ) < dist/$pkg*.tar.gz From b0f2894db2199d8ad012c572e70ea0416f61f39f Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 19 Mar 2024 23:27:04 -0700 Subject: [PATCH 10/14] pkgs/sage-project-cookiecutter/README.rst: Update instructions --- pkgs/sage-project-cookiecutter/README.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/sage-project-cookiecutter/README.rst b/pkgs/sage-project-cookiecutter/README.rst index 9467ebdb861..16ef45722b4 100644 --- a/pkgs/sage-project-cookiecutter/README.rst +++ b/pkgs/sage-project-cookiecutter/README.rst @@ -75,7 +75,8 @@ Creates in the existing ``PROJECT-DIRECTORY``: It can also be invoked as follows:: [alice@localhost PROJECT-DIRECTORY]$ (cd .. && pipx run cruft create \ - https://github.com/mkoeppe/sage --checkout sagemath-environment-cookiecutter \ + https://github.com/mkoeppe/sage \ + --checkout sagemath-environment-cookiecutter \ --directory="pkgs/sage-project-cookiecutter/sage_project_cookiecutter/upstream-package-template" \ --overwrite-if-exists) [1/1] Name of the project (directory name to create) (my-sage-project): PROJECT-DIRECTORY @@ -104,4 +105,5 @@ Updating a project :: - $ pipx run cruft update + [alice@localhost PROJECT-DIRECTORY]$ pipx run cruft update \ + --checkout sagemath-environment-cookiecutter From 5816c472e615479fda1af77e098a70a430a96d27 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 9 Jun 2024 00:14:58 -0700 Subject: [PATCH 11/14] sagemath-upstream-package-template: Update dist.yml --- .../.github/workflows/dist.yml | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml index 2c96da2c70e..66090bbaca5 100644 --- a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml @@ -24,7 +24,7 @@ jobs: run: | python3 -m pip install build python3 -m build --sdist - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: path: "dist/*.tar.gz" name: dist @@ -48,10 +48,10 @@ jobs: arch: x86_64 - os: ubuntu-latest arch: i686 - - os: macos-latest - arch: auto + - os: macos-13 + arch: x86_64 - os: macos-14 - arch: auto + arch: arm64 env: # SPKGs to install as system packages SPKGS: _bootstrap _prereq @@ -74,7 +74,7 @@ jobs: repository: sagemath/sage ref: develop - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: dist path: dist @@ -101,15 +101,16 @@ jobs: mkdir -p unpacked for pkg in {{cookiecutter.project_name}}; do (cd unpacked && tar xfz - ) < dist/$pkg*.tar.gz - "{{"${{"}} steps.python.outputs.python-path {{"}}"}}" -m pipx run cibuildwheel==2.17.0 unpacked/$pkg* + "{{"${{"}} steps.python.outputs.python-path {{"}}"}}" -m pipx run cibuildwheel==2.18.0 unpacked/$pkg* done - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: - name: wheels + name: {{"${{"}} matrix.os {{"}}"}}-{{"${{"}} matrix.arch {{"}}"}}-wheels path: ./wheelhouse/*.whl pypi-publish: + # This needs to be a separate job because pypa/gh-action-pypi-publish cannot run on macOS # https://github.com/pypa/gh-action-pypi-publish name: Upload wheels to PyPI needs: build_wheels @@ -119,10 +120,11 @@ jobs: CAN_DEPLOY: {{"${{"}} secrets.SAGEMATH_PYPI_API_TOKEN != '' {{"}}"}} steps: - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: - name: wheels + pattern: "*-*-wheels" path: wheelhouse + merge-multiple: true - name: Publish package distributions to PyPI uses: pypa/gh-action-pypi-publish@release/v1 From 73cb19a1a6056ee8362c64e72e31557330287e10 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 9 Jun 2024 21:05:10 -0700 Subject: [PATCH 12/14] sagemath-upstream-package-template: Update dist.yml to try alpine as well --- .../{{cookiecutter.project_name}}/.github/workflows/dist.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml index 66090bbaca5..c8ace58d5bf 100644 --- a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml @@ -97,7 +97,7 @@ jobs: run: | "{{"${{"}} steps.python.outputs.python-path {{"}}"}}" -m pip install pipx export PATH=build/bin:$PATH - export CIBW_BEFORE_ALL="( $(sage-print-system-package-command debian --yes --no-install-recommends install $(sage-get-system-packages debian $SPKGS)) || $(sage-print-system-package-command fedora --yes --no-install-recommends install $(sage-get-system-packages fedora $SPKGS | sed s/pkg-config/pkgconfig/)) || ( $(sage-print-system-package-command homebrew --yes --no-install-recommends install $(sage-get-system-packages homebrew $SPKGS)) || echo error ignored) ) && ./bootstrap && ./configure --enable-build-as-root --enable-fat-binary && MAKE=\"make -j6\" make V=0 $TARGETS_PRE" + export CIBW_BEFORE_ALL="( $(sage-print-system-package-command debian --yes --no-install-recommends install $(sage-get-system-packages debian $SPKGS)) || $(sage-print-system-package-command fedora --yes --no-install-recommends install $(sage-get-system-packages fedora $SPKGS | sed s/pkg-config/pkgconfig/)) || ( $(sage-print-system-package-command homebrew --yes --no-install-recommends install $(sage-get-system-packages homebrew $SPKGS)) || $(sage-print-system-package-command alpine --yes --no-install-recommends install $(sage-get-system-packages alpine $SPKGS)) || echo error ignored) ) && ./bootstrap && ./configure --enable-build-as-root --enable-fat-binary && MAKE=\"make -j6\" make V=0 $TARGETS_PRE" mkdir -p unpacked for pkg in {{cookiecutter.project_name}}; do (cd unpacked && tar xfz - ) < dist/$pkg*.tar.gz From 615332b9e0d01369a9f68f76988fed5abf086e42 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 29 Jun 2024 21:00:47 -0700 Subject: [PATCH 13/14] sagemath-upstream-package-template: Update dist.yml for linux-aarch64, musllinux --- .../.github/workflows/dist.yml | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml index c8ace58d5bf..0f8e7f1888d 100644 --- a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/dist.yml @@ -43,23 +43,25 @@ jobs: strategy: fail-fast: false matrix: + os: [ubuntu-latest] + arch: [x86_64, i686, aarch64] + build: [manylinux, musllinux] include: - - os: ubuntu-latest - arch: x86_64 - - os: ubuntu-latest - arch: i686 - os: macos-13 arch: x86_64 + build: macosx - os: macos-14 arch: arm64 + build: macosx env: # SPKGs to install as system packages SPKGS: _bootstrap _prereq # Non-Python packages to install as spkgs TARGETS_PRE: {{cookiecutter.project_name}}-build-deps + # + CIBW_BUILD: "*{{"${{"}} matrix.build {{"}}"}}*" # Disable building PyPy wheels on all platforms - # Disable musllinux until #33083 provides alpine package information - CIBW_SKIP: "pp* *-musllinux*" + CIBW_SKIP: "pp*" # CIBW_ARCHS: {{"${{"}} matrix.arch {{"}}"}} # https://cibuildwheel.readthedocs.io/en/stable/options/#requires-python @@ -74,6 +76,12 @@ jobs: repository: sagemath/sage ref: develop + - name: Set up QEMU + if: runner.os == 'Linux' && matrix.arch != 'x86_64' && matrix.arch != 'i686' + uses: docker/setup-qemu-action@v3 + with: + platforms: all + - uses: actions/download-artifact@v4 with: name: dist @@ -106,7 +114,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: {{"${{"}} matrix.os {{"}}"}}-{{"${{"}} matrix.arch {{"}}"}}-wheels + name: {{"${{"}} matrix.os {{"}}"}}-{{"${{"}} matrix.build {{"}}"}}-{{"${{"}} matrix.arch {{"}}"}}-wheels path: ./wheelhouse/*.whl pypi-publish: From 6fd32f4e7802b7692f1418f15038e9c32a1456f3 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Mon, 1 Jul 2024 18:17:30 -0700 Subject: [PATCH 14/14] sagemath-upstream-package-template: Add ci-sage.yml --- .../.github/workflows/ci-sage.yml | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/ci-sage.yml diff --git a/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/ci-sage.yml b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/ci-sage.yml new file mode 100644 index 00000000000..f08a4024f4a --- /dev/null +++ b/pkgs/sage-project-cookiecutter/sage_project_cookiecutter/sagemath-upstream-package-template/{{cookiecutter.project_name}}/.github/workflows/ci-sage.yml @@ -0,0 +1,105 @@ +name: Run Sage CI + +## This GitHub Actions workflow provides: +## +## - portability testing, by building and testing this project on many platforms +## (Linux variants, macOS) +## +## - continuous integration, by building and testing other software +## that depends on this project. +## +## It runs on every pull request and push of a tag to the GitHub repository. +## +## The testing can be monitored in the "Actions" tab of the GitHub repository. +## +## After all jobs have finished (or are canceled) and a short delay, +## tar files of all logs are made available as "build artifacts". +## +## This GitHub Actions workflow uses the portability testing framework +## of SageMath (https://www.sagemath.org/). For more information, see +## https://doc.sagemath.org/html/en/developer/portability_testing.html + +## The workflow consists of two jobs: +## +## - First, it builds a source distribution of the project +## and generates a script "update-pkgs.sh". It uploads them +## as a build artifact named upstream. +## +## - Second, it checks out a copy of the SageMath source tree. +## It downloads the upstream artifact and replaces the project's +## package in the SageMath distribution by the newly packaged one +## from the upstream artifact, by running the script "update-pkgs.sh". +## Then it builds a small portion of the Sage distribution. +## +## Many copies of the second step are run in parallel for each of the tested +## systems/configurations. + +on: + pull_request: + push: + tags: + - '*' + workflow_dispatch: + # Allow to run manually + +concurrency: + group: {{"${{"}} github.workflow {{"}}"}}-{{"${{"}} github.head_ref || github.run_id {{"}}"}} + cancel-in-progress: true + +env: + # Ubuntu packages to install so that the project's "make dist" can succeed + DIST_PREREQ: python3-pip + # Name of this project in the Sage distribution + SPKG: {{cookiecutter.project_name}} + REMOVE_PATCHES: "*" + +jobs: + + dist: + runs-on: ubuntu-latest + steps: + - name: Check out {{"${{"}} env.SPKG {{"}}"}} + uses: actions/checkout@v3 + with: + path: build/pkgs/{{"${{"}} env.SPKG {{"}}"}}/src + - name: Install prerequisites + run: | + sudo DEBIAN_FRONTEND=noninteractive apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install $DIST_PREREQ + python3 -m pip install --user build + - name: Run make dist, prepare upstream artifact + run: | + (cd build/pkgs/{{"${{"}} env.SPKG {{"}}"}}/src && python3 -m build --sdist) \ + && mkdir -p upstream && cp build/pkgs/{{"${{"}} env.SPKG {{"}}"}}/src/dist/*.tar.gz upstream/{{"${{"}} env.SPKG {{"}}"}}-git.tar.gz \ + && echo "sage-package create {{"${{"}} env.SPKG {{"}}"}} --version git --tarball {{"${{"}} env.SPKG {{"}}"}}-git.tar.gz --type=optional" > upstream/update-pkgs.sh \ + && if [ -n "{{"${{"}} env.REMOVE_PATCHES {{"}}"}}" ]; then echo "(cd ../build/pkgs/{{"${{"}} env.SPKG {{"}}"}}/patches && rm -f {{"${{"}} env.REMOVE_PATCHES {{"}}"}}; :)" >> upstream/update-pkgs.sh; fi \ + && ls -l upstream/ + - uses: actions/upload-artifact@v3 + with: + path: upstream + name: upstream + + linux: + uses: sagemath/sage/.github/workflows/docker.yml@develop + with: + # Sage distribution packages to build + targets: SAGE_CHECK=no SAGE_CHECK_PACKAGES={{cookiecutter.project_name}} {{cookiecutter.project_name}} + # Standard setting: Test the current beta release of Sage: + sage_repo: sagemath/sage + sage_ref: develop + upstream_artifact: upstream + # Docker targets (stages) to tag + docker_targets: "with-targets" + docker_push_repository: ghcr.io/{{"${{"}} github.repository {{"}}"}}/{{cookiecutter.project_name}} + needs: [dist] + + macos: + uses: sagemath/sage/.github/workflows/macos.yml@develop + with: + # Sage distribution packages to build + targets: SAGE_CHECK=no SAGE_CHECK_PACKAGES={{cookiecutter.project_name}} {{cookiecutter.project_name}} + # Standard setting: Test the current beta release of Sage: + sage_repo: sagemath/sage + sage_ref: develop + upstream_artifact: upstream + needs: [dist]