forked from jamulussoftware/jamulus
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* This will also build on arm runners * Switches build directory to more standard location on Apple silicon macs * Updates to use virtual environment for python as per https://docs.brew.sh/Python-for-Formula-Authors#python-declarations-for-applications
- Loading branch information
0 parents
commit fad6471
Showing
998 changed files
with
215,094 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
--- | ||
# Style for Clang-Format version 10 | ||
# https://releases.llvm.org/10.0.0/tools/clang/docs/ClangFormatStyleOptions.html | ||
BasedOnStyle: LLVM | ||
AccessModifierOffset: -4 | ||
AlignConsecutiveAssignments: true | ||
AlignConsecutiveDeclarations: true | ||
AlignConsecutiveMacros: true | ||
# Alignment of Consecutive Assignments/Declarations/Macros can be changed to `AcrossEmptyLinesAndComments` with Clang-Format version 12 | ||
#AlignConsecutiveAssignments: AcrossEmptyLinesAndComments | ||
#AlignConsecutiveDeclarations: AcrossEmptyLinesAndComments | ||
#AlignConsecutiveMacros: AcrossEmptyLinesAndComments | ||
AlignEscapedNewlines: DontAlign | ||
AllowAllArgumentsOnNextLine: false | ||
AllowAllConstructorInitializersOnNextLine: false | ||
AllowAllParametersOfDeclarationOnNextLine: false | ||
AllowShortBlocksOnASingleLine: Empty | ||
AlwaysBreakTemplateDeclarations: Yes | ||
BinPackArguments: false | ||
BinPackParameters: false | ||
BraceWrapping: | ||
AfterCaseLabel: true | ||
AfterClass: true | ||
AfterControlStatement: Always | ||
AfterEnum: true | ||
AfterFunction: true | ||
AfterNamespace: true | ||
AfterObjCDeclaration: true | ||
AfterStruct: true | ||
AfterUnion: true | ||
AfterExternBlock: true | ||
BeforeCatch: true | ||
BeforeElse: true | ||
IndentBraces: false | ||
SplitEmptyFunction: false | ||
SplitEmptyRecord: false | ||
SplitEmptyNamespace: false | ||
BreakBeforeBraces: Custom | ||
BreakConstructorInitializers: AfterColon | ||
ColumnLimit: 150 | ||
ConstructorInitializerAllOnOneLineOrOnePerLine: true | ||
IndentPPDirectives: AfterHash | ||
IndentWidth: 4 | ||
PenaltyBreakString: 1000 | ||
PenaltyReturnTypeOnItsOwnLine: 1060 | ||
PointerAlignment: Left | ||
SortIncludes: false | ||
SpaceAfterCStyleCast: true | ||
SpaceAfterTemplateKeyword: false | ||
SpaceBeforeParens: NonEmptyParentheses | ||
SpacesInConditionalStatement: true | ||
SpacesInParentheses: true | ||
ObjCBlockIndentWidth: 4 | ||
ObjCSpaceAfterProperty: true | ||
ObjCSpaceBeforeProtocolList: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Exclude third party code from clang-format checks. | ||
# | ||
# This file is used by the clang-format-lint-action on Github. | ||
# When updating this list, remember to update Jamulus.pro's CLANG_SOURCES | ||
# as well. | ||
./libs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# See https://editorconfig.org/ | ||
# This file is used by editors, but also by automation such as `shfmt`. | ||
|
||
# This is the top-most .editorconfig file | ||
root = true | ||
|
||
[*] | ||
end_of_line = lf | ||
insert_final_newline = true | ||
trim_trailing_whitespace = true | ||
|
||
[*.{cpp,h,mm,nsi,pro,ps1,py,sh}] | ||
indent_style = space | ||
indent_size = 4 | ||
|
||
[*.{yaml,yml}] | ||
indent_style = space | ||
indent_size = 2 | ||
|
||
[*.sh] | ||
shell_variant = bash | ||
binary_next_line = false | ||
switch_case_indent = true | ||
space_redirects = true | ||
keep_padding = true | ||
function_next_line = false | ||
|
||
[libs/**] | ||
ignore = true | ||
|
||
[*.py] | ||
# This is the widest that is still PEP-8 compliant | ||
max_line_length = 99 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- | ||
name: Bug report | ||
about: Create a report to help us improve | ||
title: '' | ||
labels: bug | ||
assignees: '' | ||
--- | ||
|
||
**Describe the bug** | ||
|
||
<!-- A clear and concise description of what the bug is. --> | ||
|
||
**To Reproduce** | ||
|
||
<!-- Steps to reproduce the behavior: --> | ||
|
||
**Expected behavior** | ||
|
||
<!-- A clear and concise description of what you expected to happen. --> | ||
|
||
**Screenshots** | ||
|
||
<!-- If applicable, add screenshots to help explain your problem. --> | ||
|
||
**Operating system** | ||
|
||
<!-- Add the operating system you are running, e.g. Windows 10 Version 20H2, macOS 10.15.5, Ubuntu Linux 20.10. Also add where you got Jamulus from, e.g. if you downloaded it from the internet, if you got it from your Linux distribution or if you built from source. --> | ||
|
||
**Version of Jamulus** | ||
|
||
<!-- Get this from the Help > About menu or from the `Jamulus --version` command line --> | ||
|
||
**Additional context** | ||
|
||
<!-- Add any other context about the problem here. --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
contact_links: | ||
- name: Support Request or Question | ||
url: https://github.com/jamulussoftware/jamulus/discussions/new | ||
about: Please ask questions by opening a new Discussion. | ||
|
||
- name: Idea/Feature Request | ||
url: https://github.com/jamulussoftware/jamulus/discussions/new | ||
about: Please open a Discussion if you have ideas for new features or functions. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
--- | ||
name: Specified Feature | ||
about: Agreed specification for a feature or enhancement | ||
title: '' | ||
labels: 'feature request' | ||
assignees: '' | ||
--- | ||
|
||
**What is the current behaviour and why should it be changed?** | ||
|
||
<!-- Please give a precise description of the status quo and why this is not optimal. --> | ||
|
||
**Describe possible approaches** | ||
|
||
<!-- | ||
List possible approaches with pros and cons, reference any relevant discussion threads if possible, and consider tagging the main participants. | ||
Please note the contribution guidelines (https://github.com/jamulussoftware/jamulus/blob/main/CONTRIBUTING.md), especially the part about "keeping it simple and stupid". | ||
--> | ||
|
||
<!-- Describe the solution you'd like --> | ||
|
||
**Has this feature been discussed and generally agreed?** | ||
|
||
<!-- Don't worry about requesting something that hasn't been discussed - we'll just move it to Discussion if we think it's unclear. But ideally, issues should have an agreed, clear specification such that anyone could action it without much help. --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Scripts for building Jamulus via GitHub Actions | ||
|
||
The scripts in this folder are used by the Github autobuild actions in .github/workflows/autobuild.yml. | ||
They are responsible for setting up the Github environment, building the binaries and passing the resulting artifacts back to the workflow. | ||
|
||
The scripts may work outside of Github, but haven't been designed or tested for that use case. | ||
Some of the scripts modify global system settings, install software or create files in directories which are usually managed by package managers. | ||
In short: They should probably only used in throw-away environments. | ||
|
||
See the various platform-specific build scripts in their own folders for standalone builds (e.g. windows/deploy_windows.ps1). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
#!/bin/bash | ||
############################################################################## | ||
# Copyright (c) 2022-2024 | ||
# | ||
# Author(s): | ||
# Christian Hoffmann | ||
# The Jamulus Development Team | ||
# | ||
############################################################################## | ||
# | ||
# This program is free software; you can redistribute it and/or modify it under | ||
# the terms of the GNU General Public License as published by the Free Software | ||
# Foundation; either version 2 of the License, or (at your option) any later | ||
# version. | ||
# | ||
# This program is distributed in the hope that it will be useful, but WITHOUT | ||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | ||
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | ||
# details. | ||
# | ||
# You should have received a copy of the GNU General Public License along with | ||
# this program; if not, write to the Free Software Foundation, Inc., | ||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA | ||
# | ||
############################################################################## | ||
|
||
set -eu | ||
|
||
# Some of the following version pinnings are semi-automatically checked for | ||
# updates. Update .github/workflows/bump-dependencies.yaml when renaming those: | ||
COMMANDLINETOOLS_VERSION=6858069 | ||
ANDROID_NDK_VERSION=r21d | ||
ANDROID_PLATFORM=android-30 | ||
ANDROID_BUILD_TOOLS=30.0.2 | ||
AQTINSTALL_VERSION=3.1.15 | ||
QT_VERSION=5.15.2 | ||
|
||
# Only variables which are really needed by sub-commands are exported. | ||
# Definitions have to stay in a specific order due to dependencies. | ||
QT_BASEDIR="/opt/Qt" | ||
ANDROID_BASEDIR="/opt/android" | ||
BUILD_DIR=build | ||
export ANDROID_SDK_ROOT="${ANDROID_BASEDIR}/android-sdk" | ||
COMMANDLINETOOLS_DIR="${ANDROID_SDK_ROOT}"/cmdline-tools/latest/ | ||
export ANDROID_NDK_ROOT="${ANDROID_BASEDIR}/android-ndk" | ||
ANDROID_NDK_HOST="linux-x86_64" | ||
ANDROID_SDKMANAGER="${COMMANDLINETOOLS_DIR}/bin/sdkmanager" | ||
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/" | ||
export PATH="${PATH}:${ANDROID_SDK_ROOT}/tools" | ||
export PATH="${PATH}:${ANDROID_SDK_ROOT}/platform-tools" | ||
|
||
if [[ ! ${JAMULUS_BUILD_VERSION:-} =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then | ||
echo "Environment variable JAMULUS_BUILD_VERSION has to be set to a valid version string" | ||
exit 1 | ||
fi | ||
|
||
setup_ubuntu_dependencies() { | ||
export DEBIAN_FRONTEND="noninteractive" | ||
|
||
sudo apt-get -qq update | ||
sudo apt-get -qq --no-install-recommends -y install build-essential zip unzip bzip2 p7zip-full curl chrpath openjdk-8-jdk-headless | ||
} | ||
|
||
setup_android_sdk() { | ||
mkdir -p "${ANDROID_BASEDIR}" | ||
|
||
if [[ -d "${COMMANDLINETOOLS_DIR}" ]]; then | ||
echo "Using commandlinetools installation from previous run (actions/cache)" | ||
else | ||
mkdir -p "${COMMANDLINETOOLS_DIR}" | ||
curl -s -o downloadfile "https://dl.google.com/android/repository/commandlinetools-linux-${COMMANDLINETOOLS_VERSION}_latest.zip" | ||
unzip -q downloadfile | ||
mv cmdline-tools/* "${COMMANDLINETOOLS_DIR}" | ||
fi | ||
|
||
yes | "${ANDROID_SDKMANAGER}" --licenses | ||
"${ANDROID_SDKMANAGER}" --update | ||
"${ANDROID_SDKMANAGER}" "platforms;${ANDROID_PLATFORM}" | ||
"${ANDROID_SDKMANAGER}" "build-tools;${ANDROID_BUILD_TOOLS}" | ||
} | ||
|
||
setup_android_ndk() { | ||
mkdir -p "${ANDROID_BASEDIR}" | ||
if [[ -d "${ANDROID_NDK_ROOT}" ]]; then | ||
echo "Using NDK installation from previous run (actions/cache)" | ||
else | ||
curl -s -o downloadfile "https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip" | ||
unzip -q downloadfile | ||
mv "android-ndk-${ANDROID_NDK_VERSION}" "${ANDROID_NDK_ROOT}" | ||
fi | ||
} | ||
|
||
setup_qt() { | ||
if [[ -d "${QT_BASEDIR}" ]]; then | ||
echo "Using Qt installation from previous run (actions/cache)" | ||
else | ||
echo "Installing Qt..." | ||
python3 -m pip install "aqtinstall==${AQTINSTALL_VERSION}" | ||
local qtmultimedia=() | ||
if [[ ! "${QT_VERSION}" =~ 5\..* ]]; then | ||
# From Qt6 onwards, qtmultimedia is a module and cannot be installed | ||
# as an archive anymore. | ||
qtmultimedia=("--modules") | ||
fi | ||
qtmultimedia+=("qtmultimedia") | ||
|
||
python3 -m aqt install-qt --outputdir "${QT_BASEDIR}" linux android "${QT_VERSION}" \ | ||
--archives qtbase qttools qttranslations qtandroidextras \ | ||
"${qtmultimedia[@]}" | ||
# Delete libraries, which we don't use, but which bloat the resulting package and might introduce unwanted dependencies. | ||
find "${QT_BASEDIR}" -name 'libQt5*Quick*.so' -delete | ||
rm -r "${QT_BASEDIR}/${QT_VERSION}/android/qml/" | ||
fi | ||
} | ||
|
||
build_app_as_apk() { | ||
local QT_DIR="${QT_BASEDIR}/${QT_VERSION}/android" | ||
local MAKE="${ANDROID_NDK_ROOT}/prebuilt/${ANDROID_NDK_HOST}/bin/make" | ||
|
||
"${QT_DIR}/bin/qmake" -spec android-clang | ||
"${MAKE}" -j "$(nproc)" | ||
"${MAKE}" INSTALL_ROOT="${BUILD_DIR}" -f Makefile install | ||
"${QT_DIR}"/bin/androiddeployqt --input android-Jamulus-deployment-settings.json --output "${BUILD_DIR}" \ | ||
--android-platform "${ANDROID_PLATFORM}" --jdk "${JAVA_HOME}" --gradle | ||
} | ||
|
||
pass_artifact_to_job() { | ||
mkdir deploy | ||
local artifact="jamulus_${JAMULUS_BUILD_VERSION}_android.apk" | ||
echo "Moving ${BUILD_DIR}/build/outputs/apk/debug/build-debug.apk to deploy/${artifact}" | ||
mv "./${BUILD_DIR}/build/outputs/apk/debug/build-debug.apk" "./deploy/${artifact}" | ||
echo "artifact_1=${artifact}" >> "$GITHUB_OUTPUT" | ||
} | ||
|
||
case "${1:-}" in | ||
setup) | ||
setup_ubuntu_dependencies | ||
setup_android_ndk | ||
setup_android_sdk | ||
setup_qt | ||
;; | ||
build) | ||
build_app_as_apk | ||
;; | ||
get-artifacts) | ||
pass_artifact_to_job | ||
;; | ||
*) | ||
echo "Unknown stage '${1:-}'" | ||
exit 1 | ||
;; | ||
esac |
Oops, something went wrong.