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
Copy file name to clipboardExpand all lines: README.md
+31Lines changed: 31 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -14,6 +14,37 @@ This repository contains shell scripts to generate MetaCall binaries for MacOS.
14
14
-`test.sh`: Runs various tests against MetaCall
15
15
-`./tests`: Includes language specific tests
16
16
17
+
## Implementation
18
+
19
+
This brew formulae compiles MetaCall core for ARM64 and AMD64. The installation process has been optimized to install the dependencies in a dynamic way.
20
+
21
+
- Enhanced Python setup process
22
+
- Support for detecting Python version and location dynamically.
23
+
- Improved handling of Python paths for both macOS and Linux systems.
24
+
25
+
- Refined NodeJS installation
26
+
- Installs node executable and other shared libraries separately instead of a brew dependency
27
+
- Bash completion for NPM
28
+
29
+
- Enhanced Metacall launcher:
30
+
- Added more robust path detection for metacallcli based on the dsitributable type
31
+
32
+
The final distributable is generated using a Homebrew extension [`brew-pkg`](https://github.com/metacall/brew-pkg). It generates a installable `.pkg` and a portable `.tgz` file. The fork includes some extra features which have been described below.
33
+
34
+
1.**Recursive library patching**: The function recursively processes linked libraries.
35
+
36
+
2.**Dynamic linking**: Uses `@executable_path` to create relative paths for dynamic linking.
37
+
38
+
3.**ELF file validation**: Checks if the target binary is a valid ELF (Executable and Linkable Format) file.
39
+
40
+
4.**Library dependency analysis**: Uses `otool -L` to identify linked libraries for the given binary.
41
+
42
+
5.**Path filtering**: Filters library paths to only process those within the specified prefix path.
43
+
44
+
6.**Relative path calculation**: Computes relative paths between the binary and its linked libraries.
45
+
46
+
7.**Library path updating**: Uses `install_name_tool` to update library paths in the binary.
47
+
17
48
## Usage
18
49
19
50
MetaCall supports `ARM64` and `AMD64` architectures at the moment.
0 commit comments