PyOpenGL-glut-binaries 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. pyopengl_glut_binaries-1.0.0/LICENSE +80 -0
  2. pyopengl_glut_binaries-1.0.0/PKG-INFO +101 -0
  3. pyopengl_glut_binaries-1.0.0/README.md +73 -0
  4. pyopengl_glut_binaries-1.0.0/pyproject.toml +106 -0
  5. pyopengl_glut_binaries-1.0.0/setup.cfg +4 -0
  6. pyopengl_glut_binaries-1.0.0/setup.py +49 -0
  7. pyopengl_glut_binaries-1.0.0/src/PyOpenGL_glut_binaries.egg-info/PKG-INFO +101 -0
  8. pyopengl_glut_binaries-1.0.0/src/PyOpenGL_glut_binaries.egg-info/SOURCES.txt +30 -0
  9. pyopengl_glut_binaries-1.0.0/src/PyOpenGL_glut_binaries.egg-info/dependency_links.txt +1 -0
  10. pyopengl_glut_binaries-1.0.0/src/PyOpenGL_glut_binaries.egg-info/requires.txt +9 -0
  11. pyopengl_glut_binaries-1.0.0/src/PyOpenGL_glut_binaries.egg-info/top_level.txt +1 -0
  12. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/GLE_WIN32_README.txt +6 -0
  13. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut32.vc10.dll +0 -0
  14. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut32.vc14.dll +0 -0
  15. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut32.vc9.dll +0 -0
  16. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut64.vc10.dll +0 -0
  17. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut64.vc14.dll +0 -0
  18. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut64.vc9.dll +0 -0
  19. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut_COPYING.txt +27 -0
  20. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/freeglut_README.txt +106 -0
  21. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle32.vc10.dll +0 -0
  22. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle32.vc14.dll +0 -0
  23. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle32.vc9.dll +0 -0
  24. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle64.vc10.dll +0 -0
  25. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle64.vc14.dll +0 -0
  26. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle64.vc9.dll +0 -0
  27. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle_AUTHORS +9 -0
  28. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle_COPYING +368 -0
  29. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/DLLS/gle_COPYING.src +68 -0
  30. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/__init__.py +58 -0
  31. pyopengl_glut_binaries-1.0.0/src/pyopengl_glut_binaries/py.typed +0 -0
  32. pyopengl_glut_binaries-1.0.0/tests/test_what_the_package_carries.py +146 -0
@@ -0,0 +1,80 @@
1
+ This licence covers the packaging in this distribution. The libraries it
2
+ carries are third-party works under their own terms, reproduced at the end of
3
+ this file and shipped in full beside the binaries themselves, in
4
+ src/pyopengl_glut_binaries/DLLS/.
5
+
6
+ PyOpenGL-glut-binaries License
7
+
8
+ Copyright (c) 2026, Michael C. Fletcher and Contributors
9
+ All rights reserved.
10
+
11
+ Redistribution and use in source and binary forms, with or without
12
+ modification, are permitted provided that the following conditions
13
+ are met:
14
+
15
+ Redistributions of source code must retain the above copyright
16
+ notice, this list of conditions and the following disclaimer.
17
+
18
+ Redistributions in binary form must reproduce the above
19
+ copyright notice, this list of conditions and the following
20
+ disclaimer in the documentation and/or other materials
21
+ provided with the distribution.
22
+
23
+ The name of Michael C. Fletcher, or the name of any Contributor,
24
+ may not be used to endorse or promote products derived from this
25
+ software without specific prior written permission.
26
+
27
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
30
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
31
+ COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
32
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
33
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
37
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
38
+ OF THE POSSIBILITY OF SUCH DAMAGE.
39
+
40
+ --------------------------------------------------------------------------
41
+
42
+ This distribution redistributes builds of two third-party libraries. Their
43
+ own terms follow; the full licence files ship beside the binaries, in
44
+ src/pyopengl_glut_binaries/DLLS/.
45
+
46
+ FreeGLUT (GL Utility Toolkit) is licensed under the MIT/X-Consortium License,
47
+ in full in freeglut_COPYING.txt:
48
+
49
+ Freeglut code without an explicit copyright is covered by the following
50
+ copyright:
51
+
52
+ Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
53
+ Permission is hereby granted, free of charge, to any person obtaining a copy
54
+ of this software and associated documentation files (the "Software"), to deal
55
+ in the Software without restriction, including without limitation the rights
56
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
57
+ copies or substantial portions of the Software.
58
+
59
+ The above copyright notice and this permission notice shall be included in
60
+ all copies or substantial portions of the Software.
61
+
62
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
63
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
64
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
65
+ PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
66
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
67
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
68
+
69
+ Except as contained in this notice, the name of Pawel W. Olszta shall not be
70
+ used in advertising or otherwise to promote the sale, use or other dealings
71
+ in this Software without prior written authorization from Pawel W. Olszta.
72
+
73
+ GLE (GL Tubing and Extrusion) is licensed under the IBM standard example
74
+ source code licence, in full in gle_COPYING.src, with gle_COPYING recording
75
+ that the recipient may instead take it under the GPL. Copyright notice:
76
+
77
+ This software is owned by International Business Machines Corporation
78
+ ("IBM"), or its subsidiaries or IBM's suppliers, and is copyrighted and
79
+ licensed, not sold. IBM retains title to the software, and grants you a
80
+ nonexclusive license for the software.
@@ -0,0 +1,101 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyOpenGL-glut-binaries
3
+ Version: 1.0.0
4
+ Summary: Prebuilt Windows freeglut and GLE libraries for PyOpenGL
5
+ Author-email: "Mike C. Fletcher" <mcfletch@vrplumber.com>
6
+ License-Expression: BSD-3-Clause
7
+ Project-URL: Homepage, https://github.com/mcfletch/pyopengl-glut-binaries
8
+ Project-URL: Repository, https://github.com/mcfletch/pyopengl-glut-binaries
9
+ Project-URL: Issues, https://github.com/mcfletch/pyopengl/issues
10
+ Keywords: OpenGL,GLUT,freeglut,GLE,PyOpenGL,Windows
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: Microsoft :: Windows
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
17
+ Requires-Python: >=3.9
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Provides-Extra: test
21
+ Requires-Dist: pytest; extra == "test"
22
+ Provides-Extra: dev
23
+ Requires-Dist: pyopengl-glut-binaries[test]; extra == "dev"
24
+ Requires-Dist: mypy; extra == "dev"
25
+ Requires-Dist: ruff; extra == "dev"
26
+ Requires-Dist: build; extra == "dev"
27
+ Dynamic: license-file
28
+
29
+ # PyOpenGL-glut-binaries
30
+
31
+ Prebuilt Windows freeglut and GLE libraries for [PyOpenGL](
32
+ https://github.com/mcfletch/pyopengl).
33
+
34
+ `OpenGL.GLUT` and `OpenGL.GLE` wrap two C libraries that Windows does not
35
+ ship. This distribution carries builds of both, so a Windows user gets them
36
+ by asking:
37
+
38
+ ```
39
+ pip install PyOpenGL[glut]
40
+ ```
41
+
42
+ Nothing to call and nothing to configure: PyOpenGL finds the directory itself.
43
+ A freeglut the *system* provides still wins over these, because a user who
44
+ installed their own meant it.
45
+
46
+ ## Why it is a package of its own
47
+
48
+ The same builds shipped inside PyOpenGL itself, in every wheel on every
49
+ platform, so a Linux server rendering headlessly through EGL downloaded six
50
+ freeglut builds it could never load. As a separate, platform-tagged
51
+ distribution they reach the machines that can use them and no others, and a
52
+ scanner that objects to a decade-old vendored binary objects to a package only
53
+ GLUT users install rather than to PyOpenGL.
54
+
55
+ ## What is here
56
+
57
+ Six builds of each library, because PyOpenGL asks for one exact name composed
58
+ from the running interpreter's word size and compiler generation:
59
+
60
+ | | 32-bit | 64-bit |
61
+ |---|---|---|
62
+ | **vc9** (Visual Studio 2008) | `freeglut32.vc9.dll`, `gle32.vc9.dll` | `freeglut64.vc9.dll`, `gle64.vc9.dll` |
63
+ | **vc10** (Visual Studio 2010) | `freeglut32.vc10.dll`, `gle32.vc10.dll` | `freeglut64.vc10.dll`, `gle64.vc10.dll` |
64
+ | **vc14** (Visual Studio 2015 and later) | `freeglut32.vc14.dll`, `gle32.vc14.dll` | `freeglut64.vc14.dll`, `gle64.vc14.dll` |
65
+
66
+ Both the `win32` and the `win_amd64` wheel carry all twelve, along with the
67
+ upstream licence and readme files. The word sizes are not split between the
68
+ two wheels: a split would halve the download and is a change to make on its
69
+ own, where a regression in it is attributable.
70
+
71
+ ## Using it directly
72
+
73
+ PyOpenGL is the intended caller, but the path is public:
74
+
75
+ ```python
76
+ from pyopengl_glut_binaries import DLL_DIRECTORY
77
+ ```
78
+
79
+ `BUILDS` lists the base names above and `LIBRARIES` says where each library
80
+ came from.
81
+
82
+ ## Licensing
83
+
84
+ The packaging is BSD-licensed; see `LICENSE`. The libraries are third-party
85
+ works under their own terms, which ship beside them in
86
+ `src/pyopengl_glut_binaries/DLLS/`:
87
+
88
+ - **freeglut** — 3.0.0-1.mp for MSVC, Martin Payne's build.
89
+ [freeglut](http://freeglut.sourceforge.net/) upstream publishes source
90
+ rather than Windows binaries. X-Consortium licence, in
91
+ `freeglut_COPYING.txt`.
92
+ - **GLE** — the tubing and extrusion library, built as a Windows DLL. See
93
+ `gle_COPYING`, `gle_COPYING.src` and `gle_AUTHORS`.
94
+
95
+ ## Releases
96
+
97
+ A push to `main` runs the tests; if they are green and `__version__` in
98
+ `src/pyopengl_glut_binaries/__init__.py` is not already on PyPI, the wheels and
99
+ the sdist are built and published. Bumping the version is what cuts a release.
100
+
101
+ Issues go to [the PyOpenGL tracker](https://github.com/mcfletch/pyopengl/issues).
@@ -0,0 +1,73 @@
1
+ # PyOpenGL-glut-binaries
2
+
3
+ Prebuilt Windows freeglut and GLE libraries for [PyOpenGL](
4
+ https://github.com/mcfletch/pyopengl).
5
+
6
+ `OpenGL.GLUT` and `OpenGL.GLE` wrap two C libraries that Windows does not
7
+ ship. This distribution carries builds of both, so a Windows user gets them
8
+ by asking:
9
+
10
+ ```
11
+ pip install PyOpenGL[glut]
12
+ ```
13
+
14
+ Nothing to call and nothing to configure: PyOpenGL finds the directory itself.
15
+ A freeglut the *system* provides still wins over these, because a user who
16
+ installed their own meant it.
17
+
18
+ ## Why it is a package of its own
19
+
20
+ The same builds shipped inside PyOpenGL itself, in every wheel on every
21
+ platform, so a Linux server rendering headlessly through EGL downloaded six
22
+ freeglut builds it could never load. As a separate, platform-tagged
23
+ distribution they reach the machines that can use them and no others, and a
24
+ scanner that objects to a decade-old vendored binary objects to a package only
25
+ GLUT users install rather than to PyOpenGL.
26
+
27
+ ## What is here
28
+
29
+ Six builds of each library, because PyOpenGL asks for one exact name composed
30
+ from the running interpreter's word size and compiler generation:
31
+
32
+ | | 32-bit | 64-bit |
33
+ |---|---|---|
34
+ | **vc9** (Visual Studio 2008) | `freeglut32.vc9.dll`, `gle32.vc9.dll` | `freeglut64.vc9.dll`, `gle64.vc9.dll` |
35
+ | **vc10** (Visual Studio 2010) | `freeglut32.vc10.dll`, `gle32.vc10.dll` | `freeglut64.vc10.dll`, `gle64.vc10.dll` |
36
+ | **vc14** (Visual Studio 2015 and later) | `freeglut32.vc14.dll`, `gle32.vc14.dll` | `freeglut64.vc14.dll`, `gle64.vc14.dll` |
37
+
38
+ Both the `win32` and the `win_amd64` wheel carry all twelve, along with the
39
+ upstream licence and readme files. The word sizes are not split between the
40
+ two wheels: a split would halve the download and is a change to make on its
41
+ own, where a regression in it is attributable.
42
+
43
+ ## Using it directly
44
+
45
+ PyOpenGL is the intended caller, but the path is public:
46
+
47
+ ```python
48
+ from pyopengl_glut_binaries import DLL_DIRECTORY
49
+ ```
50
+
51
+ `BUILDS` lists the base names above and `LIBRARIES` says where each library
52
+ came from.
53
+
54
+ ## Licensing
55
+
56
+ The packaging is BSD-licensed; see `LICENSE`. The libraries are third-party
57
+ works under their own terms, which ship beside them in
58
+ `src/pyopengl_glut_binaries/DLLS/`:
59
+
60
+ - **freeglut** — 3.0.0-1.mp for MSVC, Martin Payne's build.
61
+ [freeglut](http://freeglut.sourceforge.net/) upstream publishes source
62
+ rather than Windows binaries. X-Consortium licence, in
63
+ `freeglut_COPYING.txt`.
64
+ - **GLE** — the tubing and extrusion library, built as a Windows DLL. See
65
+ `gle_COPYING`, `gle_COPYING.src` and `gle_AUTHORS`.
66
+
67
+ ## Releases
68
+
69
+ A push to `main` runs the tests; if they are green and `__version__` in
70
+ `src/pyopengl_glut_binaries/__init__.py` is not already on PyPI, the wheels and
71
+ the sdist are built and published. Bumping the version is what cuts a release.
72
+
73
+ Issues go to [the PyOpenGL tracker](https://github.com/mcfletch/pyopengl/issues).
@@ -0,0 +1,106 @@
1
+ [build-system]
2
+ # setuptools 70.1 is the floor for `setuptools.command.bdist_wheel`, which
3
+ # setup.py subclasses to tag the wheel; 77 is what the rest of this workspace
4
+ # builds with, so the floor is set there rather than lower.
5
+ requires = ["setuptools>=77"]
6
+ build-backend = "setuptools.build_meta"
7
+
8
+ [project]
9
+ name = "PyOpenGL-glut-binaries"
10
+ # Read from src/pyopengl_glut_binaries/__init__.py -- see
11
+ # [tool.setuptools.dynamic] below. One definition, because
12
+ # .github/workflows/release.yml decides whether to publish by reading
13
+ # `__version__`, and a second copy here that drifted from it would mean the
14
+ # version checked against PyPI was not the version built.
15
+ dynamic = ["version"]
16
+ description = "Prebuilt Windows freeglut and GLE libraries for PyOpenGL"
17
+ readme = "README.md"
18
+ license = "BSD-3-Clause"
19
+ license-files = ["LICENSE"]
20
+ # The DLLs are loaded through ctypes, so no interpreter is excluded by them.
21
+ # The floor is PyOpenGL's own, since nothing else installs this.
22
+ requires-python = ">=3.9"
23
+ authors = [
24
+ { name = "Mike C. Fletcher", email = "mcfletch@vrplumber.com" }
25
+ ]
26
+ keywords = ["OpenGL", "GLUT", "freeglut", "GLE", "PyOpenGL", "Windows"]
27
+ classifiers = [
28
+ "Development Status :: 5 - Production/Stable",
29
+ "Intended Audience :: Developers",
30
+ "Operating System :: Microsoft :: Windows",
31
+ "Programming Language :: Python",
32
+ "Programming Language :: Python :: 3",
33
+ "Topic :: Multimedia :: Graphics :: 3D Rendering",
34
+ ]
35
+
36
+ # None. The package is data with a path constant over it, and PyOpenGL depends
37
+ # on this rather than the other way round -- naming PyOpenGL here would make
38
+ # the two require each other.
39
+ dependencies = []
40
+
41
+ [project.optional-dependencies]
42
+ test = ["pytest"]
43
+ dev = ["pyopengl-glut-binaries[test]", "mypy", "ruff", "build"]
44
+
45
+ [project.urls]
46
+ Homepage = "https://github.com/mcfletch/pyopengl-glut-binaries"
47
+ Repository = "https://github.com/mcfletch/pyopengl-glut-binaries"
48
+ Issues = "https://github.com/mcfletch/pyopengl/issues"
49
+
50
+ [tool.setuptools.dynamic]
51
+ version = { attr = "pyopengl_glut_binaries.__version__" }
52
+
53
+ [tool.setuptools.packages.find]
54
+ where = ["src"]
55
+
56
+ # Named here rather than left to `include-package-data` and a MANIFEST.in line.
57
+ # That default -- in another project's tool, and true only for a project
58
+ # configured through pyproject.toml -- is what every Windows GLUT user has
59
+ # depended on until now, and #127 is what it looks like when the files do not
60
+ # arrive. `DLLS/` holds no `__init__.py`, so `packages.find` above does not see
61
+ # it and this line is the only thing that ships it.
62
+ [tool.setuptools.package-data]
63
+ pyopengl_glut_binaries = ["py.typed", "DLLS/*"]
64
+
65
+ [tool.pytest.ini_options]
66
+ testpaths = ["tests", "src"]
67
+ addopts = "-ra --doctest-modules --import-mode=importlib"
68
+
69
+ [tool.ruff]
70
+ line-length = 100
71
+ target-version = "py39"
72
+ # `tools/` holds the recipes the binaries were built from, kept for
73
+ # provenance. They want Visual Studio 2008 and URLs from 2011, so nothing here
74
+ # can run them and a change to them cannot be tested -- which makes tidying
75
+ # them a silent risk rather than an improvement. They are preserved as they
76
+ # were. See tools/README.md.
77
+ exclude = ["tools"]
78
+
79
+ [tool.ruff.lint]
80
+ select = ["E", "W", "F", "B", "ARG", "I", "UP", "SIM", "C4", "RUF"]
81
+ ignore = [
82
+ "E501", # line too long: held by the formatter's line-length, above
83
+ # Diagnostics are written with `%` formatting throughout, so that the
84
+ # message and the values it interpolates read as two separate things.
85
+ "UP031",
86
+ ]
87
+
88
+ [tool.ruff.format]
89
+ quote-style = "single"
90
+ exclude = ["*.md"]
91
+
92
+ [tool.mypy]
93
+ python_version = "3.12"
94
+ warn_unused_ignores = true
95
+ ignore_missing_imports = true
96
+ disallow_untyped_defs = true
97
+ disallow_incomplete_defs = true
98
+
99
+ # uv decides whether its cached metadata for a source tree is still current
100
+ # from pyproject.toml, setup.py and setup.cfg alone. The version lives in
101
+ # src/pyopengl_glut_binaries/__init__.py, so name that file too.
102
+ [tool.uv]
103
+ cache-keys = [
104
+ { file = "pyproject.toml" },
105
+ { file = "src/pyopengl_glut_binaries/__init__.py" },
106
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,49 @@
1
+ #! /usr/bin/env python3
2
+ """A wheel that is platform-specific without holding an extension module.
3
+
4
+ The payload is prebuilt Windows DLLs, so the wheel this project produces has
5
+ to carry a platform tag: the whole reason the binaries live in a distribution
6
+ of their own is that a Linux or macOS install never downloads them, and only
7
+ the tag achieves that. setuptools decides purity from whether there are
8
+ extension modules to build, and there are none here -- the DLLs are data --
9
+ so it would produce ``py3-none-any`` and every platform would get them again.
10
+
11
+ There is nothing to compile, so the tag is the only thing this file exists for;
12
+ everything else about the project is declared in ``pyproject.toml``.
13
+ """
14
+
15
+ from setuptools import setup
16
+ from setuptools.command.bdist_wheel import bdist_wheel as _bdist_wheel
17
+ from setuptools.dist import Distribution
18
+
19
+
20
+ class BinaryDistribution(Distribution):
21
+ """A distribution whose contents are platform-specific.
22
+
23
+ ``has_ext_modules`` is what ``bdist_wheel`` asks, and answering yes is what
24
+ makes the wheel's root impure and so gives it a platform tag.
25
+ """
26
+
27
+ def has_ext_modules(self):
28
+ return True
29
+
30
+
31
+ class bdist_wheel(_bdist_wheel):
32
+ """Tag the wheel for the platform but for no particular interpreter.
33
+
34
+ The default tag for an impure wheel names the interpreter and ABI that
35
+ built it -- ``cp313-cp313-win_amd64`` -- because that is what a compiled
36
+ extension is tied to. A DLL loaded through ctypes is tied to neither, so
37
+ the tag is ``py3-none-<platform>``: one wheel per platform serves every
38
+ Python 3 rather than one per interpreter release.
39
+
40
+ ``--plat-name`` still chooses the platform, which is how a single Windows
41
+ runner produces both the ``win32`` and the ``win_amd64`` wheel.
42
+ """
43
+
44
+ def get_tag(self):
45
+ _python, _abi, platform = super().get_tag()
46
+ return 'py3', 'none', platform
47
+
48
+
49
+ setup(distclass=BinaryDistribution, cmdclass={'bdist_wheel': bdist_wheel})
@@ -0,0 +1,101 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyOpenGL-glut-binaries
3
+ Version: 1.0.0
4
+ Summary: Prebuilt Windows freeglut and GLE libraries for PyOpenGL
5
+ Author-email: "Mike C. Fletcher" <mcfletch@vrplumber.com>
6
+ License-Expression: BSD-3-Clause
7
+ Project-URL: Homepage, https://github.com/mcfletch/pyopengl-glut-binaries
8
+ Project-URL: Repository, https://github.com/mcfletch/pyopengl-glut-binaries
9
+ Project-URL: Issues, https://github.com/mcfletch/pyopengl/issues
10
+ Keywords: OpenGL,GLUT,freeglut,GLE,PyOpenGL,Windows
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: Microsoft :: Windows
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
17
+ Requires-Python: >=3.9
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Provides-Extra: test
21
+ Requires-Dist: pytest; extra == "test"
22
+ Provides-Extra: dev
23
+ Requires-Dist: pyopengl-glut-binaries[test]; extra == "dev"
24
+ Requires-Dist: mypy; extra == "dev"
25
+ Requires-Dist: ruff; extra == "dev"
26
+ Requires-Dist: build; extra == "dev"
27
+ Dynamic: license-file
28
+
29
+ # PyOpenGL-glut-binaries
30
+
31
+ Prebuilt Windows freeglut and GLE libraries for [PyOpenGL](
32
+ https://github.com/mcfletch/pyopengl).
33
+
34
+ `OpenGL.GLUT` and `OpenGL.GLE` wrap two C libraries that Windows does not
35
+ ship. This distribution carries builds of both, so a Windows user gets them
36
+ by asking:
37
+
38
+ ```
39
+ pip install PyOpenGL[glut]
40
+ ```
41
+
42
+ Nothing to call and nothing to configure: PyOpenGL finds the directory itself.
43
+ A freeglut the *system* provides still wins over these, because a user who
44
+ installed their own meant it.
45
+
46
+ ## Why it is a package of its own
47
+
48
+ The same builds shipped inside PyOpenGL itself, in every wheel on every
49
+ platform, so a Linux server rendering headlessly through EGL downloaded six
50
+ freeglut builds it could never load. As a separate, platform-tagged
51
+ distribution they reach the machines that can use them and no others, and a
52
+ scanner that objects to a decade-old vendored binary objects to a package only
53
+ GLUT users install rather than to PyOpenGL.
54
+
55
+ ## What is here
56
+
57
+ Six builds of each library, because PyOpenGL asks for one exact name composed
58
+ from the running interpreter's word size and compiler generation:
59
+
60
+ | | 32-bit | 64-bit |
61
+ |---|---|---|
62
+ | **vc9** (Visual Studio 2008) | `freeglut32.vc9.dll`, `gle32.vc9.dll` | `freeglut64.vc9.dll`, `gle64.vc9.dll` |
63
+ | **vc10** (Visual Studio 2010) | `freeglut32.vc10.dll`, `gle32.vc10.dll` | `freeglut64.vc10.dll`, `gle64.vc10.dll` |
64
+ | **vc14** (Visual Studio 2015 and later) | `freeglut32.vc14.dll`, `gle32.vc14.dll` | `freeglut64.vc14.dll`, `gle64.vc14.dll` |
65
+
66
+ Both the `win32` and the `win_amd64` wheel carry all twelve, along with the
67
+ upstream licence and readme files. The word sizes are not split between the
68
+ two wheels: a split would halve the download and is a change to make on its
69
+ own, where a regression in it is attributable.
70
+
71
+ ## Using it directly
72
+
73
+ PyOpenGL is the intended caller, but the path is public:
74
+
75
+ ```python
76
+ from pyopengl_glut_binaries import DLL_DIRECTORY
77
+ ```
78
+
79
+ `BUILDS` lists the base names above and `LIBRARIES` says where each library
80
+ came from.
81
+
82
+ ## Licensing
83
+
84
+ The packaging is BSD-licensed; see `LICENSE`. The libraries are third-party
85
+ works under their own terms, which ship beside them in
86
+ `src/pyopengl_glut_binaries/DLLS/`:
87
+
88
+ - **freeglut** — 3.0.0-1.mp for MSVC, Martin Payne's build.
89
+ [freeglut](http://freeglut.sourceforge.net/) upstream publishes source
90
+ rather than Windows binaries. X-Consortium licence, in
91
+ `freeglut_COPYING.txt`.
92
+ - **GLE** — the tubing and extrusion library, built as a Windows DLL. See
93
+ `gle_COPYING`, `gle_COPYING.src` and `gle_AUTHORS`.
94
+
95
+ ## Releases
96
+
97
+ A push to `main` runs the tests; if they are green and `__version__` in
98
+ `src/pyopengl_glut_binaries/__init__.py` is not already on PyPI, the wheels and
99
+ the sdist are built and published. Bumping the version is what cuts a release.
100
+
101
+ Issues go to [the PyOpenGL tracker](https://github.com/mcfletch/pyopengl/issues).
@@ -0,0 +1,30 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ setup.py
5
+ src/PyOpenGL_glut_binaries.egg-info/PKG-INFO
6
+ src/PyOpenGL_glut_binaries.egg-info/SOURCES.txt
7
+ src/PyOpenGL_glut_binaries.egg-info/dependency_links.txt
8
+ src/PyOpenGL_glut_binaries.egg-info/requires.txt
9
+ src/PyOpenGL_glut_binaries.egg-info/top_level.txt
10
+ src/pyopengl_glut_binaries/__init__.py
11
+ src/pyopengl_glut_binaries/py.typed
12
+ src/pyopengl_glut_binaries/DLLS/GLE_WIN32_README.txt
13
+ src/pyopengl_glut_binaries/DLLS/freeglut32.vc10.dll
14
+ src/pyopengl_glut_binaries/DLLS/freeglut32.vc14.dll
15
+ src/pyopengl_glut_binaries/DLLS/freeglut32.vc9.dll
16
+ src/pyopengl_glut_binaries/DLLS/freeglut64.vc10.dll
17
+ src/pyopengl_glut_binaries/DLLS/freeglut64.vc14.dll
18
+ src/pyopengl_glut_binaries/DLLS/freeglut64.vc9.dll
19
+ src/pyopengl_glut_binaries/DLLS/freeglut_COPYING.txt
20
+ src/pyopengl_glut_binaries/DLLS/freeglut_README.txt
21
+ src/pyopengl_glut_binaries/DLLS/gle32.vc10.dll
22
+ src/pyopengl_glut_binaries/DLLS/gle32.vc14.dll
23
+ src/pyopengl_glut_binaries/DLLS/gle32.vc9.dll
24
+ src/pyopengl_glut_binaries/DLLS/gle64.vc10.dll
25
+ src/pyopengl_glut_binaries/DLLS/gle64.vc14.dll
26
+ src/pyopengl_glut_binaries/DLLS/gle64.vc9.dll
27
+ src/pyopengl_glut_binaries/DLLS/gle_AUTHORS
28
+ src/pyopengl_glut_binaries/DLLS/gle_COPYING
29
+ src/pyopengl_glut_binaries/DLLS/gle_COPYING.src
30
+ tests/test_what_the_package_carries.py
@@ -0,0 +1,9 @@
1
+
2
+ [dev]
3
+ pyopengl-glut-binaries[test]
4
+ mypy
5
+ ruff
6
+ build
7
+
8
+ [test]
9
+ pytest
@@ -0,0 +1,6 @@
1
+ This is a Win32 version of the GLE library
2
+ compiled as a shared library (DLL) for use with
3
+ e.g. Python's ctypes foreign-function interface.
4
+
5
+ To install, copy the file gle32.dll to your system32
6
+ directory.
@@ -0,0 +1,27 @@
1
+
2
+ Freeglut Copyright
3
+ ------------------
4
+
5
+ Freeglut code without an explicit copyright is covered by the following
6
+ copyright:
7
+
8
+ Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies or substantial portions of the Software.
14
+
15
+ The above copyright notice and this permission notice shall be included in
16
+ all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21
+ PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
22
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ Except as contained in this notice, the name of Pawel W. Olszta shall not be
26
+ used in advertising or otherwise to promote the sale, use or other dealings
27
+ in this Software without prior written authorization from Pawel W. Olszta.