Merge pull request #1957 from aanand/stub-run-on-windows

WIP: Build Windows binary
This commit is contained in:
mnowster 2015-09-21 16:21:12 +01:00
commit aa70209ade
3 changed files with 47 additions and 6 deletions

View File

@ -8,7 +8,6 @@ import sys
from inspect import getdoc
from operator import attrgetter
import dockerpty
from docker.errors import APIError
from requests.exceptions import ReadTimeout
@ -31,6 +30,11 @@ from .log_printer import LogPrinter
from .utils import get_version_info
from .utils import yesno
WINDOWS = (sys.platform == 'win32')
if not WINDOWS:
import dockerpty
log = logging.getLogger(__name__)
console_handler = logging.StreamHandler(sys.stderr)
@ -337,6 +341,14 @@ class TopLevelCommand(Command):
"""
service = project.get_service(options['SERVICE'])
detach = options['-d']
if WINDOWS and not detach:
raise UserError(
"Interactive mode is not yet supported on Windows.\n"
"Please pass the -d flag when using `docker-compose run`."
)
if options['--allow-insecure-ssl']:
log.warn(INSECURE_SSL_WARNING)
@ -351,7 +363,7 @@ class TopLevelCommand(Command):
)
tty = True
if options['-d'] or options['-T'] or not sys.stdin.isatty():
if detach or options['-T'] or not sys.stdin.isatty():
tty = False
if options['COMMAND']:
@ -362,8 +374,8 @@ class TopLevelCommand(Command):
container_options = {
'command': command,
'tty': tty,
'stdin_open': not options['-d'],
'detach': options['-d'],
'stdin_open': not detach,
'detach': detach,
}
if options['-e']:
@ -409,7 +421,7 @@ class TopLevelCommand(Command):
raise e
if options['-d']:
if detach:
service.start_container(container)
print(container.name)
else:

View File

@ -66,7 +66,12 @@ def call_silently(*args, **kwargs):
Like subprocess.call(), but redirects stdout and stderr to /dev/null.
"""
with open(os.devnull, 'w') as shutup:
return subprocess.call(*args, stdout=shutup, stderr=shutup, **kwargs)
try:
return subprocess.call(*args, stdout=shutup, stderr=shutup, **kwargs)
except WindowsError:
# On Windows, subprocess.call() can still raise exceptions. Normalize
# to POSIXy behaviour by returning a nonzero exit code.
return 1
def is_mac():

24
script/build-windows.ps1 Normal file
View File

@ -0,0 +1,24 @@
$ErrorActionPreference = "Stop"
Set-PSDebug -trace 1
# Remove virtualenv
if (Test-Path venv) {
Remove-Item -Recurse -Force .\venv
}
# Remove .pyc files
Get-ChildItem -Recurse -Include *.pyc | foreach ($_) { Remove-Item $_.FullName }
# Create virtualenv
virtualenv .\venv
# Install dependencies
.\venv\Scripts\easy_install "http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download"
.\venv\Scripts\pip install -r requirements.txt
.\venv\Scripts\pip install -r requirements-build.txt
.\venv\Scripts\pip install .
# Build binary
.\venv\Scripts\pyinstaller .\docker-compose.spec
Move-Item -Force .\dist\docker-compose .\dist\docker-compose-Windows-x86_64.exe
.\dist\docker-compose-Windows-x86_64.exe --version