From 962345664845462d42def40a4f7a9ce5ec661d11 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Fri, 11 Sep 2026 00:07:30 +0800 Subject: [PATCH] Fix native platform configuration and packaging validation --- .github/workflows/tests.yml | 2 +- cmake/InstallPackage.cmake | 4 ++-- debian/control | 6 ++++++ debian/libshadowsocks-libev-dev.install | 3 +++ debian/rules | 2 +- debian/shadowsocks-libev.install | 1 + src/manager.c | 2 +- src/platform.h | 1 + tests/test_process.c | 9 ++++++++- 9 files changed, 24 insertions(+), 6 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1a0ac2da..9af7418d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -98,7 +98,7 @@ jobs: - name: Run clang-tidy on project sources run: | - run-clang-tidy-18 -quiet -p build '/src/[^/]+\.c$' 2>/dev/null | tee tidy.log || true + run-clang-tidy-18 -quiet -p build "$PWD/src/[^/]+\.c$" 2>/dev/null | tee tidy.log || true grep 'warning:' tidy.log | sort -u > warnings.txt || true count="$(wc -l < warnings.txt)" echo "clang-tidy warnings: $count (max allowed: $MAX_WARNINGS)" diff --git a/cmake/InstallPackage.cmake b/cmake/InstallPackage.cmake index 204f5b21..0c69b439 100644 --- a/cmake/InstallPackage.cmake +++ b/cmake/InstallPackage.cmake @@ -43,7 +43,7 @@ if(SS_BUILD_STATIC_LIBRARY) endif() endif() # Resolve libdir relative to this installed config, supporting --prefix relocation. - file(RELATIVE_PATH libdir_from_config "/${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev" "/${CMAKE_INSTALL_LIBDIR}") + file(RELATIVE_PATH libdir_from_config "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") string(APPEND private_content "get_filename_component(_ss_libdir \"\${CMAKE_CURRENT_LIST_DIR}/${libdir_from_config}\" ABSOLUTE)\n") string(APPEND private_content "set_property(TARGET shadowsocks::static PROPERTY INTERFACE_LINK_LIBRARIES \"${private_links}\")\n") endif() @@ -63,7 +63,7 @@ write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/package/shadowsock install(FILES "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev-config-version.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/shadowsocks-libev) -file(RELATIVE_PATH SS_PC_PREFIX_RELATIVE "/${CMAKE_INSTALL_LIBDIR}/pkgconfig" "/") +file(RELATIVE_PATH SS_PC_PREFIX_RELATIVE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/pkgconfig" "${CMAKE_CURRENT_BINARY_DIR}") configure_file(cmake/shadowsocks-libev.pc.cmake "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev.pc.in" @ONLY) file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/shadowsocks-libev.pc" INPUT "${CMAKE_CURRENT_BINARY_DIR}/package/shadowsocks-libev.pc.in") diff --git a/debian/control b/debian/control index 132443f6..30317194 100644 --- a/debian/control +++ b/debian/control @@ -7,6 +7,7 @@ Uploaders: Boyuan Yang , Roger Shimizu Build-Depends: + cmake (>= 3.20), asciidoc-base | asciidoc, debhelper (>= 10), libc-ares-dev, @@ -51,6 +52,11 @@ Section: libdevel Breaks: shadowsocks-libev (<< 2.4.0) Depends: libshadowsocks-libev2 (= ${binary:Version}), + libc-ares-dev, + libev-dev, + libmbedtls-dev, + libpcre2-dev, + libsodium-dev, ${misc:Depends} Description: lightweight and secure socks5 proxy (development files) Shadowsocks-libev is a lightweight and secure socks5 proxy for diff --git a/debian/libshadowsocks-libev-dev.install b/debian/libshadowsocks-libev-dev.install index 304e0ed9..60b6f646 100644 --- a/debian/libshadowsocks-libev-dev.install +++ b/debian/libshadowsocks-libev-dev.install @@ -1,3 +1,6 @@ usr/include/ usr/lib/*/libshadowsocks-libev.so +usr/lib/*/libshadowsocks-libev.a +usr/lib/*/shadowsocks-libev/ +usr/lib/*/cmake/shadowsocks-libev/ usr/lib/*/pkgconfig/ diff --git a/debian/rules b/debian/rules index 7ec59151..75e9b52f 100755 --- a/debian/rules +++ b/debian/rules @@ -11,7 +11,7 @@ override_dh_auto_install: dh_auto_install override_dh_auto_configure: - dh_auto_configure -- -DSS_DEPENDENCY_MODE=system -DWITH_STATIC=OFF -DWITH_DOC_MAN=ON -DSS_INSTALL_TOOLS=ON + dh_auto_configure -- -DSS_DEPENDENCY_MODE=system -DWITH_STATIC=OFF -DWITH_DOC_MAN=ON -DWITH_DOC_HTML=ON -DSS_INSTALL_TOOLS=ON override_dh_installchangelogs: dh_installchangelogs -XChanges diff --git a/debian/shadowsocks-libev.install b/debian/shadowsocks-libev.install index 24fa1f6d..cad7d5a6 100644 --- a/debian/shadowsocks-libev.install +++ b/debian/shadowsocks-libev.install @@ -5,3 +5,4 @@ debian/shadowsocks-libev-*.service lib/systemd/system usr/bin/ usr/share/man/ usr/share/doc/shadowsocks-libev/ +usr/share/licenses/shadowsocks-libev/ diff --git a/src/manager.c b/src/manager.c index 22834733..bb2c2f68 100644 --- a/src/manager.c +++ b/src/manager.c @@ -859,7 +859,7 @@ add_server(struct manager_ctx *manager, struct server *server) static void kill_pid_from_file(FILE *f) { - char buf[16]; + char buf[16] = {0}; int pid; if (fgets(buf, sizeof(buf), f) == NULL) { diff --git a/src/platform.h b/src/platform.h index bbd1f1e0..c6ec1eff 100644 --- a/src/platform.h +++ b/src/platform.h @@ -10,6 +10,7 @@ typedef SOCKET ss_socket_t; #else #include +#include #include #include #include diff --git a/tests/test_process.c b/tests/test_process.c index 7bd2031c..a4d88840 100644 --- a/tests/test_process.c +++ b/tests/test_process.c @@ -31,7 +31,14 @@ main(int argc, char **argv) struct ss_process *process = ss_process_new("ss-no-such-program-ef91ac"); ss_process_arg(process, "ss-no-such-program-ef91ac"); - assert(ss_process_start(process, 0) == -1); + int started = ss_process_start(process, 0); + assert(started == -1 || started == 0); + /* POSIX permits exec failure to be reported by child exit (notably under + * Valgrind's spawn wrapper), rather than synchronously by posix_spawnp. */ + if (started == 0) { + for (unsigned i = 0; i < 500 && ss_process_running(process); i++) pause_tick(); + assert(!ss_process_running(process)); + } ss_process_free(process); char path[4096];