2024-08-12 10:30:59 +01:00
|
|
|
# typed: true # rubocop:todo Sorbet/StrictSigil
|
2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2014-05-03 10:01:30 -05:00
|
|
|
# This script is loaded by formula_installer as a separate instance.
|
2015-04-13 17:53:02 +08:00
|
|
|
# Thrown exceptions are propagated back to the parent process over a pipe
|
2011-03-15 22:02:14 -07:00
|
|
|
|
2022-09-08 01:40:34 +01:00
|
|
|
raise "#{__FILE__} must not be loaded via `require`." if $PROGRAM_NAME != __FILE__
|
|
|
|
|
2014-08-26 22:06:43 -05:00
|
|
|
old_trap = trap("INT") { exit! 130 }
|
2012-08-22 15:50:27 -04:00
|
|
|
|
2021-02-25 16:29:05 +00:00
|
|
|
require_relative "global"
|
2014-08-27 17:25:13 -05:00
|
|
|
require "build_options"
|
2014-08-26 22:06:43 -05:00
|
|
|
require "keg"
|
|
|
|
require "extend/ENV"
|
|
|
|
require "fcntl"
|
2024-09-27 02:50:37 +01:00
|
|
|
require "utils/socket"
|
2020-02-11 23:47:15 +05:30
|
|
|
require "cmd/install"
|
2024-07-14 08:49:39 -04:00
|
|
|
require "json/add/exception"
|
2009-09-04 15:28:18 +01:00
|
|
|
|
2020-08-14 02:51:51 +02:00
|
|
|
# A formula build.
|
2013-05-25 15:26:55 -05:00
|
|
|
class Build
|
2020-07-23 02:06:38 +02:00
|
|
|
attr_reader :formula, :deps, :reqs, :args
|
2012-09-13 09:06:37 -04:00
|
|
|
|
2020-07-23 02:06:38 +02:00
|
|
|
def initialize(formula, options, args:)
|
2014-08-27 17:25:13 -05:00
|
|
|
@formula = formula
|
2014-08-27 17:25:13 -05:00
|
|
|
@formula.build = BuildOptions.new(options, formula.options)
|
2020-07-23 02:06:38 +02:00
|
|
|
@args = args
|
2014-03-03 23:47:00 -06:00
|
|
|
|
2021-03-18 14:46:48 +00:00
|
|
|
if args.ignore_dependencies?
|
2014-03-03 23:47:00 -06:00
|
|
|
@deps = []
|
|
|
|
@reqs = []
|
|
|
|
else
|
|
|
|
@deps = expand_deps
|
|
|
|
@reqs = expand_reqs
|
|
|
|
end
|
2013-05-25 15:26:55 -05:00
|
|
|
end
|
2012-08-28 13:46:29 -04:00
|
|
|
|
2014-08-24 14:46:34 -05:00
|
|
|
def effective_build_options_for(dependent)
|
|
|
|
args = dependent.build.used_options
|
|
|
|
args |= Tab.for_formula(dependent).used_options
|
|
|
|
BuildOptions.new(args, dependent.options)
|
|
|
|
end
|
|
|
|
|
2013-06-03 15:08:47 -05:00
|
|
|
def expand_reqs
|
2014-08-27 17:25:13 -05:00
|
|
|
formula.recursive_requirements do |dependent, req|
|
2014-08-24 14:46:34 -05:00
|
|
|
build = effective_build_options_for(dependent)
|
2020-11-13 10:07:02 -05:00
|
|
|
if req.prune_from_option?(build) || req.prune_if_build_and_not_dependent?(dependent, formula) || req.test?
|
2020-05-19 14:23:49 +01:00
|
|
|
Requirement.prune
|
2013-06-03 15:08:47 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-05-25 15:26:55 -05:00
|
|
|
def expand_deps
|
2014-08-27 17:25:13 -05:00
|
|
|
formula.recursive_dependencies do |dependent, dep|
|
2014-08-24 14:46:34 -05:00
|
|
|
build = effective_build_options_for(dependent)
|
2020-11-13 17:21:51 +01:00
|
|
|
if dep.prune_from_option?(build) ||
|
|
|
|
dep.prune_if_build_and_not_dependent?(dependent, formula) ||
|
2023-06-22 22:04:13 +01:00
|
|
|
(dep.test? && !dep.build?) || dep.implicit?
|
2013-07-22 21:36:11 -05:00
|
|
|
Dependency.prune
|
2018-03-21 05:30:51 -07:00
|
|
|
elsif dep.build?
|
|
|
|
Dependency.keep_but_prune_recursive_deps
|
2013-05-25 15:26:55 -05:00
|
|
|
end
|
2013-06-03 15:08:47 -05:00
|
|
|
end
|
2009-09-21 20:22:09 +01:00
|
|
|
end
|
|
|
|
|
2013-05-25 15:26:55 -05:00
|
|
|
def install
|
2015-11-20 14:18:18 +00:00
|
|
|
formula_deps = deps.map(&:to_formula)
|
|
|
|
keg_only_deps = formula_deps.select(&:keg_only?)
|
2018-05-16 11:34:12 -07:00
|
|
|
run_time_deps = deps.reject(&:build?).map(&:to_formula)
|
2013-05-25 15:26:55 -05:00
|
|
|
|
2015-11-20 14:18:18 +00:00
|
|
|
formula_deps.each do |dep|
|
2014-08-23 17:42:13 -05:00
|
|
|
fixopt(dep) unless dep.opt_prefix.directory?
|
2013-01-19 20:45:57 -06:00
|
|
|
end
|
superenv: build-environments that just work
1. A minimal build environment, we don't set CFLAGS, CPPFLAGS, LDFLAGS, etc. the rationale being, the less that is set, the less variables we are introducing that can break builds.
2. A set of scripts that replace cc, ld, etc. and inject the -I, -L, etc. flags we need into the args passed to the build-tools.
Because we now have complete control over compiler instantiations we do a variety of clean-up tasks, like removing bad flags, enforcing universal builds and ensuring makefiles don't try to change the order of library and include paths from ones that work to ones that don't.
The previous ENV-system is still available when --env=std is specified.
superenv applies to Xcode >= 4.3 only currently.
2012-08-11 12:30:51 -04:00
|
|
|
|
2020-07-28 02:04:50 +02:00
|
|
|
ENV.activate_extensions!(env: args.env)
|
2014-07-28 23:05:44 -05:00
|
|
|
|
2020-07-28 02:04:50 +02:00
|
|
|
if superenv?(args.env)
|
2024-08-23 05:50:39 +01:00
|
|
|
superenv = T.cast(ENV, Superenv)
|
|
|
|
superenv.keg_only_deps = keg_only_deps
|
|
|
|
superenv.deps = formula_deps
|
|
|
|
superenv.run_time_deps = run_time_deps
|
2022-08-02 08:47:19 -07:00
|
|
|
ENV.setup_build_environment(
|
2024-03-07 16:20:20 +00:00
|
|
|
formula:,
|
2022-08-02 08:47:19 -07:00
|
|
|
cc: args.cc,
|
|
|
|
build_bottle: args.build_bottle?,
|
|
|
|
bottle_arch: args.bottle_arch,
|
|
|
|
debug_symbols: args.debug_symbols?,
|
|
|
|
)
|
2020-07-28 14:08:40 +02:00
|
|
|
reqs.each do |req|
|
|
|
|
req.modify_build_environment(
|
|
|
|
env: args.env, cc: args.cc, build_bottle: args.build_bottle?, bottle_arch: args.bottle_arch,
|
|
|
|
)
|
|
|
|
end
|
2013-05-25 15:26:55 -05:00
|
|
|
else
|
2022-08-02 08:47:19 -07:00
|
|
|
ENV.setup_build_environment(
|
2024-03-07 16:20:20 +00:00
|
|
|
formula:,
|
2022-08-02 08:47:19 -07:00
|
|
|
cc: args.cc,
|
|
|
|
build_bottle: args.build_bottle?,
|
|
|
|
bottle_arch: args.bottle_arch,
|
|
|
|
debug_symbols: args.debug_symbols?,
|
|
|
|
)
|
2020-07-28 14:08:40 +02:00
|
|
|
reqs.each do |req|
|
|
|
|
req.modify_build_environment(
|
|
|
|
env: args.env, cc: args.cc, build_bottle: args.build_bottle?, bottle_arch: args.bottle_arch,
|
|
|
|
)
|
|
|
|
end
|
2013-05-25 15:26:55 -05:00
|
|
|
|
|
|
|
keg_only_deps.each do |dep|
|
2014-06-09 14:55:01 -05:00
|
|
|
ENV.prepend_path "PATH", dep.opt_bin.to_s
|
|
|
|
ENV.prepend_path "PKG_CONFIG_PATH", "#{dep.opt_lib}/pkgconfig"
|
|
|
|
ENV.prepend_path "PKG_CONFIG_PATH", "#{dep.opt_share}/pkgconfig"
|
|
|
|
ENV.prepend_path "ACLOCAL_PATH", "#{dep.opt_share}/aclocal"
|
|
|
|
ENV.prepend_path "CMAKE_PREFIX_PATH", dep.opt_prefix.to_s
|
|
|
|
ENV.prepend "LDFLAGS", "-L#{dep.opt_lib}" if dep.opt_lib.directory?
|
|
|
|
ENV.prepend "CPPFLAGS", "-I#{dep.opt_include}" if dep.opt_include.directory?
|
2013-05-25 15:26:55 -05:00
|
|
|
end
|
2013-05-20 19:35:07 -05:00
|
|
|
end
|
2012-03-18 13:58:13 -05:00
|
|
|
|
2017-07-15 17:26:42 -07:00
|
|
|
new_env = {
|
|
|
|
"TMPDIR" => HOMEBREW_TEMP,
|
2018-11-02 17:18:07 +00:00
|
|
|
"TEMP" => HOMEBREW_TEMP,
|
|
|
|
"TMP" => HOMEBREW_TEMP,
|
2017-07-15 17:26:42 -07:00
|
|
|
}
|
2016-08-26 10:17:59 +08:00
|
|
|
|
2017-07-15 17:26:42 -07:00
|
|
|
with_env(new_env) do
|
2024-07-24 06:16:18 +01:00
|
|
|
if args.debug? && !Homebrew::EnvConfig.disable_debrew?
|
2023-12-06 00:01:16 +00:00
|
|
|
require "debrew"
|
|
|
|
formula.extend(Debrew::Formula)
|
|
|
|
end
|
2014-09-18 14:16:07 -05:00
|
|
|
|
2020-05-12 12:37:54 +01:00
|
|
|
formula.update_head_version
|
|
|
|
|
2020-08-02 06:05:53 +02:00
|
|
|
formula.brew(
|
2022-07-26 12:15:53 +01:00
|
|
|
fetch: false,
|
|
|
|
keep_tmp: args.keep_tmp?,
|
|
|
|
debug_symbols: args.debug_symbols?,
|
|
|
|
interactive: args.interactive?,
|
2020-08-02 06:05:53 +02:00
|
|
|
) do
|
2021-10-22 20:07:24 +08:00
|
|
|
with_env(
|
|
|
|
# For head builds, HOMEBREW_FORMULA_PREFIX should include the commit,
|
|
|
|
# which is not known until after the formula has been staged.
|
2024-03-08 21:26:25 +00:00
|
|
|
HOMEBREW_FORMULA_PREFIX: formula.prefix,
|
|
|
|
# https://reproducible-builds.org/docs/build-path/
|
|
|
|
HOMEBREW_FORMULA_BUILDPATH: formula.buildpath,
|
2021-10-22 20:07:24 +08:00
|
|
|
# https://reproducible-builds.org/docs/source-date-epoch/
|
2024-03-08 21:26:25 +00:00
|
|
|
SOURCE_DATE_EPOCH: formula.source_modified_time.to_i.to_s,
|
2021-10-22 20:07:24 +08:00
|
|
|
# Avoid make getting confused about timestamps.
|
|
|
|
# https://github.com/Homebrew/homebrew-core/pull/87470
|
2024-03-08 21:26:25 +00:00
|
|
|
TZ: "UTC0",
|
2021-10-22 20:07:24 +08:00
|
|
|
) do
|
2020-07-23 02:06:38 +02:00
|
|
|
if args.git?
|
formula: don't include DATA patches in initial Git repo
Currently, existing DATA patches are subsumed into the initial Git repo
created by `brew install --git`, which makes creating a new DATA
patch after more fixes a tedious and error-prone process.
This PR delays DATA patch processing till after the Git repo is
created, so a `git diff` at the end creates a correct and consolidated
DATA patch block ready for insertion/replacement, or even migration
to a proper remote patch URL.
The difference is clearly seen in `gromgit/fuse/dislocker-mac`,
which has both remote and DATA patches.
Before:
```
% brew install -sig dislocker-mac
==> Fetching gromgit/fuse/dislocker-mac
==> Downloading https://github.com/Aorimn/dislocker/commit/2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch?full_index=1
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/37276859cbebc1711941278db00cd8b25b98d69e15e31e33915a98d01a13febc--2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
==> Downloading https://github.com/Aorimn/dislocker/archive/refs/tags/v0.7.3.tar.gz
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/b1ba1098c95535574936051eca45cc472955a5a024b81cc72e1c3b006e1950b3--dislocker-0.7.3.tar.gz
==> Installing dislocker-mac from gromgit/fuse
==> Patching
==> Applying 2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
Initialized empty Git repository in /private/tmp/dislocker-mac-20250215-35534-8qlxtp/dislocker-0.7.3/.git/
==> Entering interactive mode...
Type `exit` to return and finalize the installation.
Install to this prefix: /opt/homebrew/Cellar/dislocker-mac/0.7.3_2
This directory is now a Git repository. Make your changes and then use:
git diff | pbcopy
to copy the diff to the clipboard.
% git diff
```
After:
```
% brew install -sig dislocker-mac
==> Fetching gromgit/fuse/dislocker-mac
==> Downloading https://github.com/Aorimn/dislocker/commit/2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch?full_index=1
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/37276859cbebc1711941278db00cd8b25b98d69e15e31e33915a98d01a13febc--2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
==> Downloading https://github.com/Aorimn/dislocker/archive/refs/tags/v0.7.3.tar.gz
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/b1ba1098c95535574936051eca45cc472955a5a024b81cc72e1c3b006e1950b3--dislocker-0.7.3.tar.gz
==> Installing dislocker-mac from gromgit/fuse
==> Applying non-DATA patches
==> Applying 2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
Initialized empty Git repository in /private/tmp/dislocker-mac-20250215-32462-zh1akh/dislocker-0.7.3/.git/
==> Applying DATA patches
==> Entering interactive mode...
Type `exit` to return and finalize the installation.
Install to this prefix: /opt/homebrew/Cellar/dislocker-mac/0.7.3_2
This directory is now a Git repository. Make your changes and then use:
git diff | pbcopy
to copy the diff to the clipboard.
% git diff
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bd854d2..9ab137d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -92,7 +92,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
# Don't use `-read_only_relocs' here as it seems to only work for 32 bits
# binaries
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-bind_at_load")
- set (FUSE_LIB osxfuse_i64)
+ set (FUSE_LIB fuse)
else()
# Useless warnings when used within Darwin
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion")
diff --git a/src/dislocker-fuse.c b/src/dislocker-fuse.c
index f93523f..3dd106c 100644
--- a/src/dislocker-fuse.c
+++ b/src/dislocker-fuse.c
@@ -33,11 +33,7 @@
-#ifdef __DARWIN
-# include <osxfuse/fuse.h>
-#else
-# include <fuse.h>
-#endif /* __DARWIN */
+#include <fuse.h>
/** NTFS virtual partition's name */
```
2025-02-15 20:15:53 +08:00
|
|
|
formula.selective_patch(is_data: false)
|
2021-10-22 20:07:24 +08:00
|
|
|
system "git", "init"
|
|
|
|
system "git", "add", "-A"
|
formula: don't include DATA patches in initial Git repo
Currently, existing DATA patches are subsumed into the initial Git repo
created by `brew install --git`, which makes creating a new DATA
patch after more fixes a tedious and error-prone process.
This PR delays DATA patch processing till after the Git repo is
created, so a `git diff` at the end creates a correct and consolidated
DATA patch block ready for insertion/replacement, or even migration
to a proper remote patch URL.
The difference is clearly seen in `gromgit/fuse/dislocker-mac`,
which has both remote and DATA patches.
Before:
```
% brew install -sig dislocker-mac
==> Fetching gromgit/fuse/dislocker-mac
==> Downloading https://github.com/Aorimn/dislocker/commit/2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch?full_index=1
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/37276859cbebc1711941278db00cd8b25b98d69e15e31e33915a98d01a13febc--2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
==> Downloading https://github.com/Aorimn/dislocker/archive/refs/tags/v0.7.3.tar.gz
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/b1ba1098c95535574936051eca45cc472955a5a024b81cc72e1c3b006e1950b3--dislocker-0.7.3.tar.gz
==> Installing dislocker-mac from gromgit/fuse
==> Patching
==> Applying 2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
Initialized empty Git repository in /private/tmp/dislocker-mac-20250215-35534-8qlxtp/dislocker-0.7.3/.git/
==> Entering interactive mode...
Type `exit` to return and finalize the installation.
Install to this prefix: /opt/homebrew/Cellar/dislocker-mac/0.7.3_2
This directory is now a Git repository. Make your changes and then use:
git diff | pbcopy
to copy the diff to the clipboard.
% git diff
```
After:
```
% brew install -sig dislocker-mac
==> Fetching gromgit/fuse/dislocker-mac
==> Downloading https://github.com/Aorimn/dislocker/commit/2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch?full_index=1
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/37276859cbebc1711941278db00cd8b25b98d69e15e31e33915a98d01a13febc--2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
==> Downloading https://github.com/Aorimn/dislocker/archive/refs/tags/v0.7.3.tar.gz
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/b1ba1098c95535574936051eca45cc472955a5a024b81cc72e1c3b006e1950b3--dislocker-0.7.3.tar.gz
==> Installing dislocker-mac from gromgit/fuse
==> Applying non-DATA patches
==> Applying 2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
Initialized empty Git repository in /private/tmp/dislocker-mac-20250215-32462-zh1akh/dislocker-0.7.3/.git/
==> Applying DATA patches
==> Entering interactive mode...
Type `exit` to return and finalize the installation.
Install to this prefix: /opt/homebrew/Cellar/dislocker-mac/0.7.3_2
This directory is now a Git repository. Make your changes and then use:
git diff | pbcopy
to copy the diff to the clipboard.
% git diff
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bd854d2..9ab137d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -92,7 +92,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
# Don't use `-read_only_relocs' here as it seems to only work for 32 bits
# binaries
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-bind_at_load")
- set (FUSE_LIB osxfuse_i64)
+ set (FUSE_LIB fuse)
else()
# Useless warnings when used within Darwin
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion")
diff --git a/src/dislocker-fuse.c b/src/dislocker-fuse.c
index f93523f..3dd106c 100644
--- a/src/dislocker-fuse.c
+++ b/src/dislocker-fuse.c
@@ -33,11 +33,7 @@
-#ifdef __DARWIN
-# include <osxfuse/fuse.h>
-#else
-# include <fuse.h>
-#endif /* __DARWIN */
+#include <fuse.h>
/** NTFS virtual partition's name */
```
2025-02-15 20:15:53 +08:00
|
|
|
formula.selective_patch(is_data: true)
|
|
|
|
else
|
|
|
|
formula.patch
|
2021-10-22 20:07:24 +08:00
|
|
|
end
|
formula: don't include DATA patches in initial Git repo
Currently, existing DATA patches are subsumed into the initial Git repo
created by `brew install --git`, which makes creating a new DATA
patch after more fixes a tedious and error-prone process.
This PR delays DATA patch processing till after the Git repo is
created, so a `git diff` at the end creates a correct and consolidated
DATA patch block ready for insertion/replacement, or even migration
to a proper remote patch URL.
The difference is clearly seen in `gromgit/fuse/dislocker-mac`,
which has both remote and DATA patches.
Before:
```
% brew install -sig dislocker-mac
==> Fetching gromgit/fuse/dislocker-mac
==> Downloading https://github.com/Aorimn/dislocker/commit/2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch?full_index=1
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/37276859cbebc1711941278db00cd8b25b98d69e15e31e33915a98d01a13febc--2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
==> Downloading https://github.com/Aorimn/dislocker/archive/refs/tags/v0.7.3.tar.gz
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/b1ba1098c95535574936051eca45cc472955a5a024b81cc72e1c3b006e1950b3--dislocker-0.7.3.tar.gz
==> Installing dislocker-mac from gromgit/fuse
==> Patching
==> Applying 2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
Initialized empty Git repository in /private/tmp/dislocker-mac-20250215-35534-8qlxtp/dislocker-0.7.3/.git/
==> Entering interactive mode...
Type `exit` to return and finalize the installation.
Install to this prefix: /opt/homebrew/Cellar/dislocker-mac/0.7.3_2
This directory is now a Git repository. Make your changes and then use:
git diff | pbcopy
to copy the diff to the clipboard.
% git diff
```
After:
```
% brew install -sig dislocker-mac
==> Fetching gromgit/fuse/dislocker-mac
==> Downloading https://github.com/Aorimn/dislocker/commit/2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch?full_index=1
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/37276859cbebc1711941278db00cd8b25b98d69e15e31e33915a98d01a13febc--2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
==> Downloading https://github.com/Aorimn/dislocker/archive/refs/tags/v0.7.3.tar.gz
Already downloaded: /Volumes/aho/Library/Caches/Homebrew/downloads/b1ba1098c95535574936051eca45cc472955a5a024b81cc72e1c3b006e1950b3--dislocker-0.7.3.tar.gz
==> Installing dislocker-mac from gromgit/fuse
==> Applying non-DATA patches
==> Applying 2cfbba2c8cc07e529622ba134d0a6982815d2b30.patch
Initialized empty Git repository in /private/tmp/dislocker-mac-20250215-32462-zh1akh/dislocker-0.7.3/.git/
==> Applying DATA patches
==> Entering interactive mode...
Type `exit` to return and finalize the installation.
Install to this prefix: /opt/homebrew/Cellar/dislocker-mac/0.7.3_2
This directory is now a Git repository. Make your changes and then use:
git diff | pbcopy
to copy the diff to the clipboard.
% git diff
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bd854d2..9ab137d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -92,7 +92,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
# Don't use `-read_only_relocs' here as it seems to only work for 32 bits
# binaries
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-bind_at_load")
- set (FUSE_LIB osxfuse_i64)
+ set (FUSE_LIB fuse)
else()
# Useless warnings when used within Darwin
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion")
diff --git a/src/dislocker-fuse.c b/src/dislocker-fuse.c
index f93523f..3dd106c 100644
--- a/src/dislocker-fuse.c
+++ b/src/dislocker-fuse.c
@@ -33,11 +33,7 @@
-#ifdef __DARWIN
-# include <osxfuse/fuse.h>
-#else
-# include <fuse.h>
-#endif /* __DARWIN */
+#include <fuse.h>
/** NTFS virtual partition's name */
```
2025-02-15 20:15:53 +08:00
|
|
|
|
2021-10-22 20:07:24 +08:00
|
|
|
if args.interactive?
|
|
|
|
ohai "Entering interactive mode..."
|
2021-01-24 21:25:12 -05:00
|
|
|
puts <<~EOS
|
2021-10-22 20:07:24 +08:00
|
|
|
Type `exit` to return and finalize the installation.
|
|
|
|
Install to this prefix: #{formula.prefix}
|
2021-01-24 21:25:12 -05:00
|
|
|
EOS
|
2017-07-15 17:26:42 -07:00
|
|
|
|
2021-10-22 20:07:24 +08:00
|
|
|
if args.git?
|
|
|
|
puts <<~EOS
|
|
|
|
This directory is now a Git repository. Make your changes and then use:
|
|
|
|
git diff | pbcopy
|
|
|
|
to copy the diff to the clipboard.
|
|
|
|
EOS
|
|
|
|
end
|
|
|
|
|
|
|
|
interactive_shell(formula)
|
|
|
|
else
|
|
|
|
formula.prefix.mkpath
|
|
|
|
formula.logs.mkpath
|
|
|
|
|
|
|
|
(formula.logs/"00.options.out").write \
|
|
|
|
"#{formula.full_name} #{formula.build.used_options.sort.join(" ")}".strip
|
|
|
|
formula.install
|
|
|
|
|
|
|
|
stdlibs = detect_stdlibs
|
|
|
|
tab = Tab.create(formula, ENV.compiler, stdlibs.first)
|
|
|
|
tab.write
|
|
|
|
|
|
|
|
# Find and link metafiles
|
|
|
|
formula.prefix.install_metafiles formula.buildpath
|
|
|
|
formula.prefix.install_metafiles formula.libexec if formula.libexec.exist?
|
2025-02-03 22:57:37 -05:00
|
|
|
|
|
|
|
normalize_pod2man_outputs!(formula)
|
2021-10-22 20:07:24 +08:00
|
|
|
end
|
2013-05-25 15:26:55 -05:00
|
|
|
end
|
|
|
|
end
|
2010-08-21 12:18:17 -07:00
|
|
|
end
|
2011-07-04 09:31:29 +01:00
|
|
|
end
|
2012-08-27 12:02:57 -04:00
|
|
|
|
2021-04-02 12:38:39 +01:00
|
|
|
def detect_stdlibs
|
2014-08-27 17:25:13 -05:00
|
|
|
keg = Keg.new(formula.prefix)
|
2014-08-09 17:47:10 -05:00
|
|
|
|
2014-08-22 22:18:03 -05:00
|
|
|
# The stdlib recorded in the install receipt is used during dependency
|
|
|
|
# compatibility checks, so we only care about the stdlib that libraries
|
|
|
|
# link against.
|
2016-09-17 15:32:44 +01:00
|
|
|
keg.detect_cxx_stdlibs(skip_executables: true)
|
2014-08-09 17:47:10 -05:00
|
|
|
end
|
|
|
|
|
2023-03-10 23:46:07 +00:00
|
|
|
def fixopt(formula)
|
|
|
|
path = if formula.linked_keg.directory? && formula.linked_keg.symlink?
|
|
|
|
formula.linked_keg.resolved_path
|
|
|
|
elsif formula.prefix.directory?
|
|
|
|
formula.prefix
|
|
|
|
elsif (kids = formula.rack.children).size == 1 && kids.first.directory?
|
2014-07-28 21:22:33 -05:00
|
|
|
kids.first
|
|
|
|
else
|
|
|
|
raise
|
|
|
|
end
|
2020-08-02 04:46:32 +02:00
|
|
|
Keg.new(path).optlink(verbose: args.verbose?)
|
2018-09-02 20:14:54 +01:00
|
|
|
rescue
|
2023-03-10 23:46:07 +00:00
|
|
|
raise "#{formula.opt_prefix} not present or broken\nPlease reinstall #{formula.full_name}. Sorry :("
|
2012-08-27 12:02:57 -04:00
|
|
|
end
|
2025-02-03 22:57:37 -05:00
|
|
|
|
|
|
|
def normalize_pod2man_outputs!(formula)
|
|
|
|
keg = Keg.new(formula.prefix)
|
|
|
|
keg.normalize_pod2man_outputs!
|
|
|
|
end
|
2012-08-27 12:02:57 -04:00
|
|
|
end
|
2014-08-26 22:06:43 -05:00
|
|
|
|
2014-08-27 17:25:13 -05:00
|
|
|
begin
|
2024-07-24 05:39:06 +01:00
|
|
|
ENV.delete("HOMEBREW_FORBID_PACKAGES_FROM_PATHS")
|
2024-03-30 09:36:47 -07:00
|
|
|
args = Homebrew::Cmd::InstallCmd.new.args
|
2020-08-02 14:32:31 +02:00
|
|
|
Context.current = args.context
|
2020-08-01 17:37:11 +01:00
|
|
|
|
2024-09-27 02:50:37 +01:00
|
|
|
error_pipe = Utils::UNIXSocketExt.open(ENV.fetch("HOMEBREW_ERROR_PIPE"), &:recv_io)
|
2014-08-27 17:25:13 -05:00
|
|
|
error_pipe.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
|
2014-08-26 22:06:43 -05:00
|
|
|
|
2014-08-27 17:25:13 -05:00
|
|
|
trap("INT", old_trap)
|
2014-08-26 22:06:43 -05:00
|
|
|
|
2020-08-19 10:34:48 -04:00
|
|
|
formula = args.named.to_formulae.first
|
2020-07-23 02:06:38 +02:00
|
|
|
options = Options.create(args.flags_only)
|
2024-03-07 16:20:20 +00:00
|
|
|
build = Build.new(formula, options, args:)
|
2014-08-27 17:25:13 -05:00
|
|
|
build.install
|
2025-01-12 16:56:48 +00:00
|
|
|
# Any exception means the build did not complete.
|
|
|
|
# The `case` for what to do per-exception class is further down.
|
2017-10-07 00:31:28 +02:00
|
|
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
2018-08-17 22:42:37 -04:00
|
|
|
error_hash = JSON.parse e.to_json
|
|
|
|
|
|
|
|
# Special case: need to recreate BuildErrors in full
|
|
|
|
# for proper analytics reporting and error messages.
|
2019-08-19 14:27:29 +10:00
|
|
|
# BuildErrors are specific to build processes and not other
|
2018-08-17 22:42:37 -04:00
|
|
|
# children, which is why we create the necessary state here
|
|
|
|
# and not in Utils.safe_fork.
|
2023-03-12 17:06:29 -07:00
|
|
|
case e
|
|
|
|
when BuildError
|
2018-08-17 22:42:37 -04:00
|
|
|
error_hash["cmd"] = e.cmd
|
|
|
|
error_hash["args"] = e.args
|
|
|
|
error_hash["env"] = e.env
|
2023-03-12 17:06:29 -07:00
|
|
|
when ErrorDuringExecution
|
2018-12-23 11:24:48 -05:00
|
|
|
error_hash["cmd"] = e.cmd
|
2021-02-23 21:30:36 +00:00
|
|
|
error_hash["status"] = if e.status.is_a?(Process::Status)
|
|
|
|
{
|
|
|
|
exitstatus: e.status.exitstatus,
|
|
|
|
termsig: e.status.termsig,
|
|
|
|
}
|
|
|
|
else
|
|
|
|
e.status
|
|
|
|
end
|
2018-12-23 11:24:48 -05:00
|
|
|
error_hash["output"] = e.output
|
2018-08-17 22:42:37 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
error_pipe.puts error_hash.to_json
|
2014-08-26 22:06:43 -05:00
|
|
|
error_pipe.close
|
|
|
|
exit! 1
|
|
|
|
end
|