mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-18 14:08:19 +00:00
b75289df35
4829: Added map_replace_area tool r=def- a=sctt Motivation: sometimes mappers need to copy a certain area from a map to another (but also to a different position of the same map). that's very time consuming on complex maps, as tiles and quads layers have to be manually copied one by one. map_replace_area is designed to automatically replace all the tiles and quads from a specific area to another. `Usage: map_replace_area <from_map> <from_x> <from_y> <to_map> <to_x> <to_y> <width> <height> <output_map>` PoW screenshots attached below. note: for the moment map_replace_area suppose that you are working on the same map (that's what i needed), that means source and destination maps must have the same layers structure, or else an error is returned. but i understand it might be useful to also work on totally different maps, in that case users must be able specify layers they want to consider by associating source map layers to destination map layers (by using a config file maybe). i'm probably going to make another PR to add this enhancement in the future. PoW: ![Screenshot from 2022-03-16 18-08-12](https://user-images.githubusercontent.com/3328841/158650515-17c31639-28f7-4e19-954a-b5734ee82703.png) ![Screenshot from 2022-03-16 18-08-43](https://user-images.githubusercontent.com/3328841/158650512-6e21f2b4-538f-4974-aaa2-2983551d24b4.png) ![Screenshot from 2022-03-16 18-11-50](https://user-images.githubusercontent.com/3328841/158650510-d00a05a9-a2e8-4df2-8674-0c80fd894f66.png) 5343: Add rcon and chat to integration test r=def- a=ChillerDragon Add more action to the integration test script: chat messages, chat commands, rcon commands. This unlocks more code coverage at runtime to catch asan issues. It adds a very restrictive regex on the log format. But I am happy to maintain that in case changes to the log output happen. The current version is already supporting heinrichs refactor https://github.com/ddnet/ddnet/pull/5036 Also ensure chat messages arrive in the correct format. Would have catched the following issues: https://github.com/ddnet/ddnet/issues/5342 https://github.com/ddnet/ddnet/issues/5340 https://github.com/ddnet/ddnet/issues/5302 https://github.com/ddnet/ddnet/pull/5126 DEPENDS ON: https://github.com/ddnet/ddnet/issues/5342 https://github.com/ddnet/ddnet/issues/5340 5465: Change from pnglite to libpng for PNG reading r=def- a=heinrich5991 This is desirable mainly because libpng is maintained and pnglite is not. pnglite was last updated in 2007 (15 years ago) and probably has a lot of security vulnerabilities. libpng is an actively maintained library also used by browsers like Firefox or Chromium, so it's less likely to contain security vulnerabilities, also it's more likely to be packaged by Linux distributions. This also refuses to load images of types not supported by pnglite, which allows us to think about backward compatibility while also introducing libpng. ## Checklist - [x] Tested the change ingame - [ ] Provided screenshots if it is a visual change - [ ] Tested in combination with possibly related configuration options - [ ] Written a unit test if it works standalone, system.c especially - [ ] Considered possible null pointers and out of bounds array indexing - [ ] Changed no physics that affect existing maps - [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional) Co-authored-by: sctt <scottistefano91@gmail.com> Co-authored-by: term <term@term.sinervis.pri> Co-authored-by: f <scottistefano91@gmail.com> Co-authored-by: heinrich5991 <heinrich5991@gmail.com> Co-authored-by: ChillerDragon <ChillerDragon@gmail.com> Co-authored-by: def <dennis@felsin9.de> Co-authored-by: Jupeyy <jupjopjap@gmail.com>
194 lines
6.8 KiB
YAML
194 lines
6.8 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
branches-ignore:
|
|
- staging.tmp
|
|
- trying.tmp
|
|
- staging-squash-merge.tmp
|
|
pull_request:
|
|
|
|
jobs:
|
|
build-cmake:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macOS-latest, windows-latest, ubuntu-20.04]
|
|
include:
|
|
- os: ubuntu-latest
|
|
cmake-args: -G Ninja
|
|
package-file: "*-linux_x86_64.tar.xz"
|
|
fancy: true
|
|
env:
|
|
CFLAGS: -Wdeclaration-after-statement -Werror
|
|
CXXFLAGS: -Werror
|
|
- os: ubuntu-20.04
|
|
cmake-path: /usr/bin/
|
|
cmake-args: -G Ninja -DTEST_MYSQL=ON
|
|
package-file: "*-linux_x86_64.tar.xz"
|
|
fancy: false
|
|
env:
|
|
CFLAGS: -Wdeclaration-after-statement -Werror
|
|
CXXFLAGS: -Werror
|
|
GTEST_FILTER: -*SQLite*
|
|
- os: macOS-latest
|
|
cmake-args: -G Ninja
|
|
package-file: "*-macos.dmg"
|
|
fancy: false
|
|
env:
|
|
CFLAGS: -Wdeclaration-after-statement -Werror
|
|
CXXFLAGS: -Werror
|
|
- os: windows-latest
|
|
cmake-args: -A x64
|
|
package-file: "*-win64.zip"
|
|
fancy: false
|
|
env:
|
|
CFLAGS: /WX
|
|
CXXFLAGS: /WX
|
|
LDFLAGS: /WX
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Prepare Linux
|
|
if: contains(matrix.os, 'ubuntu')
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get upgrade -y
|
|
sudo apt-get install pkg-config cmake ninja-build libfreetype6-dev libnotify-dev libsdl2-dev libsqlite3-dev libvulkan-dev glslang-tools spirv-tools libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev libx264-dev libpng-dev valgrind -y
|
|
|
|
- name: Prepare Linux (non-fancy)
|
|
if: ${{ contains(matrix.os, 'ubuntu') && !matrix.fancy }}
|
|
run: |
|
|
sudo rm -rf /var/lib/mysql/ /var/run/mysqld
|
|
sudo mkdir /var/lib/mysql/ /var/run/mysqld/
|
|
sudo chown mysql:mysql /var/lib/mysql/ /var/run/mysqld/
|
|
sudo mysqld --initialize-insecure --user=mysql --basedir=/usr --datadir=/var/lib/mysql/
|
|
sudo /usr/bin/mysqld_safe --basedir=/usr --datadir='/var/lib/mysql/' &
|
|
sleep 10
|
|
sudo mysql <<EOF
|
|
CREATE DATABASE ddnet;
|
|
CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword';
|
|
GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
EOF
|
|
|
|
- name: Prepare Linux (fancy)
|
|
if: contains(matrix.os, 'ubuntu') && matrix.fancy
|
|
run: |
|
|
sudo apt-get install libmariadbclient-dev libwebsockets-dev mariadb-server-10.3 -y
|
|
sudo rm -rf /var/lib/mysql/
|
|
sudo mysql_install_db --user=mysql --datadir=/var/lib/mysql/
|
|
cd /usr; sudo mysqld_safe --datadir='/var/lib/mysql/' --no-watch
|
|
sleep 10
|
|
sudo mysql <<EOF
|
|
CREATE DATABASE ddnet;
|
|
CREATE USER 'ddnet'@'localhost' IDENTIFIED BY 'thebestpassword';
|
|
GRANT ALL PRIVILEGES ON ddnet.* TO 'ddnet'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
EOF
|
|
|
|
- name: Prepare macOS
|
|
if: contains(matrix.os, 'macOS')
|
|
run: |
|
|
brew update || true
|
|
brew install pkg-config sdl2 ffmpeg python3 ninja molten-vk vulkan-headers glslang spirv-tools
|
|
brew upgrade freetype
|
|
pip3 install dmgbuild
|
|
sudo rm -rf /Library/Developer/CommandLineTools
|
|
|
|
- name: Build in debug mode
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
mkdir debug
|
|
cd debug
|
|
${{ matrix.cmake-path }}cmake --version
|
|
${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Debug -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. ..
|
|
${{ matrix.cmake-path }}cmake --build . --config Debug --target everything ${{ matrix.build-args }}
|
|
- name: Test debug
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
cd debug
|
|
${{ matrix.cmake-path }}cmake --build . --config Debug --target run_tests ${{ matrix.build-args }}
|
|
- name: Run debug server
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
cd debug
|
|
./DDNet-Server shutdown
|
|
|
|
- name: Build in release mode
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
mkdir release
|
|
cd release
|
|
${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=Release -Werror=dev -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. ..
|
|
${{ matrix.cmake-path }}cmake --build . --config Release --target everything ${{ matrix.build-args }}
|
|
- name: Test release
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
cd release
|
|
${{ matrix.cmake-path }}cmake --build . --config Release --target run_tests ${{ matrix.build-args }}
|
|
- name: Run release server
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
cd release
|
|
./DDNet-Server shutdown
|
|
|
|
- name: Build headless client
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
mkdir headless
|
|
cd headless
|
|
${{ matrix.cmake-path }}cmake --version
|
|
${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DHEADLESS_CLIENT=ON -DCMAKE_BUILD_TYPE=Debug -Werror=dev -DDOWNLOAD_GTEST=ON -DDEV=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=. ..
|
|
${{ matrix.cmake-path }}cmake --build . --config Debug ${{ matrix.build-args }}
|
|
- name: Test headless client
|
|
run: |
|
|
cd headless
|
|
./DDNet-Server &
|
|
./DDNet "cl_download_skins 0;connect localhost:8303;quit"
|
|
|
|
- name: Build in release mode with debug info and all features on
|
|
if: matrix.fancy
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
mkdir fancy
|
|
cd fancy
|
|
${{ matrix.cmake-path }}cmake ${{ matrix.cmake-args }} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. -DANTIBOT=ON -DWEBSOCKETS=ON ..
|
|
${{ matrix.cmake-path }}cmake --build . --config RelWithDebInfo --target everything ${{ matrix.build-args }}
|
|
- name: Test fancy
|
|
if: matrix.fancy
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
cd fancy
|
|
${{ matrix.cmake-path }}cmake --build . --config RelWithDebInfo --target run_tests ${{ matrix.build-args }}
|
|
|
|
- name: Run fancy server
|
|
if: matrix.fancy
|
|
env: ${{ matrix.env }}
|
|
run: |
|
|
cd fancy
|
|
./DDNet-Server shutdown
|
|
|
|
- name: Run integration tests with Valgrind's Memcheck
|
|
if: contains(matrix.os, 'ubuntu')
|
|
run: |
|
|
cd headless
|
|
./integration_test.sh --valgrind-memcheck
|
|
|
|
- name: Package
|
|
run: |
|
|
cd release
|
|
${{ matrix.cmake-path }}cmake --build . --config Release --target package_default ${{ matrix.build-args }}
|
|
mkdir artifacts
|
|
mv ${{ matrix.package-file }} artifacts
|
|
|
|
- name: Upload Artifacts
|
|
uses: actions/upload-artifact@v1
|
|
with:
|
|
name: ddnet-${{ matrix.os }}
|
|
path: release/artifacts
|