Opened 7 years ago

Last modified 21 months ago

#54781 assigned defect

osxfuse @3.6.3: use of undeclared identifiers 'VOL_CAP_FMT_NO_IMMUTABLE_FILES' 'VOL_CAP_FMT_NO_PERMISSIONS'

Reported by: mklein-de (Michael Klein) Owned by:
Priority: Normal Milestone:
Component: ports Version:
Keywords: elcapitan Cc: todmorrison (Tod Morrison), anatol (Anatol Pomozov), hapaguy (Brian Kurt Fujikawa), laughingtiger, dliessi (Davide Liessi), jpenney (Jason Penney), Klaskviker, eplov, willbprog127 (Will Brokenbourgh), Blokkendoos (Johan), macportsraf, mascguy (Christopher Nielsen)
Port: osxfuse

Description

first error is:

/opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_macports_macports-ports_fuse_osxfuse/osxfuse/work/osxfuse-osxfuse-87d266a/kext/osxfuse/fuse_vfsops.c:857:11: error: use of undeclared identifier 'VOL_CAP_FMT_NO_IMMUTABLE_FILES'
        | VOL_CAP_FMT_NO_IMMUTABLE_FILES
          ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_macports_macports-ports_fuse_osxfuse/osxfuse/work/osxfuse-osxfuse-87d266a/kext/osxfuse/fuse_vfsops.c:858:11: error: use of undeclared identifier 'VOL_CAP_FMT_NO_PERMISSIONS'
        | VOL_CAP_FMT_NO_PERMISSIONS
          ^
/opt/local/var/macports/build/_opt_local_var_macports_sources_github.com_macports_macports-ports_fuse_osxfuse/osxfuse/work/osxfuse-osxfuse-87d266a/kext/osxfuse/fuse_vfsops.c:1244:60: error: implicit conversion from 'int' to '__uint16_t' (aka 'unsigned short') changes value from 1430668627 to 17747 [-Werror,-Wconstant-conversion]
    VFSATTR_RETURN(attr, f_signature, OSSwapBigToHostInt16(FUSEFS_SIGNATURE));
                                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~

full log attached

Attachments (2)

main.log (700.3 KB) - added by mklein-de (Michael Klein) 7 years ago.
osxfuse-3.7.1.log (441.9 KB) - added by mklein-de (Michael Klein) 7 years ago.

Download all attachments as: .zip

Change History (32)

Changed 7 years ago by mklein-de (Michael Klein)

Attachment: main.log added

comment:1 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: dports@… drkp removed
Keywords: elcapitan added
Owner: set to drkp
Status: newassigned
Summary: osxfuse 3.6.3 fails to build on 10.11.6 (Xcode 8.2.1)osxfuse @3.6.3: use of undeclared identifiers 'VOL_CAP_FMT_NO_IMMUTABLE_FILES' 'VOL_CAP_FMT_NO_PERMISSIONS'

Indeed VOL_CAP_FMT_NO_IMMUTABLE_FILES and VOL_CAP_FMT_NO_PERMISSIONS appear to have been introduced in Sierra; I would think that trying to use them on El Capitan won't work.

It looks like the use of these constants was added to osxfuse as part of "experimental support for macOS 10.13".

Curiously, the build did succeed on El Capitan on our build server. It is using Xcode 7.3.1, to your 8.2.1; perhaps that's a relevant difference.

You should probably report this bug to the developers so they can fix it.

comment:2 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)

osxfuse only tries to use those new constants when the kernel's VERSION_MAJOR is 16 or greater. Xcode 7.3.1's 10.11 SDK defines VERSION_MAJOR as 15 (in /System/Library/Frameworks/Kernel.framework/Versions/A/Headers/libkern/version.h) which explains why it would work on our build server. Your Xcode 8.2.1 apparently contains the 10.12 SDK, which defines VERSION_MAJOR as 16. But if the build command is getting the VERSION_MAJOR definition from the SDK then I'm not sure why it isn't also getting the definition of those missing constants from the SDK.

comment:3 Changed 7 years ago by mklein-de (Michael Klein)

comment:4 Changed 7 years ago by drkp (Dan Ports)

We use a downloaded binary of the osxfuse kext on modern OSes anyway to get around code-signing issues, so we might as well not try to build it.

comment:5 Changed 7 years ago by Dan R. K. Ports <drkp@…>

Resolution: fixed
Status: assignedclosed

In 60351f9bd866d1dabd6834a3984f10922b2ae15c/macports-ports:

osxfuse: update to v3.7.1; disable kext build on Mavericks and later

Closes: #54781
Closes: #54561

comment:6 Changed 7 years ago by mklein-de (Michael Klein)

Resolution: fixed
Status: closedreopened

Thanks, but I'm still getting build errors. The binary kext seems to be fetched, but built anyway. I'll attach the full log.

I was also getting checksum errors for the prefpane module. Looking at the diff it looks like it's still at the same version, but the expected checksum has changed.

Changed 7 years ago by mklein-de (Michael Klein)

Attachment: osxfuse-3.7.1.log added

comment:7 Changed 7 years ago by Schamschula (Marius Schamschula)

Cc: Schamschula added

comment:8 in reply to:  6 Changed 7 years ago by Schamschula (Marius Schamschula)

Replying to mklein-de:

Thanks, but I'm still getting build errors. The binary kext seems to be fetched, but built anyway. I'll attach the full log.

I was also getting checksum errors for the prefpane module. Looking at the diff it looks like it's still at the same version, but the expected checksum has changed.

The issue has its own ticket: #54892

comment:9 Changed 7 years ago by Schamschula (Marius Schamschula)

Cc: Schamschula removed

comment:10 Changed 6 years ago by todmorrison (Tod Morrison)

Cc: todmorrison added

comment:11 Changed 6 years ago by anatol (Anatol Pomozov)

I updated my laptop to High Sierra and I see this osxfuse compilation failure. What I need to do to install the osxfuse package?

comment:12 Changed 6 years ago by anatol (Anatol Pomozov)

Cc: anatol added

comment:13 Changed 6 years ago by hapaguy (Brian Kurt Fujikawa)

Cc: hapaguy added

comment:14 in reply to:  11 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to anatol:

I updated my laptop to High Sierra and I see this osxfuse compilation failure. What I need to do to install the osxfuse package?

This ticket is for a bug specific to El Capitan with Xcode 8. If you're seeing a build failure with High Sierra, it is a different problem, probably #54939.

comment:15 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: laughingtiger added

Has duplicate #56528.

comment:16 in reply to:  3 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to mklein-de:

https://github.com/osxfuse/osxfuse/issues/411

The developers have closed that ticket, saying:

Xcode 8 does not contain the OS X 10.11 SDK, so you cannot build kernel extensions for 10.11 with it. Unlike regular macOS oder iOS applications kernel extensions do not support setting a deployment target. This is not a bug.

comment:17 in reply to:  1 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to ryandesign:

Curiously, the build did succeed on El Capitan on our build server. It is using Xcode 7.3.1, to your 8.2.1; perhaps that's a relevant difference.

In the mean time, I have updated our El Capitan build worker to Xcode 8.2.1, so this problem would now show up there too.

comment:18 Changed 6 years ago by dliessi (Davide Liessi)

Cc: dliessi added

comment:19 Changed 6 years ago by ewenmcneill (Ewen McNeill)

It appears I also have this problem attempting to build (as an upgrade) osxfuse 3.8.0 on OS X 10.11 (El Capitan). Presumably earlier versions I installed got build by the El Capitan build worker which worked until recently, and now it is attempting to build from source locally and failing (due to what sounds like 10.12/10.13 specific changes). Also Xcode 8.2.1:

ewen@ashram:~$ /usr/bin/xcodebuild -version
Xcode 8.2.1
Build version 8C1002
ewen@ashram:~$

It looks like the references in the code are guarded by VERSION_MAJOR >= 16, which shouldn't match on OS X 10.11:

ewen@ashram:~$ grep VERSION_MAJOR /System/Library/Frameworks/Kernel.framework/Versions/A/Headers/libkern/version.h 
/* VERSION_MAJOR, version_major is an integer that represents that major version
#define VERSION_MAJOR		15
/* Build-time value of VERSION_MAJOR */
ewen@ashram:~$ 

but it appears the build command explicitly references 10.12 as the minimum version (even when building on 10.11), which presumably is causing them to be dragged in anyway:

:info:build     [...]/clang -x c -arch x86_64 [...] -mmacosx-version-min=10.12

Since it sounds like XCode 8 can't build OS X 10.11 kext anyway, and the Macports build work has also been updated to XCode 8, I suspect the only reasonable solution at this point is to prevent osxfuse being installed on OS X 10.11 (El Capitan) at all.

(I used osxfuse for one thing in the past, and haven't used it since, so I think I'll just uninstall the port on my OS X 10.11 machines.)

Ewen

comment:20 Changed 6 years ago by victorp-sg (Victor Pang)

How can I get osxfuse @3.6.3 and above (including @3.8.0) to not build the kext but installed the signed kext version from the dmg file on OS X 10.11 El Capitan?

comment:21 Changed 6 years ago by jpenney (Jason Penney)

For what it's worth, if you manually install MacOSX10.11.sdk in $(xcode-select -p)/Platforms/MacOSX.platform/Developer/SDKs it seems to build fine.

comment:22 Changed 6 years ago by jpenney (Jason Penney)

Cc: jpenney added

comment:23 Changed 6 years ago by yan12125 (Chih-Hsuan Yen)

Cc: yan12125 Klaskviker added

Has duplicate #57128.

comment:24 Changed 6 years ago by Klaskviker

How to make osxfuse build at all? I have this error log on El Cap: https://pastebin.com/3vtwzFiw

comment:25 Changed 6 years ago by Klaskviker

cp -r MacOSX10.11.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ (in your xcode8 folder) worked for me

you may have to xcode-select xcode 7.3.1 and then revert back to 8

Last edited 5 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:26 Changed 5 years ago by Klaskviker

How do I downgrade libewf to the version of 2 weeks ago with my ports tree?

Version 0, edited 5 years ago by Klaskviker (next)

comment:27 Changed 4 years ago by yan12125 (Chih-Hsuan Yen)

Cc: yan12125 removed

comment:28 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: eplov willbprog127 Blokkendoos macportsraf added

Has duplicate #58269.

comment:29 Changed 3 years ago by mf2k (Frank Schima)

Owner: drkp deleted
Status: reopenedassigned

comment:30 Changed 21 months ago by mascguy (Christopher Nielsen)

Cc: mascguy added
Note: See TracTickets for help on using tickets.