commit:     e3923dd198778e4c62944a97a9739bb40f4bba30
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Mon Jun  5 13:29:55 2023 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Mon Jun  5 13:39:10 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e3923dd1

sys-fs/inotify-tools: fix build with musl-1.2.4

Backport includes the fix for previous bug #831976,
so this replaces the old patch.

Closes: https://bugs.gentoo.org/907887
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../files/inotify-tools-3.22.6.0-musl.patch        | 226 +++++++++++++++++++--
 ...6.0.ebuild => inotify-tools-3.22.6.0-r1.ebuild} |   2 +-
 2 files changed, 213 insertions(+), 15 deletions(-)

diff --git a/sys-fs/inotify-tools/files/inotify-tools-3.22.6.0-musl.patch 
b/sys-fs/inotify-tools/files/inotify-tools-3.22.6.0-musl.patch
index 435adc2e797a..0b6c9dbbe930 100644
--- a/sys-fs/inotify-tools/files/inotify-tools-3.22.6.0-musl.patch
+++ b/sys-fs/inotify-tools/files/inotify-tools-3.22.6.0-musl.patch
@@ -1,26 +1,224 @@
-Former fix[1] for musl that got reverted[2] for possibly(?) wrong
-reasons[3]. Should be harmless to include here until sorted out.
-https://bugs.gentoo.org/831976
+https://bugs.gentoo.org/831976 (undeclared _kernel_fsid_t)
+https://bugs.gentoo.org/907887 (musl-1.2.4 lfs64 issues)
 
-[1] https://github.com/inotify-tools/inotify-tools/commit/b7889c8d
-[2] https://github.com/inotify-tools/inotify-tools/commit/cbab7c0b
-[3] https://github.com/inotify-tools/inotify-tools/issues/155
+https://github.com/inotify-tools/inotify-tools/commit/8367bdd1eda71c10ab0a49c694846a622e543807
 From: Khem Raj <[email protected]>
-Date: Mon, 3 Jan 2022 04:42:50 -0800
-Subject: [PATCH] libinotifytools: Bridge differences between musl/glibc/kernel
- fnotify.h (#154)
+Date: Fri, 30 Dec 2022 04:04:56 -0800
+Subject: [PATCH] Fix build with musl and add Alpine buildnode to CI (#174)
+
+* configure: Add AC_SYS_LARGEFILE autoconf macro
+
+This will define _FILE_OFFSET_BITS to be 64 if off_t is 64bit
+and we do not need to define lfs64 functions
+
+Signed-off-by: Khem Raj <[email protected]>
+
+* Fix build for out-of-tree builds
+
+When build tree is outside source-tree its not able to find
+fanotify-dfid-name.h, add needed include paths on compiler commandline
+
+Signed-off-by: Khem Raj <[email protected]>
+
+* libinotifytools: Bridge differences between musl/glibc/kernel fnotify.h
+
+System detects to use sys/fnotify.h and then assumes glibc's definitions
+but musl has definitions of its own. perhaps portable thing would be to
+use linux/fnotify.h interface directly on linux irrespective of libc
+
+See the differences discussion here [1]
+
+[1] 
https://inbox.vuxu.org/musl/20191112220151.GC27331@x230/T/#ma8700992467200c8792e0fa8508eae656b81aeba
+
+Signed-off-by: Khem Raj <[email protected]>
+
+* replace stat64/lstat64 with stat/lstat
+
+lfs64 functions are not needed when off_t is 64-bit
+Additionally this fixes build with musl which does not
+export these functions without defining _LARGEFILE64_SOURCE
+
+Signed-off-by: Khem Raj <[email protected]>
+
+* Apply changes from clang-format
+
+Signed-off-by: Khem Raj <[email protected]>
+
+* Fix errors found by clang-format
+
+Fixes
+-Wno-gnu-variable-sized-type-not-at-end for musl clang-format
+
+Signed-off-by: Khem Raj <[email protected]>
+
+* ci: Enable musl in CI using alpine
+
+Signed-off-by: Khem Raj <[email protected]>
+
+* Tell clang-tidy to ignore warning about variable sized type
+
+Signed-off-by: Eric Curtin <[email protected]>
+
+* Add gcompat for code coverage tool
+
+Signed-off-by: Eric Curtin <[email protected]>
+
+* Skip sonarcloud on alpine
+
+Signed-off-by: Eric Curtin <[email protected]>
+
+Signed-off-by: Khem Raj <[email protected]>
+Signed-off-by: Eric Curtin <[email protected]>
+Co-authored-by: Eric Curtin <[email protected]>
+--- a/configure.ac
++++ b/configure.ac
+@@ -17,6 +17,9 @@ AC_PROG_CC
+ AM_INIT_AUTOMAKE
+ LT_INIT
+ 
++# Add option for largefile support
++AC_SYS_LARGEFILE
++
+ AC_PATH_PROG(DOXYGEN, doxygen, NO_DOXYGEN)
+ 
+ AC_ARG_ENABLE(doxygen,
+--- a/libinotifytools/src/Makefile.am
++++ b/libinotifytools/src/Makefile.am
+@@ -2,6 +2,7 @@ SUBDIRS = inotifytools
+ 
+ lib_LTLIBRARIES = libinotifytools.la
+ libinotifytools_la_SOURCES = inotifytools.c inotifytools_p.h redblack.c 
redblack.h stats.c stats.h
++libinotifytools_la_CFLAGS = -I$(srcdir)/inotifytools
+ libinotifytools_la_LDFLAGS = -version-info 4:1:4
+ 
+ check_PROGRAMS = test
 --- a/libinotifytools/src/inotifytools.c
 +++ b/libinotifytools/src/inotifytools.c
-@@ -54,6 +54,12 @@ struct fanotify_event_fid {
-       struct fanotify_event_info_fid info;
-       struct file_handle handle;
- };
-+
+@@ -51,10 +51,16 @@ struct fanotify_event_fid;
+ #include <sys/vfs.h>
+ #include "inotifytools/fanotify.h"
+ 
 +#ifndef __GLIBC__
 +#define val __val
 +#define __kernel_fsid_t fsid_t
 +#endif
++
+ struct fanotify_event_fid {
+       struct fanotify_event_info_fid info;
+       struct file_handle handle;
+ };
 +
  #endif
  
  /**
+@@ -1746,14 +1752,14 @@ int inotifytools_watch_recursively_with_exclude(char 
const* path,
+ 
+       static struct dirent * ent;
+       char * next_file;
+-      static struct stat64 my_stat;
++      static struct stat my_stat;
+       ent = readdir( dir );
+       // Watch each directory within this directory
+       while ( ent ) {
+               if ( (0 != strcmp( ent->d_name, "." )) &&
+                    (0 != strcmp( ent->d_name, ".." )) ) {
+                       nasprintf(&next_file,"%s%s", my_path, ent->d_name);
+-                      if ( -1 == lstat64( next_file, &my_stat ) ) {
++                      if (-1 == lstat(next_file, &my_stat)) {
+                               error = errno;
+                               free( next_file );
+                               if ( errno != EACCES ) {
+@@ -1836,9 +1841,9 @@ int inotifytools_error() {
+  * @internal
+  */
+ static int isdir( char const * path ) {
+-      static struct stat64 my_stat;
++      static struct stat my_stat;
+ 
+-      if ( -1 == lstat64( path, &my_stat ) ) {
++      if (-1 == lstat(path, &my_stat)) {
+               if (errno == ENOENT) return 0;
+               fprintf(stderr, "Stat failed on %s: %s\n", path, 
strerror(errno));
+               return 0;
+--- a/libinotifytools/src/inotifytools/fanotify-dfid-name.h
++++ b/libinotifytools/src/inotifytools/fanotify-dfid-name.h
+@@ -129,7 +129,7 @@ struct fanotify_event_info_fid {
+        * Following is an opaque struct file_handle that can be passed as
+        * an argument to open_by_handle_at(2).
+        */
+-      unsigned char handle[0];
++      unsigned char handle[];
+ };
+ 
+ struct fanotify_response {
+--- a/libinotifytools/src/inotifytools/inotify-nosys.h
++++ b/libinotifytools/src/inotifytools/inotify-nosys.h
+@@ -13,11 +13,6 @@
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ 
+-#ifdef __FreeBSD__
+-#define stat64 stat
+-#define lstat64 lstat
+-#endif
+-
+ /*
+  * struct inotify_event - structure read from the inotify device for each 
event
+  *
+--- a/libinotifytools/src/inotifytools/inotifytools.h
++++ b/libinotifytools/src/inotifytools/inotifytools.h
+@@ -1,11 +1,6 @@
+ #ifndef _inotifytools_H
+ #define _inotifytools_H
+ 
+-#ifdef __FreeBSD__
+-#define stat64 stat
+-#define lstat64 lstat
+-#endif
+-
+ #ifdef __cplusplus
+ extern "C"
+ {
+--- a/src/common.c
++++ b/src/common.c
+@@ -45,14 +45,15 @@ void print_event_descriptions() {
+ }
+ 
+ int isdir(char const *path) {
+-    static struct stat64 my_stat;
+-
+-    if (-1 == lstat64(path, &my_stat)) {
+-        if (errno == ENOENT)
+-            return 0;
+-        fprintf(stderr, "Stat failed on %s: %s\n", path, strerror(errno));
+-        return 0;
+-    }
++      static struct stat my_stat;
++
++      if (-1 == lstat(path, &my_stat)) {
++              if (errno == ENOENT)
++                      return 0;
++              fprintf(stderr, "Stat failed on %s: %s\n", path,
++                      strerror(errno));
++              return 0;
++      }
+ 
+     return S_ISDIR(my_stat.st_mode) && !S_ISLNK(my_stat.st_mode);
+ }
+--- a/src/common.h
++++ b/src/common.h
+@@ -1,13 +1,9 @@
+ #ifndef COMMON_H
+ #define COMMON_H
+ 
+-#ifdef __FreeBSD__
+-#define stat64 stat
+-#define lstat64 lstat
+-#ifdef ENABLE_FANOTIFY
++#if defined(__FreeBSD__) && defined(ENABLE_FANOTIFY)
+ #error "FreeBSD does not support fanotify"
+ #endif
+-#endif
+ 
+ #include <stdbool.h>
+ 

diff --git a/sys-fs/inotify-tools/inotify-tools-3.22.6.0.ebuild 
b/sys-fs/inotify-tools/inotify-tools-3.22.6.0-r1.ebuild
similarity index 95%
rename from sys-fs/inotify-tools/inotify-tools-3.22.6.0.ebuild
rename to sys-fs/inotify-tools/inotify-tools-3.22.6.0-r1.ebuild
index b1b8a0281b9d..9272ad8d669e 100644
--- a/sys-fs/inotify-tools/inotify-tools-3.22.6.0.ebuild
+++ b/sys-fs/inotify-tools/inotify-tools-3.22.6.0-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8

Reply via email to