Add gitlab CI stuff for binary mode
This makes gitlab auto build binary mode packages for the stable branch.
This commit is contained in:
parent
d69453186e
commit
1d5c30b2df
26
.gitlab-ci.yml
Normal file
26
.gitlab-ci.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# File responsible for building the cathook "binary package"
|
||||||
|
|
||||||
|
image: "nullworks/cathook-ci-ubuntu:latest"
|
||||||
|
|
||||||
|
variables:
|
||||||
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
|
||||||
|
pages:
|
||||||
|
script:
|
||||||
|
# Build cathook
|
||||||
|
- mkdir build_cathook && pushd build_cathook && cmake .. && make && popd
|
||||||
|
# Create the "package" containing everything needed
|
||||||
|
- mkdir package && mv ./bin/libcathook.so ./package/libcathook.so && mv ./data ./package/data && mv ./config_data ./package/config_data && mv ./scripts/binarypackage/install ./package/install && mv ./scripts/binarypackage/attach ./package/attach
|
||||||
|
# Build a static gdb
|
||||||
|
- mkdir build_gdb && pushd build_gdb && wget http://ftp.gnu.org/gnu/gdb/gdb-9.1.tar.xz -O gdb.tar.xz && tar xf gdb.tar.xz --strip-components 1 && mkdir build && pushd build && ../configure --prefix=<> --enable-static=yes --enable-inprocess-agent=no CFLAGS="-static -Os -s" CXXFLAGS="-Os -s -static" && make && popd && popd
|
||||||
|
# Create public directory
|
||||||
|
- mkdir public && tar -czf ./public/package.tar.gz ./package/ && mv ./build_gdb/build/gdb/gdb ./public/gdb
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- public
|
||||||
|
expire_in: 1 weeks
|
||||||
|
stage: build
|
||||||
|
only:
|
||||||
|
- stable
|
62
scripts/binarypackage/attach
Executable file
62
scripts/binarypackage/attach
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Error codes:
|
||||||
|
# 1 Generic
|
||||||
|
# 2 TF2 not running
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
[[ ! -z "$SUDO_USER" ]] && RUNUSER="$SUDO_USER" || RUNUSER="$LOGNAME"
|
||||||
|
|
||||||
|
line=$(pgrep -u $RUNUSER hl2_linux || true)
|
||||||
|
arr=($line)
|
||||||
|
|
||||||
|
if [ $# == 1 ]; then
|
||||||
|
proc=$1
|
||||||
|
else
|
||||||
|
if [ ${#arr[@]} == 0 ]; then
|
||||||
|
echo TF2 isn\'t running!
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
proc=${arr[0]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Running instances: "${arr[@]}"
|
||||||
|
echo Attaching to "$proc"
|
||||||
|
|
||||||
|
#sudo ./detach $inst bin/libcathook.so
|
||||||
|
|
||||||
|
#if grep -q "$(realpath bin/libcathook.so)" /proc/"$proc"/maps; then
|
||||||
|
# echo already loaded
|
||||||
|
# exit
|
||||||
|
#fi
|
||||||
|
|
||||||
|
# pBypass for crash dumps being sent
|
||||||
|
# You may also want to consider using -nobreakpad in your launch options.
|
||||||
|
mkdir -p /tmp/dumps # Make it as root if it doesnt exist
|
||||||
|
chown root:root /tmp/dumps # Claim it as root
|
||||||
|
chmod 000 /tmp/dumps # No permissions
|
||||||
|
|
||||||
|
FILENAME="/tmp/.gl$(head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 6)"
|
||||||
|
|
||||||
|
cp "libcathook.so" "$FILENAME"
|
||||||
|
|
||||||
|
echo loading "$FILENAME" to "$proc"
|
||||||
|
|
||||||
|
|
||||||
|
gdbbin="gdb"
|
||||||
|
if ! [ -x "$(command -v gdb)" ]; then
|
||||||
|
gdbbin="../gdb"
|
||||||
|
chmod +x "$gdbbin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$gdbbin -n -q -batch \
|
||||||
|
-ex "attach $proc" \
|
||||||
|
-ex "set \$dlopen = (void*(*)(char*, int)) dlopen" \
|
||||||
|
-ex "call \$dlopen(\"$FILENAME\", 1)" \
|
||||||
|
-ex "call dlerror()" \
|
||||||
|
-ex 'print (char *) $2' \
|
||||||
|
-ex "detach" \
|
||||||
|
-ex "quit"
|
||||||
|
|
||||||
|
rm $FILENAME
|
3
scripts/binarypackage/install
Executable file
3
scripts/binarypackage/install
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
\cp -rf ./data/ ../
|
||||||
|
\cp -nr ./config_data/* ../data
|
1
scripts/binarypackage/readme
Normal file
1
scripts/binarypackage/readme
Normal file
@ -0,0 +1 @@
|
|||||||
|
Just some scripts used by the "binary" version of cathook available in cathook-gui. Ignore this if you are just using cathook.
|
Reference in New Issue
Block a user