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,22 @@
1
+ require 'build-tool/application'
2
+ require 'build-tool/commands'
3
+
4
+ module BuildTool; module Commands;
5
+
6
+ #
7
+ # Help command
8
+ #
9
+ class Help < Standard
10
+
11
+ name "help"
12
+ description "print this help text"
13
+
14
+ def do_execute( args )
15
+ return Application::instance.cli.show_help( args )
16
+ end
17
+
18
+ end # class Help
19
+
20
+ end; # module Help
21
+
22
+ end; # module BuildTool
@@ -0,0 +1,48 @@
1
+ require 'build-tool/commands'
2
+
3
+ module BuildTool; module Commands;
4
+
5
+ #
6
+ # BuildCommand
7
+ #
8
+ class Info < Standard
9
+
10
+ name "info"
11
+ description "show info"
12
+
13
+ def initialize_options
14
+ super
15
+ end
16
+
17
+ def applicable?
18
+ BuildTool::Application.instance.name != "build-tool"
19
+ end
20
+
21
+ def do_execute( args )
22
+ if args.length != 0
23
+ # *TODO* print better message
24
+ logger.warn "Arguments ignored."
25
+ end
26
+
27
+ recipe = configuration.recipe
28
+ say "Recipe"
29
+ say "------"
30
+ say "Name: #{recipe.name}"
31
+ say "Short: #{recipe.short_description}"
32
+ say "Long: #{recipe.long_description}"
33
+ say "Full Path: #{recipe.global_config_file_path('recipe')}"
34
+ say ""
35
+ say "Configuration"
36
+ say "-------------"
37
+ say "Settings: #{ Application::instance.local_settings_file_path }"
38
+ say "Overrides: #{ recipe.local_config_file_path( 'recipe' ) }"
39
+
40
+ return 0
41
+ end
42
+
43
+ end # class Info
44
+
45
+ end; end # module BuildTool::Commands
46
+
47
+
48
+
@@ -0,0 +1,56 @@
1
+ require 'build-tool/application'
2
+ require 'build-tool/commands'
3
+
4
+ module BuildTool; module Commands;
5
+
6
+ class CtagsError < BuildTool::Error; end
7
+ #
8
+ # BuildCommand
9
+ #
10
+ class Install < ModuleBasedCommand
11
+
12
+ include MJ::Tools::SubProcess
13
+
14
+ name "install"
15
+ description "install the module"
16
+
17
+ def initialize_options
18
+
19
+ @fast = false
20
+
21
+ options.on( "--fast", "Fast install. No compile (if supported)" ) { |t|
22
+ @fast = t
23
+ }
24
+
25
+ super
26
+ end
27
+
28
+ def applicable?
29
+ BuildTool::Application.instance.name != "build-tool"
30
+ end
31
+
32
+ def is_module_ready?( mod )
33
+ isready = true
34
+ if !mod.checkedout?
35
+ logger.warn "#{mod.name}: module not checked out -> skipping."
36
+ end
37
+ return isready
38
+ end
39
+
40
+
41
+ def do_execute_module( mod )
42
+ if mod.checkedout?
43
+ mod.install( @log_directory, @fast )
44
+ else
45
+ logger.info "Not checked out. Skipping"
46
+ end
47
+ end
48
+
49
+ end # class Build
50
+
51
+ end; end # module BuildTool::Commands
52
+
53
+
54
+
55
+
56
+
@@ -0,0 +1,29 @@
1
+ require 'build-tool/commands'
2
+
3
+ module BuildTool; module Commands; module Modules
4
+
5
+ class CLI < Commands::SubCommands
6
+
7
+ name "modules"
8
+ description "Module related commands."
9
+
10
+ def initialize_options
11
+ super
12
+ end
13
+
14
+ def applicable?
15
+ BuildTool::Application.instance.name != "build-tool"
16
+ end
17
+
18
+ def do_execute
19
+ raise NotImplementedError
20
+ end
21
+
22
+ end # class CLI
23
+
24
+ def self.create( *args )
25
+ cmd = CLI.new( *args )
26
+ end
27
+
28
+ end; end; end # module BuildTool::Commands::Modules
29
+
@@ -0,0 +1,75 @@
1
+ require 'build-tool/commands'
2
+
3
+ module BuildTool; module Commands; module Modules
4
+
5
+ #
6
+ # BuildCommand
7
+ #
8
+ class Info < ModuleBasedCommand
9
+
10
+ name "info"
11
+ description "show detailed information about modules."
12
+
13
+ def do_execute_module( mod )
14
+
15
+ if mod.repository
16
+ say "Repository: #{mod.repository.url}/#{mod.remote_path}"
17
+ if mod.repository.sshkey
18
+ say " SSH Key: '#{mod.repository.sshkey.name}' (#{mod.repository.sshkey.file})"
19
+ end
20
+ else
21
+ say "Repository: not configured"
22
+ end
23
+
24
+ if mod.build_prefix
25
+ say "Local Checkout: #{mod.vcs.local_path} #{mod.checkedout? ? '(EXISTS)' : '(TODO)' }"
26
+ say "Build Directory #{mod.build_directory} #{mod.configured? ? '(CONFIGURED)' : '(TODO)' }"
27
+ else
28
+ say "Local Checkout: build-prefix not configured"
29
+ say "Local Checkout: build-prefix not configured"
30
+ end
31
+
32
+ say "Prefix: #{mod.install_prefix.to_s}"
33
+ if mod.environment
34
+ say "Environment:"
35
+ mod.environment.vars.sort.each do |var|
36
+ say " %-20s %s" % [ var + ":", mod.environment[var] ]
37
+ end
38
+ else
39
+ say "Environment: Not configured"
40
+ end
41
+
42
+ say "VCS: #{mod.vcs_configuration ? mod.vcs_configuration.name : 'not configured' }"
43
+ if mod.vcs_configuration
44
+ case mod.vcs_configuration.name
45
+ when 'svn'
46
+ when 'git'
47
+ say " Remote: %s -> %s" % [ "origin", mod.vcs_configuration.repository.url ]
48
+ mod.vcs_configuration.remote.each do |key, val|
49
+ say " Remote: %s -> %s" % [ key, val.url ]
50
+ end
51
+ when 'git-svn'
52
+ mod.vcs_configuration.externals.each do |key, val|
53
+ say " External: #{key} -> #{val}"
54
+ end
55
+ else
56
+ logger.warn "Unknown vcs #{mod.vcs_configuration.name}"
57
+ end
58
+ say " Track branch: #{mod.vcs_configuration.track_remote}/#{mod.vcs_configuration.track_branch}"
59
+ end # if mod.vcs_configuration
60
+
61
+ bs = mod.build_system
62
+ say "Build System: #{bs.name}"
63
+ say " Out Of Source Build #{bs.out_of_source}"
64
+ bs.options.sort.each do |var|
65
+ say " %-25s %s" % [ var + ":", bs[var] ]
66
+ end
67
+
68
+ return 0
69
+ end
70
+
71
+ end # class Info
72
+
73
+ end; end; end # module BuildTool::Commands::Modules
74
+
75
+
@@ -0,0 +1,49 @@
1
+ require 'build-tool/commands'
2
+
3
+ module BuildTool; module Commands; module Modules
4
+
5
+ #
6
+ # BuildCommand
7
+ #
8
+ class List < Standard
9
+
10
+ name "list"
11
+ description "list modules"
12
+ cmdalias "lsmods"
13
+
14
+ def initialize_options
15
+ @all = false
16
+
17
+ options.on( "--all", "Include template modules" ) {
18
+ @all = true
19
+ }
20
+
21
+ super
22
+
23
+ end
24
+
25
+ def do_execute( args )
26
+ # *TODO* listing local and remote recipes
27
+ if args.length == 0
28
+ configuration.modules.each do |mod|
29
+ if @all or not mod.is_template?
30
+ say "%-30s : %s" % [ mod.name, mod.description ]
31
+ end
32
+ end
33
+ else
34
+ args.each do |arg|
35
+ mods = complete_modules( arg, @all )
36
+ next if !mods
37
+ mods.each do |mod|
38
+ say "%-30s : %s" % [ mod.name, mod.description ]
39
+ end
40
+ end
41
+ end
42
+
43
+ return 0
44
+ end
45
+
46
+ end # class
47
+
48
+ end; end; end # module BuildTool::Commands::Modules
49
+
@@ -0,0 +1,40 @@
1
+ require 'build-tool/commands'
2
+
3
+ module BuildTool; module Commands; module Modules
4
+
5
+ #
6
+ # BuildCommand
7
+ #
8
+ class Shell < Standard
9
+
10
+ include MJ::Tools::SubProcess
11
+
12
+ name "shell"
13
+ description "open a shell having the modules environment."
14
+
15
+ def initialize_options
16
+ super
17
+ end
18
+
19
+ def do_execute( args )
20
+ # Check the number of commandline args
21
+ if args.length != 1
22
+ return usage( "Wrong number of arguments" )
23
+ end
24
+
25
+ # Translate argument into modules
26
+ mod = complete_modules( args[0] )
27
+ if mod.length != 1
28
+ return usage( "This command only works on one module" )
29
+ end
30
+
31
+ # Get our one and only module
32
+ mod[0].environment.shell
33
+ end
34
+
35
+ end # class Shell
36
+
37
+ end; end; end # module BuildTool::Commands::Modules
38
+
39
+
40
+
@@ -0,0 +1,46 @@
1
+ require 'build-tool/application'
2
+ require 'build-tool/commands'
3
+
4
+ module BuildTool; module Commands;
5
+
6
+ class CtagsError < BuildTool::Error; end
7
+ #
8
+ # BuildCommand
9
+ #
10
+ class Rebase < ModuleBasedCommand
11
+
12
+ include MJ::Tools::SubProcess
13
+
14
+ name "rebase"
15
+ description "rebase local checkout against previously fetched remote changes."
16
+
17
+ def applicable?
18
+ BuildTool::Application.instance.name != "build-tool"
19
+ end
20
+
21
+ def is_module_ready?( mod )
22
+ isready = true
23
+ if !mod.checkedout?
24
+ logger.warn "#{mod.name}: module not checked out -> skipping."
25
+ end
26
+ if !mod.vcs.fetching_supported?
27
+ logger.warn "#{mod.name}: fetching not support by #{mod.vcs.name} -> will have no effect."
28
+ end
29
+ return isready
30
+ end
31
+
32
+
33
+ def do_execute_module( mod )
34
+ if mod.checkedout?
35
+ mod.rebase( @log_directory )
36
+ else
37
+ logger.info "Not checked out. Skipping"
38
+ end
39
+ end
40
+
41
+ end # class Build
42
+
43
+ end; end # module BuildTool::Commands
44
+
45
+
46
+
@@ -0,0 +1,32 @@
1
+ require 'build-tool/commands'
2
+
3
+ module BuildTool; module Commands; module Recipes
4
+
5
+ #
6
+ # BuildCommand
7
+ #
8
+ class CLI < Commands::SubCommands
9
+
10
+ name "recipes"
11
+ description "build recipe related commands"
12
+
13
+ def initialize_options
14
+ super
15
+ end
16
+
17
+ def applicable?
18
+ BuildTool::Application.instance.name == "build-tool"
19
+ end
20
+
21
+ def do_execute
22
+ raise NotImplementedError
23
+ end
24
+
25
+ end # class CLI
26
+
27
+ def self.create( *args )
28
+ cmd = CLI.new( *args )
29
+ end
30
+
31
+ end; end; end # module BuildTool::Commands::Recipes
32
+
@@ -0,0 +1,46 @@
1
+ require 'build-tool/commands'
2
+ require 'build-tool/recipe'
3
+
4
+ module BuildTool; module Commands; module Recipes
5
+
6
+ #
7
+ # BuildCommand
8
+ #
9
+ class Info < Standard
10
+
11
+ name "info"
12
+ description "show information about a module."
13
+
14
+ def initialize_options
15
+ super
16
+ end
17
+
18
+ def do_execute( args )
19
+ if ( args.length != 1 )
20
+ return usage( args.length == 0 ? "Not enough arguments" : "To many arguments" )
21
+ end
22
+
23
+ rec = Recipe.new( args[0] )
24
+ say "Description: #{rec.short_description}"
25
+ say "Website: #{rec.website}" if rec.website
26
+ say "Repository: #{rec.repository}" if rec.repository
27
+ say "Browse Repository: #{rec.browse_repository}" if rec.browse_repository
28
+ if rec.long_description
29
+ say "Long Description:"
30
+ for line in rec.long_description
31
+ say " #{line.chomp}"
32
+ end
33
+ say ""
34
+ end
35
+
36
+ return 0
37
+ end
38
+
39
+ end # class
40
+
41
+ end; end # module Commands::Recipes
42
+
43
+ end; # module BuildTool
44
+
45
+
46
+