Skip to content

Commit ba0abb3

Browse files
FirePing32viferga
andauthored
feat/docs: implementation (#29)
* use curl * use curl * comment nodejs tests * wip * wip * feat: tests * feat: tests * feat: tests * Update test.sh * Update test.sh * fix merge * wip * fix merge * feat: tests * fix merge * fix merge * Update test.sh * merge * wip: fix deps * wip: fix deps * wip: fix deps * wip: fix deps * wip: use cleanup flag * wip: fix deps * wip: remove build deps * feat: clean up .tgz and create distributable * fix: release dir * fix: tarball packaging * revert * add: .tgz tests * feat: change static linking of shared libs * fix: shared lib links * fix: lib name * wip: python deps * wip: python deps * wip: python deps * wip: python deps * fix: lib regex * fix: lib regex * fix: lib regex * fix: dir path * fix: dir path * add: README * add: master * fix: merge * fix: copy path * fix: remove path manipulation * m post release * update readme * update tests * wip: use custom metacall.rb * docs: add implementation * Update build.sh * Update ci.yml --------- Co-authored-by: Vicente Eduardo Ferrer Garcia <7854099+viferga@users.noreply.github.com>
1 parent 29c69de commit ba0abb3

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,37 @@ This repository contains shell scripts to generate MetaCall binaries for MacOS.
1414
- `test.sh`: Runs various tests against MetaCall
1515
- `./tests`: Includes language specific tests
1616

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+
1748
## Usage
1849

1950
MetaCall supports `ARM64` and `AMD64` architectures at the moment.

0 commit comments

Comments
 (0)