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,28 +0,0 @@
1
- require 'kde-build/build_system/cmake'
2
- require 'kde-build/build_system/qtcopy'
3
- require 'kde-build/build_system/autoconf'
4
-
5
- module BuildTool; module BuildSystem
6
-
7
- @mapping = {
8
- 'cmake' => CMake,
9
- 'qtcopy' => QtCopy,
10
- 'autoconf' => AutoConf
11
- }
12
-
13
- module_function
14
-
15
- def available
16
- @mapping.keys
17
- end
18
-
19
- class UnknownBuildSystemError < Exception; end
20
-
21
- def get( name )
22
- if !available.include? name
23
- raise UnknownBuildSystemError, "Buildsystem '#{name}' is not supported"
24
- end
25
- @mapping[name]
26
- end
27
-
28
- end; end
@@ -1,108 +0,0 @@
1
- require 'kde-build/build_system/base'
2
-
3
- require 'kde-build/tools/make'
4
-
5
- module BuildTool
6
-
7
- module BuildSystem
8
-
9
- class AutoConfError < Exception
10
- end
11
-
12
- class AutoConfConfiguration < BaseConfiguration
13
-
14
- option( 'options', "Command line options for autoconf" )
15
- option( 'autogen-options', "Command line options for autogen.sh." ).required
16
-
17
- def initialize
18
- super
19
- self.name = "autoconf"
20
- end
21
-
22
- end
23
-
24
- class AutoConf < Base
25
-
26
- def initialize( mod )
27
- super
28
- end
29
-
30
- def self.config
31
- AutoConfConfiguration
32
- end
33
-
34
- def self.guess( path )
35
- return File.exist? "#{path}/configure.in"
36
- end
37
-
38
-
39
- def bootstrap_with_autogen
40
- self.class.execute( "#{source_directory}/autogen.sh #{configuration.autogen_options}", build_directory, env )
41
- end
42
-
43
- def bootstrap_with_bootstrap
44
- raise NotImplementedError, "#{self.class}.bootstrap_with_bootstrap"
45
- end
46
-
47
- def bootstrap_with_makefile
48
- raise NotImplementedError, "#{self.class}.bootstrap_with_Makefile"
49
- end
50
-
51
- def bootstrap( force = false )
52
- # Check if we need to bootstrap
53
- if !force and File.exist? "#{source_directory}/configure"
54
- return
55
- end
56
- if File.exist? "#{source_directory}/bootstrap"
57
- return bootstrap_with_bootstrap
58
- elsif File.exist? "#{source_directory}/autogen.sh"
59
- return bootstrap_with_autogen
60
- elsif File.exist? "#{source_directory}/Makefile.cvs"
61
- return bootstrap_with_makefile
62
- end
63
-
64
- throw :AUTOCONF_FAILED_TO_BOOTSTRAP
65
- end
66
-
67
- def reconfigure( clean )
68
- if clean
69
- return false if make( "clean" ) != 0
70
- return false if !bootstrap( true ) != 0
71
- end
72
- configure
73
- end
74
-
75
- def configure
76
- check_build_directory( true )
77
- bootstrap
78
- opt = options || ""
79
- opt += " --prefix=#{prefix}" if prefix
80
- rc = self.class.execute( "#{source_directory}/configure #{opt}", build_directory, env )
81
- rc
82
- end
83
-
84
- def configured?
85
- File.exist? "#{build_directory}/config.status"
86
- end
87
-
88
- def make( command = "", wd = build_directory )
89
- BuildTool::Make.new.make "#{command}", wd
90
- end
91
-
92
- def name
93
- "AutoConf"
94
- end
95
-
96
- def options
97
- configuration.options
98
- end
99
-
100
- Registry.register( 'AutoConf', AutoConf )
101
-
102
- end
103
-
104
- end
105
-
106
- end
107
-
108
-
@@ -1,139 +0,0 @@
1
- require 'kde-build/subprocess'
2
- require 'kde-build/configuration'
3
-
4
- require 'singleton'
5
- require 'pathname'
6
-
7
- module BuildTool
8
-
9
- module BuildSystem
10
-
11
- class Registry
12
-
13
- include Singleton
14
-
15
- @@tools = Hash.new
16
-
17
- def self.register( name, klass )
18
- @@tools[name] = klass
19
- end
20
-
21
-
22
- def self.guess( source_directory )
23
- @@tools.each do |name, bt|
24
- return bt if bt.guess( source_directory )
25
- end
26
- return nil
27
- end
28
-
29
- end
30
-
31
- class BaseConfiguration
32
-
33
- include MJ::Configuration::Configurable
34
-
35
- option( 'name', "Name" )
36
- option( 'inplace', 'Do not use out of source build' ).
37
- default = false
38
-
39
- end
40
-
41
-
42
- class Base
43
-
44
- include MJ::Tools::SubProcess
45
-
46
- attr_accessor :configuration
47
-
48
- def initialize( mod )
49
- @module = mod
50
- end
51
-
52
- def info
53
- puts "Build System: #{name}"
54
- puts " Out Of Source Build: #{!inplace}"
55
- puts " Options: #{options}"
56
- end
57
-
58
- def source_directory
59
- @module.source_directory
60
- end
61
-
62
- def build_directory
63
- if configuration.inplace
64
- @module.source_directory
65
- else
66
- @module.build_directory
67
- end
68
- end
69
-
70
- def inplace
71
- configuration.inplace
72
- end
73
-
74
- def prefix
75
- @module.prefix
76
- end
77
-
78
- def env
79
- @module.env
80
- end
81
-
82
- def build
83
- raise NotImplementedError, "#{self.class}::build in #{self.class}"
84
- end
85
-
86
- def self.config
87
- raise NotImplementedError, "#{self.class}::name in #{self}"
88
- end
89
-
90
- def configure
91
- raise NotImplementedError, "#{self.class}::configure in #{self.class}"
92
- end
93
-
94
- def configured?
95
- raise NotImplementedError, "#{self.class}::configured? in #{self.class}"
96
- end
97
-
98
- def name
99
- raise NotImplementedError, "#{self.class}::name in #{self.class}"
100
- end
101
-
102
- def remove_build_directory
103
- self.class.execute "rm -rf #{build_directory}"
104
- end
105
-
106
- #########
107
- protected
108
- #########
109
-
110
- def check_build_directory( create = false )
111
- if inplace
112
- if File.exist? @module.build_directory
113
- if !File.symlink?( @module.build_directory )
114
- $log.warn( "Could not link build directory to source directory for inplace build of #{@module.name}." )
115
- end
116
- else
117
- FileUtils.mkdir_p( Pathname.new( @module.build_directory ).parent )
118
- File.symlink( @module.source_directory, @module.build_directory )
119
- end
120
- else
121
- if File.exist? build_directory
122
- if File.directory? build_directory
123
- return true
124
- else
125
- raise BuildError, "Build directory #{build_directory} exists and is no directory!"
126
- end
127
- elsif create
128
- FileUtils.mkdir_p( build_directory )
129
- return true
130
- else
131
- return false
132
- end
133
- end
134
- end
135
-
136
- end
137
-
138
- end; end
139
-
@@ -1,94 +0,0 @@
1
- require 'kde-build/build_system/base'
2
-
3
- require 'kde-build/tools/make'
4
-
5
- module BuildTool
6
-
7
- module BuildSystem
8
-
9
- class CMakeConfiguration < BaseConfiguration
10
-
11
- option( 'options', "Command line options for cmake" )
12
- option( 'cmake-prefix-path', "CMAKE_PREFIX_PATH environment variable" )
13
-
14
- def initialize
15
- super
16
- self.name = "cmake"
17
- end
18
-
19
- end
20
-
21
- class CMake < BuildSystem::Base
22
-
23
- def initialize( mod )
24
- super
25
- end
26
-
27
- def self.guess( path )
28
- return File.exist? "#{path}/CMakeLists.txt"
29
- end
30
-
31
- def self.config
32
- CMakeConfiguration
33
- end
34
-
35
- # Execute a cmake command in the context of the build directory
36
- def cmake( command, wd = build_directory )
37
- myenv = env
38
- myenv['CMAKE_PREFIX_PATH'] = cmake_prefix_path
39
- self.class.execute "cmake #{command}", wd, env
40
- end
41
-
42
- def cmake_prefix_path
43
- @configuration.cmake_prefix_path
44
- end
45
-
46
- def make( command = "", wd = build_directory )
47
- BuildTool::Make.new.make "#{command}", wd
48
- end
49
-
50
- def build( target )
51
- check_build_directory( true )
52
- make target
53
- end
54
-
55
- def reconfigure( clean )
56
- if clean
57
- return false if make( "clean" ) != 0
58
- end
59
- return false if self.class.execute( "rm #{build_directory}/CMakeCache.txt" ) != 0
60
- configure
61
- end
62
-
63
- def configure
64
- check_build_directory( true )
65
- opt = options
66
- opt += " -DCMAKE_INSTALL_PREFIX=#{prefix}" if prefix
67
- rc = cmake "#{self.source_directory} #{opt}"
68
- rc
69
- end
70
-
71
- def configured?
72
- File.exist? "#{build_directory}/Makefile"
73
- end
74
-
75
- def info
76
- super
77
- puts " CMAKE_PREFIX_PATH: #{cmake_prefix_path}"
78
- end
79
-
80
- def name
81
- "CMake"
82
- end
83
-
84
- def options
85
- @configuration.options
86
- end
87
-
88
- Registry.register( 'CMake', CMake )
89
-
90
- end
91
-
92
- end
93
-
94
- end
@@ -1,127 +0,0 @@
1
- require 'kde-build/build_system/base'
2
-
3
- require 'kde-build/tools/make'
4
-
5
- module BuildTool
6
-
7
- module BuildSystem
8
-
9
- class QtCopyConfiguration < BaseConfiguration
10
-
11
- option( 'options', "Command line options for qmake" )
12
-
13
- def initialize
14
- super
15
- self.name = "qmake"
16
- end
17
-
18
- end
19
-
20
- class QtCopyError < Exception
21
- end
22
-
23
-
24
- class QtCopy < BuildSystem::Base
25
-
26
- def initialize( mod )
27
- super
28
- end
29
-
30
- def self.guess( path )
31
- return File.exist? "#{path}/qmake/qmake.pro"
32
- end
33
-
34
- def self.config
35
- QtCopyConfiguration
36
- end
37
-
38
- # Execute a qmake command in the context of the build directory
39
- def qmake( command, wd = build_directory )
40
- execute "qmake #{command}", wd, env
41
- end
42
-
43
- def make( command = "", wd = build_directory )
44
- BuildTool::Make.new.make "#{command}", wd
45
- end
46
-
47
- def build( target )
48
- check_build_directory( true )
49
- make target
50
- end
51
-
52
-
53
- def reconfigure( clean = false )
54
- make "confclean" if clean
55
- configure
56
- end
57
-
58
- def configure
59
- check_build_directory( true )
60
- create_configure_new_if_necessary
61
- opt = options
62
- opt += " --prefix=#{prefix}" if prefix
63
- rc = self.class.execute( "sh #{self.source_directory}/configure.new #{opt}", wd = build_directory, env )
64
- rc
65
- end
66
-
67
-
68
- def configured?
69
- return File.exist? "#{build_directory}/bin/qmake"
70
- end
71
-
72
- def create_configure_new
73
- if $noop
74
- $log.info("Creating configure.new")
75
- return
76
- end
77
- begin
78
- confnew = File.new( "#{source_directory}/configure.new", "w" )
79
- conf = File.new( "#{source_directory}/configure", "r" )
80
- conf.each do |line|
81
- confnew.write(
82
- line.
83
- sub("read acceptance", "acceptance=yes").
84
- sub("read commercial", "commercial=o") )
85
- end
86
- confnew.chmod( 0744 )
87
- ensure
88
- conf.close
89
- confnew.close
90
- end
91
- end
92
-
93
- def create_configure_new_if_necessary
94
- confnew_name = "#{source_directory}/configure.new"
95
-
96
- if File.exist? confnew_name
97
- begin
98
- confnew = File.new( "#{source_directory}/configure.new", "r" )
99
- conf = File.new( "#{source_directory}/configure", "r" )
100
- if ( confnew.mtime > conf.mtime )
101
- return
102
- end
103
- ensure
104
- confnew.close
105
- conf.close
106
- end
107
- end
108
- create_configure_new
109
- end
110
-
111
- def name
112
- "QtCopy"
113
- end
114
-
115
- def options
116
- @configuration.options
117
- end
118
-
119
- Registry.register( 'QtCopy', QtCopy )
120
-
121
- end
122
-
123
-
124
- end
125
-
126
- end
127
-