jollyjinx / encfs.macosx

encfs for mac os x using osxfuse
66 stars 18 forks source link

Failed to build on 10.9 #3

Closed oomathias closed 11 years ago

oomathias commented 11 years ago

https://gist.github.com/oomathias/8f0a0766e2a6285364db

/Applications/Xcode5-DP.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__config:45:11: fatal error: 'sys/endian.h' file not found
# include <sys/endian.h>
          ^
1 error generated.
make[2]: *** [ConfigReader.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Do you have any idea?

jollyjinx commented 11 years ago

Nope, it's clearly a 10.9 issue. I presume they moved the endian header to a different location or your include path's are not correct. Have a look where you find endian.h

oomathias commented 11 years ago
/Applications/Xcode5-DP.app/.../SDKs/MacOSX10.9.sdk/usr/include/i386/endian.h
/Applications/Xcode5-DP.app/.../SDKs/MacOSX10.9.sdk/usr/include/machine/endian.h
/Applications/Xcode5-DP.app/.../SDKs/MacOSX10.9.sdk/usr/include/sys/_endian.h

The include is in XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__config:45

The lines :

  0 #ifdef __FreeBSD__
  1 # include <sys/endian.h>
  2 #  if _BYTE_ORDER == _LITTLE_ENDIAN
  3 #   define _LIBCPP_LITTLE_ENDIAN 1
  4 #   define _LIBCPP_BIG_ENDIAN    0
  5 # else  // _BYTE_ORDER == _LITTLE_ENDIAN
  6 #   define _LIBCPP_LITTLE_ENDIAN 0
  7 #   define _LIBCPP_BIG_ENDIAN    1
  8 # endif  // _BYTE_ORDER == _LITTLE_ENDIAN
  9 # ifndef __LONG_LONG_SUPPORTED
 10 #  define _LIBCPP_HAS_NO_LONG_LONG
 11 # endif  // __LONG_LONG_SUPPORTED
 12 #endif  // __FreeBSD__
kdkd commented 11 years ago

Just noting that this is still happening with 10.9 GM

smue commented 11 years ago

Any updates here? Or is there another possibility to get encfs work on 10.9 GM?

jollyjinx commented 11 years ago

I do not run Mavericks currently. As soon as I will I would check on that. But I presume the ones porting home-brew to 10.9 will fix this before I will as I won't use 10.9 before ZFS is ported.

jollyjinx commented 11 years ago

Be aware that I'm doing no active development on encfs. It's only that I've fixed the issues I had with it.

funzoneq commented 11 years ago

as a workaround:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sys/_endian.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sys/endian.h

mwehlou commented 11 years ago

@funzoneq: that didn't fix it for me. The original error on ConfigReader.lo went away, but was replaced with another one:

==> Downloading http://encfs.googlecode.com/files/encfs-1.7.4.tgz
Already downloaded: /Library/Caches/Homebrew/encfs-1.7.4.tgz
==> ./configure --prefix=/usr/local/Cellar/encfs/1.7.4 --with-boost=/usr/local
==> make
.
. 
.
# include <sys/endian.h>
          ^
1 error generated.
make[2]: *** [readpassphrase.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
mwehlou commented 11 years ago

Doing the same maneuver using /usr/include/sys/_endian, moved the error further along. I.e.:

sudo ln -s /usr/include/sys/_endian.h /usr/include/sys/endian.h

...resulted in a totally different error this time, during make:

Cipher.cpp:124:1: error: unknown type name 'shared_ptr'
shared_ptr<Cipher> Cipher::New(const string &name, int keyLen)
^
Cipher.cpp:124:11: error: expected unqualified-id
shared_ptr<Cipher> Cipher::New(const string &name, int keyLen)
      ^
Cipher.cpp:142:1: error: unknown type name 'shared_ptr'
shared_ptr<Cipher> Cipher::New( const Interface &iface, int keyLen )
^
Cipher.cpp:142:11: error: expected unqualified-id
shared_ptr<Cipher> Cipher::New( const Interface &iface, int keyLen )
      ^
4 errors generated.
make[2]: *** [Cipher.lo] Error 1 
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
jollyjinx commented 11 years ago

I don't like the sudo command changing the layout of the headers. It's better to change the source to fix it on 10.9.0 I think. Will look into it when I'm on 10.9

defunctzombie commented 11 years ago

Any reason this was closed? Will it not be fixed?

aglyzov commented 11 years ago

@mwehlou, hey Martin, I had the same issue and was able to compile it like this:

cd /usr/include/sys && ln -s _endian.h endian.h
port install clang-3.3
port clean encfs
port install encfs configure.compiler=macports-clang-3.3

However when I run it I get this:

dyld: lazy symbol binding failed: Symbol not found: __ZN5boost7archive17xml_iarchive_implINS0_12xml_iarchiveEEC2ERSij
  Referenced from: /opt/local/lib/libencfs.6.dylib
  Expected in: flat namespace

dyld: Symbol not found: __ZN5boost7archive17xml_iarchive_implINS0_12xml_iarchiveEEC2ERSij
  Referenced from: /opt/local/lib/libencfs.6.dylib
  Expected in: flat namespace

/opt/local/bin/encfssh: line 57:  9193 Trace/BPT trap: 5       encfs $enc_dir $unenc_dir $options
encfs failed

It seems to have something to do with my boost install (compiled it with the clang from Xcode 5.0.1 earlier)

jollyjinx commented 11 years ago

Fixed the script for 10.9

oomathias commented 11 years ago

:+1:

Thank you @jollyjinx

mwehlou commented 11 years ago

@jollyjinx: I cloned your new script and ran install.sh, and everything compiled and installed fine. But when I run encfs, I'm getting the exact same dyld error aglyzov had. Any idea what could cause that?

jollyjinx commented 11 years ago

I've already added that issue and am working on it. it's a ++ library fuckup as it seems

aglyzov commented 11 years ago

update: I got it all working by also recompiling boost with the macports-clang-3.3 compiler and rebooting (needed for proper fuse4x kext install).

mloveley commented 11 years ago

@aglyzov any chance you can share how you fixed your boost issue? I seem to have a similar issue, but I was trying to avoid installing macports.

dyld: lazy symbol binding failed: Symbol not found: __ZN5boost7archive17xml_iarchive_implINS0_12xml_iarchiveEEC2ERSij Referenced from: /usr/local/Cellar/encfsmacosxfuse/1.7.4p2/lib/libencfs.6.dylib Expected in: flat namespace

dyld: Symbol not found: __ZN5boost7archive17xml_iarchive_implINS0_12xml_iarchiveEEC2ERSij Referenced from: /usr/local/Cellar/encfsmacosxfuse/1.7.4p2/lib/libencfs.6.dylib Expected in: flat namespace

aglyzov commented 11 years ago

@mloveley, sure pal. I just recompiled both boost and encfs with the clang 3.3 that was installed by macports (instead of default clang that comes with Xcode 5.0.1).

port uninstall encfs boost
port install boost configure.compiler=macports-clang-3.3
port install encfs configure.compiler=macports-clang-3.3
axet commented 11 years ago
port uninstall encfs boost fuse4x-kext fuse4x
port clean encfs boost fuse4x-kext fuse4x
port install boost configure.compiler=macports-clang-3.3
# reboot
port install encfs configure.compiler=macports-clang-3.3
ghibble commented 11 years ago

Try this: https://gist.github.com/ghibble/7297078

andreagrandi commented 11 years ago

@ghibble I've tried your formula, but this is what I get:

andreas-air:Formula andrea$ brew reinstall encfs ==> Reinstalling encfs Error: You must brew link fuse4x' before encfs can be installed Error: Reinstall failed. andreas-air:Formula andrea$ brew install encfs Error: You mustbrew link fuse4x' before encfs can be installed andreas-air:Formula andrea$ brew link fuse4x Linking /usr/local/Cellar/fuse4x/0.9.2... Warning: Could not link fuse4x. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/fuse4x/0.9.2/lib/pkgconfig/fuse.pc Target /usr/local/lib/pkgconfig/fuse.pc already exists. You may need to delete it. To force the link and overwrite all other conflicting files, do: brew link --overwrite formula_name

To list all files that would be deleted: brew link --overwrite --dry-run formula_name andreas-air:Formula andrea$ brew link --overwrite --dry-run fuse4x Would remove: /usr/local/lib/pkgconfig/fuse.pc -> /usr/local/lib/pkgconfig/osxfuse.pc

andreas-air:Formula andrea$ brew link --overwrite fuse4x Linking /usr/local/Cellar/fuse4x/0.9.2... 7 symlinks created andreas-air:Formula andrea$ brew install encfs ==> Downloading http://encfs.googlecode.com/files/encfs-1.7.4.tgz Already downloaded: /Library/Caches/Homebrew/encfs-1.7.4.tgz ==> Patching patching file encfs/BlockNameIO.cpp patching file encfs/BlockNameIO.h patching file encfs/Cipher.cpp patching file encfs/Cipher.h patching file encfs/CipherFileIO.cpp patching file encfs/CipherFileIO.h patching file encfs/CipherKey.h patching file encfs/ConfigVar.h patching file encfs/Context.cpp patching file encfs/Context.h patching file encfs/DirNode.h patching file encfs/FSConfig.h patching file encfs/FileNode.cpp patching file encfs/FileNode.h patching file encfs/FileUtils.cpp patching file encfs/FileUtils.h patching file encfs/Interface.h patching file encfs/MACFileIO.cpp patching file encfs/MACFileIO.h patching file encfs/MemoryPool.cpp patching file encfs/NameIO.h patching file encfs/NullCipher.cpp patching file encfs/NullNameIO.cpp patching file encfs/SSL_Cipher.cpp patching file encfs/SSL_Cipher.h patching file encfs/StreamNameIO.h patching file encfs/encfs.cpp patching file encfs/encfs.h patching file encfs/encfsctl.cpp patching file encfs/main.cpp patching file encfs/test.cpp patching file intl/autosprintf.h ==> ./configure --prefix=/usr/local/Cellar/encfs/1.7.4 --with-boost=/usr/local ==> make make[2]: * [ConfigVar.lo] Error 1 1 error generated. make[2]: * [ConfigReader.lo] Error 1 make[1]: * [all-recursive] Error 1 make: * [all] Error 2

READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting

These open issues may also help: https://github.com/mxcl/homebrew/issues/23738 https://github.com/mxcl/homebrew/pull/22824 andreas-air:Formula andrea$

ghibble commented 11 years ago

Ok. I saw this fuse4x error too and overcome it somehow :| I think I rebuilt fuse4x too.

So at this point I suggest trying:

Upgrade to lastest Xcode command line tools.

$ brew reinstall fuse4x

$ brew reinstall fuse4x-kext

$ cd /usr/local/Library/Formula

$ wget https://gist.github.com/ghibble/7297078/raw/cae1ff000a5e1cfc670f5b7a611279ed494b63af/encfs.rb

$ brew reinstall encfs

I have added a 3rd file here (build output) (https://gist.github.com/ghibble/7297078). Which contains the output of building of Fuse4x and encfs on my machine. I hope this is useful to someone. Let me know if there is anything else I can try and report on to help everyone solve this.

andreagrandi commented 11 years ago

This is the output error that I get http://dpaste.com/1441742/ Most important line: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__config:45:11: fatal error: 'sys/endian.h' file not found any idea how to fix this?

ghibble commented 11 years ago

I duplicated _endian.h to endian.h in these two locations. I though the patches on encfs might have fixed this. But try "cp _endian.h endian.h" in these two locations. Please let me know if this solves it.

Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/_endian.h Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/endian.h Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sys/_endian.h Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/sys/endian.h

Baltrunas commented 10 years ago

Error: encfsmacosxfuse dependency gettext was built with the following C++ standard library: libc++ (from clang)

This is incompatible with the standard library being used to build encfsmacosxfuse: libstdc++ (from clang)

Please reinstall gettext using a compatible compiler. hint: Check https://github.com/mxcl/homebrew/wiki/C++-Standard-Libraries

brew install -v encfsmacosxfuse https://gist.github.com/Baltrunas/7542828

brew --config https://gist.github.com/Baltrunas/7542850

any idea how to fix this?

stubevan commented 10 years ago

Hi try "brew reinstall gettext” … and then reinstall encfs

Thanks

On 19 Nov 2013, at 09:45, HImIK notifications@github.com wrote:

Error: encfsmacosxfuse dependency gettext was built with the following C++ standard library: libc++ (from clang)

This is incompatible with the standard library being used to build encfsmacosxfuse: libstdc++ (from clang)

Please reinstall gettext using a compatible compiler. hint: Check https://github.com/mxcl/homebrew/wiki/C++-Standard-Libraries brew install -v encfsmacosxfuse https://gist.github.com/Baltrunas/7542828

brew --config https://gist.github.com/Baltrunas/7542850

any idea how to fix this?

— Reply to this email directly or view it on GitHub.

Baltrunas commented 10 years ago

I tried. It didn't help. Nothing was changed. Also I tried brew install -v encfs https://gist.github.com/Baltrunas/7543117

Baltrunas commented 10 years ago

http://www.andreagrandi.it/2013/11/08/how-to-fix-encfs-installation-on-osx-10-9-mavericks-and-brew/ it's help me

maparent commented 9 years ago

FYI, my solution was to remove the -DFreeBSD=10 flag from all flags.make files after running cmake.