Skip to content

Commit

Permalink
Merge branch 'master' into 238-disable-serverconfig-generation
Browse files Browse the repository at this point in the history
  • Loading branch information
lionkor authored Jan 17, 2024
2 parents 1479bda + 9915c83 commit 8b68bb3
Show file tree
Hide file tree
Showing 29 changed files with 312 additions and 107 deletions.
87 changes: 58 additions & 29 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,33 @@ name: Linux

on: [push]


env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
VCPKG_FORCE_SYSTEM_BINARIES: 1
CMAKE_BUILD_TYPE: "Release"
DEBIAN_FRONTEND: "noninteractive"

jobs:
debian-11-build:
runs-on: ubuntu-latest
x86_64-matrix:
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- distro: debian
version: 11
- distro: debian
version: 12
- distro: ubuntu
version: 22.04
- distro: ubuntu
version: 20.04
container:
image: debian:11
image: ${{ matrix.distro }}:${{ matrix.version }}
steps:
- name: get-cmake
uses: lukka/[email protected]

- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v6
with:
Expand All @@ -30,43 +47,59 @@ jobs:

- name: Git config safe directory
shell: bash
run: bash ./scripts/debian-11/1.5-git-safe.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1.5-git-safe.sh

- name: Install Dependencies
run: bash ./scripts/debian-11/1-install-deps.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1-install-deps.sh

- name: Create Build Environment
run: bash ./scripts/debian-11/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'

- name: Build Server
run: bash ./scripts/debian-11/3-build.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/3-build.sh

- name: Archive server artifact
uses: actions/upload-artifact@v2
with:
name: BeamMP-Server-debian
name: BeamMP-Server.${{ matrix.distro }}.${{ matrix.version }}.x86_64
path: ./bin/BeamMP-Server

- name: Archive server debug info artifact
uses: actions/upload-artifact@v2
with:
name: BeamMP-Server-debian.debug
name: debuginfo.${{ matrix.distro }}.${{ matrix.version }}.x86_64
path: ./bin/BeamMP-Server.debug

- name: Build Tests
run: bash ./scripts/debian-11/3-build-tests.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/3-build-tests.sh

- name: Install Runtime Dependencies
run: bash ./scripts/debian-11/4-install-runtime-deps.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/4-install-runtime-deps.sh

- name: Test
run: ./bin/BeamMP-Server-tests

ubuntu-22-04-build:
runs-on: ubuntu-latest
arm64-matrix:
runs-on: [Linux, ARM64]
env:
VCPKG_DEFAULT_TRIPLET: "arm64-linux"
strategy:
matrix:
include:
- distro: debian
version: 11
- distro: debian
version: 12
- distro: ubuntu
version: 22.04
- distro: ubuntu
version: 20.04
container:
image: ubuntu:22.04
image: ${{ matrix.distro }}:${{ matrix.version }}
steps:
- name: get-cmake
uses: lukka/[email protected]

- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v6
with:
Expand All @@ -85,39 +118,35 @@ jobs:

- name: Git config safe directory
shell: bash
run: bash ./scripts/ubuntu-22.04/1.5-git-safe.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1.5-git-safe.sh

- name: Install Dependencies
run: bash ./scripts/ubuntu-22.04/1-install-deps.sh

- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
runVcpkgInstall: true
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1-install-deps.sh

- name: Create Build Environment
run: bash ./scripts/ubuntu-22.04/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'

- name: Build Server
run: bash ./scripts/ubuntu-22.04/3-build.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/3-build.sh

- name: Archive server artifact
uses: actions/upload-artifact@v2
with:
name: BeamMP-Server-ubuntu
name: BeamMP-Server.${{ matrix.distro }}.${{ matrix.version }}.arm64
path: ./bin/BeamMP-Server

- name: Archive server debug info artifact
uses: actions/upload-artifact@v2
with:
name: BeamMP-Server-ubuntu.debug
name: debuginfo.${{ matrix.distro }}.${{ matrix.version }}.arm64
path: ./bin/BeamMP-Server.debug

- name: Build Tests
run: bash ./scripts/ubuntu-22.04/3-build-tests.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/3-build-tests.sh

- name: Install Runtime Dependencies
run: bash ./scripts/ubuntu-22.04/4-install-runtime-deps.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/4-install-runtime-deps.sh

- name: Test
run: ./bin/BeamMP-Server-tests
run: ./bin/BeamMP-Server-tests

82 changes: 53 additions & 29 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ on:
env:
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
CMAKE_BUILD_TYPE: "Release"
DEBIAN_FRONTEND: "noninteractive"

jobs:
create-release:
Expand All @@ -27,18 +28,30 @@ jobs:
draft: false
prerelease: true
body: |
Files included in this release:
- `BeamMP-Server.exe` is the windows build. You need to install the [Visual C++ Redistributables](https://aka.ms/vs/17/release/vc_redist.x64.exe) to run this.
- `BeamMP-Server-debian` is a Debian 11 build, requires `liblua5.3-0`.
- `BeamMP-Server-ubuntu` is a Ubuntu 22.04 build, requires `liblua5.3-0`.
Files included in this release are:
- `BeamMP-Server.$DISTRO.$DISTROVERSION.$ARCH` for linux builds, for example `BeamMP-Server.debian.11.x86_64` for the Debian 11 build for x86_64. All require `liblua5.3` to be installed.
- `BeamMP-Server.exe` for the Windows build (x86_64). You need to install the [Visual C++ Redistributables](https://aka.ms/vs/17/release/vc_redist.x64.exe) to run this.
upload-release-files-debian-11:
name: Build and upload Debian 11 Release Files
x86_64-matrix:
runs-on: ubuntu-22.04
needs: create-release
strategy:
matrix:
include:
- distro: debian
version: 11
- distro: debian
version: 12
- distro: ubuntu
version: 22.04
- distro: ubuntu
version: 20.04
container:
image: debian:11
image: ${{ matrix.distro }}:${{ matrix.version }}
steps:
- name: get-cmake
uses: lukka/[email protected]

- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v6
with:
Expand All @@ -57,31 +70,26 @@ jobs:

- name: Git config safe directory
shell: bash
run: bash ./scripts/debian-11/1.5-git-safe.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1.5-git-safe.sh

- name: Install Dependencies
run: bash ./scripts/debian-11/1-install-deps.sh

- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
runVcpkgInstall: true
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1-install-deps.sh

- name: Create Build Environment
run: bash ./scripts/debian-11/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'

- name: Build Server
run: bash ./scripts/debian-11/3-build.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/3-build.sh

- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
asset_name: BeamMP-Server.${{ matrix.distro }}.${{ matrix.version }}.x86_64
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ./bin/BeamMP-Server
asset_name: BeamMP-Server-debian
asset_content_type: application/x-elf

- name: Upload Debug Info
Expand All @@ -90,18 +98,34 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
asset_name: debuginfo.${{ matrix.distro }}.${{ matrix.version }}.x86_64
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ./bin/BeamMP-Server.debug
asset_name: debuginfo-debian.debug
asset_content_type: application/x-elf

upload-release-files-ubuntu-22-04:
name: Build and upload Ubuntu 22.04 Release Files
runs-on: ubuntu-22.04

arm64-matrix:
runs-on: [Linux, ARM64]
needs: create-release
strategy:
matrix:
include:
- distro: debian
version: 11
- distro: debian
version: 12
- distro: ubuntu
version: 22.04
- distro: ubuntu
version: 20.04
env:
VCPKG_DEFAULT_TRIPLET: "arm64-linux"
VCPKG_FORCE_SYSTEM_BINARIES: 1
container:
image: ubuntu:22.04
image: ${{ matrix.distro }}:${{ matrix.version }}
steps:
- name: get-cmake
uses: lukka/[email protected]

- name: Export GitHub Actions cache environment variables
uses: actions/github-script@v6
with:
Expand All @@ -120,26 +144,26 @@ jobs:

- name: Git config safe directory
shell: bash
run: bash ./scripts/ubuntu-22.04/1.5-git-safe.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1.5-git-safe.sh

- name: Install Dependencies
run: bash ./scripts/ubuntu-22.04/1-install-deps.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/1-install-deps.sh

- name: Create Build Environment
run: bash ./scripts/ubuntu-22.04/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/2-configure.sh '-DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake'

- name: Build Server
run: bash ./scripts/ubuntu-22.04/3-build.sh
run: bash ./scripts/${{ matrix.distro }}-${{ matrix.version }}/3-build.sh

- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
asset_name: BeamMP-Server.${{ matrix.distro }}.${{ matrix.version }}.arm64
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ./bin/BeamMP-Server
asset_name: BeamMP-Server-ubuntu
asset_content_type: application/x-elf

- name: Upload Debug Info
Expand All @@ -148,9 +172,9 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
asset_name: debuginfo.${{ matrix.distro }}.${{ matrix.version }}.arm64
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ./bin/BeamMP-Server.debug
asset_name: debuginfo-ubuntu.debug
asset_content_type: application/x-elf

upload-release-files-windows:
Expand Down
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,22 @@ You can find precompiled binaries under [Releases](https://github.com/BeamMP/Bea

On Linux, you need some dependencies to **build** the server (on Windows, you don't):

For Debian, Ubuntu and others you can find scripts that do this in `scripts/`.

```
liblua5.3-dev curl zip unzip tar cmake make git g++
```

The names of each package may change depending on your platform. See in `scripts/` or use a search engine to find out what they're called for you.
You can install these with your distribution's package manager. You will need sudo or need root for ONLY this step.

The names of each package may change depending on your platform.

If you are building for ARM (like aarch64), you need to run `export VCPKG_FORCE_SYSTEM_BINARIES=1` before the following commands.

You can build on **Windows, Linux** or other platforms by following these steps:

1. Check out the repository with git: `git clone --recursive https://github.com/BeamMP/BeamMP-Server`.
2. Go into the directory `cd BeamMP-Server`.
3. Run CMake `cmake -S . -B bin -DCMAKE_BUILD_TYPE=Release` - this can take a few minutes and may take a lot of disk space and bandwidth.
4. Build via `cmake --build bin --parallel -t BeamMP-Server`.
4. Build via `cmake --build bin --parallel --config Release -t BeamMP-Server`.
5. Your executable can be found in `bin/`.

When you make changes to the code, you only have to run step 4 again.
Expand Down
2 changes: 1 addition & 1 deletion include/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ class Application final {
static inline std::mutex mShutdownHandlersMutex {};
static inline std::deque<TShutdownHandler> mShutdownHandlers {};

static inline Version mVersion { 3, 2, 0 };
static inline Version mVersion { 3, 2, 2 };
};

void SplitString(std::string const& str, const char delim, std::vector<std::string>& out);
Expand Down
4 changes: 2 additions & 2 deletions include/TServer.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class TServer final {
void ForEachClient(const std::function<bool(std::weak_ptr<TClient>)>& Fn);
size_t ClientCount() const;

static void GlobalParser(const std::weak_ptr<TClient>& Client, std::vector<uint8_t>&& Packet, TPPSMonitor& PPSMonitor, TNetwork& Network);
void GlobalParser(const std::weak_ptr<TClient>& Client, std::vector<uint8_t>&& Packet, TPPSMonitor& PPSMonitor, TNetwork& Network);
static void HandleEvent(TClient& c, const std::string& Data);
RWMutex& GetClientMutex() const { return mClientsMutex; }

Expand All @@ -43,7 +43,7 @@ class TServer final {
static bool ShouldSpawn(TClient& c, const std::string& CarJson, int ID);
static bool IsUnicycle(TClient& c, const std::string& CarJson);
static void Apply(TClient& c, int VID, const std::string& pckt);
static void HandlePosition(TClient& c, const std::string& Packet);
void HandlePosition(TClient& c, const std::string& Packet);
};

struct BufferView {
Expand Down
2 changes: 1 addition & 1 deletion scripts/debian-11/1-install-deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ set -ex

apt-get update -y

apt-get install -y liblua5.3-0 liblua5.3-dev curl zip unzip tar cmake make git g++
apt-get install -y liblua5.3-0 liblua5.3-dev curl zip unzip tar cmake make git g++ ninja-build
4 changes: 3 additions & 1 deletion scripts/debian-11/2-configure.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

set -ex

cmake . -B bin $1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -g -Wl,-z,norelro -Wl,--hash-style=gnu -Wl,--build-id=none -Wl,-z,noseparate-code -ffunction-sections -fdata-sections -Wl,--gc-sections" -DBeamMP-Server_ENABLE_LTO=ON
./vcpkg/bootstrap-vcpkg.sh

cmake . -B bin $1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -g -Wl,-z,norelro -Wl,--hash-style=gnu -Wl,-z,noseparate-code -ffunction-sections -fdata-sections -Wl,--gc-sections" -DBeamMP-Server_ENABLE_LTO=ON
Loading

0 comments on commit 8b68bb3

Please sign in to comment.