[MDEV-32776]  'getmntinfo64' has been explicitly marked deprecated here Created: 2023-11-11  Updated: 2023-11-22  Resolved: 2023-11-14

Status: Closed
Project: MariaDB Server
Component/s: Plugins
Affects Version/s: 11.1
Fix Version/s: 10.4.33, 10.5.24, 10.6.17, 10.11.7, 11.0.5, 11.1.4, 11.2.3

Type: Bug Priority: Critical
Reporter: Yingquan He Assignee: Daniel Black
Resolution: Fixed Votes: 0
Labels: None
Environment:

macOS


Attachments: PNG File result.png    

 Description   

I am getting the following error while compiling MariaDB source code:

server/plugin/disks/information_schema_disks.cc:154:12: error: 'getmntinfo64' is deprecated: first deprecated in macOS 10.6 [-Werror,-Wdeprecated-declarations]
    count= getmntinfo64(&s, MNT_WAIT);
           ^
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/include/sys/mount.h:422:9: note: 'getmntinfo64' has been explicitly marked deprecated here
int     getmntinfo64(struct statfs64 **, int) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
        ^
1 error generated.
ninja: build stopped: subcommand failed.



 Comments   
Comment by Daniel Black [ 2023-11-12 ]

So from this it looks like just getmntinfo is needed?

heyingquan Can you try a patch like:

diff --git a/plugin/disks/CMakeLists.txt b/plugin/disks/CMakeLists.txt
index 4e40842cad0..1880518590f 100644
--- a/plugin/disks/CMakeLists.txt
+++ b/plugin/disks/CMakeLists.txt
@@ -4,7 +4,6 @@ CHECK_SYMBOL_EXISTS (getmntent "mntent.h" HAVE_GETMNTENT)
 CHECK_SYMBOL_EXISTS (getmntent "sys/mnttab.h" HAVE_GETMNTENT_IN_SYS_MNTAB)
 CHECK_SYMBOL_EXISTS (setmntent "mntent.h" HAVE_SETMNTENT)
 CHECK_SYMBOL_EXISTS (getmntinfo "sys/types.h;sys/mount.h" HAVE_GETMNTINFO)
-CHECK_SYMBOL_EXISTS (getmntinfo64 "sys/types.h;sys/mount.h" HAVE_GETMNTINFO64)
 
 IF (HAVE_GETMNTINFO)
 CHECK_CXX_SOURCE_COMPILES("
diff --git a/plugin/disks/information_schema_disks.cc b/plugin/disks/information_schema_disks.cc
index bfae81eceac..a9ed3c5623d 100644
--- a/plugin/disks/information_schema_disks.cc
+++ b/plugin/disks/information_schema_disks.cc
@@ -37,8 +37,7 @@
   This intends to support *BSD's, macOS, Solaris, AIX, HP-UX, and Linux.
 
   specificly:
-  FreeBSD/OpenBSD/DragonFly (statfs) NetBSD (statvfs) uses getmntinfo().
-  macOS uses getmntinfo64().
+  FreeBSD/OpenBSD/DragonFly/macOS (statfs) NetBSD (statvfs) uses getmntinfo().
   Linux can use getmntent_r(), but we've just used getmntent for simplification.
   Linux/Solaris/AIX/HP-UX uses setmntent()/getmntent().
   Solaris uses getmntent() with a diffent prototype, return structure, and
@@ -148,8 +147,6 @@ static int disks_fill_table(THD* pThd, TABLE_LIST* pTables, Item* pCond)
 
 #if defined(HAVE_GETMNTINFO_TAKES_statvfs)
     count= getmntinfo(&s, ST_WAIT);
-#elif defined(HAVE_GETMNTINFO64)
-    count= getmntinfo64(&s, MNT_WAIT);
 #else
     count= getmntinfo(&s, MNT_WAIT);
 #endif

Comment by Yingquan He [ 2023-11-13 ]

Hi, @Daniel.
Your advice is valid.
I have tested it on both the 10.4 and 11.1 branches, and it works.

Comment by Daniel Black [ 2023-11-13 ]

Dmitry, can you review https://github.com/MariaDB/server/pull/2836 please.

Comment by Dmitry Shulga [ 2023-11-14 ]

Approved

Comment by Daniel Black [ 2023-11-14 ]

Thank you.

Generated at Thu Feb 08 10:33:55 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.