From e04cc9c9d53164a6934cb0048b742d01a5471408 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Wed, 12 Nov 2025 09:24:08 +0800 Subject: [PATCH 1/6] Packaging: update debian changelog [ci skip] --- debian/changelog.tpl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog.tpl b/debian/changelog.tpl index 6a1b897380..8e90bf2f7d 100644 --- a/debian/changelog.tpl +++ b/debian/changelog.tpl @@ -1,3 +1,9 @@ +fastfetch (2.55.0~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium + + * Update to 2.55.0 + + -- Carter Li Wed, 12 Nov 2025 09:15:24 +0800 + fastfetch (2.54.1~#UBUNTU_CODENAME#) #UBUNTU_CODENAME#; urgency=medium * Fix building on plucky From c22bca1f87c395665c35c8f64f4f9721781d7ff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sat, 15 Nov 2025 18:57:23 +0800 Subject: [PATCH 2/6] Processing (Linux): blocks SIGCHLD and simplify poll error handling Partially reverts e9ab67b380734d5c9527376b0b5e38b90bf37b97 Fixes #2056 & unfixes #1418 --- src/common/init.c | 9 ++++----- src/common/processing_linux.c | 32 +++++--------------------------- 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/src/common/init.c b/src/common/init.c index 8e27ebaf1c..fe75442451 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -92,10 +92,6 @@ static void exitSignalHandler(FF_MAYBE_UNUSED int signal) resetConsole(); exit(0); } -static void chldSignalHandler(FF_MAYBE_UNUSED int signal) -{ - // empty; used to interrupt the poll and read syscalls -} #endif void ffStart(void) @@ -121,7 +117,10 @@ void ffStart(void) sigaction(SIGINT, &action, NULL); sigaction(SIGTERM, &action, NULL); sigaction(SIGQUIT, &action, NULL); - sigaction(SIGCHLD, &(struct sigaction) { .sa_handler = chldSignalHandler }, NULL); + sigset_t newmask; + sigemptyset(&newmask); + sigaddset(&newmask, SIGCHLD); + sigprocmask(SIG_BLOCK, &newmask, NULL); #endif //reset everything to default before we start printing diff --git a/src/common/processing_linux.c b/src/common/processing_linux.c index c4139ff4b9..7ddd725da5 100644 --- a/src/common/processing_linux.c +++ b/src/common/processing_linux.c @@ -184,30 +184,13 @@ const char* ffProcessReadOutput(FFProcessHandle* handle, FFstrbuf* buffer) waitpid(childPid, NULL, 0); return "poll(&pollfd, 1, timeout) timeout (try increasing --processing-timeout)"; } - else if (pollret < 0) - { - if (errno == EINTR) - { - // The child process has been terminated. See `chldSignalHandler` in `common/init.c` - if (waitpid(childPid, NULL, WNOHANG) == childPid) - { - // Read remaining data from the pipe - fcntl(childPipeFd, F_SETFL, O_CLOEXEC | O_NONBLOCK); - childPid = -1; - } - } - else - { - kill(childPid, SIGTERM); - waitpid(childPid, NULL, 0); - return "poll(&pollfd, 1, timeout) error: not EINTR"; - } - } - else if (pollfd.revents & POLLERR) + else if (pollret < 0 || (pollfd.revents & POLLERR)) { kill(childPid, SIGTERM); waitpid(childPid, NULL, 0); - return "poll(&pollfd, 1, timeout) error: POLLERR"; + return pollret < 0 + ? "poll(&pollfd, 1, timeout) error: pollret < 0" + : "poll(&pollfd, 1, timeout) error: pollfd.revents & POLLERR"; } } @@ -229,12 +212,7 @@ const char* ffProcessReadOutput(FFProcessHandle* handle, FFstrbuf* buffer) return NULL; } else if (nRead < 0) - { - if (errno == EAGAIN) - return NULL; - else - break; - } + break; } return "read(childPipeFd, str, FF_PIPE_BUFSIZ) failed"; From d15bb8a232b533f5ecb88ebb12e8a27c9774e929 Mon Sep 17 00:00:00 2001 From: apocelipes Date: Sat, 15 Nov 2025 22:18:56 +0800 Subject: [PATCH 3/6] Display: fix an uninitialized FFDisplayOptions field --- src/modules/display/display.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/display/display.c b/src/modules/display/display.c index 26f7430de9..0a9a4563cf 100644 --- a/src/modules/display/display.c +++ b/src/modules/display/display.c @@ -436,6 +436,7 @@ void ffInitDisplayOptions(FFDisplayOptions* options) ffOptionInitModuleArg(&options->moduleArgs, "󰍹"); options->compactType = FF_DISPLAY_COMPACT_TYPE_NONE; options->preciseRefreshRate = false; + options->order = FF_DISPLAY_ORDER_NONE; } void ffDestroyDisplayOptions(FFDisplayOptions* options) From 934905e63aedb6ec1f527c320f1d977b0b3a8b35 Mon Sep 17 00:00:00 2001 From: apocelipes Date: Sun, 16 Nov 2025 05:06:32 +0800 Subject: [PATCH 4/6] GPU: silence unused parameter warnings --- src/detection/gpu/gpu_drm.c | 2 +- src/detection/gpu/gpu_linux.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/detection/gpu/gpu_drm.c b/src/detection/gpu/gpu_drm.c index aee70ca4ab..9304e6f16c 100644 --- a/src/detection/gpu/gpu_drm.c +++ b/src/detection/gpu/gpu_drm.c @@ -153,7 +153,7 @@ const char* ffDrmDetectAmdgpu(const FFGPUOptions* options, FFGPUResult* gpu, con return NULL; #else - FF_UNUSED(gpu, renderPath); + FF_UNUSED(options, gpu, renderPath); return "Fastfetch is compiled without libdrm support"; #endif } diff --git a/src/detection/gpu/gpu_linux.c b/src/detection/gpu/gpu_linux.c index 6fad45f4cd..fb28f74496 100644 --- a/src/detection/gpu/gpu_linux.c +++ b/src/detection/gpu/gpu_linux.c @@ -120,7 +120,7 @@ static const char* drmDetectAmdSpecific(const FFGPUOptions* options, FFGPUResult #endif } #else - FF_UNUSED(gpu, drmKey, buffer); + FF_UNUSED(options, gpu, drmKey, buffer); return "Fastfetch is not compiled with drm support"; #endif } From b435738c34b9606dfd25d962576558a2b68ff66f Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sun, 16 Nov 2025 09:09:21 +0800 Subject: [PATCH 5/6] CMake (macOS): corrects rpath addition for dlopen builds --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77647ccc18..559a41af0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1348,7 +1348,7 @@ endif() # Used for dlopen finding dylibs installed by homebrew # `/opt/homebrew/lib` is not on in dlopen search path by default -if(APPLE AND NOT BINARY_LINK_TYPE STREQUAL "dlopen") +if(APPLE AND BINARY_LINK_TYPE STREQUAL "dlopen") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,/opt/homebrew/lib -Wl,-rpath,/usr/local/lib") endif() From c2d5d5cca1c8a1c22f5a03816a115216ff695113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 16 Nov 2025 09:29:24 +0800 Subject: [PATCH 6/6] Release: v2.55.1 --- CHANGELOG.md | 9 +++++++++ CMakeLists.txt | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ea1d55f84..54e319538d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# 2.55.1 + +Bugfixes: +* Fix parallel command execution breaks randomly (#2056 / #2058, Command) + * Regression from v2.55.0 +* Fix `dylib` searching path on macOS (macOS) + * Regression from v2.55.0 +* Fix an uninitialized field (#2057, Display) + # 2.55.0 Changes: diff --git a/CMakeLists.txt b/CMakeLists.txt index 559a41af0d..49f2d65539 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url project(fastfetch - VERSION 2.55.0 + VERSION 2.55.1 LANGUAGES C DESCRIPTION "Fast neofetch-like system information tool" HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch"