| 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015, 2020 Efraim Flashner <efraim@flashner.co.il> |
| 3 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 4 | ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> |
| 5 | ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> |
| 6 | ;;; Copyright © 2018, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> |
| 7 | ;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr> |
| 8 | ;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net> |
| 9 | ;;; |
| 10 | ;;; This file is part of GNU Guix. |
| 11 | ;;; |
| 12 | ;;; GNU Guix is free software; you can redistribute it and/or modify it |
| 13 | ;;; under the terms of the GNU General Public License as published by |
| 14 | ;;; the Free Software Foundation; either version 3 of the License, or (at |
| 15 | ;;; your option) any later version. |
| 16 | ;;; |
| 17 | ;;; GNU Guix is distributed in the hope that it will be useful, but |
| 18 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
| 19 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 20 | ;;; GNU General Public License for more details. |
| 21 | ;;; |
| 22 | ;;; You should have received a copy of the GNU General Public License |
| 23 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 24 | |
| 25 | (define-module (gnu packages python-build) |
| 26 | #:use-module ((guix licenses) #:prefix license:) |
| 27 | #:use-module (guix build-system python) |
| 28 | #:use-module (guix download) |
| 29 | #:use-module (guix packages)) |
| 30 | |
| 31 | ;;; Commentary: |
| 32 | ;;; |
| 33 | ;;; Python packages to build... Python packages. Since they are bound to be |
| 34 | ;;; relied on by many, their dependencies should be kept minimal, and this |
| 35 | ;;; module should not depend on other modules containing Python packages. |
| 36 | ;;; |
| 37 | ;;; Code: |
| 38 | |
| 39 | (define-public python-wheel |
| 40 | (package |
| 41 | (name "python-wheel") |
| 42 | (version "0.36.2") |
| 43 | (source |
| 44 | (origin |
| 45 | (method url-fetch) |
| 46 | (uri (pypi-uri "wheel" version)) |
| 47 | (sha256 |
| 48 | (base32 |
| 49 | "0pi4w0brz7a86ddk6pm8p6j0w6d7jgacgxm0c2dab3k5cb8yy7p1")))) |
| 50 | (build-system python-build-system) |
| 51 | (arguments |
| 52 | ;; FIXME: The test suite runs "python setup.py bdist_wheel", which in turn |
| 53 | ;; fails to find the newly-built bdist_wheel library, even though it is |
| 54 | ;; available on PYTHONPATH. What search path is consulted by setup.py? |
| 55 | '(#:tests? #f)) |
| 56 | (home-page "https://bitbucket.org/pypa/wheel/") |
| 57 | (synopsis "Format for built Python packages") |
| 58 | (description |
| 59 | "A wheel is a ZIP-format archive with a specially formatted filename and |
| 60 | the @code{.whl} extension. It is designed to contain all the files for a PEP |
| 61 | 376 compatible install in a way that is very close to the on-disk format. Many |
| 62 | packages will be properly installed with only the @code{Unpack} step and the |
| 63 | unpacked archive preserves enough information to @code{Spread} (copy data and |
| 64 | scripts to their final locations) at any later time. Wheel files can be |
| 65 | installed with a newer @code{pip} or with wheel's own command line utility.") |
| 66 | (license license:expat))) |
| 67 | |
| 68 | (define-public python2-wheel |
| 69 | (package-with-python2 python-wheel)) |
| 70 | |
| 71 | ;;; XXX: Not really at home, but this seems the best place to prevent circular |
| 72 | ;;; module dependencies. |
| 73 | (define-public python-toml |
| 74 | (package |
| 75 | (name "python-toml") |
| 76 | (version "0.10.2") |
| 77 | (source |
| 78 | (origin |
| 79 | (method url-fetch) |
| 80 | (uri (pypi-uri "toml" version)) |
| 81 | (sha256 |
| 82 | (base32 "13z6rff86bzdpl094x0vmfvls779931xj90dlbs9kpfm138s3gdk")))) |
| 83 | (build-system python-build-system) |
| 84 | (arguments |
| 85 | `(#:tests? #f)) ;no tests suite in release |
| 86 | (home-page "https://github.com/uiri/toml") |
| 87 | (synopsis "Library for TOML") |
| 88 | (description |
| 89 | "@code{toml} is a library for parsing and creating Tom's Obvious, Minimal |
| 90 | Language (TOML) configuration files.") |
| 91 | (license license:expat))) |
| 92 | |
| 93 | (define-public python-pytoml |
| 94 | (package |
| 95 | (name "python-pytoml") |
| 96 | (version "0.1.21") |
| 97 | (source |
| 98 | (origin |
| 99 | (method url-fetch) |
| 100 | (uri (pypi-uri "pytoml" version)) |
| 101 | (sha256 |
| 102 | (base32 |
| 103 | "1rv1byiw82k7mj6aprcrqi2vdabs801y97xhfnrz7kxds34ggv4f")))) |
| 104 | (build-system python-build-system) |
| 105 | (home-page "https://github.com/avakar/pytoml") |
| 106 | (synopsis "Parser for TOML") |
| 107 | (description "This package provides a Python parser for TOML-0.4.0.") |
| 108 | (license license:expat))) |
| 109 | |
| 110 | (define-public python-pep517-bootstrap |
| 111 | (hidden-package |
| 112 | (package |
| 113 | (name "python-pep517-bootstrap") |
| 114 | (version "0.9.1") |
| 115 | (source |
| 116 | (origin |
| 117 | (method url-fetch) |
| 118 | (uri (pypi-uri "pep517" version)) |
| 119 | (sha256 |
| 120 | (base32 |
| 121 | "0zqidxah03qpnp6zkg3zd1kmd5f79hhdsfmlc0cldaniy80qddxf")))) |
| 122 | (build-system python-build-system) |
| 123 | (arguments |
| 124 | `(#:tests? #f)) ;to avoid circular dependencies |
| 125 | (propagated-inputs |
| 126 | `(("python-toml" ,python-toml) |
| 127 | ("python-wheel" ,python-wheel))) |
| 128 | (home-page "https://github.com/pypa/pep517") |
| 129 | (synopsis "Wrappers to build Python packages using PEP 517 hooks") |
| 130 | (description |
| 131 | "Wrappers to build Python packages using PEP 517 hooks.") |
| 132 | (license license:expat)))) |
| 133 | |
| 134 | ;;; The name 'python-pypa-build' is chosen rather than 'python-build' to avoid |
| 135 | ;;; a name clash with python-build from (guix build-system python). |
| 136 | (define-public python-pypa-build |
| 137 | (package |
| 138 | (name "python-pypa-build") |
| 139 | (version "0.1.0") |
| 140 | (source (origin |
| 141 | (method url-fetch) |
| 142 | (uri (pypi-uri "build" version)) |
| 143 | (sha256 |
| 144 | (base32 |
| 145 | "1d6m21lijwm04g50nwgsgj7x3vhblzw7jv05ah8psqgzk20bbch8")))) |
| 146 | (build-system python-build-system) |
| 147 | (arguments |
| 148 | `(#:tests? #f)) ;to tests in the PyPI release |
| 149 | (propagated-inputs |
| 150 | `(("python-pep517", python-pep517-bootstrap) |
| 151 | ("python-toml" ,python-toml))) |
| 152 | (home-page "https://pypa-build.readthedocs.io/en/latest/") |
| 153 | (synopsis "Simple Python PEP 517 package builder") |
| 154 | (description "The @command{build} command invokes the PEP 517 hooks to |
| 155 | build a distribution package. It is a simple build tool and does not perform |
| 156 | any dependency management. It aims to keep dependencies to a minimum, in |
| 157 | order to make bootstrapping easier.") |
| 158 | (license license:expat))) |
| 159 | |
| 160 | (define-public python-poetry-core |
| 161 | (package |
| 162 | (name "python-poetry-core") |
| 163 | (version "1.0.3") |
| 164 | (source |
| 165 | (origin |
| 166 | (method url-fetch) |
| 167 | (uri (pypi-uri "poetry-core" version)) |
| 168 | (sha256 |
| 169 | (base32 "1ichii48zkywcnj8v3bcn9vk09v69jv6h65805w21hwz4hlcj593")))) |
| 170 | (build-system python-build-system) |
| 171 | (home-page "https://github.com/python-poetry/poetry-core") |
| 172 | (synopsis "Poetry PEP 517 build back-end") |
| 173 | (description |
| 174 | "The @code{poetry-core} module provides a PEP 517 build back-end |
| 175 | implementation developed for Poetry. This project is intended to be |
| 176 | a light weight, fully compliant, self-contained package allowing PEP 517 |
| 177 | compatible build front-ends to build Poetry managed projects.") |
| 178 | (license license:expat))) |