Opened 10 months ago

Last modified 4 weeks ago

#54781 reopened 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: drkp (Dan Ports)
Priority: Normal Milestone:
Component: ports Version:
Keywords: elcapitan Cc: todmorrison (Tod Morrison), anatol (Anatol Pomozov), hapaguy (Brian Kurt Fujikawa), laughingtiger, dliessi (Davide Liessi)
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) 10 months ago.
osxfuse-3.7.1.log (441.9 KB) - added by mklein-de (Michael Klein) 9 months ago.

Download all attachments as: .zip

Change History (21)

Changed 10 months ago by mklein-de (Michael Klein)

Attachment: main.log added

comment:1 Changed 10 months ago by ryandesign (Ryan 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 10 months ago by ryandesign (Ryan 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 10 months ago by mklein-de (Michael Klein)

comment:4 Changed 10 months 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 9 months 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 9 months 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 9 months ago by mklein-de (Michael Klein)

Attachment: osxfuse-3.7.1.log added

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

Cc: Schamschula added

comment:8 in reply to:  6 Changed 9 months 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 9 months ago by Schamschula (Marius Schamschula)

Cc: Schamschula removed

comment:10 Changed 9 months ago by todmorrison (Tod Morrison)

Cc: todmorrison added

comment:11 Changed 7 months 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 7 months ago by anatol (Anatol Pomozov)

Cc: anatol added

comment:13 Changed 5 months ago by hapaguy (Brian Kurt Fujikawa)

Cc: hapaguy added

comment:14 in reply to:  11 Changed 5 weeks ago by ryandesign (Ryan 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 5 weeks ago by ryandesign (Ryan Schmidt)

Cc: laughingtiger added

Has duplicate #56528.

comment:16 in reply to:  3 Changed 5 weeks ago by ryandesign (Ryan 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 5 weeks ago by ryandesign (Ryan 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 4 weeks ago by dliessi (Davide Liessi)

Cc: dliessi added

comment:19 Changed 4 weeks 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

Note: See TracTickets for help on using tickets.