Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
6067cb2
Implement a base cmake file that produces the same compile flags as a…
hemagx May 1, 2026
3798894
Addition of cmake files for 3rdparty dependencies we will keep buildi…
hemagx May 1, 2026
72c1b14
Removal of pcre, zlib, cjson, libbacktrace and mariadb connector from…
hemagx May 1, 2026
e3938d8
Addition of the previously removed libraries from 3rdparty to cmake t…
hemagx May 1, 2026
a40302f
Add target for common library to cmake
hemagx May 1, 2026
9bb577d
Implement configuration options from original configure into cmake
hemagx May 2, 2026
c3cf218
Move sysninfo.inc to build directory and corrected CFLAGS passed to i…
hemagx May 2, 2026
2debe50
Addition of CMakeFileLists to compile login, char, map and api server
hemagx May 2, 2026
31c9c9e
Update sysinfo generation to use custom which gives a more stable aut…
hemagx May 2, 2026
357d7ae
Migrate conan file to python file instead to be abel to selectively d…
hemagx May 2, 2026
006d24c
Implement deployment of conan built libraries and RPATH handling of i…
hemagx May 3, 2026
2b04f38
Add support for compiling plugins, still missing custom compiler flag…
hemagx May 3, 2026
dfb9c19
Fix config headers was not being correctly added to server targets
hemagx May 3, 2026
855a30b
Implement tests building and integeration with ctest
hemagx May 3, 2026
a16132d
Change plugins now to reside in their own directory and have their ow…
hemagx May 7, 2026
995f06f
Implement doxygen docs generation target
hemagx May 7, 2026
47199ee
Implement HPM hooks generation target
hemagx May 7, 2026
eba87bb
Removal of the old makefile and autoconf build system
hemagx May 7, 2026
8c51d56
Implement the ability for plugins to pass custom compiler flags
hemagx May 7, 2026
3e0f271
Fix compile errors/warnings with plugin test_equippos
hemagx May 7, 2026
afc1229
Add sql custom target to emulate make file build behavior
hemagx May 7, 2026
ed91363
Add -Wno-null-dereference to libconfig build as the lexer generated f…
hemagx May 7, 2026
6e9d770
Change file globs to have the flag CONFIGURE_DEPENDS
hemagx May 7, 2026
30c6532
Disable TLS verification in mariadb options
hemagx May 9, 2026
92d04e1
Move of tests under a cmake option ENABLE_TESTING so it's not compile…
hemagx May 9, 2026
b9bb1cb
Add a default installation target into source_dir/bin
hemagx May 12, 2026
c6ca7b8
Change hercules plugins install path to herc-plugins so it doesn't co…
hemagx May 12, 2026
42136f8
Remove libgif from 3rdparty and move to conan package
hemagx May 12, 2026
aacda0f
Move nullpo_backtrace_get_executable_path to be a core function and d…
hemagx May 13, 2026
b927ee9
Change hercules plugin directory to be relative to executable path an…
hemagx May 13, 2026
0d6dd34
Removal of dbghelpplug plugin for windows
hemagx May 13, 2026
2dead8f
Source changes to correctly build on windows with cmake and required …
hemagx May 13, 2026
3ad1b96
Removal of project files for MSVS
hemagx May 13, 2026
a3a1bec
Update windows bat files to reflect the new default directory structure
hemagx May 13, 2026
0576fec
Update bash scripts and athena-start to reflect new directory structure
hemagx May 13, 2026
fb4f982
Add missing options to linker for sanitized builds
hemagx May 23, 2026
e0c9c8e
Addition of ENABLE_CLASSIC_AUTOSPELL option to cmake
hemagx May 23, 2026
88188c5
Update github actions to work with the new cmake setup
hemagx May 13, 2026
713273e
Remove xcode and mac specific files
hemagx May 23, 2026
83cf2ba
Change gcc-snapshot CI build to just current gcc and make it the main…
hemagx May 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 17 additions & 13 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ env:
MYSQL_USER: 'ragnarok'
MYSQL_PASSWORD: 'ragnarok'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
DEBIAN_COMMON_PACKAGES: make zlib1g-dev libpcre3-dev git python3 libzstd-dev
DEBIAN_COMMON_PACKAGES: make git python3 libzstd-dev python3-venv cmake g++

defaults:
run:
shell: bash

jobs:
build:
Expand All @@ -16,18 +20,16 @@ jobs:
strategy:
matrix:
# Testing the oldest and newest supported version of gcc/clang on our supported platofrms
CC: ["clang-15", "clang-19", "gcc-12", "gcc-14"]
CC: ["clang", "gcc"]
RENEWAL: [""]
CLIENT_TYPE: ["", "--enable-packetver-re", "--enable-packetver-zero"]
HTTPLIB: ["", "--with-http_parser=llhttp"]
CLIENT_TYPE: ["", "-DENABLE_PACKETVER_RE=ON", "-DENABLE_PACKETVER_ZERO=ON"]
HTTPLIB: ["", "-DWITH_HTTP_PARSER=llhttp"]
SANITIZER: [""]
PACKET_VERSION: ["--enable-packetver=20100105", "--enable-packetver=20171018"]
LTO: ["", "--enable-lto"]
PACKET_VERSION: ["-DPACKETVER=20100105", "-DPACKETVER=20171018"]
LTO: ["", "-DENABLE_LTO=ON"]
exclude:
- PACKET_VERSION: "--enable-packetver=20100105"
CLIENT_TYPE: "--enable-packetver-zero"
- CC: "clang-11"
LTO: "--enable-lto"
- PACKET_VERSION: "-DPACKETVER=20100105"
CLIENT_TYPE: "-DENABLE_PACKETVER_ZERO=ON"

# github.head_ref will stop previous runs in the same PR (if in a PR)
# github.run_id is a fallback when outside a PR (e.g. every merge in master will run, and previous won't stop)
Expand All @@ -36,7 +38,7 @@ jobs:
cancel-in-progress: true

container:
image: ubuntu:24.04
image: ubuntu:26.04
services:
mariadb:
image: mariadb:latest
Expand All @@ -53,10 +55,10 @@ jobs:
--health-timeout=2s
--health-retries=3
env:
INSTALL_PACKAGES: ${{ matrix.CC }} mariadb-client libmariadbclient-dev-compat
INSTALL_PACKAGES: ${{ matrix.CC }} mariadb-client
SQLHOST: mariadb
CC: ${{ matrix.CC }}
CONFIGURE_FLAGS: CC=${{ matrix.CC }} --enable-debug --enable-Werror --enable-buildbot ${{ matrix.RENEWAL }} ${{ matrix.HTTPLIB }} ${{ matrix.CLIENT_TYPE }} ${{ matrix.SANITIZER }} ${{ matrix.PACKET_VERSION }} --enable-epoll
CONFIGURE_FLAGS: -DCMAKE_C_COMPILER=${{ matrix.CC }} -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=ON -DENABLE_BUILDBOT=ON ${{ matrix.RENEWAL }} ${{ matrix.HTTPLIB }} ${{ matrix.CLIENT_TYPE }} ${{ matrix.SANITIZER }} ${{ matrix.PACKET_VERSION }} -DENABLE_EPOLL=ON
steps:
- uses: actions/checkout@v6
with:
Expand All @@ -81,6 +83,8 @@ jobs:

- name: build
run: |
./tools/ci/travis.sh prepareenv
source .venv/bin/activate
./tools/ci/travis.sh build $CONFIGURE_FLAGS

# for run default config will show warnings
24 changes: 18 additions & 6 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: "CodeQL"

on: workflow_call

defaults:
run:
shell: bash

jobs:
analyze:
name: Analyze
Expand All @@ -10,7 +14,11 @@ jobs:
strategy:
fail-fast: false
matrix:
language: ['c', 'python']
include:
- language: 'c'
build-mode: 'manual'
- language: 'python'
build-mode: 'none'

# github.head_ref will stop previous runs in the same PR (if in a PR)
# github.run_id is a fallback when outside a PR (e.g. every merge in master will run, and previous won't stop)
Expand All @@ -34,11 +42,15 @@ jobs:
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}

# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4
build-mode: ${{ matrix.build-mode }}

# Build hercules
- if: matrix.build-mode == 'manual'
name: Manual Build
run: |
./tools/ci/travis.sh prepareenv
source .venv/bin/activate
./tools/ci/travis.sh build -DCMAKE_BUILD_TYPE=Release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
4 changes: 2 additions & 2 deletions .github/workflows/controller.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ jobs:
# needs: build
# if: ${{ !failure() && !cancelled() }}
# uses: ./.github/workflows/gcc_test.yml
gccsnapshot_test:
sanitizer:
needs: build
if: ${{ !failure() && !cancelled() }}
uses: ./.github/workflows/gccsnapshot_test.yml
uses: ./.github/workflows/sanitizer.yml
mariadb:
needs: build
if: ${{ !failure() && !cancelled() }}
Expand Down
72 changes: 41 additions & 31 deletions .github/workflows/hwsapibot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@ on:
workflow_call:

env:
INSTALL_PACKAGES: make gcc zlib1g-dev libpcre3-dev git libmariadbclient-dev-compat doxygen perl libxml-simple-perl libxml-parser-perl bc curl
INSTALL_PACKAGES: cmake make gcc g++ git doxygen perl libxml-simple-perl libxml-parser-perl bc curl python3-venv python3
BUILDSTATS_API_KEY: ${{ secrets.BUILDSTATS_API_KEY }}
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}

defaults:
run:
shell: bash

jobs:
hwsapi:
runs-on: ubuntu:24.04
runs-on: ubuntu-latest
concurrency:
group: hwsapibot
cancel-in-progress: true
Expand All @@ -25,87 +29,93 @@ jobs:
run: |
./tools/ci/retry.sh sudo apt-get update
./tools/ci/retry.sh sudo apt-get install -y -qq $INSTALL_PACKAGES
./tools/ci/travis.sh prepareenv


- name: configure
- name: CMake configuring
run: |
start_time=$(date +%s.%3N)
echo "start_time=$start_time" >> $GITHUB_ENV
git config --local user.name hwsapibot
git config --local user.email dev@herc.ws
echo -n "$GPG_SIGNING_KEY" | base64 --decode | gpg --import
git config --local user.signingkey A667DC2F80D63FEF
./configure --enable-debug --disable-lto
make clean
source .venv/bin/activate
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake_modules/conan_provider.cmake -DCMAKE_BUILD_TYPE=Debug

- name: hpmhooking
run: |
start_this=$(date +%s.%3N)
make hooks
(cd build && make hooks)
end_this=$(date +%s.%3N)
elapsed_hooks=$(echo "scale=0; ($end_this - $start_this) * 1000 / 1" | bc)
echo "elapsed_hooks=$elapsed_hooks" >> $GITHUB_ENV
git commit -am 'Update HPM hooks' --signoff --gpg-sign || echo "Nothing to commit"

- name: build
run: |
source .venv/bin/activate
start_this=$(date +%s.%3N)
make sql -j3
(cd build && make sql -j3)
end_this=$(date +%s.%3N)
elapsed_build=$(echo "scale=0; ($end_this - $start_this) * 1000 / 1" | bc)
echo "elapsed_build=$elapsed_build" >> $GITHUB_ENV

- name: itemdb2sql
run: |
./configure --enable-debug --disable-lto --disable-renewal
make clean
source .venv/bin/activate
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake_modules/conan_provider.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_RENEWAL=OFF
(cd build && make clean)
start_this=$(date +%s.%3N)
make map_sql plugin.db2sql -j3
./map-server --load-plugin db2sql --itemdb2sql
(cd build && make map-server plugin.db2sql install -j3)
./bin/map-server --load-plugin db2sql --itemdb2sql
end_this=$(date +%s.%3N)
elapsed_itemdb=$(echo "scale=0; ($end_this - $start_this) * 1000 / 1" | bc)
./configure --enable-debug --disable-lto --enable-renewal
make clean
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake_modules/conan_provider.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_RENEWAL=ON
(cd build && make clean)
start_this=$(date +%s.%3N)
make map_sql plugin.db2sql -j3
./map-server --load-plugin db2sql --itemdb2sql
(cd build && make map-server plugin.db2sql install -j3)
./bin/map-server --load-plugin db2sql --itemdb2sql
end_this=$(date +%s.%3N)
elapsed_itemdb=$(echo "scale=0; $elapsed_itemdb + ($end_this - $start_this) * 1000 / 1" | bc)
echo "elapsed_itemdb=$elapsed_itemdb" >> $GITHUB_ENV
git commit -am 'Update item_db SQL data' --signoff --gpg-sign || echo "Nothing to commit"

- name: mobdb2sql
run: |
./configure --enable-debug --disable-lto --disable-renewal
make clean
source .venv/bin/activate
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake_modules/conan_provider.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_RENEWAL=OFF
(cd build && make clean)
start_this=$(date +%s.%3N)
make map_sql plugin.db2sql -j3
./map-server --load-plugin db2sql --mobdb2sql
(cd build && make map-server plugin.db2sql install -j3)
./bin/map-server --load-plugin db2sql --mobdb2sql
end_this=$(date +%s.%3N)
elapsed_mobdb=$(echo "scale=0; ($end_this - $start_this) * 1000 / 1" | bc)
./configure --enable-debug --disable-lto --enable-renewal
make clean
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake_modules/conan_provider.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_RENEWAL=ON
(cd build && make clean)
start_this=$(date +%s.%3N)
make map_sql plugin.db2sql -j3
./map-server --load-plugin db2sql --mobdb2sql
(cd build && make map-server plugin.db2sql install -j3)
./bin/map-server --load-plugin db2sql --mobdb2sql
end_this=$(date +%s.%3N)
elapsed_mobdb=$(echo "scale=0; $elapsed_mobdb + ($end_this - $start_this) * 1000 / 1" | bc)
echo "elapsed_mobdb=$elapsed_mobdb" >> $GITHUB_ENV
git commit -am 'Update mob_db SQL data' --signoff --gpg-sign || echo "Nothing to commit"

- name: constdb2doc
run: |
./configure --enable-debug --disable-lto --disable-renewal
make clean
source .venv/bin/activate
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake_modules/conan_provider.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_RENEWAL=OFF
(cd build && make clean)
start_this=$(date +%s.%3N)
make map_sql plugin.constdb2doc -j3
./map-server --load-plugin constdb2doc --constdb2doc
(cd build && make map-server plugin.constdb2doc install -j3)
./bin/map-server --load-plugin constdb2doc --constdb2doc
end_this=$(date +%s.%3N)
elapsed_constdb=$(echo "scale=0; ($end_this - $start_this) * 1000 / 1" | bc)
./configure --enable-debug --disable-lto --enable-renewal
make clean
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake_modules/conan_provider.cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_RENEWAL=ON
(cd build && make clean)
start_this=$(date +%s.%3N)
make map_sql plugin.constdb2doc -j3
./map-server --load-plugin constdb2doc --constdb2doc
(cd build && make map-server plugin.constdb2doc install -j3)
./bin/map-server --load-plugin constdb2doc --constdb2doc
end_this=$(date +%s.%3N)
elapsed_constdb=$(echo "scale=0; $elapsed_constdb + ($end_this - $start_this) * 1000 / 1" | bc)
echo "elapsed_constdb=$elapsed_constdb" >> $GITHUB_ENV
Expand Down
27 changes: 14 additions & 13 deletions .github/workflows/mariadb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ env:
MYSQL_USER: 'ragnarok'
MYSQL_PASSWORD: 'ragnarok'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
DEBIAN_COMMON_PACKAGES: make zlib1g-dev libpcre3-dev git python3 libzstd-dev
DEBIAN_COMMON_PACKAGES: cmake make git python3 python3-venv libzstd-dev g++

defaults:
run:
shell: bash

jobs:
build:
Expand All @@ -18,9 +22,9 @@ jobs:
CC: [gcc]
RENEWAL: [""]
CLIENT_TYPE: [""]
HTTPLIB: ["", "--with-http_parser=llhttp"]
SANITIZER: ["--disable-manager", "--enable-sanitize=full"]
PACKET_VERSION: ["--enable-packetver=20221024"]
HTTPLIB: ["", "-DWITH_HTTP_PARSER=llhttp"]
SANITIZER: ["-DMEMORY_MANAGER=none", "-DMEMORY_MANAGER=none -DENABLE_SANITIZE=ON"]
PACKET_VERSION: ["-DPACKETVER=20221024"]
MYSQL: ["10.11", "11.8", "latest"]

# github.head_ref will stop previous runs in the same PR (if in a PR)
Expand All @@ -30,7 +34,7 @@ jobs:
cancel-in-progress: true

container:
image: ubuntu:24.04
image: ubuntu:26.04
services:
mysql:
image: mariadb:${{ matrix.MYSQL }}
Expand All @@ -47,10 +51,10 @@ jobs:
--health-timeout=2s
--health-retries=3
env:
INSTALL_PACKAGES: ${{ matrix.CC }} mariadb-client libmariadbclient-dev-compat
INSTALL_PACKAGES: ${{ matrix.CC }} mariadb-client
SQLHOST: mysql
CC: ${{ matrix.CC }}
CONFIGURE_FLAGS: CC=${{ matrix.CC }} --enable-debug --enable-Werror --enable-buildbot ${{ matrix.RENEWAL }} ${{ matrix.HTTPLIB }} ${{ matrix.CLIENT_TYPE }} ${{ matrix.SANITIZER }} ${{ matrix.PACKET_VERSION }}
CONFIGURE_FLAGS: -DCMAKE_C_COMPILER=${{ matrix.CC }} -DCMAKE_BUILD_TYPE=Debug -DENABLE_WERROR=ON -DENABLE_BUILDBOT=ON ${{ matrix.RENEWAL }} ${{ matrix.HTTPLIB }} ${{ matrix.CLIENT_TYPE }} ${{ matrix.SANITIZER }} ${{ matrix.PACKET_VERSION }}
PACKET_VERSION: ${{ matrix.PACKET_VERSION }}
steps:
- uses: actions/checkout@v6
Expand All @@ -76,18 +80,15 @@ jobs:

- name: build
run: |
./tools/ci/travis.sh prepareenv
source .venv/bin/activate
./tools/ci/travis.sh build $CONFIGURE_FLAGS

- name: test
run: |
./tools/ci/travis.sh test ragnarok ragnarok ragnarok $SQLHOST

- name: extra test
if: env.PACKET_VERSION != '--enable-packetver=20130724'
run: |
./tools/ci/travis.sh extratest

- name: extra test
if: env.PACKET_VERSION != '--enable-packetver=20130724'
if: env.PACKET_VERSION != '-DPACKETVER=20130724'
run: |
./tools/ci/travis.sh extratest
Loading
Loading