Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
This commit resolves recent catastrophic upstream breakage introduced by
setuptools 50.0 and pip 22.2.0, the newest stable release of everyone's
least favourite build tools. Sadly, doing so requires temporarily
disabling project-wide support for the tooling-agnostic "pyproject.toml"
file -- which setuptools and pip continually demonstrate that they are
unwilling to sanely support.

## Issues Resolved

* #2, detailed above.
* #3, detailed below.
* pypa/setuptools#2353 and pypa/pip#6264, resolving recent catastrophic
  upstream breakage introduced by setuptools 50.0 and pip 22.2.0, the
  newest stable release of everyone's least favourite build tools.
  Sadly, doing so requires temporarily disabling project-wide support
  for the tooling-agnostic `pyproject.toml` file -- which setuptools and
  pip continually demonstrate that they are unwilling to sanely support.

(Unctuous tempestuousness of pestilence!)
  • Loading branch information
leycec committed Sep 10, 2020
1 parent 57d259a commit c45925e
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 4 deletions.
2 changes: 1 addition & 1 deletion betse_setup/buputil.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ def sanitize_classifiers(
# For each minor version of Python 3.x supported by this application,
# formally classify this version as such.
for python_version_minor in range(
python_version_min_parts[1], python_version_minor_max):
python_version_min_parts[1], python_version_minor_max + 1):
classifiers_sane.append(
'Programming Language :: Python :: {}.{}'.format(
PYTHON_VERSION_MAJOR, python_version_minor,))
Expand Down
3 changes: 1 addition & 2 deletions doc/rst/RELEASE.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
Releasing
=========

Stable releases of BETSE are produced with a rigorous procedure reminiscent to
that of most open-source software: *namely,*
Stable releases are manually published with a rigorous procedure. The tl;dr is:

#. A stable commit is **tagged** with an annotated Git tag.
#. That commit is **packaged** into a compressed source tarball.
Expand Down
9 changes: 9 additions & 0 deletions pyproject.toml → pyproject.toml.old
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@
# "Clarifying PEP 518 (a.k.a. pyproject.toml)", a human-readable article from
# one of the principal authors of the "pyproject.toml" standard.

# ....................{ TODO }....................
#FIXME: Despite behaving as expceted for several years, this file *MUST* now be
#temporarily disabled by renaming it away from "pyproject.toml". Why? Because
#both "pip" and "setuptools" have no idea how to implement support for this
#file properly. Both increasingly break projects defining this file (including
#this one), effectively rendering this file malicious. See also:
# https://github.com/pypa/setuptools/issues/2353
# https://github.com/pypa/pip/issues/6264

# ....................{ BUILDING }....................
[build-system]

Expand Down
15 changes: 14 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
#coupled to a snapd + systemd + AppArmor workflow, which self-limits the number
#of Linux distributions and configurations usable for snaps. See:
# https://www.fossmint.com/appimage-flatpak-and-snap-from-a-software-deployment-perspective

#FIXME: Consider wrapping on Windows with "pynsist", a framework for generating
#Windows installers bundling Python applications complete with a Python
#interpreter and requisite packages.
Expand All @@ -61,6 +60,20 @@
#integrating Qt, PySide2, PyInstaller, NSIS (under Windows), and ".deb" (under
#Ubuntu) for automated packaging of PySide2 applications. See also:
# https://build-system.fman.io/
#FIXME: All of the above now seems a bit non-standard, poorly supported, and
#probably overkill. Instead, what we probably want to do is:
#
#* Compile BETSE and BETSEE from pure-Python into multiple platform-specific
# executables with a Python compiler, of which there really exists just one:
# * Nuitka, which looks ridiculously awesome. Basically, it's PyInstaller on
# steroids, because it does everything PyInstaller (e.g., recursive import
# discovery) does as well as compiling your entire app into C. "Oh, lawks!"
#
#If Nuitka fails, note that the "new guy on the PyInstaller block" is
#PyOxidizer, which (as the name implies) is inspired by Rust-style packaging.
#Basically, it does everything that PyInstaller does except it unpacks embedded
#packages and modules into memory rather than a temporary location on the local
#filesystem, which then produces dramatic efficiency gains. *shrug*

# ....................{ KLUDGES }....................
# Explicitly register all files and subdirectories of the root directory
Expand Down

0 comments on commit c45925e

Please sign in to comment.