Initial pass renaming athena -> vircadia

This commit is contained in:
Heather Anderson 2020-03-21 21:50:05 +00:00
parent 72d931688c
commit ffc1b7ee53
27 changed files with 361 additions and 370 deletions

View file

@ -19,25 +19,25 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get install -y tzdata supervisor ${DEPENDS} && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
mkdir -p /var/lib/athena
RUN groupadd -r athena ; \
useradd -Nr athena -d /var/lib/athena ; \
usermod -aG athena athena ; \
chown athena.athena /var/lib/athena ; \
mkdir -p /var/lib/vircadia
RUN groupadd -r vircadia ; \
useradd -Nr vircadia -d /var/lib/vircadia ; \
usermod -aG vircadia vircadia ; \
chown vircadia.vircadia /var/lib/vircadia ; \
exit 0
VOLUME /var/lib/athena
VOLUME /var/lib/vircadia
RUN mkdir -p /var/run ; chmod 777 /var/run
COPY athena.conf /etc/supervisor/conf.d/athena.conf
COPY vircadia.conf /etc/supervisor/conf.d/vircadia.conf
COPY entrypoint.sh /
COPY opt /opt/athena
COPY lib /opt/athena/lib
COPY opt /opt/vircadia
COPY lib /opt/vircadia/lib
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/athena.conf"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/vircadia.conf"]
LABEL \
net.projectathena.gitsrc="${GITSRC}" \
net.projectathena.gitdate="${GITDATE}" \
net.projectathena.gitcommit="${GITCOMMIT}"
net.vircadia.gitsrc="${GITSRC}" \
net.vircadia.gitdate="${GITDATE}" \
net.vircadia.gitcommit="${GITCOMMIT}"

View file

@ -1,18 +0,0 @@
[Unit]
Description=Assignment client service for Athena server
After=network.target
PartOf=athena-server.target
[Service]
Restart=always
WorkingDirectory=/opt/athena
Environment="LD_LIBRARY_PATH=/opt/athena/lib"
User=athena
Group=athena
#LimitCORE=infinity
#ExecStart=/opt/athena/assignment-client -n 6
ExecStart=/opt/athena/assignment-client --min 6 --max 20
[Install]
WantedBy=multi-user.target

View file

@ -1,20 +0,0 @@
[Unit]
Description=Assignment client service for Athena server
After=network.target
PartOf=athena-server@%i.target
[Service]
Restart=always
WorkingDirectory=/opt/athena
EnvironmentFile=/etc/opt/athena/%i.conf
Environment="LD_LIBRARY_PATH=/opt/athena/lib" "HOME=/var/lib/athena/%i"
PrivateTmp=true
User=athena
Group=athena
#LimitCORE=infinity
#ExecStart=/opt/athena/assignment-client -n 6
ExecStart=/opt/athena/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT
[Install]
WantedBy=multi-user.target

View file

@ -1,18 +0,0 @@
[Unit]
Description=Domain Server service for Athena
After=network.target
PartOf=athena-server.target
[Service]
Restart=on-failure
WorkingDirectory=/opt/athena
Environment="LD_LIBRARY_PATH=/opt/athena/lib"
User=athena
Group=athena
#LimitCORE=infinity
#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l domain-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/domain-server/domain-server; fi'
ExecStart=/opt/athena/domain-server
[Install]
WantedBy=multi-user.target

View file

@ -1,20 +0,0 @@
[Unit]
Description=Domain Server service for Athena
After=network.target
PartOf=athena-server@%i.target
[Service]
Restart=on-failure
WorkingDirectory=/opt/athena
EnvironmentFile=/etc/opt/athena/%i.conf
Environment="LD_LIBRARY_PATH=/opt/athena/lib" "HOME=/var/lib/athena/%i"
PrivateTmp=true
User=athena
Group=athena
#LimitCORE=infinity
#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l domain-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/domain-server/domain-server; fi'
ExecStart=/opt/athena/domain-server
[Install]
WantedBy=multi-user.target

View file

@ -1,128 +0,0 @@
#ATHENA=~/Athena rpmbuild --target x86_64 -bb athena-server.spec
%define version %{lua:print(os.getenv("VERSION"))}
%define depends %{lua:print(os.getenv("DEPENDS"))}
Name: athena-server
Version: %{version}
Release: 1%{?dist}
Summary: Project Athena metaverse platform, based on the High Fidelity Engine.
License: ASL 2.0
URL: https://projectathena.io
Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder
#BuildRequires: systemd-rpm-macros
BuildRequires: chrpath
Requires: %{depends}
BuildArch: x86_64
AutoReq: no
AutoProv: no
%description
Project Athena allows creation and sharing of VR experiences.
The Project Athena metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment.
%prep
%build
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/opt/athena
install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/assignment-client/assignment-client
install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/domain-server/domain-server
install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/tools/oven/oven
#install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/build/ice-server/ice-server
strip --strip-all $RPM_BUILD_ROOT/opt/athena/*
chrpath -d $RPM_BUILD_ROOT/opt/athena/*
install -m 0755 -t $RPM_BUILD_ROOT/opt/athena $ATHENA/source/pkg-scripts/new-server
install -d $RPM_BUILD_ROOT/opt/athena/lib
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/build/libraries/*/*.so
strip --strip-all $RPM_BUILD_ROOT/opt/athena/lib/*
chrpath -d $RPM_BUILD_ROOT/opt/athena/lib/*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Network.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Core.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Script.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.*
install -d $RPM_BUILD_ROOT/usr/lib/systemd/system
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-assignment-client.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-assignment-client@.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-domain-server.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-domain-server@.service
#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-ice-server.service
#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-ice-server@.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-server.target
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/athena-server@.target
cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/opt/athena
cp -a $ATHENA/build/assignment-client/plugins $RPM_BUILD_ROOT/opt/athena
chrpath -d $RPM_BUILD_ROOT/opt/athena/plugins/*.so
chrpath -d $RPM_BUILD_ROOT/opt/athena/plugins/*/*.so
strip --strip-all $RPM_BUILD_ROOT/opt/athena/plugins/*.so
strip --strip-all $RPM_BUILD_ROOT/opt/athena/plugins/*/*.so
find $RPM_BUILD_ROOT/opt/athena/resources -name ".gitignore" -delete
%files
%license $ATHENA/source/LICENSE
/opt/athena
/usr/lib/systemd/system
%changelog
%post
# create users
getent passwd athena >/dev/numm 2>&1 || useradd -r -c "Project Athena" -d /var/lib/athena -U -M athena
#getent group athena >/dev/null 2>&1 || groupadd -r athena
# create data folder
mkdir -p /etc/opt/athena
mkdir -p /var/lib/athena && chown athena:athena /var/lib/athena && chmod 775 /var/lib/athena
ldconfig -n /opt/athena/lib
if [ ! -d "/var/lib/athena/default" ]; then
/opt/athena/new-server default 40100
systemctl enable athena-server@default.target
systemctl start athena-server@default.target
fi
%systemd_post athena-assignment-client.service
%systemd_post athena-assignment-client@.service
%systemd_post athena-domain-server.service
%systemd_post athena-domain-server@.service
#%systemd_post athena-ice-server.service
#%systemd_post athena-ice-server@.service
%systemd_post athena-server.target
%systemd_post athena-server@.target
%preun
%systemd_preun athena-server.target
%systemd_preun athena-server@.target
%systemd_preun athena-assignment-client.service
%systemd_preun athena-assignment-client@.service
%systemd_preun athena-domain-server.service
%systemd_preun athena-domain-server@.service
#%systemd_preun athena-ice-server.service
#%systemd_preun athena-ice-server@.service
%postun
%systemd_postun_with_restart athena-server.target
%systemd_postun_with_restart athena-server@.target
%systemd_postun_with_restart athena-assignment-client.service
%systemd_postun_with_restart athena-assignment-client@.service
%systemd_postun_with_restart athena-domain-server.service
%systemd_postun_with_restart athena-domain-server@.service
#%systemd_postun_with_restart athena-ice-server.service
#%systemd_postun_with_restart athena-ice-server@.service

View file

@ -1,11 +0,0 @@
[Unit]
Description=Athena virtual domain
Wants=athena-assignment-client.service
Wants=athena-domain-server.service
#Wants=athena-ice-server.service
After=athena-assignment-client.service
After=athena-domain-server.service
#After=athena-ice-server.service
[Install]
WantedBy=multi-user.target

View file

@ -1,11 +0,0 @@
[Unit]
Description=Athena virtual domain
Wants=athena-assignment-client@%i.service
Wants=athena-domain-server@%i.service
#Wants=athena-ice-server@%i.service
After=athena-assignment-client@%i.service
After=athena-domain-server@%i.service
#After=athena-ice-server@%i.service
[Install]
WantedBy=multi-user.target

View file

@ -6,23 +6,23 @@ set -x
# allowing the container to be run directly as Jenkins. In Dev, or on unknown
# environments, run the container as root to automatically correct docker
# group in container to match the docker.sock GID mounted from the host.
if [ -f /var/lib/athena/.local -a "$(id -u)" = "0" ]; then
if [ -f /var/lib/vircadia/.local -a "$(id -u)" = "0" ]; then
# realign gid
THIS_ATHENA_GID=`ls -ngd /var/lib/athena/.local | cut -f3 -d' '`
CUR_ATHENA_GID=`getent group athena | cut -f3 -d: || true`
if [ ! -z "$THIS_ATHENA_GID" -a "$THIS_ATHENA_GID" != "$CUR_ATHENA_GID" ]; then
groupmod -g ${THIS_ATHENA_GID} -o athena
THIS_VIRCADIA_GID=`ls -ngd /var/lib/vircadia/.local | cut -f3 -d' '`
CUR_VIRCADIA_GID=`getent group vircadia | cut -f3 -d: || true`
if [ ! -z "$THIS_VIRCADIA_GID" -a "$THIS_VIRCADIA_GID" != "$CUR_VIRCADIA_GID" ]; then
groupmod -g ${THIS_VIRCADIA_GID} -o vircadia
fi
# realign pid
THIS_ATHENA_PID=`ls -nd /var/lib/athena/.local | cut -f3 -d' '`
CUR_ATHENA_PID=`getent passwd athena | cut -f3 -d: || true`
if [ ! -z "$THIS_ATHENA_PID" -a "$THIS_ATHENA_PID" != "$CUR_ATHENA_PID" ]; then
usermod -u ${THIS_ATHENA_PID} -o athena
THIS_ATHENA_PID=`ls -nd /var/lib/vircadia/.local | cut -f3 -d' '`
CUR_ATHENA_PID=`getent passwd vircadia | cut -f3 -d: || true`
if [ ! -z "$THIS_VIRCADIA_PID" -a "$THIS_VIRCADIA_PID" != "$CUR_VIRCADIA_PID" ]; then
usermod -u ${THIS_VIRCADIA_PID} -o vircadia
fi
if ! groups athena | grep -q athena; then
usermod -aG athena athena
if ! groups vircadia | grep -q vircadia; then
usermod -aG vircadia vircadia
fi
fi

View file

@ -1,74 +1,74 @@
[supervisord]
user=athena
user=vircadia
nodaemon=true
environment=HOME="/var/lib/athena",USER="athena",LD_LIBRARY_PATH="/opt/athena/lib"
environment=HOME="/var/lib/vircadia",USER="vircadia",LD_LIBRARY_PATH="/opt/vircadia/lib"
logfile=/dev/stdout
logfile_maxbytes=0
pidfile=/var/run/supervisord.pid
[program:domain-server]
command=/opt/athena/domain-server
command=/opt/vircadia/domain-server
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
[program:audio-mixer]
command=/opt/athena/assignment-client -t 0 -a localhost -p 48000
command=/opt/vircadia/assignment-client -t 0 -a localhost -p 48000
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:avatar-mixer]
command=/opt/athena/assignment-client -t 1 -a localhost -p 48001
command=/opt/vircadia/assignment-client -t 1 -a localhost -p 48001
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:entities-server]
command=/opt/athena/assignment-client -t 6 -a localhost -p 48006
command=/opt/vircadia/assignment-client -t 6 -a localhost -p 48006
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:asset-server]
command=/opt/athena/assignment-client -t 3 -a localhost -p 48003
command=/opt/vircadia/assignment-client -t 3 -a localhost -p 48003
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:entity-script-server]
command=/opt/athena/assignment-client -t 5 -a localhost -p 48005
command=/opt/vircadia/assignment-client -t 5 -a localhost -p 48005
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:messages-mixer]
command=/opt/athena/assignment-client -t 4 -a localhost -p 48004
command=/opt/vircadia/assignment-client -t 4 -a localhost -p 48004
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:scripted-agent]
command=/opt/athena/assignment-client -t 2 -a localhost --max 100
command=/opt/vircadia/assignment-client -t 2 -a localhost --max 100
autorestart=unexpected
directory=/opt/athena
directory=/opt/vircadia
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr

View file

@ -10,7 +10,7 @@ VERSION=0.86.0-k2-$GITDATE-$GITCOMMIT
sudo apt-get install chrpath binutils dh-make
DEB_BUILD_ROOT=temp-make-deb/athena-server-$VERSION-0ubuntu1
DEB_BUILD_ROOT=temp-make-deb/vircadia-server-$VERSION-0ubuntu1
rm -r temp-make-deb
mkdir -p $DEB_BUILD_ROOT
@ -45,56 +45,47 @@ strip --strip-all $DEB_BUILD_ROOT/plugins/*/*.so
#begin the debian package construction
cd $DEB_BUILD_ROOT
dh_make -p athena-server_$VERSION-0ubuntu1 -c apache -s --createorig -y
dh_make -p vircadia-server_$VERSION-0ubuntu1 -c apache -s --createorig -y
cp $ATHENA/source/pkg-scripts/athena-assignment-client.service debian
cp $ATHENA/source/pkg-scripts/athena-assignment-client@.service debian
cp $ATHENA/source/pkg-scripts/athena-domain-server.service debian
cp $ATHENA/source/pkg-scripts/athena-domain-server@.service debian
#cp $ATHENA/source/pkg-scripts/athena-ice-server.service debian
#cp $ATHENA/source/pkg-scripts/athena-ice-server@.service debian
cp $ATHENA/source/pkg-scripts/athena-server.target debian
cp $ATHENA/source/pkg-scripts/athena-server@.target debian
cp $ATHENA/source/pkg-scripts/vircadia-assignment-client.service debian
cp $ATHENA/source/pkg-scripts/vircadia-assignment-client@.service debian
cp $ATHENA/source/pkg-scripts/vircadia-domain-server.service debian
cp $ATHENA/source/pkg-scripts/vircadia-domain-server@.service debian
#cp $ATHENA/source/pkg-scripts/vircadia-ice-server.service debian
#cp $ATHENA/source/pkg-scripts/vircadia-ice-server@.service debian
cp $ATHENA/source/pkg-scripts/vircadia-server.target debian
cp $ATHENA/source/pkg-scripts/vircadia-server@.target debian
cp $ATHENA/source/pkg-scripts/server-control debian/control
cp $ATHENA/source/pkg-scripts/server-prerm debian/prerm
cp $ATHENA/source/pkg-scripts/server-postinst debian/postinst
cp $ATHENA/source/LICENSE debian/copyright
echo /etc/opt/athena > debian/dirs
echo /var/lib/athena >> debian/dirs
echo /etc/opt/vircadia > debian/dirs
echo /var/lib/vircadia >> debian/dirs
echo README.md > debian/docs
echo README_hifi.md >> debian/docs
echo assignment-client opt/athena > debian/install
echo domain-server opt/athena >> debian/install
echo oven opt/athena >> debian/install
#echo ice-server opt/athena >> debian/install
echo new-server opt/athena >> debian/install
echo assignment-client opt/vircadia > debian/install
echo domain-server opt/vircadia >> debian/install
echo oven opt/vircadia >> debian/install
#echo ice-server opt/vircadia >> debian/install
echo new-server opt/vircadia >> debian/install
for so in *.so.*.*.*; do
echo $so opt/athena/lib >> debian/install
echo $so opt/vircadia/lib >> debian/install
done
for so in *.so; do
echo $so opt/athena/lib >> debian/install
echo $so opt/vircadia/lib >> debian/install
done
#for service in *.service; do
# echo $service opt/athena/systemd >> debian/install
# echo $service opt/vircadia/systemd >> debian/install
#done
#for target in *.target; do
# echo $target opt/athena/systemd >> debian/install
# echo $target opt/vircadia/systemd >> debian/install
#done
find resources -type f -exec sh -c 'echo {} opt/athena/$(dirname "{}") >> debian/install' \;
find plugins -type f -exec sh -c 'echo {} opt/athena/$(dirname "{}") >> debian/install' \;
#echo usr/lib/systemd/system/athena-assignment-client.service opt/athena/systemd/athena-assignment-client.service > debian/athena-server.links
#echo usr/lib/systemd/system/athena-assignment-client@.service opt/athena/systemd/athena-assignment-client@.service >> debian/athena-server.links
#echo usr/lib/systemd/system/athena-domain-server.service opt/athena/systemd/athena-domain-server.service >> debian/athena-server.links
#echo usr/lib/systemd/system/athena-domain-server@.service opt/athena/systemd/athena-domain-server@.service >> debian/athena-server.links
##echo usr/lib/systemd/system/athena-ice-server.service opt/athena/systemd/athena-ice-server.service >> debian/athena-server.links
##echo usr/lib/systemd/system/athena-ice-server@.service opt/athena/systemd/athena-ice-server@.service >> debian/athena-server.links
#echo usr/lib/systemd/system/athena-server.target opt/athena/systemd/athena-server.target >> debian/athena-server.links
#echo usr/lib/systemd/system/athena-server@.target opt/athena/systemd/athena-server@.target >> debian/athena-server.links
find resources -type f -exec sh -c 'echo {} opt/vircadia/$(dirname "{}") >> debian/install' \;
find plugins -type f -exec sh -c 'echo {} opt/vircadia/$(dirname "{}") >> debian/install' \;
SOFILES=`ls *.so *.so.*.*.* | sed 's/\./\\\./g' | paste -d'|' -s`

View file

@ -15,7 +15,7 @@ rm -r temp-make-dock
mkdir -p $DOCK_BUILD_ROOT
cp $ATHENA/source/pkg-scripts/Dockerfile.templ $DOCK_BUILD_ROOT/Dockerfile
cp $ATHENA/source/pkg-scripts/docker-entrypoint.sh $DOCK_BUILD_ROOT/entrypoint.sh
cp $ATHENA/source/pkg-scripts/docker-athena-supervisor.conf $DOCK_BUILD_ROOT/athena.conf
cp $ATHENA/source/pkg-scripts/docker-vircadia-supervisor.conf $DOCK_BUILD_ROOT/vircadia.conf
# copy the files over
mkdir -p $DOCK_BUILD_ROOT/opt
@ -57,4 +57,4 @@ SOFILES=`ls $DOCK_BUILD_ROOT/lib | sed 's/\./\\\./g' | paste -d'|' -s`
DEPENDS=`find $DOCK_BUILD_ROOT/opt $DOCK_BUILD_ROOT/lib -type f -executable -exec sh -c 'objdump -p {} | grep NEEDED' \; | awk '{print $2}' | sort | uniq | egrep -v "^($SOFILES)$" | xargs -n 1 -I {} sh -c 'dpkg -S {} | head -n 1' | cut -d ':' -f 1 | sort | uniq | paste -d' ' -s`
cd $DOCK_BUILD_ROOT
docker build -t odysseus654/athena-server --build-arg "DEPENDS=$DEPENDS" --build-arg "GITSRC=$GITSRC" --build-arg "GITDATE=$GITDATE" --build-arg "GITCOMMIT=$GITCOMMIT" .
docker build -t odysseus654/vircadia-server --build-arg "DEPENDS=$DEPENDS" --build-arg "GITSRC=$GITSRC" --build-arg "GITDATE=$GITDATE" --build-arg "GITCOMMIT=$GITCOMMIT" .

View file

@ -52,5 +52,5 @@ DEPENDS=mesa-libGL,`ls \
sudo yum install chrpath
export VERSION DEPENDS ATHENA
rpmbuild --target x86_64 -bb ./athena-server.spec
rpmbuild --target x86_64 -bb ./vircadia-server.spec
mv ~/rpmbuild/RPMS/x86_64/*.rpm .

View file

@ -2,13 +2,13 @@
if [ -z "$1" ] || [ -z "$2" ]; then
echo "new-server {name} {base-port}"
echo
echo "Sets up a new athena server with the specified name and base port number"
echo "Sets up a new vircadia server with the specified name and base port number"
echo " {name} - a simple name used to identify the server to scripts (not used in the server configuration)"
echo " {base-port} - the base port number (default server is 40100). The metaverse port will be {base-port}+2"
echo " Four contiguous port numbers are allocated, these must not overlap with other running services on this machine"
echo
echo "Launching a server created by this script is done with:"
echo " sudo systemctl start athena-server@{name}.target"
echo " sudo systemctl start vircadia-server@{name}.target"
echo
exit 1
fi
@ -20,30 +20,32 @@ if [ "$(id -u)" -ne 0 ]; then
exit 1
fi
if [ -d "/var/lib/athena/$1" ]; then
echo "Path /var/lib/athena/$1 already exists"
if [ -d "/var/lib/vircadia/$1" ]; then
echo "Path /var/lib/vircadia/$1 already exists"
echo
echo "Please remove this path first if you wish to recreate this server"
exit 2
fi
mkdir -p /var/lib/athena/$1/.local/share
ln -s ../.. /var/lib/athena/$1/.local/share/Project\ Athena\ -\ dev
ln -s ../.. /var/lib/athena/$1/.local/share/Project\ Athena
mkdir -p /var/lib/athena/$1/domain-server
echo "{\"metaverse\": {\"local_port\": $(($2 + 2))},\"version\": 2.4}" > /var/lib/athena/$1/domain-server/config.json
chown -R athena.athena /var/lib/athena/$1
mkdir -p /var/lib/vircadia/$1/.local/share
ln -s ../.. /var/lib/vircadia/$1/.local/share/Project\ Athena\ -\ dev
ln -s ../.. /var/lib/vircadia/$1/.local/share/Project\ Athena
ln -s ../.. /var/lib/vircadia/$1/.local/share/Vircadia\ -\ dev
ln -s ../.. /var/lib/vircadia/$1/.local/share/Vircadia
mkdir -p /var/lib/vircadia/$1/domain-server
echo "{\"metaverse\": {\"local_port\": $(($2 + 2))},\"version\": 2.4}" > /var/lib/vircadia/$1/domain-server/config.json
chown -R vircadia.vircadia /var/lib/vircadia/$1
echo HIFI_DOMAIN_SERVER_HTTP_PORT=$2 > /etc/opt/athena/$1.conf
echo HIFI_DOMAIN_SERVER_HTTPS_PORT=$(($2 + 1)) >> /etc/opt/athena/$1.conf
echo HIFI_DOMAIN_SERVER_PORT=$(($2 + 2)) >> /etc/opt/athena/$1.conf
echo HIFI_DOMAIN_SERVER_DTLS_PORT=$(($2 + 3)) >> /etc/opt/athena/$1.conf
echo HIFI_DOMAIN_SERVER_HTTP_PORT=$2 > /etc/opt/vircadia/$1.conf
echo HIFI_DOMAIN_SERVER_HTTPS_PORT=$(($2 + 1)) >> /etc/opt/vircadia/$1.conf
echo HIFI_DOMAIN_SERVER_PORT=$(($2 + 2)) >> /etc/opt/vircadia/$1.conf
echo HIFI_DOMAIN_SERVER_DTLS_PORT=$(($2 + 3)) >> /etc/opt/vircadia/$1.conf
echo "A new athena server has been created with the name of '$1'"
echo "A new vircadia server has been created with the name of '$1'"
echo
echo "To launch it:"
echo " sudo systemctl start athena-server@$1.target"
echo " sudo systemctl start vircadia-server@$1.target"
echo "To have it launch at system start:"
echo " sudo systemctl enable athena-server@$1.target"
echo " sudo systemctl enable vircadia-server@$1.target"
echo "The server configuration console is available at:"
echo " http://localhost:$2"

View file

@ -1,4 +1,4 @@
Source: athena-server
Source: vircadia-server
Section: comm
Priority: optional
Maintainer: Heather Anderson <heath@odysseus.anderson.name>
@ -8,8 +8,8 @@ Homepage: https://www.projectathena.dev
Vcs-Git: https://github.com/kasenvr/project-athena.git
Vcs-Browser: https://github.com/kasenvr/project-athena
Package: athena-server
Package: vircadia-server
Architecture: any
Depends: adduser, {DEPENDS}
Description: Project Athena allows creation and sharing of VR experiences.
The Project Athena metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment.
Description: Vircadia allows creation and sharing of VR experiences.
The Vircadia metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment.

View file

@ -1,5 +1,5 @@
#!/bin/sh
# postinst script for athena-server
# postinst script for vircadia-server
#
# see: dh_installdeb(1)
@ -20,20 +20,20 @@ set -e
case "$1" in
configure)
ldconfig -n /opt/athena/lib
adduser --system --quiet --gecos "Project Athena" --home /var/lib/athena --group --no-create-home athena
mkdir -p /var/lib/athena
chown athena:athena /var/lib/athena
chmod 775 /var/lib/athena
if [ ! -d "/var/lib/athena/default" ]; then
/opt/athena/new-server default 40100
systemctl enable athena-server@default.target
systemctl start athena-server@default.target
ldconfig -n /opt/vircadia/lib
adduser --system --quiet --gecos "Vircadia" --home /var/lib/vircadia --group --no-create-home vircadia
mkdir -p /var/lib/vircadia
chown vircadia:vircadia /var/lib/vircadia
chmod 775 /var/lib/vircadia
if [ ! -d "/var/lib/vircadia/default" ]; then
/opt/vircadia/new-server default 40100
systemctl enable vircadia-server@default.target
systemctl start vircadia-server@default.target
fi
;;
abort-remove|abort-deconfigure)
ldconfig -n /opt/athena/lib
ldconfig -n /opt/vircadia/lib
;;
abort-upgrade)

View file

@ -1,5 +1,5 @@
#!/bin/sh
# prerm script for athena-server
# prerm script for vircadia-server
#
# see: dh_installdeb(1)
@ -19,7 +19,7 @@ set -e
case "$1" in
remove)
find -P /opt/athena/lib -type l -delete
find -P /opt/vircadia/lib -type l -delete
;;
upgrade|deconfigure)

View file

@ -18,26 +18,26 @@
dh $@ --with=systemd
override_dh_systemd_enable:
dh_systemd_enable --no-enable --name athena-assignment-client athena-assignment-client.service
dh_systemd_enable --no-enable --name athena-assignment-client@ athena-assignment-client@.service
dh_systemd_enable --no-enable --name athena-domain-server athena-domain-server.service
dh_systemd_enable --no-enable --name athena-domain-server@ athena-domain-server@.service
#dh_systemd_enable --no-enable --name athena-ice-server athena-ice-server.service
#dh_systemd_enable --no-enable --name athena-ice-server@ athena-ice-server@.service
dh_systemd_enable --no-enable --name athena-server athena-server.target
dh_systemd_enable --no-enable --name athena-server@ athena-server@.target
#dh_systemd_enable --name athena-server@default athena-server@default.target
dh_systemd_enable --no-enable --name vircadia-assignment-client vircadia-assignment-client.service
dh_systemd_enable --no-enable --name vircadia-assignment-client@ vircadia-assignment-client@.service
dh_systemd_enable --no-enable --name vircadia-domain-server vircadia-domain-server.service
dh_systemd_enable --no-enable --name vircadia-domain-server@ vircadia-domain-server@.service
#dh_systemd_enable --no-enable --name vircadia-ice-server vircadia-ice-server.service
#dh_systemd_enable --no-enable --name vircadia-ice-server@ vircadia-ice-server@.service
dh_systemd_enable --no-enable --name vircadia-server vircadia-server.target
dh_systemd_enable --no-enable --name vircadia-server@ vircadia-server@.target
#dh_systemd_enable --name vircadia-server@default vircadia-server@default.target
override_dh_systemd_start:
dh_systemd_start --restart-after-upgrade --no-start athena-assignment-client.service
dh_systemd_start --restart-after-upgrade --no-start athena-assignment-client@.service
dh_systemd_start --restart-after-upgrade --no-start athena-domain-server.service
dh_systemd_start --restart-after-upgrade --no-start athena-domain-server@.service
#dh_systemd_start --restart-after-upgrade --no-start athena-ice-server.service
#dh_systemd_start --restart-after-upgrade --no-start athena-ice-server@.service
dh_systemd_start --restart-after-upgrade --no-start athena-server.target
dh_systemd_start --restart-after-upgrade --no-start athena-server@.target
#dh_systemd_start --restart-after-upgrade athena-server@default.target
dh_systemd_start --restart-after-upgrade --no-start vircadia-assignment-client.service
dh_systemd_start --restart-after-upgrade --no-start vircadia-assignment-client@.service
dh_systemd_start --restart-after-upgrade --no-start vircadia-domain-server.service
dh_systemd_start --restart-after-upgrade --no-start vircadia-domain-server@.service
#dh_systemd_start --restart-after-upgrade --no-start vircadia-ice-server.service
#dh_systemd_start --restart-after-upgrade --no-start vircadia-ice-server@.service
dh_systemd_start --restart-after-upgrade --no-start vircadia-server.target
dh_systemd_start --restart-after-upgrade --no-start vircadia-server@.target
#dh_systemd_start --restart-after-upgrade vircadia-server@default.target
override_dh_installinit:
dh_installinit --noscripts

View file

@ -0,0 +1,18 @@
[Unit]
Description=Assignment client service for Vircadia server
After=network.target
PartOf=vircadia-server.target
[Service]
Restart=always
WorkingDirectory=/opt/vircadia
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib"
User=vircadia
Group=vircadia
#LimitCORE=infinity
#ExecStart=/opt/vircadia/assignment-client -n 6
ExecStart=/opt/vircadia/assignment-client --min 6 --max 20
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,20 @@
[Unit]
Description=Assignment client service for Vircadia server
After=network.target
PartOf=vircadia-server@%i.target
[Service]
Restart=always
WorkingDirectory=/opt/vircadia
EnvironmentFile=/etc/opt/vircadia/%i.conf
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i"
PrivateTmp=true
User=vircadia
Group=vircadia
#LimitCORE=infinity
#ExecStart=/opt/vircadia/assignment-client -n 6
ExecStart=/opt/vircadia/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,17 @@
[Unit]
Description=Domain Server service for Vircadia
After=network.target
PartOf=vircadia-server.target
[Service]
Restart=on-failure
WorkingDirectory=/opt/vircadia
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib"
User=vircadia
Group=vircadia
#LimitCORE=infinity
ExecStart=/opt/vircadia/domain-server
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,19 @@
[Unit]
Description=Domain Server service for Vircadia
After=network.target
PartOf=vircadia-server@%i.target
[Service]
Restart=on-failure
WorkingDirectory=/opt/vircadia
EnvironmentFile=/etc/opt/vircadia/%i.conf
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i"
PrivateTmp=true
User=vircadia
Group=vircadia
#LimitCORE=infinity
ExecStart=/opt/vircadia/domain-server
[Install]
WantedBy=multi-user.target

View file

@ -1,18 +1,18 @@
[Unit]
Description=Ice Server service for Athena
Description=Ice Server service for Vircadia
After=network.target
PartOf=athena-server.target
PartOf=vircadia-server.target
[Service]
Restart=on-failure
Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/athena/lib"
WorkingDirectory=/opt/athena
User=athena
Group=athena
Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/vircadia/lib"
WorkingDirectory=/opt/vircadia
User=vircadia
Group=vircadia
#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l ice-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/ice-server/ice-server; fi'
#LimitCORE=infinity
ExecStart=/opt/athena/ice-server
ExecStart=/opt/vircadia/ice-server
[Install]
WantedBy=multi-user.target

View file

@ -1,20 +1,20 @@
[Unit]
Description=Ice Server service for Athena
Description=Ice Server service for Vircadia
After=network.target
PartOf=athena-server@%i.target
PartOf=vircadia-server@%i.target
[Service]
Restart=on-failure
EnvironmentFile=/etc/opt/athena/%i.conf
Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/athena/lib" "HOME=/var/lib/athena/%i"
EnvironmentFile=/etc/opt/vircadia/%i.conf
Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i"
PrivateTmp=true
WorkingDirectory=/opt/athena
User=athena
Group=athena
WorkingDirectory=/opt/vircadia
User=vircadia
Group=vircadia
#ExecStartPre=/bin/bash -c 'if /usr/bin/pgrep -l ice-server; then /usr/bin/pkill -SIGKILL -f /usr/share/hifi/ice-server/ice-server; fi'
#LimitCORE=infinity
ExecStart=/opt/athena/ice-server
ExecStart=/opt/vircadia/ice-server
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,128 @@
#ATHENA=~/Athena rpmbuild --target x86_64 -bb vircadia-server.spec
%define version %{lua:print(os.getenv("VERSION"))}
%define depends %{lua:print(os.getenv("DEPENDS"))}
Name: vircadia-server
Version: %{version}
Release: 1%{?dist}
Summary: Vircadia metaverse platform, based on the High Fidelity Engine.
License: ASL 2.0
URL: https://projectathena.io
Source0: https://github.com/daleglass/athena-builder/blob/master/athena_builder
#BuildRequires: systemd-rpm-macros
BuildRequires: chrpath
Requires: %{depends}
BuildArch: x86_64
AutoReq: no
AutoProv: no
%description
Vircadia allows creation and sharing of VR experiences.
The Vircadia metaverse provides built-in social features, including avatar interactions, spatialized audio and interactive physics. Additionally, you have the ability to import any 3D object into your virtual environment.
%prep
%build
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/opt/vircadia
install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/assignment-client/assignment-client
install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/domain-server/domain-server
install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/tools/oven/oven
#install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/build/ice-server/ice-server
strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/*
chrpath -d $RPM_BUILD_ROOT/opt/vircadia/*
install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $ATHENA/source/pkg-scripts/new-server
install -d $RPM_BUILD_ROOT/opt/vircadia/lib
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/build/libraries/*/*.so
strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/lib/*
chrpath -d $RPM_BUILD_ROOT/opt/vircadia/lib/*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Network.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Core.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Script.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.*
install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.*
install -d $RPM_BUILD_ROOT/usr/lib/systemd/system
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-assignment-client.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-assignment-client@.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-domain-server.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-domain-server@.service
#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-ice-server.service
#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-ice-server@.service
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-server.target
install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/pkg-scripts/vircadia-server@.target
cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/opt/vircadia
cp -a $ATHENA/build/assignment-client/plugins $RPM_BUILD_ROOT/opt/vircadia
chrpath -d $RPM_BUILD_ROOT/opt/vircadia/plugins/*.so
chrpath -d $RPM_BUILD_ROOT/opt/vircadia/plugins/*/*.so
strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/plugins/*.so
strip --strip-all $RPM_BUILD_ROOT/opt/vircadia/plugins/*/*.so
find $RPM_BUILD_ROOT/opt/vircadia/resources -name ".gitignore" -delete
%files
%license $ATHENA/source/LICENSE
/opt/vircadia
/usr/lib/systemd/system
%changelog
%post
# create users
getent passwd vircadia >/dev/null 2>&1 || useradd -r -c "Vircadia" -d /var/lib/vircadia -U -M vircadia
#getent group vircadia >/dev/null 2>&1 || groupadd -r vircadia
# create data folder
mkdir -p /etc/opt/vircadia
mkdir -p /var/lib/vircadia && chown vircadia:vircadia /var/lib/vircadia && chmod 775 /var/lib/vircadia
ldconfig -n /opt/vircadia/lib
if [ ! -d "/var/lib/vircadia/default" ]; then
/opt/vircadia/new-server default 40100
systemctl enable vircadia-server@default.target
systemctl start vircadia-server@default.target
fi
%systemd_post vircadia-assignment-client.service
%systemd_post vircadia-assignment-client@.service
%systemd_post vircadia-domain-server.service
%systemd_post vircadia-domain-server@.service
#%systemd_post vircadia-ice-server.service
#%systemd_post vircadia-ice-server@.service
%systemd_post vircadia-server.target
%systemd_post vircadia-server@.target
%preun
%systemd_preun vircadia-server.target
%systemd_preun vircadia-server@.target
%systemd_preun vircadia-assignment-client.service
%systemd_preun vircadia-assignment-client@.service
%systemd_preun vircadia-domain-server.service
%systemd_preun vircadia-domain-server@.service
#%systemd_preun vircadia-ice-server.service
#%systemd_preun vircadia-ice-server@.service
%postun
%systemd_postun_with_restart vircadia-server.target
%systemd_postun_with_restart vircadia-server@.target
%systemd_postun_with_restart vircadia-assignment-client.service
%systemd_postun_with_restart vircadia-assignment-client@.service
%systemd_postun_with_restart vircadia-domain-server.service
%systemd_postun_with_restart vircadia-domain-server@.service
#%systemd_postun_with_restart vircadia-ice-server.service
#%systemd_postun_with_restart vircadia-ice-server@.service

View file

@ -0,0 +1,11 @@
[Unit]
Description=Vircadia virtual domain
Wants=vircadia-assignment-client.service
Wants=vircadia-domain-server.service
#Wants=vircadia-ice-server.service
After=vircadia-assignment-client.service
After=vircadia-domain-server.service
#After=vircadia-ice-server.service
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,11 @@
[Unit]
Description=Vircadia virtual domain
Wants=vircadia-assignment-client@%i.service
Wants=vircadia-domain-server@%i.service
#Wants=vircadia-ice-server@%i.service
After=vircadia-assignment-client@%i.service
After=vircadia-domain-server@%i.service
#After=vircadia-ice-server@%i.service
[Install]
WantedBy=multi-user.target