build-tool 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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