webroar 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/CHANGELOG +48 -1
  2. data/README +11 -14
  3. data/Rakefile +1 -1
  4. data/conf/mime_type.yml +172 -166
  5. data/conf/server_internal_config.yml +30 -8
  6. data/doc/user-guide.html +294 -153
  7. data/doc/user-guide.txt +9 -13
  8. data/lib/command_runner.rb +1 -0
  9. data/lib/dependencies.rb +18 -15
  10. data/lib/installer.rb +115 -50
  11. data/src/admin_panel/app/controllers/admin_controller.rb +1 -15
  12. data/src/admin_panel/app/controllers/application_controller.rb +2 -2
  13. data/src/admin_panel/app/controllers/application_specification_controller.rb +2 -1
  14. data/src/admin_panel/app/controllers/headers_controller.rb +73 -0
  15. data/src/admin_panel/app/controllers/mail_specification_controller.rb +10 -0
  16. data/src/admin_panel/app/controllers/server_specification_controller.rb +14 -0
  17. data/src/admin_panel/app/helpers/admin_helper.rb +0 -85
  18. data/src/admin_panel/app/models/app.rb +1 -1
  19. data/src/admin_panel/app/models/application_specification.rb +33 -25
  20. data/src/admin_panel/app/models/headers.rb +116 -0
  21. data/src/admin_panel/app/models/mail_specification.rb +20 -5
  22. data/src/admin_panel/app/models/server_specification.rb +2 -7
  23. data/src/admin_panel/app/views/admin/configuration.html.erb +10 -5
  24. data/src/admin_panel/app/views/exceptions/_exception_list_partial.html.erb +4 -4
  25. data/src/admin_panel/app/views/graph/_graph_page.html.erb +3 -0
  26. data/src/admin_panel/app/views/headers/_add_expires_text_box.html.erb +35 -0
  27. data/src/admin_panel/app/views/headers/_expires_by_type_form.html.erb +65 -0
  28. data/src/admin_panel/app/views/headers/_headers_table.html.erb +113 -0
  29. data/src/admin_panel/app/views/mail_specification/_current_spec.html.erb +168 -0
  30. data/src/admin_panel/app/views/{admin → server_specification}/_add_div.html.erb +1 -1
  31. data/src/admin_panel/config/initializers/application_constants.rb +6 -0
  32. data/src/admin_panel/lib/control.rb +6 -3
  33. data/src/admin_panel/lib/scgi.rb +74 -21
  34. data/src/admin_panel/lib/yaml_writer.rb +51 -17
  35. data/src/admin_panel/public/javascripts/application.js +20 -1
  36. data/src/head/wr_access_log.c +2 -2
  37. data/src/head/wr_application.c +294 -236
  38. data/src/head/wr_application.h +8 -8
  39. data/src/head/wr_configurator.c +451 -517
  40. data/src/head/wr_configurator.h +10 -115
  41. data/src/head/wr_connection.c +26 -25
  42. data/src/head/wr_connection.h +2 -3
  43. data/src/head/wr_controller.c +110 -93
  44. data/src/head/wr_controller.h +6 -6
  45. data/src/head/wr_main.c +31 -24
  46. data/src/head/wr_request.c +70 -93
  47. data/src/head/wr_request.h +0 -4
  48. data/src/head/wr_resolver.c +21 -15
  49. data/src/head/wr_resolver.h +2 -2
  50. data/src/head/wr_server.c +36 -26
  51. data/src/head/wr_server.h +5 -5
  52. data/src/head/wr_worker.c +551 -512
  53. data/src/head/wr_worker.h +33 -20
  54. data/src/helper/wr_config.c +316 -0
  55. data/src/helper/wr_config.h +235 -0
  56. data/src/helper/wr_helper.h +1 -5
  57. data/src/helper/wr_logger.c +4 -4
  58. data/src/helper/wr_scgi.c +3 -4
  59. data/src/helper/wr_scgi.h +2 -0
  60. data/src/helper/wr_string.h +2 -2
  61. data/src/helper/wr_util.c +3 -1
  62. data/src/helper/wr_util.h +0 -0
  63. data/src/helper/wr_yaml_parser.c +30 -0
  64. data/src/helper/wr_yaml_parser.h +1 -0
  65. data/src/ruby_lib/exception_tracker/instrumentation/action_controller.rb +2 -1
  66. data/src/ruby_lib/mailer/smtpmail.rb +7 -4
  67. data/src/ruby_lib/profiler/instrumentation/action_controller.rb +2 -1
  68. data/src/ruby_lib/profiler/instrumentation/active_record.rb +3 -0
  69. data/src/ruby_lib/rack/adapter/rails.rb +14 -7
  70. data/src/ruby_lib/ruby_interface/client.rb +1 -1
  71. data/src/ruby_lib/ruby_interface/version.rb +2 -2
  72. data/src/ruby_lib/webroar_app_loader.rb +4 -2
  73. data/src/worker/wkr_controller.c +200 -140
  74. data/src/worker/wkr_http.c +14 -28
  75. data/src/worker/wkr_http.h +4 -4
  76. data/src/worker/wkr_http_request.c +12 -11
  77. data/src/worker/wkr_http_request.h +7 -8
  78. data/src/worker/wkr_http_response.c +10 -14
  79. data/src/worker/wkr_http_response.h +0 -1
  80. data/src/worker/wkr_main.c +74 -140
  81. data/src/worker/wkr_static.c +295 -108
  82. data/src/worker/wkr_static.h +20 -7
  83. data/src/worker/worker.c +245 -70
  84. data/src/worker/worker.h +46 -34
  85. data/tasks/compile.rake +128 -175
  86. data/tasks/test.rake +345 -469
  87. data/test/spec/webroar_command_spec.rb +23 -0
  88. metadata +173 -43
  89. data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/README +0 -34
  90. data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/Rakefile +0 -13
  91. data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/init.rb +0 -5
  92. data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/action_mailer_tls.rb +0 -16
  93. data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/lib/smtp_tls.rb +0 -123
  94. data/src/admin_panel/vendor/plugins/action_mailer_optional_tls/test/tls_test.rb +0 -42
  95. data/src/head/wr_config.h +0 -165
  96. data/src/ruby_lib/mailer/action_mailer_tls.rb +0 -16
  97. 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
- def webroar_config
38
- #add flag to compile libev
39
-
40
- if have_header('sys/select.h')
41
- $flags << '-DEV_USE_SELECT'
42
- end
43
-
44
- if have_header('poll.h')
45
- $flags << '-DEV_USE_POLL'
46
- end
47
-
48
- if have_header('sys/epoll.h')
49
- $flags << '-DEV_USE_EPOLL'
50
- end
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 have_header('sys/event.h') and have_header('sys/queue.h')
53
- $flags << '-DEV_USE_KQUEUE'
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 have_header('port.h')
57
- $flags << '-DEV_USE_PORT'
58
- end
87
+ inc_flags << " #{Config::CONFIG['cppflags']}" if Config::CONFIG['cppflags']
59
88
 
60
- if have_header('sys/inotify.h')
61
- $flags << '-DEV_USE_INOTIFY'
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
- $flags << '-DEV_USE_MONOTONIC=0'
65
- if ENV['ssl'].eql?("yes")
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 = $flags.join(" ")
70
- $webroar_config_called=true
95
+ $flags << inc_flags.join(" ")
71
96
  end
72
97
 
73
- #Create directories if they don't exists
74
- def create_directories(required_directories)
75
- rv = true
76
- for directory in required_directories
77
- #check to see if it exists
78
- unless File.exists?(directory)
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
- ruby_version_code = RUBY_VERSION.gsub(/\D/, '')
96
- $flags << "-DRUBY_VERSION=#{ruby_version_code}"
97
- ## Include for ruby files
98
- if ruby_version_code.to_i < 190
99
- $inc_flags = Config::expand($INCFLAGS,CONFIG.merge('hdrdir' => $hdrdir.quote, 'srcdir' => $srcdir.quote))
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
- $inc_flags << " #{ENV['include_flags']}" if ENV['include_flags']
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
- #% ebb_request_parser_rl_file = FileList[File.join(EBB_DIR,'ebb_requset_parser.rl')]
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
- yaml_files = FileList[File.join(YAML_DIR,'*.c')]
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
- src_obj={}
122
+ head_obj={}
160
123
  worker_obj={}
161
- yaml_obj={}
162
124
  helper_obj={}
163
125
 
164
126
  # File dependencies go here ...
165
- src_files.each do |sfn|
127
+ head_files.each do |sfn|
166
128
  obj = sfn.sub(/\.[^.]*$/, '.o')
167
- obj_file = File.join(OBJ_DIR , obj[obj.rindex(File::SEPARATOR)+1..obj.length])
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 webroar_bin => obj_file
132
+ file head_bin => obj_file
171
133
 
172
134
  #Insertion of object file to source file mapping in hash
173
- src_obj[obj_file]=sfn
135
+ head_obj[obj_file]=sfn
174
136
  end
175
137
 
176
- src_obj.each { |obj_file,src_file|
138
+ head_obj.each { |obj_file,src_file|
177
139
  file obj_file => src_file do
178
- unless $webroar_config_called
179
- webroar_config
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
- webroar_config
202
- end
203
- cmd = "#{COMPILER} #$inc_flags #$c_flags #$flags #$debug_flags -c #{src_file} -o #{obj_file} "
204
- sh cmd
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(OBJ_DIR , obj[obj.rindex(File::SEPARATOR)+1..obj.length])
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
- webroar_config
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
- unless $webroar_config_called
245
- webroar_config
246
- end
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
- lib_flags = $libs + $LIBS + ' -L' + Config::expand($libdir,CONFIG) + ' ' + Config::expand($LIBRUBYARG_SHARED,CONFIG)
249
- #$libs += ' '+CONFIG["LIBRUBYARG"]
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="#{COMPILER} #{lib_flags} -rdynamic #{object_files} -o #{out_file}"
199
+ cmd = "#{CC} -o #{out_file} #{object_files} -rdynamic #{lib_flags}"
256
200
  sh cmd
257
201
  end
258
202
 
259
- file webroar_bin do
260
- unless $webroar_config_called
261
- webroar_config
262
- end
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="#{COMPILER} #{lib_flags} -rdynamic #{object_files} -o #{out_file}"
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 webroar_bin => worker_bin
280
- task :compile => [:create_obj_dirs, webroar_bin]
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
- $debug_flags<<" -DL_DEBUG "
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([OBJ_DIR, WORKER_OBJ_DIR, YAML_OBJ_DIR, TMP_FILES]) == true
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