webroar 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +48 -1
- data/README +11 -14
- data/Rakefile +1 -1
- data/conf/mime_type.yml +172 -166
- data/conf/server_internal_config.yml +30 -8
- data/doc/user-guide.html +294 -153
- data/doc/user-guide.txt +9 -13
- data/lib/command_runner.rb +1 -0
- data/lib/dependencies.rb +18 -15
- data/lib/installer.rb +115 -50
- data/src/admin_panel/app/controllers/admin_controller.rb +1 -15
- data/src/admin_panel/app/controllers/application_controller.rb +2 -2
- data/src/admin_panel/app/controllers/application_specification_controller.rb +2 -1
- data/src/admin_panel/app/controllers/headers_controller.rb +73 -0
- data/src/admin_panel/app/controllers/mail_specification_controller.rb +10 -0
- data/src/admin_panel/app/controllers/server_specification_controller.rb +14 -0
- data/src/admin_panel/app/helpers/admin_helper.rb +0 -85
- data/src/admin_panel/app/models/app.rb +1 -1
- data/src/admin_panel/app/models/application_specification.rb +33 -25
- data/src/admin_panel/app/models/headers.rb +116 -0
- data/src/admin_panel/app/models/mail_specification.rb +20 -5
- data/src/admin_panel/app/models/server_specification.rb +2 -7
- data/src/admin_panel/app/views/admin/configuration.html.erb +10 -5
- data/src/admin_panel/app/views/exceptions/_exception_list_partial.html.erb +4 -4
- data/src/admin_panel/app/views/graph/_graph_page.html.erb +3 -0
- data/src/admin_panel/app/views/headers/_add_expires_text_box.html.erb +35 -0
- data/src/admin_panel/app/views/headers/_expires_by_type_form.html.erb +65 -0
- data/src/admin_panel/app/views/headers/_headers_table.html.erb +113 -0
- data/src/admin_panel/app/views/mail_specification/_current_spec.html.erb +168 -0
- data/src/admin_panel/app/views/{admin → server_specification}/_add_div.html.erb +1 -1
- data/src/admin_panel/config/initializers/application_constants.rb +6 -0
- data/src/admin_panel/lib/control.rb +6 -3
- data/src/admin_panel/lib/scgi.rb +74 -21
- data/src/admin_panel/lib/yaml_writer.rb +51 -17
- data/src/admin_panel/public/javascripts/application.js +20 -1
- data/src/head/wr_access_log.c +2 -2
- data/src/head/wr_application.c +294 -236
- data/src/head/wr_application.h +8 -8
- data/src/head/wr_configurator.c +451 -517
- data/src/head/wr_configurator.h +10 -115
- data/src/head/wr_connection.c +26 -25
- data/src/head/wr_connection.h +2 -3
- data/src/head/wr_controller.c +110 -93
- data/src/head/wr_controller.h +6 -6
- data/src/head/wr_main.c +31 -24
- data/src/head/wr_request.c +70 -93
- data/src/head/wr_request.h +0 -4
- data/src/head/wr_resolver.c +21 -15
- data/src/head/wr_resolver.h +2 -2
- data/src/head/wr_server.c +36 -26
- data/src/head/wr_server.h +5 -5
- data/src/head/wr_worker.c +551 -512
- data/src/head/wr_worker.h +33 -20
- data/src/helper/wr_config.c +316 -0
- data/src/helper/wr_config.h +235 -0
- data/src/helper/wr_helper.h +1 -5
- data/src/helper/wr_logger.c +4 -4
- data/src/helper/wr_scgi.c +3 -4
- data/src/helper/wr_scgi.h +2 -0
- data/src/helper/wr_string.h +2 -2
- data/src/helper/wr_util.c +3 -1
- data/src/helper/wr_util.h +0 -0
- data/src/helper/wr_yaml_parser.c +30 -0
- data/src/helper/wr_yaml_parser.h +1 -0
- data/src/ruby_lib/exception_tracker/instrumentation/action_controller.rb +2 -1
- data/src/ruby_lib/mailer/smtpmail.rb +7 -4
- data/src/ruby_lib/profiler/instrumentation/action_controller.rb +2 -1
- data/src/ruby_lib/profiler/instrumentation/active_record.rb +3 -0
- data/src/ruby_lib/rack/adapter/rails.rb +14 -7
- data/src/ruby_lib/ruby_interface/client.rb +1 -1
- data/src/ruby_lib/ruby_interface/version.rb +2 -2
- data/src/ruby_lib/webroar_app_loader.rb +4 -2
- data/src/worker/wkr_controller.c +200 -140
- data/src/worker/wkr_http.c +14 -28
- data/src/worker/wkr_http.h +4 -4
- data/src/worker/wkr_http_request.c +12 -11
- data/src/worker/wkr_http_request.h +7 -8
- data/src/worker/wkr_http_response.c +10 -14
- data/src/worker/wkr_http_response.h +0 -1
- data/src/worker/wkr_main.c +74 -140
- data/src/worker/wkr_static.c +295 -108
- data/src/worker/wkr_static.h +20 -7
- data/src/worker/worker.c +245 -70
- data/src/worker/worker.h +46 -34
- data/tasks/compile.rake +128 -175
- data/tasks/test.rake +345 -469
- data/test/spec/webroar_command_spec.rb +23 -0
- metadata +173 -43
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/README +0 -34
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/Rakefile +0 -13
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/init.rb +0 -5
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/action_mailer_tls.rb +0 -16
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/smtp_tls.rb +0 -123
- data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/test/tls_test.rb +0 -42
- data/src/head/wr_config.h +0 -165
- data/src/ruby_lib/mailer/action_mailer_tls.rb +0 -16
- data/src/ruby_lib/mailer/smtp_tls.rb +0 -123
data/tasks/compile.rake
CHANGED
@@ -24,161 +24,121 @@
|
|
24
24
|
#rake::clean, removes all the object files from obj directory.
|
25
25
|
#rake::clobber, performs rake::clean, also removes executable from bin directory.
|
26
26
|
|
27
|
-
#% $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib")
|
28
|
-
|
29
27
|
require 'mkmf'
|
30
28
|
|
29
|
+
CC = CONFIG['CC']
|
30
|
+
ROOT_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..')).freeze
|
31
|
+
LIBEV_DIR = File.join(ROOT_DIR, 'src', 'vendor', 'libev').freeze
|
32
|
+
EBB_DIR = File.join(ROOT_DIR, 'src', 'vendor', 'libebb').freeze
|
33
|
+
YAML_DIR = File.join(ROOT_DIR, 'src', 'vendor', 'libyaml').freeze
|
34
|
+
BIN_DIR = File.join(ROOT_DIR,'bin').freeze
|
35
|
+
HEAD_DIR = File.join(ROOT_DIR, 'src', 'head').freeze
|
36
|
+
HELPER_DIR = File.join(ROOT_DIR, 'src', 'helper').freeze
|
37
|
+
WORKER_DIR = File.join(ROOT_DIR, 'src', 'worker').freeze
|
38
|
+
CONF_DIR = File.join(ROOT_DIR, 'conf').freeze
|
39
|
+
UNIT_TEST_DIR = File.join(ROOT_DIR, 'test', 'unit').freeze
|
40
|
+
HEAD_OBJ_DIR = File.join(ROOT_DIR, 'obj', 'head').freeze
|
41
|
+
HELPER_OBJ_DIR = File.join(ROOT_DIR, 'obj', 'helper').freeze
|
42
|
+
WORKER_OBJ_DIR = File.join(ROOT_DIR, 'obj', 'worker').freeze
|
43
|
+
TEST_OBJ_DIR = File.join(ROOT_DIR, 'obj', 'test').freeze
|
44
|
+
LOG_FILES = File.join('','var','log','webroar').freeze
|
45
|
+
TMP_FILES = File.join('','tmp').freeze
|
46
|
+
RUBY_VERSION_CODE = RUBY_VERSION.gsub(/\D/, '').freeze
|
47
|
+
|
31
48
|
#Boolean to keep check method webroar_config has been called or not
|
32
|
-
$webroar_config_called=false
|
49
|
+
$webroar_config_called = false
|
33
50
|
|
34
51
|
## Set compilation flags needed by libebb & libev. Courtesy libebb
|
35
|
-
$flags =
|
52
|
+
$flags = ""
|
36
53
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
if have_header('sys/
|
49
|
-
|
50
|
-
|
54
|
+
## Set library flags needed
|
55
|
+
$lib_flags = ""
|
56
|
+
|
57
|
+
CLEAN.include(File.join(WORKER_OBJ_DIR,'*.o'), File.join(HEAD_OBJ_DIR,'*.o'), File.join(HELPER_OBJ_DIR,'*.o'), File.join(TEST_OBJ_DIR,'*.o'))
|
58
|
+
CLOBBER.include(File.join(BIN_DIR,'webroar-head'),File.join(BIN_DIR,'webroar-worker'), File.join(UNIT_TEST_DIR,'*.so'))
|
59
|
+
|
60
|
+
def set_flags
|
61
|
+
flags = []
|
62
|
+
flags << '-DEV_USE_SELECT' if have_header('sys/select.h')
|
63
|
+
flags << '-DEV_USE_POLL' if have_header('poll.h')
|
64
|
+
flags << '-DEV_USE_EPOLL' if have_header('sys/epoll.h')
|
65
|
+
flags << '-DEV_USE_KQUEUE' if have_header('sys/event.h') and have_header('sys/queue.h')
|
66
|
+
flags << '-DEV_USE_PORT' if have_header('port.h')
|
67
|
+
flags << '-DEV_USE_INOTIFY' if have_header('sys/inotify.h')
|
68
|
+
flags << '-DEV_USE_MONOTONIC=0'
|
69
|
+
flags << '-DHAVE_GNUTLS' if ENV['ssl'].eql?("yes")
|
70
|
+
flags << "-DRUBY_VERSION=#{RUBY_VERSION_CODE}"
|
71
|
+
flags << Config::expand($CFLAGS,CONFIG)
|
72
|
+
flags << "-g -O2" if RUBY_PLATFORM =~ /darwin/
|
73
|
+
flags << "-DL_ERROR -DL_INFO"
|
74
|
+
$flags << flags.join(" ")
|
75
|
+
end
|
76
|
+
|
77
|
+
def set_include_flags
|
78
|
+
inc_flags = [" "]
|
79
|
+
inc_flags << " #{ENV['include_flags']}" if ENV['include_flags']
|
51
80
|
|
52
|
-
if
|
53
|
-
|
81
|
+
if RUBY_VERSION_CODE.to_i < 190
|
82
|
+
inc_flags << Config::expand($INCFLAGS,CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote))
|
83
|
+
else
|
84
|
+
inc_flags << Config::expand($INCFLAGS,CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote, 'arch_hdrdir' => "#$arch_hdrdir", 'top_srcdir' => $top_srcdir.quote))
|
54
85
|
end
|
55
86
|
|
56
|
-
if
|
57
|
-
$flags << '-DEV_USE_PORT'
|
58
|
-
end
|
87
|
+
inc_flags << " #{Config::CONFIG['cppflags']}" if Config::CONFIG['cppflags']
|
59
88
|
|
60
|
-
|
61
|
-
|
62
|
-
end
|
89
|
+
include_dir = ["#{LIBEV_DIR}","#{EBB_DIR}","#{HEAD_DIR}","#{YAML_DIR}","#{HELPER_DIR}","#{UNIT_TEST_DIR}", "#{WORKER_DIR}"]
|
90
|
+
include_dir << Config::CONFIG['includedir'] if Config::CONFIG['includedir']
|
63
91
|
|
64
|
-
|
65
|
-
|
66
|
-
puts "Adding HAVE_GNUTLS flag."
|
67
|
-
$flags << '-DHAVE_GNUTLS'
|
92
|
+
include_dir.each do |dir|
|
93
|
+
inc_flags << " -I#{dir} "
|
68
94
|
end
|
69
|
-
$flags
|
70
|
-
$webroar_config_called=true
|
95
|
+
$flags << inc_flags.join(" ")
|
71
96
|
end
|
72
97
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
begin
|
80
|
-
print "#{directory} doesn't exist. Creating it..."
|
81
|
-
FileUtils.mkdir_p(directory)
|
82
|
-
rescue Exception => e
|
83
|
-
puts "Failed."
|
84
|
-
puts e
|
85
|
-
puts e.backtrace
|
86
|
-
rv = false
|
87
|
-
next
|
88
|
-
end
|
89
|
-
puts "Created."
|
90
|
-
end
|
91
|
-
end
|
92
|
-
rv
|
98
|
+
def set_lib_flags
|
99
|
+
lib_flags = [$libs, $LIBS]
|
100
|
+
lib_flags << " #{ENV['library_flags']}" if ENV['library_flags']
|
101
|
+
lib_flags << "-L" + Config::expand($libdir,CONFIG)
|
102
|
+
lib_flags << " "
|
103
|
+
$lib_flags << lib_flags.join(" ")
|
93
104
|
end
|
94
105
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
$
|
100
|
-
else
|
101
|
-
$inc_flags = Config::expand($INCFLAGS,CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote, 'arch_hdrdir' => "#$arch_hdrdir", 'top_srcdir' => $top_srcdir.quote))
|
102
|
-
end
|
103
|
-
|
104
|
-
$inc_flags << " #{Config::CONFIG['cppflags']}" if Config::CONFIG['cppflags']
|
105
|
-
|
106
|
-
$c_flags = Config::expand($CFLAGS,CONFIG)
|
107
|
-
if RUBY_PLATFORM =~ /darwin/
|
108
|
-
$c_flags += " -g -O2 "
|
109
|
-
end
|
110
|
-
$debug_flags = " -DL_ERROR -DL_INFO "
|
111
|
-
|
112
|
-
## Set static veriables
|
113
|
-
|
114
|
-
COMPILER = CONFIG['CC']
|
115
|
-
DIR = File.expand_path(File.join(File.dirname(__FILE__), '..')).freeze
|
116
|
-
SRC_DIR = File.join(DIR, 'src').freeze
|
117
|
-
HEAD_DIR = File.join(SRC_DIR, 'head').freeze
|
118
|
-
HELPER_DIR = File.join(SRC_DIR, 'helper').freeze
|
119
|
-
VENDOR_DIR = File.join(SRC_DIR, 'vendor').freeze
|
120
|
-
LIBEV_DIR = File.join(VENDOR_DIR, 'libev').freeze
|
121
|
-
EBB_DIR = File.join(VENDOR_DIR, 'libebb').freeze
|
122
|
-
BIN_DIR = File.join(DIR,'bin').freeze
|
123
|
-
OBJ_DIR = File.join(DIR,'obj').freeze
|
124
|
-
WORKER_DIR = File.join(SRC_DIR, 'worker').freeze
|
125
|
-
WORKER_OBJ_DIR = File.join(OBJ_DIR, 'worker').freeze
|
126
|
-
YAML_DIR = File.join(VENDOR_DIR, 'libyaml').freeze
|
127
|
-
YAML_OBJ_DIR = File.join(OBJ_DIR, 'libyaml').freeze
|
128
|
-
CONF_DIR = File.join(SRC_DIR, 'conf').freeze
|
129
|
-
UNIT_TEST_DIR = File.join(DIR, 'test', 'unit').freeze
|
130
|
-
TEST_OBJ_DIR = File.join(OBJ_DIR, 'test').freeze
|
131
|
-
LOG_FILES = File.join('','var','log','webroar').freeze
|
132
|
-
TMP_FILES = File.join('','tmp').freeze
|
133
|
-
|
134
|
-
## Create necessory directories
|
135
|
-
#create_directories([OBJ_DIR, WORKER_OBJ_DIR, YAML_OBJ_DIR, TEST_OBJ_DIR, TMP_FILES, LOG_FILES])
|
136
|
-
|
137
|
-
include_dir = ["#{LIBEV_DIR}","#{EBB_DIR}","#{HEAD_DIR}","#{YAML_DIR}","#{HELPER_DIR}","#{UNIT_TEST_DIR}", "#{WORKER_DIR}"]
|
138
|
-
|
139
|
-
include_dir.each do |dir|
|
140
|
-
$inc_flags << " -I#{dir} "
|
106
|
+
def webroar_config
|
107
|
+
set_flags
|
108
|
+
set_include_flags
|
109
|
+
set_lib_flags
|
110
|
+
$webroar_config_called = true
|
141
111
|
end
|
142
112
|
|
143
|
-
|
144
|
-
|
145
|
-
CLEAN.include(File.join(OBJ_DIR,'*.o'),File.join(WORKER_OBJ_DIR,'*.o'), File.join(YAML_OBJ_DIR,'*.o'), File.join(TEST_OBJ_DIR,'*.o'))
|
146
|
-
CLOBBER.include(File.join(BIN_DIR,'webroar-head'),File.join(BIN_DIR,'webroar-worker'), File.join(UNIT_TEST_DIR,'*.so'))
|
147
|
-
|
148
|
-
webroar_bin = File.join(BIN_DIR,"webroar-head")
|
113
|
+
head_bin = File.join(BIN_DIR,"webroar-head")
|
149
114
|
worker_bin = File.join(BIN_DIR,"webroar-worker")
|
150
115
|
|
151
|
-
|
152
|
-
src_files = FileList[File.join(HEAD_DIR,'*.c'),File.join(EBB_DIR,'*.c')]
|
116
|
+
head_files = FileList[File.join(HEAD_DIR,'*.c'),File.join(EBB_DIR,'*.c')]
|
153
117
|
worker_files = FileList[File.join(WORKER_DIR,'*.c')]
|
154
|
-
|
155
|
-
helper_files = FileList[File.join(HELPER_DIR,'*.c')]
|
118
|
+
helper_files = FileList[File.join(HELPER_DIR,'*.c'), File.join(YAML_DIR,'*.c')]
|
156
119
|
|
157
120
|
#src_obj is a hash which will keep object file name as key and source file name as value. This is used to map source file to object file.
|
158
121
|
#It's been used at time of object generation
|
159
|
-
|
122
|
+
head_obj={}
|
160
123
|
worker_obj={}
|
161
|
-
yaml_obj={}
|
162
124
|
helper_obj={}
|
163
125
|
|
164
126
|
# File dependencies go here ...
|
165
|
-
|
127
|
+
head_files.each do |sfn|
|
166
128
|
obj = sfn.sub(/\.[^.]*$/, '.o')
|
167
|
-
obj_file = File.join(
|
129
|
+
obj_file = File.join(HEAD_OBJ_DIR , obj[obj.rindex(File::SEPARATOR)+1..obj.length])
|
168
130
|
|
169
131
|
desc "Setting Executable's dependency on objects files"
|
170
|
-
file
|
132
|
+
file head_bin => obj_file
|
171
133
|
|
172
134
|
#Insertion of object file to source file mapping in hash
|
173
|
-
|
135
|
+
head_obj[obj_file]=sfn
|
174
136
|
end
|
175
137
|
|
176
|
-
|
138
|
+
head_obj.each { |obj_file,src_file|
|
177
139
|
file obj_file => src_file do
|
178
|
-
unless $webroar_config_called
|
179
|
-
|
180
|
-
end
|
181
|
-
cmd = "#{COMPILER} #$inc_flags #$c_flags #$flags #$debug_flags -c #{src_file} -o #{obj_file} "
|
140
|
+
webroar_config unless $webroar_config_called
|
141
|
+
cmd = "#{CC} #{$flags} -c #{src_file} -o #{obj_file} "
|
182
142
|
sh cmd
|
183
143
|
end
|
184
144
|
}
|
@@ -197,34 +157,22 @@ end
|
|
197
157
|
|
198
158
|
worker_obj.each { |obj_file,src_file|
|
199
159
|
file obj_file => src_file do
|
200
|
-
unless $webroar_config_called
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
end
|
206
|
-
}
|
207
|
-
|
208
|
-
yaml_files.each do |sfn|
|
209
|
-
obj = sfn.sub(/\.[^.]*$/, '.o')
|
210
|
-
obj_file = File.join(YAML_OBJ_DIR , obj[obj.rindex(File::SEPARATOR)+1..obj.length])
|
211
|
-
file webroar_bin => obj_file
|
212
|
-
yaml_obj[obj_file]=sfn
|
213
|
-
end
|
214
|
-
|
215
|
-
yaml_obj.each { |obj_file,src_file|
|
216
|
-
file obj_file => src_file do
|
217
|
-
cmd = "#{COMPILER} #$inc_flags -c #{src_file} -o #{obj_file} "
|
160
|
+
webroar_config unless $webroar_config_called
|
161
|
+
flags = $flags
|
162
|
+
flags << ' -DW_ZLIB' if ENV['zlib']=='yes'
|
163
|
+
flags << ' -DW_REGEX' if ENV['regex']=='yes'
|
164
|
+
cmd = "#{CC} #{flags} -c #{src_file} -o #{obj_file} "
|
218
165
|
sh cmd
|
219
166
|
end
|
220
167
|
}
|
221
168
|
|
222
169
|
helper_files.each do |sfn|
|
223
170
|
obj = sfn.sub(/\.[^.]*$/, '.o')
|
224
|
-
obj_file = File.join(
|
171
|
+
obj_file = File.join(HELPER_OBJ_DIR , obj[obj.rindex(File::SEPARATOR)+1..obj.length])
|
225
172
|
|
226
173
|
desc "Setting Executable's dependency on objects files"
|
227
|
-
file worker_bin => obj_file
|
174
|
+
#file worker_bin => obj_file
|
175
|
+
file head_bin => obj_file
|
228
176
|
|
229
177
|
#Insertion of object file to source file mapping in hash
|
230
178
|
helper_obj[obj_file]=sfn
|
@@ -232,66 +180,49 @@ end
|
|
232
180
|
|
233
181
|
helper_obj.each { |obj_file,src_file|
|
234
182
|
file obj_file => src_file do
|
235
|
-
unless $webroar_config_called
|
236
|
-
|
237
|
-
end
|
238
|
-
cmd = "#{COMPILER} #$inc_flags #$c_flags #$flags #$debug_flags -c #{src_file} -o #{obj_file} "
|
183
|
+
webroar_config unless $webroar_config_called
|
184
|
+
cmd = "#{CC} #{$flags} -c #{src_file} -o #{obj_file} "
|
239
185
|
sh cmd
|
240
186
|
end
|
241
187
|
}
|
242
188
|
|
243
189
|
file worker_bin do
|
244
|
-
|
245
|
-
|
246
|
-
|
190
|
+
puts $lib_flags
|
191
|
+
lib_flags = String.new($lib_flags)
|
192
|
+
lib_flags << Config::expand($LIBRUBYARG_SHARED,CONFIG) if CONFIG["ENABLE_SHARED"] == "yes"
|
193
|
+
lib_flags << Config::expand($LIBRUBYARG_STATIC, CONFIG) if CONFIG["ENABLE_SHARED"] == "no"
|
194
|
+
lib_flags << " -lz" if ENV['zlib'] == "yes"
|
247
195
|
#libraries for making executable
|
248
|
-
|
249
|
-
|
250
|
-
#$libs += ' -lpthread '
|
251
|
-
lib_flags += " #{ENV['library_flags']}" if ENV['library_flags']
|
252
|
-
out_file=File.join(BIN_DIR,'webroar-worker')
|
253
|
-
object_files=FileList[File.join(WORKER_OBJ_DIR,'*.o'), helper_obj.keys, File.join(YAML_OBJ_DIR,'*.o')]
|
196
|
+
out_file = File.join(BIN_DIR,'webroar-worker')
|
197
|
+
object_files = FileList[File.join(WORKER_OBJ_DIR,'*.o'), File.join(HELPER_OBJ_DIR,'*.o')]
|
254
198
|
# -rdynamic option to get function name in stacktrace
|
255
|
-
cmd="#{
|
199
|
+
cmd = "#{CC} -o #{out_file} #{object_files} -rdynamic #{lib_flags}"
|
256
200
|
sh cmd
|
257
201
|
end
|
258
202
|
|
259
|
-
file
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
#libraries for making executable
|
264
|
-
lib_flags = $libs + $LIBS # + ' -L' + Config::expand($libdir,CONFIG) + ' ' + Config::expand($LIBRUBYARG_SHARED,CONFIG)
|
265
|
-
#$libs += ' '+CONFIG["LIBRUBYARG"]
|
266
|
-
#$libs += ' -lpthread '
|
267
|
-
lib_flags += " #{ENV['library_flags']}" if ENV['library_flags']
|
268
|
-
if ENV['ssl'].eql?("yes")
|
269
|
-
puts "Compiling with gnutls library."
|
270
|
-
lib_flags += ' -L' + Config::CONFIG['libdir'] + ' -lgnutls '
|
271
|
-
end
|
272
|
-
out_file=File.join(BIN_DIR,'webroar-head')
|
273
|
-
object_files=FileList[File.join(OBJ_DIR,'*.o'),File.join(YAML_OBJ_DIR,'*.o')]
|
203
|
+
file head_bin do
|
204
|
+
puts $lib_flags
|
205
|
+
out_file = File.join(BIN_DIR,'webroar-head')
|
206
|
+
object_files = FileList[File.join(HEAD_OBJ_DIR,'*.o'), File.join(HELPER_OBJ_DIR,'*.o')]
|
274
207
|
# -rdynamic option to get function name in stacktrace
|
275
|
-
cmd="#{
|
208
|
+
cmd="#{CC} -o #{out_file} #{object_files} -rdynamic #{$lib_flags} #{ENV['ssl'].eql?("yes")? ' -lgnutls ' : '' } "
|
276
209
|
sh cmd
|
277
210
|
end
|
278
211
|
|
279
|
-
file
|
280
|
-
task :compile => [:create_obj_dirs,
|
212
|
+
file head_bin => worker_bin
|
213
|
+
task :compile => [:create_obj_dirs, head_bin]
|
281
214
|
task :default => :compile
|
282
215
|
|
283
216
|
desc "Build with debug statements"
|
284
217
|
task :debug_build do
|
285
|
-
$
|
218
|
+
$flags << " -DL_DEBUG "
|
286
219
|
d=Rake::Task[:default]
|
287
220
|
d.invoke();
|
288
221
|
end
|
289
222
|
|
290
|
-
$sbin_flag=true
|
291
|
-
|
292
223
|
desc "Creates required folders for compilation."
|
293
224
|
task :create_obj_dirs do
|
294
|
-
if create_directories([
|
225
|
+
if create_directories([WORKER_OBJ_DIR, HEAD_OBJ_DIR, HELPER_OBJ_DIR, TMP_FILES]) == true
|
295
226
|
puts 'Required directories created successfully. Building executables...'
|
296
227
|
else
|
297
228
|
puts 'Required directories could not be created. Can not continue...'
|
@@ -305,3 +236,25 @@ task :create_install_dirs do
|
|
305
236
|
puts 'Required directories could not be created. Can not continue...'
|
306
237
|
end
|
307
238
|
end
|
239
|
+
|
240
|
+
#Create directories if they don't exists
|
241
|
+
def create_directories(required_directories)
|
242
|
+
rv = true
|
243
|
+
for directory in required_directories
|
244
|
+
#check to see if it exists
|
245
|
+
unless File.exists?(directory)
|
246
|
+
begin
|
247
|
+
print "#{directory} doesn't exist. Creating it..."
|
248
|
+
FileUtils.mkdir_p(directory)
|
249
|
+
rescue Exception => e
|
250
|
+
puts "Failed."
|
251
|
+
puts e
|
252
|
+
puts e.backtrace
|
253
|
+
rv = false
|
254
|
+
next
|
255
|
+
end
|
256
|
+
puts "Created."
|
257
|
+
end
|
258
|
+
end
|
259
|
+
rv
|
260
|
+
end
|