From b072b90eef4d663b5b4305483357a1e2d679ae9c Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Fri, 17 Jan 2020 05:47:17 +0000 Subject: [PATCH 01/11] Proposed rpm build spec --- rpm/athena-assignment-client.service | 18 +++++ rpm/athena-assignment-client@.service | 20 +++++ rpm/athena-domain-server.service | 18 +++++ rpm/athena-domain-server@.service | 20 +++++ rpm/athena-ice-server.service | 18 +++++ rpm/athena-ice-server@.service | 20 +++++ rpm/athena-server.spec | 108 ++++++++++++++++++++++++++ rpm/athena-server.target | 11 +++ rpm/athena-server@.target | 11 +++ rpm/new-server | 48 ++++++++++++ 10 files changed, 292 insertions(+) create mode 100644 rpm/athena-assignment-client.service create mode 100644 rpm/athena-assignment-client@.service create mode 100644 rpm/athena-domain-server.service create mode 100644 rpm/athena-domain-server@.service create mode 100644 rpm/athena-ice-server.service create mode 100644 rpm/athena-ice-server@.service create mode 100644 rpm/athena-server.spec create mode 100644 rpm/athena-server.target create mode 100644 rpm/athena-server@.target create mode 100644 rpm/new-server diff --git a/rpm/athena-assignment-client.service b/rpm/athena-assignment-client.service new file mode 100644 index 0000000000..cbcb5038d8 --- /dev/null +++ b/rpm/athena-assignment-client.service @@ -0,0 +1,18 @@ +[Unit] +Description=Assignment client service for Athena server +After=network.target +PartOf=athena-server.target + +[Service] +Restart=always + +WorkingDirectory=/var/lib/athena +Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" +User=athena +Group=athena +#LimitCORE=infinity +#ExecStart=/usr/share/athena/assignment-client -n 6 +ExecStart=/usr/share/athena/assignment-client --min 6 --max 20 + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-assignment-client@.service b/rpm/athena-assignment-client@.service new file mode 100644 index 0000000000..667ea6e96f --- /dev/null +++ b/rpm/athena-assignment-client@.service @@ -0,0 +1,20 @@ +[Unit] +Description=Assignment client service for Athena server +After=network.target +PartOf=athena-server@%i.target + +[Service] +Restart=always + +WorkingDirectory=/var/lib/athena +EnvironmentFile=/etc/athena/%i.conf +Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +PrivateTmp=true +User=athena +Group=athena +#LimitCORE=infinity +#ExecStart=/usr/share/athena/assignment-client -n 6 +ExecStart=/usr/share/athena/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-domain-server.service b/rpm/athena-domain-server.service new file mode 100644 index 0000000000..453d8ee672 --- /dev/null +++ b/rpm/athena-domain-server.service @@ -0,0 +1,18 @@ +[Unit] +Description=Domain Server service for Athena +After=network.target +PartOf=athena-server.target + +[Service] +Restart=on-failure + +WorkingDirectory=/var/lib/athena +Environment="LD_LIBRARY_PATH=/usr/share/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=/usr/share/athena/domain-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-domain-server@.service b/rpm/athena-domain-server@.service new file mode 100644 index 0000000000..7d32e5b201 --- /dev/null +++ b/rpm/athena-domain-server@.service @@ -0,0 +1,20 @@ +[Unit] +Description=Domain Server service for Athena +After=network.target +PartOf=athena-server@%i.target + +[Service] +Restart=on-failure + +WorkingDirectory=/var/lib/athena +EnvironmentFile=/etc/athena/%i.conf +Environment="LD_LIBRARY_PATH=/usr/share/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=/usr/share/athena/domain-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-ice-server.service b/rpm/athena-ice-server.service new file mode 100644 index 0000000000..628a59dd84 --- /dev/null +++ b/rpm/athena-ice-server.service @@ -0,0 +1,18 @@ +[Unit] +Description=Ice Server service for Athena +After=network.target +PartOf=athena-server.target + +[Service] +Restart=on-failure + +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/usr/share/athena/lib" +WorkingDirectory=/var/lib/athena +User=athena +Group=athena +#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=/usr/share/athena/ice-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-ice-server@.service b/rpm/athena-ice-server@.service new file mode 100644 index 0000000000..0016667e58 --- /dev/null +++ b/rpm/athena-ice-server@.service @@ -0,0 +1,20 @@ +[Unit] +Description=Ice Server service for Athena +After=network.target +PartOf=athena-server@%i.target + +[Service] +Restart=on-failure + +EnvironmentFile=/etc/athena/%i.conf +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +PrivateTmp=true +WorkingDirectory=/var/lib/athena +User=athena +Group=athena +#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=/usr/share/athena/ice-server + +[Install] +WantedBy=multi-user.target diff --git a/rpm/athena-server.spec b/rpm/athena-server.spec new file mode 100644 index 0000000000..f68b53d8ee --- /dev/null +++ b/rpm/athena-server.spec @@ -0,0 +1,108 @@ +#ATHENA=~/Athena rpmbuild --target x86_64 -bb athena-server.spec +Name: athena-server +Version: 0.86.0_K1_20200112_7584429 +Release: 4%{?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: alsa-lib, cups, glib2, gtk3, libdrm, libinput, libjpeg-turbo, libtiff, libxkbcommon, libxkbcommon-x11, mesa-libEGL, mesa-libGL, mesa-libgbm, pcre2, pcre2-utf16, sqlite, xkeyboard-config, zlib, at-spi2-core, dbus, fontconfig, harfbuzz, libICE, libSM, libicu, libmng, libpng, libproxy, libxcb, openssl, pcre, pulseaudio-libs, unixODBC, xcb-util-image, xcb-util-keysyms, xcb-util-renderutil, xcb-util-wm, libxcb, nss, jsoncpp, libxslt, libvpx, libicu, libxml2, opus, libicu, libwebp, libXtst +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/etc/athena +install -m 0755 -t $RPM_BUILD_ROOT/etc/athena $ATHENA/source/rpm/new-server +install -d $RPM_BUILD_ROOT/usr/share/athena +install -m 0755 $ATHENA/build/assignment-client/assignment-client $RPM_BUILD_ROOT/usr/share/athena +install -m 0755 $ATHENA/build/domain-server/domain-server $RPM_BUILD_ROOT/usr/share/athena +#install -m 0755 $ATHENA/build/ice-server/ice-server $RPM_BUILD_ROOT/usr/share/athena +chrpath -d $RPM_BUILD_ROOT/usr/share/athena/* +install -d $RPM_BUILD_ROOT/usr/share/athena/lib +install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/qt5-install/lib/*.so.*.*.* +install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/build/ext/makefiles/quazip/project/lib/*.so.*.*.* +install -d $RPM_BUILD_ROOT/usr/lib/systemd/system +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-assignment-client.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-assignment-client@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-domain-server.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-domain-server@.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-ice-server.service +#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-ice-server@.service +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-server.target +install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-server@.target +cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/usr/share/athena + + +%files +%license $ATHENA/source/LICENSE +/etc/athena +/usr/share/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 /.local && chown root:athena /.local && chmod 775 /.local +#mkdir -p /.config && chown root:athena /.config && chmod 775 /.config +mkdir -p /var/lib/athena && chown athena:athena /var/lib/athena && chmod 775 /var/lib/athena + +ldconfig -n /usr/share/athena/lib +if [ ! -d "/var/lib/athena/default" ] +then + /etc/athena/new-server default 40100 +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/rpm/athena-server.target b/rpm/athena-server.target new file mode 100644 index 0000000000..e3929b401b --- /dev/null +++ b/rpm/athena-server.target @@ -0,0 +1,11 @@ +[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/rpm/athena-server@.target b/rpm/athena-server@.target new file mode 100644 index 0000000000..8ac451ca80 --- /dev/null +++ b/rpm/athena-server@.target @@ -0,0 +1,11 @@ +[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/rpm/new-server b/rpm/new-server new file mode 100644 index 0000000000..d4553d80e7 --- /dev/null +++ b/rpm/new-server @@ -0,0 +1,48 @@ +#!/bin/sh +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 " {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 + exit 1 +fi + +if [ "$(id -u)" -ne 0 ]; then + echo "new-server {name} {base-port}" + echo + echo 'This script must be run by root' >&2 + exit 1 +fi + +if [ -d "/var/lib/athena/$1" ]; then + echo "Path /var/lib/athena/$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/High\ Fidelity\ -\ dev +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 + +echo HIFI_DOMAIN_SERVER_HTTP_PORT=$2 > /etc/athena/$1.conf +echo HIFI_DOMAIN_SERVER_HTTPS_PORT=$(($2 + 1)) >> /etc/athena/$1.conf +echo HIFI_DOMAIN_SERVER_PORT=$(($2 + 2)) >> /etc/athena/$1.conf +echo HIFI_DOMAIN_SERVER_DTLS_PORT=$(($2 + 3)) >> /etc/athena/$1.conf + +echo "A new athena server has been created with the name of '$1'" +echo +echo "To launch it:" +echo " sudo systemctl start athena-server@$1.target" +echo "To have it launch at system start:" +echo " sudo systemctl enable athena-server@$1.target" +echo "The server configuration console is available at:" +echo " http://localhost:$2" From 1e2f1cf3394afd1ee02cc47d115cf62f25f71a41 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Wed, 29 Jan 2020 07:14:29 +0000 Subject: [PATCH 02/11] Additional tweaks and fixes to rpm packaging scripts Renamed folder from /rpm to /pkg-scripts, in preparation for adding non-rpm packaging scripts new-server scripts adjusted for new symlink name ("High Fidelity" renamed to "Project Athena") --- .../athena-assignment-client.service | 0 .../athena-assignment-client@.service | 0 .../athena-domain-server.service | 0 .../athena-domain-server@.service | 0 {rpm => pkg-scripts}/athena-ice-server.service | 0 .../athena-ice-server@.service | 0 {rpm => pkg-scripts}/athena-server.spec | 18 +++++++++--------- {rpm => pkg-scripts}/athena-server.target | 0 {rpm => pkg-scripts}/athena-server@.target | 0 {rpm => pkg-scripts}/new-server | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) rename {rpm => pkg-scripts}/athena-assignment-client.service (100%) rename {rpm => pkg-scripts}/athena-assignment-client@.service (100%) rename {rpm => pkg-scripts}/athena-domain-server.service (100%) rename {rpm => pkg-scripts}/athena-domain-server@.service (100%) rename {rpm => pkg-scripts}/athena-ice-server.service (100%) rename {rpm => pkg-scripts}/athena-ice-server@.service (100%) rename {rpm => pkg-scripts}/athena-server.spec (90%) rename {rpm => pkg-scripts}/athena-server.target (100%) rename {rpm => pkg-scripts}/athena-server@.target (100%) rename {rpm => pkg-scripts}/new-server (96%) diff --git a/rpm/athena-assignment-client.service b/pkg-scripts/athena-assignment-client.service similarity index 100% rename from rpm/athena-assignment-client.service rename to pkg-scripts/athena-assignment-client.service diff --git a/rpm/athena-assignment-client@.service b/pkg-scripts/athena-assignment-client@.service similarity index 100% rename from rpm/athena-assignment-client@.service rename to pkg-scripts/athena-assignment-client@.service diff --git a/rpm/athena-domain-server.service b/pkg-scripts/athena-domain-server.service similarity index 100% rename from rpm/athena-domain-server.service rename to pkg-scripts/athena-domain-server.service diff --git a/rpm/athena-domain-server@.service b/pkg-scripts/athena-domain-server@.service similarity index 100% rename from rpm/athena-domain-server@.service rename to pkg-scripts/athena-domain-server@.service diff --git a/rpm/athena-ice-server.service b/pkg-scripts/athena-ice-server.service similarity index 100% rename from rpm/athena-ice-server.service rename to pkg-scripts/athena-ice-server.service diff --git a/rpm/athena-ice-server@.service b/pkg-scripts/athena-ice-server@.service similarity index 100% rename from rpm/athena-ice-server@.service rename to pkg-scripts/athena-ice-server@.service diff --git a/rpm/athena-server.spec b/pkg-scripts/athena-server.spec similarity index 90% rename from rpm/athena-server.spec rename to pkg-scripts/athena-server.spec index f68b53d8ee..dcdbe49d44 100644 --- a/rpm/athena-server.spec +++ b/pkg-scripts/athena-server.spec @@ -29,7 +29,7 @@ Project Athena allows creation and sharing of VR experiences. %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT/etc/athena -install -m 0755 -t $RPM_BUILD_ROOT/etc/athena $ATHENA/source/rpm/new-server +install -m 0755 -t $RPM_BUILD_ROOT/etc/athena $ATHENA/source/pkg-scripts/new-server install -d $RPM_BUILD_ROOT/usr/share/athena install -m 0755 $ATHENA/build/assignment-client/assignment-client $RPM_BUILD_ROOT/usr/share/athena install -m 0755 $ATHENA/build/domain-server/domain-server $RPM_BUILD_ROOT/usr/share/athena @@ -39,14 +39,14 @@ install -d $RPM_BUILD_ROOT/usr/share/athena/lib install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/qt5-install/lib/*.so.*.*.* install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/build/ext/makefiles/quazip/project/lib/*.so.*.*.* install -d $RPM_BUILD_ROOT/usr/lib/systemd/system -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-assignment-client.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-assignment-client@.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-domain-server.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-domain-server@.service -#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-ice-server.service -#install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-ice-server@.service -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-server.target -install -m 0644 -t $RPM_BUILD_ROOT/usr/lib/systemd/system $ATHENA/source/rpm/athena-server@.target +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/usr/share/athena diff --git a/rpm/athena-server.target b/pkg-scripts/athena-server.target similarity index 100% rename from rpm/athena-server.target rename to pkg-scripts/athena-server.target diff --git a/rpm/athena-server@.target b/pkg-scripts/athena-server@.target similarity index 100% rename from rpm/athena-server@.target rename to pkg-scripts/athena-server@.target diff --git a/rpm/new-server b/pkg-scripts/new-server similarity index 96% rename from rpm/new-server rename to pkg-scripts/new-server index d4553d80e7..2f34d6e3a4 100644 --- a/rpm/new-server +++ b/pkg-scripts/new-server @@ -28,7 +28,7 @@ if [ -d "/var/lib/athena/$1" ]; then fi mkdir -p /var/lib/athena/$1/.local/share -ln -s ../.. /var/lib/athena/$1/.local/share/High\ Fidelity\ -\ dev +ln -s ../.. /var/lib/athena/$1/.local/share/Project\ Athena\ -\ dev 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 From 7863c847fb94c4b689c68fa0996ca35755170050 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Thu, 30 Jan 2020 06:30:56 +0000 Subject: [PATCH 03/11] Moved installed files under /opt; reduced installed .so list to those actually required --- pkg-scripts/athena-assignment-client.service | 8 +- pkg-scripts/athena-assignment-client@.service | 10 +- pkg-scripts/athena-domain-server.service | 6 +- pkg-scripts/athena-domain-server@.service | 8 +- pkg-scripts/athena-ice-server.service | 6 +- pkg-scripts/athena-ice-server@.service | 8 +- pkg-scripts/athena-server.spec | 91 ++++++++++++------- pkg-scripts/new-server | 8 +- 8 files changed, 87 insertions(+), 58 deletions(-) diff --git a/pkg-scripts/athena-assignment-client.service b/pkg-scripts/athena-assignment-client.service index cbcb5038d8..a6407294dc 100644 --- a/pkg-scripts/athena-assignment-client.service +++ b/pkg-scripts/athena-assignment-client.service @@ -6,13 +6,13 @@ PartOf=athena-server.target [Service] Restart=always -WorkingDirectory=/var/lib/athena -Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" +WorkingDirectory=/opt/athena +Environment="LD_LIBRARY_PATH=/opt/athena/lib" User=athena Group=athena #LimitCORE=infinity -#ExecStart=/usr/share/athena/assignment-client -n 6 -ExecStart=/usr/share/athena/assignment-client --min 6 --max 20 +#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 index 667ea6e96f..7f60ed4d28 100644 --- a/pkg-scripts/athena-assignment-client@.service +++ b/pkg-scripts/athena-assignment-client@.service @@ -6,15 +6,15 @@ PartOf=athena-server@%i.target [Service] Restart=always -WorkingDirectory=/var/lib/athena -EnvironmentFile=/etc/athena/%i.conf -Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +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=/usr/share/athena/assignment-client -n 6 -ExecStart=/usr/share/athena/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT +#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 index 453d8ee672..a5db9dc269 100644 --- a/pkg-scripts/athena-domain-server.service +++ b/pkg-scripts/athena-domain-server.service @@ -6,13 +6,13 @@ PartOf=athena-server.target [Service] Restart=on-failure -WorkingDirectory=/var/lib/athena -Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" +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=/usr/share/athena/domain-server +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 index 7d32e5b201..330d8ac81d 100644 --- a/pkg-scripts/athena-domain-server@.service +++ b/pkg-scripts/athena-domain-server@.service @@ -6,15 +6,15 @@ PartOf=athena-server@%i.target [Service] Restart=on-failure -WorkingDirectory=/var/lib/athena -EnvironmentFile=/etc/athena/%i.conf -Environment="LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +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=/usr/share/athena/domain-server +ExecStart=/opt/athena/domain-server [Install] WantedBy=multi-user.target diff --git a/pkg-scripts/athena-ice-server.service b/pkg-scripts/athena-ice-server.service index 628a59dd84..57db8581b3 100644 --- a/pkg-scripts/athena-ice-server.service +++ b/pkg-scripts/athena-ice-server.service @@ -6,13 +6,13 @@ PartOf=athena-server.target [Service] Restart=on-failure -Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/usr/share/athena/lib" -WorkingDirectory=/var/lib/athena +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/athena/lib" +WorkingDirectory=/opt/athena User=athena Group=athena #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=/usr/share/athena/ice-server +ExecStart=/opt/athena/ice-server [Install] WantedBy=multi-user.target diff --git a/pkg-scripts/athena-ice-server@.service b/pkg-scripts/athena-ice-server@.service index 0016667e58..e4993f5436 100644 --- a/pkg-scripts/athena-ice-server@.service +++ b/pkg-scripts/athena-ice-server@.service @@ -6,15 +6,15 @@ PartOf=athena-server@%i.target [Service] Restart=on-failure -EnvironmentFile=/etc/athena/%i.conf -Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/usr/share/athena/lib" "HOME=/var/lib/athena/%i" +EnvironmentFile=/etc/opt/athena/%i.conf +Environment="HIFI_ENVIRONMENT=production" "LD_LIBRARY_PATH=/opt/athena/lib" "HOME=/var/lib/athena/%i" PrivateTmp=true -WorkingDirectory=/var/lib/athena +WorkingDirectory=/opt/athena User=athena Group=athena #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=/usr/share/athena/ice-server +ExecStart=/opt/athena/ice-server [Install] WantedBy=multi-user.target diff --git a/pkg-scripts/athena-server.spec b/pkg-scripts/athena-server.spec index dcdbe49d44..5393335532 100644 --- a/pkg-scripts/athena-server.spec +++ b/pkg-scripts/athena-server.spec @@ -1,7 +1,7 @@ #ATHENA=~/Athena rpmbuild --target x86_64 -bb athena-server.spec Name: athena-server -Version: 0.86.0_K1_20200112_7584429 -Release: 4%{?dist} +Version: 0.86.0_K1_20200128_486c7bde5bedf152e70fc63281f14da26ecec738 +Release: 2%{?dist} Summary: Project Athena metaverse platform, based on the High Fidelity Engine. License: ASL 2.0 @@ -28,33 +28,38 @@ Project Athena allows creation and sharing of VR experiences. %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT/etc/athena -install -m 0755 -t $RPM_BUILD_ROOT/etc/athena $ATHENA/source/pkg-scripts/new-server -install -d $RPM_BUILD_ROOT/usr/share/athena -install -m 0755 $ATHENA/build/assignment-client/assignment-client $RPM_BUILD_ROOT/usr/share/athena -install -m 0755 $ATHENA/build/domain-server/domain-server $RPM_BUILD_ROOT/usr/share/athena -#install -m 0755 $ATHENA/build/ice-server/ice-server $RPM_BUILD_ROOT/usr/share/athena -chrpath -d $RPM_BUILD_ROOT/usr/share/athena/* -install -d $RPM_BUILD_ROOT/usr/share/athena/lib -install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/qt5-install/lib/*.so.*.*.* -install -m 0644 -t $RPM_BUILD_ROOT/usr/share/athena/lib $ATHENA/build/ext/makefiles/quazip/project/lib/*.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/usr/share/athena +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/ice-server/ice-server +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/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/opt/athena/systemd +install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-assignment-client.service +install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-assignment-client@.service +install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-domain-server.service +install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-domain-server@.service +#install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-ice-server.service +#install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-ice-server@.service +install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-server.target +install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-server@.target +cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/opt/athena %files %license $ATHENA/source/LICENSE -/etc/athena -/usr/share/athena -/usr/lib/systemd/system +/opt/athena %changelog @@ -65,15 +70,39 @@ cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/usr/share/athena 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 system scripts +if [ ! -e "/usr/lib/systemd/system/athena-assignment-client.service" ]; then + ln -s /opt/athena/systemd/athena-assignment-client.service /usr/lib/systemd/system/athena-assignment-client.service +fi +if [ ! -e "/usr/lib/systemd/system/athena-assignment-client@.service" ]; then + ln -s /opt/athena/systemd/athena-assignment-client@.service /usr/lib/systemd/system/athena-assignment-client@.service +fi +if [ ! -e "/usr/lib/systemd/system/athena-domain-server.service" ]; then + ln -s /opt/athena/systemd/athena-domain-server.service /usr/lib/systemd/system/athena-domain-server.service +fi +if [ ! -e "/usr/lib/systemd/system/athena-domain-server@.service" ]; then + ln -s /opt/athena/systemd/athena-domain-server@.service /usr/lib/systemd/system/athena-domain-server@.service +fi +#if [ ! -e "/usr/lib/systemd/system/athena-ice-server.service" ]; then +# ln -s /opt/athena/systemd/athena-ice-server.service /usr/lib/systemd/system/athena-ice-server.service +#fi +#if [ ! -e "/usr/lib/systemd/system/athena-ice-server@.service" ]; then +# ln -s /opt/athena/systemd/athena-ice-server@.service /usr/lib/systemd/system/athena-ice-server@.service +#fi +if [ ! -e "/usr/lib/systemd/system/athena-server.target" ]; then + ln -s /opt/athena/systemd/athena-server.target /usr/lib/systemd/system/athena-server.target +fi +if [ ! -e "/usr/lib/systemd/system/athena-server@.target" ]; then + ln -s /opt/athena/systemd/athena-server@.target /usr/lib/systemd/system/athena-server@.target +fi + # create data folder -#mkdir -p /.local && chown root:athena /.local && chmod 775 /.local -#mkdir -p /.config && chown root:athena /.config && chmod 775 /.config +mkdir -p /etc/opt/athena mkdir -p /var/lib/athena && chown athena:athena /var/lib/athena && chmod 775 /var/lib/athena -ldconfig -n /usr/share/athena/lib -if [ ! -d "/var/lib/athena/default" ] -then - /etc/athena/new-server default 40100 +ldconfig -n /opt/athena/lib +if [ ! -d "/var/lib/athena/default" ]; then + /opt/athena/new-server default 40100 fi %systemd_post athena-assignment-client.service diff --git a/pkg-scripts/new-server b/pkg-scripts/new-server index 2f34d6e3a4..3f7db1f15d 100644 --- a/pkg-scripts/new-server +++ b/pkg-scripts/new-server @@ -33,10 +33,10 @@ 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 -echo HIFI_DOMAIN_SERVER_HTTP_PORT=$2 > /etc/athena/$1.conf -echo HIFI_DOMAIN_SERVER_HTTPS_PORT=$(($2 + 1)) >> /etc/athena/$1.conf -echo HIFI_DOMAIN_SERVER_PORT=$(($2 + 2)) >> /etc/athena/$1.conf -echo HIFI_DOMAIN_SERVER_DTLS_PORT=$(($2 + 3)) >> /etc/athena/$1.conf +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 "A new athena server has been created with the name of '$1'" echo From 65602f78016a1335fcc196b4acc9c3a5c0228819 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Fri, 31 Jan 2020 07:36:10 +0000 Subject: [PATCH 04/11] First pass adding Ubuntu DEB package builder --- pkg-scripts/README | 23 +++++++++ pkg-scripts/make-deb-server | 93 +++++++++++++++++++++++++++++++++++++ pkg-scripts/new-server | 0 pkg-scripts/server-control | 15 ++++++ pkg-scripts/server-postinst | 53 +++++++++++++++++++++ pkg-scripts/server-prerm | 42 +++++++++++++++++ pkg-scripts/server-rules | 53 +++++++++++++++++++++ 7 files changed, 279 insertions(+) create mode 100644 pkg-scripts/README create mode 100755 pkg-scripts/make-deb-server mode change 100644 => 100755 pkg-scripts/new-server create mode 100644 pkg-scripts/server-control create mode 100755 pkg-scripts/server-postinst create mode 100755 pkg-scripts/server-prerm create mode 100755 pkg-scripts/server-rules diff --git a/pkg-scripts/README b/pkg-scripts/README new file mode 100644 index 0000000000..6db1076e36 --- /dev/null +++ b/pkg-scripts/README @@ -0,0 +1,23 @@ +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 +the following directory structure exists + +base folder/ + source/ git checkout + build/ result of cmake build + qt5-install/ installed or built Qt5 installation + + +Ubuntu: + DEBEMAIL="your-email@somewhere.com" DEBFULLNAME="Your Full Name" ./make-deb-server + + This script will retrieve the current git commit date and hash and assemble a version from it. + It will attempt construct a .deb file in the pkg-scripts folder, assuming the Athena base folder + is located at ../.. + +Amazon Linux 2: + ATHENA=~/Athena rpmbuild --target x86_64 -bb ./athena-server.spec + + This command takes an ATHENA environment variable set to the base folder and attempts to build + an .rpm file. The result will be in ~/rpmbuild/RPMS. The version number is currently + hardcoded inside of the athena-server.spec file diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server new file mode 100755 index 0000000000..35cd9550b4 --- /dev/null +++ b/pkg-scripts/make-deb-server @@ -0,0 +1,93 @@ +#!/bin/sh + +ATHENA=`realpath ../..` +GITDATE=`git log -n 1 --format=raw | grep author | cut -d' ' -f 4 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git rev-parse HEAD | cut -c 1-7` +VERSION=0.86.0-k1-$GITDATE-$GITCOMMIT + +sudo apt-get install chrpath binutils + +DEB_BUILD_ROOT=temp-make-deb/athena-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/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 +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 +find $DEB_BUILD_ROOT/resources -name ".gitignore" -delete +cp $ATHENA/source/README.md $DEB_BUILD_ROOT +cp $ATHENA/source/README_hifi.md $DEB_BUILD_ROOT + +#begin the debian package construction +cd $DEB_BUILD_ROOT +dh_make -p athena-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/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 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 ice-server opt/athena >> debian/install +echo new-server opt/athena >> debian/install +for so in *.so.*.*.*; do + echo $so opt/athena/lib >> debian/install +done +#for service in *.service; do +# echo $service opt/athena/systemd >> debian/install +#done +#for target in *.target; do +# echo $target opt/athena/systemd >> debian/install +#done +find resources -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 + +DEPENDS=`find * -maxdepth 0 -type f -executable -exec sh -c 'objdump -p {} | grep NEEDED' \; | awk '{print $2}' | sort | uniq | grep -v ^libQt5 | grep -v ^libquazip | 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 + +dpkg-buildpackage -us -uc + +cd .. +mv *.deb .. +cd .. diff --git a/pkg-scripts/new-server b/pkg-scripts/new-server old mode 100644 new mode 100755 diff --git a/pkg-scripts/server-control b/pkg-scripts/server-control new file mode 100644 index 0000000000..70383891bd --- /dev/null +++ b/pkg-scripts/server-control @@ -0,0 +1,15 @@ +Source: athena-server +Section: comm +Priority: optional +Maintainer: Heather Anderson +Build-Depends: debhelper (>= 10) +Standards-Version: 4.1.2 +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 +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. diff --git a/pkg-scripts/server-postinst b/pkg-scripts/server-postinst new file mode 100755 index 0000000000..fa14e8175f --- /dev/null +++ b/pkg-scripts/server-postinst @@ -0,0 +1,53 @@ +#!/bin/sh +# postinst script for athena-server +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# 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 + fi + ;; + + abort-remove|abort-deconfigure) + ldconfig -n /opt/athena/lib + ;; + + abort-upgrade) + ;; + + *) + echo "postinst 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 new file mode 100755 index 0000000000..cdeddd308e --- /dev/null +++ b/pkg-scripts/server-prerm @@ -0,0 +1,42 @@ +#!/bin/sh +# prerm script for athena-server +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove) + find -P /opt/athena/lib -type l -delete + ;; + + upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm 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-rules b/pkg-scripts/server-rules new file mode 100755 index 0000000000..9cf9dc1396 --- /dev/null +++ b/pkg-scripts/server-rules @@ -0,0 +1,53 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + + +# see FEATURE AREAS in dpkg-buildflags(1) +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# see ENVIRONMENT in dpkg-buildflags(1) +# package maintainers to append CFLAGS +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# package maintainers to append LDFLAGS +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + + +%: + 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 + +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 + +override_dh_installinit: + dh_installinit --noscripts + +override_dh_shlibdeps: + # don't run sh_shlibdeps, it REALLY won't work. We do it ourselves anyhow + + +# dh_make generated override targets +# This is example for Cmake (See https://bugs.debian.org/641051 ) +#override_dh_auto_configure: +# dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH) + From d2a2687e6c3f70b8723e6b213651fdff7dd5b4e6 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sat, 1 Feb 2020 05:55:54 +0000 Subject: [PATCH 05/11] Added "plugins" folder required for audio codecs. Created make-rpm-server script to help automate. RPM deps slimmed down. --- pkg-scripts/README | 39 ++++++++++++++++++--- pkg-scripts/athena-server.spec | 64 ++++++++++++++-------------------- pkg-scripts/make-deb-server | 8 ++++- pkg-scripts/make-rpm-server | 37 ++++++++++++++++++++ 4 files changed, 105 insertions(+), 43 deletions(-) create mode 100755 pkg-scripts/make-rpm-server diff --git a/pkg-scripts/README b/pkg-scripts/README index 6db1076e36..e5b7da5033 100644 --- a/pkg-scripts/README +++ b/pkg-scripts/README @@ -16,8 +16,39 @@ Ubuntu: is located at ../.. Amazon Linux 2: - ATHENA=~/Athena rpmbuild --target x86_64 -bb ./athena-server.spec + ./athena-server.spec - This command takes an ATHENA environment variable set to the base folder and attempts to build - an .rpm file. The result will be in ~/rpmbuild/RPMS. The version number is currently - hardcoded inside of the athena-server.spec file + This script will retrieve the current git commit date and hash and assemble a version from it. + It will attempt construct a .deb file in the pkg-scripts folder, assuming the Athena base folder + is located at ../.. + +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 + + 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 + + The top three services in this list are the "normal" services that launch Athena + 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 + 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 + domain and has nothing to do with "place names", it is only used to locate the files + 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 diff --git a/pkg-scripts/athena-server.spec b/pkg-scripts/athena-server.spec index 5393335532..643120f98b 100644 --- a/pkg-scripts/athena-server.spec +++ b/pkg-scripts/athena-server.spec @@ -1,7 +1,10 @@ #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: 0.86.0_K1_20200128_486c7bde5bedf152e70fc63281f14da26ecec738 -Release: 2%{?dist} +Version: %{version} +Release: 1%{?dist} Summary: Project Athena metaverse platform, based on the High Fidelity Engine. License: ASL 2.0 @@ -10,7 +13,7 @@ Source0: https://github.com/daleglass/athena-builder/blob/master/athena_b #BuildRequires: systemd-rpm-macros BuildRequires: chrpath -Requires: alsa-lib, cups, glib2, gtk3, libdrm, libinput, libjpeg-turbo, libtiff, libxkbcommon, libxkbcommon-x11, mesa-libEGL, mesa-libGL, mesa-libgbm, pcre2, pcre2-utf16, sqlite, xkeyboard-config, zlib, at-spi2-core, dbus, fontconfig, harfbuzz, libICE, libSM, libicu, libmng, libpng, libproxy, libxcb, openssl, pcre, pulseaudio-libs, unixODBC, xcb-util-image, xcb-util-keysyms, xcb-util-renderutil, xcb-util-wm, libxcb, nss, jsoncpp, libxslt, libvpx, libicu, libxml2, opus, libicu, libwebp, libXtst +Requires: %{depends} BuildArch: x86_64 AutoReq: no AutoProv: no @@ -31,7 +34,9 @@ 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 @@ -45,21 +50,28 @@ install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/lib $ATHENA/qt5-install/lib/libQt5 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/opt/athena/systemd -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-assignment-client.service -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-assignment-client@.service -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-domain-server.service -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-domain-server@.service -#install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-ice-server.service -#install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-ice-server@.service -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-server.target -install -m 0644 -t $RPM_BUILD_ROOT/opt/athena/systemd $ATHENA/source/pkg-scripts/athena-server@.target +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 @@ -70,32 +82,6 @@ cp -a $ATHENA/source/domain-server/resources $RPM_BUILD_ROOT/opt/athena 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 system scripts -if [ ! -e "/usr/lib/systemd/system/athena-assignment-client.service" ]; then - ln -s /opt/athena/systemd/athena-assignment-client.service /usr/lib/systemd/system/athena-assignment-client.service -fi -if [ ! -e "/usr/lib/systemd/system/athena-assignment-client@.service" ]; then - ln -s /opt/athena/systemd/athena-assignment-client@.service /usr/lib/systemd/system/athena-assignment-client@.service -fi -if [ ! -e "/usr/lib/systemd/system/athena-domain-server.service" ]; then - ln -s /opt/athena/systemd/athena-domain-server.service /usr/lib/systemd/system/athena-domain-server.service -fi -if [ ! -e "/usr/lib/systemd/system/athena-domain-server@.service" ]; then - ln -s /opt/athena/systemd/athena-domain-server@.service /usr/lib/systemd/system/athena-domain-server@.service -fi -#if [ ! -e "/usr/lib/systemd/system/athena-ice-server.service" ]; then -# ln -s /opt/athena/systemd/athena-ice-server.service /usr/lib/systemd/system/athena-ice-server.service -#fi -#if [ ! -e "/usr/lib/systemd/system/athena-ice-server@.service" ]; then -# ln -s /opt/athena/systemd/athena-ice-server@.service /usr/lib/systemd/system/athena-ice-server@.service -#fi -if [ ! -e "/usr/lib/systemd/system/athena-server.target" ]; then - ln -s /opt/athena/systemd/athena-server.target /usr/lib/systemd/system/athena-server.target -fi -if [ ! -e "/usr/lib/systemd/system/athena-server@.target" ]; then - ln -s /opt/athena/systemd/athena-server@.target /usr/lib/systemd/system/athena-server@.target -fi - # create data folder mkdir -p /etc/opt/athena mkdir -p /var/lib/athena && chown athena:athena /var/lib/athena && chmod 775 /var/lib/athena @@ -103,6 +89,8 @@ mkdir -p /var/lib/athena && chown athena:athena /var/lib/athena && chmod 775 /va 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 diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index 35cd9550b4..c538c9c2b2 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -14,6 +14,7 @@ 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/ice-server/ice-server $DEB_BUILD_ROOT chrpath -d $DEB_BUILD_ROOT/* cp $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* $DEB_BUILD_ROOT @@ -32,6 +33,9 @@ cp -a $ATHENA/source/domain-server/resources $DEB_BUILD_ROOT find $DEB_BUILD_ROOT/resources -name ".gitignore" -delete 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 +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 @@ -59,6 +63,7 @@ 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 for so in *.so.*.*.*; do @@ -71,6 +76,7 @@ done # echo $target opt/athena/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 @@ -81,7 +87,7 @@ find resources -type f -exec sh -c 'echo {} opt/athena/$(dirname "{}") >> debian #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 -DEPENDS=`find * -maxdepth 0 -type f -executable -exec sh -c 'objdump -p {} | grep NEEDED' \; | awk '{print $2}' | sort | uniq | grep -v ^libQt5 | grep -v ^libquazip | 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 | grep -v ^libQt5 | grep -v ^libquazip | 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 diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server new file mode 100755 index 0000000000..30aaa418fe --- /dev/null +++ b/pkg-scripts/make-rpm-server @@ -0,0 +1,37 @@ +#!/bin/sh + +ATHENA=`realpath ../..` +GITDATE=`git log -n 1 --format=raw | grep author | cut -d' ' -f 4 | xargs -I {} date -d @{} +"%Y%m%d"` +GITCOMMIT=`git rev-parse HEAD | cut -c 1-7` +VERSION=0.86.0_K1_${GITDATE}_${GITCOMMIT} + +DEPENDS=mesa-libGL,`ls \ + $ATHENA/build/assignment-client/assignment-client \ + $ATHENA/build/domain-server/domain-server \ + $ATHENA/build/tools/oven/oven \ + $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 \ + | xargs -I {} sh -c 'objdump -p {} | grep NEEDED' \ + | awk '{print $2}' \ + | sort | uniq \ + | grep -v ^libQt5 | grep -v ^libquazip | grep -v ^libGL \ + | xargs -I {} sh -c "ldconfig -p | grep {} | tr ' ' '\n' | grep /" \ + | xargs rpm -qf --queryformat "%{NAME}\n" \ + | sort | uniq \ + | paste -d',' -s` + +sudo yum install chrpath + +export VERSION DEPENDS ATHENA +rpmbuild --target x86_64 -bb ./athena-server.spec +mv ~/rpmbuild/RPMS/x86_64/*.rpm . From 9b54a979120dc9e1d379d0801b1abce02bfd5d32 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 23 Feb 2020 04:13:53 +0000 Subject: [PATCH 06/11] Adjusted DEB build to handle dynamic library compilation --- pkg-scripts/make-deb-server | 13 ++++++++++--- pkg-scripts/new-server | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index c538c9c2b2..7ddeeeb890 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -1,8 +1,11 @@ #!/bin/sh -ATHENA=`realpath ../..` -GITDATE=`git log -n 1 --format=raw | grep author | cut -d' ' -f 4 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git rev-parse HEAD | cut -c 1-7` +if [ "$ATHENA" = "" ]; then + ATHENA=`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-k1-$GITDATE-$GITCOMMIT sudo apt-get install chrpath binutils @@ -15,6 +18,7 @@ mkdir -p $DEB_BUILD_ROOT 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 chrpath -d $DEB_BUILD_ROOT/* cp $ATHENA/qt5-install/lib/libQt5Network.so.*.*.* $DEB_BUILD_ROOT @@ -69,6 +73,9 @@ echo new-server opt/athena >> debian/install for so in *.so.*.*.*; do echo $so opt/athena/lib >> debian/install done +for so in *.so; do + echo $so opt/athena/lib >> debian/install +done #for service in *.service; do # echo $service opt/athena/systemd >> debian/install #done diff --git a/pkg-scripts/new-server b/pkg-scripts/new-server index 3f7db1f15d..fd9ba95761 100755 --- a/pkg-scripts/new-server +++ b/pkg-scripts/new-server @@ -29,6 +29,7 @@ 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 From 009549fe87420bada22e03d8281880085d98afa9 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 23 Feb 2020 04:36:12 +0000 Subject: [PATCH 07/11] Adjusted RPM build to handle dynamic library compilation --- pkg-scripts/athena-server.spec | 3 +++ pkg-scripts/make-rpm-server | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg-scripts/athena-server.spec b/pkg-scripts/athena-server.spec index 643120f98b..7910c8114b 100644 --- a/pkg-scripts/athena-server.spec +++ b/pkg-scripts/athena-server.spec @@ -40,6 +40,9 @@ 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.*.*.* diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server index 30aaa418fe..f0e4c3728a 100755 --- a/pkg-scripts/make-rpm-server +++ b/pkg-scripts/make-rpm-server @@ -1,14 +1,17 @@ #!/bin/sh -ATHENA=`realpath ../..` -GITDATE=`git log -n 1 --format=raw | grep author | cut -d' ' -f 4 | xargs -I {} date -d @{} +"%Y%m%d"` -GITCOMMIT=`git rev-parse HEAD | cut -c 1-7` +if [ "$ATHENA" = "" ]; then + ATHENA=`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_K1_${GITDATE}_${GITCOMMIT} 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.*.*.* \ From 8cf0c3708fb90ec0a2ab16288d3456bbadfaa47b Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 8 Mar 2020 07:40:07 +0000 Subject: [PATCH 08/11] Initial add of Docker package builder. Tested to launch and permit configuration from localhost, but doesn't appear to accept new connections from outside the machine (possible fireall rule?) --- pkg-scripts/Dockerfile.templ | 43 +++++++++++++ pkg-scripts/README | 14 +++-- pkg-scripts/docker-athena-supervisor.conf | 76 +++++++++++++++++++++++ pkg-scripts/docker-entrypoint.sh | 33 ++++++++++ pkg-scripts/make-docker-server | 60 ++++++++++++++++++ 5 files changed, 222 insertions(+), 4 deletions(-) create mode 100644 pkg-scripts/Dockerfile.templ create mode 100644 pkg-scripts/docker-athena-supervisor.conf create mode 100755 pkg-scripts/docker-entrypoint.sh create mode 100755 pkg-scripts/make-docker-server diff --git a/pkg-scripts/Dockerfile.templ b/pkg-scripts/Dockerfile.templ new file mode 100644 index 0000000000..76d27e8c78 --- /dev/null +++ b/pkg-scripts/Dockerfile.templ @@ -0,0 +1,43 @@ +FROM ubuntu:18.04 +ARG DEPENDS +ARG GITSRC +ARG GITDATE +ARG GITCOMMIT + +# starting out as root, will drop back in entrypoint.sh +USER root + +# expose ports for domain server +EXPOSE 40100 40101 40102 +EXPOSE 40100/udp 40101/udp 40102/udp + +# expose ports for assignment client +EXPOSE 48000/udp 48001/udp 48002/udp 48003/udp 48004/udp 48005/udp 48006/udp + +RUN echo UTC >/etc/timezone +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 ; \ + exit 0 + +VOLUME /var/lib/athena + +RUN mkdir -p /var/run ; chmod 777 /var/run +COPY athena.conf /etc/supervisor/conf.d/athena.conf + +COPY entrypoint.sh / +COPY opt /opt/athena +COPY lib /opt/athena/lib + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/athena.conf"] +LABEL \ + net.projectathena.gitsrc="${GITSRC}" \ + net.projectathena.gitdate="${GITDATE}" \ + net.projectathena.gitcommit="${GITCOMMIT}" diff --git a/pkg-scripts/README b/pkg-scripts/README index e5b7da5033..5c465be661 100644 --- a/pkg-scripts/README +++ b/pkg-scripts/README @@ -7,20 +7,26 @@ base folder/ build/ result of cmake build qt5-install/ installed or built Qt5 installation +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 Ubuntu: DEBEMAIL="your-email@somewhere.com" DEBFULLNAME="Your Full Name" ./make-deb-server This script will retrieve the current git commit date and hash and assemble a version from it. - It will attempt construct a .deb file in the pkg-scripts folder, assuming the Athena base folder - is located at ../.. + It will attempt construct a .deb file in the pkg-scripts folder Amazon Linux 2: ./athena-server.spec This script will retrieve the current git commit date and hash and assemble a version from it. - It will attempt construct a .deb file in the pkg-scripts folder, assuming the Athena base folder - is located at ../.. + It will attempt construct a .deb file in the pkg-scripts folder + +Docker: + ./make-docker-server + + This script will attempt to create a docker container Results: The following directory structure is created for binaries: diff --git a/pkg-scripts/docker-athena-supervisor.conf b/pkg-scripts/docker-athena-supervisor.conf new file mode 100644 index 0000000000..d6e53996b6 --- /dev/null +++ b/pkg-scripts/docker-athena-supervisor.conf @@ -0,0 +1,76 @@ +[supervisord] +user=athena +nodaemon=true +environment=HOME="/var/lib/athena",USER="athena",LD_LIBRARY_PATH="/opt/athena/lib" +logfile=/dev/stdout +logfile_maxbytes=0 +pidfile=/var/run/supervisord.pid + +[program:domain-server] +command=/opt/athena/domain-server +autorestart=unexpected +directory=/opt/athena + +[program:audio-mixer] +command=/opt/athena/assignment-client -t 0 -a localhost -p 48000 +autorestart=unexpected +directory=/opt/athena +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 +autorestart=unexpected +directory=/opt/athena +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 +autorestart=unexpected +directory=/opt/athena +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 +autorestart=unexpected +directory=/opt/athena +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 +autorestart=unexpected +directory=/opt/athena +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 +autorestart=unexpected +directory=/opt/athena +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 +autorestart=unexpected +directory=/opt/athena +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 + diff --git a/pkg-scripts/docker-entrypoint.sh b/pkg-scripts/docker-entrypoint.sh new file mode 100755 index 0000000000..4a4a7506dc --- /dev/null +++ b/pkg-scripts/docker-entrypoint.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -x + + +# In Prod, this may be configured with a GID already matching the container +# 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 + # 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 + 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 + fi + + if ! groups athena | grep -q athena; then + usermod -aG athena athena + fi +fi + +chmod 777 /dev/stdout +chmod 777 /dev/stderr + +# continue with CMD +exec "$@" diff --git a/pkg-scripts/make-docker-server b/pkg-scripts/make-docker-server new file mode 100755 index 0000000000..3ad37bb0e2 --- /dev/null +++ b/pkg-scripts/make-docker-server @@ -0,0 +1,60 @@ +#!/bin/sh + +if [ "$ATHENA" = "" ]; then + ATHENA=`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` + +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 + +# 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 +strip --strip-all $DOCK_BUILD_ROOT/opt/* +chrpath -d $DOCK_BUILD_ROOT/opt/* + +cp -a $ATHENA/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 +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 +chmod +x $DOCK_BUILD_ROOT/lib/* +strip --strip-all $DOCK_BUILD_ROOT/lib/* +chrpath -d $DOCK_BUILD_ROOT/lib/* +ldconfig -n $DOCK_BUILD_ROOT/lib + +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" . From 3e378a4131239b2fb3d76b18113d5e32a6ec5145 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 8 Mar 2020 07:46:08 +0000 Subject: [PATCH 09/11] Updating AWS Linux rpm builder - improved external dependency detector - fixed (minimal) documentation in README --- pkg-scripts/README | 4 ++-- pkg-scripts/make-rpm-server | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/pkg-scripts/README b/pkg-scripts/README index 5c465be661..f4ef24eed4 100644 --- a/pkg-scripts/README +++ b/pkg-scripts/README @@ -18,10 +18,10 @@ Ubuntu: It will attempt construct a .deb file in the pkg-scripts folder Amazon Linux 2: - ./athena-server.spec + ./make-rpm-server This script will retrieve the current git commit date and hash and assemble a version from it. - It will attempt construct a .deb file in the pkg-scripts folder + It will attempt construct an .rpm file in the pkg-scripts folder Docker: ./make-docker-server diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server index f0e4c3728a..d7cf0f5e78 100755 --- a/pkg-scripts/make-rpm-server +++ b/pkg-scripts/make-rpm-server @@ -7,6 +7,21 @@ GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" - GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` VERSION=0.86.0_K1_${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.*.*.* \ + | sed 's/\./\\\./g' \ + | paste -d'|' -s` + DEPENDS=mesa-libGL,`ls \ $ATHENA/build/assignment-client/assignment-client \ $ATHENA/build/domain-server/domain-server \ @@ -27,7 +42,8 @@ DEPENDS=mesa-libGL,`ls \ | xargs -I {} sh -c 'objdump -p {} | grep NEEDED' \ | awk '{print $2}' \ | sort | uniq \ - | grep -v ^libQt5 | grep -v ^libquazip | grep -v ^libGL \ + | egrep -v "^($SOFILES)$" \ + | grep -v ^libGL \ | xargs -I {} sh -c "ldconfig -p | grep {} | tr ' ' '\n' | grep /" \ | xargs rpm -qf --queryformat "%{NAME}\n" \ | sort | uniq \ From 6126133b58fa4c482d86b85760ccdabc54304240 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sun, 22 Mar 2020 23:19:10 +0000 Subject: [PATCH 10/11] bumping up version to K3 making adjustments to DEB construction for (hopefully) cleaner output --- pkg-scripts/make-deb-server | 8 ++++++-- pkg-scripts/make-rpm-server | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index 7ddeeeb890..ee8475c0d4 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -6,7 +6,7 @@ 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-k1-$GITDATE-$GITCOMMIT +VERSION=0.86.0-k2-$GITDATE-$GITCOMMIT sudo apt-get install chrpath binutils @@ -31,10 +31,12 @@ 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 +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 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 @@ -94,7 +96,9 @@ find plugins -type f -exec sh -c 'echo {} opt/athena/$(dirname "{}") >> debian/i #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 -DEPENDS=`find * -type f -executable -exec sh -c 'objdump -p {} | grep NEEDED' \; | awk '{print $2}' | sort | uniq | grep -v ^libQt5 | grep -v ^libquazip | xargs -n 1 -I {} sh -c 'dpkg -S {} | head -n 1' | cut -d ':' -f 1 | sort | uniq | paste -d',' -s` +SOFILES=`ls *.so *.so.*.*.* | sed 's/\./\\\./g' | 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 diff --git a/pkg-scripts/make-rpm-server b/pkg-scripts/make-rpm-server index d7cf0f5e78..9863faa0ab 100755 --- a/pkg-scripts/make-rpm-server +++ b/pkg-scripts/make-rpm-server @@ -5,7 +5,7 @@ if [ "$ATHENA" = "" ]; then 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_K1_${GITDATE}_${GITCOMMIT} +VERSION=0.86.0_K2_${GITDATE}_${GITCOMMIT} SOFILES=`ls \ $ATHENA/build/libraries/*/*.so \ From 183c966453754f52b31d2a939ba7589701c3c4d3 Mon Sep 17 00:00:00 2001 From: Heather Anderson Date: Sat, 28 Mar 2020 23:52:40 +0000 Subject: [PATCH 11/11] Tweaks done in response to Kalila's smoketest of ubuntu packaging --- pkg-scripts/make-deb-server | 2 +- pkg-scripts/server-rules | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg-scripts/make-deb-server b/pkg-scripts/make-deb-server index ee8475c0d4..72304ae414 100755 --- a/pkg-scripts/make-deb-server +++ b/pkg-scripts/make-deb-server @@ -8,7 +8,7 @@ GITDATE=`git -C $ATHENA/source log -n 1 --format=raw | grep author | cut -d">" - GITCOMMIT=`git -C $ATHENA/source rev-parse HEAD | cut -c 1-7` VERSION=0.86.0-k2-$GITDATE-$GITCOMMIT -sudo apt-get install chrpath binutils +sudo apt-get install chrpath binutils dh-make DEB_BUILD_ROOT=temp-make-deb/athena-server-$VERSION-0ubuntu1 rm -r temp-make-deb diff --git a/pkg-scripts/server-rules b/pkg-scripts/server-rules index 9cf9dc1396..4585591b15 100755 --- a/pkg-scripts/server-rules +++ b/pkg-scripts/server-rules @@ -45,6 +45,8 @@ override_dh_installinit: override_dh_shlibdeps: # don't run sh_shlibdeps, it REALLY won't work. We do it ourselves anyhow +override_dh_strip: + # don't run dh_strip, we do it ourselves anyhow and we want failures to be non-fatal # dh_make generated override targets # This is example for Cmake (See https://bugs.debian.org/641051 )