From 262e956751e864dc228f1f500bec790bf28e4f6d Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sat, 6 Jun 2026 00:05:00 +0100 Subject: [PATCH] add linux ci --- .circleci/config.yml | 118 +++++++++++++++++++++++++++++++++++++++++++ compile-linux.hxml | 3 ++ compile-linux.sh | 2 +- 3 files changed, 122 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f10873ca..50db60ed 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -452,6 +452,117 @@ jobs: # - store_artifacts: # path: ~/project/MBHaxe-Platinum-Win.zip + build-linux: + machine: # executor type + image: ubuntu-2204:current + environment: + #HOMEBREW_NO_AUTO_UPDATE: 1 + #NPROC: 4 + COMMIT_TAG: pipeline.git.tag + steps: + #- add_ssh_keys: + # fingerprints: + # - "82:42:56:a0:57:43:95:4e:00:c0:8c:c1:7f:70:74:47" + - checkout: + path: ~/MBHaxe + - run: + name: Install apt dependencies + command: | + sudo apt install cmake pkg-config + sudo apt-get install libpng-dev libturbojpeg-dev libvorbis-dev libopenal-dev libsdl2-dev libmbedtls-dev libuv1-dev libsqlite3-dev + + - run: + name: Install Haxe + command: | + set -eux + download_url="https://github.com/HaxeFoundation/haxe/releases/download/4.3.6/haxe-4.3.6-linux64.tar.gz" + echo "Downloading [$download_url]..." + mkdir ~/haxe + curl -fsSL --retry 3 --retry-delay 5 "$download_url" -o ~/haxe.tar.gz + tar xzvf ~/haxe.tar.gz -C ~/haxe --strip-components=1 + download_url="https://github.com/HaxeFoundation/neko/releases/download/v2-4-0/neko-2.4.0-linux64.tar.gz" + echo "Downloading [$download_url]..." + mkdir ~/neko + curl -fsSL --retry 3 --retry-delay 5 "$download_url" -o ~/neko.tar.gz + tar xzvf ~/neko.tar.gz -C ~/neko --strip-components=1 + export PATH=~/haxe/:"$PATH" + export HAXE_STD_PATH=~/haxe/std + export PATH=~/neko/:"$PATH" + export LD_LIBRARY_PATH=~/neko + sudo chmod +x ~/neko/neko + haxelib setup ~/haxelib + haxelib list + + - run: + name: Install hashlink + command: | + mkdir -p ~/deps + cd ~/deps + git clone --depth=1 https://github.com/RandomityGuy/hashlink + git clone --depth=1 https://github.com/RandomityGuy/hxDatachannel + cd hashlink + ln -s ~/deps/hxDatachannel/cpp libs/datachannel + echo -e "\nadd_subdirectory(datachannel)" >> libs/CMakeLists.txt + cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_FIND_FRAMEWORK=LAST -DWITH_SQLITE=OFF -DBUILD_TESTING=OFF -DHASHLINK_INCLUDE_DIR="~/deps/hashlink/src" -DHASHLINK_LIBRARY_DIR="/usr/local/lib/" + cmake --build build --config Release -j$NPROC + sudo cmake --install build + + - run: + name: Install haxe dependencies + command: | + export PATH=~/haxe/:"$PATH" + export HAXE_STD_PATH=~/haxe/std + export PATH=~/neko/:"$PATH" + export LD_LIBRARY_PATH=~/neko + haxelib dev hashlink ~/deps/hashlink/other/haxelib + haxelib git heaps https://github.com/RandomityGuy/heaps + haxelib dev hlopenal ~/deps/hashlink/libs/openal + haxelib dev hlsdl ~/deps/hashlink/libs/sdl + haxelib dev datachannel ~/deps/hxDatachannel + haxelib install colyseus-websocket + + - save_cache: + key: mbhaxe-deps-v1 + paths: + - /usr/local/lib/datachannel.hdll + - /usr/local/lib/fmt.hdll + - /usr/local/lib/openal.hdll + - /usr/local/lib/sdl.hdll + - /usr/local/lib/ssl.hdll + - /usr/local/lib/ui.hdll + - /usr/local/lib/uv.hdll + + - run: + name: Compile MBHaxe + command: | + export PATH=~/haxe/:"$PATH" + export HAXE_STD_PATH=~/haxe/std + export PATH=~/neko/:"$PATH" + export LD_LIBRARY_PATH=~/neko + cd ~/MBHaxe + haxe compile.hxml + haxe compile-linux.hxml + cd native + cp ~/deps/hashlink/src/hlc_main.c . + gcc -o marblegame -O2 -I . -L /usr/local/lib marblegame.c /usr/local/lib/{ui.hdll,openal.hdll,fmt.hdll,sdl.hdll,uv.hdll,ssl.hdll,datachannel.hdll} -lSDL2 -lhl -lm -luv + strip marblegame + + - run: + name: Package Bundle + command: | + mkdir -p ~/MBHaxe-Ultra-Linux + cd ~/MBHaxe-Ultra-Linux + cp ~/MBHaxe/marblegame.hl . + cp ~/MBHaxe/native/marblegame . + cp ~/MBHaxe/linux-dist/* . + cp -r ~/MBHaxe/data data + cp /usr/local/lib/{{fmt,openal,sdl,ssl,ui,uv,datachannel}.hdll,libhl.so.1.13.0} . + cp /usr/local/bin/hl . + ln -s libhl.so.1.13.0 libhl.so.1 + ln -s libhl.so.1 libhl.so + cd .. + tar -czvf MBHaxe-Ultra-Linux.tar.gz MBHaxe-Ultra-Linux + build-uwp: executor: name: win/server-2022 @@ -611,6 +722,13 @@ workflows: build-universal-windows: jobs: - build-uwp: + filters: + tags: + only: /^\d+.\d+.\d+$/ + + build-lin: + jobs: + - build-linux: filters: tags: only: /^\d+.\d+.\d+$/ \ No newline at end of file diff --git a/compile-linux.hxml b/compile-linux.hxml index bcea82ed..3d082e48 100644 --- a/compile-linux.hxml +++ b/compile-linux.hxml @@ -1,7 +1,10 @@ -cp src -lib heaps -lib hlsdl +-lib colyseus-websocket +-lib datachannel -D highDPI -D flow_border +-D analyzer-optimize -hl native/marblegame.c --main Main diff --git a/compile-linux.sh b/compile-linux.sh index 4aaad4ec..7428eb98 100755 --- a/compile-linux.sh +++ b/compile-linux.sh @@ -2,5 +2,5 @@ haxe compile-linux.hxml cd native -gcc -o marblegame -g -I . -L /usr/local/lib marblegame.c /usr/local/lib/{ui.hdll,openal.hdll,fmt.hdll,sdl.hdll,uv.hdll,ssl.hdll} -lSDL2 -lhl -lm +gcc -o marblegame -O2 -g -I . -L /usr/local/lib marblegame.c /usr/local/lib/{ui.hdll,openal.hdll,fmt.hdll,sdl.hdll,uv.hdll,ssl.hdll,datachannel.hdll} -lSDL2 -lhl -lm -luv cp marblegame ..