On 11 February 2024 22:47:24 GMT, Matthias Koeppe <matthiaskoe...@gmail.com>
wrote:
>On Sunday, February 11, 2024 at 1:46:40 PM UTC-8 Matthias Koeppe wrote:
>
>I'll make an attempt to quantify this cost
>
>
>Here's an illustration of the workflow for making python_build a standard
>"wheel" package, as proposed in
>https://groups.google.com/g/sage-devel/c/MIU-xo9b7pc:
What you outlined is the initial one-time cost. There is also a cost of
maintenance, which eventually gets bigger than the initial cost: the thing gets
outdated, its dependencies get outdated, this all requires updates, tests,
conflict resolutions ---something that you get largely for free if you let go
of the package dependency micromanagement, relying instead on the Python
universe out there to do the job.
>
>
>*$ git checkout -b python_build_standard upstream/develop*branch
>'python_build_standard' set up to track 'upstream/develop'.
>Switched to a new branch 'python_build_standard'
>
>*$ ls build/pkgs/python_build*SPKG.rst dependencies distros
> requirements.txt type
>
>The package already exists as a "pip" package (requirements.txt). Let's
>re-create it as a standard "wheel" package.
>
>
>
>*$ mv build/pkgs/python_build build/pkgs/build$ ./sage -package create
>build --pypi --type standard*Downloading tarball from
>https://pypi.io/packages/py3/b/build/build-1.0.3-py3-none-any.whl to
>.../upstream/build-1.0.3-py3-none-any.whl
>[......................................................................]
>
>
>*$ mv build/pkgs/build build/pkgs/python_build$ ls
>build/pkgs/python_build*SPKG.rst
> checksums.ini dependencies distros
> install-requires.txt package-version.txt requirements.txt type
>
>*$ git rm -f build/pkgs/python_build/requirements.txt*rm
>'build/pkgs/python_build/requirements.txt'
>
>Now, after removing requirements.txt, it's a wheel package. Let's review
>the changes that "sage -package create" made.
>
>
>*$ git --no-pager diff build/pkgs/python_build/dependencies*
>diff --git a/build/pkgs/python_build/dependencies
>b/build/pkgs/python_build/dependencies
>index b72a6d1c776..47296a7bace 100644
>--- a/build/pkgs/python_build/dependencies
>+++ b/build/pkgs/python_build/dependencies
>@@ -1,4 +1,4 @@
>- pyparsing tomli packaging | $(PYTHON_TOOLCHAIN) $(PYTHON)
>+ | $(PYTHON_TOOLCHAIN) $(PYTHON)
>
> ----------
> All lines of this file are ignored except the first.
>
>Our old version was better, go back to it. (The script "sage -package
>create" does not know how to find the
>dependencies; https://github.com/sagemath/sage/pull/36740 prepares an
>improvement, needs review.)
>
>
>*$ git checkout -- build/pkgs/python_build/dependencies*
>
>Commit the changes:
>
>
>
>*$ git add build/pkgs/python_build$ git commit -m "build/pkgs/python_build:
>Change to a normal standard package"*[python_build_standard 43f6b2b8ef9]
>build/pkgs/python_build: Change to a normal standard package
> 4 files changed, 7 insertions(+), 1 deletion(-)
> create mode 100644 build/pkgs/python_build/checksums.ini
> rename build/pkgs/python_build/{requirements.txt => install-requires.txt}
>(100%)
> create mode 100644 build/pkgs/python_build/package-version.txt
>
>Test it:
>
>
>*$ make python_build*make -j16 build/make/Makefile --stop
>./bootstrap -d
>[...]
>rm -rf config/install-sh config/compile config/config.guess
>config/config.sub config/missing configure build/make/Makefile-auto.in
>make --no-print-directory python_build-SAGE_VENV-no-deps
>[python_build-1.0.3] Using cached file
>.../upstream/build-1.0.3-py3-none-any.whl
>[python_build-1.0.3] python_build-1.0.3
>[python_build-1.0.3] ====================================================
>[python_build-1.0.3] Setting up build directory for python_build-1.0.3
>[...]
>[python_build-1.0.3] Using pip 23.3.1 from
>.../local/var/lib/sage/venv-python3.11/lib/python3.11/site-packages/pip
>(python 3.11)
>[python_build-1.0.3] Looking in links:
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/wheels
>[python_build-1.0.3] Processing
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/wheels/build-1.0.3-py3-none-any.whl
>
>(from -r
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/scripts/python_build/spkg-requirements.txt
>
>(line 1))
>[python_build-1.0.3] Requirement already satisfied: packaging>=19.0 in
>.../local/var/lib/sage/venv-python3.11/lib/python3.11/site-packages (from
>build@
>file://.../local/var/lib/sage/venv-python3.11/var/lib/sage/wheels/build-1.0.3-py3-none-any.whl->-r
>
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/scripts/python_build/spkg-requirements.txt
>
>(line 1)) (23.2)
>[python_build-1.0.3] Requirement already satisfied: pyproject_hooks in
>.../local/var/lib/sage/venv-python3.11/lib/python3.11/site-packages (from
>build@
>file://.../local/var/lib/sage/venv-python3.11/var/lib/sage/wheels/build-1.0.3-py3-none-any.whl->-r
>
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/scripts/python_build/spkg-requirements.txt
>
>(line 1)) (1.0.0)
>[python_build-1.0.3] Installing collected packages: build
>[python_build-1.0.3] changing mode of
>.../local/var/lib/sage/venv-python3.11/bin/pyproject-build to 755
>[python_build-1.0.3] Successfully installed build-1.0.3
>[python_build-1.0.3] Successfully installed python_build-1.0.3
>[...]
>Sage build/upgrade complete!
>
>It did not complain about dependencies, so we seem to be good. But the
>"pyproject_hooks" that it was happy to find comes from the previous
>installation, we don't have it as a package. Let's create it as a standard
>package.
>
>
>*$ ./sage -package create pyproject_hooks --pypi --type standard*Downloading
>tarball from
>https://pypi.io/packages/py3/p/pyproject_hooks/pyproject_hooks-1.0.0-py3-none-any.whl
>
>to .../upstream/pyproject_hooks-1.0.0-py3-none-any.whl
>[......................................................................]
>
>*$ make pyproject_hooks*make -j16 build/make/Makefile --stop
>./bootstrap -d
>[...]
>make --no-print-directory pyproject_hooks-SAGE_VENV-no-deps
>[pyproject_hooks-1.0.0] Using cached file
>.../upstream/pyproject_hooks-1.0.0-py3-none-any.whl
>[pyproject_hooks-1.0.0] pyproject_hooks-1.0.0
>[...]
>[pyproject_hooks-1.0.0] Found existing installation: pyproject_hooks 1.0.0
>[pyproject_hooks-1.0.0] Uninstalling pyproject_hooks-1.0.0:
>[pyproject_hooks-1.0.0] Successfully uninstalled pyproject_hooks-1.0.0
>[pyproject_hooks-1.0.0] Using pip 23.3.1 from
>.../local/var/lib/sage/venv-python3.11/lib/python3.11/site-packages/pip
>(python 3.11)
>[pyproject_hooks-1.0.0] Looking in links:
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/wheels
>[pyproject_hooks-1.0.0] Processing
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/wheels/pyproject_hooks-1.0.0-py3-none-any.whl
>
>(from -r
>.../local/var/lib/sage/venv-python3.11/var/lib/sage/scripts/pyproject_hooks/spkg-requirements.txt
>
>(line 1))
>[pyproject_hooks-1.0.0] Installing collected packages: pyproject_hooks
>[pyproject_hooks-1.0.0] Successfully installed pyproject_hooks-1.0.0
>[...]
>Sage build/upgrade complete!
>
>No more dependencies to take care of, we are done.
>
>
>
>*$ git add build/pkgs/pyproject_hooks$ git commit -m
>"build/pkgs/pyproject_hooks: New, python_build
>dependency"*[python_build_standard
>58ab4c838e3] build/pkgs/pyproject_hooks: New, python_build dependency
> 6 files changed, 28 insertions(+)
> create mode 100644 build/pkgs/pyproject_hooks/SPKG.rst
> create mode 100644 build/pkgs/pyproject_hooks/checksums.ini
> create mode 100644 build/pkgs/pyproject_hooks/dependencies
> create mode 100644 build/pkgs/pyproject_hooks/install-requires.txt
> create mode 100644 build/pkgs/pyproject_hooks/package-version.txt
> create mode 100644 build/pkgs/pyproject_hooks/type
>
>*$ git push -u origin HEAD*Enumerating objects: 22, done.
>Counting objects: 100% (22/22), done.
>Delta compression using up to 12 threads
>Compressing objects: 100% (14/14), done.
>Writing objects: 100% (18/18), 1.92 KiB | 163.00 KiB/s, done.
>Total 18 (delta 6), reused 7 (delta 0), pack-reused 0
>remote: Resolving deltas: 100% (6/6), completed with 3 local objects.
>remote:
>remote: Create a pull request for 'python_build_standard' on GitHub by
>visiting:
>remote: https://github.com/mkoeppe/sage/pull/new/python_build_standard
>remote:
>To https://github.com/mkoeppe/sage.git
> * [new branch] HEAD -> python_build_standard
>branch 'python_build_standard' set up to track
>'origin/python_build_standard'.
>
>(That's https://github.com/sagemath/sage/pull/37300)
>
>
>
>
>
--
You received this message because you are subscribed to the Google Groups
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sage-devel/83CD72F5-9BAC-4B9F-96C6-CFA337E6ECB6%40gmail.com.