Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fea request: Provide MacOS builds #64

Closed
felciano opened this issue Aug 1, 2021 · 8 comments
Closed

Fea request: Provide MacOS builds #64

felciano opened this issue Aug 1, 2021 · 8 comments
Labels
build Compilation problems help wanted Extra attention is needed

Comments

@felciano
Copy link

felciano commented Aug 1, 2021

fclones looks great, but installing a whole Rust build stack to test it out is a bit of barrier. At some point it would be great if MacOS-compatible builds where generated & provided as part of the regular release process.

@pkolaczk pkolaczk added help wanted Extra attention is needed build Compilation problems labels Aug 20, 2021
@pkolaczk
Copy link
Owner

I'd like to do this but I have no idea how to actually make that happen. I don't even own a Mac ;)
Is there a way to generate such packages on Linux? Docker maybe or sth? Or maybe homebrew?

@cyounkins
Copy link

If you use Nix, we're working on it here: NixOS/nixpkgs#137626

@pkolaczk
Copy link
Owner

@cyounkins the ticket you've linked has been merged. Does it mean fclones is already installable on Darwin?
Should I close it?

@cyounkins
Copy link

fclones is able to be compiled on Darwin / macOS and basic functionality works, but I haven't extensively tested it. There is at least one failing test due to device names that could be conditioned to be linux-only.

fclones is installable on Darwin / macOS using the Nix package manager when using the 'unstable' channel. Users would need to install Nix, enable the unstable channel, then do nix-env -iA nixpkgs.fclones.

I love Nix, but it has a higher initial learning curve and smaller user base than Homebrew. There will probably be a request for Homebrew packaging either here or in the Homebrew project sometime soon. It sounds like you don't use macOS @pkolaczk so I would let the Homebrew folks handle that.

@pkolaczk
Copy link
Owner

Release 0.20.1 comes with darwin / macOS build:
https://github.com/pkolaczk/fclones/releases/tag/v0.20.1

I cross-compiled it from Linux. Please let me know how it works.

@avioli
Copy link

avioli commented Apr 28, 2022

Release 0.20.1 comes with darwin / macOS build: https://github.com/pkolaczk/fclones/releases/tag/v0.20.1

I cross-compiled it from Linux. Please let me know how it works.

All works on latest macOS, once I confirmed to run the unsigned binary (there's no way to sign a unix binary AFAIK).

A better alternative would be to create a Homebrew formulae, which is surprisingly easy and I've created one below via similar steps to these:

# run on a mac :)
# install homebrew
# to create the formulae:
brew create --rust https://github.com/pkolaczk/fclones/archive/refs/tags/v0.20.1.tar.gz
# to set the homepage:
sed -i '' 's|homepage ""|homepage "https://github.com/pkolaczk/fclones"|' /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/fclones.rb
# to clear the comments:
sed -i '' '/^ *#/d' /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/fclones.rb
# to fix the test in a silly way:
sed -i '' 's|system "false"|assert_equal "fclones #{version}", shell_output("#{bin}/fclones --version").strip|' /opt/homebrew/Library/Taps/homebrew/homebrew-core/Formula/fclones.rb
# to install the formulae:
brew install --build-from-source fclones
# to test the formulae:
brew test fclones
fclones.rb with a better test and a bottle hash for macOS Monterey
class Fclones < Formula
  desc "Efficient Duplicate File Finder"
  homepage "https://github.com/pkolaczk/fclones"
  url "https://github.com/pkolaczk/fclones/archive/refs/tags/v0.20.1.tar.gz"
  sha256 "5ce5864ee6dec363e72e779a97f5c6e9e23043f3c85c1692c59e040200ba143f"
  license "MIT"

  bottle do
    sha256 cellar: :any_skip_relocation, arm64_monterey: "2a5b1a8a453d5029d81a085475d4c443b25f5198b5752930c299edff6145d45e"
  end

  depends_on "rust" => :build

  def install
    system "cargo", "install", *std_cargo_args
  end

  test do
    (testpath/"foo1.txt").write "foo"
    (testpath/"foo2.txt").write "foo"
    (testpath/"foo3.txt").write "foo"
    (testpath/"bar1.txt").write "bar"
    (testpath/"bar2.txt").write "bar"
    output = shell_output("fclones group #{testpath}")
    assert_match "Redundant: 9 B (9 B) in 3 files", output
    assert_match "a9707ebb28a5cf556818ea23a0c7282c", output
    assert_match "16aa71f09f39417ecbc83ea81c90c4e7", output
  end
end

Then this formulae can be sent as a PR to homebrew-core. Once the formula is accepted in their repo, installing it will be trivial via brew install fclones and then upgrading with brew upgrade fclones.

Aside - building a bottle (which is a pre-built binary for a specific OS) for other systems is possible, but I'll have to dig some older macs or even run a linux VM/distro. Let me know.

There's an option to run Homebrew on Linux, which I haven't done since I do not use a linux distro atm.

@pkolaczk
Copy link
Owner

Homebrew/homebrew-core#100472

Until it is merged, you can use pkolaczk/fclones tap.
Works on Linux for me.

@pkolaczk
Copy link
Owner

pkolaczk commented May 2, 2022

Yay! They have merged it and now it is officially in homebrew core. Thank you all for the help!

@pkolaczk pkolaczk closed this as completed May 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Compilation problems help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants