Merge pull request #191 from twpayne/windows-build

Windows build
This commit is contained in:
Tom Payne
2013-02-12 07:24:39 -08:00
5 changed files with 46 additions and 12 deletions

2
.gitignore vendored
View File

@@ -9,6 +9,8 @@
/build/ol.js
/build/ol-all.js
/build/src
/build/phantomjs-*-windows
/build/phantomjs-*-windows.zip
/examples/*.json
/examples/*.combined.js
/examples/example-list.js

2
build.cmd Executable file
View File

@@ -0,0 +1,2 @@
@echo off
%SystemDrive%\Python27\python.exe build.py %*

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env python
from cStringIO import StringIO
import glob
import gzip
import json
import os
import os.path
import re
import shutil
import sys
@@ -13,19 +13,23 @@ from pake import Target, ifind, main, output, rule, target, variables, virtual
if sys.platform == 'win32':
variables.GIT = 'C:/Program Files/Git/bin/git.exe'
variables.GJSLINT = 'gjslint' # FIXME
variables.JAVA = 'C:/Program Files/Java/jre7/bin/java.exe'
ProgramFiles = os.environ.get('ProgramFiles', 'C:\\Program Files')
ProgramFiles_X86 = os.environ.get('ProgramFiles(X86)', 'C:\\Program Files')
Python27 = os.environ.get('SystemDrive', 'C:') + '\\Python27'
variables.GIT = os.path.join(ProgramFiles_X86, 'Git', 'bin', 'git.exe')
variables.GJSLINT = os.path.join(Python27, 'Scripts', 'gjslint.exe')
variables.JAVA = os.path.join(ProgramFiles, 'Java', 'jre7', 'bin', 'java.exe')
variables.JSDOC = 'jsdoc' # FIXME
variables.PHANTOMJS = 'phantomjs' # FIXME
variables.PYTHON = 'C:/Python27/python.exe'
variables.PYTHON = os.path.join(Python27, 'python.exe')
PHANTOMJS_WINDOWS_ZIP = 'build/phantomjs-1.8.1-windows.zip'
PHANTOMJS = 'build/phantomjs-1.8.1-windows/phantomjs.exe'
else:
variables.GIT = 'git'
variables.GJSLINT = 'gjslint'
variables.JAVA = 'java'
variables.JSDOC = 'jsdoc'
variables.PHANTOMJS = 'phantomjs'
variables.PYTHON = 'python'
PHANTOMJS = 'phantomjs'
variables.BRANCH = output('%(GIT)s', 'rev-parse', '--abbrev-ref', 'HEAD').strip()
@@ -40,9 +44,14 @@ EXTERNAL_SRC = [
'build/src/external/src/types.js']
EXAMPLES = [path
for path in glob.glob('examples/*.html')
for path in ifind('examples')
if not path.startswith('examples/standalone/')
if path.endswith('.html')
if path != 'examples/example-list.html']
EXAMPLES_JSON = [example.replace('.html', '.json')
for example in EXAMPLES]
EXAMPLES_SRC = [path
for path in ifind('examples')
if path.endswith('.js')
@@ -193,7 +202,7 @@ def examples_star_combined_js(name, match):
@target('serve', PLOVR_JAR, INTERNAL_SRC, 'test/requireall.js', 'examples')
def serve(t):
t.run('%(JAVA)s', '-jar', PLOVR_JAR, 'serve', glob.glob('build/*.json'), glob.glob('examples/*.json'), glob.glob('test/*.json'))
t.run('%(JAVA)s', '-jar', PLOVR_JAR, 'serve', 'build/ol.json', 'build/ol-all.json', EXAMPLES_JSON, 'test/test.json')
@target('serve-precommit', PLOVR_JAR, INTERNAL_SRC)
@@ -326,9 +335,23 @@ def hostexamples(t):
t.cp('examples/example-list.js', 'examples/example-list.xml', 'examples/Jugl.js', 'build/gh-pages/%(BRANCH)s/examples/')
@target('test', INTERNAL_SRC, 'test/requireall.js', phony=True)
@target('test', PHANTOMJS, INTERNAL_SRC, 'test/requireall.js', phony=True)
def test(t):
t.run('%(PHANTOMJS)s', 'test/phantom-jasmine/run_jasmine_test.coffee', 'test/ol.html')
t.run(PHANTOMJS, 'test/phantom-jasmine/run_jasmine_test.coffee', 'test/ol.html')
if sys.platform == 'win32':
@target(PHANTOMJS, PHANTOMJS_WINDOWS_ZIP, clean=False)
def phantom_js(t):
from zipfile import ZipFile
ZipFile(PHANTOMJS_WINDOWS_ZIP).extractall('build')
@target(PHANTOMJS_WINDOWS_ZIP, clean=False)
def phantomjs_windows_zip(t):
t.download('http://phantomjs.googlecode.com/files/' + os.path.basename(t.name))
else:
virtual(PHANTOMJS)
@target('fixme', phony=True)

View File

@@ -288,7 +288,10 @@ def ifind(*paths):
for path in paths:
for dirpath, dirnames, names in os.walk(path):
for name in names:
yield os.path.join(dirpath, name)
if sys.platform == 'win32':
yield '/'.join(dirpath.split('\\') + [name])
else:
yield os.path.join(dirpath, name)
def main(argv=sys.argv):

View File

@@ -13,12 +13,16 @@ Run build.py:
$ ./build.py
Windows users should run `build` instead.
## Run examples locally
Run the [Plovr](http://plovr.com/) web server with:
$ ./build.py serve
Windows users should run `build serve` instead.
Then, either open one of the example html files from the `examples` directory directly in your browser, or start a simple webserver, for example:
$ python -mSimpleHTTPServer