sagemath/sage

Upgrade setuptools, setuptools_scm, pip (2020-06), add package wheel; remove zope_interface

Closed this issue · 48 comments

Big upgrade steps, enabled by drop python 2 support.

Add new packages to satisfy dependencies:

These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5 (note #29033)

We adjust spkg-install of several packages by removing pyproject.toml to remove the need for more extensive build infrastructure. We disable the build of zope_interface (no longer needed, see #29754).

Tarballs: See checksums.ini [upstream_url]. (To configure Sage to download from the upstream URL, use ./configure --enable-download-from-upstream-url.)

Previous updates: #26969, #27886, #26008

CC: @vbraun @fchapoton @saraedum @slel @kiwifb @dimpase @jhpalmieri

Component: packages: standard

Author: Matthias Koeppe

Branch: 371ede6

Reviewer: Dima Pasechnik

Issue created by migration from https://trac.sagemath.org/ticket/29803

Author: Matthias Koeppe

New commits:

886693eUpgrade pip to 20.1.1
80374c5Upgrade setuptools to 47.1.1
50c6962Upgrade setuptools_scm to 4.1.2

Commit: 50c6962

Description changed:

--- 
+++ 
@@ -1 +1,3 @@
+Big upgrade steps, enabled by drop python 2 support.
 
+Previous updates: #26969, #27886.

Description changed:

--- 
+++ 
@@ -1,3 +1,3 @@
 Big upgrade steps, enabled by drop python 2 support.
 
-Previous updates: #26969, #27886.
+Previous updates: #26969, #27886, #26008

Description changed:

--- 
+++ 
@@ -1,3 +1,5 @@
 Big upgrade steps, enabled by drop python 2 support.
 
+Tarballs: See checksums.ini [upstream_url]
+
 Previous updates: #26969, #27886, #26008
comment:5

pip installation fails, for example on ubuntu-bionic-standard (https://github.com/mkoeppe/sage/runs/741110905)

     Preparing wheel metadata: finished with status 'error'
ERROR: Command errored out with exit status 1: /sage/local/bin/python3 /sage/local/var/tmp/sage/build/pip-20.1.1/src/src/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp32gsdf31 Check the logs for full command output.
comment:6

Seems we need to add the wheel package

Description changed:

--- 
+++ 
@@ -1,5 +1,13 @@
 Big upgrade steps, enabled by drop python 2 support.
+
+* https://pypi.org/project/wheel/ 0.34.2
+* https://pypi.org/project/pip/   20.1.1
+* https://pypi.org/project/setuptools/  47.1.1
+* https://pypi.org/project/setuptools-scm/  4.1.2
+
+These are the latest versions; all claim to support Python >= 3.5.
 
 Tarballs: See checksums.ini [upstream_url]
 
 Previous updates: #26969, #27886, #26008
+

Description changed:

--- 
+++ 
@@ -5,7 +5,7 @@
 * https://pypi.org/project/setuptools/  47.1.1
 * https://pypi.org/project/setuptools-scm/  4.1.2
 
-These are the latest versions; all claim to support Python >= 3.5.
+These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5.
 
 Tarballs: See checksums.ini [upstream_url]
 

Changed commit from 50c6962 to 10a2bac

Branch pushed to git repo; I updated commit sha1. New commits:

7c81b8cbuild/pkgs/wheel: New
70378edbuild/pkgs/pip/dependencies: Add wheel, simplify $(PYTHON) python3 to $(PYTHON)
10a2bacbuild/pkgs/setuptools, build/pkgs/pip: Remove python2 support from dependencies, install scripts

Description changed:

--- 
+++ 
@@ -5,7 +5,7 @@
 * https://pypi.org/project/setuptools/  47.1.1
 * https://pypi.org/project/setuptools-scm/  4.1.2
 
-These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5.
+These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5 (note #29033)
 
 Tarballs: See checksums.ini [upstream_url]
 
comment:12

On debian-bullseye-standard:

  [pkgconfig-1.5.1]     File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
  [pkgconfig-1.5.1]       return _bootstrap._gcd_import(name[level:], package, level)
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  [pkgconfig-1.5.1]     File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
  [pkgconfig-1.5.1]   ModuleNotFoundError: No module named 'poetry'
comment:13

pkgconfig is at the most current version. Looks like giving it a modern setuptools causes it to demand more.

Description changed:

--- 
+++ 
@@ -1,13 +1,17 @@
 Big upgrade steps, enabled by drop python 2 support.
 
-* https://pypi.org/project/wheel/ 0.34.2
 * https://pypi.org/project/pip/   20.1.1
 * https://pypi.org/project/setuptools/  47.1.1
 * https://pypi.org/project/setuptools-scm/  4.1.2
 
+Add new packages to satisfy dependencies:
+
+* https://pypi.org/project/wheel/ 0.34.2
+* https://pypi.org/project/poetry/ 1.0.8
+
 These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5 (note #29033)
 
-Tarballs: See checksums.ini [upstream_url]
+Tarballs: See checksums.ini [upstream_url]. (To configure Sage to download from the upstream URL, use `./configure --enable-download-from-upstream-url`.)
 
 Previous updates: #26969, #27886, #26008
 

Description changed:

--- 
+++ 
@@ -7,7 +7,7 @@
 Add new packages to satisfy dependencies:
 
 * https://pypi.org/project/wheel/ 0.34.2
-* https://pypi.org/project/poetry/ 1.0.8
+* https://pypi.org/project/poetry/ 1.0.8 ????
 
 These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5 (note #29033)
 
comment:15

poetry, of course, has a LONG list of additional dependencies... https://github.com/python-poetry/poetry/blob/master/pyproject.toml

comment:16

We will postpone adding poetry to #29810 and instead patch pkgconfig so it installs more prosaically using setuptools.

Description changed:

--- 
+++ 
@@ -7,7 +7,6 @@
 Add new packages to satisfy dependencies:
 
 * https://pypi.org/project/wheel/ 0.34.2
-* https://pypi.org/project/poetry/ 1.0.8 ????
 
 These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5 (note #29033)
 
comment:18

See #28883 for the last pkgconfig update, which commented on the issues with poetry already.

Branch pushed to git repo; I updated commit sha1. New commits:

6755adbbuild/pkgs/pkgconfig/spkg-install.in: Remove pyproject.toml so that pip installs using setup.py

Changed commit from 10a2bac to 6755adb

comment:20

Tests run again at ​https://github.com/mkoeppe/sage/pull/36/checks

comment:21

Several failures (for example in https://github.com/mkoeppe/sage/runs/744000563):

  [entrypoints-0.3]   ModuleNotFoundError: No module named 'flit'
  [testpath-0.4.2]   ModuleNotFoundError: No module named 'flit'
  [zope_interface-4.6.0]   ImportError: cannot import name 'Feature' from 'setuptools' (/sage/local/lib/python3.7/site-packages/setuptools/__init__.py)
  [terminado-0.8.1]   ModuleNotFoundError: No module named 'flit'
comment:22

Possible that zope_interface can be removed (#29754)

comment:24

entrypoints is current, https://pypi.org/project/testpath/ can be upgraded to 0.4.4, https://pypi.org/project/terminado/ to 0.8.3

Branch pushed to git repo; I updated commit sha1. New commits:

29327d3build/pkgs/entrypoints: Do not provide setup.py, not needed for entrypoints 0.3
bcc79a5build/pkgs/entrypoints/spkg-install.in: Remove pyproject.toml so that setup.py is used
361b98bbuild/pkgs/terminado/spkg-install.in: Remove pyproject.toml so that setup.py is used
5040d7ebuild/pkgs/testpath/spkg-install.in: Remove pyproject.toml so that setup.py is used

Changed commit from 6755adb to 5040d7e

Changed commit from 5040d7e to 371ede6

Branch pushed to git repo; I updated commit sha1. New commits:

371ede6build/pkgs/zope_interface: Change to a dummy script package

Description changed:

--- 
+++ 
@@ -10,6 +10,8 @@
 
 These are the latest versions as of 2020-06-05; all claim to support Python >= 3.5 (note #29033)
 
+We adjust `spkg-install` of several packages by removing `pyproject.toml` to remove the need for more extensive build infrastructure. We disable the build of `zope_interface` (no longer needed, see #29754).
+
 Tarballs: See checksums.ini [upstream_url]. (To configure Sage to download from the upstream URL, use `./configure --enable-download-from-upstream-url`.)
 
 Previous updates: #26969, #27886, #26008
comment:28

Builds fine on homebrew-macos-standard. Ready for review.

Reviewer: Dima Pasechnik

comment:29

lgtm

comment:30

Thanks!

Changed commit from 371ede6 to none

comment:32

Not a big deal, but I'm curious: with pip, why only the change to set versions=3, instead of removing the loop for vers in $versions ... and replacing $vers with 3 in spkg-install.in?

comment:33

I like to keep diffs minimal. Also minor uncertainty what the python binary will be called when python 4.0 comes out...

comment:34

I think that this ticket is leading to the following messages in the sagetex install log:

Successfully built sagetex
Installing collected packages: sagetex
  Created temporary directory: /private/var/folders/cp/n8wtqs490tq5psknff1hv9qr0000gn/T/pip-unpacked-wheel-hw7nz29q
  *** Error compiling '/private/var/folders/cp/n8wtqs490tq5psknff1hv9qr0000gn/T/pip-unpacked-wheel-hw7nz29q/sagetex-3.4.data/data/share/texmf/tex/latex/sagetex/extractsagecode.py'...
    File "/private/var/folders/cp/n8wtqs490tq5psknff1hv9qr0000gn/T/pip-unpacked-wheel-hw7nz29q/sagetex-3.4.data/data/share/texmf/tex/latex/sagetex/extractsagecode.py", line 48
      except getopt.GetoptError, err:
                               ^
  SyntaxError: invalid syntax
  
  *** Error compiling '/private/var/folders/cp/n8wtqs490tq5psknff1hv9qr0000gn/T/pip-unpacked-wheel-hw7nz29q/sagetex-3.4.data/data/share/texmf/tex/latex/sagetex/makestatic.py'...
    File "/private/var/folders/cp/n8wtqs490tq5psknff1hv9qr0000gn/T/pip-unpacked-wheel-hw7nz29q/sagetex-3.4.data/data/share/texmf/tex/latex/sagetex/makestatic.py", line 48
      except getopt.GetoptError, err:
                               ^
  SyntaxError: invalid syntax
  

Successfully installed sagetex-3.4
Removed build tracker: '/private/var/folders/cp/n8wtqs490tq5psknff1hv9qr0000gn/T/pip-req-tracker-3d0gjhof'
Removing old SageTex version(s)

real	0m3.793s
user	0m1.162s
sys	0m0.458s
Copying package files from temporary location /Users/palmieri/Desktop/Sage_stuff/sage_builds/TESTING/sage-9.2.beta3/local/var/tmp/sage/build/sagetex-3.4/inst to /Users/palmieri/Desktop/Sage_stuff/sage_builds/TESTING/sage-9.2.beta3/local
Successfully installed sagetex-3.4
Deleting temporary build directory
/Users/palmieri/Desktop/Sage_stuff/sage_builds/TESTING/sage-9.2.beta3/local/var/tmp/sage/build/sagetex-3.4
Finished installing sagetex-3.4.spkg

Is it the new wheel package?

(This is on OS X using the system Python, version 3.7.7.)

comment:35

pip likes to install via bdist_wheel now. Something is getting compiled that was not compiled before.

I think it reveals that the sagetex code is not compatible with python 3.

comment:36

I am going to make a new release of sagetex soon.

comment:37

Replying to @dimpase:

I am going to make a new release of sagetex soon.

Good, that should take care of it. I'm surprised that sagetex still works, given these syntax errors.

comment:38

probably it's from some file that we normally didn't install, or perhaps it was using some compatibility kludge that is now gone.