webroar 0.3.1 → 0.4.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/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
|