csd 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/Rakefile +2 -2
  2. data/VERSION +1 -1
  3. data/img/3d1.png +0 -0
  4. data/img/bios0.jpg +0 -0
  5. data/img/bios1.jpg +0 -0
  6. data/img/bios2.jpg +0 -0
  7. data/img/camera1.jpg +0 -0
  8. data/img/camera2.jpg +0 -0
  9. data/img/decklink1.png +0 -0
  10. data/img/decklink2.png +0 -0
  11. data/img/graphics1.png +0 -0
  12. data/img/graphics2.png +0 -0
  13. data/img/graphics3.png +0 -0
  14. data/img/graphics4.png +0 -0
  15. data/img/graphics5.png +0 -0
  16. data/img/installer1.jpg +0 -0
  17. data/img/installer2.jpg +0 -0
  18. data/img/installer3.jpg +0 -0
  19. data/img/minisip1.png +0 -0
  20. data/img/reboot.png +0 -0
  21. data/img/ruby1.png +0 -0
  22. data/img/ruby2.png +0 -0
  23. data/img/ruby3.png +0 -0
  24. data/img/ruby4.png +0 -0
  25. data/img/update1.png +0 -0
  26. data/img/update2.png +0 -0
  27. data/lib/csd/application/graphics/base.rb +7 -0
  28. data/lib/csd/application/i2conf/base.rb +59 -4
  29. data/lib/csd/application/i2conf/config_example.rb +4 -0
  30. data/lib/csd/application/minisip/base.rb +2 -0
  31. data/lib/csd/application/minisip/component.rb +0 -1
  32. data/lib/csd/application/minisip/component/core.rb +36 -9
  33. data/lib/csd/application/minisip/component/core_packaging.rb +63 -38
  34. data/lib/csd/application/minisip/component/ffmpeg.rb +1 -1
  35. data/lib/csd/application/minisip/component/hdviper.rb +2 -2
  36. data/lib/csd/application/minisip/component/network.rb +4 -0
  37. data/lib/csd/application/minisip/component/x264.rb +1 -1
  38. data/lib/csd/application/minisip/error.rb +1 -0
  39. data/lib/csd/application/minisip/options/install.rb +4 -0
  40. data/lib/csd/application/minisip/options/install_defaults.rb +1 -0
  41. data/lib/csd/application/minisip/unix.rb +1 -4
  42. data/lib/csd/application/mslog/base.rb +45 -6
  43. data/test/application/test_minisip.rb +2 -1
  44. metadata +29 -6
  45. data/csd.gemspec +0 -175
data/Rakefile CHANGED
@@ -31,14 +31,14 @@ Jeweler::Tasks.new do |gemspec|
31
31
 
32
32
  Thank you for installing the TTA Automated Installer!
33
33
 
34
- You can run it by typing `ai´ in your command line.
35
-
36
34
  NOTE: On DEBIAN and UBUNTU the executable `ai´ is *maybe*
37
35
  not in your PATH by default. If that is the case,
38
36
  you can fix it by running this command:
39
37
 
40
38
  echo "export PATH=\$PATH:$(gem env | grep "E D" | sed "s/[^\w]* //")" >> ~/.bashrc;. ~/.bashrc
41
39
 
40
+ You can run the AI by typing `ai´ in your command line.
41
+
42
42
  ============================================================
43
43
  }
44
44
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.3.4
data/img/3d1.png ADDED
Binary file
data/img/bios0.jpg ADDED
Binary file
data/img/bios1.jpg ADDED
Binary file
data/img/bios2.jpg ADDED
Binary file
data/img/camera1.jpg ADDED
Binary file
data/img/camera2.jpg ADDED
Binary file
data/img/decklink1.png ADDED
Binary file
data/img/decklink2.png ADDED
Binary file
data/img/graphics1.png ADDED
Binary file
data/img/graphics2.png ADDED
Binary file
data/img/graphics3.png ADDED
Binary file
data/img/graphics4.png ADDED
Binary file
data/img/graphics5.png ADDED
Binary file
Binary file
Binary file
Binary file
data/img/minisip1.png ADDED
Binary file
data/img/reboot.png ADDED
Binary file
data/img/ruby1.png ADDED
Binary file
data/img/ruby2.png ADDED
Binary file
data/img/ruby3.png ADDED
Binary file
data/img/ruby4.png ADDED
Binary file
data/img/update1.png ADDED
Binary file
data/img/update2.png ADDED
Binary file
@@ -25,10 +25,17 @@ module CSD
25
25
  def install!
26
26
  define_relative_paths
27
27
  create_working_directory
28
+ aptitude
28
29
  process_graphics_card
29
30
  cleanup_working_directory
30
31
  end
31
32
 
33
+ def aptitude
34
+ UI.info "Installing Debian dependencies".green.bold
35
+ Cmd.run 'sudo apt-get update', :announce_pwd => false
36
+ Cmd.run "sudo apt-get install git-core --yes --fix-missing", :announce_pwd => false
37
+ end
38
+
32
39
  # This method is to provide general introductions to users, like current working directory.
33
40
  #
34
41
  # ====Options
@@ -8,8 +8,13 @@ module CSD
8
8
  module I2conf
9
9
  class Base < CSD::Application::Base
10
10
 
11
+ # This is to include MiniSIP component class, since MiniSIP need to be compiled before i2conf compilation.
12
+ # Thus, in the i2conf module AI will load methods in MiniSIP component class directly to compile MiniSIP.
13
+ #
11
14
  include ::CSD::Application::Minisip::Component
12
15
 
16
+ # Necessary contents for i2conf .desktop file. It will be used in the method of create_desktop_entry.
17
+ #
13
18
  DESKTOP_ENTRY = %{
14
19
  [Desktop Entry]
15
20
  Encoding=UTF-8
@@ -23,12 +28,17 @@ Type=Application
23
28
  StartupNotify=true
24
29
  Categories=Application;Internet;Network;Chat;AudioVideo}
25
30
 
31
+ # This constant is to preserve the URL of the i2conf icon in github repository.
32
+ #
26
33
  GNOME_ICON_URL = 'http://github.com/downloads/csd/i2conf/i2conf_gnome.png'
27
34
 
28
35
  # A list of apt-get packages that are required to install i2conf.
29
36
  #
30
37
  DEBIAN_DEPENDENCIES = %w{ libboost-dev libboost-thread-dev liblog4cxx* }
31
38
 
39
+ # This method notifies users about following operation of AI, and initiates introduction method.
40
+ # The actual installation process is carried out by method install! for the purpose of keeping source code clean.
41
+ #
32
42
  def install
33
43
  @minisip = ::CSD::Application::Minisip::Debian.new
34
44
  define_relative_paths
@@ -39,6 +49,8 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
39
49
  install!
40
50
  end
41
51
 
52
+ # This method initiates corresponding methods sequentially to set up i2conf server.
53
+ #
42
54
  def install!
43
55
  create_working_directory
44
56
  compile_minisip
@@ -57,6 +69,11 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
57
69
  congratulations
58
70
  end
59
71
 
72
+ # This method compiles MiniSIP. Because i2conf will make use of MiniSIP libraries during the compilation process.
73
+ # However, MiniSIP is compiled without any additional option during the configuration process, since full configuration
74
+ # options cause conflict with 64bit system, while i2conf can also be run in 64bit system. Thus this operation assures
75
+ # i2conf server can be set up on both 32 and 64 bits system.
76
+ #
60
77
  def compile_minisip
61
78
  return unless Options.minisip
62
79
  @minisip.aptitude
@@ -72,6 +89,12 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
72
89
  Core.link_libraries
73
90
  end
74
91
 
92
+ # This method installs all library dependencies of i2conf server.
93
+ # It will first update the package index and then install all Debian dependencies.
94
+ # AI will force the operation to continue without being interrupted by the request for user's approval
95
+ # This is because users have been asked once about their willingness to continue in the introduction method,
96
+ # thus AI will not bother users again for each of the library dependency.
97
+ #
75
98
  def aptitude
76
99
  return unless Options.apt_get
77
100
  UI.info "Installing Debian dependencies for i2conf".green.bold
@@ -79,10 +102,15 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
79
102
  Cmd.run "sudo apt-get install #{DEBIAN_DEPENDENCIES.sort.join(' ')} --yes --fix-missing", :announce_pwd => false
80
103
  end
81
104
 
105
+ # The method checks out the Lib strManager source code from git repository.
106
+ # strManager is a high-performance UDP packet reflector with high customizing per-flow options.
107
+ #
82
108
  def checkout_strmanager
83
109
  Cmd.git_clone('strManager library', 'git://github.com/csd/strManager.git', Path.str_manager)
84
110
  end
85
111
 
112
+ # The method copies several files in libtool to the directory of strManager to avoid libtool version mismatch.
113
+ #
86
114
  def copy_libtool
87
115
  UI.info 'Copying libtool dependencies'.green.bold
88
116
  Cmd.cd Path.str_manager, :internal => true
@@ -91,6 +119,8 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
91
119
  Cmd.run 'cp /usr/share/libtool/config/ltmain.sh .'
92
120
  end
93
121
 
122
+ # The method includes header file iostream into Manager.cpp and StatsWorker.cpp in the source code.
123
+ #
94
124
  def fix_str_manager
95
125
  UI.info 'Fixing strManager'.green.bold
96
126
  [Path.str_src_manager, Path.str_src_worker].each do |file|
@@ -100,20 +130,29 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
100
130
  end
101
131
  end
102
132
 
133
+ # The method compiles strManager.
134
+ # After compilation process, it will run ldconfig on libstrmanager.so file to help
135
+ # strManager to locate necessary MiniSIP libraries.
136
+ #
103
137
  def compile_str_manager
104
138
  UI.info 'Compiling strManager'.green.bold
105
139
  Cmd.cd Path.str_manager, :internal => true
106
140
  Cmd.run './configure'
107
141
  Cmd.run 'aclocal'
108
- Cmd.run 'make'
142
+ Cmd.run 'make -j 15'
109
143
  Cmd.run 'sudo make install'
110
144
  Cmd.run "sudo ldconfig /usr/local/lib/libstrmanager.so", :announce_pwd => false
111
145
  end
112
146
 
147
+ # The method checks out i2conf source code from git repository.
148
+ #
113
149
  def checkout_i2conf
114
150
  Cmd.git_clone('i2conf repository', 'git://github.com/csd/i2conf.git', Path.i2conf)
115
151
  end
116
152
 
153
+ # The method fixes i2conf source code. The bootstrap file of i2conf only specifies automake version from 1.7 to 1.10.
154
+ # AI will include the latest version 1.11 into its support list.
155
+ #
117
156
  def fix_i2conf
118
157
  if Options.reveal or !File.read(Path.i2conf_bootstrap).include?('automake-1.11')
119
158
  UI.info 'Fixing i2conf automake'.green.bold
@@ -121,6 +160,8 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
121
160
  end
122
161
  end
123
162
 
163
+ # The method fixes i2conf aclocal by removing aclocal option "-I m4".
164
+ #
124
165
  def fix_i2conf_aclocal
125
166
  if Options.reveal or File.read(Path.i2conf_bootstrap).include?('-I m4')
126
167
  UI.info 'Fixing i2conf aclocal'.green.bold
@@ -128,16 +169,24 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
128
169
  end
129
170
  end
130
171
 
172
+ # The method compiles i2conf with standard process and without any additional option setting.
173
+ #
131
174
  def compile_i2conf
132
175
  UI.info 'Compiling i2conf'.green.bold
133
176
  Cmd.cd Path.i2conf, :internal => true
134
177
  Cmd.run './bootstrap'
135
178
  Cmd.run './configure'
136
179
  Cmd.run 'aclocal'
137
- Cmd.run 'make'
180
+ Cmd.run 'make -j 15'
138
181
  Cmd.run 'sudo make install'
139
182
  end
140
183
 
184
+ # This method creates desktop entry, so users can run MCU by clicking the i2conf icon in the Applications menu.
185
+ # It copies the downloaded icon to pixmaps directory, so the icon can be shown at the gnome menu.
186
+ # It creates a .desktop file, fulfills the file with the constant DESKTOP_ENTRY, and substitutes the PLACEHOLDER with execution commands.
187
+ # Then, AI copies the .desktop file to /usr/share/applications directory and initiates the method of update_gnome_menu_cache to make all the
188
+ # modifications take effect. It will also updates gnome menu cache after placing every file into the right place.
189
+ #
141
190
  def create_desktop_entry
142
191
  UI.info "Installing Gnome menu item".green.bold
143
192
  if Cmd.download(GNOME_ICON_URL, Path.i2conf_gnome_png).success?
@@ -149,7 +198,9 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
149
198
  UI.warn "The menu item could not be created, because the image file could not be downloaded from #{GNOME_ICON_URL}.".green.bold
150
199
  end
151
200
  end
152
-
201
+
202
+ # The method creates a minimum configuration file for i2conf if it is not available.
203
+ # This configuration is based on
153
204
  def configure_i2conf
154
205
  if Path.i2conf_example_conf.file?
155
206
  UI.warn "Creating no example configuration file, because it already exists: #{Path.i2conf_example_conf}. "
@@ -158,7 +209,11 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
158
209
  Cmd.touch_and_replace_content Path.i2conf_example_conf, ::CSD::Application::I2conf::CONFIG_EXAMPLE
159
210
  end
160
211
  end
161
-
212
+
213
+ # This method notifies users that i2conf installation process is completed successfully.
214
+ # This notification will be shown on the top right of the desktop in Ubuntu system.
215
+ # Users can then start i2conf by clicking the icon in gnome menu.
216
+ #
162
217
  def send_notification
163
218
  Cmd.run %{notify-send --icon=i2conf_gnome "I2conf installation complete" "You are now ready to use your SIP MCU." }, :internal => true, :die_on_failure => false
164
219
  end
@@ -4,6 +4,10 @@ module CSD
4
4
  module Application
5
5
  module I2conf
6
6
 
7
+ # This constant defines the example configuration contents for the i2conf server.
8
+ # This configuration is based on the current running carenet-se service, while users can
9
+ # modify the configuration manually by applying their own network service parameter.
10
+ #
7
11
  CONFIG_EXAMPLE = %{
8
12
  <interface>eth0</interface>
9
13
  <use_udp>true</use_udp>
@@ -144,6 +144,8 @@ module CSD
144
144
  Path.sysctl_conf = Pathname.new(File.join('/', 'etc', 'sysctl.conf'))
145
145
  Path.sysctl_conf_backup = Pathname.new(File.join('/', 'etc', 'sysctl.conf.ai-backup'))
146
146
  Path.new_sysctl_conf = Pathname.new(File.join(Path.work, 'sysctl.conf'))
147
+ Path.catalyst_config = Pathname.new(File.join('/', 'etc', 'ati', 'amdpcsdb'))
148
+ Path.new_catalyst_config = Pathname.new(File.join(Path.work, 'amdpcsdb'))
147
149
  end
148
150
 
149
151
  end
@@ -1,5 +1,4 @@
1
1
  # -*- encoding: UTF-8 -*-
2
- require 'csd/application/minisip/component/core_packaging'
3
2
  require 'csd/application/minisip/component/core'
4
3
  require 'csd/application/minisip/component/ffmpeg'
5
4
  require 'csd/application/minisip/component/gnome'
@@ -1,5 +1,6 @@
1
1
  # -*- encoding: UTF-8 -*-
2
2
  require 'csd/application/minisip/phonebook_example'
3
+ require 'csd/application/minisip/component/core_packaging'
3
4
 
4
5
  module CSD
5
6
  module Application
@@ -19,6 +20,8 @@ module CSD
19
20
 
20
21
  class << self
21
22
 
23
+ include Packaging
24
+
22
25
  # This method processes the MiniSIP Core component and does everything needed for compiling it. Note that
23
26
  # it is not responsible for checking depenencies here. It will just focus on compiling the internal MiniSIP libraries.
24
27
  #
@@ -36,10 +39,7 @@ module CSD
36
39
  compile_libraries # We would like to re-compile MiniSIP no matter what options were given as command-line arguments.
37
40
  link_libraries
38
41
  create_address_book
39
- end
40
-
41
- def package!
42
- Packaging.package!
42
+ ensure_ati_vsync
43
43
  end
44
44
 
45
45
  def remove_ffmpeg
@@ -87,6 +87,8 @@ module CSD
87
87
  # by an TTA AI developer, after having made sure that that source code version is working properly.
88
88
  #
89
89
  def checkout
90
+ # The untested version from the vendor was requested
91
+ return checkout_from_vendor if Options.vendor
90
92
  Cmd.git_clone 'MiniSIP repository', 'http://github.com/csd/minisip.git', Path.repository
91
93
  # Note that the command above will checkout the master branch.
92
94
  # In that case we are not allowed to checkout the master branch again.
@@ -100,6 +102,11 @@ module CSD
100
102
  Cmd.run 'git submodule update'
101
103
  end
102
104
 
105
+ def checkout_from_vendor
106
+ Cmd.cd Path.work, :internal => true
107
+ Cmd.run "svn checkout svn://svn.minisip.org/minisip/trunk minisip"
108
+ end
109
+
103
110
  # Some places in the MiniSIP source code have to be modified before MiniSIP can be compiled.
104
111
  # * An absolute path must be replaced with the current absolute prefix path in
105
112
  # <tt>libminisip/source/subsystem_media/video/display/OpenGLDisplay.cxx</tt>
@@ -234,13 +241,13 @@ module CSD
234
241
  ''
235
242
  end
236
243
  # The --enable-debug option should only be there if specifically requested
237
- debug_options = (Options.enable_debug and (name == 'libminisip' or name == 'minisip')) ? '--enable-debug' : ''
244
+ debug_options = '--enable-debug' if Options.enable_debug
238
245
  # These options are used by all libraries
239
- common_options = Options.this_user ? %Q{--prefix="#{Path.build}" PKG_CONFIG_PATH="#{Path.build_lib_pkg_config}" ACLOCAL_FLAGS="#{Path.build_share_aclocal}" LD_LIBRARY_PATH="#{Path.build_lib}"} : ''
246
+ common_options = %Q{--prefix="#{Path.build}" PKG_CONFIG_PATH="#{Path.build_lib_pkg_config}" ACLOCAL_FLAGS="#{Path.build_share_aclocal}" LD_LIBRARY_PATH="#{Path.build_lib}"} if Options.this_user
240
247
  # I2conf needs to compile MiniSIP without any options
241
- individual_options = '' if Options.blank_minisip_configuration
248
+ individual_options = nil if Options.blank_minisip_configuration
242
249
  # Putting it all together
243
- Cmd.run ['./configure', common_options, debug_options, individual_options].join(' ')
250
+ Cmd.run ['./configure', common_options, debug_options, individual_options].compact.join(' ')
244
251
  end
245
252
 
246
253
  def make
@@ -248,7 +255,7 @@ module CSD
248
255
  end
249
256
 
250
257
  def make!
251
- Cmd.run("make")
258
+ Cmd.run("make -j 15")
252
259
  end
253
260
 
254
261
  def make_install
@@ -282,6 +289,26 @@ module CSD
282
289
  UI.info " Phonebook successfully saved in #{Path.phonebook}".yellow
283
290
  end
284
291
 
292
+ # This method is agreeably a little bit out of place. Because this technically should happen whenever
293
+ # the graphic card drivers are installed and not when MiniSIP is installed. However, the AI is not present
294
+ # when the graphic card drivers are installed (because then X11 is booted down and the AI process is
295
+ # replaced by the proprietary ATI or nVidia installation process). So we better make sure at this point,
296
+ # that the vertical synching for ATI graphic cards is switched on.
297
+ #
298
+ # The reason why we want this is because otherwise we will have vertical lines in the video. It is commonly
299
+ # referred to as "teared images" and is caused by the monitor having a Hertz rate of 60Hz, while OpenGL has
300
+ # a rate of about 400Hz. So the screen picture might be refreshed by OpenGL *while* the monitor is doing his
301
+ # own refresh. This will result in a horizontal line on the screen. When they are synchronized, OpenGL will
302
+ # be reduced to about 59Hz and the video will be clear. This information was obtained by Erik, the vendor
303
+ # of MiniSIP.
304
+ #
305
+ def ensure_ati_vsync
306
+ # Return if no ATI drivers are installed
307
+ return unless Path.catalyst_config.file?
308
+ UI.info "Ensuring AMD vertical synchronization between OpenGL and Monitor".green.bold
309
+ Cmd.run "sudo aticonfig --set-pcs-u32=BUSID-2:0:0-0/OpenGL,VSyncControl,2", :announce_pwd => false
310
+ end
311
+
285
312
  end
286
313
  end
287
314
  end
@@ -14,46 +14,71 @@ module CSD
14
14
  # TODO: Refactor this, it looks terribly sensitive.
15
15
  # TODO: Check for GPL and LGLP license conflicts.
16
16
  #
17
- def package!
17
+ def package
18
+ UI.separator
19
+ UI.info "This operation will make debian packages for all MiniSIP libraries.".green.bold
20
+ UI.separator
21
+ packing_introduction
18
22
  Cmd.mkdir Path.packaging
19
23
  libraries.each do |library|
20
- directory = Pathname.new(File.join(Path.repository, library))
24
+ @library = library
25
+ @directory = Pathname.new(File.join(Path.repository, library))
21
26
  next if Options.only and !Options.only.include?(library)
22
- UI.info "Making #{library} with target dist".green.bold
23
- if Cmd.cd(directory) or Options.reveal
24
- Cmd.run("make dist")
25
-
26
- tar_filename = File.basename(Dir[File.join(directory, '*.tar.gz')].first)
27
- Cmd.move(File.join(directory, tar_filename.to_s), Path.packaging) if tar_filename or Options.reveal
28
-
29
- if Cmd.cd(Path.packaging) or Options.reveal
30
- Cmd.run("tar -xzf #{tar_filename}")
31
- tar_dirname = File.basename(tar_filename.to_s, '.tar.gz')
32
- if Cmd.cd(File.join(Path.packaging, tar_dirname))
33
- Cmd.run("dpkg-buildpackage -rfakeroot")
34
- if library == 'minisip'
35
- if Cmd.cd(Path.packaging)
36
- package = File.basename(Dir[File.join(Path.packaging, "#{library}*.deb")].first)
37
- Cmd.run("sudo dpkg -i #{package}") if package or Options.reveal
38
- end
39
- else
40
- if Cmd.cd(Path.packaging)
41
- package = File.basename(Dir[File.join(Path.packaging, "#{library}0*.deb")].first)
42
- Cmd.run("sudo dpkg -i #{package}") if package or Options.reveal
43
- dev_package = File.basename(Dir[File.join(Path.packaging, "#{library}-dev*.deb")].first)
44
- Cmd.run("sudo dpkg -i #{dev_package}") if dev_package or Options.reveal
45
- end
46
- end
47
- else
48
- UI.error "Could not enter #{File.join(Path.packaging, tar_dirname)}."
49
- end
50
-
51
- else
52
- UI.error "Could not enter #{Path.packaging}."
53
- end
54
-
55
- else
56
- UI.error "Could not enter #{directory}."
27
+ package!
28
+ end
29
+ end
30
+
31
+ def packing_introduction
32
+ UI.info " Working directory: ".green.bold + Path.work.to_s.yellow
33
+ unless Path.repository.directory?
34
+ UI.warn "#{::CSD.executable} install minisip --no-temp"
35
+ raise Error::Minisip::Core::PackagingNeedsInstalledMinisip
36
+ end
37
+ UI.separator
38
+ if Options.help
39
+ UI.info Options.helptext
40
+ # Cleanup in case the working directory was temporary and is empty
41
+ Path.work.rmdir if Options.temp and Path.work.directory? and Path.work.children.empty?
42
+ raise CSD::Error::Argument::HelpWasRequested
43
+ else
44
+ raise Interrupt unless Options.yes or Options.reveal or UI.continue?
45
+ end
46
+ end
47
+
48
+ def package!
49
+ make_dist
50
+ extract_tar_file
51
+ build_package
52
+ end
53
+
54
+ def make_dist
55
+ UI.info "Making #{@library} with target dist".green.bold
56
+ Cmd.cd(@directory) or Options.reveal
57
+ Cmd.run("make dist")
58
+ @tar_filename = File.basename(Dir[File.join(@directory, '*.tar.gz')].first)
59
+ Cmd.move(File.join(@directory, @tar_filename.to_s), Path.packaging) if @tar_filename or Options.reveal
60
+ end
61
+
62
+ def extract_tar_file
63
+ Cmd.cd(Path.packaging) or Options.reveal
64
+ Cmd.run("tar -xzf #{@tar_filename}")
65
+ @tar_dirname = File.basename(@tar_filename.to_s, '.tar.gz')
66
+ end
67
+
68
+ def build_package
69
+ Cmd.cd(File.join(Path.packaging, @tar_dirname))
70
+ Cmd.run("dpkg-buildpackage -rfakeroot")
71
+ if @library == 'minisip'
72
+ if Cmd.cd(Path.packaging)
73
+ package = File.basename(Dir[File.join(Path.packaging, "#{@library}*.deb")].first)
74
+ Cmd.run("sudo dpkg -i #{package}") if package or Options.reveal
75
+ end
76
+ else
77
+ if Cmd.cd(Path.packaging)
78
+ package = File.basename(Dir[File.join(Path.packaging, "#{@library}0*.deb")].first)
79
+ Cmd.run("sudo dpkg -i #{package}") if package or Options.reveal
80
+ dev_package = File.basename(Dir[File.join(Path.packaging, "#{@library}-dev*.deb")].first)
81
+ Cmd.run("sudo dpkg -i #{dev_package}") if dev_package or Options.reveal
57
82
  end
58
83
  end
59
84
  end
@@ -63,4 +88,4 @@ module CSD
63
88
  end
64
89
  end
65
90
  end
66
- end
91
+ end
@@ -65,7 +65,7 @@ module CSD
65
65
  UI.info "Compiling and installing FFmpeg".green.bold
66
66
  Cmd.cd Path.ffmpeg_repository, :internal => true
67
67
  Cmd.run("#{c_flags} ./configure --enable-gpl --enable-libx264 --enable-x11grab")
68
- Cmd.run('make')
68
+ Cmd.run('make -j 15')
69
69
  Cmd.run('sudo checkinstall --pkgname=ffmpeg --pkgversion "99:-`git log -1 --pretty=format:%h`" --backup=no --default')
70
70
  end
71
71
 
@@ -36,9 +36,9 @@ module CSD
36
36
  UI.info "Compiling HDVIPER".green.bold
37
37
  Cmd.cd Path.hdviper_x264, :internal => true
38
38
  Cmd.run('./configure')
39
- Cmd.run('make')
39
+ Cmd.run('make -j 15')
40
40
  Cmd.cd Path.hdviper_x264_test_x264api, :internal => true
41
- Cmd.run('make')
41
+ Cmd.run('make -j 15')
42
42
  end
43
43
 
44
44
  end
@@ -7,6 +7,10 @@ module CSD
7
7
  module Network
8
8
  class << self
9
9
 
10
+ # These IP stack buffer values have been identified as optimal by the Master Thesis students.
11
+ # Feel free to experiment around with other values. Erik suspects that they might have to be
12
+ # higher than this.
13
+ #
10
14
  OPTIMUM_BUFFERS = {
11
15
  'net.core.rmem_max' => '131071',
12
16
  'net.core.wmem_max' => '131071',
@@ -30,7 +30,7 @@ module CSD
30
30
  UI.info "Compiling and installing x264".green.bold
31
31
  Cmd.cd Path.x264_repository, :internal => true
32
32
  Cmd.run('./configure')
33
- Cmd.run('make')
33
+ Cmd.run('make -j 15')
34
34
  Cmd.run('sudo checkinstall --pkgname=x264 --pkgversion "99:-`git log -1 --pretty=format:%h`" --backup=no --default')
35
35
  end
36
36
 
@@ -12,6 +12,7 @@ module CSD
12
12
 
13
13
  module Core
14
14
  class FFmpegInstalled < CSDError; status_code(210); end
15
+ class PackagingNeedsInstalledMinisip < CSDError; status_code(220); end
15
16
  end
16
17
 
17
18
  end
@@ -17,6 +17,10 @@ opts.on("--github-tar","Instead of fetching git repositories from Github, use ta
17
17
  self.github_tar = value
18
18
  end
19
19
 
20
+ opts.on("--vendor","Use the latest, untested version from the vendor's repository (SVN) instead of Github") do |value|
21
+ self.vendor = value
22
+ end
23
+
20
24
  opts.on('--branch BRANCH', 'Choose another branch than `master´ when downloading the source code') do |value|
21
25
  self.branch = value
22
26
  end
@@ -2,6 +2,7 @@ self.this_user = false
2
2
  self.apt_get = true
3
3
  self.ffmpeg_first = false
4
4
  self.github_tar = false
5
+ self.vendor = false
5
6
  self.branch = 'edge'
6
7
  self.bootstrap = true
7
8
  self.configure = true
@@ -40,10 +40,7 @@ module CSD
40
40
  # This method is called by the AI when the user requests the task "package" for MiniSIP.
41
41
  #
42
42
  def package
43
- UI.separator
44
- UI.info("This operation will package ".green.bold + "an already compiled".red.bold + " MiniSIP.".green.bold)
45
- introduction
46
- package!
43
+ Core.package
47
44
  end
48
45
 
49
46
  # This is the internal compile procedure for MiniSIP and its components.
@@ -24,7 +24,7 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
24
24
  #
25
25
  DEBIAN_DEPENDENCIES = %w{ ant openjdk-6-jre openjdk-6-jdk libnotify-bin }
26
26
 
27
- # The method is to notify users about following operation of AI, and initiate introduction method.
27
+ # This method notifies users about following operation of AI, and initiates introduction method.
28
28
  # The actual installation process is carried out by method install! for the purpose of keeping source code clean.
29
29
  #
30
30
  def install
@@ -35,7 +35,7 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
35
35
  install!
36
36
  end
37
37
 
38
- # The method is to set up logging server by initiate corresponding method. Its major operation includes
38
+ # This method sets up logging server by initiate corresponding method. Its major operation includes
39
39
  # install library dependencies, download and install logging server, create a desktop entry for logging server.
40
40
  # Thus users can start the logging server by simply clicking the MSLog button in the Applications menu.
41
41
  #
@@ -50,7 +50,7 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
50
50
  congratulations
51
51
  end
52
52
 
53
- # This method is to provide general introductions to users, like current working directory.
53
+ # This method provides general introductions to users, like current working directory.
54
54
  #
55
55
  # ====Options
56
56
  # [debug] If debug option is set, users will be notified about system platform and current working module.
@@ -81,7 +81,11 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
81
81
  end
82
82
  end
83
83
 
84
- #
84
+ # This method installs all library dependencies of MiniSIP logging server.
85
+ # It will first update the package index and then install all Debian dependencies.
86
+ # AI will force both of the operations continue without being interrupted by the request for user's approval
87
+ # This is because users have been asked once about their willingness to continue in the introduction method,
88
+ # thus AI will not bother users again for each of the library dependency.
85
89
  #
86
90
  def apt_get
87
91
  UI.info "Updating the package index".green.bold
@@ -89,16 +93,29 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
89
93
  UI.info "Installing Debian packages".green.bold
90
94
  Cmd.run "sudo apt-get install #{DEBIAN_DEPENDENCIES.join(' ')} --yes --force-yes", :announce_pwd => false
91
95
  end
92
-
96
+
97
+ # The method is to check out MiniSIP source code from git repository and place it into the current working directory.
98
+ #
93
99
  def download
94
100
  Cmd.git_clone 'Source code of logging server', 'git://github.com/csd/minisip-logging-server.git', Path.packages
95
101
  end
96
102
 
103
+ # This method compiles Java source code.
104
+ # It will set the constant JAVA_HOME to the value of '/usr', since Java is required when running logging server.
105
+ # It will also write the constant into bashrc file, so the constant will be set every time when the system boot up.
106
+ # However, the bashrc file cannot be reloaded systemwide from within the AI.
107
+ # As a workaround we derive the JAVA_HOME constant manually by the command
108
+ # ENV['JAVA_HOME'] = '/usr'
109
+ # instead of using the '.'-command
110
+ # Cmd.run ". ~/.bashrc"
111
+ # Then, AI will compile the Java source code by +ant+ command and give execution permissions to logging server shell scripts.
112
+ # AI will not execute the executable. User can start the logging server by clicking MSLog icon in the Applications menu.
113
+ #
97
114
  def process
98
115
  Cmd.cd Path.packages, :internal => true
99
116
  Cmd.run %{echo "export JAVA_HOME=/usr" >> ~/.bashrc} unless File.read(Path.bashrc) =~ /JAVA_HOME/
100
117
  # For some reason the bashrc file cannot be reloaded systemwide from within the AI.
101
- # As a workaround we devine the JAVA_HOME constant manually instead of using the '.'-command
118
+ # As a workaround we derive the JAVA_HOME constant manually instead of using the '.'-command
102
119
  # Cmd.run ". ~/.bashrc"
103
120
  ENV['JAVA_HOME'] = '/usr'
104
121
  # Compiling the Java source code
@@ -107,6 +124,12 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
107
124
  Cmd.run "chmod +x #{Path.logging_server_run}", :announce_pwd => false
108
125
  end
109
126
 
127
+ # This method creates desktop entry, so users can run logging server by clicking the MSLog icon in the Applications menu.
128
+ # It copies the downloaded icon to pixmaps directory, so the icon can be shown at the gnome menu.
129
+ # It creates a .desktop file, fulfills the file with the constant DESKTOP_ENTRY, and substitutes the PLACEHOLDER with execution commands.
130
+ # Then, AI copies the .desktop file to /usr/share/applications directory and initiates the method of update_gnome_menu_cache to make all the
131
+ # modifications take effect.
132
+ #
110
133
  def create_desktop_entry
111
134
  UI.info "Installing Gnome menu item".green.bold
112
135
  Cmd.run("sudo cp #{Path.mslog_gnome_png} #{Path.mslog_gnome_pixmap}", :announce_pwd => false)
@@ -115,16 +138,27 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
115
138
  update_gnome_menu_cache
116
139
  end
117
140
 
141
+ # This method updates gnome menu cache. It first updates the gnome menus cash, so the icon can be shown
142
+ # in the menu bar. It then gives the MSLog .desktop file a root privilege for security reasons.
143
+ #
118
144
  def update_gnome_menu_cache
119
145
  return unless Gem::Platform.local.ubuntu_10?
120
146
  Cmd.run %{sudo sh -c "/usr/share/gnome-menus/update-gnome-menus-cache /usr/share/applications/ > /usr/share/applications/desktop.${LANG}.cache"}, :announce_pwd => false
121
147
  Cmd.run "sudo chown root:root #{Path.mslog_desktop_entry}", :announce_pwd => false
122
148
  end
123
149
 
150
+ # This method notifies users that MiniSIP Logging Server installation process is completed successfully.
151
+ # This notification will be shown on the top right of the desktop in Ubuntu system.
152
+ # Users can then start MiniSIP Logging Server by clicking the icon in gnome menu.
153
+ #
124
154
  def send_notification
125
155
  Cmd.run %{notify-send --icon=mslog_gnome "MiniSIP Logging Server installation complete" "You are now ready to use your logging server." }, :internal => true, :die_on_failure => false
126
156
  end
127
157
 
158
+ # This method notifies users that MiniSIP Logging Server installation process is completed successfully.
159
+ # It is AI's internal notification, which will be shown on the command line interface.
160
+ # Users can then start MiniSIP Logging Server by clicking the icon in gnome menu.
161
+ #
128
162
  def congratulations
129
163
  UI.separator
130
164
  UI.info " MiniSIP Logging Server installation complete.".green.bold
@@ -132,6 +166,11 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
132
166
  UI.separator
133
167
  end
134
168
 
169
+ # This method is to define relative path in mslog module. This will make the program clean and easy to read.
170
+ # ====Notes
171
+ # In the Path.bashrc constant, we use ENV['HOME'] to locate the bashrc file, because the '~/.bashrc' representation
172
+ # can only be accepted by Linux system, while Ruby considers it as an invalid path representation.
173
+ #
135
174
  def define_relative_paths
136
175
  Path.packages = Pathname.new(File.join(Path.work, 'minisip-logging-server'))
137
176
  Path.bin = Pathname.new(File.join(Path.packages, 'bin'))
@@ -146,8 +146,9 @@ class TestMinisip < Test::Unit::TestCase
146
146
  Options.debug = true
147
147
  Options.enable_debug = true
148
148
  out, err = capture { Core.compile_libraries }
149
+ # We will check or the flag before and after the milestone to go sure it's everywhere
149
150
  assert_match /MILESTONE_processing_libminisip.+\-\-enable\-debug.+MILESTONE_processing_minisip.+\-\-enable\-debug/m, out
150
- assert_no_match /\-\-enable\-debug.+MILESTONE_processing_libminisip/m, out
151
+ assert_match /\-\-enable\-debug.+MILESTONE_processing_libminisip/m, out
151
152
  end
152
153
 
153
154
  end # context "in theory when compiling"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csd
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 3
10
- version: 0.3.3
9
+ - 4
10
+ version: 0.3.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Technology Transfer Alliance Team
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-10 00:00:00 +02:00
18
+ date: 2010-09-17 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -37,7 +37,30 @@ files:
37
37
  - VERSION
38
38
  - bin/ai
39
39
  - bin/ttai
40
- - csd.gemspec
40
+ - img/3d1.png
41
+ - img/bios0.jpg
42
+ - img/bios1.jpg
43
+ - img/bios2.jpg
44
+ - img/camera1.jpg
45
+ - img/camera2.jpg
46
+ - img/decklink1.png
47
+ - img/decklink2.png
48
+ - img/graphics1.png
49
+ - img/graphics2.png
50
+ - img/graphics3.png
51
+ - img/graphics4.png
52
+ - img/graphics5.png
53
+ - img/installer1.jpg
54
+ - img/installer2.jpg
55
+ - img/installer3.jpg
56
+ - img/minisip1.png
57
+ - img/reboot.png
58
+ - img/ruby1.png
59
+ - img/ruby2.png
60
+ - img/ruby3.png
61
+ - img/ruby4.png
62
+ - img/update1.png
63
+ - img/update2.png
41
64
  - lib/csd.rb
42
65
  - lib/csd/application.rb
43
66
  - lib/csd/application/decklink.rb
@@ -140,7 +163,7 @@ homepage: http://github.com/csd/csd
140
163
  licenses: []
141
164
 
142
165
  post_install_message: "\n\
143
- ============================================================\n\n Thank you for installing the TTA Automated Installer!\n\n You can run it by typing `ai\xC2\xB4 in your command line.\n\n NOTE: On DEBIAN and UBUNTU the executable `ai\xC2\xB4 is *maybe*\n not in your PATH by default. If that is the case,\n you can fix it by running this command:\n\n echo \"export PATH=\\$PATH:$(gem env | grep \"E D\" | sed \"s/[^\\w]* //\")\" >> ~/.bashrc;. ~/.bashrc\n\n\
166
+ ============================================================\n\n Thank you for installing the TTA Automated Installer!\n\n NOTE: On DEBIAN and UBUNTU the executable `ai\xC2\xB4 is *maybe*\n not in your PATH by default. If that is the case,\n you can fix it by running this command:\n\n echo \"export PATH=\\$PATH:$(gem env | grep \"E D\" | sed \"s/[^\\w]* //\")\" >> ~/.bashrc;. ~/.bashrc\n\n You can run the AI by typing `ai\xC2\xB4 in your command line.\n\n\
144
167
  ============================================================\n"
145
168
  rdoc_options:
146
169
  - --charset=UTF-8
data/csd.gemspec DELETED
@@ -1,175 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{csd}
8
- s.version = "0.3.3"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Technology Transfer Alliance Team"]
12
- s.date = %q{2010-09-10}
13
- s.description = %q{CSD stands for Communication Systems Design and is a project of the Telecommunication Systems Laboratory (TSLab) of the Royal Institute of Technology in Stockholm, Sweden. Within CSD many software tools are used to build up various networks and services. This gem is supposed to automate processes to handle the compilation and installation of these software tools. Technology Transfer Alliance (TTA) is the project team, which maintains this code.}
14
- s.email = %q{mtoday11@gmail.com}
15
- s.executables = ["ai", "ttai"]
16
- s.extra_rdoc_files = [
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "COPYING",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "bin/ai",
27
- "bin/ttai",
28
- "csd.gemspec",
29
- "lib/csd.rb",
30
- "lib/csd/application.rb",
31
- "lib/csd/application/decklink.rb",
32
- "lib/csd/application/decklink/about.yml",
33
- "lib/csd/application/decklink/base.rb",
34
- "lib/csd/application/decklink/options/common.rb",
35
- "lib/csd/application/decklink/options/common_defaults.rb",
36
- "lib/csd/application/default.rb",
37
- "lib/csd/application/default/base.rb",
38
- "lib/csd/application/graphics.rb",
39
- "lib/csd/application/graphics/about.yml",
40
- "lib/csd/application/graphics/base.rb",
41
- "lib/csd/application/graphics/error.rb",
42
- "lib/csd/application/graphics/options/common.rb",
43
- "lib/csd/application/graphics/options/common_defaults.rb",
44
- "lib/csd/application/graphics/options/install.rb",
45
- "lib/csd/application/graphics/options/install_defaults.rb",
46
- "lib/csd/application/i2conf.rb",
47
- "lib/csd/application/i2conf/about.yml",
48
- "lib/csd/application/i2conf/base.rb",
49
- "lib/csd/application/i2conf/config_example.rb",
50
- "lib/csd/application/i2conf/options/common.rb",
51
- "lib/csd/application/i2conf/options/common_defaults.rb",
52
- "lib/csd/application/i2conf/options/install.rb",
53
- "lib/csd/application/i2conf/options/install_defaults.rb",
54
- "lib/csd/application/minisip.rb",
55
- "lib/csd/application/minisip/about.yml",
56
- "lib/csd/application/minisip/base.rb",
57
- "lib/csd/application/minisip/component.rb",
58
- "lib/csd/application/minisip/component/core.rb",
59
- "lib/csd/application/minisip/component/core_packaging.rb",
60
- "lib/csd/application/minisip/component/ffmpeg.rb",
61
- "lib/csd/application/minisip/component/gnome.rb",
62
- "lib/csd/application/minisip/component/hdviper.rb",
63
- "lib/csd/application/minisip/component/network.rb",
64
- "lib/csd/application/minisip/component/plugins.rb",
65
- "lib/csd/application/minisip/component/x264.rb",
66
- "lib/csd/application/minisip/error.rb",
67
- "lib/csd/application/minisip/options/common.rb",
68
- "lib/csd/application/minisip/options/common_defaults.rb",
69
- "lib/csd/application/minisip/options/install.rb",
70
- "lib/csd/application/minisip/options/install_defaults.rb",
71
- "lib/csd/application/minisip/options/package.rb",
72
- "lib/csd/application/minisip/options/package_defaults.rb",
73
- "lib/csd/application/minisip/phonebook_example.rb",
74
- "lib/csd/application/minisip/unix.rb",
75
- "lib/csd/application/minisip/unix/darwin.rb",
76
- "lib/csd/application/minisip/unix/linux.rb",
77
- "lib/csd/application/minisip/unix/linux/debian.rb",
78
- "lib/csd/application/minisip/unix/linux/debian/ubuntu10.rb",
79
- "lib/csd/application/mslog.rb",
80
- "lib/csd/application/mslog/about.yml",
81
- "lib/csd/application/mslog/base.rb",
82
- "lib/csd/application/mslog/options/common.rb",
83
- "lib/csd/application/mslog/options/common_defaults.rb",
84
- "lib/csd/applications.rb",
85
- "lib/csd/commands.rb",
86
- "lib/csd/container.rb",
87
- "lib/csd/error.rb",
88
- "lib/csd/extensions.rb",
89
- "lib/csd/extensions/core/array.rb",
90
- "lib/csd/extensions/core/dir.rb",
91
- "lib/csd/extensions/core/kernel.rb",
92
- "lib/csd/extensions/core/object.rb",
93
- "lib/csd/extensions/core/open_struct.rb",
94
- "lib/csd/extensions/core/option_parser.rb",
95
- "lib/csd/extensions/core/pathname.rb",
96
- "lib/csd/extensions/core/string.rb",
97
- "lib/csd/extensions/gem/platform.rb",
98
- "lib/csd/options_parser.rb",
99
- "lib/csd/path_container.rb",
100
- "lib/csd/user_interface.rb",
101
- "lib/csd/user_interface/base.rb",
102
- "lib/csd/user_interface/cli.rb",
103
- "lib/csd/user_interface/silent.rb",
104
- "lib/csd/vendor/active_support/MIT-LICENSE",
105
- "lib/csd/vendor/active_support/inflector.rb",
106
- "lib/csd/vendor/active_support/object_extensions.rb",
107
- "lib/csd/vendor/term/GPL2-LICENSE",
108
- "lib/csd/vendor/term/ansicolor.rb",
109
- "lib/csd/vendor/zentest/zentest_assertions.rb",
110
- "lib/csd/version.rb",
111
- "test/application/test_minisip.rb",
112
- "test/functional/test_application_base.rb",
113
- "test/functional/test_application_default.rb",
114
- "test/functional/test_applications.rb",
115
- "test/functional/test_cli.rb",
116
- "test/functional/test_commands.rb",
117
- "test/functional/test_csd.rb",
118
- "test/functional/test_options.rb",
119
- "test/helper.rb",
120
- "test/unit/test_container.rb",
121
- "test/unit/test_dir.rb",
122
- "test/unit/test_open_struct.rb",
123
- "test/unit/test_pathname.rb",
124
- "test/unit/test_platform.rb",
125
- "test/unit/test_string.rb"
126
- ]
127
- s.homepage = %q{http://github.com/csd/csd}
128
- s.post_install_message = %q{
129
- ============================================================
130
-
131
- Thank you for installing the TTA Automated Installer!
132
-
133
- You can run it by typing `ai´ in your command line.
134
-
135
- NOTE: On DEBIAN and UBUNTU the executable `ai´ is *maybe*
136
- not in your PATH by default. If that is the case,
137
- you can fix it by running this command:
138
-
139
- echo "export PATH=\$PATH:$(gem env | grep "E D" | sed "s/[^\w]* //")" >> ~/.bashrc;. ~/.bashrc
140
-
141
- ============================================================
142
- }
143
- s.rdoc_options = ["--charset=UTF-8"]
144
- s.require_paths = ["lib"]
145
- s.rubygems_version = %q{1.3.7}
146
- s.summary = %q{Installation and compilation handler for software used in CSD projects.}
147
- s.test_files = [
148
- "test/application/test_minisip.rb",
149
- "test/functional/test_application_base.rb",
150
- "test/functional/test_application_default.rb",
151
- "test/functional/test_applications.rb",
152
- "test/functional/test_cli.rb",
153
- "test/functional/test_commands.rb",
154
- "test/functional/test_csd.rb",
155
- "test/functional/test_options.rb",
156
- "test/helper.rb",
157
- "test/unit/test_container.rb",
158
- "test/unit/test_dir.rb",
159
- "test/unit/test_open_struct.rb",
160
- "test/unit/test_pathname.rb",
161
- "test/unit/test_platform.rb",
162
- "test/unit/test_string.rb"
163
- ]
164
-
165
- if s.respond_to? :specification_version then
166
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
167
- s.specification_version = 3
168
-
169
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
170
- else
171
- end
172
- else
173
- end
174
- end
175
-