Merge branch 'master' into dev/webrtc-datachannel

This commit is contained in:
David Rowe 2021-06-05 14:21:29 +12:00
commit 4681475269
17 changed files with 183 additions and 153 deletions

View file

@ -188,6 +188,16 @@ jobs:
done
}
retry cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA
# As of 05/17/21 GitHub Virtual Environments changed their "Ubuntu 18.04.5 LTS" image to include two versions of CMake for Android
# https://github.com/actions/virtual-environments/blob/ubuntu18/20210517.1/images/linux/Ubuntu1804-README.md
# Removing 3.18.1 version of CMake as its not compatible with our Android build.
# It will fall back to 3.10.2 which is already installed
- name: Nuke CMake 3.18.1-g262b901
if: matrix.build_type == 'android'
shell: bash
working-directory: ${{runner.workspace}}/vircadia
run: |
/usr/local/lib/android/sdk/tools/bin/sdkmanager --uninstall 'cmake;3.18.1'
- name: Build for Android + Quest
if: matrix.build_type == 'android'
shell: bash

43
.grenrc.js Normal file
View file

@ -0,0 +1,43 @@
//
// .grenrc.js
//
// Created by Kalila L. on May 25, 2021
// Copyright 2021 Vircadia contributors.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
// This configuration is for generating a changelog with gren for a GitHub repository.
// https://github.com/github-tools/github-release-notes
//
// gren changelog -G
//
module.exports = {
"dataSource": "prs",
"prefix": "",
"ignoreLabels": [
"enhancement",
"bugfix",
"CR Approved",
"QA Approved",
"allow-build-upload",
"bug",
"confirmed",
"do not merge",
"duplicate",
"good first issue",
"help wanted",
"hifi migration",
"high risk",
"rebuild",
"merge right before snip"
],
"onlyMilestones": true,
"groupBy": {
"Enhancements": ["enhancement"],
"Bug Fixes": ["bugfix"],
"Docs": ["docs"]
},
"changelogFilename": "CHANGELOG.md"
}

View file

@ -1,6 +1,6 @@
# Creating an Installer
*Last Updated on March 4, 2021*
*Last Updated on May 25, 2021*
Follow the [build guide](BUILD.md) to figure out how to build Vircadia for your platform.
@ -85,19 +85,30 @@ For code signing to work, you will need to set the `HF_PFX_FILE` and `HF_PFX_PAS
1. **Cause:** The complete path (current directory + relative path) has to be < 260 characters to any of the relevant files.
1. **Solution:** Move your build and packaging folder as high up in the drive as possible to prevent an overage.
### OS X
### MacOS
1. [npm](<https://www.npmjs.com/get-npm>)
Install version 12.16.3 LTS
1. Perform a clean CMake.
1. Perform a Release build of ALL_BUILD
1. Perform a Release build of `packaged-server-console`
1. Ensure you have all the prerequisites fulfilled from the [MacOS Build Guide](BUILD_OSX.md).
2. Perform a clean CMake in your build folder. e.g.
```bash
BUILD_GLOBAL_SERVICES=STABLE USE_STABLE_GLOBAL_SERVICES=1 RELEASE_BUILD=PRODUCTION BUILD_NUMBER="Insert Build Identifier here e.g. short hash of your last Git commit" RELEASE_NAME="Insert Release Name Here" STABLE_BUILD=1 PRODUCTION_BUILD=1 RELEASE_NUMBER="Insert Release Version Here e.g. 1.1.0" RELEASE_TYPE=PRODUCTION cmake -DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" -DCLIENT_ONLY=1 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOSX_SDK=10.12 ..
```
3. Pick a method to build and package your release.
#### Option A: Use Xcode GUI
1. Perform a Release build of ALL_BUILD
2. Perform a Release build of `packaged-server-console`
This will add a folder to `build\server-console\` -
Sandbox-darwin-x64
1. Perform a Release build of `package`
Installer is now available in `build/_CPack_Packages/Darwin/DragNDrop
3. Perform a Release build of `package`
Installer is now available in `build/_CPack_Packages/Darwin/DragNDrop`
#### Option B: Use Terminal
1. Navigate to your build folder with your terminal.
2. `make -j4`, you can change the number to match the number of threads you would like to use.
3. `make package` to create the package.
### Linux
#### Server

View file

@ -1,6 +1,8 @@
<p align="center"><a href="https://vircadia.com/"><img src="interface/resources/images/vircadia-banner.svg" alt="Vircadia - Codename Athena" width="350"/></a></p>
<h3 align="center"><a href="https://vircadia.com/">Website</a> | <a href="https://discordapp.com/invite/Pvx2vke">Discord</a> | <a href="https://vircadia.com/download-vircadia/">Download</a></h3>
<p align="center"><a href="CONTRIBUTING.md"><img alt="GitHub contributors" src="https://img.shields.io/github/contributors/vircadia/vircadia"></a> <a href="https://github.com/vircadia/vircadia/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/vircadia/vircadia"></a> <a href="https://github.com/vircadia/vircadia/network"><img alt="GitHub forks" src="https://img.shields.io/github/forks/vircadia/vircadia"></a> <a href="https://www.apache.org/licenses/LICENSE-2.0"><img alt="Apache 2.0" src="https://img.shields.io/badge/license-Apache--2.0-%230A7BBB?style=flat"></a> <a href="https://discordapp.com/invite/Pvx2vke"><img alt="Discord" src="https://img.shields.io/discord/564926326025224212?style=flat"></a></p>
<h3 align="center">Build Status</h3>
<p align="center"><a href="https://github.com/vircadia/vircadia/actions/workflows/master_build.yml"><img alt="Master CI Build" src="https://github.com/vircadia/vircadia/actions/workflows/master_build.yml/badge.svg"></a></p>
### What is this?
@ -11,7 +13,7 @@ Vircadia™ is a 3D social software project seeking to incrementally bring about
* Full-body avatars
* FBX, glTF, and OBJ support
* JavaScript scripting engine
* 16km^3 world space in a server
* 16km³ world space in a server
* Fully self-hosted
* Apache 2.0
@ -64,7 +66,8 @@ Vircadia consists of many projects and codebases with its unifying structure's g
#### Child Projects
- [Vircadia Builder for Linux](https://github.com/vircadia/vircadia-builder/)
- [General Documentation](https://github.com/vircadia/vircadia-docs-sphinx/)
- [User Documentation](https://github.com/vircadia/vircadia-docs-sphinx/)
- [Developer Documentation](https://github.com/vircadia/vircadia-dev-docs/)
### Contribution

View file

@ -19,9 +19,9 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO google/draco
REF 1.3.3
SHA512 80ed5a623046822f5bb26b2454c8ee8cc93ffe9eb3012e8461cefdfc577b26d69a92ea0f0c5e14f5f48c1ef99f9a7263b01710df376792e74358ae14e49c3897
REPO vircadia/draco
REF 1.3.5-fixed
SHA512 68bb15de013093077946d431ab1f4080b84a66d45d20873f2c0dc44aa28034fb4ec1f6e24f9300fde563da53943b73d47163b9c6acf2667312128c50c6d075bd
HEAD_REF master
)

View file

@ -535,7 +535,7 @@ bool OculusMobileInputDevice::triggerHapticPulse(float strength, float duration,
return success;
}
/**jsdoc
/*@jsdoc
* <p>The <code>Controller.Hardware.OculusTouch</code> object has properties representing Oculus Rift. The property values are
* integer IDs, uniquely identifying each output. <em>Read-only.</em> These can be mapped to actions or functions or
* <code>Controller.Standard</code> items in a {@link RouteObject} mapping.</p>

View file

@ -36,8 +36,6 @@
#include <QtScript/QScriptValue>
#include <QtScript/QScriptValueIterator>
#include <QtScriptTools/QScriptEngineDebugger>
#include <shared/LocalFileAccessGate.h>
#include <shared/QtHelpers.h>
#include <shared/AbstractLoggerInterface.h>
@ -327,96 +325,6 @@ void ScriptEngine::disconnectNonEssentialSignals() {
}
}
void ScriptEngine::runDebuggable() {
static QMenuBar* menuBar { nullptr };
static QMenu* scriptDebugMenu { nullptr };
static size_t scriptMenuCount { 0 };
if (!scriptDebugMenu) {
for (auto window : qApp->topLevelWidgets()) {
auto mainWindow = qobject_cast<QMainWindow*>(window);
if (mainWindow) {
menuBar = mainWindow->menuBar();
break;
}
}
if (menuBar) {
scriptDebugMenu = menuBar->addMenu("Script Debug");
}
}
init();
_isRunning = true;
_debuggable = true;
_debugger = new QScriptEngineDebugger(this);
_debugger->attachTo(this);
QMenu* parentMenu = scriptDebugMenu;
QMenu* scriptMenu { nullptr };
if (parentMenu) {
++scriptMenuCount;
scriptMenu = parentMenu->addMenu(_fileNameString);
scriptMenu->addMenu(_debugger->createStandardMenu(qApp->activeWindow()));
} else {
qWarning() << "Unable to add script debug menu";
}
QScriptValue result = evaluate(_scriptContents, _fileNameString);
_lastUpdate = usecTimestampNow();
QTimer* timer = new QTimer(this);
connect(this, &ScriptEngine::finished, [this, timer, parentMenu, scriptMenu] {
if (scriptMenu) {
parentMenu->removeAction(scriptMenu->menuAction());
--scriptMenuCount;
if (0 == scriptMenuCount) {
menuBar->removeAction(scriptDebugMenu->menuAction());
scriptDebugMenu = nullptr;
}
}
disconnect(timer);
});
connect(timer, &QTimer::timeout, [this, timer] {
if (_isFinished) {
if (!_isRunning) {
return;
}
stopAllTimers(); // make sure all our timers are stopped if the script is ending
emit scriptEnding();
emit finished(_fileNameString, qSharedPointerCast<ScriptEngine>(sharedFromThis()));
_isRunning = false;
emit runningStateChanged();
emit doneRunning();
timer->deleteLater();
return;
}
qint64 now = usecTimestampNow();
// we check for 'now' in the past in case people set their clock back
if (_lastUpdate < now) {
float deltaTime = (float)(now - _lastUpdate) / (float)USECS_PER_SECOND;
if (!(_isFinished || _isStopping)) {
emit update(deltaTime);
}
}
_lastUpdate = now;
// only clear exceptions if we are not in the middle of evaluating
if (!isEvaluating() && hasUncaughtException()) {
qCWarning(scriptengine) << __FUNCTION__ << "---------- UNCAUGHT EXCEPTION --------";
qCWarning(scriptengine) << "runDebuggable" << uncaughtException().toString();
logException(__FUNCTION__);
clearExceptions();
}
});
timer->start(10);
}
void ScriptEngine::runInThread() {
Q_ASSERT_X(!_isThreaded, "ScriptEngine::runInThread()", "runInThread should not be called more than once");
@ -588,12 +496,6 @@ void ScriptEngine::loadURL(const QUrl& scriptURL, bool reload) {
_scriptContents = scriptContents;
{
static const QString DEBUG_FLAG("#debug");
if (QRegularExpression(DEBUG_FLAG).match(scriptContents).hasMatch()) {
_debuggable = true;
}
}
emit scriptLoaded(url);
}, reload, maxRetries);
}

View file

@ -50,8 +50,6 @@
#include "SettingHandle.h"
#include "Profile.h"
class QScriptEngineDebugger;
static const QString NO_SCRIPT("");
static const int SCRIPT_FPS = 60;
@ -167,8 +165,6 @@ public:
/// services before calling this.
void runInThread();
void runDebuggable();
/// run the script in the callers thread, exit when stop() is called.
void run();
@ -667,8 +663,6 @@ public:
// this is used by code in ScriptEngines.cpp during the "reload all" operation
bool isStopping() const { return _isStopping; }
bool isDebuggable() const { return _debuggable; }
void disconnectNonEssentialSignals();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -982,8 +976,6 @@ protected:
EntityScriptContentAvailableMap _contentAvailableQueue;
bool _isThreaded { false };
QScriptEngineDebugger* _debugger { nullptr };
bool _debuggable { false };
qint64 _lastUpdate;
QString _fileNameString;

View file

@ -26,7 +26,6 @@
#define __LOC__ __FILE__ "(" __STR1__(__LINE__) ") : Warning Msg: "
static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
static const bool HIFI_SCRIPT_DEBUGGABLES { true };
static const QString SETTINGS_KEY { "RunningScripts" };
static const QUrl DEFAULT_SCRIPTS_LOCATION { "file:///~//defaultScripts.js" };
@ -589,17 +588,7 @@ void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) {
// register our application services and set it off on its own thread
runScriptInitializers(scriptEngine);
// FIXME disabling 'shift key' debugging for now. If you start up the application with
// the shift key held down, it triggers a deadlock because of script interfaces running
// on the main thread
auto const wantDebug = scriptEngine->isDebuggable(); // || (qApp->queryKeyboardModifiers() & Qt::ShiftModifier);
if (HIFI_SCRIPT_DEBUGGABLES && wantDebug) {
scriptEngine->runDebuggable();
} else {
scriptEngine->runInThread();
}
scriptEngine->runInThread();
}
void ScriptEngines::onScriptFinished(const QString& rawScriptURL, ScriptEnginePointer engine) {

View file

@ -5,7 +5,7 @@
## Prerequisites
**Doxygen** &ge; 3.9.1 - https://www.doxygen.nl/
**Doxygen** &ge; 1.9.1 - https://www.doxygen.nl/
Make a `/build/doxygen/` directory.

View file

@ -2,16 +2,19 @@
"opts": {
"template": "hifi-jsdoc-template"
},
"deploy": {
"root": "https://apidocs.vircadia.dev/"
},
"docdash": {
"meta": {
"title": "",
"description": "",
"keyword": ""
"meta": {
"title": "Vircadia API Docs",
"description": "API documentation for Vircadia.",
"keyword": "api, docs, vircadia, documentation"
},
"search": [true],
"collapse": [true],
"typedefs": [false]
},
"search": [true],
"collapse": [true],
"typedefs": [false]
},
"templates": {
"default": {
"outputSourceFiles": false

View file

@ -380,8 +380,8 @@ function buildMemberNav(items, itemHeading, itemsSeen, linktoFn) {
itemsNav += "</ul>";
}
itemsNav += '</li>';
itemsSeen[item.longname] = true;
}

View file

@ -0,0 +1 @@
apidocs.vircadia.dev

View file

@ -3,7 +3,7 @@
<head>
<?js if (!env.conf.docdash) { env.conf.docdash = {};} ?>
<meta charset="utf-8">
<title><?js= title ?></title>
<title><?js= title ?> - Vircadia API Docs</title>
<script src="scripts/vue.min.js"></script>
<script src="scripts/vuetify.js"></script>
@ -13,6 +13,7 @@
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<?js= '<link rel="canonical" href="' + env.conf.deploy.root + title + '.html">' ?>
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
<link type="text/css" rel="stylesheet" href="styles/night.css">
@ -42,7 +43,7 @@
} catch (e) {
// nop
}
var defaultDarkDisabled = false;
var darkDisabled = isLocalStorageSupported ? JSON.parse(localStorage.getItem('darkDisabled')) : defaultDarkDisabled;
var nightSheet = document.querySelector('[href="styles/night.css"]');
@ -53,7 +54,7 @@
}
var defaultResponsiveDisabled = true;
var responsiveDisabled =
var responsiveDisabled =
isLocalStorageSupported ? JSON.parse(localStorage.getItem('responsiveDisabled')) : defaultResponsiveDisabled;
var responsiveSheet = document.querySelector('[href="styles/responsive.css"]');
if (responsiveDisabled === null) {
@ -78,7 +79,7 @@
<?js if (env.conf.docdash.search) { ?>
<input type="text" class="search-input" id="nav-search" placeholder="Search API Docs ..." />
<?js } ?>
<p><a href="https://docs.vircadia.dev">Looking for <strong>Vircadia</strong><br /> Documentation?</a></p>
<p><a href="https://docs.vircadia.com">Looking for <strong>Vircadia</strong><br /> Documentation?</a></p>
<v-btn @click="toggleNightMode" text dark>
<span>Toggle</span>
<v-icon style="margin-left: 5px;">mdi-theme-light-dark</v-icon>
@ -95,7 +96,7 @@
<h1 class="page-title"><?js= title ?></h1>
<?js= content ?>
<?js if (env.conf.docdash.disqus) { ?>
<div id="disqus_thread"></div>
<script>

View file

@ -1,5 +1,5 @@
{
"name": "hifiJSDoc",
"name": "vircadia-api-docs",
"dependencies": {
"axios": "^0.18.0",
"cheerio": "^1.0.0-rc.2",

View file

@ -2,10 +2,11 @@
// root.js
//
// Copyright 2016 High Fidelity, Inc.
// Copyright 2021 Vircaida contributors.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
// Root of High Fidelity generated java script documentation
// Root of Vircadia JSDoc generated documentation
//

View file

@ -0,0 +1,74 @@
diff --git a/qtbase/src/corelib/global/qendian.h b/qtbase/src/corelib/global/qendian.h
index 257efbbdbe..05f11d6f81 100644
--- a/qtbase/src/corelib/global/qendian.h
+++ b/qtbase/src/corelib/global/qendian.h
@@ -47,6 +47,7 @@
// include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems
#include <stdlib.h>
#include <string.h>
+#include <limits>
#ifdef min // MSVC
#undef min
diff --git a/qtbase/src/corelib/global/qfloat16.h b/qtbase/src/corelib/global/qfloat16.h
index c7a9c87af3..3287d7cbf2 100644
--- a/qtbase/src/corelib/global/qfloat16.h
+++ b/qtbase/src/corelib/global/qfloat16.h
@@ -44,6 +44,7 @@
#include <QtCore/qglobal.h>
#include <QtCore/qmetatype.h>
#include <string.h>
+#include <limits>
#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)
// All processors that support AVX2 do support F16C too. That doesn't mean
diff --git a/qtbase/src/corelib/text/qbytearraymatcher.h b/qtbase/src/corelib/text/qbytearraymatcher.h
index 0eedfc1d20..ee415e336d 100644
--- a/qtbase/src/corelib/text/qbytearraymatcher.h
+++ b/qtbase/src/corelib/text/qbytearraymatcher.h
@@ -41,6 +41,7 @@
#define QBYTEARRAYMATCHER_H
#include <QtCore/qbytearray.h>
+#include <limits>
QT_BEGIN_NAMESPACE
Submodule qtdeclarative contains modified content
diff --git a/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h b/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h
index ccf78f9880..cbb42c60d8 100644
--- a/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h
+++ b/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h
@@ -27,7 +27,7 @@
#pragma once
-#include <limits.h>
+#include <limits>
#include "YarrErrorCode.h"
namespace JSC { namespace Yarr {
diff --git a/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h b/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h
index a7e37d1964..3f13679a6a 100644
--- a/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h
+++ b/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h
@@ -49,6 +49,7 @@
#include <initializer_list>
#include <type_traits>
+#include <limits>
//
// W A R N I N G
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
index 11ae91cfeca..58c6db27bd6 100644
--- a/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
+++ b/qtwebengine/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.h
@@ -22,6 +22,7 @@
#include <unordered_map>
#include <vector>
+#include <limits>
#include "perfetto/ext/base/optional.h"
#include "perfetto/ext/base/paged_memory.h"