teapot 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e1f73a2d005afa6215f58b96d42e2bf92775768
4
- data.tar.gz: 4f45aabef2c5408870cb54534de67f17a9618bb4
3
+ metadata.gz: ea31b9a04e7f8aa8b31fe1bb85aa765ae2c7087f
4
+ data.tar.gz: a800948d556c67c80f44c627fc02414b9abcddf6
5
5
  SHA512:
6
- metadata.gz: 4c6edc444e2004f83e14684c6e7e3866350250c656493ff8c1b0560f9badd9b22e0acb1390fb41603a7b561cfbfd4a4395386c7a968ce2cec8a1aadc7d1fb4a2
7
- data.tar.gz: d7014fa07c93aa84fafddb44eb032cc90f2950adfc619f8a2812d3dcb47769403a5e323546a591ecddeb4fa5b4229950fc24cf5622092f81633fccfcae7dabd0
6
+ metadata.gz: afc9d164e71e5a45f807e0ae63f318b083a728eeecc8976860f1e34d5638d9e0081031ec37fc4b70ca15bed49698ba60becf6f12d680683428dce2d7ee598290
7
+ data.tar.gz: f93f47ecd26ab2e4f8d8e78ea1260fe187e66358929c1cd23452fcbcd82216e93773ce48097b61147553958ac8126ab68d0802e284dcbf6e654bbac22eb95666
data/README.md CHANGED
@@ -7,23 +7,23 @@ Teapot is a decentralised build tool for managing complex cross-platform project
7
7
  - Generators can simplify the construction of new projects as well as assist with the development of existing ones.
8
8
  - The build subsystem provides a simple set of canonical operations for building libraries and executables to minimise configuration overhead.
9
9
 
10
- [![Build Status](https://secure.travis-ci.org/ioquatix/teapot.png)](http://travis-ci.org/ioquatix/teapot)
11
- [![Code Climate](https://codeclimate.com/github/ioquatix/teapot.png)](https://codeclimate.com/github/ioquatix/teapot)
10
+ [![Build Status](https://secure.travis-ci.org/ioquatix/teapot.svg)](http://travis-ci.org/ioquatix/teapot)
11
+ [![Code Climate](https://codeclimate.com/github/ioquatix/teapot.svg)](https://codeclimate.com/github/ioquatix/teapot)
12
12
  [![Coverage Status](https://coveralls.io/repos/ioquatix/teapot/badge.svg)](https://coveralls.io/r/ioquatix/teapot)
13
13
 
14
14
  ## Installation
15
15
 
16
- Ensure that you already have a working install of Ruby 1.9.3+
16
+ Ensure that you already have a working install of Ruby 2.0.0+ and run the following to install `teapot`:
17
17
 
18
18
  $ gem install teapot
19
19
 
20
20
  ## Usage
21
21
 
22
- Teapot doesn't have a centralised package management system. As such, this example shows how to use an existing open source framework.
22
+ Teapot doesn't have a default centralised package management system but there is a canonical one for developing cross-platform C++ applications. This example shows how to use this framework.
23
23
 
24
24
  Firstly, create your project by running:
25
25
 
26
- $ teapot create "My Project" https://github.com/kurocha project
26
+ $ teapot create "My Project" https://github.com/kurocha platforms unit-test
27
27
  $ cd my-project
28
28
 
29
29
  You will be asked to merge the project file. At present, merge tools are not very good and thus you may need to take a moment to review the changes. You want to keep most of the original file, but you would like to add the `define_target` blocks which are being added.
@@ -31,31 +31,156 @@ You will be asked to merge the project file. At present, merge tools are not ver
31
31
  In the resulting project directory that has been created, you can see the list of dependencies:
32
32
 
33
33
  $ teapot list
34
-
35
- To build your project:
36
-
37
- $ teapot build Application/MyProject
34
+ Package root (from ./my-project):
35
+ #<Teapot::Configuration "my-project" visibility=private>
36
+ - references root from ./my-project
37
+ - clones platforms from https://github.com/kurocha/platforms
38
+ - clones unit-test from https://github.com/kurocha/unit-test
39
+ - clones variants from https://github.com/kurocha/variants
40
+ - clones platform-darwin-osx from https://github.com/kurocha/platform-darwin-osx
41
+ - clones platform-darwin-ios from https://github.com/kurocha/platform-darwin-ios
42
+ - clones build-clang from https://github.com/kurocha/build-clang
43
+ - clones build-darwin from https://github.com/kurocha/build-darwin
44
+ Package platforms (from ./my-project/teapot/packages/my-project/platforms):
45
+ #<Teapot::Configuration "platforms" visibility=public>
46
+ - clones platforms from https://github.com/kurocha/platforms
47
+ - references variants from ./my-project/teapot/packages/platforms/variants
48
+ - references platform-darwin-osx from ./my-project/teapot/packages/platforms/platform-darwin-osx
49
+ - references platform-darwin-ios from ./my-project/teapot/packages/platforms/platform-darwin-ios
50
+ - references build-clang from ./my-project/teapot/packages/platforms/build-clang
51
+ - references build-darwin from ./my-project/teapot/packages/platforms/build-darwin
52
+ Package unit-test (from ./my-project/teapot/packages/my-project/unit-test):
53
+ #<Teapot::Project "Unit Test">
54
+ - License: MIT License
55
+ - Version: 0.1.0
56
+ - Author: Samuel Williams
57
+ #<Teapot::Target "unit-test">
58
+ - depends on "Build/Files"
59
+ - depends on "Build/Clang"
60
+ - depends on :platform
61
+ - depends on "Language/C++11"
62
+ - provides "Library/UnitTest"
63
+ #<Teapot::Target "unit-test-tests">
64
+ - depends on "Build/Clang"
65
+ - depends on :platform
66
+ - depends on "Language/C++11"
67
+ - depends on "Library/UnitTest"
68
+ - provides "Test/UnitTest"
69
+ #<Teapot::Generator "Unit/Test">
70
+ Generates a basic test file in the project.
71
+
72
+ usage: teapot generate Unit/Test Namespace::TestName
73
+ #<Teapot::Configuration "local" visibility=private>
74
+ - clones unit-test from https://github.com/kurocha/unit-test
75
+ - clones platforms from https://github.com/dream-framework/platforms
76
+ - clones build-files from https://github.com/dream-framework/build-files
77
+ - clones variants from https://github.com/dream-framework/variants
78
+ - clones platform-darwin-osx from https://github.com/dream-framework/platform-darwin-osx
79
+ - clones platform-darwin-ios from https://github.com/dream-framework/platform-darwin-ios
80
+ - clones build-clang from https://github.com/dream-framework/build-clang
81
+ - clones build-darwin from https://github.com/dream-framework/build-darwin
82
+ #<Teapot::Configuration "travis" visibility=private>
83
+ - clones unit-test from https://github.com/kurocha/unit-test
84
+ - clones platforms from https://github.com/dream-framework/platforms
85
+ - clones build-files from https://github.com/dream-framework/build-files
86
+ - clones variants from https://github.com/dream-framework/variants
87
+ - clones platform-darwin-osx from https://github.com/dream-framework/platform-darwin-osx
88
+ - clones platform-darwin-ios from https://github.com/dream-framework/platform-darwin-ios
89
+ - clones build-clang from https://github.com/dream-framework/build-clang
90
+ - clones build-darwin from https://github.com/dream-framework/build-darwin
91
+ Package variants (from ./my-project/teapot/packages/my-project/variants):
92
+ #<Teapot::Target "variant-generic">
93
+ - provides "Variant/generic"
94
+ #<Teapot::Target "variant-debug">
95
+ - depends on "Variant/generic"
96
+ - provides "Variant/debug"
97
+ - provides :variant => ["Variant/debug"]
98
+ #<Teapot::Target "variant-release">
99
+ - depends on "Variant/generic"
100
+ - provides "Variant/release"
101
+ - provides :variant => ["Variant/release"]
102
+ Package platform-darwin-osx (from ./my-project/teapot/packages/my-project/platform-darwin-osx):
103
+ #<Teapot::Target "platform-darwin-osx">
104
+ - depends on :variant
105
+ - provides "Platform/darwin-osx"
106
+ - provides :platform => ["Platform/darwin-osx"]
107
+ - provides "Language/C++11"
108
+ - provides "Library/OpenGL"
109
+ - provides "Library/OpenAL"
110
+ - provides "Library/z"
111
+ - provides "Library/bz2"
112
+ Package platform-darwin-ios (from ./my-project/teapot/packages/my-project/platform-darwin-ios):
113
+ #<Teapot::Target "platform-darwin-ios">
114
+ - depends on :variant
115
+ - provides "Platform/darwin-ios"
116
+ - provides :platform => ["Platform/darwin-ios"]
117
+ - provides "Language/C++11"
118
+ - provides "Library/OpenGLES"
119
+ - provides "Library/OpenGL" => ["Library/OpenGLES"]
120
+ - provides "Library/OpenAL"
121
+ - provides "Library/z"
122
+ - provides "Library/bz2"
123
+ - provides "Aggregate/Display"
124
+ #<Teapot::Target "platform-darwin-ios-simulator">
125
+ - depends on :variant
126
+ - provides "Platform/darwin-ios-simulator"
127
+ - provides :platform => ["Platform/darwin-ios-simulator"]
128
+ - provides "Language/C++11"
129
+ - provides "Library/OpenGLES"
130
+ - provides "Library/OpenGL" => ["Library/OpenGLES"]
131
+ - provides "Library/OpenAL"
132
+ - provides "Library/z"
133
+ - provides "Library/bz2"
134
+ - provides "Aggregate/Display"
135
+ Package build-clang (from ./my-project/teapot/packages/my-project/build-clang):
136
+ #<Teapot::Target "build-clang">
137
+ - depends on :linker
138
+ - provides "Build/Clang"
139
+ - provides "Language/C++11"
140
+ Package build-darwin (from ./my-project/teapot/packages/my-project/build-darwin):
141
+ #<Teapot::Target "build-darwin">
142
+ - provides :linker => ["Build/darwin"]
143
+ - provides "Build/darwin"
144
+ Elapsed Time: 0.007s
145
+
146
+ To only see things exported by your current project, you can run:
147
+
148
+ $ teapot list root
149
+
150
+ The new project doesn't define any targets so we can do that now. Add the following to `teapot.rb`:
151
+
152
+ # Build Targets
153
+
154
+ define_target "my-project-tests" do |target|
155
+ target.build do
156
+ run tests: 'UnitTest', source_files: target.package.path.glob("test/MyProject/**/*.cpp")
157
+ end
158
+
159
+ target.depends :platform
160
+ target.depends "Language/C++11"
161
+ target.depends "Library/UnitTest"
162
+
163
+ target.provides "Test/MyProject"
164
+ end
165
+
166
+ We can now build and run unit tests (althoght there aren't any yet):
167
+
168
+ $ teapot build Test/MyProject
169
+ ... snip ...
170
+ [Summary] 0 passed out of 0 total
38
171
 
39
172
  When you build, you need to specify dependencies. If you haven't specified all dependencies, they will be suggested to you.
40
173
 
41
- The resulting libraries will be framework dependent, but are typically located in
174
+ The resulting executables and libraries will be framework dependent, but are typically located in:
42
175
 
43
176
  $ cd teapot/$PROJECT_NAME/platforms/$PLATFORM_NAME/bin/
44
177
  $ ./$PROJECT_NAME
45
178
 
46
179
  ### Example: Compiling TaggedFormat
47
180
 
48
- For Linux (requires `clang-3.2` and `libstdc++-4.8`):
49
-
50
- $ teapot create "Local Tagged Format" https://github.com/kurocha platform-linux variants tagged-format
51
- $ cd local-tagged-format
52
- $ teapot build Library/TaggedFormat variant-debug
53
-
54
- For Mac OS X (requires Xcode Command Line Tools):
55
-
56
- $ teapot create "Local Tagged Format" https://github.com/kurocha platform-darwin-osx variants tagged-format
181
+ $ teapot create "Local Tagged Format" https://github.com/kurocha platforms tagged-format unit-test
57
182
  $ cd local-tagged-format
58
- $ teapot build Library/TaggedFormat variant-debug
183
+ $ teapot build Test/TaggedFormat variant-debug
59
184
 
60
185
  You need to make sure any basic tools, e.g. compilers, system libraries, are installed correctly before building. Consult the platform and library documentation for any dependencies.
61
186
 
@@ -23,11 +23,13 @@ require 'teapot/controller'
23
23
  module Teapot
24
24
  class Controller
25
25
  def clean
26
+ configuration = context.configuration
27
+
26
28
  log "Removing #{configuration.platforms_path}...".color(:cyan)
27
- FileUtils.rm_rf context.configuration.platforms_path
29
+ FileUtils.rm_rf configuration.platforms_path
28
30
 
29
31
  log "Removing #{configuration.packages_path}...".color(:cyan)
30
- FileUtils.rm_rf context.configuration.packages_path
32
+ FileUtils.rm_rf configuration.packages_path
31
33
  end
32
34
  end
33
35
  end
@@ -44,7 +44,10 @@ module Teapot
44
44
  :color => 'grey',
45
45
  }
46
46
 
47
- chain.ordered.each do |(provider, name)|
47
+ chain.ordered.each do |resolution|
48
+ provider = resolution.provider
49
+ name = resolution.name
50
+
48
51
  # Provider is the target that provides the dependency referred to by name.
49
52
  node = g.add_node(name.to_s, base_attributes.dup)
50
53
 
@@ -80,7 +83,10 @@ module Teapot
80
83
 
81
84
  # Put all dependencies at the same level so as to not make the graph too confusing.
82
85
  done = Set.new
83
- chain.ordered.each do |(provider, name)|
86
+ chain.ordered.each do |resolution|
87
+ provider = resolution.provider
88
+ name = resolution.name
89
+
84
90
  p = g.graphs[provider.name] || g.add_subgraph(provider.name, :rank => :same)
85
91
 
86
92
  provider.dependencies.each do |dependency|
@@ -94,7 +100,7 @@ module Teapot
94
100
  end
95
101
  end
96
102
 
97
- # Graphviz::output(g, :path => "graph.pdf")
103
+ Graphviz::output(g, :path => "graph.pdf")
98
104
 
99
105
  puts g.to_dot
100
106
  end
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module Teapot
22
- VERSION = "1.0.0"
22
+ VERSION = "1.0.1"
23
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teapot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-09 00:00:00.000000000 Z
11
+ date: 2016-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rainbow
@@ -220,4 +220,3 @@ test_files:
220
220
  - spec/teapot/substitutions_spec.rb
221
221
  - spec/teapot/target_spec.rb
222
222
  - spec/teapot/target_spec/teapot.rb
223
- has_rdoc: yard