Description:
update install.sh to work with latest ubuntu LTS
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r266:88b545da976a - - 1 file changed: 13 inserted, 0 deleted

@@ -1,189 +1,202
1 #!/bin/sh
1 #!/bin/sh
2
2
3 #installation script for cafe-grader, for ubuntu 16.04
3 #installation script for cafe-grader, for ubuntu 16.04
4
4
5 echo "This script will install and configure Cafe grader."
5 echo "This script will install and configure Cafe grader."
6
6
7 RUBY_VERSION=2.3.4
7 RUBY_VERSION=2.3.4
8 echo "This will install Ruby $RUBY_VERSION under RVM"
8 echo "This will install Ruby $RUBY_VERSION under RVM"
9
9
10 echo "Installing required apts"
10 echo "Installing required apts"
11
11
12 sudo apt-get install software-properties-common
12 sudo apt-get install software-properties-common
13 sudo apt-add-repository -y ppa:rael-gc/rvm
13 sudo apt-add-repository -y ppa:rael-gc/rvm
14 sudo apt-get update
14 sudo apt-get update
15 sudo apt-get install rvm mysql-server mysql-client \
15 sudo apt-get install rvm mysql-server mysql-client \
16 g++ gcc apache2 libmysqlclient20 build-essential \
16 g++ gcc apache2 libmysqlclient20 build-essential \
17 git-core openssl libreadline6 libreadline6-dev \
17 git-core openssl libreadline6 libreadline6-dev \
18 zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \
18 zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \
19 sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \
19 sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \
20 ncurses-dev automake libtool bison subversion \
20 ncurses-dev automake libtool bison subversion \
21 pkg-config curl nodejs unzip pyflakes ruby default-jdk \
21 pkg-config curl nodejs unzip pyflakes ruby default-jdk \
22 libmysqld-dev mercurial python-setuptools python-dev python3-numpy
22 libmysqld-dev mercurial python-setuptools python-dev python3-numpy
23
23
24 #--- edited --
24 #--- edited --
25 #--- we now use rvm from ubuntu package ---
25 #--- we now use rvm from ubuntu package ---
26 #echo "Installing RVM"
26 #echo "Installing RVM"
27 #curl -k -L https://get.rvm.io | bash -s stable
27 #curl -k -L https://get.rvm.io | bash -s stable
28 #source ~/.rvm/scripts/rvm
28 #source ~/.rvm/scripts/rvm
29
29
30 source /etc/profile.d/rvm.sh
30 source /etc/profile.d/rvm.sh
31
31
32 echo "Installing Ruby $RUBY_VERSION in RVM"
32 echo "Installing Ruby $RUBY_VERSION in RVM"
33
33
34 rvm install $RUBY_VERSION
34 rvm install $RUBY_VERSION
35 rvm use $RUBY_VERSION
35 rvm use $RUBY_VERSION
36
36
37 echo "Fetching Cafe Grader from Git repositories"
37 echo "Fetching Cafe Grader from Git repositories"
38
38
39 echo "Fetching web interface"
39 echo "Fetching web interface"
40
40
41 mkdir cafe_grader
41 mkdir cafe_grader
42 cd cafe_grader
42 cd cafe_grader
43 git clone -q git://github.com/cafe-grader-team/cafe-grader-web.git web
43 git clone -q git://github.com/cafe-grader-team/cafe-grader-web.git web
44
44
45 echo "Configuring rails app"
45 echo "Configuring rails app"
46
46
47 cp web/config/application.rb.SAMPLE web/config/application.rb
47 cp web/config/application.rb.SAMPLE web/config/application.rb
48 cp web/config/initializers/cafe_grader_config.rb.SAMPLE web/config/initializers/cafe_grader_config.rb
48 cp web/config/initializers/cafe_grader_config.rb.SAMPLE web/config/initializers/cafe_grader_config.rb
49
49
50 #replace UTC in application.rb with the system timezone
50 #replace UTC in application.rb with the system timezone
51 timezone='UTC'
51 timezone='UTC'
52 if [ -f '/etc/timezone' ]; then
52 if [ -f '/etc/timezone' ]; then
53 timezone=\"`cat /etc/timezone`\"
53 timezone=\"`cat /etc/timezone`\"
54 else
54 else
55 if [ -f '/etc/sysconfig/clock' ]; then
55 if [ -f '/etc/sysconfig/clock' ]; then
56 timezone=`grep -e '^TIMEZONE' /etc/sysconfig/clock | grep -o -e '\".*\"'`
56 timezone=`grep -e '^TIMEZONE' /etc/sysconfig/clock | grep -o -e '\".*\"'`
57 fi
57 fi
58 fi
58 fi
59 replace="s!'UTC'!$timezone!g"
59 replace="s!'UTC'!$timezone!g"
60 sed -i $replace web/config/application.rb
60 sed -i $replace web/config/application.rb
61
61
62 echo "At this point we will need MySQL user and database."
62 echo "At this point we will need MySQL user and database."
63 echo "Have you created MySQL user and database for Cafe grader? (Y/N) "
63 echo "Have you created MySQL user and database for Cafe grader? (Y/N) "
64 read ch
64 read ch
65
65
66 if [ "$ch" = "n" -o "$ch" = "N" ]
66 if [ "$ch" = "n" -o "$ch" = "N" ]
67 then
67 then
68 echo "Please open another terminal and create the user and database for Cafe grader."
68 echo "Please open another terminal and create the user and database for Cafe grader."
69 echo "Don't forget to grant access to that database for the user."
69 echo "Don't forget to grant access to that database for the user."
70 echo "Please have username, password, and database name ready before continue."
70 echo "Please have username, password, and database name ready before continue."
71 echo
71 echo
72 echo "The following are instructions:"
72 echo "The following are instructions:"
73 echo "1. Run mysql:"
73 echo "1. Run mysql:"
74 echo
74 echo
75 echo " mysql -u root -p"
75 echo " mysql -u root -p"
76 echo
76 echo
77 echo " if you have just installed mysql, the root password is the one that you have just entered"
77 echo " if you have just installed mysql, the root password is the one that you have just entered"
78 echo "2. Create a new database, a new user, and grant access to grader database:"
78 echo "2. Create a new database, a new user, and grant access to grader database:"
79 echo
79 echo
80 echo " create user 'USERNAME'@'localhost' identified by 'PASSWORD';"
80 echo " create user 'USERNAME'@'localhost' identified by 'PASSWORD';"
81 echo " create database \`DATABASENEME\`;"
81 echo " create database \`DATABASENEME\`;"
82 echo " grant all on \`DATABASENAME\`.* to 'USERNAME'@'localhost';"
82 echo " grant all on \`DATABASENAME\`.* to 'USERNAME'@'localhost';"
83 echo
83 echo
84 echo " Replace USERNAME, PASSWORD, and DATABASENAME accordingly."
84 echo " Replace USERNAME, PASSWORD, and DATABASENAME accordingly."
85 echo
85 echo
86 echo "Hit enter when ready..."
86 echo "Hit enter when ready..."
87 read dummy
87 read dummy
88 fi
88 fi
89
89
90 CAFE_PATH=`pwd`
90 CAFE_PATH=`pwd`
91
91
92 cd web
92 cd web
93
93
94 echo "Please provide grader database:"
94 echo "Please provide grader database:"
95 read database
95 read database
96
96
97 echo "Please provide grader username:"
97 echo "Please provide grader username:"
98 read username
98 read username
99
99
100 echo "Please provide $username password:"
100 echo "Please provide $username password:"
101 read password
101 read password
102
102
103 echo "development:" > config/database.yml
103 echo "development:" > config/database.yml
104 echo " adapter: mysql2" >> config/database.yml
104 echo " adapter: mysql2" >> config/database.yml
105 echo " encoding: utf8" >> config/database.yml
105 echo " encoding: utf8" >> config/database.yml
106 echo " reconnect: false" >> config/database.yml
106 echo " reconnect: false" >> config/database.yml
107 echo " database: $database" >> config/database.yml
107 echo " database: $database" >> config/database.yml
108 echo " pool: 5" >> config/database.yml
108 echo " pool: 5" >> config/database.yml
109 echo " username: $username" >> config/database.yml
109 echo " username: $username" >> config/database.yml
110 echo " password: $password" >> config/database.yml
110 echo " password: $password" >> config/database.yml
111 echo " host: localhost" >> config/database.yml
111 echo " host: localhost" >> config/database.yml
112 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
112 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
113 echo "" >> config/database.yml
113 echo "" >> config/database.yml
114 echo "production:" >> config/database.yml
114 echo "production:" >> config/database.yml
115 echo " adapter: mysql2" >> config/database.yml
115 echo " adapter: mysql2" >> config/database.yml
116 echo " encoding: utf8" >> config/database.yml
116 echo " encoding: utf8" >> config/database.yml
117 echo " reconnect: false" >> config/database.yml
117 echo " reconnect: false" >> config/database.yml
118 echo " database: $database" >> config/database.yml
118 echo " database: $database" >> config/database.yml
119 echo " pool: 5" >> config/database.yml
119 echo " pool: 5" >> config/database.yml
120 echo " username: $username" >> config/database.yml
120 echo " username: $username" >> config/database.yml
121 echo " password: $password" >> config/database.yml
121 echo " password: $password" >> config/database.yml
122 echo " host: localhost" >> config/database.yml
122 echo " host: localhost" >> config/database.yml
123 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
123 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
124
124
125 echo "Object.instance_eval{remove_const :GRADER_ROOT_DIR}" >> config/initializers/cafe_grader_config.rb
125 echo "Object.instance_eval{remove_const :GRADER_ROOT_DIR}" >> config/initializers/cafe_grader_config.rb
126 echo "Object.instance_eval{remove_const :GRADING_RESULT_DIR}" >> config/initializers/cafe_grader_config.rb
126 echo "Object.instance_eval{remove_const :GRADING_RESULT_DIR}" >> config/initializers/cafe_grader_config.rb
127 echo "GRADER_ROOT_DIR = '$CAFE_PATH/judge'" >> config/initializers/cafe_grader_config.rb
127 echo "GRADER_ROOT_DIR = '$CAFE_PATH/judge'" >> config/initializers/cafe_grader_config.rb
128 echo "GRADING_RESULT_DIR = '$CAFE_PATH/judge/result'" >> config/initializers/cafe_grader_config.rb
128 echo "GRADING_RESULT_DIR = '$CAFE_PATH/judge/result'" >> config/initializers/cafe_grader_config.rb
129
129
130 + # setup secret file
131 + SECRET_A=`rake secret`
132 + SECRET_B=`rake secret`
133 + SECRET_C=`rake secret`
134 + echo "development:" > config/secrets.yml
135 + echo " secret_key_base: '$SECRET_A'" >> config/secrets.yml
136 + echo "test:" >> config/secrets.yml
137 + echo " secret_key_base: '$SECRET_B'" >> config/secrets.yml
138 + echo "production:" >> config/secrets.yml
139 + echo " secret_key_base: '$SECRET_C'" >> config/secrets.yml
140 +
141 +
142 +
130 echo "Installing required gems"
143 echo "Installing required gems"
131 gem install bundler
144 gem install bundler
132 bundle install
145 bundle install
133
146
134 echo "Running rake tasks to initialize database"
147 echo "Running rake tasks to initialize database"
135
148
136 rake db:migrate
149 rake db:migrate
137 rake db:seed
150 rake db:seed
138
151
139 echo "Running rake tasks to precompile the assets"
152 echo "Running rake tasks to precompile the assets"
140
153
141 rake assets:precompile
154 rake assets:precompile
142
155
143 echo "Intalling web interface complete..."
156 echo "Intalling web interface complete..."
144 echo
157 echo
145 echo "Fetching grader"
158 echo "Fetching grader"
146
159
147 cd ..
160 cd ..
148
161
149 mkdir judge
162 mkdir judge
150 cd judge
163 cd judge
151 git clone -q git://github.com/cafe-grader-team/cafe-grader-judge-scripts.git scripts
164 git clone -q git://github.com/cafe-grader-team/cafe-grader-judge-scripts.git scripts
152 mkdir raw
165 mkdir raw
153 mkdir ev-exam
166 mkdir ev-exam
154 mkdir ev
167 mkdir ev
155 mkdir result
168 mkdir result
156 mkdir log
169 mkdir log
157
170
158 echo "Configuring grader"
171 echo "Configuring grader"
159
172
160 cp scripts/config/env_exam.rb.SAMPLE scripts/config/env_exam.rb
173 cp scripts/config/env_exam.rb.SAMPLE scripts/config/env_exam.rb
161 cp scripts/config/env_grading.rb.SAMPLE scripts/config/env_grading.rb
174 cp scripts/config/env_grading.rb.SAMPLE scripts/config/env_grading.rb
162
175
163 # create new environment.rb file
176 # create new environment.rb file
164 echo "RAILS_ROOT = '$CAFE_PATH/web'" > scripts/config/environment.rb
177 echo "RAILS_ROOT = '$CAFE_PATH/web'" > scripts/config/environment.rb
165 echo "GRADER_ROOT = '$CAFE_PATH/judge/scripts'" >> scripts/config/environment.rb
178 echo "GRADER_ROOT = '$CAFE_PATH/judge/scripts'" >> scripts/config/environment.rb
166 echo "require File.join(File.dirname(__FILE__),'../lib/boot')" >> scripts/config/environment.rb
179 echo "require File.join(File.dirname(__FILE__),'../lib/boot')" >> scripts/config/environment.rb
167 echo "require File.dirname(__FILE__) + \"/env_#{GRADER_ENV}.rb\"" >> scripts/config/environment.rb
180 echo "require File.dirname(__FILE__) + \"/env_#{GRADER_ENV}.rb\"" >> scripts/config/environment.rb
168
181
169 # compiling box
182 # compiling box
170 MACHINE_TYPE=`uname -m`
183 MACHINE_TYPE=`uname -m`
171 if [ ${MACHINE_TYPE} == 'x86_64' ]; then
184 if [ ${MACHINE_TYPE} == 'x86_64' ]; then
172 gcc -std=c99 -o scripts/std-script/box scripts/std-script/box64-new.c
185 gcc -std=c99 -o scripts/std-script/box scripts/std-script/box64-new.c
173 else
186 else
174 g++ -o scripts/std-script/box scripts/std-script/box.cc
187 g++ -o scripts/std-script/box scripts/std-script/box.cc
175 fi
188 fi
176
189
177
190
178 cd ..
191 cd ..
179
192
180 echo "Now you are ready to run cafe grader...."
193 echo "Now you are ready to run cafe grader...."
181 echo
194 echo
182 echo "Try:"
195 echo "Try:"
183 echo
196 echo
184 echo " cd web"
197 echo " cd web"
185 echo " rails s"
198 echo " rails s"
186 echo
199 echo
187 echo "and access web at http://localhost:3000/"
200 echo "and access web at http://localhost:3000/"
188 echo "The root username is 'root', its password is 'ioionrails'."
201 echo "The root username is 'root', its password is 'ioionrails'."
189
202
You need to be logged in to leave comments. Login now