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

esy-macdyllibbundler

v0.4.5

Published

macdyllibbundler

Downloads

12

Readme

Build Status

mac dylib bundler

About

Mac OS X introduced an innovative and very useful way to package applications : app bundles. While their design has all that is needed to ease distribution of resources and frameworks, it seems like dynamic libraries (.dylib) are very complicated to distribute. Sure, applications developed specifically for OS X won't make use of them, however applications ported from Linux or other Unices may have dependencies that will only compile as dylibs. By default, there exists no mechanism to bundle them but some command-line utilities provided by Apple - however it turns out that for a single program it is often necessary to issue dozens of commands! This often leads each porter to develop their own "home solution" wich are often hacky, poorly portable and/or nonoptimal.

dylibbundler is a small command-line programs that aims to make bundling .dylibs as easy as possible. It automatically determines which dylibs are needed by your program, copies these libraries inside the app bundle, and fixes both them and the executable to be ready for distribution... all this with a single command on the teminal! It will also work if your program uses plug-ins that have dependencies too.

It usually involves 2 actions :

  • Creating a directory (by default called libs) that can be placed inside the Contents folder of the app bundle.
  • Fixing the executable file so that it is aware of the new location of its dependencies.

Installation

In the terminal, cd to the main directory of dylibbundler and type "make". You can install with "sudo make install".

Feedback / Contact

You can contact me here on github, for instance by creating a ticket or pull request

Using dylibbundler on the terminal

Here is a list of flags you can pass to dylibbundler on the terminal.

-h, --help

-x, --fix-file (executable or plug-in filepath)

-b, --bundle-deps

-i, --ignore (path)

Dylibs in (path) will be ignored. By default, dylibbundler will ignore libraries installed in /usr/lib since they are assumed to be present by default on all OS X installations.(It is usually recommend not to install additional stuff in /usr/, always use /usr/local/ or another prefix to avoid confusion between system libs and libs you added yourself)

-d, --dest-dir (directory)

Sets the name of the directory in wich distribution-ready dylibs will be placed, relative to the current working directory. (Default is ./libs) For an app bundle, it is often conveniant to set it to something like ./MyApp.app/Contents/libs.

-p, --install-path (libraries install path)

Sets the "inner" installation path of libraries, usually inside the bundle and relative to executable. (Default is @executable_path/../libs/, which points to a directory named libs inside the Contents directory of the bundle.)

The difference between -d and -p is that -d is the location dylibbundler will put files at, while -p is the location where the libraries will be expected to be found when you launch the app. Both are often related.

-of, --overwrite-files

When copying libraries to the output directory, allow overwriting files when one with the same name already exists.

-od, --overwrite-dir

If the output directory already exists, completely erase its current content before adding anything to it. (This option implies --create-dir)

-cd, --create-dir

If the output directory does not exist, create it.

A command may look like % dylibbundler -od -b -x ./HelloWorld.app/Contents/MacOS/helloworld -d ./HelloWorld.app/Contents/libs/

If you want to create a universal binary by merging toghether two builds from PPC and Intel machines, you can ease it up by putting the ppc and intel libs in different directories, then to create the universal binary you only have to lipo the executable.