name mode size
.bootstrap 040000
bin 040000
demo 040000
tutorial 040000
.gitignore 100644 0 kb
FAQ.md 100644 5 kb
INSTALL.md 100644 0 kb
LICENSE 100644 2 kb
Makefile 100644 1 kb
README.md 100644 4 kb
RELEASENOTES.md 100644 1 kb
SETTINGS.md 100644 10 kb
generate-brew-formula.sh 100755 1 kb
install.sh 100755 1 kb
mulle-bootstrap 100755 5 kb
mulle-bootstrap-brew.sh 100644 3 kb
mulle-bootstrap-build.sh 100755 34 kb
mulle-bootstrap-clean.sh 100644 5 kb
mulle-bootstrap-fetch.sh 100755 21 kb
mulle-bootstrap-functions.sh 100644 8 kb
mulle-bootstrap-gcc.sh 100644 3 kb
mulle-bootstrap-init.sh 100755 6 kb
mulle-bootstrap-local-environment.sh 100644 4 kb
mulle-bootstrap-scripts.sh 100644 5 kb
mulle-bootstrap-settings.sh 100644 11 kb
mulle-bootstrap-tag.sh 100755 5 kb
mulle-bootstrap-warn-scripts.sh 100644 4 kb
mulle-bootstrap-xcode.sh 100755 10 kb
mulle-bootstrap.sublime-project 100644 0 kb
README.md
# mulle-bootstrap, yet another dependency manager for developers * downloads [github](http://rants.arantius.com/github-sucks) repositories (called here the "dependents") * can deal with [cmake](http://blog.cppcms.com/post/54), [xcodebuild](http://devcodehack.com/xcode-sucks-and-heres-why/) and [configure](http://quetzalcoatal.blogspot.de/2011/06/why-autoconf-sucks.html) projects * instead of installing headers and libraries to `/usr/local`, mulle-bootstrap installs to `./dependencies` * can tag your repository and all dependents. dependents get a vendor tag * installs brew taps and formulae * installs gems and pips * compiles dependents using the output of previous dependents * written in portable shell script, will run eventually also on Linux ## What mulle-bootstrap can do for you So you need a bunch of first and third party repositories to build your own project ? **mulle-bootstrap init** does the initial setup of the `.bootstrap` folder. Lets put the git repository URLs in a file called `.bootstrap/gits`. ```console cat > .bootstrap/gits git@github.com:mulle-nat/MulleScion.git git@github.com:mulle-nat/UISS.git git@github.com:mulle-nat/Finch.git ``` Now **mulle-bootstrap** can iterate over them and check them out into a common directory `.repos`. If there is a local clone of the repository **MulleScion** in the parent directory of the projeczt, then mulle-bootstrap can clone (or even symlink) from there, if you want. After cloning **mulle-bootstrap** does a simple security check with respect to `.bootstrap` shell scripts and Xcode script phases. Finally it looks for a `.bootstrap` folder in the freshly checked out repositories! They might have dependencies too, if they do, those dependencies are added to the source repositories dependencies. Everything you need should be present at this time. so **mulle-bootstrap** will now build a **Debug** and a **Release** version for each library, and places the headers and the produced libraries into "./dependencies". Your Xcode project can be optionally massaged by **mulle-bootstrap setup-xcode** to have the "./dependencies" folder in its search paths. ## What a project user needs to do ```console brew tap mulle-kybernetik/software brew install mulle-bootstrap ``` > If that doesn't work for some reason, try to > `brew untap mulle-kybernetik/software` it and then retry. I made some > mistakes early on, when setting up the tap. Download a project which is mulle-bootstrap enabled. ```console cd <project> mulle-bootstrap ``` And all dependencies should be recreated as they were on your development machine (if you set it up correctly). `mulle-bootstrap` is a shortened command of `mulle-bootstrap bootstrap`, which in turn executes: #### mulle-bootstrap fetch Downloads all required libraries into a `.repos` folder. #### mulle-bootstrap build Compiles the required libraries contained in the `.repos` folder into `./dependencies`. It compiles each project once for Release and once for Debug (and given a file `.bootstrap/sdks` multiplied by the number of sdks needed) ## What a project maintainer needs to do #### mulle-bootstrap init This is the first action. It sets up a `.bootstrap` folder in your project directory root (e.g. alongside .git). At this point you should edit `.bootstrap/gits` to add git projects dependencies. For each repository add a line like ```console git@github.com:mulle-nat/MulleScion.git ``` In the file `.bootstrap/brews` you can specify homebrew projects that need to be installed. These will be installed into `/usr/local` as usual though. ```console zlib openssl ``` #### mulle-bootstrap setup-xcode Prepares a Xcode project to use the libraries that are compiled into the `./dependencies` folder. You still need to add the libraries to your targets though. #### mulle-bootstrap tag Tag your project and all fetched repositories, with a tag.