LinearTapeFileSystem / ltfs

Reference implementation of the LTFS format Spec for stand alone tape drive
BSD 3-Clause "New" or "Revised" License
252 stars 76 forks source link

Build Failure: FUSE API error and deprecated pthread_yield in CentOS-Stream-9-latest-x86_64-dvd1.iso #465

Open ymbstm opened 5 months ago

ymbstm commented 5 months ago

Description I am trying to compile LTFS on CentOS, but the build process fails with errors related to the FUSE API version and deprecated pthread_yield function.

Steps to Reproduce Run ./configure Run make Encounter errors during the build process Expected behavior The build should complete successfully without errors.

Actual behavior The build fails with the following errors:

An error message stating that only FUSE API version 30 or greater is supported. Compilation warnings about the deprecated pthread_yield, with the suggestion to use sched_yield instead. Environment OS: CentOS FUSE version: 3.10.2 Compiler: GCC Error Logs plaintext

In file included from /usr/include/fuse3/fuse.h:19,
                 from ../../src/ltfs_fuse.h:70,
                 from iosched.c:53:
/usr/include/fuse3/fuse_common.h:852:4: ERROR:#error only API version 30 or greater is supported
  852 | #  error only API version 30 or greater is supported
      |    ^~~~~

In file included from ../../src/libltfs/ltfstrace.h:72,
                 from ../../src/libltfs/ltfs.h:109,
                 from ../../src/ltfs_fuse.h:71,
                 from iosched.c:53:
../../src/libltfs/ltfs_thread.h:214:9: WARN:‘pthread_yield’ is deprecated: pthread_yield is deprecated, use sched_yield instead [-Wdeprecated-declarations]
  214 |         return pthread_yield();
      |         ^~~~~~
Additional context

FUSE 3.10.2 should support the required API version 30, but the build script seems not to recognize this. The usage of deprecated pthread_yield needs replacement with sched_yield across the project to resolve the deprecation warnings and potential future build failures.

piste-jp commented 4 months ago

Hmm, I cannot make anything from the description you provided...

Could you provide the info below at least.

For sched_yield(), I'm not sure we must to do it now because we need to consider supporting older OSs. May be the best time is when we update the main target of OS from RHEL7/8 to RHEL9. (See #456)

I don't believe sched_yield() is an item of this issue at all.