Merge branch 'master' into feature/domain-metadata-exporter
|
@ -97,7 +97,7 @@ endif()
|
|||
|
||||
option(VCPKG_APPLOCAL_DEPS OFF)
|
||||
|
||||
project(athena)
|
||||
project(vircadia)
|
||||
include("cmake/init.cmake")
|
||||
include("cmake/compiler.cmake")
|
||||
option(VCPKG_APPLOCAL_DEPS OFF)
|
||||
|
|
|
@ -976,14 +976,13 @@ while (true) {
|
|||
|
||||
#### [4.3.4] Source files (header and implementation) must include a boilerplate.
|
||||
|
||||
Boilerplates should include the filename, location, creator, copyright Vircadia contributors, and Apache 2.0 License
|
||||
information. This should be placed at the top of the file. If editing an existing file that is copyright High Fidelity, add a
|
||||
second copyright line, copyright Vircadia contributors.
|
||||
Boilerplates should include the filename, creator, copyright Vircadia contributors, and Apache 2.0 License information.
|
||||
This should be placed at the top of the file. If editing an existing file that is copyright High Fidelity, add a second
|
||||
copyright line, copyright Vircadia contributors.
|
||||
|
||||
```cpp
|
||||
//
|
||||
// NodeList.h
|
||||
// libraries/shared/src
|
||||
//
|
||||
// Created by Stephen Birarda on 15 Feb 2013.
|
||||
// Copyright 2013 High Fidelity, Inc.
|
||||
|
|
16
README.md
|
@ -14,21 +14,29 @@ Vircadia is a 3D social software project seeking to incrementally bring about a
|
|||
|
||||
[For Windows](https://github.com/kasenvr/project-athena/blob/master/BUILD_WIN.md)
|
||||
|
||||
[For Mac](https://github.com/kasenvr/project-athena/blob/master/BUILD_OSX.md)
|
||||
|
||||
[For Linux](https://github.com/kasenvr/project-athena/blob/master/BUILD_LINUX.md)
|
||||
|
||||
[For Linux - Athena Builder](https://github.com/kasenvr/vircadia-builder)
|
||||
[For Linux - Vircadia Builder](https://github.com/kasenvr/vircadia-builder)
|
||||
|
||||
### How to deploy a Server
|
||||
|
||||
[For Windows and Linux](https://vircadia.com/download-vircadia/#server)
|
||||
[For Windows and Linux](https://vircadia.com/deploy-a-server/)
|
||||
|
||||
### How to build a Server
|
||||
|
||||
[For Linux - Athena Builder](https://github.com/kasenvr/vircadia-builder)
|
||||
[For Linux - Vircadia Builder](https://github.com/kasenvr/vircadia-builder)
|
||||
|
||||
### How to generate an Installer
|
||||
|
||||
[For Windows](https://github.com/kasenvr/project-athena/blob/master/INSTALL.md)
|
||||
|
||||
[For Linux - AppImage - Vircadia Builder](https://github.com/kasenvr/vircadia-builder/blob/master/README.md#building-appimages)
|
||||
|
||||
### Boot to Metaverse: The Goal
|
||||
|
||||
Having a place to experience adventure, a place to relax with calm breath, that's a world to live in. An engine to support infinite combinations and possibilities of worlds without censorship and interruption, that's a metaverse. Finding a way to make infinite realities our reality, that's the dream.
|
||||
Having a place to experience adventure, a place to relax with calm breath, that's a world to live in. An engine to support infinite combinations and possibilities of worlds without censorship and interruption, that's a metaverse. Finding a way to make infinite realities our reality is the dream.
|
||||
|
||||
### Boot to Metaverse: The Technicals
|
||||
|
||||
|
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
|
@ -6,9 +6,9 @@ vcpkg_from_github(
|
|||
REPO
|
||||
xiph/opus
|
||||
REF
|
||||
e85ed7726db5d677c9c0677298ea0cb9c65bdd23
|
||||
72a3a6c13329869000b34a12ba27d8bfdfbc22b3
|
||||
SHA512
|
||||
a8c7e5bf383c06f1fdffd44d9b5f658f31eb4800cb59d12da95ddaeb5646f7a7b03025f4663362b888b1374d4cc69154f006ba07b5840ec61ddc1a1af01d6c54
|
||||
590b852e966a497e33d129b58bc07d1205fe8fea9b158334cd8a3c7f539332ef9702bba4a37bd0be83eb5f04a218cef87645251899f099695d01c1eb8ea6e2fd
|
||||
HEAD_REF
|
||||
master)
|
||||
|
||||
|
|
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 156 KiB |
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 132 KiB |
|
@ -79,7 +79,7 @@
|
|||
var count = 3;
|
||||
var handControllerRefURL = "https://docs.vircadia.dev/explore/get-started/vr-controls.html#vr-controls";
|
||||
var keyboardRefURL = "https://docs.vircadia.dev/explore/get-started/desktop.html#movement-controls";
|
||||
var gamepadRefURL = "https://docs.vircadia.dev/explore/get-started/vr-controls.html#gamepad";
|
||||
var gamepadRefURL = "https://docs.vircadia.dev/explore/get-started/vr-controls.html#gamepad";
|
||||
|
||||
function showKbm() {
|
||||
document.getElementById("main_image").setAttribute("src", "img/tablet-help-keyboard.jpg");
|
||||
|
|
BIN
interface/resources/images/about-vircadia.png
Normal file
After Width: | Height: | Size: 7.6 KiB |
23
interface/resources/images/vircadia-logo.svg
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="1880" height="320" viewBox="0 0 1880.00 320.00" enable-background="new 0 0 1880.00 320.00" xml:space="preserve">
|
||||
<radialGradient id="SVGID_Fill1_" cx="-571.529" cy="-604.157" r="3176.39" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.451163" stop-color="#01BDFF" stop-opacity="1"/>
|
||||
<stop offset="0.827907" stop-color="#8C1AFF" stop-opacity="1"/>
|
||||
</radialGradient>
|
||||
<path fill="url(#SVGID_Fill1_)" stroke-width="0.2" stroke-linejoin="round" d="M 28.723,5.00146L 1706.72,5.00146C 1726.61,5.00146 1750.24,21.1192 1759.51,41.0015L 1870.49,278.999C 1879.76,298.881 1871.16,314.999 1851.28,314.999L 173.277,314.999C 153.395,314.999 129.761,298.881 120.49,278.999L 9.51012,41.0015C 0.238872,21.1192 8.84079,5.00146 28.723,5.00146 Z "/>
|
||||
<path fill="#36393F" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 678.939,23.013L 1697.3,23.0124C 1723.4,22.9324 1739.32,35.2514 1749.85,58.4911L 1844.51,261.508C 1860.58,289.515 1859.52,298.385 1825.06,296.987L 677.061,296.987"/>
|
||||
<g>
|
||||
<path fill="#FAFAFA" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 699.7,159.966C 699.7,145.281 702.032,131.093 706.698,117.404C 711.363,103.714 718.063,91.58 726.796,81.0016C 735.529,70.4231 745.996,61.9604 758.199,55.6133C 770.401,49.2663 784.039,46.0927 799.112,46.0927L 906.779,46.0927L 906.779,93.8823L 800.189,93.8823C 794.686,93.8823 789.003,95.7491 783.142,99.4827C 777.28,103.216 771.896,108.132 766.992,114.23C 762.087,120.328 758.019,127.36 754.789,135.325C 751.559,143.29 749.944,151.379 749.944,159.593C 749.944,167.807 751.499,175.896 754.61,183.861C 757.72,191.826 761.788,198.92 766.812,205.142C 771.837,211.365 777.459,216.343 783.68,220.077C 789.901,223.81 796.122,225.677 802.342,225.677L 906.779,225.677L 906.779,273.467L 798.036,273.467C 782.244,273.467 768.248,270.044 756.045,263.199C 743.843,256.354 733.555,247.456 725.181,236.504C 716.807,225.553 710.466,213.356 706.16,199.915C 701.853,186.475 699.7,173.158 699.7,159.966 Z "/>
|
||||
<rect x="1464.81" y="46.0927" fill="#FAFAFA" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" width="55.9871" height="227.374"/>
|
||||
</g>
|
||||
<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 493.02,97.6159L 493.02,139.602L 493,139.602L 493,199.602L 493.02,199.602L 493.02,273.467L 439.123,273.467L 439.123,46.0928L 566.737,46.0928C 578.327,46.0928 588.237,48.2707 596.467,52.6265C 604.696,56.9823 611.419,62.7071 616.635,69.8009C 621.851,76.8946 625.618,84.9218 627.936,93.8824C 630.254,102.843 631.413,111.928 631.413,121.137C 631.413,128.604 630.428,136.009 628.457,143.352C 626.487,150.695 623.763,157.54 620.286,163.887C 616.809,170.234 612.578,175.896 607.594,180.874C 602.61,185.852 597.104,189.71 591.077,192.448L 654.363,273.467L 588.295,273.467L 521,188.288L 521,149.512L 566.737,149.512C 568.359,149.512 569.982,148.517 571.605,146.526C 573.227,144.534 574.618,142.17 575.777,139.432C 576.937,136.694 577.922,133.894 578.733,131.031C 579.544,128.169 579.95,125.991 579.95,124.498C 579.95,122.257 579.718,119.644 579.255,116.657C 578.791,113.67 578.038,110.746 576.995,107.883C 575.951,105.021 574.56,102.594 572.822,100.603C 571.083,98.6115 569.055,97.6159 566.737,97.6159L 493.02,97.6159 Z "/>
|
||||
<g>
|
||||
<rect x="340.465" y="46.0927" fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" width="54.9846" height="227.374"/>
|
||||
</g>
|
||||
<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 55.5166,46.093L 161.961,273.467L 214.479,273.467L 216.626,269.689L 115.436,46.093L 55.5166,46.093 Z "/>
|
||||
<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 231.92,235.709L 319.513,46.0926L 259.594,46.0926L 202.957,171.669L 231.92,235.709 Z "/>
|
||||
<path fill="#FAFAFA" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 987.874,273.467L 926.863,273.467L 1034.17,46.0927L 1088,46.0927L 1195.67,273.467L 1134.66,273.467L 1106.67,212.983L 1047.45,212.983L 1044.83,212.918L 1065.94,164.447L 1087.65,164.447L 1060.73,106.576"/>
|
||||
<path fill="#FAFAFA" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 1605.13,273.467L 1544.12,273.467L 1651.43,46.0927L 1705.26,46.0927L 1812.93,273.467L 1751.91,273.467L 1723.92,212.983L 1664.7,212.983L 1662,212.918L 1683.24,164.447L 1704.9,164.447L 1677.98,106.576"/>
|
||||
<path fill="#FAFAFA" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 1438.98,159.966C 1438.98,173.158 1436.83,186.475 1432.52,199.915C 1428.22,213.356 1421.88,225.553 1413.5,236.504C 1405.13,247.456 1394.84,256.354 1382.64,263.199C 1370.43,270.044 1356.44,273.467 1340.65,273.467L 1217.91,273.467L 1217.91,121.9L 1272.1,121.9L 1272.1,225.677L 1335.98,225.677C 1342.2,225.677 1348.42,223.81 1354.64,220.077C 1360.86,216.343 1366.49,211.365 1371.51,205.142C 1376.54,198.92 1380.6,191.826 1383.71,183.861C 1386.82,175.896 1388.38,167.807 1388.38,159.593C 1388.38,150.632 1386.58,142.17 1383,134.205C 1379.41,126.24 1375.04,119.271 1369.9,113.297C 1364.75,107.323 1359.31,102.594 1353.57,99.1094C 1347.82,95.6247 1342.8,93.8824 1338.49,93.8824L 1272.1,93.8824L 1272.1,93.9001L 1217.91,93.9001L 1217.91,46.0927L 1332.03,46.0927C 1350.46,46.0927 1366.43,49.0796 1379.95,55.0533C 1393.46,61.0269 1404.59,69.1163 1413.32,79.3215C 1422.06,89.5265 1428.52,101.536 1432.7,115.35C 1436.89,129.165 1438.98,144.037 1438.98,159.966 Z "/>
|
||||
</svg>
|
|
@ -85,7 +85,9 @@ FocusScope {
|
|||
Image {
|
||||
id: banner
|
||||
anchors.centerIn: parent
|
||||
source: "../images/project-athena-banner-color2.svg"
|
||||
sourceSize.width: 500
|
||||
sourceSize.height: 91
|
||||
source: "../images/vircadia-logo.svg"
|
||||
horizontalAlignment: Image.AlignHCenter
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ Item {
|
|||
clip: true
|
||||
height: root.height
|
||||
width: root.width
|
||||
readonly property string termsContainerText: qsTr("By signing up, you agree to Project Athena's Terms of Service")
|
||||
readonly property string termsContainerText: qsTr("By signing up, you agree to Vircadia's Terms of Service")
|
||||
property int textFieldHeight: 31
|
||||
property string fontFamily: "Raleway"
|
||||
property int fontSize: 15
|
||||
|
|
|
@ -19,7 +19,7 @@ import TabletScriptingInterface 1.0
|
|||
Item {
|
||||
id: usernameCollisionBody
|
||||
clip: true
|
||||
readonly property string termsContainerText: qsTr("By creating this user profile, you agree to Project Athena's Terms of Service")
|
||||
readonly property string termsContainerText: qsTr("By creating this user profile, you agree to Vircadia's Terms of Service")
|
||||
width: root.width
|
||||
height: root.height
|
||||
readonly property string fontFamily: "Raleway"
|
||||
|
|
|
@ -81,7 +81,9 @@ FocusScope {
|
|||
Image {
|
||||
id: banner
|
||||
anchors.centerIn: parent
|
||||
source: "../images/high-fidelity-banner.svg"
|
||||
sourceSize.width: 500
|
||||
sourceSize.height: 91
|
||||
source: "../images/vircadia-logo.svg"
|
||||
horizontalAlignment: Image.AlignHCenter
|
||||
}
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@ SpinBox {
|
|||
id: spinboxText
|
||||
z: 2
|
||||
color: isLightColorScheme
|
||||
? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.faintGray)
|
||||
? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.baseGrayHighlight)
|
||||
: (spinBox.activeFocus ? hifi.colors.white : hifi.colors.lightGrayText)
|
||||
selectedTextColor: hifi.colors.black
|
||||
selectionColor: hifi.colors.primaryHighlight
|
||||
|
@ -130,7 +130,7 @@ SpinBox {
|
|||
}
|
||||
|
||||
color: isLightColorScheme
|
||||
? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.faintGray)
|
||||
? (spinBox.activeFocus ? hifi.colors.black : hifi.colors.baseGrayHighlight)
|
||||
: (spinBox.activeFocus ? hifi.colors.white : hifi.colors.lightGrayText)
|
||||
text: suffix
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
|
|
@ -129,7 +129,9 @@ FocusScope {
|
|||
Image {
|
||||
id: banner
|
||||
anchors.centerIn: parent
|
||||
source: "../../images/project-athena-banner-color2.svg"
|
||||
sourceSize.width: 400
|
||||
sourceSize.height: 73
|
||||
source: "../../images/vircadia-logo.svg"
|
||||
horizontalAlignment: Image.AlignHCenter
|
||||
}
|
||||
}
|
||||
|
|
|
@ -403,7 +403,6 @@ Rectangle {
|
|||
|
||||
Vector3 {
|
||||
id: positionVector
|
||||
backgroundColor: "lightgray"
|
||||
enabled: getCurrentWearable() !== null
|
||||
|
||||
function set(localPosition) {
|
||||
|
@ -463,7 +462,6 @@ Rectangle {
|
|||
|
||||
Vector3 {
|
||||
id: rotationVector
|
||||
backgroundColor: "lightgray"
|
||||
enabled: getCurrentWearable() !== null
|
||||
|
||||
function set(localRotationAngles) {
|
||||
|
@ -550,7 +548,7 @@ Rectangle {
|
|||
realFrom: 0.1
|
||||
realTo: 3.0
|
||||
realValue: 1.0
|
||||
backgroundColor: "lightgray"
|
||||
backgroundColor: activeFocus ? "white" : "lightgray"
|
||||
width: positionVector.spinboxWidth
|
||||
colorScheme: hifi.colorSchemes.light
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ Row {
|
|||
id: xspinner
|
||||
width: parent.spinboxWidth
|
||||
labelInside: "X:"
|
||||
backgroundColor: parent.backgroundColor
|
||||
backgroundColor: activeFocus ? "white" : "lightgray"
|
||||
colorLabelInside: hifi.colors.redHighlight
|
||||
colorScheme: hifi.colorSchemes.light
|
||||
decimals: root.decimals;
|
||||
|
@ -43,7 +43,7 @@ Row {
|
|||
id: yspinner
|
||||
width: parent.spinboxWidth
|
||||
labelInside: "Y:"
|
||||
backgroundColor: parent.backgroundColor
|
||||
backgroundColor: activeFocus ? "white" : "lightgray"
|
||||
colorLabelInside: hifi.colors.greenHighlight
|
||||
colorScheme: hifi.colorSchemes.light
|
||||
decimals: root.decimals;
|
||||
|
@ -57,7 +57,7 @@ Row {
|
|||
id: zspinner
|
||||
width: parent.spinboxWidth
|
||||
labelInside: "Z:"
|
||||
backgroundColor: parent.backgroundColor
|
||||
backgroundColor: activeFocus ? "white" : "lightgray"
|
||||
colorLabelInside: hifi.colors.primaryHighlight
|
||||
colorScheme: hifi.colorSchemes.light
|
||||
decimals: root.decimals;
|
||||
|
|
|
@ -23,9 +23,9 @@ Rectangle {
|
|||
spacing: 5
|
||||
|
||||
Image {
|
||||
sourceSize.width: 295
|
||||
sourceSize.height: 75
|
||||
source: "../../../images/about-projectathena.png"
|
||||
width: 400; height: 73
|
||||
fillMode: Image.PreserveAspectFit
|
||||
source: "../../../images/vircadia-logo.svg"
|
||||
}
|
||||
Item { height: 30; width: 1 }
|
||||
Column {
|
||||
|
|
|
@ -3790,8 +3790,7 @@ void Application::setPreferredCursor(const QString& cursorName) {
|
|||
|
||||
if (_displayPlugin && _displayPlugin->isHmd()) {
|
||||
_preferredCursor.set(cursorName.isEmpty() ? DEFAULT_CURSOR_NAME : cursorName);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
_preferredCursor.set(cursorName.isEmpty() ? Cursor::Manager::getIconName(Cursor::Icon::SYSTEM) : cursorName);
|
||||
}
|
||||
|
||||
|
|
|
@ -614,13 +614,13 @@ Menu::Menu() {
|
|||
addCheckableActionToQMenuAndActionHash(networkMenu,
|
||||
MenuOption::DisableActivityLogger,
|
||||
0,
|
||||
false,
|
||||
true,
|
||||
&UserActivityLogger::getInstance(),
|
||||
SLOT(disable(bool)));
|
||||
addCheckableActionToQMenuAndActionHash(networkMenu,
|
||||
MenuOption::DisableCrashLogger,
|
||||
0,
|
||||
false,
|
||||
true,
|
||||
&UserActivityLogger::getInstance(),
|
||||
SLOT(crashMonitorDisable(bool)));
|
||||
addActionToQMenuAndActionHash(networkMenu, MenuOption::ShowDSConnectTable, 0,
|
||||
|
@ -796,13 +796,13 @@ Menu::Menu() {
|
|||
});
|
||||
helpMenu->addSeparator();
|
||||
|
||||
// Help > Athena Docs
|
||||
// Help > Vircadia Docs
|
||||
action = addActionToQMenuAndActionHash(helpMenu, "Online Documentation");
|
||||
connect(action, &QAction::triggered, qApp, [] {
|
||||
QDesktopServices::openUrl(QUrl("https://docs.vircadia.dev/"));
|
||||
});
|
||||
|
||||
// Help > Athena Forum
|
||||
// Help > Vircadia Forum
|
||||
/* action = addActionToQMenuAndActionHash(helpMenu, "Online Forums");
|
||||
connect(action, &QAction::triggered, qApp, [] {
|
||||
QDesktopServices::openUrl(QUrl("https://forums.highfidelity.com/"));
|
||||
|
|
|
@ -86,7 +86,7 @@ namespace MenuOption {
|
|||
const QString DeleteAvatarEntitiesBookmark = "Delete Avatar Entities Bookmark";
|
||||
const QString DeleteBookmark = "Delete Bookmark...";
|
||||
const QString DisableActivityLogger = "Disable Activity Logger";
|
||||
const QString DisableCrashLogger = "Disable Crash Logger";
|
||||
const QString DisableCrashLogger = "Disable Crash Reporter";
|
||||
const QString DisableEyelidAdjustment = "Disable Eyelid Adjustment";
|
||||
const QString DisableLightEntities = "Disable Light Entities";
|
||||
const QString DisplayCrashOptions = "Display Crash Options";
|
||||
|
|
|
@ -987,8 +987,8 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) {
|
|||
|
||||
// Deleting an entity has consequences for linked children: some can be deleted but others can't.
|
||||
// Local- and my-avatar-entities can be deleted immediately, but other-avatar-entities can't be deleted
|
||||
// by this context, and a domain-entity must rountrip through the entity-server for authorization.
|
||||
if (entity->isDomainEntity()) {
|
||||
// by this context, and a domain-entity must round trip through the entity-server for authorization.
|
||||
if (entity->isDomainEntity() && !_entityTree->isServerlessMode()) {
|
||||
getEntityPacketSender()->queueEraseEntityMessage(id);
|
||||
} else {
|
||||
entitiesToDeleteImmediately.push_back(entity);
|
||||
|
|
|
@ -59,7 +59,7 @@ private slots:
|
|||
private:
|
||||
UserActivityLogger();
|
||||
Setting::Handle<bool> _disabled { "UserActivityLoggerDisabled", true };
|
||||
Setting::Handle<bool> _crashMonitorDisabled { "CrashMonitorDisabled", false };
|
||||
Setting::Handle<bool> _crashMonitorDisabled { "CrashMonitorDisabled2", true };
|
||||
|
||||
QElapsedTimer _timer;
|
||||
};
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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" .
|
||||
|
|
|
@ -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 .
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
Source: athena-server
|
||||
Source: vircadia-server
|
||||
Section: comm
|
||||
Priority: optional
|
||||
Maintainer: Heather Anderson <heath@odysseus.anderson.name>
|
||||
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.
|
||||
|
|
|
@ -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)
|
||||
|
|
41
pkg-scripts/server-postrm
Executable file
|
@ -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:
|
||||
# * <postrm> `remove'
|
||||
# * <postrm> `purge'
|
||||
# * <old-postrm> `upgrade' <new-version>
|
||||
# * <new-postrm> `failed-upgrade' <old-version> <new-version>
|
||||
# * <postrm> `disappear' <overwriter-package> <overwriter-version>
|
||||
# * <new-postrm> `abort-install;
|
||||
# * <new-postrm> `abort-install' <old-version> <new-version>
|
||||
# * <new-postrm> `abort-upgrade' <old-version> <new-version>
|
||||
# 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
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
18
pkg-scripts/vircadia-assignment-client.service
Normal file
|
@ -0,0 +1,18 @@
|
|||
[Unit]
|
||||
Description=Assignment client service for Vircadia server
|
||||
After=network.target
|
||||
PartOf=vircadia-server.target
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
WorkingDirectory=/opt/vircadia
|
||||
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib"
|
||||
User=vircadia
|
||||
Group=vircadia
|
||||
#LimitCORE=infinity
|
||||
#ExecStart=/opt/vircadia/assignment-client -n 6
|
||||
ExecStart=/opt/vircadia/assignment-client --min 6 --max 20
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
20
pkg-scripts/vircadia-assignment-client@.service
Normal file
|
@ -0,0 +1,20 @@
|
|||
[Unit]
|
||||
Description=Assignment client service for Vircadia server
|
||||
After=network.target
|
||||
PartOf=vircadia-server@%i.target
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
WorkingDirectory=/opt/vircadia
|
||||
EnvironmentFile=/etc/opt/vircadia/%i.conf
|
||||
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i"
|
||||
PrivateTmp=true
|
||||
User=vircadia
|
||||
Group=vircadia
|
||||
#LimitCORE=infinity
|
||||
#ExecStart=/opt/vircadia/assignment-client -n 6
|
||||
ExecStart=/opt/vircadia/assignment-client --min 6 --max 20 --server-port $HIFI_DOMAIN_SERVER_PORT
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
17
pkg-scripts/vircadia-domain-server.service
Normal file
|
@ -0,0 +1,17 @@
|
|||
[Unit]
|
||||
Description=Domain Server service for Vircadia
|
||||
After=network.target
|
||||
PartOf=vircadia-server.target
|
||||
|
||||
[Service]
|
||||
Restart=on-failure
|
||||
|
||||
WorkingDirectory=/opt/vircadia
|
||||
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib"
|
||||
User=vircadia
|
||||
Group=vircadia
|
||||
#LimitCORE=infinity
|
||||
ExecStart=/opt/vircadia/domain-server
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
19
pkg-scripts/vircadia-domain-server@.service
Normal file
|
@ -0,0 +1,19 @@
|
|||
[Unit]
|
||||
Description=Domain Server service for Vircadia
|
||||
After=network.target
|
||||
PartOf=vircadia-server@%i.target
|
||||
|
||||
[Service]
|
||||
Restart=on-failure
|
||||
|
||||
WorkingDirectory=/opt/vircadia
|
||||
EnvironmentFile=/etc/opt/vircadia/%i.conf
|
||||
Environment="LD_LIBRARY_PATH=/opt/vircadia/lib" "HOME=/var/lib/vircadia/%i"
|
||||
PrivateTmp=true
|
||||
User=vircadia
|
||||
Group=vircadia
|
||||
#LimitCORE=infinity
|
||||
ExecStart=/opt/vircadia/domain-server
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -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
|
|
@ -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
|
168
pkg-scripts/vircadia-server.spec
Normal file
|
@ -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
|
11
pkg-scripts/vircadia-server.target
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Vircadia virtual domain
|
||||
Wants=vircadia-assignment-client.service
|
||||
Wants=vircadia-domain-server.service
|
||||
#Wants=vircadia-ice-server.service
|
||||
After=vircadia-assignment-client.service
|
||||
After=vircadia-domain-server.service
|
||||
#After=vircadia-ice-server.service
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
11
pkg-scripts/vircadia-server@.target
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Vircadia virtual domain
|
||||
Wants=vircadia-assignment-client@%i.service
|
||||
Wants=vircadia-domain-server@%i.service
|
||||
#Wants=vircadia-ice-server@%i.service
|
||||
After=vircadia-assignment-client@%i.service
|
||||
After=vircadia-domain-server@%i.service
|
||||
#After=vircadia-ice-server@%i.service
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -73,6 +73,9 @@
|
|||
<body onload="retrieveAddressList()">
|
||||
|
||||
<h3>Explore</h3>
|
||||
<button class="myButton" onclick="navigateBack()">< Back</button>
|
||||
<button class="myButton" onclick="navigateHome()">Home</button>
|
||||
<button class="myButton" onclick="navigateForward()">Forward ></button>
|
||||
|
||||
<input type="text" id="domainAddressInput" placeholder="Type domain address here">
|
||||
|
||||
|
@ -85,16 +88,37 @@
|
|||
<script>
|
||||
|
||||
function myDomainAddressInputGoTo() {
|
||||
var hifiUrl = document.getElementById("domainAddressInput").value;
|
||||
if (hifiUrl != "") {
|
||||
var vircadiaUrl = document.getElementById("domainAddressInput").value;
|
||||
if (vircadiaUrl !== "") {
|
||||
var readyEvent = {
|
||||
"action": "goToUrl",
|
||||
"visit": hifiUrl,
|
||||
"visit": vircadiaUrl,
|
||||
};
|
||||
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
|
||||
}
|
||||
}
|
||||
|
||||
function navigateBack() {
|
||||
var readyEvent = {
|
||||
"action": "navigateBack"
|
||||
}
|
||||
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
|
||||
}
|
||||
|
||||
function navigateHome() {
|
||||
var readyEvent = {
|
||||
"action": "navigateHome"
|
||||
}
|
||||
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
|
||||
}
|
||||
|
||||
function navigateForward() {
|
||||
var readyEvent = {
|
||||
"action": "navigateForward"
|
||||
}
|
||||
EventBridge.emitWebEvent(JSON.stringify(readyEvent));
|
||||
}
|
||||
|
||||
function navigateTo(url) {
|
||||
var readyEvent = {
|
||||
"action": "goToUrl",
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
|
||||
function onWebEventReceived(event) {
|
||||
messageData = JSON.parse(event);
|
||||
if (messageData.action == "requestAddressList") {
|
||||
if (messageData.action === "requestAddressList") {
|
||||
goToAddresses = Settings.getValue("goToDecentral", "");
|
||||
for (var i = 0; i < goToAddresses.length; i++) {
|
||||
|
||||
|
@ -80,14 +80,27 @@
|
|||
|
||||
tablet.emitScriptEvent(JSON.stringify(readyEvent));
|
||||
|
||||
} else if (messageData.action == "goToUrl") {
|
||||
} else if (messageData.action === "goToUrl") {
|
||||
Window.location = messageData.visit;
|
||||
} else if (messageData.action == "addLocation") {
|
||||
} else if (messageData.action === "navigateBack") {
|
||||
location.goBack();
|
||||
} else if (messageData.action === "navigateHome") {
|
||||
if (LocationBookmarks.getHomeLocationAddress()) {
|
||||
location.handleLookupString(LocationBookmarks.getHomeLocationAddress());
|
||||
} else {
|
||||
location.goToLocalSandbox();
|
||||
}
|
||||
} else if (messageData.action === "navigateForward") {
|
||||
location.goForward();
|
||||
} else if (messageData.action === "addLocation") {
|
||||
|
||||
var locationBoxUserData = {
|
||||
owner: messageData.owner,
|
||||
domainName: messageData.domainName,
|
||||
port: messageData.Port,
|
||||
ipAddress: null,
|
||||
avatarCountRadius: null,
|
||||
customPath: null,
|
||||
grabbableKey: {
|
||||
grabbable: false
|
||||
}
|
||||
|
@ -105,7 +118,7 @@
|
|||
collisionless: true,
|
||||
grabbable: false
|
||||
});
|
||||
} else if (messageData.action == "retrievePortInformation") {
|
||||
} else if (messageData.action === "retrievePortInformation") {
|
||||
var readyEvent = {
|
||||
"action": "retrievePortInformationResponse",
|
||||
"goToAddresses": goToAddresses
|
||||
|
|
|
@ -23,7 +23,6 @@ var DEFAULT_SCRIPTS_COMBINED = [
|
|||
"system/pal.js", // "system/mod.js", // older UX, if you prefer
|
||||
"system/avatarapp.js",
|
||||
"system/makeUserConnection.js",
|
||||
"system/tablet-goto.js",
|
||||
"system/marketplaces/marketplaces.js",
|
||||
"system/notifications.js",
|
||||
"system/commerce/wallet.js",
|
||||
|
@ -41,7 +40,7 @@ var DEFAULT_SCRIPTS_SEPARATE = [
|
|||
"system/controllers/controllerScripts.js",
|
||||
"communityModules/notificationCore/notificationCore.js",
|
||||
"simplifiedUI/ui/simplifiedNametag/simplifiedNametag.js",
|
||||
{"stable": "system/more/app-more.js", "beta": "https://kasenvr.github.io/community-apps/more/app-more.js"},
|
||||
{"stable": "system/more/app-more.js", "beta": "https://cdn.vircadia.com/community-apps/more/app-more.js"},
|
||||
{"stable": "communityScripts/explore/explore.js", "beta": "https://metaverse.vircadia.com/interim/d-goto/app/explore.js"},
|
||||
{"stable": "communityModules/chat/FloofChat.js", "beta": "https://content.fluffy.ws/scripts/chat/FloofChat.js"}
|
||||
//"system/chat.js"
|
||||
|
|
|
@ -123,10 +123,11 @@ function orientationOf(vector) {
|
|||
}
|
||||
|
||||
function handleRadialMode(dx, dy) {
|
||||
var MIN_INSPECT_RADIUS = 0.1;
|
||||
azimuth += dx / AZIMUTH_RATE;
|
||||
radius += radius * dy * RADIUS_RATE;
|
||||
if (radius < 1) {
|
||||
radius = 1;
|
||||
if (radius < MIN_INSPECT_RADIUS) {
|
||||
radius = MIN_INSPECT_RADIUS;
|
||||
}
|
||||
|
||||
vector = {
|
||||
|
|
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 136 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 930 B |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 937 B |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 883 B |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 836 B |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 836 B |
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 798 B |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 199 KiB |