aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/CONTRIBUTING.md183
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md32
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md25
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md20
-rw-r--r--.github/SECURITY.md20
-rw-r--r--.github/workflows/android.yml52
-rw-r--r--.github/workflows/build.yml271
-rw-r--r--.github/workflows/cpp_lint.yml55
-rw-r--r--.github/workflows/lua.yml72
-rw-r--r--.github/workflows/macos.yml67
10 files changed, 797 insertions, 0 deletions
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 000000000..f60f584f9
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,183 @@
+# Contributing
+
+Contributions are welcome! Here's how you can help:
+
+- [Contributing code](#code)
+- [Reporting issues](#issues)
+- [Requesting features](#feature-requests)
+- [Translating](#translations)
+- [Donating](#donations)
+
+## Code
+
+1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository and
+ [clone](https://help.github.com/articles/cloning-a-repository/) your fork.
+
+2. Before you start coding, consider opening an
+ [issue at Github](https://github.com/minetest/minetest/issues) to discuss the
+ suitability and implementation of your intended contribution with the core
+ developers.
+
+ Any Pull Request that isn't a bug fix and isn't covered by
+ [the roadmap](../doc/direction.md) will be closed within a week unless it
+ receives a concept approval from a Core Developer. For this reason, it is
+ recommended that you open an issue for any such pull requests before doing
+ the work, to avoid disappointment.
+
+ You may also benefit from discussing on our IRC development channel
+ [#minetest-dev](http://www.minetest.net/irc/). Note that a proper IRC client
+ is required to speak on this channel.
+
+3. Start coding!
+ - Refer to the
+ [Lua API](https://github.com/minetest/minetest/blob/master/doc/lua_api.txt),
+ [Developer Wiki](http://dev.minetest.net/Main_Page) and other
+ [documentation](https://github.com/minetest/minetest/tree/master/doc).
+ - Follow the [C/C++](http://dev.minetest.net/Code_style_guidelines) and
+ [Lua](http://dev.minetest.net/Lua_code_style_guidelines) code style guidelines.
+ - Check your code works as expected and document any changes to the Lua API.
+
+4. Commit & [push](https://help.github.com/articles/pushing-to-a-remote/) your changes to a new branch (not `master`, one change per branch)
+ - Commit messages should:
+ - Use the present tense.
+ - Be descriptive. See the commit messages by core developers for examples.
+ - The first line should:
+ - Start with a capital letter.
+ - Be a compact summary of the commit.
+ - Preferably have less than 70 characters.
+ - Have no full stop at the end.
+ - The second line should be empty.
+ - The following lines should describe the commit, starting a new line for each point.
+
+5. Once you are happy with your changes, submit a pull request.
+ - Open the [pull-request form](https://github.com/minetest/minetest/pull/new/master).
+ - Add a description explaining what you've done (or if it's a
+ work-in-progress - what you need to do).
+ - Make sure to fill out the pull request template.
+
+### A pull-request is considered merge-able when:
+
+1. It follows [the roadmap](../doc/direction.md) in some way and fits the whole
+ picture of the project.
+2. It works.
+3. It follows the code style for
+ [C/C++](http://dev.minetest.net/Code_style_guidelines) or
+ [Lua](http://dev.minetest.net/Lua_code_style_guidelines).
+4. The code's interfaces are well designed, regardless of other aspects that
+ might need more work in the future.
+5. It uses protocols and formats which include the required compatibility.
+
+### Important note about automated GitHub checks
+
+When you submit a pull request, GitHub automatically runs checks on the Minetest
+Engine combined with your changes. One of these checks is called 'cpp lint /
+clang format', which checks code formatting. Because formatting for readability
+requires human judgement this check often fails and often makes unsuitable
+formatting requests which make code readability worse.
+
+If this check fails, look at the details to check for any clear mistakes and
+correct those. However, you should not apply everything ClangFormat requests.
+Ignore requests that make code readability worse and any other clearly
+unsuitable requests. Discuss in the pull request with a core developer about how
+to progress.
+
+## Issues
+
+If you experience an issue, we would like to know the details - especially when
+a stable release is on the way.
+
+1. Do a quick search on GitHub to check if the issue has already been reported.
+2. Is it an issue with the Minetest *engine*? If not, report it
+ [elsewhere](http://www.minetest.net/development/#reporting-issues).
+3. [Open an issue](https://github.com/minetest/minetest/issues/new) and describe
+ the issue you are having - you could include:
+ - Error logs (check the bottom of the `debug.txt` file).
+ - Screenshots.
+ - Ways you have tried to solve the issue, and whether they worked or not.
+ - Your Minetest version and the content (games, mods or texture packs) you have installed.
+ - Your platform (e.g. Windows 10 or Ubuntu 15.04 x64).
+
+After reporting you should aim to answer questions or clarifications as this
+helps pinpoint the cause of the issue (if you don't do this your issue may be
+closed after 1 month).
+
+## Feature requests
+
+Feature requests are welcome but take a moment to see if your idea follows
+[the roadmap](../doc/direction.md) in some way and fits the whole picture of
+the project. You should provide a clear explanation with as much detail as
+possible.
+
+## Translations
+
+The core translations of Minetest are performed using Weblate. You can access
+the project page with a list of current languages
+[here](https://hosted.weblate.org/projects/minetest/minetest/).
+
+Builtin (the component which contains things like server messages, chat command
+descriptions, privilege descriptions) is translated separately; it needs to be
+translated by editing a `.tr` text file. See
+[Translation](https://dev.minetest.net/Translation) for more information.
+
+## Donations
+
+If you'd like to monetarily support Minetest development, you can find donation
+methods on [our website](http://www.minetest.net/development/#donate).
+
+# Maintaining
+
+* This is a concise version of the
+ [Rules & Guidelines](http://dev.minetest.net/Category:Rules_and_Guidelines) on the developer wiki.*
+
+These notes are for those who have push access Minetest (core developers / maintainers).
+
+- See the [project organisation](http://dev.minetest.net/Organisation) for the people involved.
+
+## Concept approvals and roadmaps
+
+If a Pull Request is not a bug fix:
+
+* If it matches a goal in [the roadmap](../doc/direction.md), then the PR should
+ be labelled as "Roadmap" and the goal stated by number in the description.
+* If it doesn't match a goal, then it needs to receive a concept approval within
+ a week of being opened to remain open. This 1 week deadline does not apply to
+ PRs opened before the roadmap was adopted; instead, they may remain open or be
+ closed as needed. Use the "Concept Approved" label. Issues can be marked as
+ "Concept Approved" to give preapproval to future PRs.
+
+## Reviewing pull requests
+
+Pull requests should be reviewed and, if appropriate, checked if they achieve
+their intended purpose. You can show that you are in the process of, or will
+review the pull request by commenting *"Looks good"* or something similar.
+
+**If the pull-request is not [merge-able](#a-pull-request-is-considered-merge-able-when):**
+
+Submit a comment explaining to the author what they need to change to make the
+pull-request merge-able.
+
+- If the author comments or makes changes to the pull-request, it can be
+ reviewed again.
+- If no response is made from the author within 1 month (when improvements are
+ suggested or a question is asked), it can be closed.
+
+**If the pull-request is [merge-able](#a-pull-request-is-considered-merge-able-when):**
+
+Submit a :+1: (+1) or "Looks good" comment to show you believe the pull-request should be merged. "Looks good" comments often signify that the patch might require (more) testing.
+
+- Two core developers must agree to the merge before it is carried out and both should +1 the pull request.
+- Who intends to merge the pull-request should follow the commit rules:
+ - The title should follow the commit guidelines (title starts with a capital letter, present tense, descriptive).
+ - Don't modify history older than 10 minutes.
+ - Use rebase, not merge to get linear history:
+ - `curl https://github.com/minetest/minetest/pull/1.patch | git am`
+
+## Reviewing issues and feature requests
+
+- If an issue does not get a response from its author within 1 month (when requiring more details), it can be closed.
+- When an issue is a duplicate, refer to the first ones and close the later ones.
+- Tag issues with the appropriate [labels](https://github.com/minetest/minetest/labels) for devices, platforms etc.
+
+## Releasing a new version
+
+*Refer to [dev.minetest.net/Releasing_Minetest](http://dev.minetest.net/Releasing_Minetest)*
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..7cf34bd4a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,32 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: Unconfirmed bug
+assignees: ''
+---
+
+##### Minetest version
+<!--
+Paste Minetest version between quotes below.
+If you are on a devel version, please add git commit hash.
+You can use `minetest --version` to find it.
+-->
+```
+
+```
+
+##### OS / Hardware
+<!-- General information about your hardware and operating system -->
+Operating system:
+CPU:
+
+<!-- For graphical issues only -->
+GPU model:
+OpenGL version:
+
+##### Summary
+<!-- Describe your problem here -->
+
+##### Steps to reproduce
+<!-- Explain how the problem has happened, providing a minimal test (i.e. a code snippet reduced to the bone) where possible -->
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 000000000..ebcfa98ee
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,25 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: Feature request
+assignees: ''
+---
+
+## Problem
+
+A clear and concise description of what the problem is.
+ie: Why is this needed?
+Ex. I'm always frustrated when [...]
+
+## Solutions
+
+A clear and concise description of what you want to happen.
+
+## Alternatives
+
+A clear and concise description of any alternative solutions or features you've considered.
+
+## Additional context
+
+Add any other context or screenshots about the feature request here.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..4132826cd
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,20 @@
+Add compact, short information about your PR for easier understanding:
+
+- Goal of the PR
+- How does the PR work?
+- Does it resolve any reported issue?
+- Does this relate to a goal in [the roadmap](../doc/direction.md)?
+- If not a bug fix, why is this PR needed? What usecases does it solve?
+
+## To do
+
+This PR is a Work in Progress / Ready for Review.
+<!-- ^ delete one -->
+
+- [ ] List
+- [ ] Things
+- [ ] To do
+
+## How to test
+
+<!-- Example code or instructions -->
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 000000000..e2dd0432f
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,20 @@
+# Security Policy
+
+## Supported Versions
+
+We only support the latest stable version for security issues.
+See the [releases page](https://github.com/minetest/minetest/releases).
+
+## Reporting a Vulnerability
+
+We ask that you report vulnerabilities privately, by contacting a core developer,
+to give us time to fix them. You can do that by emailing one of the following addresses:
+
+* celeron55@gmail.com
+* rubenwardy@minetest.net
+
+Depending on severity, we will either create a private issue for the vulnerability
+and release a patch version of Minetest, or give you permission to file the issue publicly.
+
+For more information on the justification of this policy, see
+[Responsible Disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure).
diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
new file mode 100644
index 000000000..8cbe5e09f
--- /dev/null
+++ b/.github/workflows/android.yml
@@ -0,0 +1,52 @@
+name: android
+
+# build on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - 'android/**'
+ - '.github/workflows/android.yml'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - 'android/**'
+ - '.github/workflows/android.yml'
+
+jobs:
+ build:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y --no-install-recommends gettext openjdk-11-jdk-headless
+ - name: Build with Gradle
+ run: cd android; ./gradlew assemblerelease
+ - name: Save armeabi artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-armeabi-v7a.apk
+ path: android/app/build/outputs/apk/release/app-armeabi-v7a-release-unsigned.apk
+ - name: Save arm64 artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-arm64-v8a.apk
+ path: android/app/build/outputs/apk/release/app-arm64-v8a-release-unsigned.apk
+ - name: Save x86 artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-x86.apk
+ path: android/app/build/outputs/apk/release/app-x86-release-unsigned.apk
+ - name: Save x86_64 artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Minetest-x86_64.apk
+ path: android/app/build/outputs/apk/release/app-x86_64-release-unsigned.apk
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 000000000..282dbe307
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,271 @@
+name: build
+
+# build on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/buildbot/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+ - 'Dockerfile'
+ - '.dockerignore'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/buildbot/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+ - 'Dockerfile'
+ - '.dockerignore'
+
+jobs:
+ # Older gcc version (should be close to our minimum supported version)
+ gcc_5:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps g++-5
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: gcc-5
+ CXX: g++-5
+
+ - name: Test
+ run: |
+ ./bin/minetest --run-unittests
+
+ # Current gcc version
+ gcc_12:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps g++-12 libluajit-5.1-dev
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: gcc-12
+ CXX: g++-12
+
+ - name: Test
+ run: |
+ ./bin/minetest --run-unittests
+
+ # Older clang version (should be close to our minimum supported version)
+ clang_3_9:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-3.9 valgrind
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-3.9
+ CXX: clang++-3.9
+
+ - name: Unittest
+ run: |
+ ./bin/minetest --run-unittests
+
+ - name: Valgrind
+ run: |
+ valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ./bin/minetest --run-unittests
+
+ # Current clang version
+ clang_14:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-14 gdb
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-14
+ CXX: clang++-14
+
+ - name: Test
+ run: |
+ ./bin/minetest --run-unittests
+
+ - name: Integration test + devtest
+ run: |
+ ./util/test_multiplayer.sh
+
+ # Build with prometheus-cpp (server-only)
+ clang_9_prometheus:
+ name: "clang_9 (PROMETHEUS=1)"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-9
+
+ - name: Build prometheus-cpp
+ run: |
+ ./util/ci/build_prometheus_cpp.sh
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-9
+ CXX: clang++-9
+ CMAKE_FLAGS: "-DENABLE_PROMETHEUS=1 -DBUILD_CLIENT=0"
+
+ - name: Test
+ run: |
+ ./bin/minetestserver --run-unittests
+
+ docker:
+ name: "Docker image"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Build docker image
+ run: |
+ docker build . -t minetest:latest
+ docker run --rm minetest:latest /usr/local/bin/minetestserver --version
+
+ win32:
+ name: "MinGW cross-compiler (32-bit)"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install compiler
+ run: |
+ sudo apt-get update && sudo apt-get install -y gettext
+ wget http://minetest.kitsunemimi.pw/mingw-w64-i686_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
+ sudo tar -xaf mingw.tar.xz -C /usr
+
+ - name: Build
+ run: |
+ EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh winbuild
+ env:
+ NO_MINETEST_GAME: 1
+ NO_PACKAGE: 1
+
+ win64:
+ name: "MinGW cross-compiler (64-bit)"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install compiler
+ run: |
+ sudo apt-get update && sudo apt-get install -y gettext
+ wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz
+ sudo tar -xaf mingw.tar.xz -C /usr
+
+ - name: Build
+ run: |
+ EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh winbuild
+ env:
+ NO_MINETEST_GAME: 1
+ NO_PACKAGE: 1
+
+ msvc:
+ name: VS 2019 ${{ matrix.config.arch }}-${{ matrix.type }}
+ runs-on: windows-2019
+ env:
+ VCPKG_VERSION: 5cf60186a241e84e8232641ee973395d4fde90e1
+ # 2022.02
+ vcpkg_packages: zlib zstd curl[winssl] openal-soft libvorbis libogg libjpeg-turbo sqlite3 freetype luajit gmp jsoncpp opengl-registry
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - {
+ arch: x86,
+ generator: "-G'Visual Studio 16 2019' -A Win32",
+ vcpkg_triplet: x86-windows
+ }
+ - {
+ arch: x64,
+ generator: "-G'Visual Studio 16 2019' -A x64",
+ vcpkg_triplet: x64-windows
+ }
+ type: [portable]
+# type: [portable, installer]
+# The installer type is working, but disabled, to save runner jobs.
+# Enable it, when working on the installer.
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Checkout IrrlichtMt
+ run: |
+ $ref = @(Get-Content misc\irrlichtmt_tag.txt)
+ git clone https://github.com/minetest/irrlicht lib\irrlichtmt --depth 1 -b $ref[0]
+
+ - name: Restore from cache and run vcpkg
+ uses: lukka/run-vcpkg@v7
+ with:
+ vcpkgArguments: ${{env.vcpkg_packages}}
+ vcpkgDirectory: '${{ github.workspace }}\vcpkg'
+ appendedCacheKey: ${{ matrix.config.vcpkg_triplet }}
+ vcpkgGitCommitId: ${{ env.VCPKG_VERSION }}
+ vcpkgTriplet: ${{ matrix.config.vcpkg_triplet }}
+
+ - name: Minetest CMake
+ run: |
+ cmake ${{matrix.config.generator}} `
+ -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" `
+ -DCMAKE_BUILD_TYPE=Release `
+ -DENABLE_POSTGRESQL=OFF `
+ -DRUN_IN_PLACE=${{ contains(matrix.type, 'portable') }} .
+
+ - name: Build Minetest
+ run: cmake --build . --config Release
+
+ - name: CPack
+ run: |
+ If ($env:TYPE -eq "installer")
+ {
+ cpack -G WIX -B "$env:GITHUB_WORKSPACE\Package"
+ }
+ ElseIf($env:TYPE -eq "portable")
+ {
+ cpack -G ZIP -B "$env:GITHUB_WORKSPACE\Package"
+ }
+ env:
+ TYPE: ${{matrix.type}}
+
+ - name: Package Clean
+ run: rm -r $env:GITHUB_WORKSPACE\Package\_CPack_Packages
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: msvc-${{ matrix.config.arch }}-${{ matrix.type }}
+ path: .\Package\
diff --git a/.github/workflows/cpp_lint.yml b/.github/workflows/cpp_lint.yml
new file mode 100644
index 000000000..581ee06d6
--- /dev/null
+++ b/.github/workflows/cpp_lint.yml
@@ -0,0 +1,55 @@
+name: cpp_lint
+
+# lint on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - 'util/ci/**'
+ - '.github/workflows/**.yml'
+
+jobs:
+
+# clang_format:
+# runs-on: ubuntu-20.04
+# steps:
+# - uses: actions/checkout@v3
+# - name: Install clang-format
+# run: |
+# sudo apt-get update
+# sudo apt-get install -y clang-format-9
+#
+# - name: Run clang-format
+# run: |
+# source ./util/ci/clang-format.sh
+# check_format
+# env:
+# CLANG_FORMAT: clang-format-9
+
+ clang_tidy:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-tidy-9
+
+ - name: Run clang-tidy
+ run: |
+ ./util/ci/clang-tidy.sh
diff --git a/.github/workflows/lua.yml b/.github/workflows/lua.yml
new file mode 100644
index 000000000..21cbbdcee
--- /dev/null
+++ b/.github/workflows/lua.yml
@@ -0,0 +1,72 @@
+name: lua_lint
+
+# Lint on lua changes on builtin or if workflow changed
+on:
+ push:
+ paths:
+ - 'builtin/**.lua'
+ - 'games/devtest/**.lua'
+ - '.github/workflows/**.yml'
+ pull_request:
+ paths:
+ - 'builtin/**.lua'
+ - 'games/devtest/**.lua'
+ - '.github/workflows/**.yml'
+
+jobs:
+ # Note that the integration tests are also run build.yml, but only when C++ code is changed.
+ integration_tests:
+ name: "Compile and run multiplayer tests"
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_linux_deps clang-10 gdb libluajit-5.1-dev
+
+ - name: Build
+ run: |
+ ./util/ci/build.sh
+ env:
+ CC: clang-10
+ CXX: clang++-10
+ CMAKE_FLAGS: "-DENABLE_GETTEXT=0 -DBUILD_SERVER=0"
+
+ - name: Integration test + devtest
+ run: |
+ ./util/test_multiplayer.sh
+
+ luacheck:
+ name: "Builtin Luacheck and Unit Tests"
+ runs-on: ubuntu-20.04
+
+ steps:
+
+ - uses: actions/checkout@v3
+ - uses: leafo/gh-actions-lua@v9
+ with:
+ luaVersion: "5.1.5"
+ - uses: leafo/gh-actions-luarocks@v4
+
+ - name: Install LuaJIT
+ run: |
+ cd $HOME
+ git clone https://github.com/LuaJIT/LuaJIT/
+ cd LuaJIT
+ make -j$(nproc)
+
+ - name: Install luarocks tools
+ run: |
+ luarocks install --local luacheck
+ luarocks install --local busted
+
+ - name: Run checks (builtin)
+ run: |
+ $HOME/.luarocks/bin/luacheck builtin
+ $HOME/.luarocks/bin/busted builtin
+ $HOME/.luarocks/bin/busted builtin --lua=$HOME/LuaJIT/src/luajit
+
+ - name: Run checks (devtest)
+ run: |
+ $HOME/.luarocks/bin/luacheck --config=games/devtest/.luacheckrc games/devtest
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
new file mode 100644
index 000000000..edc6630c0
--- /dev/null
+++ b/.github/workflows/macos.yml
@@ -0,0 +1,67 @@
+name: macos
+
+# build on c/cpp changes or workflow changes
+on:
+ push:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - '.github/workflows/macos.yml'
+ pull_request:
+ paths:
+ - 'lib/**.[ch]'
+ - 'lib/**.cpp'
+ - 'src/**.[ch]'
+ - 'src/**.cpp'
+ - '**/CMakeLists.txt'
+ - 'cmake/Modules/**'
+ - '.github/workflows/macos.yml'
+
+env:
+ MINETEST_GAME_REPO: https://github.com/minetest/minetest_game.git
+ MINETEST_GAME_BRANCH: master
+ MINETEST_GAME_NAME: minetest_game
+
+jobs:
+ build:
+ runs-on: macos-11
+ steps:
+ - uses: actions/checkout@v3
+ - name: Install deps
+ run: |
+ source ./util/ci/common.sh
+ install_macos_deps
+
+ - name: Build
+ run: |
+ git clone -b $MINETEST_GAME_BRANCH $MINETEST_GAME_REPO games/$MINETEST_GAME_NAME
+ git clone https://github.com/minetest/irrlicht lib/irrlichtmt --depth 1 -b $(cat misc/irrlichtmt_tag.txt)
+ mkdir build
+ cd build
+ cmake .. \
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \
+ -DCMAKE_FIND_FRAMEWORK=LAST \
+ -DCMAKE_INSTALL_PREFIX=../build/macos/ \
+ -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE
+ make -j2
+ make install
+
+ - name: Test
+ run: |
+ ./build/macos/minetest.app/Contents/MacOS/minetest --run-unittests
+
+ # Zipping the built .app preserves permissions on the contained files,
+ # which the GitHub artifact pipeline would otherwise strip away.
+ - name: CPack
+ run: |
+ cd build
+ cpack -G ZIP -B macos
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: minetest-macos
+ path: ./build/macos/*.zip