Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0cb43800b | ||
|
|
cc4e8975c8 | ||
|
|
c5a9837784 | ||
|
|
ceecee0e68 | ||
|
|
28af49a006 | ||
|
|
3a2d7a21b1 | ||
|
|
44fd8b5c26 | ||
|
|
fddfaba0a4 |
@@ -79,7 +79,7 @@ env:
|
|||||||
# Note: TWINE_PASSWORD is set to a PyPI API token in Travis settings
|
# Note: TWINE_PASSWORD is set to a PyPI API token in Travis settings
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==1.5.3
|
- python3 -m pip install cibuildwheel==1.5.4
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './wheelhouse'
|
# build the wheels, put them into './wheelhouse'
|
||||||
@@ -152,6 +152,13 @@ This is similar to static linking, so it might have some licence implications. C
|
|||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
### 1.5.4
|
||||||
|
|
||||||
|
_19 June 2020_
|
||||||
|
|
||||||
|
- 🐛 Fix a bug that would cause command substitutions in CIBW_ENVIRONMENT
|
||||||
|
variables to not interpret quotes in commands correctly (#406, #408)
|
||||||
|
|
||||||
### 1.5.3
|
### 1.5.3
|
||||||
|
|
||||||
_19 July 2020_
|
_19 July 2020_
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
__version__ = '1.5.3'
|
__version__ = '1.5.4'
|
||||||
|
|||||||
@@ -1,15 +1,14 @@
|
|||||||
import shlex
|
|
||||||
import subprocess
|
import subprocess
|
||||||
from typing import Callable, Dict, List, NamedTuple, Optional, Sequence
|
from typing import Callable, Dict, List, NamedTuple, Optional, Sequence
|
||||||
|
|
||||||
import bashlex # type: ignore
|
import bashlex # type: ignore
|
||||||
|
|
||||||
# a function that takes a shell command and the environment, and returns the result
|
# a function that takes a command and the environment, and returns the result
|
||||||
EnvironmentExecutor = Callable[[str, Dict[str, str]], str]
|
EnvironmentExecutor = Callable[[List[str], Dict[str, str]], str]
|
||||||
|
|
||||||
|
|
||||||
def local_environment_executor(command: str, env: Dict[str, str]) -> str:
|
def local_environment_executor(command: List[str], env: Dict[str, str]) -> str:
|
||||||
return subprocess.check_output(shlex.split(command), env=env, universal_newlines=True)
|
return subprocess.check_output(command, env=env, universal_newlines=True)
|
||||||
|
|
||||||
|
|
||||||
class NodeExecutionContext(NamedTuple):
|
class NodeExecutionContext(NamedTuple):
|
||||||
@@ -97,8 +96,7 @@ def evaluate_nodes_as_compound_command(nodes: Sequence[bashlex.ast.node], contex
|
|||||||
|
|
||||||
|
|
||||||
def evaluate_nodes_as_simple_command(nodes: List[bashlex.ast.node], context: NodeExecutionContext):
|
def evaluate_nodes_as_simple_command(nodes: List[bashlex.ast.node], context: NodeExecutionContext):
|
||||||
words = [evaluate_node(part, context=context) for part in nodes]
|
command = [evaluate_node(part, context=context) for part in nodes]
|
||||||
command = ' '.join(words)
|
|
||||||
return context.executor(command, context.environment)
|
return context.executor(command, context.environment)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -180,9 +180,9 @@ class DockerContainer:
|
|||||||
'import sys, json, os; json.dump(os.environ.copy(), sys.stdout)'
|
'import sys, json, os; json.dump(os.environ.copy(), sys.stdout)'
|
||||||
], capture_output=True))
|
], capture_output=True))
|
||||||
|
|
||||||
def environment_executor(self, command: str, environment: Dict[str, str]) -> str:
|
def environment_executor(self, command: List[str], environment: Dict[str, str]) -> str:
|
||||||
# used as an EnvironmentExecutor to evaluate commands and capture output
|
# used as an EnvironmentExecutor to evaluate commands and capture output
|
||||||
return self.call(shlex.split(command), env=environment)
|
return self.call(command, env=environment)
|
||||||
|
|
||||||
|
|
||||||
def shell_quote(path: PurePath) -> str:
|
def shell_quote(path: PurePath) -> str:
|
||||||
|
|||||||
@@ -33,4 +33,4 @@ Obviously, manual steps are for chumps, so we can automate this a little by usin
|
|||||||
|
|
||||||
If you don't need much control over the release of a package, you can set up cibuildwheel to deliver the wheels straight to PyPI. This doesn't require anycloud storage to work - you just need to bump the version and tag it.
|
If you don't need much control over the release of a package, you can set up cibuildwheel to deliver the wheels straight to PyPI. This doesn't require anycloud storage to work - you just need to bump the version and tag it.
|
||||||
|
|
||||||
[`examples/travis-ci-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/travis-ci-deploy.yml) and [`examples/github-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/github-deploy.yml) are example configurations that automatocially upload wheels to PyPI. Also check out [this example repo](https://github.com/joerick/cibuildwheel-autopypi-example) for more detailed instructions on how to set this up.
|
[`examples/travis-ci-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/travis-ci-deploy.yml) and [`examples/github-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/github-deploy.yml) are example configurations that automatically upload wheels to PyPI. Also check out [this example repo](https://github.com/joerick/cibuildwheel-autopypi-example) for more detailed instructions on how to set this up.
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ stack: python 3.7
|
|||||||
init:
|
init:
|
||||||
- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH%
|
- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH%
|
||||||
|
|
||||||
install: python -m pip install cibuildwheel==1.5.3
|
install: python -m pip install cibuildwheel==1.5.4
|
||||||
|
|
||||||
build_script: python -m cibuildwheel --output-dir wheelhouse
|
build_script: python -m cibuildwheel --output-dir wheelhouse
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ jobs:
|
|||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
- bash: |
|
- bash: |
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
pip3 install cibuildwheel==1.5.3
|
pip3 install cibuildwheel==1.5.4
|
||||||
cibuildwheel --output-dir wheelhouse .
|
cibuildwheel --output-dir wheelhouse .
|
||||||
- task: PublishBuildArtifacts@1
|
- task: PublishBuildArtifacts@1
|
||||||
inputs: {pathtoPublish: 'wheelhouse'}
|
inputs: {pathtoPublish: 'wheelhouse'}
|
||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
- bash: |
|
- bash: |
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
pip3 install cibuildwheel==1.5.3
|
pip3 install cibuildwheel==1.5.4
|
||||||
cibuildwheel --output-dir wheelhouse .
|
cibuildwheel --output-dir wheelhouse .
|
||||||
- task: PublishBuildArtifacts@1
|
- task: PublishBuildArtifacts@1
|
||||||
inputs: {pathtoPublish: 'wheelhouse'}
|
inputs: {pathtoPublish: 'wheelhouse'}
|
||||||
@@ -29,7 +29,7 @@ jobs:
|
|||||||
displayName: Install Visual C++ for Python 2.7
|
displayName: Install Visual C++ for Python 2.7
|
||||||
- bash: |
|
- bash: |
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install cibuildwheel==1.5.3
|
pip install cibuildwheel==1.5.4
|
||||||
cibuildwheel --output-dir wheelhouse .
|
cibuildwheel --output-dir wheelhouse .
|
||||||
- task: PublishBuildArtifacts@1
|
- task: PublishBuildArtifacts@1
|
||||||
inputs: {pathtoPublish: 'wheelhouse'}
|
inputs: {pathtoPublish: 'wheelhouse'}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Build the Linux wheels.
|
name: Build the Linux wheels.
|
||||||
command: |
|
command: |
|
||||||
pip3 install --user cibuildwheel==1.5.3
|
pip3 install --user cibuildwheel==1.5.4
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
@@ -25,7 +25,7 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Build the OS X wheels.
|
name: Build the OS X wheels.
|
||||||
command: |
|
command: |
|
||||||
pip3 install --user cibuildwheel==1.5.3
|
pip3 install --user cibuildwheel==1.5.4
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: |
|
run: |
|
||||||
python -m pip install cibuildwheel==1.5.3
|
python -m pip install cibuildwheel==1.5.4
|
||||||
|
|
||||||
- name: Install Visual C++ for Python 2.7
|
- name: Install Visual C++ for Python 2.7
|
||||||
if: runner.os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: |
|
run: |
|
||||||
python -m pip install cibuildwheel==1.5.3
|
python -m pip install cibuildwheel==1.5.4
|
||||||
|
|
||||||
- name: Install Visual C++ for Python 2.7
|
- name: Install Visual C++ for Python 2.7
|
||||||
if: runner.os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ env:
|
|||||||
# Note: TWINE_PASSWORD is set to a PyPI API token in Travis settings
|
# Note: TWINE_PASSWORD is set to a PyPI API token in Travis settings
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==1.5.3
|
- python3 -m pip install cibuildwheel==1.5.4
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './wheelhouse'
|
# build the wheels, put them into './wheelhouse'
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
|
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==1.5.3
|
- python3 -m pip install cibuildwheel==1.5.4
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './wheelhouse'
|
# build the wheels, put them into './wheelhouse'
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ jobs:
|
|||||||
- stage: deploy
|
- stage: deploy
|
||||||
name: Build and deploy Linux wheels
|
name: Build and deploy Linux wheels
|
||||||
services: docker
|
services: docker
|
||||||
install: python3 -m pip install cibuildwheel==1.5.3
|
install: python3 -m pip install cibuildwheel==1.5.4
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: |
|
after_success: |
|
||||||
python3 -m pip install twine
|
python3 -m pip install twine
|
||||||
@@ -65,7 +65,7 @@ jobs:
|
|||||||
name: Build and deploy macOS wheels
|
name: Build and deploy macOS wheels
|
||||||
os: osx
|
os: osx
|
||||||
language: shell
|
language: shell
|
||||||
install: python3 -m pip install cibuildwheel==1.5.3
|
install: python3 -m pip install cibuildwheel==1.5.4
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: |
|
after_success: |
|
||||||
python3 -m pip install twine
|
python3 -m pip install twine
|
||||||
@@ -75,7 +75,7 @@ jobs:
|
|||||||
name: Build and deploy Windows wheels
|
name: Build and deploy Windows wheels
|
||||||
os: windows
|
os: windows
|
||||||
language: shell
|
language: shell
|
||||||
install: python3 -m pip install cibuildwheel==1.5.3
|
install: python3 -m pip install cibuildwheel==1.5.4
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: |
|
after_success: |
|
||||||
python3 -m pip install twine
|
python3 -m pip install twine
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ long_description = (this_directory / 'README.md').read_text(encoding='utf-8')
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='cibuildwheel',
|
name='cibuildwheel',
|
||||||
version='1.5.3',
|
version='1.5.4',
|
||||||
install_requires=['bashlex!=0.13', 'toml'],
|
install_requires=['bashlex!=0.13', 'toml'],
|
||||||
description="Build Python wheels on CI with minimal configuration.",
|
description="Build Python wheels on CI with minimal configuration.",
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ def test_inheritance():
|
|||||||
|
|
||||||
|
|
||||||
def test_shell_eval():
|
def test_shell_eval():
|
||||||
environment_recipe = parse_environment('VAR="$(echo "a test" string)"')
|
environment_recipe = parse_environment('VAR="$(echo "a test" string)"')
|
||||||
|
|
||||||
env_copy = os.environ.copy()
|
env_copy = os.environ.copy()
|
||||||
env_copy.pop('VAR', None)
|
env_copy.pop('VAR', None)
|
||||||
@@ -50,8 +50,8 @@ def test_shell_eval():
|
|||||||
)
|
)
|
||||||
environment_cmds = environment_recipe.as_shell_commands()
|
environment_cmds = environment_recipe.as_shell_commands()
|
||||||
|
|
||||||
assert environment_dict['VAR'] == 'a test string'
|
assert environment_dict['VAR'] == 'a test string'
|
||||||
assert environment_cmds == ['export VAR="$(echo "a test" string)"']
|
assert environment_cmds == ['export VAR="$(echo "a test" string)"']
|
||||||
|
|
||||||
|
|
||||||
def test_shell_eval_and_env():
|
def test_shell_eval_and_env():
|
||||||
|
|||||||
Reference in New Issue
Block a user