Skip to content

Commit f928964

Browse files
committed
build ood components from source code for aarch64
1 parent ba8ed1e commit f928964

2 files changed

Lines changed: 192 additions & 35 deletions

File tree

ondemand/entrypoint.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ then
2323
echo "---> Starting sshd on ondemand..."
2424
/usr/sbin/sshd -e
2525

26+
echo "---> Running update ood portal..."
27+
/opt/ood/ood-portal-generator/sbin/update_ood_portal
28+
2629
echo "---> Starting ondemand-dex..."
2730
gosu ondemand-dex /usr/sbin/ondemand-dex serve /etc/ood/dex/config.yaml &
2831

ondemand/install.sh

Lines changed: 189 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,183 @@ log_info() {
77
printf "\n\e[0;35m $1\e[0m\n\n"
88
}
99

10+
build_passenger() {
11+
12+
PASS_VERSION='6.0.7'
13+
NGINX_VERSION='1.18.0'
14+
15+
wget -O $BUILD_DIR/passenger.tar.gz https://github.com/phusion/passenger/releases/download/release-$PASS_VERSION/passenger-$PASS_VERSION.tar.gz
16+
cd $BUILD_DIR
17+
tar xf passenger.tar.gz
18+
wget -O $BUILD_DIR/nginx.tar.gz http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz
19+
cd "$BUILD_DIR/passenger-$PASS_VERSION"
20+
tar xf $BUILD_DIR/nginx.tar.gz
21+
22+
PREFIX=/opt/ood/ondemand/root
23+
NGINX_DATADIR=$PREFIX/usr/share/nginx
24+
NGINX_CONFDIR=$PREFIX/etc/nginx
25+
NGINX_HOME=/var/lib/ondemand-nginx
26+
NGINX_HOME_TMP=$NGINX_HOME/tmp
27+
NGINX_LOGDIR=/var/log/ondemand-nginx
28+
BASE_CCOPTS='-g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'
29+
NGINX_CCOPTS="-O2 $BASE_CCOPTS"
30+
PASSENGER_CCOPTS="$BASE_CCOPTS -Wno-deprecated"
31+
LDOPTS="-Wl,-z,relro -Wl,-E"
32+
RUBY_LIBDIR=$PREFIX/usr/share/ruby/vendor_ruby
33+
34+
rake nginx OPTIMIZE=yes CACHING=false
35+
cd "$BUILD_DIR/passenger-$PASS_VERSION/nginx-$NGINX_VERSION"
36+
./configure \
37+
--prefix=$NGINX_DATADIR \
38+
--sbin-path=$PREFIX/usr/sbin/nginx \
39+
--conf-path=$NGINX_CONFDIR/nginx.conf \
40+
--error-log-path=$NGINX_LOGDIR/error.log \
41+
--http-log-path=$NGINX_LOGDIR/access.log \
42+
--http-client-body-temp-path=$NGINX_HOME_TMP/client_body \
43+
--http-proxy-temp-path=$NGINX_HOME_TMP/proxy \
44+
--http-fastcgi-temp-path=$NGINX_HOME_TMP/fastcgi \
45+
--http-uwsgi-temp-path=$NGINX_HOME_TMP/uwsgi \
46+
--http-scgi-temp-path=$NGINX_HOME_TMP/scgi \
47+
--pid-path=/run/ondemand-nginx.pid \
48+
--lock-path=/run/lock/subsys/ondemand-nginx \
49+
--user=ondemand-nginx \
50+
--group=ondemand-nginx \
51+
--with-file-aio \
52+
--with-http_ssl_module \
53+
--with-http_v2_module \
54+
--with-http_realip_module \
55+
--with-http_addition_module \
56+
--with-http_xslt_module \
57+
--with-http_image_filter_module \
58+
--with-http_sub_module \
59+
--with-http_dav_module \
60+
--with-http_flv_module \
61+
--with-http_mp4_module \
62+
--with-http_gunzip_module \
63+
--with-http_gzip_static_module \
64+
--with-http_random_index_module \
65+
--with-http_secure_link_module \
66+
--with-http_degradation_module \
67+
--with-http_stub_status_module \
68+
--with-mail \
69+
--with-mail_ssl_module \
70+
--with-pcre \
71+
--with-pcre-jit \
72+
--add-module=../src/nginx_module \
73+
--with-cc-opt="$NGINX_CCOPTS" \
74+
--with-ld-opt="$LDOPTS" \
75+
--with-debug
76+
77+
make -j$(nproc) && make install INSTALLDIRS=vendor
78+
mkdir -p $NGINX_DATADIR/html
79+
mkdir -p $NGINX_CONFDIR
80+
mkdir -p $NGINX_HOME
81+
mkdir -p $NGINX_HOME_TMP
82+
mkdir -p $NGINX_LOGDIR
83+
84+
set -x
85+
cd "$BUILD_DIR/passenger-$PASS_VERSION"
86+
which ruby
87+
rake fakeroot \
88+
NATIVE_PACKAGING_METHOD=rpm \
89+
FS_PREFIX=$PREFIX \
90+
FS_BINDIR=$PREFIX/bin \
91+
FS_SBINDIR=$PREFIX/sbin \
92+
FS_DATADIR=$PREFIX/usr/share \
93+
FS_LIBDIR=$PREFIX/lib64 \
94+
FS_DOCDIR=$PREFIX/usr/share/doc \
95+
RUBY=$(which ruby) \
96+
RUBYLIBDIR=$RUBY_LIBDIR \
97+
RUBYARCHDIR=$RUBY_LIBDIR \
98+
APACHE2_MODULE_PATH=$PREFIX/usr/lib/apache2/modules/mod_passenger.so \
99+
OPTIMIZE=yes \
100+
CACHING=false \
101+
EXTRA_CFLAGS="$PASSENGER_CCOPTS" \
102+
EXTRA_CXXFLAGS="$PASSENGER_CCOPTS"
103+
104+
cp -a $BUILD_DIR/passenger-$PASS_VERSION/pkg/fakeroot/* /
105+
cd $BUILD_DIR/passenger-$PASS_VERSION
106+
./dev/install_scripts_bootstrap_code.rb --ruby $RUBY_LIBDIR \
107+
$PREFIX/bin/passenger* \
108+
$PREFIX/sbin/passenger* \
109+
`find $PREFIX -name rack_handler.rb`
110+
111+
./dev/install_scripts_bootstrap_code.rb --nginx-module-config $PREFIX/bin $PREFIX/usr/share/passenger/ngx_http_passenger_module/config
112+
chmod +x $PREFIX/usr/share/passenger/helper-scripts/wsgi-loader.py
113+
}
114+
115+
install_os_deps() {
116+
dnf -y update && \
117+
dnf install -y dnf-utils epel-release && \
118+
dnf config-manager --set-enabled powertools && \
119+
dnf -y module enable nodejs:12 ruby:2.7 && \
120+
dnf install -y \
121+
file lsof sudo gcc gcc-c++ git \
122+
patch lua-posix rsync ruby ruby-devel python2 python3 \
123+
nodejs sqlite sqlite-devel nmap-ncat httpd httpd-devel mod_ssl \
124+
libcurl-devel autoconf openssl-devel jansson-devel libxml2-devel \
125+
libxslt-devel gd-devel
126+
gem install rake dotenv
127+
}
128+
129+
build_ood_src() {
130+
cd $BUILD_DIR
131+
132+
git clone https://github.com/cisco/cjose
133+
cd cjose
134+
git checkout 0.6.1
135+
./configure
136+
make && make install
137+
138+
# so mod_auth_openidc can find cjose
139+
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
140+
141+
cd $BUILD_DIR
142+
git clone https://github.com/zmartzone/mod_auth_openidc.git
143+
cd mod_auth_openidc
144+
git checkout v2.4.9.4
145+
sh autogen.sh
146+
./configure
147+
make && make install
148+
149+
cd $BUILD_DIR
150+
git clone https://github.com/OSC/ondemand.git
151+
cd ondemand
152+
bundle config --local path ~/vendor/bundle
153+
bundle install
154+
rake build -mj$(nproc)
155+
156+
mkdir -p /opt/ood
157+
mkdir -p /var/www/ood/{apps,public,discover}
158+
mkdir -p /var/www/ood/apps/{sys,dev,usr}
159+
mkdir -p /etc/ood/config
160+
161+
mv mod_ood_proxy /opt/ood/
162+
mv nginx_stage /opt/ood/
163+
mv ood-portal-generator /opt/ood/
164+
mv ood_auth_map /opt/ood/
165+
mv apps/* /var/www/ood/apps/sys/
166+
167+
mkdir -p /var/lib/ondemand-nginx/config/apps/sys/
168+
touch /var/lib/ondemand-nginx/config/apps/sys/dashboard.conf
169+
touch /var/lib/ondemand-nginx/config/apps/sys/shell.conf
170+
touch /var/lib/ondemand-nginx/config/apps/sys/myjobs.conf
171+
/opt/ood/nginx_stage/sbin/update_nginx_stage
172+
173+
tee /etc/httpd/conf.d/enabled_mods.conf <<EOF
174+
LoadModule auth_openidc_module modules/mod_auth_openidc.so
175+
LoadModule ssl_module modules/mod_ssl.so
176+
EOF
177+
178+
tee /etc/sudoers.d/ood <<EOF
179+
Defaults:apache !requiretty, !authenticate
180+
Defaults:apache env_keep += "NGINX_STAGE_* OOD_*"
181+
apache ALL=(ALL) NOPASSWD: /opt/ood/nginx_stage/sbin/nginx_stage
182+
Cmnd_Alias KUBECTL = /usr/local/bin/kubectl, /usr/bin/kubectl, /bin/kubectl
183+
Defaults!KUBECTL !syslog
184+
EOF
185+
}
186+
10187
ARCHTYPE=`uname -m`
11188
DEX_VERSION=${DEX_VERSION:-2.31.1}
12189
DEX_PATCH_VERSION=${DEX_PATCH_VERSION:-703e26bc109e86d00be22ef1803bdb96b2dc09e2}
@@ -20,6 +197,13 @@ if [[ "${ARCHTYPE}" = "x86_64" ]]; then
20197
ondemand \
21198
ondemand-dex
22199
elif [[ "${ARCHTYPE}" = "aarch64" ]]; then
200+
BUILD_DIR=$(mktemp -d -p /build)
201+
export BUILD_DIR
202+
203+
install_os_deps
204+
build_passenger
205+
build_ood_src
206+
23207
# TODO: flesh out arm64 builds?
24208
dnf install -y golang-bin
25209
log_info "Install dex ${DEX_VERSION}..."
@@ -45,35 +229,7 @@ elif [[ "${ARCHTYPE}" = "aarch64" ]]; then
45229
groupadd -r ondemand-dex
46230
useradd -r -d /var/lib/ondemand-dex -g ondemand-dex -s /sbin/nologin -c "OnDemand Dex" ondemand-dex
47231
mkdir -p /etc/ood/dex
48-
tee /etc/ood/dex/config.yaml <<EOF
49-
---
50-
issuer: http://eb8307ff82be:5556
51-
storage:
52-
type: sqlite3
53-
config:
54-
file: "/etc/ood/dex/dex.db"
55-
web:
56-
http: 0.0.0.0:5556
57-
telemetry:
58-
http: 0.0.0.0:5558
59-
staticClients:
60-
- id: eb8307ff82be
61-
redirectURIs:
62-
- http://eb8307ff82be/oidc
63-
name: OnDemand
64-
secret: 7c6c2f51-2f97-4866-886e-2fcf5b974224
65-
oauth2:
66-
skipApprovalScreen: true
67-
enablePasswordDB: true
68-
staticPasswords:
69-
- email: ood@localhost
70-
hash: "$2a$10$2b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W"
71-
username: ood
72-
userID: '08a8684b-db88-4b73-90a9-3cd1661f5466'
73-
frontend:
74-
dir: "/usr/share/ondemand-dex/web"
75-
theme: hpc-coop
76-
EOF
232+
chown ondemand-dex:ondemand-dex /etc/ood/dex
77233
fi
78234

79235
log_info "Setting up Ondemand"
@@ -141,13 +297,11 @@ dex:
141297
theme: ondemand
142298
EOF
143299

144-
if [[ ${ARCHTYPE} = "x86_64" ]]; then
145-
log_info "Generating new httpd24 and dex configs.."
146-
/opt/ood/ood-portal-generator/sbin/update_ood_portal
300+
log_info "Generating new httpd24 and dex configs.."
301+
/opt/ood/ood-portal-generator/sbin/update_ood_portal
147302

148-
log_info "Adding new theme to dex"
149-
sed -i "s/theme: ondemand/theme: hpc-coop/g" /etc/ood/dex/config.yaml
150-
fi
303+
log_info "Adding new theme to dex"
304+
sed -i "s/theme: ondemand/theme: hpc-coop/g" /etc/ood/dex/config.yaml
151305

152306
dnf clean all
153307
rm -rf /var/cache/dnf

0 commit comments

Comments
 (0)