csd 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/csd/application/graphics/base.rb +55 -0
- data/lib/csd/application/minisip/base.rb +1 -0
- data/lib/csd/application/minisip/component/core.rb +9 -4
- data/lib/csd/application/minisip/component/gnome.rb +4 -1
- data/lib/csd/application/minisip/options/install_defaults.rb +1 -1
- data/lib/csd/application/mslog/base.rb +27 -1
- data/lib/csd/options_parser.rb +3 -3
- data/test/application/test_minisip.rb +1 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
@@ -29,6 +29,17 @@ module CSD
|
|
29
29
|
cleanup_working_directory
|
30
30
|
end
|
31
31
|
|
32
|
+
# This method is to provide general introductions to users, like current working directory.
|
33
|
+
#
|
34
|
+
# ====Options
|
35
|
+
# [debug] If debug option is set, users will be notified about system platform and current working module.
|
36
|
+
# [help] If help option is set, AI will provide all help information and cleanup in case the working directory was temporary and is empty.
|
37
|
+
# [reveal] If reveal option is set, AI will continue and process the next method.
|
38
|
+
# [yes] If yes option is set, AI will continue and process the next method.
|
39
|
+
#
|
40
|
+
# If users did not specify any option, AI will ask for their willingness to continue and process the next method
|
41
|
+
# after the users choose 'yes'. Or AI will terminate its operation.
|
42
|
+
#
|
32
43
|
def introduction
|
33
44
|
UI.info " Working directory: ".green.bold + Path.work.to_s.yellow
|
34
45
|
if Options.debug
|
@@ -77,6 +88,11 @@ module CSD
|
|
77
88
|
Cmd.run('lspci | grep VGA', :internal => true).output
|
78
89
|
end
|
79
90
|
|
91
|
+
# The method is to check out ATI radeon driver from git repository and execute the shell script.
|
92
|
+
#
|
93
|
+
# * It will allow the script to be run as a program, Because Linux system will not grant this permission to shell script for security reason.
|
94
|
+
# * The method will ask for users' approval before initiate the shell script.
|
95
|
+
#
|
80
96
|
def install_radeon
|
81
97
|
Cmd.git_clone 'drivers for ATI radeon', 'git://github.com/csd/ati.git', Path.radeon
|
82
98
|
Cmd.run "chmod +x #{Path.radeon_run}", :announce_pwd => false
|
@@ -84,6 +100,14 @@ module CSD
|
|
84
100
|
Cmd.run "sh #{Path.radeon_run}", :announce_pwd => false
|
85
101
|
end
|
86
102
|
|
103
|
+
# The method is to check installation environment and initiate installation method of GeForce.
|
104
|
+
# The installation process of GeForce driver need to update users' X configuration, so AI is suppose to
|
105
|
+
# turn off X server before initiating the installation procedure of GeForce driver.
|
106
|
+
# ==== X server status
|
107
|
+
#
|
108
|
+
# [X server is running] AI will terminate X server, but this operation will also stop GNOME and AI itself. In order to continue with the installation procedure, users will start AI again from CLI.
|
109
|
+
# [X server has be turned off] AI will initiate the installation process, but whenever there is an error occur, AI will restart GNOME mode and clean up the working directory.
|
110
|
+
#
|
87
111
|
def install_geforce
|
88
112
|
if xserver_running? or Options.reveal
|
89
113
|
UI.separator
|
@@ -103,11 +127,30 @@ module CSD
|
|
103
127
|
end
|
104
128
|
end
|
105
129
|
|
130
|
+
# The method is to check X server status.
|
131
|
+
# ====Returns
|
132
|
+
# * +true+ if X server is running
|
133
|
+
# * +false+ if X server is not running
|
134
|
+
#
|
106
135
|
def xserver_running?
|
107
136
|
result = Cmd.run('ps -ef', :internal => true)
|
108
137
|
result.success? and (result.output =~ /bin\/X.+gdm/ or result.output =~ /xinit/)
|
109
138
|
end
|
110
139
|
|
140
|
+
# The method is to check out GeForce installation script for git repository and initiate installation GUI.
|
141
|
+
# Currently, MiniSIP is only run on x86 systems, and GeForce driver installation is to improve the video quality
|
142
|
+
# of MiniSIP. Thus, before checking out GeForce installation script, AI will check the architecture of system.
|
143
|
+
# When it is a 64-bit system, AI will raise an error and terminate the process. While the system has a x86 architecture,
|
144
|
+
# AI will continue with the installation process. AI will check out the installation script from git repositoy,
|
145
|
+
# and permit the script to run as a program.
|
146
|
+
# AI will ask for users' approval before initiate the shell script.
|
147
|
+
# ==== Notes
|
148
|
+
# we do not use Cmd.run to initiate the installation process, because the User input is not forwared to
|
149
|
+
# the executed application correctly. We will use Ruby's native command execution:
|
150
|
+
# system "sudo #{Path.geforce_run}"
|
151
|
+
# instead of
|
152
|
+
# Cmd.run "sudo #{Path.geforce_run}", :announce_pwd => false, :verbose => true, :die_on_failure => false
|
153
|
+
#
|
111
154
|
def install_geforce!
|
112
155
|
raise Error::Graphics::Amd64NotSupported, "Sorry, nVIDIA GeForce is currently only supported on x86" unless Gem::Platform.local.cpu == 'x86'
|
113
156
|
Cmd.git_clone 'drivers for nVIDIA GeForce', 'git://github.com/csd/nvidia.git', Path.geforce
|
@@ -119,6 +162,9 @@ module CSD
|
|
119
162
|
system "sudo #{Path.geforce_run}"
|
120
163
|
end
|
121
164
|
|
165
|
+
# The method is to notify the user about following operation of AI and initiate the method of wait_for_confirmation,
|
166
|
+
# where users can choose to continue with the operation or not.
|
167
|
+
#
|
122
168
|
def proprietary_continue
|
123
169
|
UI.separator
|
124
170
|
UI.info 'The proprietary installer for your graphic card will now be executed.'.green.bold
|
@@ -127,6 +173,10 @@ module CSD
|
|
127
173
|
wait_for_confirmation
|
128
174
|
end
|
129
175
|
|
176
|
+
# The method is to provide necessary tips for users to install GeForce. Because users need to allow GeForce to
|
177
|
+
# update X configuration in the installation wizard and restart the system to make all changes take effect.
|
178
|
+
# The method will also initiate the method of wait_for_confirmation, where users can choose to continue with the operation or not.
|
179
|
+
#
|
130
180
|
def proprietary_continue_for_geforce
|
131
181
|
UI.separator
|
132
182
|
UI.info 'The proprietary installer for your graphic card will now be executed.'.green.bold
|
@@ -136,6 +186,9 @@ module CSD
|
|
136
186
|
wait_for_confirmation
|
137
187
|
end
|
138
188
|
|
189
|
+
# This method is to ask users about their willingness to continue. If the user choose to continue or AI is running
|
190
|
+
# in reveal mode, AI will continue with its operation. Or AI will clear up the working directory and terminate the process.
|
191
|
+
#
|
139
192
|
def wait_for_confirmation
|
140
193
|
unless UI.continue? or Options.reveal
|
141
194
|
cleanup_working_directory
|
@@ -143,6 +196,8 @@ module CSD
|
|
143
196
|
end
|
144
197
|
end
|
145
198
|
|
199
|
+
#This method is to define relative path in graphics module. This will make the program clean and easy to read.
|
200
|
+
#
|
146
201
|
def define_relative_paths
|
147
202
|
UI.debug "#{self.class}#define_relative_paths defines relative graphics paths now"
|
148
203
|
Path.radeon = Pathname.new(File.join(Path.work, 'radeon'))
|
@@ -126,6 +126,7 @@ module CSD
|
|
126
126
|
Path.plugins = Pathname.new(File.join(Path.work, 'plugins'))
|
127
127
|
Path.plugins_destination = Pathname.new(File.join(Path.build_lib, 'libminisip', 'plugins'))
|
128
128
|
Path.minisip_gnome_png = Pathname.new(File.join(Path.repository, 'minisip', 'share', 'icon_gnome.png'))
|
129
|
+
Path.minisip_gnome_png_fallback = Pathname.new(File.join(Path.repository, 'minisip', 'share', 'minisip.png'))
|
129
130
|
Path.minisip_gnome_pixmap = Pathname.new(File.join('/', 'usr', 'share', 'pixmaps', 'minisip_gnome.png'))
|
130
131
|
Path.minisip_desktop_entry = Pathname.new(File.join('/', 'usr', 'share', 'applications', 'minisip.desktop'))
|
131
132
|
Path.phonebook = Pathname.new(File.join(ENV['HOME'], '.minisip.addr'))
|
@@ -40,7 +40,7 @@ module CSD
|
|
40
40
|
|
41
41
|
def remove_ffmpeg
|
42
42
|
ffmpeg_available = Cmd.run('ffmpeg -h', :internal => true, :die_on_failure => false).success?
|
43
|
-
return if Options.ffmpeg_first or !
|
43
|
+
return if Options.ffmpeg_first or !libraries.include?('libminisip') or !ffmpeg_available
|
44
44
|
UI.debug "MILESTONE_removing_ffmpeg"
|
45
45
|
if Gem::Platform.local.debian?
|
46
46
|
# Note that FFmpeg must have been installed via apt-get or via the AI in order for this to work,
|
@@ -88,6 +88,10 @@ module CSD
|
|
88
88
|
Cmd.cd Path.repository, :internal => true
|
89
89
|
Cmd.run "git checkout -b #{Options.branch} origin/#{Options.branch}"
|
90
90
|
end
|
91
|
+
UI.info "Initializing any optional git submodules".green.bold
|
92
|
+
Cmd.cd Path.repository, :internal => true
|
93
|
+
Cmd.run 'git submodule init'
|
94
|
+
Cmd.run 'git submodule update'
|
91
95
|
end
|
92
96
|
|
93
97
|
# Some places in the MiniSIP source code have to be modified before MiniSIP can be compiled.
|
@@ -108,11 +112,12 @@ module CSD
|
|
108
112
|
UI.info "Fixing MiniSIP OpenGL GUI source code".green.bold
|
109
113
|
# Replacing the hardcoded path in the OpenGLDisplay.cxx
|
110
114
|
Cmd.replace Path.repository_open_gl_display, /\tstring path = "(.+)"\+/, %{\tstring path = "#{Path.build}"+}
|
115
|
+
UI.info "Modifying default MiniSIP configuration parameters".green.bold
|
111
116
|
# Removing the default SIP proxy server from the Configuration generator
|
112
117
|
Cmd.replace Path.repository_sip_conf, 'sip.domain.example', ''
|
113
|
-
#
|
114
|
-
|
115
|
-
# Making
|
118
|
+
# We would like decklink to be the default video device
|
119
|
+
Cmd.replace Path.repository_sip_conf, 'be->commit();', %{be->save("video_device", "decklink:0/720p50@25");be->commit();}
|
120
|
+
# Making
|
116
121
|
if Options.ffmpeg_first
|
117
122
|
UI.info "Fixing MiniSIP Audio/Video en/decoder source code".green.bold
|
118
123
|
Cmd.replace Path.repository_avcoder_cxx, 'PIX_FMT_RGBA32', 'PIX_FMT_RGB32'
|
@@ -39,7 +39,10 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
|
|
39
39
|
# So we do not return here now
|
40
40
|
# return if Path.minisip_gnome_pixmap.file? and Path.minisip_desktop_entry.file?
|
41
41
|
UI.info "Installing Gnome menu item".green.bold
|
42
|
-
|
42
|
+
# It might be that the requested branch does not have the new gnome_icon.png in minisip/share
|
43
|
+
# That's why we have to use the default logo as a fallback solution
|
44
|
+
Path.usable_gnome_png = Path.minisip_gnome_png.file? ? Path.minisip_gnome_png : Path.minisip_gnome_png_fallback
|
45
|
+
Cmd.run "sudo cp #{Path.usable_gnome_png} #{Path.minisip_gnome_pixmap}", :announce_pwd => false
|
43
46
|
Path.new_desktop_entry = Pathname.new File.join(Path.work, 'minisip.desktop')
|
44
47
|
Cmd.touch_and_replace_content Path.new_desktop_entry, DESKTOP_ENTRY, :internal => true
|
45
48
|
Cmd.run "sudo mv #{Path.new_desktop_entry} #{Path.minisip_desktop_entry}", :announce_pwd => false
|
@@ -5,7 +5,8 @@ module CSD
|
|
5
5
|
module Application
|
6
6
|
module Mslog
|
7
7
|
class Base < CSD::Application::Base
|
8
|
-
|
8
|
+
|
9
|
+
# Necessary contents for MSLog .desktop file. It will be used in the method of create_desktop_entry.
|
9
10
|
DESKTOP_ENTRY = %{
|
10
11
|
[Desktop Entry]
|
11
12
|
Encoding=UTF-8
|
@@ -23,6 +24,9 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
|
|
23
24
|
#
|
24
25
|
DEBIAN_DEPENDENCIES = %w{ ant openjdk-6-jre openjdk-6-jdk libnotify-bin }
|
25
26
|
|
27
|
+
# The method is to notify users about following operation of AI, and initiate introduction method.
|
28
|
+
# The actual installation process is carried out by method install! for the purpose of keeping source code clean.
|
29
|
+
#
|
26
30
|
def install
|
27
31
|
UI.separator
|
28
32
|
UI.info "This operation will install the logging server of MiniSIP.".green.bold
|
@@ -31,6 +35,10 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
|
|
31
35
|
install!
|
32
36
|
end
|
33
37
|
|
38
|
+
# The method is to set up logging server by initiate corresponding method. Its major operation includes
|
39
|
+
# install library dependencies, download and install logging server, create a desktop entry for logging server.
|
40
|
+
# Thus users can start the logging server by simply clicking the MSLog button in the Applications menu.
|
41
|
+
#
|
34
42
|
def install!
|
35
43
|
create_working_directory
|
36
44
|
define_relative_paths
|
@@ -42,6 +50,22 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
|
|
42
50
|
congratulations
|
43
51
|
end
|
44
52
|
|
53
|
+
# This method is to provide general introductions to users, like current working directory.
|
54
|
+
#
|
55
|
+
# ====Options
|
56
|
+
# [debug] If debug option is set, users will be notified about system platform and current working module.
|
57
|
+
# [help] If help option is set, AI will provide all help information and cleanup.
|
58
|
+
# [reveal] If reveal option is set, AI will continue and process the next method.
|
59
|
+
# [yes] If yes option is set, AI will continue and process the next method.
|
60
|
+
#
|
61
|
+
# If users did not specify any option, AI will ask for their willingness to continue and process the next method
|
62
|
+
# after the users choose 'yes'. Or AI will terminate its operation.
|
63
|
+
#
|
64
|
+
# ====Notes
|
65
|
+
# In mslog module the options of temp and work_dir will be turned off by default. The reason of doing that is because
|
66
|
+
# the minisip-logging-server directory and its content is needed to run the logging server. Thus AI is not going to
|
67
|
+
# use temp directory to process the source code or clean up the working directory after installation procedure.
|
68
|
+
#
|
45
69
|
def introduction
|
46
70
|
UI.info " Working directory: ".green.bold + Path.work.to_s.yellow
|
47
71
|
if Options.debug
|
@@ -57,6 +81,8 @@ Categories=Application;Internet;Network;Chat;AudioVideo}
|
|
57
81
|
end
|
58
82
|
end
|
59
83
|
|
84
|
+
#
|
85
|
+
#
|
60
86
|
def apt_get
|
61
87
|
UI.info "Updating the package index".green.bold
|
62
88
|
Cmd.run "sudo apt-get update --yes --force-yes", :announce_pwd => false
|
data/lib/csd/options_parser.rb
CHANGED
@@ -155,16 +155,16 @@ module CSD
|
|
155
155
|
opts.on("-e", "--verbose","Show more elaborate output") do |value|
|
156
156
|
self.verbose = value
|
157
157
|
end
|
158
|
-
opts.on("-d", "--debug","Show
|
158
|
+
opts.on("-d", "--debug","Show debugging information about the AI") do |value|
|
159
159
|
self.debug = value
|
160
160
|
end
|
161
161
|
opts.on("-s", "--silent","Don't show any output") do |value|
|
162
162
|
self.silent = value
|
163
163
|
end
|
164
|
-
opts.on_tail("-a", "--developer", "Show information only relevant to
|
164
|
+
opts.on_tail("-a", "--developer", "Show information only relevant to software developers") do |value|
|
165
165
|
self.developer = value
|
166
166
|
end
|
167
|
-
opts.on_tail("-h", "--help", "Show detailed help (regarding the given
|
167
|
+
opts.on_tail("-h", "--help", "Show detailed help (regarding the given TASK and APPLICATION)") do |value|
|
168
168
|
self.help = value
|
169
169
|
end
|
170
170
|
opts.on_tail("-v", "--version", "Show the version of this AI") do
|
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:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 1
|
10
|
+
version: 0.3.1
|
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-
|
18
|
+
date: 2010-09-08 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|