Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
22816b08f7
@ -23,6 +23,5 @@ script:
|
||||
# Building with biicode
|
||||
- biicode/support/travis-build.sh
|
||||
|
||||
|
||||
after_failure:
|
||||
- cat Testing/Temporary/LastTest.log
|
||||
|
||||
@ -1,3 +1,10 @@
|
||||
message(STATUS "CMake version: ${CMAKE_VERSION}")
|
||||
|
||||
if (POLICY CMP0054)
|
||||
# Only interpret `if` arguments as variables or keywords when unquoted.
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
endif ()
|
||||
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
|
||||
# Set the default CMAKE_BUILD_TYPE to Release.
|
||||
@ -102,7 +109,7 @@ if (NOT FMT_VARIADIC_TEMPLATES)
|
||||
endif ()
|
||||
|
||||
# GTest doesn't detect <tuple> with clang.
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
target_compile_definitions(gmock PUBLIC GTEST_USE_OWN_TR1_TUPLE=1)
|
||||
endif ()
|
||||
|
||||
|
||||
54
appveyor.yml
54
appveyor.yml
@ -1,53 +1,17 @@
|
||||
environment:
|
||||
CTEST_OUTPUT_ON_FAILURE: 1
|
||||
matrix:
|
||||
- Build: msvc
|
||||
Config: Debug
|
||||
- Build: msvc
|
||||
Config: Release
|
||||
- Build: mingw
|
||||
Config: Debug
|
||||
- Build: mingw
|
||||
Config: Release
|
||||
|
||||
install:
|
||||
- ps: |
|
||||
if ($env:Build -eq "mingw") {
|
||||
# Install MinGW.
|
||||
$url = "http://sourceforge.net/projects/mingw-w64/files/"
|
||||
$url += "Toolchains%20targetting%20Win64/Personal%20Builds/"
|
||||
$url += "mingw-builds/4.9.0/threads-win32/seh/"
|
||||
$url += "x86_64-4.9.0-release-win32-seh-rt_v3-rev2.7z/download"
|
||||
Invoke-WebRequest -UserAgent wget -Uri $url -OutFile mingw.7z
|
||||
&7z x -oC:\ mingw.7z > $null
|
||||
}
|
||||
- set PATH=C:\Program Files (x86)\MSBuild\12.0\bin\;%PATH%;C:\mingw64\bin
|
||||
|
||||
before_build:
|
||||
- ps: |
|
||||
if ($env:Build -eq "mingw") {
|
||||
# Remove path to Git bin directory from PATH because it breaks MinGW config.
|
||||
$env:PATH = $env:PATH -replace "C:\\Program Files \(x86\)\\Git\\bin",""
|
||||
$generator = "-GMinGW Makefiles"
|
||||
}
|
||||
echo "-DCMAKE_BUILD_TYPE=$env:Config"
|
||||
cmake -DFMT_EXTRA_TESTS=ON "-DCMAKE_BUILD_TYPE=$env:Config" "$generator" .
|
||||
- BUILD: msvc
|
||||
CONFIG: Debug
|
||||
- BUILD: msvc
|
||||
CONFIG: Release
|
||||
- BUILD: mingw
|
||||
CONFIG: Debug
|
||||
- BUILD: mingw
|
||||
CONFIG: Release
|
||||
|
||||
build_script:
|
||||
- ps: |
|
||||
if ($env:Build -eq "mingw") {
|
||||
mingw32-make -j4
|
||||
} else {
|
||||
msbuild /m:4 /p:Config=$env:Config FORMAT.sln
|
||||
}
|
||||
|
||||
test_script:
|
||||
- ps: |
|
||||
if ($env:Build -eq "mingw") {
|
||||
mingw32-make test
|
||||
} else {
|
||||
msbuild RUN_TESTS.vcxproj
|
||||
}
|
||||
- python support/build.py
|
||||
|
||||
on_failure:
|
||||
- appveyor PushArtifact Testing/Temporary/LastTest.log
|
||||
|
||||
@ -9,8 +9,11 @@
|
||||
CMakeLists.txt + cmake/FindSetEnv.cmake
|
||||
format.h = format.cc
|
||||
format.cc - test/* posix.cc
|
||||
biicode/samples/basic.cpp - test/*
|
||||
biicode/samples/basic.cc - test/*
|
||||
|
||||
[mains]
|
||||
# Manual adjust of files that define an executable
|
||||
!test/test-main.cc
|
||||
|
||||
[parent]
|
||||
vitaut/cppformat: 0
|
||||
4
format.h
4
format.h
@ -1428,6 +1428,7 @@ class SystemError : public internal::RuntimeError {
|
||||
|
||||
.. parsed-literal::
|
||||
*<message>*: *<system-message>*
|
||||
|
||||
where *<message>* is the formatted message and *<system-message>* is
|
||||
the system message corresponding to the error code.
|
||||
*error_code* is a system error code as given by ``errno``.
|
||||
@ -1609,7 +1610,7 @@ class BasicWriter {
|
||||
Current point:
|
||||
(-3.140000, +3.140000)
|
||||
|
||||
The output can be accessed using :meth:`data`, :meth:`c_str` or :meth:`str`
|
||||
The output can be accessed using :func:`data()`, :func:`c_str` or :func:`str`
|
||||
methods.
|
||||
|
||||
See also :ref:`syntax`.
|
||||
@ -2128,6 +2129,7 @@ class WindowsError : public SystemError {
|
||||
|
||||
.. parsed-literal::
|
||||
*<message>*: *<system-message>*
|
||||
|
||||
where *<message>* is the formatted message and *<system-message>* is the system
|
||||
message corresponding to the error code.
|
||||
*error_code* is a Windows error code as given by ``GetLastError``.
|
||||
|
||||
30
support/build.py
Executable file
30
support/build.py
Executable file
@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env python
|
||||
# Build the project on AppVeyor.
|
||||
|
||||
import os
|
||||
from download import Downloader
|
||||
from subprocess import check_call
|
||||
|
||||
build = os.environ['BUILD']
|
||||
cmake_command = ['cmake', '-DFMT_EXTRA_TESTS=ON', '-DCMAKE_BUILD_TYPE=' + os.environ['CONFIG']]
|
||||
build_command = ['msbuild', '/m:4', '/p:Config=' + os.environ['CONFIG'], 'FORMAT.sln']
|
||||
test_command = ['msbuild', 'RUN_TESTS.vcxproj']
|
||||
if build == 'mingw':
|
||||
# Install MinGW.
|
||||
mingw_url = 'http://sourceforge.net/projects/mingw-w64/files/' + \
|
||||
'Toolchains%20targetting%20Win64/Personal%20Builds/' + \
|
||||
'mingw-builds/4.9.2/threads-win32/seh/' + \
|
||||
'x86_64-4.9.2-release-win32-seh-rt_v3-rev1.7z/download'
|
||||
with Downloader().download(mingw_url) as f:
|
||||
check_call(['7z', 'x', '-oC:\\', f])
|
||||
|
||||
# Remove path to Git bin directory from $PATH because it breaks MinGW config.
|
||||
path = os.environ['PATH'].replace(r'C:\Program Files (x86)\Git\bin', '')
|
||||
|
||||
os.environ['PATH'] = r'C:\Program Files (x86)\MSBUILD\12.0\bin\;' + path + r';C:\mingw64\bin'
|
||||
cmake_command.append('-GMinGW Makefiles')
|
||||
build_command = ['mingw32-make', '-j4']
|
||||
test_command = ['mingw32-make', 'test']
|
||||
|
||||
check_call(cmake_command)
|
||||
check_call(build_command)
|
||||
46
support/download.py
Normal file
46
support/download.py
Normal file
@ -0,0 +1,46 @@
|
||||
# A file downloader.
|
||||
|
||||
import contextlib, os, tempfile, timer, urllib2, urlparse
|
||||
|
||||
class Downloader:
|
||||
def __init__(self, dir=None):
|
||||
self.dir = dir
|
||||
|
||||
# Downloads a file and removes it when exiting a block.
|
||||
# Usage:
|
||||
# d = Downloader()
|
||||
# with d.download(url) as f:
|
||||
# use_file(f)
|
||||
def download(self, url, cookie=None):
|
||||
suffix = os.path.splitext(urlparse.urlsplit(url)[2])[1]
|
||||
fd, filename = tempfile.mkstemp(suffix=suffix, dir=self.dir)
|
||||
os.close(fd)
|
||||
with timer.print_time('Downloading', url, 'to', filename):
|
||||
opener = urllib2.build_opener()
|
||||
if cookie:
|
||||
opener.addheaders.append(('Cookie', cookie))
|
||||
num_tries = 2
|
||||
for i in range(num_tries):
|
||||
try:
|
||||
f = opener.open(url)
|
||||
except urllib2.URLError, e:
|
||||
print('Failed to open url', url)
|
||||
continue
|
||||
length = f.headers.get('content-length')
|
||||
if not length:
|
||||
print('Failed to get content-length')
|
||||
continue
|
||||
length = int(length)
|
||||
with open(filename, 'wb') as out:
|
||||
count = 0
|
||||
while count < length:
|
||||
data = f.read(1024 * 1024)
|
||||
count += len(data)
|
||||
out.write(data)
|
||||
@contextlib.contextmanager
|
||||
def remove(filename):
|
||||
try:
|
||||
yield filename
|
||||
finally:
|
||||
pass #os.remove(filename)
|
||||
return remove(filename)
|
||||
35
support/timer.py
Normal file
35
support/timer.py
Normal file
@ -0,0 +1,35 @@
|
||||
# A with statement based timer.
|
||||
|
||||
from __future__ import print_function
|
||||
from contextlib import contextmanager
|
||||
import timeit
|
||||
|
||||
class Timer:
|
||||
"""
|
||||
A with statement based timer.
|
||||
Usage:
|
||||
t = Timer()
|
||||
with t:
|
||||
do_something()
|
||||
time = t.time
|
||||
"""
|
||||
|
||||
def __enter__(self):
|
||||
self.start = timeit.default_timer()
|
||||
|
||||
def __exit__(self, type, value, traceback):
|
||||
finish = timeit.default_timer()
|
||||
self.time = finish - self.start
|
||||
|
||||
@contextmanager
|
||||
def print_time(*args):
|
||||
"""
|
||||
Measures and prints the time taken to execute nested code.
|
||||
args: Additional arguments to print.
|
||||
"""
|
||||
t = Timer()
|
||||
print(*args)
|
||||
with t:
|
||||
yield
|
||||
print(*args, end=' ')
|
||||
print('finished in {0:.2f} second(s)'.format(t.time))
|
||||
Loading…
Reference in New Issue
Block a user