From 453eb391d4393f6e2b652ce9cff2baad2aff6da8 Mon Sep 17 00:00:00 2001 From: Sophie Depassio Date: Thu, 21 May 2026 09:52:14 +0200 Subject: [PATCH 1/5] enh(stream-connectors-lib): package lsqlite3 --- .github/workflows/lua-cffi.yml | 2 +- .github/workflows/lua-lsqlite3.yml | 224 ++++++++++++++++++ .../lua-lsqlite3/packaging/lua-lsqlite3.yaml | 38 +++ 3 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/lua-lsqlite3.yml create mode 100644 dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml diff --git a/.github/workflows/lua-cffi.yml b/.github/workflows/lua-cffi.yml index a4dabaa3..42c6cb11 100644 --- a/.github/workflows/lua-cffi.yml +++ b/.github/workflows/lua-cffi.yml @@ -105,7 +105,7 @@ jobs: cd cffi-lua-src mkdir build cd build - if [[ "$DISTRIB" = "el9" || "$DISTRIB" = "el10" ]]; then + if [[ "$DISTRIB" = "el9" || "$DISTRIB" = "el10" || "$DISTRIB" = "trixie" ]]; then meson .. -Dlua_version=5.4 else meson .. -Dlua_version=5.3 diff --git a/.github/workflows/lua-lsqlite3.yml b/.github/workflows/lua-lsqlite3.yml new file mode 100644 index 00000000..5abd2643 --- /dev/null +++ b/.github/workflows/lua-lsqlite3.yml @@ -0,0 +1,224 @@ +name: lua-lsqlite3 + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +on: + workflow_dispatch: + pull_request: + paths: + - '.github/workflows/lua-lsqlite3.yml' + - 'dependencies/lua-lsqlite3/**' + push: + branches: + - develop + - master + paths: + - '.github/workflows/lua-lsqlite3.yml' + - 'dependencies/lua-lsqlite3/**' + +jobs: + dependency-scan: + uses: centreon/security-tools/.github/workflows/dependency-analysis.yml@main + + get-environment: + needs: [dependency-scan] + uses: ./.github/workflows/get-environment.yml + + package: + needs: [get-environment] + + strategy: + fail-fast: false + matrix: + distrib: [el8, el9, el10, bullseye, bookworm, trixie, jammy, noble] + include: + - distrib: el8 + package_extension: rpm + image: packaging-stream-connectors-nfpm-alma8 + lua_version: 5.3 + - distrib: el9 + package_extension: rpm + image: packaging-stream-connectors-nfpm-alma9 + lua_version: 5.4 + - distrib: el10 + package_extension: rpm + image: packaging-stream-connectors-nfpm-alma10 + lua_version: 5.4 + - distrib: bullseye + package_extension: deb + image: packaging-stream-connectors-nfpm-bullseye + lua_version: 5.3 + - distrib: bookworm + package_extension: deb + image: packaging-stream-connectors-nfpm-bookworm + lua_version: 5.3 + - distrib: trixie + package_extension: deb + image: packaging-stream-connectors-nfpm-trixie + lua_version: 5.4 + - distrib: jammy + package_extension: deb + image: packaging-stream-connectors-nfpm-jammy + lua_version: 5.3 + - distrib: noble + package_extension: deb + image: packaging-stream-connectors-nfpm-noble + lua_version: 5.3 + + runs-on: ubuntu-24.04 + + container: + image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest + credentials: + username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }} + password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }} + + name: package ${{ matrix.distrib }} + + steps: + - name: Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Prepare packaging of lua-lsqlite3 + env: + PACKAGE_EXTENSION: ${{ matrix.package_extension }} + LUA_VERSION: ${{ matrix.lua_version }} + run: | + if [ "$PACKAGE_EXTENSION" = "rpm" ]; then + dnf install -y make gcc lua-devel unzip wget + else + apt-get update + apt-get install -y make gcc liblua${LUA_VERSION}-dev unzip wget + fi + + wget -O lsqlite3.zip "https://lua.sqlite.org/home/zip/lsqlite3_v097.zip?uuid=v0.9.7" + unzip lsqlite3.zip + mv lsqlite3_v097 lsqlite3_v0.9.7 + + if [ "$PACKAGE_EXTENSION" = "rpm" ]; then + LUA_INCDIR="/usr/include" + else + LUA_INCDIR="/usr/include/lua${LUA_VERSION}" + fi + cd lsqlite3_v097 + #gcc -O2 -shared -fPIC -o lsqlite3.so lsqlite3.c sqlite3.c -I"${LUA_INCDIR}" -ldl + #gcc -O2 -fPIC -shared -o lsqlite3.so lsqlite3.c -I/usr/include -L/usr/lib64 -Wl,-rpath,/usr/lib64 -lsqlite3 -DLSQLITE_VERSION='"0.9.7"' + #gcc -O2 -fPIC -shared -o lsqlite3.so lsqlite3.c -I/usr/include -DLSQLITE_VERSION='"0.9.7"' $(pkg-config --cflags --libs sqlite3) + gcc -O2 -fPIC -shared -o lsqlite3.so lsqlite3.c -I"/usr/include/lua${LUA_VERSION}" -DLSQLITE_VERSION='"0.9.7"' -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib -lsqlite3 + shell: bash + + - name: Package + uses: ./.github/actions/package-nfpm + with: + nfpm_file_pattern: "dependencies/lua-lsqlite3/packaging/*.yaml" + distrib: ${{ matrix.distrib }} + package_extension: ${{ matrix.package_extension }} + arch: amd64 + version: "0.9.7" + release: "1" + commit_hash: ${{ github.sha }} + cache_key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-lua-lsqlite3-${{ matrix.distrib }} + rpm_gpg_key: ${{ secrets.RPM_GPG_SIGNING_KEY }} + rpm_gpg_signing_key_id: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }} + rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }} + stability: ${{ needs.get-environment.outputs.stability }} + artifact_name: "package-lua-lsqlite3-${{ matrix.distrib }}" + + test-packages: + needs: [get-environment, package] + strategy: + fail-fast: false + matrix: + include: + - package_extension: rpm + image: almalinux:8 + distrib: el8 + - package_extension: rpm + image: almalinux:9 + distrib: el9 + - package_extension: rpm + image: almalinux:10 + distrib: el10 + - package_extension: deb + image: debian:bullseye + distrib: bullseye + - package_extension: deb + image: debian:bookworm + distrib: bookworm + - package_extension: deb + image: debian:trixie + distrib: trixie + - package_extension: deb + image: ubuntu:jammy + distrib: jammy + - package_extension: deb + image: ubuntu:noble + distrib: noble + + runs-on: ubuntu-24.04 + container: + image: ${{ matrix.image }} + + name: Test lua packages on ${{ matrix.package_extension }} ${{ matrix.distrib }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Test packaged libs + uses: ./.github/actions/test-packages + with: + package_extension: ${{ matrix.package_extension }} + distrib: ${{ matrix.distrib }} + cache_key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-lua-lsqlite3-${{ matrix.distrib }} + + - name: Upload error log + if: failure() + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 + with: + name: install_error_log_${{ matrix.distrib }} + path: install_error_${{ matrix.distrib }}.log + + deliver-rpm: + if: ${{ contains(fromJson('["unstable", "testing", "stable"]'), needs.get-environment.outputs.stability) }} + needs: [get-environment, package, test-packages] + runs-on: ubuntu-24.04 + strategy: + matrix: + distrib: [el8, el9, el10] + name: deliver ${{ matrix.distrib }} + + steps: + - name: Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Publish RPM packages + uses: ./.github/actions/rpm-delivery + with: + module_name: lua-lsqlite3 + distrib: ${{ matrix.distrib }} + artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} + cache_key: ${{ github.sha }}-${{ github.run_id }}-rpm-lua-lsqlite3-${{ matrix.distrib }} + stability: ${{ needs.get-environment.outputs.stability }} + + deliver-deb: + if: ${{ contains(fromJson('["unstable", "testing", "stable"]'), needs.get-environment.outputs.stability) }} + needs: [get-environment, package, test-packages] + runs-on: ubuntu-24.04 + strategy: + matrix: + distrib: [bullseye, bookworm, trixie, jammy, noble] + name: deliver ${{ matrix.distrib }} + + steps: + - name: Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Publish DEB packages + uses: ./.github/actions/deb-delivery + with: + module_name: lua-lsqlite3 + distrib: ${{ matrix.distrib }} + artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }} + cache_key: ${{ github.sha }}-${{ github.run_id }}-deb-lua-lsqlite3-${{ matrix.distrib }} + stability: ${{ needs.get-environment.outputs.stability }} diff --git a/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml b/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml new file mode 100644 index 00000000..b00289c8 --- /dev/null +++ b/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml @@ -0,0 +1,38 @@ +name: "lua-lsqlite3" +arch: "${ARCH}" +platform: "linux" +version_schema: "none" +version: "${VERSION}" +release: "${RELEASE}${DIST}" +section: "default" +priority: "optional" +maintainer: "Centreon " +description: | + Lua SQLite3 library + Commit: @COMMIT_HASH@ +vendor: "Centreon" +homepage: "https://www.centreon.com" +license: "MIT" + +contents: + - src: "../../../lsqlite3_v${VERSION}/lsqlite3.so" + dst: "/usr/lib64/lua/@luaver@/lsqlite3.so" + packager: rpm + + - src: "../../../lsqlite3_v${VERSION}/lsqlite3.so" + dst: "/usr/lib/x86_64-linux-gnu/lua/@luaver@/lsqlite3.so" + packager: deb + +overrides: + rpm: + depends: + - lua + deb: + depends: + - "lua@luaver@" + +rpm: + summary: Lua SQLite3 + signature: + key_file: ${RPM_SIGNING_KEY_FILE} + key_id: ${RPM_SIGNING_KEY_ID} From 1292f968b320441447e4e543e26d8a88b3b3c136 Mon Sep 17 00:00:00 2001 From: Sophie Depassio Date: Thu, 21 May 2026 18:29:26 +0200 Subject: [PATCH 2/5] fix --- .github/workflows/lua-lsqlite3.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lua-lsqlite3.yml b/.github/workflows/lua-lsqlite3.yml index 5abd2643..2ed0d497 100644 --- a/.github/workflows/lua-lsqlite3.yml +++ b/.github/workflows/lua-lsqlite3.yml @@ -85,6 +85,7 @@ jobs: env: PACKAGE_EXTENSION: ${{ matrix.package_extension }} LUA_VERSION: ${{ matrix.lua_version }} + LSQLITE3_VERSION: 0.9.7 run: | if [ "$PACKAGE_EXTENSION" = "rpm" ]; then dnf install -y make gcc lua-devel unzip wget @@ -93,20 +94,20 @@ jobs: apt-get install -y make gcc liblua${LUA_VERSION}-dev unzip wget fi - wget -O lsqlite3.zip "https://lua.sqlite.org/home/zip/lsqlite3_v097.zip?uuid=v0.9.7" + wget -O lsqlite3.zip "https://lua.sqlite.org/home/zip/lsqlite3_v097.zip?uuid=v${LSQLITE3_VERSION}" unzip lsqlite3.zip - mv lsqlite3_v097 lsqlite3_v0.9.7 + mv lsqlite3_v097 lsqlite3_v${LSQLITE3_VERSION} if [ "$PACKAGE_EXTENSION" = "rpm" ]; then LUA_INCDIR="/usr/include" else LUA_INCDIR="/usr/include/lua${LUA_VERSION}" fi - cd lsqlite3_v097 + cd lsqlite3_v${LSQLITE3_VERSION} #gcc -O2 -shared -fPIC -o lsqlite3.so lsqlite3.c sqlite3.c -I"${LUA_INCDIR}" -ldl #gcc -O2 -fPIC -shared -o lsqlite3.so lsqlite3.c -I/usr/include -L/usr/lib64 -Wl,-rpath,/usr/lib64 -lsqlite3 -DLSQLITE_VERSION='"0.9.7"' #gcc -O2 -fPIC -shared -o lsqlite3.so lsqlite3.c -I/usr/include -DLSQLITE_VERSION='"0.9.7"' $(pkg-config --cflags --libs sqlite3) - gcc -O2 -fPIC -shared -o lsqlite3.so lsqlite3.c -I"/usr/include/lua${LUA_VERSION}" -DLSQLITE_VERSION='"0.9.7"' -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib -lsqlite3 + gcc -O2 -fPIC -shared -o lsqlite3.so lsqlite3.c -I"/usr/include/lua${LUA_VERSION}" -DLSQLITE_VERSION='"${LSQLITE3_VERSION}"' -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib -lsqlite3 shell: bash - name: Package From cedc9729e79ed8492dc457ac7eea8881887c63d5 Mon Sep 17 00:00:00 2001 From: Sophie Depassio Date: Thu, 21 May 2026 18:59:59 +0200 Subject: [PATCH 3/5] fix install and versions --- ...ckerfile.packaging-stream-connectors-nfpm-trixie | 2 +- .github/workflows/lua-lsqlite3.yml | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/docker/Dockerfile.packaging-stream-connectors-nfpm-trixie b/.github/docker/Dockerfile.packaging-stream-connectors-nfpm-trixie index b8629c20..0c4d1cf7 100644 --- a/.github/docker/Dockerfile.packaging-stream-connectors-nfpm-trixie +++ b/.github/docker/Dockerfile.packaging-stream-connectors-nfpm-trixie @@ -5,7 +5,7 @@ FROM ${REGISTRY_URL}/debian:trixie RUN bash -e < Date: Thu, 21 May 2026 19:22:10 +0200 Subject: [PATCH 4/5] fix for lsqlite3 path --- .github/actions/package-nfpm/action.yml | 1 + dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/package-nfpm/action.yml b/.github/actions/package-nfpm/action.yml index 69240563..c5e42cf2 100644 --- a/.github/actions/package-nfpm/action.yml +++ b/.github/actions/package-nfpm/action.yml @@ -96,6 +96,7 @@ runs: BASENAME=$(basename $FILE) cd $DIRNAME sed -i "s/@luaver@/$luaver/g" $BASENAME + sed -i "s/@VERSION@/${INPUT_VERSION}/g" $BASENAME sed -i "s/@COMMIT_HASH@/${INPUT_COMMIT_HASH}/g" $BASENAME nfpm package --config "$BASENAME" --packager "$INPUT_PACKAGE_EXTENSION" cd - diff --git a/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml b/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml index b00289c8..f46a0b34 100644 --- a/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml +++ b/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml @@ -15,11 +15,11 @@ homepage: "https://www.centreon.com" license: "MIT" contents: - - src: "../../../lsqlite3_v${VERSION}/lsqlite3.so" + - src: "../../../lsqlite3_v@VERSION@/lsqlite3.so" dst: "/usr/lib64/lua/@luaver@/lsqlite3.so" packager: rpm - - src: "../../../lsqlite3_v${VERSION}/lsqlite3.so" + - src: "../../../lsqlite3_v@VERSION@/lsqlite3.so" dst: "/usr/lib/x86_64-linux-gnu/lua/@luaver@/lsqlite3.so" packager: deb From ab5e691ddfea966aa454450f9ff003516b6bf151 Mon Sep 17 00:00:00 2001 From: Sophie Depassio Date: Fri, 22 May 2026 10:49:13 +0200 Subject: [PATCH 5/5] add missing dependencies and tests --- .../lua-lsqlite3/packaging/lua-lsqlite3.yaml | 2 + tests/packaging/lua-lsqlite3.lua | 89 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 tests/packaging/lua-lsqlite3.lua diff --git a/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml b/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml index f46a0b34..0c0192b5 100644 --- a/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml +++ b/dependencies/lua-lsqlite3/packaging/lua-lsqlite3.yaml @@ -27,9 +27,11 @@ overrides: rpm: depends: - lua + - sqlite-libs deb: depends: - "lua@luaver@" + - libsqlite3-0 rpm: summary: Lua SQLite3 diff --git a/tests/packaging/lua-lsqlite3.lua b/tests/packaging/lua-lsqlite3.lua new file mode 100644 index 00000000..26ff3432 --- /dev/null +++ b/tests/packaging/lua-lsqlite3.lua @@ -0,0 +1,89 @@ +#!/usr/bin/env lua + +-- Check if the module can be loaded +local status, sqlite3 = pcall(require, 'lsqlite3') + +if not status then + print("ERROR: Unable to load lsqlite3 module") + print(sqlite3) + os.exit(1) +end + +print("✓ lsqlite3 module loaded successfully") + +-- Open an in-memory database +local db = sqlite3.open_memory() + +if not db then + print("ERROR: Unable to open in-memory database") + os.exit(1) +end + +print("✓ In-memory database opened successfully") + +-- Create a table +local rc = db:exec([[ + CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT, value REAL); +]]) + +if rc ~= sqlite3.OK then + print("ERROR: Unable to create table: " .. db:errmsg()) + db:close() + os.exit(1) +end + +print("✓ Table created successfully") + +-- Insert rows +local stmt = db:prepare("INSERT INTO test (name, value) VALUES (?, ?)") + +if not stmt then + print("ERROR: Unable to prepare insert statement: " .. db:errmsg()) + db:close() + os.exit(1) +end + +local rows = { + { "alpha", 1.1 }, + { "beta", 2.2 }, + { "gamma", 3.3 }, +} + +for _, row in ipairs(rows) do + stmt:bind_values(row[1], row[2]) + rc = stmt:step() + if rc ~= sqlite3.DONE then + print("ERROR: Unable to insert row: " .. db:errmsg()) + stmt:finalize() + db:close() + os.exit(1) + end + stmt:reset() +end + +stmt:finalize() +print("✓ Rows inserted successfully") + +-- Query and verify data +local count = 0 +for row in db:nrows("SELECT name, value FROM test ORDER BY id") do + count = count + 1 + local expected = rows[count] + if row.name ~= expected[1] or math.abs(row.value - expected[2]) > 1e-9 then + print(string.format("ERROR: Row %d mismatch: got (%s, %f), expected (%s, %f)", + count, row.name, row.value, expected[1], expected[2])) + db:close() + os.exit(1) + end +end + +if count ~= #rows then + print(string.format("ERROR: Expected %d rows, got %d", #rows, count)) + db:close() + os.exit(1) +end + +print("✓ Data queried and verified successfully") + +db:close() +print("\nAll tests passed - lua-lsqlite3 is working correctly!")