Description:
Update install.sh
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r265:5e861fcfb30f - - 1 file changed: 13 inserted, 5 deleted

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