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.
- data.tar.gz.sig +0 -0
- data/History.txt +28 -1
- data/Manifest.txt +91 -52
- data/README.txt +63 -0
- data/Rakefile +20 -23
- data/bin/build-tool +53 -0
- data/lib/build-tool.rb +7 -0
- data/lib/build-tool/GUI.rb +360 -0
- data/lib/build-tool/application.rb +84 -0
- data/lib/build-tool/build-system/autoconf.rb +60 -0
- data/lib/build-tool/build-system/base.rb +142 -0
- data/lib/build-tool/build-system/cmake.rb +119 -0
- data/lib/build-tool/build-system/custom.rb +115 -0
- data/lib/build-tool/build-system/qt.rb +113 -0
- data/lib/build-tool/cfg/lexer.rb +558 -0
- data/lib/build-tool/cfg/lexer.rex +248 -0
- data/lib/build-tool/cfg/lexer_base.rb +82 -0
- data/lib/build-tool/cfg/node.rb +94 -0
- data/lib/build-tool/cfg/parser.rb +871 -0
- data/lib/build-tool/cfg/parser.y +279 -0
- data/lib/build-tool/cfg/visitor.rb +471 -0
- data/lib/build-tool/commands.rb +639 -0
- data/lib/build-tool/commands/build.rb +120 -0
- data/lib/build-tool/commands/configure.rb +73 -0
- data/lib/build-tool/commands/ctags.rb +46 -0
- data/lib/build-tool/commands/environments.rb +29 -0
- data/lib/build-tool/commands/environments/list.rb +37 -0
- data/lib/build-tool/commands/environments/set.rb +33 -0
- data/lib/build-tool/commands/fetch.rb +50 -0
- data/lib/build-tool/commands/files.rb +73 -0
- data/lib/build-tool/commands/help.rb +22 -0
- data/lib/build-tool/commands/info.rb +48 -0
- data/lib/build-tool/commands/install.rb +56 -0
- data/lib/build-tool/commands/modules.rb +29 -0
- data/lib/build-tool/commands/modules/info.rb +75 -0
- data/lib/build-tool/commands/modules/list.rb +49 -0
- data/lib/build-tool/commands/modules/shell.rb +40 -0
- data/lib/build-tool/commands/rebase.rb +46 -0
- data/lib/build-tool/commands/recipes.rb +32 -0
- data/lib/build-tool/commands/recipes/info.rb +46 -0
- data/lib/build-tool/commands/recipes/install.rb +184 -0
- data/lib/build-tool/commands/recipes/list.rb +33 -0
- data/lib/build-tool/configuration.rb +115 -0
- data/lib/build-tool/environment.rb +119 -0
- data/lib/build-tool/errors.rb +9 -0
- data/lib/build-tool/module.rb +366 -0
- data/lib/build-tool/pluginbase.rb +43 -0
- data/lib/build-tool/recipe.rb +180 -0
- data/lib/build-tool/repository.rb +59 -0
- data/lib/build-tool/server.rb +43 -0
- data/lib/build-tool/singleton.rb +50 -0
- data/lib/build-tool/sshkey.rb +22 -0
- data/lib/build-tool/vcs/base.rb +105 -0
- data/lib/build-tool/vcs/git-svn.rb +154 -0
- data/lib/build-tool/vcs/git.rb +187 -0
- data/lib/build-tool/vcs/svn.rb +136 -0
- data/lib/mj/logging.rb +31 -0
- data/lib/mj/tools/ssh.rb +64 -0
- data/lib/{kde-build → mj/tools}/subprocess.rb +21 -16
- data/lib/mj/visitor.rb +21 -0
- data/recipes/kde/files/finish_installation.sh +16 -0
- data/recipes/kde/files/kde4.desktop +22 -0
- data/recipes/kde/files/xsession +89 -0
- data/recipes/kde/info.yaml +10 -0
- data/recipes/kde/recipe +585 -0
- data/recipes/kde/recipe-local +90 -0
- data/recipes/kde/settings.yaml +52 -0
- data/recipes/kde43/info.yaml +10 -0
- data/recipes/kde43/recipe +256 -0
- data/recipes/kde43/recipe-local +90 -0
- data/recipes/kde43/settings.yaml +32 -0
- data/recipes/kdeqt4.6/custom/qt/qtscriptgenerator/compile.sh +77 -0
- data/recipes/kdeqt4.6/custom/qt/qtscriptgenerator/configure.sh +70 -0
- data/recipes/kdeqt4.6/custom/qt/qtscriptgenerator/install.sh +39 -0
- data/recipes/kdeqt4.6/info.yaml +7 -0
- data/recipes/kdeqt4.6/recipe +155 -0
- data/recipes/kdeqt4.6/recipe-local +30 -0
- data/recipes/kdeqt4.6/settings.yaml +27 -0
- data/tags +745 -0
- data/tasks/genfiles.rake +28 -0
- data/tasks/rdoc.rake +34 -0
- data/tasks/rspec.rake +21 -0
- data/test.rb +28 -0
- data/test/commands/test_build.rb +29 -0
- data/test/test_build_system.rb +98 -0
- data/test/test_cli.rb +61 -0
- data/test/test_command.rb +175 -0
- data/test/test_configuration_parser.rb +542 -0
- data/test/test_environment.rb +82 -0
- data/test/test_helper.rb +39 -7
- data/test/test_module.rb +158 -0
- data/test/test_repository.rb +75 -0
- data/test/test_singleton.rb +51 -0
- data/test/test_ssh_key.rb +14 -0
- data/test/test_svn_parser.rb +28 -0
- data/test/test_vcs.rb +33 -0
- metadata +139 -90
- metadata.gz.sig +0 -0
- data/PostInstall.txt +0 -3
- data/TODO +0 -2
- data/bin/kde-build.rb +0 -21
- data/config/website.yml +0 -2
- data/config/website.yml.sample +0 -2
- data/lib/kde-build.rb +0 -18
- data/lib/kde-build/application.rb +0 -270
- data/lib/kde-build/build_system.rb +0 -28
- data/lib/kde-build/build_system/autoconf.rb +0 -108
- data/lib/kde-build/build_system/base.rb +0 -139
- data/lib/kde-build/build_system/cmake.rb +0 -94
- data/lib/kde-build/build_system/qtcopy.rb +0 -127
- data/lib/kde-build/command.rb +0 -42
- data/lib/kde-build/command/build.rb +0 -106
- data/lib/kde-build/command/compile.rb +0 -39
- data/lib/kde-build/command/configure.rb +0 -48
- data/lib/kde-build/command/ctags.rb +0 -41
- data/lib/kde-build/command/fetch.rb +0 -33
- data/lib/kde-build/command/help.rb +0 -71
- data/lib/kde-build/command/info.rb +0 -45
- data/lib/kde-build/command/install.rb +0 -39
- data/lib/kde-build/command/module_based.rb +0 -44
- data/lib/kde-build/command/rebase.rb +0 -50
- data/lib/kde-build/command/version.rb +0 -43
- data/lib/kde-build/configuration.rb +0 -209
- data/lib/kde-build/exception.rb +0 -6
- data/lib/kde-build/metaaid.rb +0 -18
- data/lib/kde-build/module.rb +0 -227
- data/lib/kde-build/module_configuration.rb +0 -107
- data/lib/kde-build/moduleregistry.rb +0 -85
- data/lib/kde-build/tools/ctags.rb +0 -59
- data/lib/kde-build/tools/logging.rb +0 -49
- data/lib/kde-build/tools/make.rb +0 -58
- data/lib/kde-build/tools/ssh.rb +0 -47
- data/lib/kde-build/vcs.rb +0 -28
- data/lib/kde-build/vcs/base.rb +0 -85
- data/lib/kde-build/vcs/git-svn.rb +0 -139
- data/lib/kde-build/vcs/git.rb +0 -121
- data/lib/kde-build/vcs/svn.rb +0 -102
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/script/txt2html +0 -71
- data/test.yaml.tmpl +0 -632
- data/test/test_kde-build.rb +0 -11
- data/test/test_vcs_svn.rb +0 -44
- data/website/index.html +0 -84
- data/website/index.txt +0 -59
- data/website/javascripts/rounded_corners_lite.inc.js +0 -285
- data/website/stylesheets/screen.css +0 -159
- data/website/template.html.erb +0 -50
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'erb'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
require 'build-tool/commands'
|
6
|
+
require 'build-tool/recipe'
|
7
|
+
require 'build-tool/singleton'
|
8
|
+
require 'build-tool/cfg/parser'
|
9
|
+
|
10
|
+
$noop = false
|
11
|
+
|
12
|
+
module BuildTool
|
13
|
+
|
14
|
+
#
|
15
|
+
# The application class
|
16
|
+
#
|
17
|
+
class Application < Singleton
|
18
|
+
|
19
|
+
attr_reader :name
|
20
|
+
attr_reader :application_root
|
21
|
+
attr_reader :cli
|
22
|
+
|
23
|
+
def recipe
|
24
|
+
return @recipe if @recipe
|
25
|
+
configuration
|
26
|
+
@recipe
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize( name, application_root )
|
30
|
+
super()
|
31
|
+
@application_root = Pathname.new( application_root ).expand_path
|
32
|
+
@recipe = nil
|
33
|
+
|
34
|
+
# Determine the recipe name
|
35
|
+
@name = File.basename( name )
|
36
|
+
@name.sub!( "-build", "" )
|
37
|
+
|
38
|
+
# Create the shell
|
39
|
+
@cli = Commands::Shell.new
|
40
|
+
@cli.load_commands( @application_root.join( "lib/build-tool/commands" ), "Commands" )
|
41
|
+
end
|
42
|
+
|
43
|
+
def configuration
|
44
|
+
return @configuration if @configuration
|
45
|
+
logger.debug "Loading configuration for #{name}"
|
46
|
+
load_settings
|
47
|
+
@recipe = BuildTool::Recipe.new( @settings['RECIPE'] || name )
|
48
|
+
@configuration = @recipe.load( name, @settings['SETTINGS'] )
|
49
|
+
end
|
50
|
+
|
51
|
+
def load_settings
|
52
|
+
file = local_settings_file_path
|
53
|
+
if file.exist?
|
54
|
+
@settings = YAML.load_file( file )
|
55
|
+
else
|
56
|
+
raise ConfigurationError, "Configuration File #{file} does not exists!"
|
57
|
+
end
|
58
|
+
@settings
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def local_settings_file_path
|
63
|
+
local_configuration_dir.join("#{name}.yaml")
|
64
|
+
end
|
65
|
+
|
66
|
+
# Return the local configuration dir. Makes sure the directory exists
|
67
|
+
# before returning it
|
68
|
+
def local_configuration_dir
|
69
|
+
return @local_configuration_dir if @local_configuration_dir
|
70
|
+
@local_configuration_dir = Pathname.new( "~/.build-tool" ).expand_path
|
71
|
+
if !@local_configuration_dir.exist?
|
72
|
+
FileUtils.mkdir_p( @local_configuration_dir )
|
73
|
+
end
|
74
|
+
@local_configuration_dir
|
75
|
+
end
|
76
|
+
|
77
|
+
def execute( args )
|
78
|
+
@cli.execute( args )
|
79
|
+
end
|
80
|
+
|
81
|
+
end # class Application
|
82
|
+
|
83
|
+
end
|
84
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module BuildTool; module BuildSystem
|
2
|
+
|
3
|
+
|
4
|
+
#
|
5
|
+
#
|
6
|
+
#
|
7
|
+
class Autoconf < Base
|
8
|
+
|
9
|
+
#
|
10
|
+
### ATTRIBUTES
|
11
|
+
#
|
12
|
+
def intitialize( *args )
|
13
|
+
super( *args )
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
"autoconf"
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
### METHODS
|
22
|
+
#
|
23
|
+
|
24
|
+
def[]( var )
|
25
|
+
case var
|
26
|
+
|
27
|
+
when 'CMAKE_CXXFLAGS'
|
28
|
+
return @options[var]
|
29
|
+
|
30
|
+
else
|
31
|
+
# *TODO* raise correct exception
|
32
|
+
raise NotImplementedError
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def[]=( var, val )
|
37
|
+
case var
|
38
|
+
|
39
|
+
when 'CXXFLAGS'
|
40
|
+
@options[var] = val
|
41
|
+
|
42
|
+
else
|
43
|
+
# *TODO* raise correct exception
|
44
|
+
raise NotImplementedError
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
def install( fast )
|
50
|
+
make( "install" )
|
51
|
+
end
|
52
|
+
|
53
|
+
def install_fast_supported?
|
54
|
+
false
|
55
|
+
end
|
56
|
+
|
57
|
+
end # class Autoconf
|
58
|
+
|
59
|
+
end; end # module BuildTool::BuildSystem
|
60
|
+
|
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'build-tool/errors'
|
2
|
+
|
3
|
+
module BuildTool; module BuildSystem
|
4
|
+
|
5
|
+
#
|
6
|
+
# Base class for all build system implementations
|
7
|
+
#
|
8
|
+
class Base
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@module = nil
|
12
|
+
@options = Hash.new
|
13
|
+
@out_of_source = true
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
### ATTRIBUTES
|
18
|
+
#
|
19
|
+
attr_accessor :module
|
20
|
+
attr_accessor :out_of_source
|
21
|
+
|
22
|
+
def build_directory
|
23
|
+
@module.build_directory
|
24
|
+
end
|
25
|
+
|
26
|
+
def dup
|
27
|
+
cp = self.clone
|
28
|
+
cp.instance_variable_set( "@options", Marshal.load( Marshal.dump( @options ) ) )
|
29
|
+
cp
|
30
|
+
end
|
31
|
+
|
32
|
+
def env
|
33
|
+
@module.environment.values
|
34
|
+
end
|
35
|
+
|
36
|
+
def merge( other )
|
37
|
+
if name == other.name
|
38
|
+
@options.merge!( other.option_hash )
|
39
|
+
@out_of_source = other.out_of_source
|
40
|
+
else
|
41
|
+
raise ConfigurationError, "Can't merge build system #{name} with #{other.name}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def option_hash
|
46
|
+
@options
|
47
|
+
end
|
48
|
+
|
49
|
+
def options
|
50
|
+
@options.keys
|
51
|
+
end
|
52
|
+
|
53
|
+
def install_prefix
|
54
|
+
return @module.install_prefix_required if @module
|
55
|
+
raise ConfigurationError, "No module set for build-system"
|
56
|
+
end
|
57
|
+
|
58
|
+
def source_directory
|
59
|
+
return @module.source_directory_required if @module
|
60
|
+
raise ConfigurationError, "No module set for build-system"
|
61
|
+
end
|
62
|
+
|
63
|
+
#
|
64
|
+
### METHODS
|
65
|
+
#
|
66
|
+
#
|
67
|
+
### VIRTUAL FUNCTIONS
|
68
|
+
#
|
69
|
+
for method in [
|
70
|
+
:configure,
|
71
|
+
:configured?,
|
72
|
+
:make,
|
73
|
+
:name,
|
74
|
+
:reconfigure,
|
75
|
+
:install,
|
76
|
+
:install_fast,
|
77
|
+
:install_fast_supported?
|
78
|
+
|
79
|
+
] do
|
80
|
+
class_eval <<-EOS
|
81
|
+
def #{method}
|
82
|
+
raise NotImplementedError, "Method #{method} is not implemented for class #{self}"
|
83
|
+
end
|
84
|
+
EOS
|
85
|
+
end
|
86
|
+
|
87
|
+
def check_build_directory( create = false )
|
88
|
+
if !out_of_source
|
89
|
+
if File.exist? build_directory
|
90
|
+
if !File.symlink?( build_directory )
|
91
|
+
logger.warn( "Could not link build directory to source directory for inplace build of #{@module.name}." )
|
92
|
+
end
|
93
|
+
else
|
94
|
+
FileUtils.mkdir_p( Pathname.new( build_directory ).parent )
|
95
|
+
File.symlink( source_directory, build_directory )
|
96
|
+
end
|
97
|
+
else
|
98
|
+
if File.exist? build_directory
|
99
|
+
if File.directory? build_directory
|
100
|
+
return true
|
101
|
+
else
|
102
|
+
raise ConfigurationError, "Build directory #{build_directory} exists and is no directory!"
|
103
|
+
end
|
104
|
+
elsif create
|
105
|
+
FileUtils.mkdir_p( build_directory )
|
106
|
+
return true
|
107
|
+
else
|
108
|
+
return false
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def remove_build_directory
|
114
|
+
self.class.execute "rm -rf #{build_directory}"
|
115
|
+
end
|
116
|
+
|
117
|
+
end # class Base
|
118
|
+
|
119
|
+
require 'build-tool/build-system/cmake'
|
120
|
+
require 'build-tool/build-system/custom'
|
121
|
+
require 'build-tool/build-system/qt'
|
122
|
+
|
123
|
+
|
124
|
+
def self.create( name )
|
125
|
+
case name
|
126
|
+
|
127
|
+
when 'cmake'
|
128
|
+
return CMake.new
|
129
|
+
|
130
|
+
when 'qt'
|
131
|
+
return Qt.new
|
132
|
+
|
133
|
+
when 'custom'
|
134
|
+
return Custom.new
|
135
|
+
|
136
|
+
else
|
137
|
+
raise ConfigurationError, "Buildsystem #{name} is not supported!"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
end; end # module BuildTool::BuildSystem
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'mj/tools/subprocess'
|
2
|
+
require 'build-tool/build-system/base'
|
3
|
+
|
4
|
+
module BuildTool; module BuildSystem
|
5
|
+
|
6
|
+
|
7
|
+
#
|
8
|
+
#
|
9
|
+
#
|
10
|
+
class CMake < Base
|
11
|
+
|
12
|
+
include MJ::Tools::SubProcess
|
13
|
+
|
14
|
+
class MakeError < BuildTool::Error; end
|
15
|
+
class CMakeError < BuildTool::Error; end
|
16
|
+
|
17
|
+
def initialize( *args )
|
18
|
+
super( *args )
|
19
|
+
end
|
20
|
+
|
21
|
+
#
|
22
|
+
### ATTRIBUTES
|
23
|
+
#
|
24
|
+
|
25
|
+
# Check if the module is configured
|
26
|
+
def configured?
|
27
|
+
Pathname.new( build_directory ).join( 'Makefile' ).exist?
|
28
|
+
end
|
29
|
+
|
30
|
+
def name
|
31
|
+
"cmake"
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
### METHODS
|
36
|
+
#
|
37
|
+
|
38
|
+
def[]( var )
|
39
|
+
if @options.has_key? var
|
40
|
+
return @options[var]
|
41
|
+
end
|
42
|
+
|
43
|
+
case var
|
44
|
+
|
45
|
+
when 'CMAKE_BUILD_TYPE', 'CMAKE_CXXFLAGS', 'CMAKE_VERBOSE_MAKEFILE', 'LIB_SUFFIX'
|
46
|
+
return ""
|
47
|
+
|
48
|
+
else
|
49
|
+
# *TODO* raise correct exception
|
50
|
+
raise NotImplementedError
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def[]=( var, val )
|
56
|
+
@options[var] = val
|
57
|
+
end
|
58
|
+
|
59
|
+
# Configure the module
|
60
|
+
def reconfigure()
|
61
|
+
if File.exist?( "#{build_directory}/CMakeCache.txt" )
|
62
|
+
return false if self.class.execute( "rm -f #{build_directory}/CMakeCache.txt" ) != 0
|
63
|
+
end
|
64
|
+
configure
|
65
|
+
end
|
66
|
+
|
67
|
+
# Execute a cmake command in the context of the build directory
|
68
|
+
def cmake( command, wd = build_directory )
|
69
|
+
rc = self.class.execute "cmake #{command}", wd, env
|
70
|
+
if rc != 0
|
71
|
+
raise CMakeError, "cmake failed with error #{rc}!"
|
72
|
+
end
|
73
|
+
rc
|
74
|
+
end
|
75
|
+
|
76
|
+
def configure
|
77
|
+
check_build_directory( true )
|
78
|
+
opt = option_string
|
79
|
+
opt += " -DCMAKE_INSTALL_PREFIX=#{install_prefix.to_s}" if install_prefix
|
80
|
+
rc = cmake "#{source_directory} #{opt}"
|
81
|
+
rc
|
82
|
+
end
|
83
|
+
|
84
|
+
def do_make( target = nil )
|
85
|
+
rc = self.class.execute( "make #{target ? target : "" }", build_directory, self.module.environment.values )
|
86
|
+
if rc != 0
|
87
|
+
raise MakeError, "make #{target || "" } failed with error code #{rc}";
|
88
|
+
end
|
89
|
+
rc
|
90
|
+
end
|
91
|
+
|
92
|
+
def install( fast )
|
93
|
+
if fast
|
94
|
+
make( "install/fast" )
|
95
|
+
else
|
96
|
+
make( "install" )
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def install_fast_supported?
|
101
|
+
true
|
102
|
+
end
|
103
|
+
|
104
|
+
def make( target = nil )
|
105
|
+
do_make( target )
|
106
|
+
end
|
107
|
+
|
108
|
+
def option_string
|
109
|
+
arr = []
|
110
|
+
@options.each do |var, val|
|
111
|
+
arr << "-D#{var}='#{val}'"
|
112
|
+
end
|
113
|
+
arr.join(" ")
|
114
|
+
end
|
115
|
+
|
116
|
+
end # class CMake
|
117
|
+
|
118
|
+
|
119
|
+
end; end # module BuildTool::BuildSystem
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'mj/tools/subprocess'
|
2
|
+
require 'build-tool/build-system/base'
|
3
|
+
|
4
|
+
module BuildTool; module BuildSystem
|
5
|
+
|
6
|
+
|
7
|
+
#
|
8
|
+
# Custom Build system.
|
9
|
+
#
|
10
|
+
# Uses scripts do to the actual work.
|
11
|
+
#
|
12
|
+
class Custom < Base
|
13
|
+
|
14
|
+
include MJ::Tools::SubProcess
|
15
|
+
|
16
|
+
class CustomError < BuildTool::Error; end
|
17
|
+
|
18
|
+
def initialize( *args )
|
19
|
+
super( *args )
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
### ATTRIBUTES
|
24
|
+
#
|
25
|
+
|
26
|
+
# Check if the module is configured
|
27
|
+
def configured?
|
28
|
+
end
|
29
|
+
|
30
|
+
def name
|
31
|
+
"custom"
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
### METHODS
|
36
|
+
#
|
37
|
+
|
38
|
+
def[]( var )
|
39
|
+
if @options.has_key? var
|
40
|
+
return @options[var]
|
41
|
+
end
|
42
|
+
|
43
|
+
# case var
|
44
|
+
|
45
|
+
# else
|
46
|
+
# *TODO* raise correct exception
|
47
|
+
raise NotImplementedError
|
48
|
+
|
49
|
+
# end
|
50
|
+
end
|
51
|
+
|
52
|
+
def[]=( var, val )
|
53
|
+
# case var
|
54
|
+
|
55
|
+
# else
|
56
|
+
# if var.start_with?( 'WITH_' )
|
57
|
+
# @options[var] = val
|
58
|
+
# else
|
59
|
+
# *TODO* raise correct exception
|
60
|
+
raise NotImplementedError
|
61
|
+
# end
|
62
|
+
# end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Configure the module
|
66
|
+
def reconfigure()
|
67
|
+
raise NotImplementedError
|
68
|
+
end
|
69
|
+
|
70
|
+
def configure
|
71
|
+
check_build_directory( true )
|
72
|
+
execute( "configure.sh" )
|
73
|
+
end
|
74
|
+
|
75
|
+
def execute( script )
|
76
|
+
path = self.recipe.find_first_config_file( "custom/%s/%s" % [ self.module.name, script.to_s ] )
|
77
|
+
if path.nil?
|
78
|
+
raise CustomError, "Script configure.sh for %s not found!" % self.module.name
|
79
|
+
end
|
80
|
+
if !path.executable?
|
81
|
+
raise CustomError, "Script %s not executable!" % path.to_s
|
82
|
+
end
|
83
|
+
return self.module.environment.execute(
|
84
|
+
"%s %s" % [ path.to_s, source_directory ],
|
85
|
+
build_directory )
|
86
|
+
end
|
87
|
+
|
88
|
+
def install( fast )
|
89
|
+
execute( "install.sh" )
|
90
|
+
end
|
91
|
+
|
92
|
+
def install_fast_supported?
|
93
|
+
false
|
94
|
+
end
|
95
|
+
|
96
|
+
def make( target = nil )
|
97
|
+
execute( "compile.sh" )
|
98
|
+
end
|
99
|
+
|
100
|
+
def option_string
|
101
|
+
arr = []
|
102
|
+
@options.each do |var, val|
|
103
|
+
arr << "-D#{var}='#{val}'"
|
104
|
+
end
|
105
|
+
arr.join(" ")
|
106
|
+
end
|
107
|
+
|
108
|
+
def recipe
|
109
|
+
Application::instance.recipe
|
110
|
+
end
|
111
|
+
|
112
|
+
end # class Custom
|
113
|
+
|
114
|
+
end; end # module BuildTool::BuildSystem
|
115
|
+
|