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
@@ -1,139 +0,0 @@
1
- # encoding: utf-8
2
- #
3
- require 'kde-build/vcs/base'
4
-
5
- module BuildTool; module VCS
6
-
7
-
8
- class GitSvnConfiguration < BaseConfiguration
9
-
10
- option( "externals", "List of externals to fetch" ).
11
- on_write {
12
- |val|
13
- if val.instance_of?( Array )
14
- a = val.inject([]) {
15
- |arr, v|
16
- v.each_pair {
17
- |val, key|
18
- arr << val << key
19
- }
20
- arr
21
- }
22
- val = Hash[*a]
23
- else
24
- throw :todo
25
- raise Exception, "FIXME"
26
- end
27
- val
28
- }
29
-
30
-
31
- def initialize
32
- super
33
- self.name = "git-svn"
34
- end
35
-
36
- end
37
-
38
- # Git-SVN Error
39
- class GitSvnError < BuildToolError
40
- end
41
-
42
-
43
- # Implementation for the git-svn version control system
44
- # (http://git-scm.org)
45
- class GitSVN < Base
46
-
47
- def initialize( repository, path )
48
- super repository, path
49
- end
50
-
51
- # Check if the local checkout exists.
52
- #
53
- # calls VCS::Base::checkedout? and checks if there is a '.git'
54
- # directory at +path+
55
- def checkedout?
56
- return false if !super
57
- if !File.exists? "#{path}/.git"
58
- $log.debug("Checkout path #{path} is not a git repo")
59
- return false
60
- end
61
- return true
62
- end
63
-
64
- def self.config
65
- GitSvnConfiguration
66
- end
67
-
68
- # Execute a git command in the context of the local git repository
69
- def git_svn( command, wd = path )
70
- self.class.execute "git svn #{command}", wd
71
- end
72
-
73
- # Fetch from +repository+
74
- #
75
- # Initializes the local clone if it does not exist.
76
- def fetch( revision = nil )
77
- if !checkedout? and !$noop
78
- init
79
- end
80
- if revision
81
- cmd = "fetch -r#{revision}"
82
- else
83
- cmd = "fetch"
84
- end
85
- if ( rc = git_svn( cmd ) ) != 0
86
- raise GitSvnError, "Error while fetching: #{rc}"
87
- end
88
- update_externals
89
- end
90
-
91
- # Initialize the local repository
92
- def init( revision = nil )
93
- # Check if path exists
94
- if File.exists? path
95
- raise GitSvnError, "Failed to create repository at '#{path}': Path exists"
96
- end
97
- # Make sure we have a revision
98
- if !revision
99
- revision = SVN.new( repository ).last_changed_rev
100
- end
101
- if !revision or revision == 0
102
- raise GitSvnError, "Failed to retrieve revision to clone from '#{repository}'"
103
- end
104
- # Create the directory
105
- FileUtils.mkdir_p( path ) if !$noop
106
- # Init the repository
107
- if !git_svn "init #{repository}"
108
- raise GitSvnError, "Error while initializing the repo `git svn init '#{repository}'`: #{$?}"
109
- end
110
- fetch( revision )
111
- update_externals
112
- end
113
-
114
- def info
115
- super
116
- puts " Externals: #{configuration.externals.inspect}" if configuration.externals
117
- end
118
-
119
- # Returns Git-SVN
120
- def name
121
- "Git-SVN"
122
- end
123
-
124
- def rebase
125
- return git_svn "rebase -l master"
126
- end
127
-
128
- def update_externals
129
- return if !configuration.externals
130
- configuration.externals.each do |local, remote|
131
- SVN::svn( "checkout #{remote}@HEAD #{local}", wd = path )
132
- end
133
- end
134
-
135
- end
136
-
137
-
138
- end; end
139
-
@@ -1,121 +0,0 @@
1
- # encoding: utf-8
2
- #
3
- # git-svn.rb - GIT-SVN VCS Implementation
4
- #
5
- #
6
- # == Overview
7
- #
8
- # bla bla
9
- #
10
- require 'kde-build/vcs/base'
11
-
12
- module BuildTool; module VCS
13
-
14
- class GitConfiguration < BaseConfiguration
15
-
16
- def initialize
17
- super
18
- self.name = "git"
19
- end
20
-
21
- option( "remote-branch", "The remote branch to checkout" ).
22
- default = "master"
23
-
24
- end
25
-
26
-
27
- # Implementation for the git-svn version control system
28
- # (http://git-scm.org)
29
- class Git < Base
30
-
31
- def initialize( repository, path )
32
- super
33
- end
34
-
35
- def name
36
- "GIT"
37
- end
38
-
39
- def git( command, wd = path )
40
- self.class.execute "git #{command}", wd
41
- end
42
-
43
- def remote_branch
44
- @configuration.remote_branch
45
- end
46
-
47
- def self.config
48
- GitConfiguration
49
- end
50
-
51
- # Check if the local checkout exists.
52
- #
53
- # calls VCS::Base::checkedout? and checks if there is a '.git'
54
- # directory at +path+
55
- def checkedout?
56
- return false if !super
57
- if !File.exists? "#{path}/.git"
58
- $log.debug("Checkout path #{path} is not a git repo")
59
- return false
60
- end
61
- return true
62
- end
63
-
64
- # Fetch from +repository+
65
- #
66
- # Initializes the local clone if it does not exist.
67
- def fetch()
68
- if !checkedout? and !$noop
69
- init
70
- end
71
- cmd = "fetch"
72
- if ( rc = git( cmd ) ) != 0
73
- raise GitError, "Error while fetching: #{rc}"
74
- end
75
- end
76
-
77
-
78
- # Initialize the local repository
79
- def init
80
- # Check if path exists
81
- if File.exists? path
82
- raise GitSvnError, "Failed to create repository at '#{path}': Path exists"
83
- end
84
-
85
- # Create the directory
86
- FileUtils.mkdir_p( File.split(path)[0] ) if !$noop
87
-
88
- # Initialize the repository
89
- if !git( "clone --no-checkout #{repository} #{path}", Pathname.new(path).dirname )
90
- raise GitError, "Error while initializing the repo `git clone --no-checkout '#{repository} #{path}'`: #{$?}"
91
- end
92
-
93
- # Create the local checkout
94
- if remote_branch != "master"
95
- if !git( "checkout --track -b #{remote_branch} origin/#{remote_branch}", path )
96
- raise GitError, "Error while initializing the repo `checkout --track -b '#{remote_branch} origin/#{remote_branch}'`: #{$?}"
97
- end
98
- else
99
- if !git( "checkout #{remote_branch}", path )
100
- raise GitError, "Error while initializing the repo `git checkout #{remote_branch}'`: #{$?}"
101
- end
102
- end
103
-
104
-
105
- fetch()
106
- end
107
-
108
- def info
109
- super
110
- puts " Remote Branch: #{remote_branch.inspect}"
111
- end
112
-
113
- def rebase
114
- return git "rebase origin"
115
- end
116
-
117
- end
118
-
119
-
120
- end
121
- end
@@ -1,102 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'kde-build/vcs/base.rb'
4
-
5
- module BuildTool; module VCS
6
-
7
- class SvnConfiguration < BaseConfiguration
8
-
9
- def initialize
10
- super
11
- self.name = "svn"
12
- end
13
-
14
- end
15
-
16
-
17
- # Implementation for the subversion version control system
18
- # (http://subversion.tigris.org).
19
- class SVN < Base
20
-
21
- def initialize( repository, path = nil )
22
- super
23
- end
24
-
25
- def name
26
- "Subversion"
27
- end
28
-
29
- def self.svn( command, wd, &block )
30
- self.execute( "svn #{command}", wd, &block )
31
- end
32
-
33
- def svn( command, wd = path, &block )
34
- self.class.svn command, wd, &block
35
- end
36
-
37
- def self.config
38
- SvnConfiguration
39
- end
40
-
41
- # Check if the local checkout exists.
42
- #
43
- # calls VCS::Base::checkedout? and checks if there is a '.git'
44
- # directory at +path+
45
- def checkedout?
46
- return false if !super
47
- if !File.exists? "#{path}/.svn"
48
- $log.debug("Checkout path #{path} is not a svn repo")
49
- return false
50
- end
51
- return true
52
- end
53
-
54
- # Returns the last changed revision on the remote repository.
55
- # Return 0 if the last changed revision could not be determined.
56
- def last_changed_rev
57
- info = Hash.new
58
- return 777777 if $noop
59
- svn( "info #{repository}", nil ) {
60
- |line|
61
- key, value = line.chomp.split( ':', 2 )
62
- info[key] = value
63
- }
64
- version = info["Last Changed Rev"];
65
- return version
66
- end
67
-
68
- # Fetch from +repository+
69
- #
70
- # Initializes the local clone if it does not exist.
71
- def fetch()
72
- if !checkedout?
73
- init
74
- end
75
- return true
76
- end
77
-
78
-
79
- # Initialize the local repository
80
- def init
81
- # Check if path exists
82
- if File.exists? path
83
- raise SvnError, "Failed to create repository at '#{path}': Path exists"
84
- end
85
-
86
- # Create the directories parent dir.
87
- FileUtils.mkdir_p( File.dirname( path ) ) if !$noop
88
-
89
- # Init the repository
90
- if !svn "checkout --depth=infinity #{repository}", File.dirname(path)
91
- raise SvnError, "Error during 'svn checkout #{repository}'`: #{$?}"
92
- end
93
- end
94
-
95
- def rebase
96
- return svn "update"
97
- end
98
-
99
-
100
- end
101
-
102
- end; end
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
-
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/kde-build.rb'}"
9
- puts "Loading kde-build gem"
10
- exec "#{irb} #{libs} --simple-prompt"
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/destroy'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Destroy.new.run(ARGV)
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
- APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
-
4
- begin
5
- require 'rubigen'
6
- rescue LoadError
7
- require 'rubygems'
8
- require 'rubigen'
9
- end
10
- require 'rubigen/scripts/generate'
11
-
12
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
- RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
- RubiGen::Scripts::Generate.new.run(ARGV)
@@ -1,71 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- load File.dirname(__FILE__) + "/../Rakefile"
4
- require 'rubyforge'
5
- require 'redcloth'
6
- require 'syntax/convertors/html'
7
- require 'erb'
8
-
9
- download = "http://rubyforge.org/projects/#{$hoe.rubyforge_name}"
10
- version = $hoe.version
11
-
12
- def rubyforge_project_id
13
- RubyForge.new.configure.autoconfig["group_ids"][$hoe.rubyforge_name]
14
- end
15
-
16
- class Fixnum
17
- def ordinal
18
- # teens
19
- return 'th' if (10..19).include?(self % 100)
20
- # others
21
- case self % 10
22
- when 1: return 'st'
23
- when 2: return 'nd'
24
- when 3: return 'rd'
25
- else return 'th'
26
- end
27
- end
28
- end
29
-
30
- class Time
31
- def pretty
32
- return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
33
- end
34
- end
35
-
36
- def convert_syntax(syntax, source)
37
- return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
38
- end
39
-
40
- if ARGV.length >= 1
41
- src, template = ARGV
42
- template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
43
- else
44
- puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
45
- exit!
46
- end
47
-
48
- template = ERB.new(File.open(template).read)
49
-
50
- title = nil
51
- body = nil
52
- File.open(src) do |fsrc|
53
- title_text = fsrc.readline
54
- body_text_template = fsrc.read
55
- body_text = ERB.new(body_text_template).result(binding)
56
- syntax_items = []
57
- body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
58
- ident = syntax_items.length
59
- element, syntax, source = $1, $2, $3
60
- syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
61
- "syntax-temp-#{ident}"
62
- }
63
- title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
64
- body = RedCloth.new(body_text).to_html
65
- body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
66
- end
67
- stat = File.stat(src)
68
- created = stat.ctime
69
- modified = stat.mtime
70
-
71
- $stdout << template.result(binding)