diff --git a/pkg-scripts/Dockerfile.templ b/pkg-scripts/Dockerfile.templ index 76d27e8c78..e340024bce 100644 --- a/pkg-scripts/Dockerfile.templ +++ b/pkg-scripts/Dockerfile.templ @@ -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}" diff --git a/pkg-scripts/README b/pkg-scripts/README index f4ef24eed4..92a9bf00d3 100644 --- a/pkg-scripts/README +++ b/pkg-scripts/README @@ -1,5 +1,5 @@ Collection of scripts to create server distribution packages. Most of these scripts assume -use of the build script at https://github.com/daleglass/athena-builder, specifically that +use of the build script at https://github.com/kasenvr/vircadia-builder, specifically that the following directory structure exists base folder/ @@ -9,7 +9,7 @@ base folder/ These scripts assume that the current directory is the pkg-scripts folder inside of the source directory and that the base folder can be reached by going to "../..". This may not work if pkg-scripts is a symlink; -adding an ATHENA=~/Athena to the beginning of the commandline will override where it looks for the base folder +adding an VIRCADIA=~/Vircadia to the beginning of the commandline will override where it looks for the base folder Ubuntu: DEBEMAIL="your-email@somewhere.com" DEBFULLNAME="Your Full Name" ./make-deb-server @@ -30,24 +30,24 @@ Docker: Results: The following directory structure is created for binaries: - /opt/athena - executables - /opt/athena/lib - private shared libraries required for executables - /opt/athena/resources - files required by domain-server administrative website - /opt/athena/plugins - files required by assignment-client, mainly for audio codecs + /opt/vircadia - executables + /opt/vircadia/lib - private shared libraries required for executables + /opt/vircadia/resources - files required by domain-server administrative website + /opt/vircadia/plugins - files required by assignment-client, mainly for audio codecs The following systemd services are installed in /usr/lib/systemd/system: - athena-assignment-client.service - athena-domain-server.service - athena-server.target - used to launch/shutdown the two prior services - athena-assignment-client@.service - athena-domain-server@.service - athena-server@.target - used to launch/shutdown the two prior services + vircadia-assignment-client.service + vircadia-domain-server.service + vircadia-server.target - used to launch/shutdown the two prior services + vircadia-assignment-client@.service + vircadia-domain-server@.service + vircadia-server@.target - used to launch/shutdown the two prior services - The top three services in this list are the "normal" services that launch Athena + The top three services in this list are the "normal" services that launch Vircadia in the typical fashion. The bottom three services are "template" services designed to permit multiple services to be installed and running on a single machine. - The script "/opt/athena/new-server serverName basePort" will do the necessary + The script "/opt/vircadia/new-server serverName basePort" will do the necessary setup for a new domain with the specified server name and port. Upon installation the package will create and launch a domain named "default" at base port 40100. The domain name here has nothing to do with the name people will use to find your @@ -55,6 +55,6 @@ Results: used to configure and run the domain on your server. The server stores its files in the following locations: - /var/lib/athena/.local - "unnamed" services (the default location for Athena servers) - /var/lib/athena/serverName - "named" (template) domains - /etc/opt/athena - environment variables when launching named domains + /var/lib/vircadia/.local - "unnamed" services (the default location for Vircadia servers) + /var/lib/vircadia/serverName - "named" (template) domains + /etc/opt/vircadia - environment variables when launching named domains diff --git a/pkg-scripts/athena-assignment-client.service b/pkg-scripts/athena-assignment-client.service deleted file mode 100644 index a6407294dc..0000000000 --- a/pkg-scripts/athena-assignment-client.service +++ /dev/null @@ -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 diff --git a/pkg-scripts/athena-assignment-client@.service b/pkg-scripts/athena-assignment-client@.service deleted file mode 100644 index 7f60ed4d28..0000000000 --- a/pkg-scripts/athena-assignment-client@.service +++ /dev/null @@ -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 diff --git a/pkg-scripts/athena-domain-server.service b/pkg-scripts/athena-domain-server.service deleted file mode 100644 index a5db9dc269..0000000000 --- a/pkg-scripts/athena-domain-server.service +++ /dev/null @@ -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 diff --git a/pkg-scripts/athena-domain-server@.service b/pkg-scripts/athena-domain-server@.service deleted file mode 100644 index 330d8ac81d..0000000000 --- a/pkg-scripts/athena-domain-server@.service +++ /dev/null @@ -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 diff --git a/pkg-scripts/athena-server.spec b/pkg-scripts/athena-server.spec deleted file mode 100644 index 7910c8114b..0000000000 --- a/pkg-scripts/athena-server.spec +++ /dev/null @@ -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 diff --git a/pkg-scripts/athena-server.target b/pkg-scripts/athena-server.target deleted file mode 100644 index e3929b401b..0000000000 --- a/pkg-scripts/athena-server.target +++ /dev/null @@ -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 diff --git a/pkg-scripts/athena-server@.target b/pkg-scripts/athena-server@.target deleted file mode 100644 index 8ac451ca80..0000000000 --- a/pkg-scripts/athena-server@.target +++ /dev/null @@ -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 diff --git a/pkg-scripts/docker-entrypoint.sh b/pkg-scripts/docker-entrypoint.sh index 4a4a7506dc..b519647edb 100755 --- a/pkg-scripts/docker-entrypoint.sh +++ b/pkg-scripts/docker-entrypoint.sh @@ -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_VIRCADIA_PID=`ls -nd /var/lib/vircadia/.local | cut -f3 -d' '` + CUR_VIRCADIA_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 diff --git a/pkg-scripts/docker-athena-supervisor.conf b/pkg-scripts/docker-vircadia-supervisor.conf similarity index 60% rename from pkg-scripts/docker-athena-supervisor.conf rename to pkg-scripts/docker-vircadia-supervisor.conf index d6e53996b6..3ee1961c80 100644 --- a/pkg-scripts/docker-athena-supervisor.conf +++ b/pkg-scripts/docker-vircadia-supervisor.conf @@ -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 diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index 72304ae414..6a7bff26c3 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -1,107 +1,99 @@ #!/bin/sh -if [ "$ATHENA" = "" ]; then - ATHENA=`realpath ../..` +if [ "$VIRCADIA" = "" ]; then + VIRCADIA=`realpath ../..` fi -GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` -VERSION=0.86.0-k2-$GITDATE-$GITCOMMIT +GITDATE=`git -C $VIRCADIA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git -C $VIRCADIA/source rev-parse HEAD | cut -c 1-7` +VERSION=2020.2.0-asteria-$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 # copy the files over -cp $ATHENA/build/assignment-client/assignment-client $DEB_BUILD_ROOT -cp $ATHENA/build/domain-server/domain-server $DEB_BUILD_ROOT -cp $ATHENA/build/tools/oven/oven $DEB_BUILD_ROOT -cp $ATHENA/build/libraries/*/*.so $DEB_BUILD_ROOT -#cp $ATHENA/build/ice-server/ice-server $DEB_BUILD_ROOT +cp $VIRCADIA/build/assignment-client/assignment-client $DEB_BUILD_ROOT +cp $VIRCADIA/build/domain-server/domain-server $DEB_BUILD_ROOT +cp $VIRCADIA/build/tools/oven/oven $DEB_BUILD_ROOT +cp $VIRCADIA/build/libraries/*/*.so $DEB_BUILD_ROOT +#cp $VIRCADIA/build/ice-server/ice-server $DEB_BUILD_ROOT chrpath -d $DEB_BUILD_ROOT/* -cp $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DEB_BUILD_ROOT -cp $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* $DEB_BUILD_ROOT +cp $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DEB_BUILD_ROOT chmod +x $DEB_BUILD_ROOT/*.so.*.*.* strip --strip-all $DEB_BUILD_ROOT/* -cp $ATHENA/source/pkg-scripts/new-server $DEB_BUILD_ROOT -cp -a $ATHENA/source/domain-server/resources $DEB_BUILD_ROOT +cp $VIRCADIA/source/pkg-scripts/new-server $DEB_BUILD_ROOT +cp -a $VIRCADIA/source/domain-server/resources $DEB_BUILD_ROOT find $DEB_BUILD_ROOT/resources -name ".gitignore" -delete find $DEB_BUILD_ROOT/resources -type f -executable -exec sh -c 'chmod -x {}' \; -cp $ATHENA/source/README.md $DEB_BUILD_ROOT -cp $ATHENA/source/README_hifi.md $DEB_BUILD_ROOT -cp -a $ATHENA/build/assignment-client/plugins $DEB_BUILD_ROOT +cp $VIRCADIA/source/README.md $DEB_BUILD_ROOT +cp $VIRCADIA/source/README_hifi.md $DEB_BUILD_ROOT +cp -a $VIRCADIA/build/assignment-client/plugins $DEB_BUILD_ROOT strip --strip-all $DEB_BUILD_ROOT/plugins/*.so 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 $VIRCADIA/source/pkg-scripts/vircadia-assignment-client.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-assignment-client@.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-domain-server.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-domain-server@.service debian +#cp $VIRCADIA/source/pkg-scripts/vircadia-ice-server.service debian +#cp $VIRCADIA/source/pkg-scripts/vircadia-ice-server@.service debian +cp $VIRCADIA/source/pkg-scripts/vircadia-server.target debian +cp $VIRCADIA/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 +cp $VIRCADIA/source/pkg-scripts/server-control debian/control +cp $VIRCADIA/source/pkg-scripts/server-prerm debian/prerm +cp $VIRCADIA/source/pkg-scripts/server-postinst debian/postinst +cp $VIRCADIA/source/pkg-scripts/server-postrm debian/postrm +cp $VIRCADIA/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' \; +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' \; -#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 +SOFILES=`ls *.so *.so.*.*.* | grep -Po '^(.+\.so(\.\d+)?)' | sed 's/\./\\\./g' | paste -d'|' -s` -SOFILES=`ls *.so *.so.*.*.* | sed 's/\./\\\./g' | paste -d'|' -s` +DEPENDS=`find * -path debian -prune -o -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` -DEPENDS=`find * -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` - -cp $ATHENA/source/pkg-scripts/server-rules debian/rules -sed "s/{DEPENDS}/$DEPENDS/" $ATHENA/source/pkg-scripts/server-control > debian/control +cp $VIRCADIA/source/pkg-scripts/server-rules debian/rules +sed "s/{DEPENDS}/$DEPENDS/" $VIRCADIA/source/pkg-scripts/server-control > debian/control dpkg-buildpackage -us -uc diff --git a/pkg-scripts/make-docker-server b/pkg-scripts/make-docker-server index 3ad37bb0e2..68b8ca7cd6 100755 --- a/pkg-scripts/make-docker-server +++ b/pkg-scripts/make-docker-server @@ -1,53 +1,51 @@ #!/bin/sh -if [ "$ATHENA" = "" ]; then - ATHENA=`realpath ../..` +if [ "$VIRCADIA" = "" ]; then + VIRCADIA=`realpath ../..` fi -GITSRC=`git -C $ATHENA/source config --get remote.origin.url | cut -d':' -f 2` -GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` +GITSRC=`git -C $VIRCADIA/source config --get remote.origin.url | cut -d':' -f 2` +GITDATE=`git -C $VIRCADIA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git -C $VIRCADIA/source rev-parse HEAD | cut -c 1-7` sudo apt-get install chrpath binutils DOCK_BUILD_ROOT=temp-make-dock 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 $VIRCADIA/source/pkg-scripts/Dockerfile.templ $DOCK_BUILD_ROOT/Dockerfile +cp $VIRCADIA/source/pkg-scripts/docker-entrypoint.sh $DOCK_BUILD_ROOT/entrypoint.sh +cp $VIRCADIA/source/pkg-scripts/docker-vircadia-supervisor.conf $DOCK_BUILD_ROOT/vircadia.conf # copy the files over mkdir -p $DOCK_BUILD_ROOT/opt -cp $ATHENA/build/assignment-client/assignment-client $DOCK_BUILD_ROOT/opt -cp $ATHENA/build/domain-server/domain-server $DOCK_BUILD_ROOT/opt -cp $ATHENA/build/tools/oven/oven $DOCK_BUILD_ROOT/opt -#cp $ATHENA/build/ice-server/ice-server $DOCK_BUILD_ROOT/opt +cp $VIRCADIA/build/assignment-client/assignment-client $DOCK_BUILD_ROOT/opt +cp $VIRCADIA/build/domain-server/domain-server $DOCK_BUILD_ROOT/opt +cp $VIRCADIA/build/tools/oven/oven $DOCK_BUILD_ROOT/opt +#cp $VIRCADIA/build/ice-server/ice-server $DOCK_BUILD_ROOT/opt strip --strip-all $DOCK_BUILD_ROOT/opt/* chrpath -d $DOCK_BUILD_ROOT/opt/* -cp -a $ATHENA/build/assignment-client/plugins $DOCK_BUILD_ROOT/opt +cp -a $VIRCADIA/build/assignment-client/plugins $DOCK_BUILD_ROOT/opt strip --strip-all $DOCK_BUILD_ROOT/opt/plugins/*.so chrpath -d $DOCK_BUILD_ROOT/opt/plugins/*.so strip --strip-all $DOCK_BUILD_ROOT/opt/plugins/*/*.so chrpath -d $DOCK_BUILD_ROOT/opt/plugins/*/*.so -cp -a $ATHENA/source/domain-server/resources $DOCK_BUILD_ROOT/opt +cp -a $VIRCADIA/source/domain-server/resources $DOCK_BUILD_ROOT/opt find $DOCK_BUILD_ROOT/opt/resources -name ".gitignore" -delete find $DOCK_BUILD_ROOT/opt/resources -type f -executable -exec sh -c 'chmod -x {}' \; mkdir -p $DOCK_BUILD_ROOT/lib -cp $ATHENA/build/libraries/*/*.so $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DOCK_BUILD_ROOT/lib -cp $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/build/libraries/*/*.so $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* $DOCK_BUILD_ROOT/lib +cp $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* $DOCK_BUILD_ROOT/lib chmod +x $DOCK_BUILD_ROOT/lib/* strip --strip-all $DOCK_BUILD_ROOT/lib/* chrpath -d $DOCK_BUILD_ROOT/lib/* @@ -57,4 +55,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" . diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server index 9863faa0ab..20ac76d4b0 100755 --- a/pkg-scripts/make-rpm-server +++ b/pkg-scripts/make-rpm-server @@ -1,44 +1,42 @@ #!/bin/sh -if [ "$ATHENA" = "" ]; then - ATHENA=`realpath ../..` +if [ "$VIRCADIA" = "" ]; then + VIRCADIA=`realpath ../..` fi -GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` -VERSION=0.86.0_K2_${GITDATE}_${GITCOMMIT} +GITDATE=`git -C $VIRCADIA/source log -n 1 --format=raw | grep author | cut -d">" -f 2 | cut -d" " -f 2 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git -C $VIRCADIA/source rev-parse HEAD | cut -c 1-7` +VERSION=2020.2.0_ASTERIA_${GITDATE}_${GITCOMMIT} SOFILES=`ls \ - $ATHENA/build/libraries/*/*.so \ - $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ - $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* \ + $VIRCADIA/build/libraries/*/*.so \ + $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Quick.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ | sed 's/\./\\\./g' \ | paste -d'|' -s` DEPENDS=mesa-libGL,`ls \ - $ATHENA/build/assignment-client/assignment-client \ - $ATHENA/build/domain-server/domain-server \ - $ATHENA/build/tools/oven/oven \ - $ATHENA/build/libraries/*/*.so \ - $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Core.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Widgets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Gui.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Script.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Quick.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5Qml.so.*.*.* \ - $ATHENA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ - $ATHENA/build/ext/makefiles/quazip/project/lib/libquazip5.so.*.*.* \ - $ATHENA/build/assignment-client/plugins/*.so \ - $ATHENA/build/assignment-client/plugins/*/*.so \ + $VIRCADIA/build/assignment-client/assignment-client \ + $VIRCADIA/build/domain-server/domain-server \ + $VIRCADIA/build/tools/oven/oven \ + $VIRCADIA/build/libraries/*/*.so \ + $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5Quick.so.*.*.* \ + $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* \ + $VIRCADIA/build/assignment-client/plugins/*.so \ + $VIRCADIA/build/assignment-client/plugins/*/*.so \ | xargs -I {} sh -c 'objdump -p {} | grep NEEDED' \ | awk '{print $2}' \ | sort | uniq \ @@ -51,6 +49,6 @@ DEPENDS=mesa-libGL,`ls \ sudo yum install chrpath -export VERSION DEPENDS ATHENA -rpmbuild --target x86_64 -bb ./athena-server.spec +export VERSION DEPENDS VIRCADIA +rpmbuild --target x86_64 -bb ./vircadia-server.spec mv ~/rpmbuild/RPMS/x86_64/*.rpm . diff --git a/pkg-scripts/new-server b/pkg-scripts/new-server index fd9ba95761..a2ce9b330d 100755 --- a/pkg-scripts/new-server +++ b/pkg-scripts/new-server @@ -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,30 @@ 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/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" diff --git a/pkg-scripts/server-control b/pkg-scripts/server-control index 70383891bd..c80b8da724 100644 --- a/pkg-scripts/server-control +++ b/pkg-scripts/server-control @@ -1,15 +1,15 @@ -Source: athena-server +Source: vircadia-server Section: comm Priority: optional Maintainer: Heather Anderson Build-Depends: debhelper (>= 10) Standards-Version: 4.1.2 -Homepage: https://www.projectathena.dev +Homepage: https://vircadia.com 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. diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst index fa14e8175f..cb06adbae0 100755 --- a/pkg-scripts/server-postinst +++ b/pkg-scripts/server-postinst @@ -1,5 +1,5 @@ #!/bin/sh -# postinst script for athena-server +# postinst script for vircadia-server # # see: dh_installdeb(1) @@ -17,23 +17,55 @@ set -e # for details, see https://www.debian.org/doc/debian-policy/ or # the debian-policy package - 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 + if [ -d "/var/lib/athena" ]; then + ATHENA_ACTIVE=`systemctl list-units \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | paste -s -d'|' \ + | head -c -1` + ATHENA_ENABLED=`systemctl list-units --state=loaded \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' \ + | head -c -1` + + # shutdown athena servers + echo -n $ATHENA_ACTIVE | xargs -d'|' systemctl stop + + # copy the server files over + cp /etc/opt/athena/* /etc/opt/vircadia + cp -R /var/lib/athena/* /var/lib/vircadia + chown -R vircadia:vircadia /var/lib/vircadia/* + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' + + VIRCADIA_ACTIVE=`echo -n $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` + VIRCADIA_ENABLED=`echo -n $ATHENA_ENABLED | sed 's/athena/vircadia/g'` + + echo -n $ATHENA_ENABLED | xargs -d'|' systemctl disable + echo -n $VIRCADIA_ENABLED | xargs -d'|' systemctl enable + echo -n $VIRCADIA_ACTIVE | xargs -d'|' systemctl start + else + /opt/vircadia/new-server default 40100 + systemctl enable vircadia-server@default.target + systemctl start vircadia-server@default.target + fi + else + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl restart fi ;; abort-remove|abort-deconfigure) - ldconfig -n /opt/athena/lib + ldconfig -n /opt/vircadia/lib ;; abort-upgrade) diff --git a/pkg-scripts/server-postrm b/pkg-scripts/server-postrm new file mode 100755 index 0000000000..944d5e60f4 --- /dev/null +++ b/pkg-scripts/server-postrm @@ -0,0 +1,41 @@ +#!/bin/sh +# postrm script for vircadia-server +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `disappear' +# * `abort-install; +# * `abort-install' +# * `abort-upgrade' +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge) + rm -r /etc/opt/vircadia + rm -r /var/lib/vircadia + ;; + + remove|upgrade|failed-upgrade|disappear|abort-install|abort-upgrade) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/pkg-scripts/server-prerm b/pkg-scripts/server-prerm index cdeddd308e..de15128778 100755 --- a/pkg-scripts/server-prerm +++ b/pkg-scripts/server-prerm @@ -1,5 +1,5 @@ #!/bin/sh -# prerm script for athena-server +# prerm script for vircadia-server # # see: dh_installdeb(1) @@ -19,7 +19,11 @@ set -e case "$1" in remove) - find -P /opt/athena/lib -type l -delete + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl stop + + find -P /opt/vircadia/lib -type l -delete ;; upgrade|deconfigure) diff --git a/pkg-scripts/server-rules b/pkg-scripts/server-rules index 4585591b15..24f557159b 100755 --- a/pkg-scripts/server-rules +++ b/pkg-scripts/server-rules @@ -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 diff --git a/pkg-scripts/vircadia-assignment-client.service b/pkg-scripts/vircadia-assignment-client.service new file mode 100644 index 0000000000..9c86e4e874 --- /dev/null +++ b/pkg-scripts/vircadia-assignment-client.service @@ -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 diff --git a/pkg-scripts/vircadia-assignment-client@.service b/pkg-scripts/vircadia-assignment-client@.service new file mode 100644 index 0000000000..4684947426 --- /dev/null +++ b/pkg-scripts/vircadia-assignment-client@.service @@ -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 diff --git a/pkg-scripts/vircadia-domain-server.service b/pkg-scripts/vircadia-domain-server.service new file mode 100644 index 0000000000..8c261bc72f --- /dev/null +++ b/pkg-scripts/vircadia-domain-server.service @@ -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 diff --git a/pkg-scripts/vircadia-domain-server@.service b/pkg-scripts/vircadia-domain-server@.service new file mode 100644 index 0000000000..7ae84dc6f3 --- /dev/null +++ b/pkg-scripts/vircadia-domain-server@.service @@ -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 diff --git a/pkg-scripts/athena-ice-server.service b/pkg-scripts/vircadia-ice-server.service similarity index 63% rename from pkg-scripts/athena-ice-server.service rename to pkg-scripts/vircadia-ice-server.service index 57db8581b3..d966ffe0c0 100644 --- a/pkg-scripts/athena-ice-server.service +++ b/pkg-scripts/vircadia-ice-server.service @@ -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 diff --git a/pkg-scripts/athena-ice-server@.service b/pkg-scripts/vircadia-ice-server@.service similarity index 56% rename from pkg-scripts/athena-ice-server@.service rename to pkg-scripts/vircadia-ice-server@.service index e4993f5436..fc5ab4615d 100644 --- a/pkg-scripts/athena-ice-server@.service +++ b/pkg-scripts/vircadia-ice-server@.service @@ -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 diff --git a/pkg-scripts/vircadia-server.spec b/pkg-scripts/vircadia-server.spec new file mode 100644 index 0000000000..3e0eed896e --- /dev/null +++ b/pkg-scripts/vircadia-server.spec @@ -0,0 +1,168 @@ +#VIRCADIA=~/Vircadia 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://vircadia.com +Source0: https://github.com/kasenvr/vircadia-builder/blob/master/vircadia-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 $VIRCADIA/build/assignment-client/assignment-client +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/build/domain-server/domain-server +install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/build/tools/oven/oven +#install -m 0755 -t $RPM_BUILD_ROOT/opt/vircadia $VIRCADIA/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 $VIRCADIA/source/pkg-scripts/new-server +install -d $RPM_BUILD_ROOT/opt/vircadia/lib +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/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 $VIRCADIA/qt5-install/lib/libQt5Network.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Core.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Widgets.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Gui.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Script.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5WebSockets.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Qml.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5Quick.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/opt/vircadia/lib $VIRCADIA/qt5-install/lib/libQt5ScriptTools.so.*.*.* +install -d $RPM_BUILD_ROOT/usr/lib/systemd/system +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-assignment-client.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-assignment-client@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-domain-server.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-domain-server@.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-ice-server.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-ice-server@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-server.target +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $VIRCADIA/source/pkg-scripts/vircadia-server@.target +cp -a $VIRCADIA/source/domain-server/resources $RPM_BUILD_ROOT/opt/vircadia +cp -a $VIRCADIA/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 $VIRCADIA/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 + +%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 + +if [ ! -d "/var/lib/vircadia/default" ]; then + if [ -d "/var/lib/athena" ]; then + ATHENA_ACTIVE=`systemctl list-units \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | paste -s -d'|' \ + | head -c -1` + ATHENA_ENABLED=`systemctl list-units --state=loaded \ + | grep -P -o "(athena-assignment-client|athena-domain-server|athena-server)\S+" \ + | xargs -I {} sh -c 'if systemctl is-enabled {} >/dev/null ; then echo {} ; fi' \ + | paste -s -d'|' \ + | head -c -1` + + # shutdown athena servers + echo -n $ATHENA_ACTIVE | xargs -d'|' systemctl stop + + # copy the server files over + cp /etc/opt/athena/* /etc/opt/vircadia + cp -R /var/lib/athena/* /var/lib/vircadia + chown -R vircadia:vircadia /var/lib/vircadia/* + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. "Vircadia - dev"' ';' + find /var/lib/vircadia -maxdepth 3 -path "*\.local/share" -execdir sh -c 'cd share; ln -s ../.. Vircadia' ';' + + VIRCADIA_ACTIVE=`echo -n $ATHENA_ACTIVE | sed 's/athena/vircadia/g'` + VIRCADIA_ENABLED=`echo -n $ATHENA_ENABLED | sed 's/athena/vircadia/g'` + + echo -n $ATHENA_ENABLED | xargs -d'|' systemctl disable + echo -n $VIRCADIA_ENABLED | xargs -d'|' systemctl enable + echo -n $VIRCADIA_ACTIVE | xargs -d'|' systemctl start + else + /opt/vircadia/new-server default 40100 + systemctl enable vircadia-server@default.target + systemctl start vircadia-server@default.target + fi +else + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl restart +fi + + +%preun + +if [ "$1" -eq 0 ]; then + systemctl list-units \ + | grep -P -o "(vircadia-assignment-client|vircadia-domain-server|vircadia-server)\S+" \ + | xargs systemctl stop +fi + +%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 diff --git a/pkg-scripts/vircadia-server.target b/pkg-scripts/vircadia-server.target new file mode 100644 index 0000000000..27225aade3 --- /dev/null +++ b/pkg-scripts/vircadia-server.target @@ -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 diff --git a/pkg-scripts/vircadia-server@.target b/pkg-scripts/vircadia-server@.target new file mode 100644 index 0000000000..158a48bedc --- /dev/null +++ b/pkg-scripts/vircadia-server@.target @@ -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