build-tool 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +28 -1
  3. data/Manifest.txt +91 -52
  4. data/README.txt +63 -0
  5. data/Rakefile +20 -23
  6. data/bin/build-tool +53 -0
  7. data/lib/build-tool.rb +7 -0
  8. data/lib/build-tool/GUI.rb +360 -0
  9. data/lib/build-tool/application.rb +84 -0
  10. data/lib/build-tool/build-system/autoconf.rb +60 -0
  11. data/lib/build-tool/build-system/base.rb +142 -0
  12. data/lib/build-tool/build-system/cmake.rb +119 -0
  13. data/lib/build-tool/build-system/custom.rb +115 -0
  14. data/lib/build-tool/build-system/qt.rb +113 -0
  15. data/lib/build-tool/cfg/lexer.rb +558 -0
  16. data/lib/build-tool/cfg/lexer.rex +248 -0
  17. data/lib/build-tool/cfg/lexer_base.rb +82 -0
  18. data/lib/build-tool/cfg/node.rb +94 -0
  19. data/lib/build-tool/cfg/parser.rb +871 -0
  20. data/lib/build-tool/cfg/parser.y +279 -0
  21. data/lib/build-tool/cfg/visitor.rb +471 -0
  22. data/lib/build-tool/commands.rb +639 -0
  23. data/lib/build-tool/commands/build.rb +120 -0
  24. data/lib/build-tool/commands/configure.rb +73 -0
  25. data/lib/build-tool/commands/ctags.rb +46 -0
  26. data/lib/build-tool/commands/environments.rb +29 -0
  27. data/lib/build-tool/commands/environments/list.rb +37 -0
  28. data/lib/build-tool/commands/environments/set.rb +33 -0
  29. data/lib/build-tool/commands/fetch.rb +50 -0
  30. data/lib/build-tool/commands/files.rb +73 -0
  31. data/lib/build-tool/commands/help.rb +22 -0
  32. data/lib/build-tool/commands/info.rb +48 -0
  33. data/lib/build-tool/commands/install.rb +56 -0
  34. data/lib/build-tool/commands/modules.rb +29 -0
  35. data/lib/build-tool/commands/modules/info.rb +75 -0
  36. data/lib/build-tool/commands/modules/list.rb +49 -0
  37. data/lib/build-tool/commands/modules/shell.rb +40 -0
  38. data/lib/build-tool/commands/rebase.rb +46 -0
  39. data/lib/build-tool/commands/recipes.rb +32 -0
  40. data/lib/build-tool/commands/recipes/info.rb +46 -0
  41. data/lib/build-tool/commands/recipes/install.rb +184 -0
  42. data/lib/build-tool/commands/recipes/list.rb +33 -0
  43. data/lib/build-tool/configuration.rb +115 -0
  44. data/lib/build-tool/environment.rb +119 -0
  45. data/lib/build-tool/errors.rb +9 -0
  46. data/lib/build-tool/module.rb +366 -0
  47. data/lib/build-tool/pluginbase.rb +43 -0
  48. data/lib/build-tool/recipe.rb +180 -0
  49. data/lib/build-tool/repository.rb +59 -0
  50. data/lib/build-tool/server.rb +43 -0
  51. data/lib/build-tool/singleton.rb +50 -0
  52. data/lib/build-tool/sshkey.rb +22 -0
  53. data/lib/build-tool/vcs/base.rb +105 -0
  54. data/lib/build-tool/vcs/git-svn.rb +154 -0
  55. data/lib/build-tool/vcs/git.rb +187 -0
  56. data/lib/build-tool/vcs/svn.rb +136 -0
  57. data/lib/mj/logging.rb +31 -0
  58. data/lib/mj/tools/ssh.rb +64 -0
  59. data/lib/{kde-build → mj/tools}/subprocess.rb +21 -16
  60. data/lib/mj/visitor.rb +21 -0
  61. data/recipes/kde/files/finish_installation.sh +16 -0
  62. data/recipes/kde/files/kde4.desktop +22 -0
  63. data/recipes/kde/files/xsession +89 -0
  64. data/recipes/kde/info.yaml +10 -0
  65. data/recipes/kde/recipe +585 -0
  66. data/recipes/kde/recipe-local +90 -0
  67. data/recipes/kde/settings.yaml +52 -0
  68. data/recipes/kde43/info.yaml +10 -0
  69. data/recipes/kde43/recipe +256 -0
  70. data/recipes/kde43/recipe-local +90 -0
  71. data/recipes/kde43/settings.yaml +32 -0
  72. data/recipes/kdeqt4.6/custom/qt/qtscriptgenerator/compile.sh +77 -0
  73. data/recipes/kdeqt4.6/custom/qt/qtscriptgenerator/configure.sh +70 -0
  74. data/recipes/kdeqt4.6/custom/qt/qtscriptgenerator/install.sh +39 -0
  75. data/recipes/kdeqt4.6/info.yaml +7 -0
  76. data/recipes/kdeqt4.6/recipe +155 -0
  77. data/recipes/kdeqt4.6/recipe-local +30 -0
  78. data/recipes/kdeqt4.6/settings.yaml +27 -0
  79. data/tags +745 -0
  80. data/tasks/genfiles.rake +28 -0
  81. data/tasks/rdoc.rake +34 -0
  82. data/tasks/rspec.rake +21 -0
  83. data/test.rb +28 -0
  84. data/test/commands/test_build.rb +29 -0
  85. data/test/test_build_system.rb +98 -0
  86. data/test/test_cli.rb +61 -0
  87. data/test/test_command.rb +175 -0
  88. data/test/test_configuration_parser.rb +542 -0
  89. data/test/test_environment.rb +82 -0
  90. data/test/test_helper.rb +39 -7
  91. data/test/test_module.rb +158 -0
  92. data/test/test_repository.rb +75 -0
  93. data/test/test_singleton.rb +51 -0
  94. data/test/test_ssh_key.rb +14 -0
  95. data/test/test_svn_parser.rb +28 -0
  96. data/test/test_vcs.rb +33 -0
  97. metadata +139 -90
  98. metadata.gz.sig +0 -0
  99. data/PostInstall.txt +0 -3
  100. data/TODO +0 -2
  101. data/bin/kde-build.rb +0 -21
  102. data/config/website.yml +0 -2
  103. data/config/website.yml.sample +0 -2
  104. data/lib/kde-build.rb +0 -18
  105. data/lib/kde-build/application.rb +0 -270
  106. data/lib/kde-build/build_system.rb +0 -28
  107. data/lib/kde-build/build_system/autoconf.rb +0 -108
  108. data/lib/kde-build/build_system/base.rb +0 -139
  109. data/lib/kde-build/build_system/cmake.rb +0 -94
  110. data/lib/kde-build/build_system/qtcopy.rb +0 -127
  111. data/lib/kde-build/command.rb +0 -42
  112. data/lib/kde-build/command/build.rb +0 -106
  113. data/lib/kde-build/command/compile.rb +0 -39
  114. data/lib/kde-build/command/configure.rb +0 -48
  115. data/lib/kde-build/command/ctags.rb +0 -41
  116. data/lib/kde-build/command/fetch.rb +0 -33
  117. data/lib/kde-build/command/help.rb +0 -71
  118. data/lib/kde-build/command/info.rb +0 -45
  119. data/lib/kde-build/command/install.rb +0 -39
  120. data/lib/kde-build/command/module_based.rb +0 -44
  121. data/lib/kde-build/command/rebase.rb +0 -50
  122. data/lib/kde-build/command/version.rb +0 -43
  123. data/lib/kde-build/configuration.rb +0 -209
  124. data/lib/kde-build/exception.rb +0 -6
  125. data/lib/kde-build/metaaid.rb +0 -18
  126. data/lib/kde-build/module.rb +0 -227
  127. data/lib/kde-build/module_configuration.rb +0 -107
  128. data/lib/kde-build/moduleregistry.rb +0 -85
  129. data/lib/kde-build/tools/ctags.rb +0 -59
  130. data/lib/kde-build/tools/logging.rb +0 -49
  131. data/lib/kde-build/tools/make.rb +0 -58
  132. data/lib/kde-build/tools/ssh.rb +0 -47
  133. data/lib/kde-build/vcs.rb +0 -28
  134. data/lib/kde-build/vcs/base.rb +0 -85
  135. data/lib/kde-build/vcs/git-svn.rb +0 -139
  136. data/lib/kde-build/vcs/git.rb +0 -121
  137. data/lib/kde-build/vcs/svn.rb +0 -102
  138. data/script/console +0 -10
  139. data/script/destroy +0 -14
  140. data/script/generate +0 -14
  141. data/script/txt2html +0 -71
  142. data/test.yaml.tmpl +0 -632
  143. data/test/test_kde-build.rb +0 -11
  144. data/test/test_vcs_svn.rb +0 -44
  145. data/website/index.html +0 -84
  146. data/website/index.txt +0 -59
  147. data/website/javascripts/rounded_corners_lite.inc.js +0 -285
  148. data/website/stylesheets/screen.css +0 -159
  149. data/website/template.html.erb +0 -50
@@ -0,0 +1,542 @@
1
+ require 'pathname'
2
+ require Pathname.new( File.dirname(__FILE__)).join( 'test_helper' ).cleanpath
3
+
4
+ require 'build-tool/cfg/parser'
5
+
6
+ class TestConfigurationParser < Test::Unit::TestCase
7
+
8
+ def test_build_system
9
+ text = <<-EOS
10
+ # Check that build systems are open. You can add to them. by just
11
+ # redeclaring them
12
+ build-system cmake
13
+ option CMAKE_CXXFLAGS "-Wall"
14
+ option CMAKE_VERBOSE_MAKEFILE "1"
15
+ end
16
+
17
+ # Add a value
18
+ build-system cmake
19
+ option CMAKE_BUILD_TYPE "Debug"
20
+ end
21
+
22
+ # Overwrite a value
23
+ build-system cmake
24
+ option CMAKE_CXXFLAGS "-Wall -pipe -O0"
25
+ end
26
+ EOS
27
+ parser = BuildTool::Cfg::Parser.new
28
+ configuration = parser.parse_string(text)
29
+
30
+ default = configuration.build_system("cmake")
31
+ assert_not_nil default
32
+ assert_equal "-Wall -pipe -O0", default['CMAKE_CXXFLAGS']
33
+ assert_equal "1", default['CMAKE_VERBOSE_MAKEFILE']
34
+ assert_equal "Debug", default['CMAKE_BUILD_TYPE']
35
+ end
36
+
37
+ def test_environment
38
+ text = <<-EOS
39
+ # Check that environments are open. You can add to them. by just
40
+ # redeclaring them
41
+ environment default
42
+ var PATH set "/usr/bin"
43
+ var MANPATH set "/usr/share/man"
44
+ end
45
+
46
+ environment default
47
+ var PATH set "/usr/bin:/bin"
48
+ var PKG_CONFIG_PATH set "/usr/lib64/pkgconfig"
49
+ end
50
+
51
+ environment copy < default
52
+ end
53
+
54
+ # Test inheritance
55
+ environment kde4 < default
56
+ var PATH prepend "/opt/kde4/bin"
57
+ var MANPATH append "/opt/kde4/share/man"
58
+ var PKG_CONFIG_PATH set "/opt/kde4/lib64/pkgconfig"
59
+ end
60
+ EOS
61
+ parser = BuildTool::Cfg::Parser.new
62
+ configuration = parser.parse_string(text)
63
+
64
+ default = configuration.environment("default")
65
+ assert_not_nil default
66
+ assert_equal "/usr/bin:/bin", default['PATH']
67
+ assert_equal "/usr/share/man", default['MANPATH']
68
+ assert_equal "/usr/lib64/pkgconfig", default['PKG_CONFIG_PATH']
69
+
70
+ # Copy is just that. a copy
71
+ copy = configuration.environment("copy")
72
+ assert_not_nil copy
73
+ assert_equal default['PATH'], copy['PATH']
74
+ assert_equal default['MANPATH'], copy['MANPATH']
75
+ assert_equal default['PKG_CONFIG_PATH'], copy['PKG_CONFIG_PATH']
76
+
77
+ # kde4 add to default
78
+ kde4 = configuration.environment("kde4")
79
+ assert_not_nil kde4
80
+ assert_equal "/opt/kde4/bin:/usr/bin:/bin", kde4['PATH']
81
+ assert_equal "/usr/share/man:/opt/kde4/share/man", kde4['MANPATH']
82
+ assert_equal "/opt/kde4/lib64/pkgconfig", kde4['PKG_CONFIG_PATH']
83
+ end
84
+
85
+ def test_repository
86
+ text = <<-EOS
87
+ server kde
88
+ protocol "svn+ssh"
89
+ host "svn.kde.org"
90
+ end
91
+
92
+ repository kde
93
+ server kde
94
+ path "KDE"
95
+ end
96
+
97
+ repository kde
98
+ user mjansen
99
+ end
100
+
101
+ server kde
102
+ protocol "svn+ssh"
103
+ host "svn.kde.org"
104
+ path "home/kde"
105
+ end
106
+ EOS
107
+ parser = BuildTool::Cfg::Parser.new
108
+ configuration = parser.parse_string(text)
109
+
110
+ default = configuration.repository("kde")
111
+ assert_not_nil default
112
+ assert_equal "svn+ssh", default.server.protocol
113
+ assert_equal "svn.kde.org", default.server.host
114
+ assert_equal "home/kde", default.server.path
115
+ assert_equal "mjansen", default.user
116
+ assert_equal "KDE", default.path
117
+ assert_equal "svn+ssh://mjansen@svn.kde.org/home/kde/KDE", default.url
118
+ end
119
+
120
+ def test_module
121
+ text = <<-EOS
122
+ environment kdelibs end
123
+
124
+ server kde
125
+ protocol "svn+ssh"
126
+ host "svn.kde.org"
127
+ end
128
+
129
+ repository kde
130
+ server kde
131
+ path "/home/kde"
132
+ end
133
+
134
+ repository kde-core
135
+ server kde
136
+ path "/home/kde"
137
+ end
138
+
139
+ module kdelibs
140
+ use environment kdelibs
141
+ use repository kde-core
142
+ use vcs git-svn
143
+ local-path "kdelibs"
144
+ end
145
+
146
+ module kdelibs
147
+ remote-path "kdelibs2"
148
+ use repository kde
149
+ build-prefix "/build/kde"
150
+ end
151
+ EOS
152
+ parser = BuildTool::Cfg::Parser.new
153
+ configuration = parser.parse_string(text)
154
+
155
+ kdelibs = configuration.module("kdelibs")
156
+ assert_not_nil kdelibs
157
+ assert_equal "kdelibs", kdelibs.name
158
+ assert_not_nil kdelibs.repository
159
+ assert_equal "kde", kdelibs.repository.name
160
+ assert_equal "kdelibs", kdelibs.environment.name
161
+ assert_equal "kdelibs", kdelibs.local_path
162
+ assert_equal "kdelibs2", kdelibs.remote_path
163
+ assert_equal "/build/kde/src/kdelibs", kdelibs.source_directory
164
+ assert_equal "/build/kde/bld/kdelibs", kdelibs.build_directory
165
+ assert_equal "/build/kde/src/kdelibs", kdelibs.vcs.local_path
166
+ end
167
+
168
+ def test_module_inheritance
169
+ text = <<-EOS
170
+ environment kdelibs end
171
+
172
+ server kde
173
+ protocol "svn+ssh"
174
+ host "svn.kde.org"
175
+ end
176
+
177
+ repository kde
178
+ server kde
179
+ path "/home"
180
+ user mjansen
181
+ end
182
+
183
+ module kdelibs
184
+ use environment kdelibs
185
+ use repository kde
186
+ use build-system cmake
187
+ use vcs git-svn
188
+ local-path "kdelibs"
189
+ end
190
+
191
+ # test inheritance
192
+ module kdebase-runtime < kdelibs
193
+ end
194
+
195
+ module kdebase-workspace < kdebase-runtime
196
+ use vcs svn
197
+ environment kdebase end
198
+ end
199
+
200
+ module kdelibs_copy < kdelibs
201
+ use vcs svn
202
+ end
203
+
204
+ module kdelibs
205
+ remote-path "kdelibs2"
206
+ build-prefix "/build/kde"
207
+ end
208
+ EOS
209
+ parser = BuildTool::Cfg::Parser.new
210
+ configuration = parser.parse_string(text)
211
+
212
+ kdelibs = configuration.module("kdelibs")
213
+ assert_not_nil kdelibs
214
+ assert_equal "kdelibs", kdelibs.name
215
+ assert_equal "kde", kdelibs.repository.name
216
+ assert_equal "kdelibs", kdelibs.environment.name
217
+ assert_equal "kdelibs", kdelibs.local_path
218
+ assert_equal "kdelibs2", kdelibs.remote_path
219
+ assert_equal "/build/kde/src/kdelibs", kdelibs.source_directory
220
+ assert_equal "/build/kde/bld/kdelibs", kdelibs.build_directory
221
+ assert_equal "/build/kde/src/kdelibs", kdelibs.vcs.local_path
222
+
223
+ mod = configuration.module("kdebase-runtime")
224
+ assert_not_nil mod
225
+ assert_equal "kdebase-runtime", mod.name
226
+ assert_equal kdelibs.repository, mod.repository
227
+ assert_equal kdelibs.build_prefix, mod.build_prefix
228
+ assert_equal kdelibs.repository.name, mod.repository.name
229
+ assert_equal kdelibs.environment.name, mod.environment.name
230
+ # Those are not inherited and fall back to module name
231
+ assert_equal "kdebase-runtime", mod.local_path
232
+ assert_equal "kdebase-runtime", mod.remote_path
233
+ assert_equal "/build/kde/src/kdebase-runtime", mod.source_directory
234
+ assert_equal "/build/kde/bld/kdebase-runtime", mod.build_directory
235
+ assert_equal "/build/kde/src/kdebase-runtime", mod.vcs.local_path
236
+ # Check we work on a copy
237
+ assert_equal "/build/kde/src/kdelibs", kdelibs.vcs.local_path
238
+
239
+ mod = configuration.module("kdebase-workspace")
240
+ assert_not_nil mod
241
+ assert_equal "kdebase-workspace", mod.name
242
+ assert_equal "kdebase", mod.environment.name
243
+ assert_equal "svn", mod.vcs.name
244
+
245
+ kdelibs = configuration.module("kdelibs_copy")
246
+ assert_not_nil kdelibs
247
+ assert_equal "kdelibs_copy", kdelibs.name
248
+ assert_equal "kde", kdelibs.repository.name
249
+ assert_equal "kdelibs", kdelibs.environment.name
250
+ assert_equal "kdelibs_copy", kdelibs.local_path
251
+ assert_equal "kdelibs_copy", kdelibs.remote_path
252
+ assert_equal "/build/kde/src/kdelibs_copy", kdelibs.source_directory
253
+ assert_equal "/build/kde/bld/kdelibs_copy", kdelibs.build_directory
254
+ assert_equal "/build/kde/src/kdelibs_copy", kdelibs.vcs.local_path
255
+
256
+ end
257
+
258
+ def test_existing_configuration
259
+
260
+ parser = BuildTool::Cfg::Parser.new
261
+
262
+ text = <<-EOS
263
+ environment kdelibs end
264
+
265
+ server kde
266
+ protocol "svn+ssh"
267
+ host "svn.kde.org"
268
+ end
269
+
270
+ repository kde
271
+ server kde
272
+ path "/home"
273
+ user mjansen
274
+ end
275
+
276
+ module kdelibs
277
+ use environment kdelibs
278
+ use repository kde
279
+ use vcs git-svn
280
+ local-path "kdelibs"
281
+ remote-path "kdelibs2"
282
+ build-prefix "/build/kde"
283
+ end
284
+ EOS
285
+ configuration = parser.parse_string(text)
286
+
287
+ kdelibs = configuration.module("kdelibs")
288
+ assert_not_nil kdelibs
289
+ assert_equal "kdelibs", kdelibs.name
290
+ assert_not_nil kdelibs.repository
291
+ assert_equal "kde", kdelibs.repository.name
292
+ assert_equal "kdelibs", kdelibs.environment.name
293
+ assert_equal "kdelibs", kdelibs.local_path
294
+ assert_equal "kdelibs2", kdelibs.remote_path
295
+ assert_equal "/build/kde/src/kdelibs", kdelibs.source_directory
296
+ assert_equal "/build/kde/bld/kdelibs", kdelibs.build_directory
297
+ assert_equal "/build/kde/src/kdelibs", kdelibs.vcs.local_path
298
+
299
+ text2 = <<-EOS
300
+ environment kde2 end
301
+
302
+ # Change one aspect of kdelibs
303
+ module kdelibs
304
+ use environment kde2
305
+ end
306
+
307
+ server kde
308
+ protocol "svn+ssh"
309
+ host "svn.kde.org"
310
+ end
311
+
312
+ # Change the kde repository
313
+ repository kde
314
+ server kde
315
+ path "/home"
316
+ user meier
317
+ end
318
+
319
+ # test inheritance
320
+ module kdebase-runtime < kdelibs
321
+ end
322
+
323
+ module kdebase-workspace < kdebase-runtime
324
+ use vcs svn
325
+ environment kdebase end
326
+ end
327
+ EOS
328
+ parser = BuildTool::Cfg::Parser.new( configuration )
329
+ configuration = parser.parse_string( text2 )
330
+
331
+ kdelibs = configuration.module("kdelibs")
332
+ assert_not_nil kdelibs
333
+ assert_equal "kdelibs", kdelibs.name
334
+ assert_not_nil kdelibs.repository
335
+ assert_equal "kde", kdelibs.repository.name
336
+ assert_equal "kde2", kdelibs.environment.name
337
+ assert_equal "kdelibs", kdelibs.local_path
338
+ assert_equal "kdelibs2", kdelibs.remote_path
339
+ assert_equal "/build/kde/src/kdelibs", kdelibs.source_directory
340
+ assert_equal "/build/kde/bld/kdelibs", kdelibs.build_directory
341
+ assert_equal "/build/kde/src/kdelibs", kdelibs.vcs.local_path
342
+ assert_equal "meier", kdelibs.repository.user
343
+
344
+ mod = configuration.module("kdebase-runtime")
345
+ assert_not_nil mod
346
+ assert_equal "kdebase-runtime", mod.name
347
+ assert_equal kdelibs.repository, mod.repository
348
+ assert_equal kdelibs.build_prefix, mod.build_prefix
349
+ assert_equal kdelibs.repository.name, mod.repository.name
350
+ assert_equal kdelibs.environment.name, mod.environment.name
351
+ # Those are not inherited and fall back to module name
352
+ assert_equal "kdebase-runtime", mod.local_path
353
+ assert_equal "kdebase-runtime", mod.remote_path
354
+ assert_equal "/build/kde/src/kdebase-runtime", mod.source_directory
355
+ assert_equal "/build/kde/bld/kdebase-runtime", mod.build_directory
356
+ assert_equal "/build/kde/src/kdebase-runtime", mod.vcs.local_path
357
+ # Check we work on a copy
358
+ assert_equal "/build/kde/src/kdelibs", kdelibs.vcs.local_path
359
+
360
+ mod = configuration.module("kdebase-workspace")
361
+ assert_not_nil mod
362
+ assert_equal "kdebase-workspace", mod.name
363
+ assert_equal "kdebase", mod.environment.name
364
+ assert_equal "svn", mod.vcs.name
365
+ end
366
+
367
+ def test_sshkeys
368
+ text = <<-EOS
369
+ ssh-key "user@userdomain.example"
370
+ file "~/.ssh/id_dsa"
371
+ end
372
+
373
+ ssh-key "user_other_email@userdomain.example"
374
+ file "~/.ssh/id_other_email_dsa"
375
+ end
376
+ EOS
377
+ parser = BuildTool::Cfg::Parser.new
378
+ configuration = parser.parse_string(text)
379
+
380
+ default = configuration.sshkey("user@userdomain.example")
381
+ assert_not_nil default
382
+ assert_equal File.expand_path( "~/.ssh/id_dsa" ), default.file
383
+
384
+ other = configuration.sshkey("user_other_email@userdomain.example")
385
+ assert_not_nil other
386
+ assert_equal File.expand_path( "~/.ssh/id_other_email_dsa" ), other.file
387
+ end
388
+
389
+ def test_template
390
+ text = <<-EOS
391
+ environment kdelibs end
392
+
393
+ server kde
394
+ protocol "svn+ssh"
395
+ host "svn.kde.org"
396
+ end
397
+
398
+ repository kde
399
+ server kde
400
+ path "/home"
401
+ user mjansen
402
+ end
403
+
404
+ module kdelibstemplate TEMPLATE
405
+ use environment kdelibs
406
+ use repository kde
407
+ use vcs git-svn
408
+ build-prefix "/build/kde"
409
+ end
410
+
411
+ module kdelibs < kdelibstemplate end
412
+ EOS
413
+ parser = BuildTool::Cfg::Parser.new
414
+ configuration = parser.parse_string(text)
415
+
416
+ kdelibs = configuration.module("kdelibs")
417
+ assert_not_nil kdelibs
418
+ assert_equal "kdelibs", kdelibs.name
419
+ assert_not_nil kdelibs.repository
420
+ assert_equal "kde", kdelibs.repository.name
421
+ assert_equal "kdelibs", kdelibs.environment.name
422
+ assert_equal "kdelibs", kdelibs.local_path
423
+ assert_equal "kdelibs", kdelibs.remote_path
424
+ assert_equal "/build/kde/src/kdelibs", kdelibs.source_directory
425
+ assert_equal "/build/kde/bld/kdelibs", kdelibs.build_directory
426
+ assert_equal "/build/kde/src/kdelibs", kdelibs.vcs.local_path
427
+ end
428
+
429
+ # Just test that a complete configuration file with all parts is read
430
+ def test_complete
431
+ text = <<-EOS
432
+ ssh-key "user@userdomain.example"
433
+ file "~/.ssh/id_dsa"
434
+ end
435
+
436
+ build-system cmake
437
+ option CMAKE_CXXFLAGS "-Wall -pipe -O0"
438
+ option CMAKE_VERBOSE_MAKEFILE "1"
439
+ option CMAKE_BUILD_TYPE "Debug"
440
+ end
441
+
442
+ build-system qt
443
+ option flags ""
444
+ end
445
+
446
+ server kde
447
+ protocol "svn+ssh"
448
+ host "svn.kde.org"
449
+ end
450
+
451
+ repository kde
452
+ server kde
453
+ path "/home"
454
+ user mjansen
455
+ end
456
+
457
+ environment default
458
+ var PATH set "/usr/bin:/bin"
459
+ var MANPATH set "/usr/share/man"
460
+ var KDEDIRS set ""
461
+ var PKG_CONFIG_PATH set "/usr/lib64/pkgconfig"
462
+ var LD_LIBRARY_PATH set ""
463
+ end
464
+
465
+ environment kdesupport < default
466
+ var PATH prepend "/opt/kde/support/bin"
467
+ var MANPATH append "/opt/kde/support/share/man"
468
+ var KDEDIRS set "/opt/kde/support"
469
+ var PKG_CONFIG_PATH prepend "/opt/kde/support/lib64/pkgconfig"
470
+ end
471
+
472
+ module kdesupport
473
+ use environment kdesupport
474
+ use repository kde
475
+ end
476
+
477
+
478
+ module kdelibs
479
+
480
+ environment kdelibs < kdesupport
481
+ var PATH prepend "/opt/kde/libs/bin"
482
+ var MANPATH append "/opt/kde/libs/share/man"
483
+ var KDEDIRS prepend "/opt/kde/libs"
484
+ var PKG_CONFIG_PATH prepend "/opt/kde/libs/lib64/pkgconfig"
485
+ end
486
+
487
+ use repository kde
488
+ use build-system cmake
489
+ vcs git-svn
490
+ external "kwin/clients/nitrogen/lib#<%= KDESVNSERVER %>/kde/trunk/KDE/kdebase/runtime/kstyles/oxygen/lib"
491
+ external "kwin/clients/oxygen/lib#<%= KDESVNSERVER %>/kde/trunk/KDE/kdebase/runtime/kstyles/oxygen/lib"
492
+ end
493
+
494
+ remote-path "KDE/kdelibs"
495
+ local-path "KDE/kdelibs"
496
+ install-prefix "/opt/kde/libs"
497
+ build-prefix "~"
498
+
499
+ end
500
+
501
+ environment kdepimlibs < kdesupport
502
+ var PATH prepend "/opt/kde/pimlibs/bin"
503
+ var MANPATH append "/opt/kde/pimlibs/share/man"
504
+ var KDEDIRS prepend "/opt/kde/pimlibs"
505
+ var PKG_CONFIG_PATH prepend "/opt/kde/pimlibs/lib64/pkgconfig"
506
+ end
507
+
508
+ module kdepimlibs
509
+ use environment kdepimlibs
510
+ use repository kde
511
+ end
512
+
513
+ environment kdebase < kdelibs
514
+ var PATH prepend "/opt/kde/base/bin"
515
+ var MANPATH append "/opt/kde/base/share/man"
516
+ var KDEDIRS prepend "/opt/kde/base"
517
+ var PKG_CONFIG_PATH prepend "/opt/kde/base/lib64/pkgconfig"
518
+ end
519
+
520
+ module kdebase
521
+ use environment kdebase
522
+ use repository kde
523
+ end
524
+ EOS
525
+ parser = BuildTool::Cfg::Parser.new
526
+ configuration = parser.parse_string(text)
527
+ kdelibs = configuration.module("kdelibs")
528
+
529
+ assert_not_nil kdelibs
530
+ assert_equal "KDE/kdelibs", kdelibs.remote_path
531
+ assert_equal "KDE/kdelibs", kdelibs.local_path
532
+ assert_equal "/opt/kde/libs", kdelibs.install_prefix.to_s
533
+ assert_not_nil kdelibs.vcs
534
+ assert_equal "git-svn", kdelibs.vcs.name
535
+
536
+ assert_same configuration.repository("kde"), kdelibs.repository
537
+ assert_same configuration.environment("kdelibs"), kdelibs.environment
538
+
539
+ assert_equal "/opt/kde/libs/bin:/opt/kde/support/bin:/usr/bin:/bin", configuration.environment("kdelibs")["PATH"]
540
+ end
541
+
542
+ end