Control: tags 918316 + patch pending Control: tags 1069426 + patch pending Dear maintainer,
to fix the issues with this package, I've prepared an NMU for nocache (versioned as 1.2-0.1), debdiff below. An upload to DELAYED/5 will follow shortly. Please feel free to tell me if I should delay it longer. As already mentioned earlier in #1069426, I figured it was saner to forward to the latest upstream release. The changes upstream have been dropped from the debdiff to keep it short. Regards, Christoph
diff -Nru nocache-1.1/debian/changelog nocache-1.2/debian/changelog --- nocache-1.1/debian/changelog 2019-01-04 04:37:54.000000000 +0100 +++ nocache-1.2/debian/changelog 2024-07-07 13:44:09.000000000 +0200 @@ -1,3 +1,14 @@ +nocache (1.2-0.1) unstable; urgency=medium + + * Non-maintainer upload + * Import upstream version 1.2, this fixes issues with increased file + limits. Closes: 918316 + * Fix build on (most) 32 bit architectures. Closes: #1069426 + Kudos to Guillem Jover for taking care of that. + * Simplify test so it will not time out. Closes: #918316 (again) + + -- Christoph Biedl <debian.a...@manchmal.in-ulm.de> Sun, 07 Jul 2024 13:44:09 +0200 + nocache (1.1-1) unstable; urgency=medium [ Ondřej Nový ] diff -Nru nocache-1.1/debian/patches/fix-t64.patch nocache-1.2/debian/patches/fix-t64.patch --- nocache-1.1/debian/patches/fix-t64.patch 1970-01-01 01:00:00.000000000 +0100 +++ nocache-1.2/debian/patches/fix-t64.patch 2024-07-07 13:44:09.000000000 +0200 @@ -0,0 +1,636 @@ +Description: Add support for LFS and time64 +Author: Guillem Jover <gjo...@sipwise.com> +Origin: other, https://github.com/Feh/nocache/pull/55 +Bug: https://github.com/Feh/nocache/issues/54 +Bug-Debian: https://bugs.debian.org/1069426 +Forwarded: not-needed +Last-Update: 2024-07-07 + +--- a/Makefile ++++ b/Makefile +@@ -10,11 +10,11 @@ + libdir = $(DESTDIR)$(PREFIX)$(LIBDIR) + + CACHE_BINS=cachedel cachestats +-NOCACHE_BINS=nocache.o fcntl_helpers.o pageinfo.o ++NOCACHE_BINS=nocache.o fcntl_helpers.o pageinfo.o wrappers.o + MANPAGES=$(wildcard man/*.1) + + CC ?= gcc +-CFLAGS+= -Wall ++CFLAGS+= -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 + COMPILE = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) + + .PHONY: all +--- a/nocache.c ++++ b/nocache.c +@@ -3,6 +3,7 @@ + #include <sys/stat.h> + #include <sys/mman.h> + #include <unistd.h> ++#include <stdarg.h> + #include <stdbool.h> + #include <stdio.h> + #include <stdlib.h> +@@ -15,8 +16,10 @@ + #include <assert.h> + #include <signal.h> + ++#include "wrappers.h" + #include "pageinfo.h" + #include "fcntl_helpers.h" ++#include "nocache.h" + + static void init(void) __attribute__((constructor)); + static void destroy(void) __attribute__((destructor)); +@@ -24,38 +27,6 @@ + static void init_debugging(void); + static void handle_stdout(void); + +-static void store_pageinfo(int fd); +-static void free_unclaimed_pages(int fd, bool block_signals); +- +-int open(const char *pathname, int flags, mode_t mode); +-int open64(const char *pathname, int flags, mode_t mode); +-int creat(const char *pathname, int flags, mode_t mode); +-int creat64(const char *pathname, int flags, mode_t mode); +-int openat(int dirfd, const char *pathname, int flags, mode_t mode); +-int openat64(int dirfd, const char *pathname, int flags, mode_t mode); +-int __openat_2(int dirfd, const char *pathname, int flags, mode_t mode) +- __attribute__ ((alias ("openat"))); +-int dup(int oldfd); +-int dup2(int oldfd, int newfd); +-int close(int fd); +-FILE *fopen(const char *path, const char *mode); +-FILE *fopen64(const char *path, const char *mode); +-int fclose(FILE *fp); +- +-int (*_original_open)(const char *pathname, int flags, mode_t mode); +-int (*_original_open64)(const char *pathname, int flags, mode_t mode); +-int (*_original_creat)(const char *pathname, int flags, mode_t mode); +-int (*_original_creat64)(const char *pathname, int flags, mode_t mode); +-int (*_original_openat)(int dirfd, const char *pathname, int flags, mode_t mode); +-int (*_original_openat64)(int dirfd, const char *pathname, int flags, mode_t mode); +-int (*_original_dup)(int fd); +-int (*_original_dup2)(int newfd, int oldfd); +-int (*_original_close)(int fd); +-FILE *(*_original_fopen)(const char *path, const char *mode); +-FILE *(*_original_fopen64)(const char *path, const char *mode); +-int (*_original_fclose)(FILE *fp); +- +- + /* Info about a file descriptor 'fd' is stored in fds[fd]. Before accessing an + * element, callers MUST both check fds_lock != NULL and then acquire + * fds_lock[fd] while holding the fds_iter_lock. While any mutex in fds_lock is +@@ -70,9 +41,11 @@ + static char *env_nr_fadvise = "NOCACHE_NR_FADVISE"; + static int nr_fadvise; + ++int nocache_EOF; ++ + static char *env_debugfd = "NOCACHE_DEBUGFD"; +-int debugfd = -1; +-FILE *debugfp; ++static int debugfd = -1; ++static FILE *debugfp; + + static char *env_flushall = "NOCACHE_FLUSHALL"; + static char flushall; +@@ -80,12 +53,21 @@ + static char *env_max_fds = "NOCACHE_MAX_FDS"; + static rlim_t max_fd_limit = 1 << 20; + +-#define DEBUG(...) \ +- do { \ +- if(debugfp != NULL) { \ +- fprintf(debugfp, "[nocache] DEBUG: " __VA_ARGS__); \ +- } \ +- } while(0) ++int nocache_fileno(FILE *fp) ++{ ++ return fileno(fp); ++} ++ ++void debug(const char *fmt, ...) ++{ ++ if(debugfp != NULL) { ++ va_list args; ++ ++ va_start(args, fmt); ++ vfprintf(debugfp, fmt, args); ++ va_end(args); ++ } ++} + + static void init(void) + { +@@ -141,6 +123,7 @@ + } + + PAGESIZE = getpagesize(); ++ nocache_EOF = EOF; + pthread_mutex_lock(&fds_iter_lock); + for(i = 0; i < max_fds; i++) { + pthread_mutex_lock(&fds_lock[i]); +@@ -232,198 +215,7 @@ + pthread_mutex_unlock(&fds_iter_lock); + } + +-int open(const char *pathname, int flags, mode_t mode) +-{ +- int fd; +- +- if(!_original_open) +- _original_open = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "open"); +- assert(_original_open != NULL); +- +- if((fd = _original_open(pathname, flags, mode)) != -1) { +- DEBUG("open(pathname=%s, flags=0x%x, mode=0%o) = %d\n", +- pathname, flags, mode, fd); +- store_pageinfo(fd); +- } +- return fd; +-} +- +-int open64(const char *pathname, int flags, mode_t mode) +-{ +- int fd; +- +- if(!_original_open64) +- _original_open64 = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "open64"); +- assert(_original_open64 != NULL); +- +- DEBUG("open64(pathname=%s, flags=0x%x, mode=0%o)\n", pathname, flags, mode); +- +- if((fd = _original_open64(pathname, flags, mode)) != -1) +- store_pageinfo(fd); +- return fd; +-} +- +-int creat(const char *pathname, int flags, mode_t mode) +-{ +- int fd; +- +- if(!_original_creat) +- _original_creat = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "creat"); +- assert(_original_creat != NULL); +- +- DEBUG("creat(pathname=%s, flags=0x%x, mode=0%o)\n", pathname, flags, mode); +- +- if((fd = _original_creat(pathname, flags, mode)) != -1) +- store_pageinfo(fd); +- return fd; +-} +- +-int creat64(const char *pathname, int flags, mode_t mode) +-{ +- int fd; +- +- if(!_original_creat64) +- _original_creat64 = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "creat64"); +- assert(_original_creat64 != NULL); +- +- DEBUG("creat64(pathname=%s, flags=0x%x, mode=0%o)\n", pathname, flags, mode); +- +- if((fd = _original_creat64(pathname, flags, mode)) != -1) +- store_pageinfo(fd); +- return fd; +-} +- +-int openat(int dirfd, const char *pathname, int flags, mode_t mode) +-{ +- int fd; +- +- if(!_original_openat) +- _original_openat = (int (*)(int, const char *, int, mode_t)) dlsym(RTLD_NEXT, "openat"); +- assert(_original_openat != NULL); +- +- DEBUG("openat(dirfd=%d, pathname=%s, flags=0x%x, mode=0%o)\n", dirfd, pathname, flags, mode); +- +- if((fd = _original_openat(dirfd, pathname, flags, mode)) != -1) +- store_pageinfo(fd); +- return fd; +-} +- +-int openat64(int dirfd, const char *pathname, int flags, mode_t mode) +-{ +- int fd; +- +- if(!_original_openat64) +- _original_openat64 = (int (*)(int, const char *, int, mode_t)) dlsym(RTLD_NEXT, "openat64"); +- assert(_original_openat64 != NULL); +- +- DEBUG("openat64(dirfd=%d, pathname=%s, flags=0x%x, mode=0%o)\n", dirfd, pathname, flags, mode); +- +- if((fd = _original_openat64(dirfd, pathname, flags, mode)) != -1) +- store_pageinfo(fd); +- return fd; +-} +- +-int dup(int oldfd) +-{ +- int fd; +- +- if(!_original_dup) +- _original_dup = (int (*)(int)) dlsym(RTLD_NEXT, "dup"); +- assert(_original_dup != NULL); +- +- DEBUG("dup(oldfd=%d)\n", oldfd); +- +- if((fd = _original_dup(oldfd)) != -1) +- store_pageinfo(fd); +- return fd; +-} +- +-int dup2(int oldfd, int newfd) +-{ +- int ret; +- +- /* if newfd is already opened, the kernel will close it directly +- * once dup2 is invoked. So now is the last chance to mark the +- * pages as "DONTNEED" */ +- if(valid_fd(newfd)) +- free_unclaimed_pages(newfd, true); +- +- if(!_original_dup2) +- _original_dup2 = (int (*)(int, int)) dlsym(RTLD_NEXT, "dup2"); +- assert(_original_dup2 != NULL); +- +- DEBUG("dup2(oldfd=%d, newfd=%d)\n", oldfd, newfd); +- +- if((ret = _original_dup2(oldfd, newfd)) != -1) +- store_pageinfo(newfd); +- return ret; +-} +- +-int close(int fd) +-{ +- if(!_original_close) +- _original_close = (int (*)(int)) dlsym(RTLD_NEXT, "close"); +- assert(_original_close != NULL); +- +- free_unclaimed_pages(fd, true); +- +- DEBUG("close(%d)\n", fd); +- return _original_close(fd); +-} +- +-FILE *fopen(const char *path, const char *mode) +-{ +- int fd; +- FILE *fp = NULL; +- +- if(!_original_fopen) +- _original_fopen = (FILE *(*)(const char *, const char *)) dlsym(RTLD_NEXT, "fopen"); +- assert(_original_fopen != NULL); +- +- DEBUG("fopen(path=%s, mode=%s)\n", path, mode); +- +- if((fp = _original_fopen(path, mode)) != NULL) +- if((fd = fileno(fp)) != -1) +- store_pageinfo(fd); +- +- return fp; +-} +- +-FILE *fopen64(const char *path, const char *mode) +-{ +- int fd; +- FILE *fp; +- fp = NULL; +- +- if(!_original_fopen64) +- _original_fopen64 = (FILE *(*)(const char *, const char *)) dlsym(RTLD_NEXT, "fopen64"); +- assert(_original_fopen64 != NULL); +- +- DEBUG("fopen64(path=%s, mode=%s)\n", path, mode); +- +- if((fp = _original_fopen64(path, mode)) != NULL) +- if((fd = fileno(fp)) != -1) +- store_pageinfo(fd); +- +- return fp; +-} +- +-int fclose(FILE *fp) +-{ +- if(!_original_fclose) +- _original_fclose = (int (*)(FILE *)) dlsym(RTLD_NEXT, "fclose"); +- assert(_original_fclose != NULL); +- +- if(_original_fclose) { +- free_unclaimed_pages(fileno(fp), true); +- return _original_fclose(fp); +- } +- +- errno = EFAULT; +- return EOF; +-} +- +-static void store_pageinfo(int fd) ++void store_pageinfo(int fd) + { + sigset_t mask, old_mask; + +@@ -472,7 +264,7 @@ + return; + } + +-static void free_unclaimed_pages(int fd, bool block_signals) ++void free_unclaimed_pages(int fd, bool block_signals) + { + struct stat st; + sigset_t mask, old_mask; +--- /dev/null ++++ b/nocache.h +@@ -0,0 +1,17 @@ ++#ifndef NOCACHE_H ++#define NOCACHE_H ++ ++#include <stdbool.h> ++ ++#define DEBUG(...) \ ++ debug("[nocache] DEBUG: " __VA_ARGS__) ++ ++void debug(const char *fmt, ...); ++ ++extern int nocache_EOF; ++int nocache_fileno(FILE *fp); ++ ++void store_pageinfo(int fd); ++void free_unclaimed_pages(int fd, bool block_signals); ++ ++#endif +--- a/pageinfo.c ++++ b/pageinfo.c +@@ -9,14 +9,7 @@ + #include <string.h> + + #include "pageinfo.h" +- +-extern FILE *debugfp; +-#define DEBUG(...) \ +- do { \ +- if(debugfp != NULL) { \ +- fprintf(debugfp, "[nocache] DEBUG: " __VA_ARGS__); \ +- } \ +- } while(0) ++#include "nocache.h" + + static int insert_into_br_list(struct file_pageinfo *pi, + struct byterange **brtail, size_t pos, size_t len); +--- /dev/null ++++ b/wrappers.c +@@ -0,0 +1,232 @@ ++#define _GNU_SOURCE ++#include <sys/types.h> ++#include <stddef.h> ++#include <assert.h> ++#include <errno.h> ++#include <dlfcn.h> ++ ++typedef struct FILE FILE; ++ ++#include "wrappers.h" ++#include "pageinfo.h" ++#include "fcntl_helpers.h" ++#include "nocache.h" ++ ++int open(const char *pathname, int flags, mode_t mode); ++int open64(const char *pathname, int flags, mode_t mode); ++int creat(const char *pathname, int flags, mode_t mode); ++int creat64(const char *pathname, int flags, mode_t mode); ++int openat(int dirfd, const char *pathname, int flags, mode_t mode); ++int openat64(int dirfd, const char *pathname, int flags, mode_t mode); ++int dup(int oldfd); ++int dup2(int oldfd, int newfd); ++int close(int fd); ++FILE *fopen(const char *path, const char *mode); ++FILE *fopen64(const char *path, const char *mode); ++int fclose(FILE *fp); ++ ++int (*_original_open)(const char *pathname, int flags, mode_t mode); ++int (*_original_open64)(const char *pathname, int flags, mode_t mode); ++int (*_original_creat)(const char *pathname, int flags, mode_t mode); ++int (*_original_creat64)(const char *pathname, int flags, mode_t mode); ++int (*_original_openat)(int dirfd, const char *pathname, int flags, mode_t mode); ++int (*_original_openat64)(int dirfd, const char *pathname, int flags, mode_t mode); ++int (*_original_dup)(int fd); ++int (*_original_dup2)(int newfd, int oldfd); ++int (*_original_close)(int fd); ++FILE *(*_original_fopen)(const char *path, const char *mode); ++FILE *(*_original_fopen64)(const char *path, const char *mode); ++int (*_original_fclose)(FILE *fp); ++ ++int open(const char *pathname, int flags, mode_t mode) ++{ ++ int fd; ++ ++ if(!_original_open) ++ _original_open = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "open"); ++ assert(_original_open != NULL); ++ ++ if((fd = _original_open(pathname, flags, mode)) != -1) { ++ DEBUG("open(pathname=%s, flags=0x%x, mode=0%o) = %d\n", ++ pathname, flags, mode, fd); ++ store_pageinfo(fd); ++ } ++ return fd; ++} ++ ++int open64(const char *pathname, int flags, mode_t mode) ++{ ++ int fd; ++ ++ if(!_original_open64) ++ _original_open64 = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "open64"); ++ assert(_original_open64 != NULL); ++ ++ DEBUG("open64(pathname=%s, flags=0x%x, mode=0%o)\n", pathname, flags, mode); ++ ++ if((fd = _original_open64(pathname, flags, mode)) != -1) ++ store_pageinfo(fd); ++ return fd; ++} ++ ++int creat(const char *pathname, int flags, mode_t mode) ++{ ++ int fd; ++ ++ if(!_original_creat) ++ _original_creat = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "creat"); ++ assert(_original_creat != NULL); ++ ++ DEBUG("creat(pathname=%s, flags=0x%x, mode=0%o)\n", pathname, flags, mode); ++ ++ if((fd = _original_creat(pathname, flags, mode)) != -1) ++ store_pageinfo(fd); ++ return fd; ++} ++ ++int creat64(const char *pathname, int flags, mode_t mode) ++{ ++ int fd; ++ ++ if(!_original_creat64) ++ _original_creat64 = (int (*)(const char *, int, mode_t)) dlsym(RTLD_NEXT, "creat64"); ++ assert(_original_creat64 != NULL); ++ ++ DEBUG("creat64(pathname=%s, flags=0x%x, mode=0%o)\n", pathname, flags, mode); ++ ++ if((fd = _original_creat64(pathname, flags, mode)) != -1) ++ store_pageinfo(fd); ++ return fd; ++} ++ ++int openat(int dirfd, const char *pathname, int flags, mode_t mode) ++{ ++ int fd; ++ ++ if(!_original_openat) ++ _original_openat = (int (*)(int, const char *, int, mode_t)) dlsym(RTLD_NEXT, "openat"); ++ assert(_original_openat != NULL); ++ ++ DEBUG("openat(dirfd=%d, pathname=%s, flags=0x%x, mode=0%o)\n", dirfd, pathname, flags, mode); ++ ++ if((fd = _original_openat(dirfd, pathname, flags, mode)) != -1) ++ store_pageinfo(fd); ++ return fd; ++} ++ ++int openat64(int dirfd, const char *pathname, int flags, mode_t mode) ++{ ++ int fd; ++ ++ if(!_original_openat64) ++ _original_openat64 = (int (*)(int, const char *, int, mode_t)) dlsym(RTLD_NEXT, "openat64"); ++ assert(_original_openat64 != NULL); ++ ++ DEBUG("openat64(dirfd=%d, pathname=%s, flags=0x%x, mode=0%o)\n", dirfd, pathname, flags, mode); ++ ++ if((fd = _original_openat64(dirfd, pathname, flags, mode)) != -1) ++ store_pageinfo(fd); ++ return fd; ++} ++ ++int dup(int oldfd) ++{ ++ int fd; ++ ++ if(!_original_dup) ++ _original_dup = (int (*)(int)) dlsym(RTLD_NEXT, "dup"); ++ assert(_original_dup != NULL); ++ ++ DEBUG("dup(oldfd=%d)\n", oldfd); ++ ++ if((fd = _original_dup(oldfd)) != -1) ++ store_pageinfo(fd); ++ return fd; ++} ++ ++int dup2(int oldfd, int newfd) ++{ ++ int ret; ++ ++ /* if newfd is already opened, the kernel will close it directly ++ * once dup2 is invoked. So now is the last chance to mark the ++ * pages as "DONTNEED" */ ++ if(valid_fd(newfd)) ++ free_unclaimed_pages(newfd, true); ++ ++ if(!_original_dup2) ++ _original_dup2 = (int (*)(int, int)) dlsym(RTLD_NEXT, "dup2"); ++ assert(_original_dup2 != NULL); ++ ++ DEBUG("dup2(oldfd=%d, newfd=%d)\n", oldfd, newfd); ++ ++ if((ret = _original_dup2(oldfd, newfd)) != -1) ++ store_pageinfo(newfd); ++ return ret; ++} ++ ++int close(int fd) ++{ ++ if(!_original_close) ++ _original_close = (int (*)(int)) dlsym(RTLD_NEXT, "close"); ++ assert(_original_close != NULL); ++ ++ free_unclaimed_pages(fd, true); ++ ++ DEBUG("close(%d)\n", fd); ++ return _original_close(fd); ++} ++ ++FILE *fopen(const char *path, const char *mode) ++{ ++ int fd; ++ FILE *fp = NULL; ++ ++ if(!_original_fopen) ++ _original_fopen = (FILE *(*)(const char *, const char *)) dlsym(RTLD_NEXT, "fopen"); ++ assert(_original_fopen != NULL); ++ ++ DEBUG("fopen(path=%s, mode=%s)\n", path, mode); ++ ++ if((fp = _original_fopen(path, mode)) != NULL) ++ if((fd = nocache_fileno(fp)) != -1) ++ store_pageinfo(fd); ++ ++ return fp; ++} ++ ++FILE *fopen64(const char *path, const char *mode) ++{ ++ int fd; ++ FILE *fp; ++ fp = NULL; ++ ++ if(!_original_fopen64) ++ _original_fopen64 = (FILE *(*)(const char *, const char *)) dlsym(RTLD_NEXT, "fopen64"); ++ assert(_original_fopen64 != NULL); ++ ++ DEBUG("fopen64(path=%s, mode=%s)\n", path, mode); ++ ++ if((fp = _original_fopen64(path, mode)) != NULL) ++ if((fd = nocache_fileno(fp)) != -1) ++ store_pageinfo(fd); ++ ++ return fp; ++} ++ ++int fclose(FILE *fp) ++{ ++ if(!_original_fclose) ++ _original_fclose = (int (*)(FILE *)) dlsym(RTLD_NEXT, "fclose"); ++ assert(_original_fclose != NULL); ++ ++ if(_original_fclose) { ++ free_unclaimed_pages(nocache_fileno(fp), true); ++ return _original_fclose(fp); ++ } ++ ++ errno = EFAULT; ++ return nocache_EOF; ++} ++ ++/* vim:set et sw=4 ts=4: */ +--- /dev/null ++++ b/wrappers.h +@@ -0,0 +1,17 @@ ++#ifndef NOCACHE_WRAPPERS_H ++#define NOCACHE_WRAPPERS_H ++ ++extern int (*_original_open)(const char *pathname, int flags, mode_t mode); ++extern int (*_original_open64)(const char *pathname, int flags, mode_t mode); ++extern int (*_original_creat)(const char *pathname, int flags, mode_t mode); ++extern int (*_original_creat64)(const char *pathname, int flags, mode_t mode); ++extern int (*_original_openat)(int dirfd, const char *pathname, int flags, mode_t mode); ++extern int (*_original_openat64)(int dirfd, const char *pathname, int flags, mode_t mode); ++extern int (*_original_dup)(int fd); ++extern int (*_original_dup2)(int newfd, int oldfd); ++extern int (*_original_close)(int fd); ++extern FILE *(*_original_fopen)(const char *path, const char *mode); ++extern FILE *(*_original_fopen64)(const char *path, const char *mode); ++extern int (*_original_fclose)(FILE *fp); ++ ++#endif diff -Nru nocache-1.1/debian/patches/series nocache-1.2/debian/patches/series --- nocache-1.1/debian/patches/series 2019-01-02 23:28:53.000000000 +0100 +++ nocache-1.2/debian/patches/series 2024-07-07 13:41:20.000000000 +0200 @@ -0,0 +1 @@ +fix-t64.patch diff -Nru nocache-1.1/debian/rules nocache-1.2/debian/rules --- nocache-1.1/debian/rules 2019-01-04 03:36:05.000000000 +0100 +++ nocache-1.2/debian/rules 2024-07-07 13:42:18.000000000 +0200 @@ -18,5 +18,5 @@ ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) # -NOCACHE_NR_FADVISE=2 dh_auto_test -v ## #916415 - timeout 11 ./nocache apt show coreutils 1>>/dev/null + timeout 11 ./nocache true endif
signature.asc
Description: PGP signature