You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix patchelf concurrency issues. Show subprocess output in errors (#1410)
* Show subprocess output in error message when run_with_io fails
* Fix concurrency issues in check_dynamic_linkage
Remove nested Threads.@threads over libraries since the outer loop over
files already provides parallelism. Nested threading caused:
1. Race conditions with patchelf/install_name_tool on the same file
2. ConcurrencyViolationError in OutputCollectors when multiple sandbox
operations ran in parallel
* Revert "Fix concurrency issues in check_dynamic_linkage"
This reverts commit 04d4f81.
* rm OutputCollectors (unused)
* Add Per-file locks for patchelf operations
* update to 1.12
* go back to unbuffer julia-1.7
* Extend patchelf lock to cover file reads
Wrap the entire read-modify-verify cycle in with_patchelf_lock() for
Linux/BSD ELF operations. This prevents concurrent ObjectFile reads
from failing with EOFError when another thread is running patchelf
on the same file.
Split update_linkage into _update_linkage_macho and _update_linkage_elf,
and ensure_soname into _ensure_soname_macho and _ensure_soname_elf for
cleaner platform separation.
* Fix platform detection: check macOS before BSD
Sys.isbsd(platform) returns true for macOS since Darwin is BSD-based,
but macOS uses install_name_tool not patchelf. Check Sys.isapple first.
* Reduce needless code duplication
* Reduce needless diff
---------
Co-authored-by: Mosè Giordano <mose@gnu.org>
Copy file name to clipboardExpand all lines: docs/src/index.md
-4Lines changed: 0 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,10 +4,6 @@ The purpose of the [`BinaryBuilder.jl`](https://github.com/JuliaPackaging/Binary
4
4
5
5
Note that at this time, BinaryBuilder itself runs on Linux `x86_64` and macOS `x86_64` systems only, with Windows support under active development. On macOS and Windows, you must have `docker` installed as the backing virtualization engine. Note that Docker Desktop is the recommended version; if you have Docker Machine installed it may not work correctly or may need additional configuration.
6
6
7
-
!!! warn
8
-
9
-
This package currently requires Julia v1.7. Contribute to [JuliaPackaging/JLLPrefixes.jl#6](https://github.com/JuliaPackaging/JLLPrefixes.jl/issues/6) if you care about supporting newer versions of Julia.
10
-
11
7
## Project flow
12
8
13
9
Suppose that you have a Julia package `Foo.jl` which wants to use a compiled `libfoo` shared library. As your first step in writing `Foo.jl`, you may compile `libfoo` locally on your own machine with your system compiler, then using `Libdl.dlopen()` to open the library, and `ccall()` to call into the exported functions. Once you have written your C bindings in Julia, you will naturally desire to share the fruits of your labor with the rest of the world, and this is where `BinaryBuilder` can help you. Not only will `BinaryBuilder` aid you in constructing compiled versions of all your dependencies, but it will also build a wrapper Julia package (referred to as a [JLL package](jll.md)) to aid in installation, versioning, and build product localization.
0 commit comments