Skip to content

Check and Test broken.so #7

Check and Test broken.so

Check and Test broken.so #7

name: Check and Test broken.so
on:
workflow_dispatch:
jobs:
check-and-test:
runs-on: ubuntu-latest
steps:
# Шаг 1: Клонирование репозитория
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libpq-dev openssl
- uses: otymko/[email protected]
with:
version: dev
# Шаг 2: Проверка наличия библиотеки
- name: Verify library exists
run: |
if [ ! -f ./service/broken.so ]; then
echo "Error: broken.so not found in the root directory!"
exit 1
fi
echo "broken.so found."
# Шаг 3: Проверка зависимостей с помощью ldd
- name: Check library dependencies
run: |
ldd ./service/broken.so || { echo "Error: Failed to check dependencies with ldd"; exit 1; }
echo "Dependencies checked successfully."
# Шаг 4: Установка недостающих зависимостей (если они есть)
- name: Install missing dependencies
run: |
sudo apt-get update
sudo apt-get install -y libc6-dev libpthread-stubs0-dev
# Шаг 5: Проверка версии glibc
- name: Check glibc version
run: |
ldd --version | head -n 1
echo "If this version is older than your local system's glibc, you may need to rebuild the library on a compatible system."
# Шаг 6: Проверка работы библиотеки
- name: Test library functionality
run: |
# Создаем простой тестовый исполняемый файл для проверки библиотеки
cat > test.c <<EOF
#include <stdio.h>
#include <dlfcn.h>
int main() {
void* handle = dlopen("./service/broken.so", RTLD_LAZY);
if (!handle) {
fprintf(stderr, "Error: %s\n", dlerror());
return 1;
}
printf("Library loaded successfully.\n");
dlclose(handle);
return 0;
}
EOF
# Компилируем тестовый файл
gcc -o test.test test.c -ldl
# Запускаем тест
./test.test || { echo "Error: Library failed to load."; exit 1; }
echo "Library tested successfully."
- name: OneScript test
run: oscript ./service/broken.os
# Шаг 7: Очистка после выполнения
- name: Cleanup
run: |
rm -f test.c test.test
echo "Cleanup complete."