alperakcan / fuse-ext2

Fuse-ext2 is a multi OS FUSE module to mount ext2, ext3 and ext4 file system devices and/or images with read write support.
GNU General Public License v2.0
806 stars 130 forks source link

Homebrew on Mac OS X #67

Open ylluminarious opened 7 years ago

ylluminarious commented 7 years ago

There is a Homebrew formula for this software, but it uses an old binary from Sourceforge. It would be great if someone fixed this (or made a new formula) to get new versions from this Github repo. This would certainly ease the current OS X installation process. Not to mention that the current installation method could install duplicate dependencies. This is because users may already have these dependencies through their package manager.

ghost commented 6 years ago

submit a PR for https://github.com/Homebrew/homebrew-core/blob/master/Formula/ext2fuse.rb

yalp commented 6 years ago

I just submitted a PR https://github.com/Homebrew/homebrew-core/pull/24302

I had to make the following modifications to make it build correctly:

ylluminarious commented 6 years ago

@yalp Thanks. Glad that someone is getting on this issue.

yalp commented 6 years ago

Last step requires a release of fuse-ext2, so I submitted an issue #71

yalp commented 6 years ago

In the mean time, people can build with Homebrew using the submitted formula directly:

brew install https://raw.githubusercontent.com/yalp/homebrew-core/fuse-ext2/Formula/fuse-ext2.rb

or to build from master branch:

brew install --head https://raw.githubusercontent.com/yalp/homebrew-core/fuse-ext2/Formula/fuse-ext2.rb

This could be a nice addition to the README if we can't get a release of fuse-ext2 anytime soon because of stability / release readiness issues. Maybe the fuse-ext2 repo could host the fuse-ext2.rb formula file (as a user I feel suspicious about installing a formula from an unknown remote Github repo) ?

ylluminarious commented 6 years ago

@yalp Good idea regarding hosting the formula here if homebrew-core rejects it. However, it looks like we just got a new release tagged in #71 so I'd suggest continuing to try to get the formula into the core repository. Thanks again for your efforts and thanks to @alperakcan for cooperating and helping out with this!

yalp commented 6 years ago

Made a new attempt with 0.0.10 release: https://github.com/Homebrew/homebrew-core/pull/24339

alperakcan commented 6 years ago

removed pre-release mark from v0.0.10

eduncan911 commented 6 years ago

The formula currently errors with:

$ brew install --HEAD https://raw.githubusercontent.com/yalp/homebrew-core/fuse-ext2/Formula/fuse-ext2.rb
######################################################################## 100.0%
==> Installing dependencies for fuse-ext2: automake, e2fsprogs
==> Installing fuse-ext2 dependency: automake
==> Downloading https://homebrew.bintray.com/bottles/automake-1.16.1.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring automake-1.16.1.sierra.bottle.tar.gz
🍺  /usr/local/Cellar/automake/1.16.1: 131 files, 3MB
==> Installing fuse-ext2 dependency: e2fsprogs
==> Downloading https://homebrew.bintray.com/bottles/e2fsprogs-1.44.0.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring e2fsprogs-1.44.0.sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because this installs several executables which shadow macOS system commands.

If you need to have this software first in your PATH run:
  echo 'export PATH="/usr/local/opt/e2fsprogs/bin:$PATH"' >> ~/.bash_profile
  echo 'export PATH="/usr/local/opt/e2fsprogs/sbin:$PATH"' >> ~/.bash_profile

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/e2fsprogs/lib
    CPPFLAGS: -I/usr/local/opt/e2fsprogs/include
For pkg-config to find this software you may need to set:
    PKG_CONFIG_PATH: /usr/local/opt/e2fsprogs/lib/pkgconfig

==> Summary
🍺  /usr/local/Cellar/e2fsprogs/1.44.0: 138 files, 6.8MB
==> Installing fuse-ext2 --HEAD
==> Cloning https://github.com/alperakcan/fuse-ext2.git
Cloning into '/Users/eric/Library/Caches/Homebrew/fuse-ext2--git'...
remote: Counting objects: 97, done.
remote: Compressing objects: 100% (88/88), done.
remote: Total 97 (delta 29), reused 33 (delta 3), pack-reused 0
Receiving objects: 100% (97/97), 134.98 KiB | 1.02 MiB/s, done.
Resolving deltas: 100% (29/29), done.
==> Checking out branch master
==> ./autogen.sh
==> ./configure --prefix=/usr/local/Cellar/fuse-ext2/HEAD-9f19d68
==> make
Last 15 lines from /Users/eric/Library/Logs/Homebrew/fuse-ext2/03.make:
libtool: link: clang -g -O2 -o fuse-ext2.uninstall fuse-ext2.uninstall.o  -lext2fs -lcom_err /usr/local/lib/libosxfuse.dylib -liconv -pthread
libtool: link: clang -g -O2 -o fuse-ext2.wait fuse-ext2.wait.o  -framework CoreFoundation -lext2fs -lcom_err /usr/local/lib/libosxfuse.dylib -liconv -pthread
/bin/sh ../libtool    --mode=link clang  -g -O2 -framework Foundation  -o fuse-ext2.install fuse-ext2.install.o  -lext2fs -lcom_err -losxfuse
libtool: link: clang -Wall -DHAVE_CONFIG_H -I/usr/local/include -D__FreeBSD__=10 -idirafter/usr/local/include/osxfuse/fuse --std=gnu89 -idirafter/usr/local/opt/e2fsprogs/include -o fuse-ext2 fuse_ext2-fuse-ext2.o fuse_ext2-do_probe.o fuse_ext2-do_check.o fuse_ext2-do_fillstatbuf.o fuse_ext2-do_readinode.o fuse_ext2-do_writeinode.o fuse_ext2-do_killfilebyinode.o fuse_ext2-op_init.o fuse_ext2-op_destroy.o fuse_ext2-op_access.o fuse_ext2-op_fgetattr.o fuse_ext2-op_getattr.o fuse_ext2-op_getxattr.o fuse_ext2-op_open.o fuse_ext2-op_read.o fuse_ext2-op_readdir.o fuse_ext2-op_readlink.o fuse_ext2-op_release.o fuse_ext2-op_statfs.o fuse_ext2-op_chown.o fuse_ext2-op_chmod.o fuse_ext2-op_create.o fuse_ext2-op_flush.o fuse_ext2-op_fsync.o fuse_ext2-op_mkdir.o fuse_ext2-op_rmdir.o fuse_ext2-op_unlink.o fuse_ext2-op_utimens.o fuse_ext2-op_write.o fuse_ext2-op_mknod.o fuse_ext2-op_symlink.o fuse_ext2-op_truncate.o fuse_ext2-op_link.o fuse_ext2-op_rename.o  -lext2fs -lcom_err /usr/local/lib/libosxfuse.dylib -liconv -pthread
libtool: link: clang -g -O2 -o fuse-ext2.install fuse-ext2.install.o  -framework Foundation -lext2fs -lcom_err /usr/local/lib/libosxfuse.dylib -liconv -pthread
Making all in tools
Making all in macosx
( cd ../../tools/macosx/prefpane; \
      xcodebuild; \
    )
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
make[3]: *** [prefpane] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Do not report this issue to Homebrew/brew or Homebrew/core!

These open issues may also help:
fuse-ext2 0.0.10 (new formula) https://github.com/Homebrew/homebrew-core/pull/24339

Someone had suggested running sudo xcode-select -r but that didn't resolve it.

eduncan911 commented 6 years ago

Went ahead and installed XCode. Then I get this:

$ brew install --HEAD https://raw.githubusercontent.com/yalp/homebrew-core/fuse-ext2/Formula/fuse-ext2.rb
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (caskroom/cask).
No changes to formulae.

######################################################################## 100.0%
==> Cloning https://github.com/alperakcan/fuse-ext2.git
Updating /Users/eric/Library/Caches/Homebrew/fuse-ext2--git
==> Checking out branch master
==> ./autogen.sh
==> ./configure --prefix=/usr/local/Cellar/fuse-ext2/HEAD-9f19d68
==> make
Last 15 lines from /Users/eric/Library/Logs/Homebrew/fuse-ext2/03.make:
    18  ???                                 0x0000000000000015 0x0 + 21
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Command /Applications/Xcode.app/Contents/Developer/usr/bin/ibtool failed with exit code 6. The tool may have crashed. Please file a bug report at http://bugreport.apple.com with the above output and attach any crash logs for ibtool, ibtoold, Xcode, and Interface Builder Cocoa Touch Tool created around the time of this failure. These logs can be found in ~/Library/Logs/DiagnosticReports or /Library/Logs/DiagnosticReports.

** BUILD FAILED **

The following build commands failed:
    CompileXIB English.lproj/fuse_ext2Pref.xib
(1 failure)
make[3]: *** [prefpane] Error 65
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Do not report this issue to Homebrew/brew or Homebrew/core!

These open issues may also help:
fuse-ext2 0.0.10 (new formula) https://github.com/Homebrew/homebrew-core/pull/24339
luca992 commented 6 years ago

@eduncan911 try actually opening xcode and letting its dependencies install ... I installed it with just fine with

brew install --HEAD https://raw.githubusercontent.com/yalp/homebrew-core/fuse-ext2/Formula/fuse-ext2.rb

Also, not sure if this is an issue only when installing with brew.... but when you run fuse-ext2. The displayed version is not updated to 0.0.10. it displays:

fuse-ext2 0.0.9 29 - FUSE EXT2FS Driver

Copyright (C) 2008-2015 Alper Akcan <alper.akcan@gmail.com>
Copyright (C) 2009 Renzo Davoli <renzo@cs.unibo.it>

Usage:    fuse-ext2 <device|image_file> <mount_point> [-o option[,...]]

Options:  ro, force, allow_other
      Please see details in the manual.

Example:  fuse-ext2 /dev/sda1 /mnt/sda1

http://github.com/alperakcan/fuse-ext2/

Maybe that should be brought up in another issue.

haikusw commented 6 years ago

Appreciate this getting improved!

Question: Why is this requiring the command line tools installation of Xcode?

$ brew install https://raw.githubusercontent.com/yalp/homebrew-core/fuse-ext2/Formula/fuse-ext2.rb ######################################################################## 100.0% Error: Xcode alone is not sufficient on High Sierra. Install the Command Line Tools: xcode-select --install

from Technical Note 2339 (which is not being maintained but I'm not finding anything suggesting it's actually inaccurate though with the state of Apple's documentation… ¯_(ツ)_/¯ ):

If Xcode is installed on your machine, then there is no need to install them. Xcode comes bundled with all your command-line tools.

When I just clone the source and make it without doing a separate xcode-select --install (though it fails on the uuid_string_t issue you identify above).

TIA.

Update: it seems like the homebrew people are being very picky and this isn't getting merged :-/

ylluminarious commented 6 years ago

@haikusw Yes, unfortunately Homebrew has become much too picky (in many regards) for my tastes anymore. I've moved to MacPorts and I can heartily recommend anyone else to do the same. If you need reasons why, feel free to contact me or ask me here (although we should avoid cluttering this thread).

I am going to try and make this program available via MacPorts soon and I will post an update here when I do so. The MacPorts folks seem much less picky than Homebrew so it should go through without a hitch.

Hopefully it will be installable via:

sudo port install fuse-ext2

or some such.

haikusw commented 6 years ago

Thanks @ylluminarious. (sigh)