npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

friendlyamd

v1.0.0

Published

Note: All of this is experimental software and it should only be referred to for the purpose of testing.

Downloads

43

Readme

FriendlyAMD

Note: All of this is experimental software and it should only be referred to for the purpose of testing.

The issue section has been disabled because people started reporting issues with single apps and libraries, and not with FriendlyAMD. This is EXPERIMENTAL SOFTWARE and NO SUPPORT FOR SPECIFIC LIBRARIES WAS EVER GIVEN. Again, you are on your own.

If there are issues SPECIFIC to FriendlyAMD I am sure y'all will know how to reach me eventually.

Introduction

This project stems directly from the excellent guide made by tomnic over at the MacOS86 forums.

Since userland patching is not possible with Lilu on Big Sur+, manual patching of libraries of certain programs is needed to get them to work reliably on AMD hackintoshes.

Tomnic did outline some general bit patterns to search for, but then he admitted that a crude find and replace wouldn't be viable. This project uses regular expressions to find those patterns and patch them.

Usage

Only use this if you know what you're doing. Also, this is incomplete software.

From the Releases section

Just grab the latest binary from the Releases section, mark it as executable, clear XAttrs as I cannot sign it, and use it. You can put it in your PATH (usually /usr/local/bin) if you want, for easy access.

As a Node module installed globally on the system

You will need:

  • Node.js: brew install nodejs
  • Yarn (optional, used for contributions): brew install yarn

Install (and update) FriendlyAMD on your system with this command:

npm install -g friendlyamd

Or, if you've installed yarn

yarn global add friendlyamd

Use it with:

friendlyamd "/path/to/your/library.dylib"

Observed quirks

  • Discord's Krisp module will only work if SIP is disabled. Reason is that the system usually won't load libraries that are not signed with the same key as the main application.
  • Only patch libtbb and libtbbmalloc in Autocad 2024 -- there's a false positive inside one of the other libraries that, if patched, would crash the program on launch.

Command line arguments

|Argument|Type|Default value|Description| |-|-|-|-| |--in-place|Boolean|false|Directly patch the library, as opposed to creating a patched library with .patched appended to the file name.| |--backup|Boolean|false|Only works in conjunction with --in-place; it backs up the original library by copying it and appending .bak on its extension.| |--sign|Boolean|false|Automatically invoke codesign on patched libraries.| |--clear-xa|Boolean|true|Automatically invoke xattr -c on patched libraries.| |--dry-run|Boolean|false|Do all checking and patching, but DO NOT write anything to disk. This is useful to test performance and to scan for matches in a given library.| |--directories|Array|Not set|Scan directories alongside files. It will search for any file with no extension and with extension .dylib, as they are the common ones to patch.| |--jobs|Number|N. of threads available|The number of jobs that will be spawned to process the libraries.|

Contributing

If you want to contribute to this project, clone it to your computer!

git clone https://github.com/JonathanFerraz/FriendlyAMD
cd FriendlyAMD
yarn
yarn test "/path/to/your/library.dylib"

Tips and tricks

Scan for patchable files in a directory:

friendlyamd --dry-run --directories /path/to/dir /path/to/another/dir | grep "Routines found"

Scan for patchable files and patch them (NOT recommended, might use sudo in front of the command if patching directories not owned by the current user):

friendlyamd --in-place --backup --sign --directories /path/to/dir /path/to/another/dir

License

Refer to the LICENSE file.

Credits

Tomnic, Tomnic and Tomnic again. You don't know him? He's this guy.