Browse code

missing templates files

Nat! authored on 11-10-2017 14:53:05
Showing 14 changed files
... ...
@@ -1,6 +1,7 @@
1
+[comment]: <> (DO NOT EDIT THIS FILE. EDIT THE TEMPLATE "templates/README.md.scion")
1 2
 # mulle-bootstrap, cross platform dependency manager using bash
2 3
 
3
-![Last version](https://img.shields.io/github/tag/mulle-nat/mulle-bootstrap.svg)
4
+![Last version](https://img.shields.io/github/tag/mulle-objc/mulle-bootstrap.svg)
4 5
 
5 6
 ... for Linux, OS X, FreeBSD, Windows
6 7
 
... ...
@@ -93,6 +94,6 @@ simplifies shell scripting by an order of magnitude.
93 94
 
94 95
 ## GitHub and Mulle kybernetiK
95 96
 
96
-The development is done on [Mulle kybernetiK](https://www.mulle-kybernetik.com/software/git/mulle-bootstrap/master). Releases and bug-tracking are on [GitHub](https://github.com/mulle-nat/mulle-bootstrap).
97
+The development is done on [Mulle kybernetiK](https://www.mulle-kybernetik.com/software/git/mulle-bootstrap/master). Releases and bug-tracking are on [GitHub](https://github.com/mulle-objc/mulle-bootstrap).
97 98
 
98 99
 
... ...
@@ -1,3 +1,4 @@
1
+[comment]: <> (DO NOT EDIT THIS FILE. EDIT THE TEMPLATE "templates/RELEASENOTES.md.scion")
1 2
 ### 3.13.6
2 3
 
3 4
 * fix build_script
... ...
@@ -346,7 +347,7 @@ The "trick" is to use parameterized branches and urls like so:
346 347
 $ cat .bootstrap/repositories
347 348
 ${MULLE_REPOSITORIES}/mulle-c11;;${MULLE_C11_BRANCH:-release}
348 349
 $ cat .bootstrap/MULLE_REPOSITORIES
349
-https://github.com/mulle-nat
350
+https://github.com/mulle-objc
350 351
 ```
351 352
 
352 353
 This works for the release part. Locally though in the non-committed
... ...
@@ -1,3 +1,4 @@
1
+[comment]: <> (DO NOT EDIT THIS FILE. EDIT THE TEMPLATE "templates/dox/INSTALL.md.scion")
1 2
 
2 3
 ## How to install
3 4
 
... ...
@@ -19,7 +20,7 @@ Here is an example, that installs **mulle-bootstrap** into /tmp:
19 20
 If you have brew you can get the latest released version with
20 21
 
21 22
 ```console
22
-brew install mulle-kybernetik/software/mulle-bootstrap
23
+brew install mulle-objc/software/mulle-bootstrap
23 24
 ```
24 25
 
25 26
 ### Linux/: Install with apt-get
... ...
@@ -29,10 +30,10 @@ Run with sudo:
29 30
 ```
30 31
 sudo -s
31 32
 
32
-curl -sS "https://www.mulle-kybernetik.com/dists/admin-pub.asc" | apt-key add -
33
+curl -sS "https://www.mulle-kybernetik.com/mulle-objc-dists/admin-pub.asc" | apt-key add -
33 34
 
34
-echo "deb [arch=all] http://www.mulle-kybernetik.com `lsb_release -c -s` main" \
35
-> "/etc/apt/sources.list.d/mulle-kybernetik.com-main.list"
35
+echo "deb [arch=all] http://mulle-objc.mulle-kybernetik.com `lsb_release -c -s` main" \
36
+> "/etc/apt/sources.list.d/mulle-objc.mulle-kybernetik.com.list"
36 37
 
37 38
 apt-get update
38 39
 apt-get -y --allow-unauthenticated install mulle-bootstrap
... ...
@@ -48,6 +49,3 @@ Checkout this repository then run
48 49
 ```console
49 50
 ./install.sh ~/bin
50 51
 ```
51
-
52
-
53
-
... ...
@@ -1,6 +1,7 @@
1
+[comment]: <> (DO NOT EDIT THIS FILE. EDIT THE TEMPLATE "templates/dox/mulle-brew/README.md.scion")
1 2
 # mulle-brew, C/C++/Objective-C developer sandboxing with homebrew
2 3
 
3
-![Last version](https://img.shields.io/github/tag/mulle-nat/mulle-bootstrap.svg)
4
+![Last version](https://img.shields.io/github/tag/mulle-objc/mulle-bootstrap.svg)
4 5
 
5 6
 [Homebrew](//brew.sh) is the de facto standard package manager of OS X. It is also
6 7
 available on Linux as [Linuxbrew](linuxbrew.sh).
... ...
@@ -22,7 +23,7 @@ By default homebrew installs packages system-wide into '/usr/local/' (on OS X).
22 23
 Install mulle-brew with brew, it makes sense :) :
23 24
 
24 25
 ```
25
-brew install mulle-kybernetik/software/mulle-brew
26
+brew install mulle-objc/software/mulle-brew
26 27
 ```
27 28
 
28 29
 ## Install and run hello world using **mulle-brew**
... ...
@@ -211,6 +212,6 @@ mulle-brew config -u "clone_cache" "${HOME}/Library/Caches/mulle-brew"
211 212
 
212 213
 ## GitHub and Mulle kybernetiK
213 214
 
214
-The development is done on [Mulle kybernetiK](https://www.mulle-kybernetik.com/software/git/mulle-bootstrap/master). Releases and bug-tracking are on [GitHub](https://github.com/mulle-nat/mulle-bootstrap).
215
+The development is done on [Mulle kybernetiK](https://www.mulle-kybernetik.com/software/git/mulle-bootstrap/master). Releases and bug-tracking are on [GitHub](https://github.com/mulle-objc/mulle-bootstrap).
215 216
 
216 217
 
... ...
@@ -1,3 +1,4 @@
1
+[comment]: <> (DO NOT EDIT THIS FILE. EDIT THE TEMPLATE "templates/dox/steps/FETCH.md.scion")
1 2
 # Fetch and Build
2 3
 
3 4
 At it's core mulle-bootstrap does two things Fetching and Building. This
... ...
@@ -15,11 +16,11 @@ know about this dependency, as you will see shortly:
15 16
 
16 17
 You initialize your repository with `mulle-bootstrap init`, which will
17 18
 create the `.bootstrap` folder for you. Then you place the dependency URL
18
-`https://github.com/mulle-nat/Foobie` into the file `.bootstrap/repositories`.
19
+`https://github.com/mulle-objc/Foobie` into the file `.bootstrap/repositories`.
19 20
 
20 21
 ```console
21 22
 mulle-bootstrap init -n
22
-echo "https://github.com/mulle-nat/Foobie" > .bootstrap/repositories
23
+echo "https://github.com/mulle-objc/Foobie" > .bootstrap/repositories
23 24
 ```
24 25
 
25 26
 You also notice that "Foobie" can be built with either **cmake** or
... ...
@@ -49,7 +50,7 @@ and your `.bootstrap` folder. The preference is for `.bootstrap.local`
49 50
 contents. But since there is no `.bootstap.local` here, `.bootstrap.auto` is a
50 51
 simple copy of `.bootstrap`.
51 52
 
52
-> Ref: [`bootstrap_auto_create`](https://github.com/mulle-nat/mulle-bootstrap/blob/release/src/mulle-bootstrap-auto-update.sh#L214)
53
+> Ref: [`bootstrap_auto_create`](https://github.com/mulle-objc/mulle-bootstrap/blob/release/src/mulle-bootstrap-auto-update.sh#L214)
53 54
 
54 55
 From now `.bootstrap` is no longer used.
55 56
 
... ...
@@ -73,7 +74,7 @@ its own dependencies.
73 74
 Also **mulle-bootstrap** created  (new in 3.0) a `.bootstrap.repos` folder. It
74 75
 memorizes the place, where repositories have been fetched too.
75 76
 
76
-> Ref: [`clone_repositories`](https://github.com/mulle-nat/mulle-bootstrap/blob/release/src/mulle-bootstrap-fetch.sh#L792)
77
+> Ref: [`clone_repositories`](https://github.com/mulle-objc/mulle-bootstrap/blob/release/src/mulle-bootstrap-fetch.sh#L792)
77 78
 
78 79
 
79 80
 ### 3. Refresh
... ...
@@ -87,7 +88,7 @@ The refresh pass now picks up the `repositories` information from the
87 88
 Since Foobie depends on Noobie, it has been properly sorted on top of it.
88 89
 
89 90
 
90
-> Ref: [`refresh_repositories`](https://github.com/mulle-nat/mulle-bootstrap/blob/release/src/mulle-bootstrap-refresh.sh#L447)
91
+> Ref: [`refresh_repositories`](https://github.com/mulle-objc/mulle-bootstrap/blob/release/src/mulle-bootstrap-refresh.sh#L447)
91 92
 
92 93
 
93 94
 ### 4. Fetch
94 95
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+#
2
+# CPack and project specific stuff
3
+#
4
+######
5
+
6
+set( CPACK_PACKAGE_NAME "${PROJECT_NAME}")
7
+set( CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
8
+set( CPACK_PACKAGE_CONTACT "{{PUBLISHER_EMAIL}}")
9
+set( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
10
+set( CPACK_PACKAGE_DESCRIPTION_SUMMARY "👢 Cross platform dependency manager for developers")
11
+set( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
12
+set( CPACK_STRIP_FILES false)
13
+
14
+# stuff needed for Debian
15
+# memo: its impossible to check for chosen generator here
16
+#
17
+# CPackDeb doesn't produce 100% proper debian file unfortunately
18
+#
19
+set( CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/{{PUBLISHER}}/${PROJECT_NAME}")
20
+# not strictly required
21
+#set( CPACK_DEBIAN_PACKAGE_DEPENDS "cmake (>= 3.0.0)")
22
+
23
+# stuff needed for RPM
24
+
25
+set( CPACK_RPM_PACKAGE_VENDOR "{{PUBLISHER_FULLNAME}}")
26
+
27
+
0 28
new file mode 100644
... ...
@@ -0,0 +1,98 @@
1
+# mulle-bootstrap, cross platform dependency manager using bash
2
+
3
+![Last version](https://img.shields.io/github/tag/{{PUBLISHER}}/mulle-bootstrap.svg)
4
+
5
+... for Linux, OS X, FreeBSD, Windows
6
+
7
+... for C, C++, Objective-C
8
+
9
+... certainly not a "minimal" or "lightweight" project with ca. 10000 lines of
10
+  shell script code
11
+
12
+
13
+## Why you may want it
14
+
15
+* You program in C, C++ or in Objective-C, **mulle-bootstrap** is written for you
16
+* If you need to link against a library, that clashes with an installed
17
+library,  **mulle-bootstrap** could break this quandary
18
+* If you feel that `apt-get install` pollutes your system with too many libraries,  **mulle-bootstrap** may be the solution
19
+* If you don't like developing in virtual machines, **mulle-bootstrap** may
20
+tickle your fancy
21
+* If you like to decompose huge projects into reusable libraries,
22
+**mulle-bootstrap** may enable you to do so
23
+* If you do cross-platform development, **mulle-bootstrap** may be your best bet for a dependency manager
24
+
25
+
26
+## Core principles
27
+
28
+* Nothing gets installed outside of the project folder
29
+* **mulle-bootstrap** manages your dependencies, it does not manage your
30
+project
31
+* It should be adaptable to a wide ranges of project styles. Almost anything
32
+can be done with configuration settings or additional shell scripts.
33
+* It should be scrutable. If things go wrong, it should be easy to figure
34
+out what the problem is. It has extensive logging and tracing support built in.
35
+* It should run everywhere. **mulle-bootstrap** is a collection of
36
+shell scripts. If your system can run the bash, it can run **mulle-bootstrap**.
37
+
38
+
39
+## What it does technically
40
+
41
+* downloads [zip](http://eab.abime.net/showthread.php?t=5025) and [tar](http://www.grumpynerd.com/?p=132) archives
42
+* fetches [git](//enux.pl/article/en/2014-01-21/why-git-sucks) repositories and it can also checkout [svn](//andreasjacobsen.com/2008/10/26/subversion-sucks-get-over-it/).
43
+* builds [cmake](//blog.cppcms.com/post/54),
44
+[xcodebuild](//devcodehack.com/xcode-sucks-and-heres-why/) and
45
+[configure](//quetzalcoatal.blogspot.de/2011/06/why-autoconf-sucks.html)
46
+projects and installs their output into a "dependencies" folder.
47
+* installs [brew](//dzone.com/articles/why-osx-sucks-and-you-should) binaries and
48
+libraries into an "addictions" folder (on participating platforms)
49
+* alerts to the presence of shell scripts in fetched dependencies
50
+
51
+
52
+## A first use
53
+
54
+So you need a bunch of third party projects to build your own
55
+project ? No problem. Use **mulle-bootstrap init** to do the initial setup of
56
+a `.bootstrap` folder in your project directory. Then add the git repository
57
+URLs:
58
+
59
+```
60
+mulle-bootstrap init
61
+mulle-bootstrap setting -g -r -a "repositories" "https://github.com/madler/zlib.git"
62
+mulle-bootstrap setting -g -r -a "repositories" "https://github.com/coapp-packages/expat.git"
63
+mulle-bootstrap
64
+```
65
+
66
+**mulle-bootstrap** will check them out into a common directory `stashes`.
67
+
68
+After cloning **mulle-bootstrap** looks for a `.bootstrap` folder in the freshly
69
+checked out repositories. They might have dependencies too, if they do, those
70
+dependencies are added and also fetched.
71
+
72
+Everything should now be in place so **mulle-bootstrap** that can now build the
73
+dependencies. It will place the headers and the produced
74
+libraries into the `dependencies/lib`  and `dependencies/include` folders.
75
+
76
+
77
+## Tell me more
78
+
79
+* [How to install](dox/INSTALL.md)
80
+* [How to use it](dox/COMMANDS.md)
81
+* [What has changed ?](RELEASENOTES.md)
82
+* [Tweak guide](dox/SETTINGS.md)
83
+* [CMakeLists.txt.example](dox/CMakeLists.txt.example) shows how to access dependencies from **cmake**
84
+* [FAQ](dox/FAQ.md)
85
+
86
+* [mulle-bootstrap: A dependency management tool](https://www.mulle-kybernetik.com/weblog/2015/mulle_bootstrap_work_in_progr.html)
87
+* [mulle-bootstrap: Understanding mulle-bootstrap (I)](https://www.mulle-kybernetik.com/weblog/2016/mulle_bootstrap_how_it_works.html)
88
+* [mulle-bootstrap: Understanding mulle-bootstrap (II), Recursion](https://www.mulle-kybernetik.com/weblog/2016/mulle_bootstrap_recursion.html)
89
+
90
+If you want to hack on mulle-bootstrap, I'd recommend to get
91
+[Sublime Text](//www.sublimetext.com) and [install the linter plugin](//blog.codybunch.com/2016/01/25/Better-Bash-with-Sublime-Linter-and-ShellCheck/) to use [Shellcheck](//www.shellcheck.net). It
92
+simplifies shell scripting by an order of magnitude.
93
+
94
+## GitHub and Mulle kybernetiK
95
+
96
+The development is done on [Mulle kybernetiK](https://www.mulle-kybernetik.com/software/git/mulle-bootstrap/master). Releases and bug-tracking are on [GitHub](https://github.com/{{PUBLISHER}}/mulle-bootstrap).
97
+
98
+
0 99
new file mode 100644
... ...
@@ -0,0 +1,851 @@
1
+### 3.13.6
2
+
3
+* fix build_script
4
+* unified  mktemp handling across platforms
5
+* add libexec to build PATH, for the benefits of scripts (regression)
6
+
7
+### 3.13.5
8
+
9
+* fix corruption of motd file
10
+
11
+### 3.13.4
12
+
13
+* protect CC renames affecting subsequent builds
14
+
15
+### 3.13.3
16
+
17
+* add --lenient flag to mulle-bootstrap, used in mulle-bootstrap git to not abort on failure
18
+
19
+### 3.13.1
20
+
21
+* use CC, CXX and MAKE internally and heed possible external environment variable of same name
22
+
23
+## 3.13.0
24
+
25
+* add mulle-bootstrap log command, for looking at build logs of a specific dependency
26
+
27
+
28
+### 3.12.4
29
+
30
+* MAKE_FLAGS is MAKEFLAGS for consistency
31
+
32
+### 3.12.1
33
+
34
+* deal with empty/bad repositories more gracefully
35
+
36
+## 3.12.0
37
+
38
+* Various improvements for mingw. New version number for mulle-tests
39
+
40
+### 3.11.2
41
+
42
+* improvements for mingw, also improved speed a bit
43
+
44
+### 3.11.1
45
+
46
+* fixes for mingw
47
+* fix a problem with zip archives tests
48
+
49
+
50
+## 3.11.0
51
+
52
+Clean command reworked
53
+
54
+* `mulle-bootstrap clean build` followed by `mulle-bootstrap build` actually rebuilds everything as one would expect. The old functionality is now called `mulle-bootstrap clean cruft`
55
+* `clean build` does not throw away dependencies, use `clean full` for that
56
+
57
+## 3.10.0
58
+
59
+* new clean command 'full' is now also the new default
60
+* new config `dispense_style` . See [DISPENSE_STYLE](dox/settings/dispense_style/DISPENSE_STYLE.md)
61
+
62
+
63
+### 3.9.3
64
+
65
+* fix some problems with tar archives
66
+* subcommand !!! `mulle-bootstrap shell` has been moved to mulle-sde, a new project
67
+
68
+### 3.9.2
69
+
70
+* fix for github tar archives having the same name
71
+
72
+### 3.9.1
73
+
74
+* remove debug -x from release
75
+* fix a bug with renamed non-git repositories
76
+
77
+## 3.9.0
78
+
79
+* new mulle-bootstrap shell command to make life in a virtual env even easier
80
+* fix various xcode related build bugs
81
+* mulle-bootstrap doesn't do kill 0 anymore
82
+* add `mulle-bootstrap-core-options.sh` for external script users
83
+* `mulle-bootstrap -f build` now forces a rebuild, as one would expect
84
+
85
+### 3.8.5
86
+
87
+* fix broken xcode build path
88
+* allow some plural synonmys for setting, config, expansion command
89
+
90
+### 3.8.4
91
+
92
+* fix `Abort now (y/N) > y` not really aborting
93
+
94
+### 3.8.3
95
+
96
+* fix upgrade and status for tar/zip SCM, which previously errored out
97
+
98
+### 3.8.2
99
+
100
+* fix setting listings for os specific settings and build settings
101
+in general
102
+* fix reading of dispense settings
103
+
104
+### 3.8.1
105
+
106
+* fix archive extraction on linux
107
+
108
+## 3.8.0
109
+
110
+* new build setting `srcdir` where you can specify the subdirectory, that contains configure, CMakeLists et.c
111
+
112
+### 3.7.2
113
+
114
+* git fetch exception fixed when mirroring
115
+
116
+### 3.7.1
117
+
118
+* save git mirrors under their fork names
119
+
120
+## 3.7.0
121
+
122
+* experimentally added ${GITHUB_REMOTE_ORIGIN} expansion, so you can specify
123
+dependencies relative to the original project.
124
+* when moving embedded directories around, mulle-bootstrap will now create
125
+missing target directories
126
+* renamed `clone_cache` to `git_mirror` because that's better. `refresh_cache` is now `refresh_git_mirror`.
127
+* added option `--no-git-mirror`
128
+* added `type` command to introspect the bootstrap topology easier
129
+* avoid superflous updating of mirrored git clones during one session, which
130
+speeds up things considerably, when mirroring
131
+* fix bug of failing symlinks, when the destination itself is accessed via a
132
+symlink
133
+
134
+### 3.6.7
135
+
136
+* reduce verbosity in some places and hide ugly symlink paths
137
+
138
+### 3.6.6
139
+
140
+* fix a few regressions
141
+
142
+### 3.6.5
143
+
144
+* remove superflous set_build_needed
145
+
146
+### 3.6.4
147
+
148
+* fix accidental create of `.bootstap.local` as a file
149
+* when using clone chaches, mulle-bootstrap update and upgrade now work as one
150
+would expect. It would be good to erase your old clone caches.
151
+
152
+
153
+### 3.6.3
154
+
155
+* fix missing include in warn scripts
156
+
157
+### 3.6.2
158
+
159
+* fix and improve systeminstall (formerly just install)
160
+
161
+### 3.6.1
162
+
163
+* bug fixes
164
+
165
+
166
+## 3.6
167
+
168
+* Improved the dependencies copying routing. Now also copies `share` `sbin`
169
+`bin` `libexec` and picks up more possible output directories. `sbin` and `bin`
170
+will me merged into `dependencies/bin`.
171
+* Improve path construction, omitting empty components
172
+* Don't output superflous linefeed with paths
173
+* removed -fb flag, because it's just the same as clean before build.
174
+* Added a --from flag to build, so you can rebuild from a starting point.
175
+
176
+
177
+### 3.5.4
178
+
179
+* fix brews not being installed
180
+* clean dist now also dist cleans minions embedded repositories
181
+
182
+
183
+### 3.5.4
184
+
185
+* fix bug in ${expansion:-default}
186
+
187
+
188
+### 3.5.2
189
+
190
+#### `caches_path`renamed to more sensible `search_path`
191
+
192
+* experimentally, don't kill so hard anymore when failing (mostly for
193
+mulle-builds sake)
194
+* Because `mulle-bootstrap setting` now works, init by default does not
195
+create demo files any more. Inverted meaning of -d flag.
196
+* Various improvements to mulle-brew handling
197
+* The paths default is now to output an unquoted one-liner. This is less
198
+correct but simpler.
199
+* Added `mulle-bootstrap run`. See mulle-brew for more details.
200
+* Add proper version check in mulle-functions, so that mulle-brew doesn't
201
+run with wrong libraries
202
+
203
+### 3.4.0
204
+
205
+* added handling of `additional_repositories`. This is supposed to be used
206
+in `.bootstrap.local`. This way I can specify a "MulleFoundation" dependency
207
+if I want to compile for mulle-objc. But sometimes I want the Apple Foundation.
208
+* finally added list command for `setting`. All that's needed now is a scripts
209
+setting to list all scripts
210
+* -fb automatically adds `-U *` to CMAKEFLAGS so that cached values are ignored,
211
+this reduces a lot of WTF moments.
212
+* `CMAKE_FLAGS` is now `CMAKEFLAGS
213
+
214
+
215
+### 3.3.0
216
+
217
+* `mulle-bootstrap project-path` prints out what it thinks your project path is.
218
+This is helpful for **mulle-build**.
219
+* Improve output of `mulle-bootstrap -v help`.
220
+* An empty expansion in repositories is now an error by default. But you can
221
+change it back to previous behavior with  `mulle-bootstrap config -n empty_expansion_is_error`
222
+* The `-g` option no longer works for `mulle-bootstrap config`, use the `-u`
223
+setting to set values in `~/.bootstrap`. This unconfuses the '-g' which means
224
+`.bootstrap` and not `.bootstrap.local`, the default.
225
+* `mulle-bootstrap expansion -l` works now
226
+* You can now use `<key>=<value>` to set settings and expansions. This makes
227
+it easier to copy/paste show output.
228
+* Missing but not required repositories no longer produce a build error
229
+* added `-fb` as lesser -force mode than -f.
230
+* old Frameworks of previous builds are not a problem anymore
231
+* With config `use_cc_cxx=NO` mulle-bootstrap won't read the compiler to use
232
+from `.CC` and `.CXX`.
233
+
234
+
235
+### 3.2.0
236
+
237
+Do not specify cmake dependency in homebrew formula for mulle-bootstrap, since
238
+cmake is not absolutely required. Rather check this at runtime and output
239
+some helpful hints.
240
+
241
+
242
+### 3.1.0
243
+
244
+You can allow optional fetches to fail my listing repository-names, that
245
+are required. (embeded_repositories <-> embedded_required)
246
+Fixes some bugs.
247
+
248
+Still alpha though.
249
+
250
+
251
+# 3.0
252
+
253
+#### New commands: defer, emancipate, flags, status
254
+
255
+#### mulle-bootstrap command syntax was related to git, but now it's related
256
+to homebrew and apt-get. This has been done, because I wan't to have mulle-brew
257
+as a separate shell command, and the git syntax doesn't fit.
258
+
259
+That means, mulle-bootstrap fetch is now just a deprecated synonym for
260
+mulle-bootstrap install
261
+
262
+mulle-bootstrap update is now mulle-bootstrap upgrade.
263
+
264
+mulle-bootstrap install is now mulle-bootstrap systeminstall
265
+
266
+
267
+#### The way settings work as drastically changed too much to list here
268
+
269
+* config now returns the default value, if nothing is configured
270
+* various changes in variables
271
+
272
+Now               | Before              | Description
273
+------------------|---------------------|--------------------------
274
+DEPENDENCIES_DIR  | DEPENDENCIES_DIR    |
275
+ADDICTIONS_DIR    | ADDICTIONS_DIR      |
276
+BOOTSTRAP_DIR     | BOOTSTRAP_SUBDIR    |
277
+REPOS_DIR         | CLONES_SUBDIR       |
278
+                  | CLONESFETCH_SUBDIR  | Does not exist anymore
279
+
280
+
281
+* libexec is now found relative to $0 so the install script does not need to
282
+patch anymore. It's also convenient for the test scripts
283
+* various status files are now prefixed with .bootstrap_
284
+* **tag** as a setting does not exist anymore. Now its part of the repositories line
285
+* A lot of options have changed. Too many to mention. Sorry about this, but progres...
286
+
287
+
288
+### 2.6.1
289
+
290
+* fix bug with absolute paths
291
+
292
+## 2.6.0
293
+
294
+* mulle-bootstrap announces itself to cmake with -DMULLE_EXECUTABLE_VERSION
295
+
296
+### 2.5.2
297
+
298
+* -v -h gives more help
299
+* renamed -tt  to -tit and -tp to -tip, because it's more logical
300
+
301
+### 2.5.1
302
+
303
+* Allow --debug and --release as shortcuts for -c Debug and -c Release, because
304
+I am lazy and I expect it.
305
+
306
+
307
+## 2.5.0
308
+
309
+* Improve usage for `mulle-bootstrap init`
310
+* Reduce verbosity for PATH to fluff
311
+* The --no-recursion flag has been fixed, the  old behaviour is now available
312
+as --no-embedded.
313
+* Use eval exekutor for cmake to better inherit CMAKEFLAGS and protect paths
314
+with spaces.
315
+* build now acknowledges --check-usr-local-include also
316
+* With --prefix you can change /usr/local on the commandline for build and fetch
317
+
318
+
319
+### 2.4.2
320
+
321
+Make PATH generation compatible with homebrew shims
322
+
323
+
324
+### 2.4.1
325
+
326
+Exit with 0 when printing version.
327
+Emit better .gitignore code for symlinked embedded repos
328
+
329
+## 2.4.0
330
+
331
+Fix failing update for projects with only embedded repositories.
332
+
333
+* experimental fetch flag -es added. This allows fetch to symlink embedded
334
+repositories.
335
+
336
+
337
+## 2.3
338
+
339
+The main new feature of 2.3 is support for working with different repositories.
340
+E.g. I host releases on GitHub on a branch "release", which are accessed via
341
+https://, but when I develop I use Mulle KybernetiK on branch "master".
342
+
343
+The "trick" is to use parameterized branches and urls like so:
344
+
345
+```
346
+$ cat .bootstrap/repositories
347
+${MULLE_REPOSITORIES}/mulle-c11;;${MULLE_C11_BRANCH:-release}
348
+$ cat .bootstrap/MULLE_REPOSITORIES
349
+https://github.com/{{PUBLISHER}}
350
+```
351
+
352
+This works for the release part. Locally though in the non-committed
353
+`.bootstrap.local`:
354
+
355
+```
356
+$ cat MULLE_REPOSITORIES
357
+nat@mulle-kybernetik.com:/scm/public_git/repositories
358
+$ cat MULLE_C11_BRANCH
359
+master
360
+```
361
+
362
+### Changes
363
+
364
+* clarified the use of options vs. flags some more. e.g. git GITFLAGS command GITOPTIONS.
365
+* update will now also refresh
366
+* improved refresh check, should now properly detect edited config files, except if the
367
+edit is less than a second after the last refresh run. Death of the hidden -fr flag
368
+* start version checking bootstrap contents
369
+* -f flag will now also try to checkout branches, that are checked out
370
+incorrectly
371
+* fetch gains -i option, to ignore "wrongly" checked out repositories
372
+* fails are prefixed with the command, that caused the failure
373
+* use unexpanded URLs for dependency matches and store those into .bootstrap.auto
374
+* mulle-bootstrap now picks up URL changes and corrects them in fetched
375
+repositiories, but that does not per se force an update.
376
+* try to detect changes in .bootstrap better
377
+* improved retrieval of settings for embedded repositories
378
+* improved dependency code
379
+* some more checks, that embedded repositories do not clobber symlinked content
380
+* added -D bootstrap flag to create .bootstrap.local definition files. Convenient for specifiying alternate URLs for example.
381
+
382
+
383
+### 2.2.1
384
+
385
+
386
+* fix for Linux
387
+
388
+## 2.2
389
+
390
+* `mulle-bootstrap tag` will now also tag embedded repositories
391
+* `mulle-bootstrap git` will now also grace embedded repositories, so `mulle-bootstrap git status -s` is now better
392
+* reworked tag to be more aware of git flags, so `mulle-bootstrap tag -l` now
393
+works
394
+
395
+### 2.1.4
396
+
397
+* use a safer but uglier method to append to .gitignore
398
+
399
+### 2.1.3
400
+
401
+* Improve performance especially on windows, due to less superflous refreshes
402
+
403
+### 2.1.2
404
+
405
+* expose some more flags to usage. Distinguish between flags and options.
406
+* The description of -V was wrong.
407
+* Moved -c to fetch options as -cs to avoid clash with build flags
408
+
409
+### 2.1.1
410
+
411
+* Improve usage to show more available commands
412
+* redid the IFS setting/resetting chores
413
+
414
+
415
+## 2.1
416
+
417
+**The changes should be harmless, but to be safe
418
+`mulle-bootstrap dist clean` your projects**
419
+
420
+This version has some additions, that enable a more flexible use of
421
+embedded repositories to "compose" source trees. Up till 2.1 embedded
422
+repositories were always placed into the project root. Now you can
423
+specify the subdirectory like "src/embedded/foo" (relative to project root).
424
+
425
+Better fetch and build code checks that dependencies, that are
426
+installed in `/usr/local` already, need not be fetched again. This can
427
+be helpful, when building brew packages (for example). (**-nb**)
428
+
429
+Support for `mulle-build` which has an in general more optimistic approach to
430
+life. 2.3 will focus on making operations faster in the Windows bash shell.
431
+
432
+#### Commands
433
+
434
+* started on `mulle-bootstrap config`. First implemented setting is
435
+`warn_scripts`. You can turn off scripts warning, with
436
+`mulle-bootstrap config -on dont_warn_scripts`
437
+* added `git` command, so you can say `mulle-bootstrap git status`. Going to
438
+become more useful over time.
439
+* renamed hidden option **-r** to **-l** (sorry)
440
+* **-f** option removed from build/fetch options, as it didn't do anything. The
441
+**-f** for mulle-bootstrap is still there though.
442
+* new **-c** switch to enable checking `/usr/local/include` for dependency libraries
443
+conveniently from the command line. Fix build to add `/usr/local/include` to
444
+build, if `check_usr_local_include` is YES.
445
+* remove obsolete `mulle-bootstrap-project.sh` and `mulle-bootstrap project`.
446
+The idea behind that has been moved to `mulle-build`.
447
+
448
+#### Features
449
+
450
+* embedded repositories can now be placed at an arbitrary position within your
451
+project tree
452
+* allow build and fetch options to be passed to `bootstrap`
453
+* improved comments in `repositories` and `embedded_repositories` templates
454
+* pass ADDICTIONS_DIR to build systems
455
+* improve optimistic support, by memorizing if a fetch, refresh, build went
456
+thru successfully. The automatic refresh should run much less often now.
457
+
458
+#### Cmake
459
+
460
+* fixed multiple path settings for cmake
461
+* a project can indicate its preferred CC or CXX compiler by files .CC and .CXX
462
+in it's project root. e.g. `echo "mulle-clang" > .CC`. This can be overridden
463
+by settings. It's there because I have problems when not specifying the compiler
464
+on the command line.
465
+
466
+#### Bugfixes
467
+
468
+* fixed a problem in the parsing of the repositories file
469
+* fixed some as of yet unknown bugs, by improving some path functions
470
+* changes in deeply embedded repositories are now better tracked
471
+* call warn scripts earlier, when bootstrapping
472
+* fix dry run for commands with output redirection
473
+* fix ALL/NONE in yes no answers to work again
474
+
475
+
476
+### 2.0.1
477
+
478
+Fixes two bugs
479
+
480
+* fix problem in refresh using '==' instead of '='
481
+* fix cut not using -s for extra parameters
482
+
483
+
484
+# 2.0
485
+
486
+#### YOUR OLD STUFF MAY NOT RUN ANYMORE
487
+
488
+Do a `mulle-bootstrap dist clean`.
489
+
490
+
491
+### YOUR OLD SETTINGS MAY NOT WORK ANYMORE!
492
+
493
+Move all repo specific setting directories from
494
+
495
+`.bootstrap/settings/<reponame> `
496
+
497
+to
498
+
499
+`.bootstrap/<reponame>`
500
+
501
+#### YOUR OLD SCRIPTS MAY NOT WORK ANYMORE!
502
+
503
+* Fetch script names have changed. *-install.sh is now *-fetch.sh.
504
+
505
+#### Changes
506
+
507
+* Add pre-build.sh script phase (for libcurl really)
508
+* Brew formulas are now installed locally into "addictions". A folder which
509
+lies besides "dependencies". This is a pretty huge change. By removing pips and
510
+gems, mulle-bootstrap can now claim to do only project relative installs.
511
+* mulle-bootstrap xcode changed to emit a non-xcode project relative
512
+ `$(DEPENDENCIES_DIR)` setting. Admittedly an experimental hack. But the old
513
+ more proper way, didn't work with cmake generated xcode projects.
514
+* reorganized repository structure a bit
515
+* You can now specify ALL (always YES) or NONE (always NO) at the y/n prompt.
516
+* Support for MINGW on Windows for cmake and configure (experimental)
517
+* Finally added a proper dependency resolver
518
+* -f option now recognized by build and fetch
519
+* rewrote mulle-bootstrap so that the files in libexec are included and not
520
+executed, which is nicer for less environment pollution and ever so slightly
521
+better performance.
522
+* rewrote mulle-bootstrap so that it works on systems, which do not have
523
+symlinks available.  This meant that I had to redo the whole settings
524
+inheritance scheme.
525
+* -v is now more interesting to watch
526
+* renamed build setting OTHER_CPPFLAGS to OTHER_CXXFLAGS (!)
527
+* UNAME is now simplified and lowercased(!)
528
+* redid the settings merge and inheritance logic. It's now a bit more scrutable.
529
+* removed build_order from settings
530
+* script names have changed. For instance, post-install.sh is now post-fetch.sh.
531
+* dist-clean is gone, now dist means "clean dist". You can also say dist clean
532
+it doesn't matter.
533
+* don't pollute .gitignore with embedded repositories inside .repos#
534
+* reduced configurability of mulle-bootstrap, since I didn't use it so far much and it slows things down on MINGW
535
+
536
+
537
+## 1.1
538
+
539
+* Fix tar install, which was broken
540
+* Fix some wordings
541
+* You can now put configuration setting like variables into the URL. Like so:
542
+   https://${host:-www.mulle-kybernetik.com}:foo.git. Define the host like
543
+   a regular fetch setting. `echo "x.y.com" > .bootstrap/host`
544
+* Fix help screen for refresh and update
545
+* Don't complain if there are no dependencies generated
546
+
547
+
548
+# 1.0
549
+
550
+Version 1.0 breaks compatibility with the previous version. You should "clean"
551
+everything.
552
+
553
+* **change in the dependencies/ structure**
554
+   it's now dependencies/Debug/lib for Debug and dependencies/lib for Release
555
+* The default built is Release only
556
+* mulle-bootstrap tag can now '-f' force tags and '-d' delete tags
557
+* mulle-bootstrap no longer places headers into `dependencies/usr/local/include`
558
+but just into `dependencies/include`
559
+* the 'tag' command is now less powerful. It just tags the fetched repositories,
560
+because that's mulle-bootstraps scope. The tag 'script facility' has been
561
+eliminated.
562
+* new clean target "install"
563
+* removed convert-pre-0.10 and ibuild commands
564
+* ConsoleMovies are gone, I am too lazy to maintain them.
565
+* Improve generation of -F and -L flags in cmake and configure
566
+* cmake and configure always add `/usr/local/include` and link with `/usr/local/lib`
567
+(mostly due to brew installing dependencies there).
568
+* redid the verbosity logging with -v, -vv , -vvv, -t
569
+* clean before build is no longer the default
570
+
571
+## 0.26
572
+
573
+* Check library scripts version vs. executable version (paranoia)
574
+* Skip Dirty Harry with -f flag.
575
+* improve FAQ a little
576
+* Reverse oder of repositories when updating, because this catches deep
577
+  renames. Update now also fetches repositories, if they aren't there
578
+  yet.
579
+* Make the Dirty Harry check less foolproof, but also less annoying.
580
+
581
+
582
+## 0.25
583
+
584
+*  Remove python dependency
585
+*  **bootstrap: refresh between fetch and build**
586
+
587
+
588
+## 0.24
589
+
590
+*  Fix releasenotes underscores
591
+*  Fix xcodebuild path
592
+
593
+
594
+## 0.23
595
+
596
+*  Added -k options to build, to control cleaning before build.
597
+   You can now specify the default configurations to build with -c.
598
+   e.g. `mulle-bootstrap -c "Debug"
599
+*  Improved library and frameworks searchpath generation.
600
+*  You can pass build a `-j <cores>` flag, for cmake/make to parallelize
601
+   the build.
602
+*  Specify `ARCHS='${NATIVE_ARCH_ACTUAL}' mulle-bootstrap build`, when you
603
+   want to override the ARCHS setting for an Xcode build. Kinda hackish.
604
+*  xcodebuild routine does not overwrite `INSTALL_PATH` anymore.
605
+*  `mulle-bootstrap clean` has **output** as the new default
606
+*  Fix accidental IFS overwrite problem, resulting in git calls failing
607
+*  Install brews first, since they might load prerequisites for shell scripts.
608
+*  Allow user to specify `source_dir` build setting for projects, that do
609
+   not have CMakeLists.txt or .xcodeproj or configure in the top level.
610
+*  the Source Code Management system is no longer read from a .scm file, but
611
+   instead specified in the fourth field of repositories. The default is still
612
+   git and the only available alternative is still svn.
613
+      url;name;branch;scm
614
+
615
+*  Improve repository merge order again.
616
+*  Fix cmake to not always compile with DEBUG options. Allow to supply
617
+   cmake flags via "cmakeflags" root build setting.
618
+
619
+
620
+## 0.22
621
+
622
+*  Fix repository order when merging. You should know, that the
623
+   repository order in `.bootstrap/repositories` needs to be in proper sorted
624
+   order. Only than can mulle-bootstrap figure out the recursive dependencies
625
+   correctly.
626
+*  Allow clone of specific branches by changing the repository spec line to
627
+   url;name;branch
628
+
629
+      ```
630
+      https://www.mulle-kybernetik.com/repositories/mulle-configuration;;MulleFoundation
631
+      ```
632
+      uses the default name, but fetches the MulleFoundation branch.
633
+*  Huge change:  CMake (and configure) are now the prefered build systems even
634
+   on OS X (if a `CMakeLists.txt` is available). xcodebuild becomes a fallback
635
+   preference. The reasons are:
636
+      1.  CMake + Make seem faster than xcodebuild
637
+      2.  It forces me to keep up the CMakeLists.txt with the Xcode project
638
+   If you don't like it change the build setting 'build_preferences'.
639
+*  mulle-bootstrap recognizes that bare repositories need to be cloned more
640
+   often now, if not always.
641
+*  Make mulle-bootstrap more resilient against aborted fetches, added Dirty
642
+   Harry quote.
643
+*  Uses `CMAKE_EXE_LINKER_FLAGS` and `CMAKE_SHARED_LINKER_FLAGS` instead of
644
+   `CMAKE_LD_FLAGS`.
645
+*  Fix wrong --recursive for svn checkout.
646
+
647
+
648
+## 0.21
649
+
650
+*  Fix a bug when updating
651
+*  When updating ignore symlinked repositories and do not update embedded
652
+   repositories of said symlinks.
653
+*  Fixed option handling, so now -y -v and -v -y are possible. It used to be
654
+   that the order was -y -v.
655
+*  Embeded repository settings do not get inherited, from other repos, which is
656
+   just confusing.
657
+*  Make the zombiefication code a bit more clever, when expected repos aren't
658
+   there (yet).
659
+
660
+
661
+## 0.20
662
+
663
+*  Replace `CLONES_FETCH_SUBDIR` with `REPOS_DIR`.
664
+*  mulle-bootstrap now uses the zombie repository detection to actually bury
665
+   unused repositories. Check out "tests/refresh/refresh.sh" how this
666
+   actually works. The upshot is, all changes in the repositories settings
667
+   are now reflected on refresh.
668
+*  Fix a bug in `combined_escaped_search_path`, which produced ugly and
669
+   wrong search paths (that didn't matter).
670
+*  Pass `DEPENDENCIES_DIR` via command line, which fixes some subtle problems
671
+   with missing libraries, due to -force_load and friends.
672
+*  Started mulle-bootstrap project. The general idea is to do also manage
673
+   the project that contains the .bootstrap folder (at least a little bit). So
674
+   `mulle-bootstrap clone` is now `mulle-bootstrap project clone
675
+*  Better deep fetch and refresh avoids redoing repositories (could be
676
+   better though still)
677
+*  Don't append to log files, overwrite them.
678
+*  script build shows better info on failure
679
+*  Fix recursive repository agglomeration to not output duplicate lines
680
+*  Grep those lines with an exact line match
681
+
682
+
683
+## 0.19
684
+
685
+*  Forgot a -f on a ln -s , which could result in an irritating output.
686
+*  Now also refresh before fetching. mulle-bootstrap will now be able to
687
+   pick up changes in recursive repositories. And fetch additional repos as
688
+   needed, so you don't need to clean dist.
689
+*  Produce more helpful output if cmake is missing.
690
+*  Experimental support for "mulle-bootstrap clone", which will clone and build
691
+   a remote repository.
692
+*  Nicer markup for RELEASENOTES.md
693
+
694
+## 0.18
695
+
696
+*  Refixed: Fix old favorite bug build_ignore became a directory bug) again ...
697
+*  Added refresh, which will be called before build and update automatically
698
+   to rebuild .bootstrap.auto.
699
+
700
+## 0.17
701
+
702
+*  Fixed the broken inheritance. The "Always redo bootstrap.auto folder
703
+   on fetch" fix in 0.15, was in the wrong position. So 0.15 and 0.16 are
704
+   totally broken releases. Sorry.
705
+
706
+## 0.16
707
+
708
+*  Fixed misnamed exekutor.
709
+*  Fix old favorite bug build_ignore became a directory bug) again ...
710
+
711
+## 0.15
712
+
713
+*  `tag` checks in all repositories, that a tag does not exist.
714
+*  Remove some fluff from regular output.
715
+*  Fix a bug involving settings copy  (build_ignore became a directory bug)
716
+*  Executed commands are now prefixed with ==> for better readability.
717
+*  Always redo bootstrap.auto folder on fetch, which means that you don't need
718
+   to clean dist anymore after editing .bootstrap files.
719
+*  Forgot to write-protect dependencies, when only partial builds were done.
720
+
721
+## 0.14
722
+
723
+*  Fix various uglies.
724
+*  Make white terminals more happening with color choices.
725
+*  -v circumvents building into a logfile, which is sometimes more convenient.
726
+
727
+## 0.13
728
+
729
+*  Fix colorization by using printf, instead of echo.
730
+
731
+## 0.12
732
+
733
+*  Run post-install.sh also on embedded repositories. Sometimes useful, when
734
+   you need ./configure to produce some headers.
735
+*  Add parameters to "Executing script" line.
736
+*  Add "checkout" git flags, to fine tune the clone. But use --recursive
737
+   per default.
738
+
739
+## 0.11
740
+
741
+*  Fixes another stale headers problem. Project is creeping towards a 1.0.
742
+
743
+## 0.10
744
+
745
+*  Fetch settings can be platform specific by using the `uname` as a file
746
+   extension. e.g. repositories.Darwin. Other settings may follow, if the need
747
+   arises. So far it hasn't.
748
+*  Added `embedded_repositories` for those special moments, where you don't want
749
+   to link another project, but just steal a few files. These gits are installed
750
+   in your projects root and they are not built. You can not symlink them into
751
+   your project, just clone them.
752
+*  Because I needed ancient and dying svn for MulleScion,  you can now remap
753
+   from the default git to svn, by creating a file `<reponame>.scm`. That contains
754
+  the string "svn" then.
755
+*  *** Renamed "gits" to "repositories" ***
756
+*  Use mulle-bootstrap convert-pre.0.10 ~/src to convert all .bootstrap folders
757
+  that `find` can find.
758
+*  Do `mulle-bootstrap -n -v convert-pre-0.10 ${HOME}` to check what it's doing.
759
+*  Install dummy dirs for xcodebuild too, to avoid boring compiler warnings.
760
+*  Always overwrite headers, otherwise old and stale headers make life
761
+   unnecessarily more complicated.
762
+
763
+### 0.9.8
764
+
765
+*  Brings more Linux fixes
766
+
767
+### 0.9.7
768
+
769
+*  Allow mulle-bootstrap version to work everywhere.
770
+
771
+### 0.9.6
772
+
773
+*  Figured out that some terminal windows have a white background (duh).
774
+*  Fixed shifts for Ubuntu's hated dash.
775
+*  Fixed some other Linux problems.
776
+
777
+### 0.9.5
778
+
779
+*  Messed up the tagging somewhat... 0.9.1 and 0.9.2 were the same and
780
+*  0.9.3 doesn't even exist. So now 0.9.5 is the one.
781
+
782
+*  Don't trace environment reads of `MULLE_BOOTSTRAP_ANSWER` and
783
+*  `MULLE_BOOTSTRAP_VERBOSE`.
784
+*  Fix xcodebuild log filename generation
785
+*  Fix dry run some more.
786
+*  Less output during dispensal, when not using -v.
787
+*  Reduce usage output to 25 lines.
788
+
789
+### 0.9.1
790
+
791
+*  Fix cmake and configure build.
792
+
793
+## 0.9
794
+
795
+*  Specifying repos with `mulle-bootstrap build <repos>` was broken.
796
+*  Added -y option, so everything is answered YES. I use this all the time.
797
+*  Log xcodebuild command line into logfile.
798
+*  Fix useless errors during dry run.
799
+*  ** Changed the way custom "build.sh" scripts are executed. **
800
+*  You can give a xcodeproj to mulle-bootstrap xcode directly, nice for
801
+   sharing  dependencies with many subprojects.
802
+*  Fixes the collection and dispensal of built frameworks.
803
+*  Added logging to various 'cd' commands.
804
+*  Collect and dispense symbolic links for directories too (not just for files)
805
+*  Beautified output a little bit.
806
+*  Respect the terse flag (-s) during mulle-bootstrap xcode add.
807
+*  Add VENDOR_PREFIX to mulle-bootstrap-tag as third parameter.
808
+
809
+
810
+### 0.8.1
811
+
812
+*  And the fix, just minutes after the "release". warn scripts didn't
813
+   find a function, and now I have cleaned this up properly, I think.
814
+*  No more duplicate functions.
815
+
816
+## 0.8
817
+
818
+*  Added dist shortcut, because I always like to type "dist-clean".
819
+*  Allow upper-case user input for yes/no questions.
820
+*  Write protect dependencies folder, because I have a tendency to edit
821
+   the headers.
822
+*  Automatically append boring directories to .gitignore after fetch.
823
+*  Inverted script default answer, because it pains me. Also it's not
824
+   useful when using -a to just "breeze" through.
825
+*  Redirect build logs to "build/.repos/.logs", because especially
826
+   xcodebuild is just too verbose.
827
+
828
+### 0.7.1
829
+
830
+*  Fixed an internal error, when using mulle-bootstrap update.
831
+
832
+## 0.7
833
+
834
+*  Added version command
835
+
836
+##  0.6
837
+
838
+*  Improve scripts handling and add a some new phases to
839
+   the proceedings. Actually the whole script stuff didn't work before...
840
+*  Scripts in general aren't documented yet, because it's still very much
841
+   in fluctuation.
842
+
843
+*  More output during setting inheritance. Fix proper inheritance of
844
+*  build_order and build_ignore.
845
+
846
+*  Lots of en-passant bug fixes. Should be in general better than 0.5
847
+
848
+*  Add -V option.
849
+
850
+*  Added new did-install script phase. Depending on actual usage, I'll
851
+   probably ditch some of the other phases again. This is all in flux.
0 852
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+[comment]: <> ({{COMMENT}})
2
+{% includes TEMPLATE_FILE %}
0 3
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+# {{COMMENT}}
2
+{% includes TEMPLATE_FILE %}
0 3
new file mode 100644
... ...
@@ -0,0 +1,50 @@
1
+
2
+## How to install
3
+
4
+This will install **mulle-bootstrap** into `/usr/local`:
5
+
6
+```console
7
+./install.sh
8
+```
9
+
10
+Here is an example, that installs **mulle-bootstrap** into /tmp:
11
+
12
+```console
13
+./install.sh /tmp
14
+```
15
+
16
+
17
+## OS X/Linux: How to install with homebrew/linuxbrew
18
+
19
+If you have brew you can get the latest released version with
20
+
21
+```console
22
+brew install {{PUBLISHER_TAP}}/mulle-bootstrap
23
+```
24
+
25
+### Linux/: Install with apt-get
26
+
27
+Run with sudo:
28
+
29
+```
30
+sudo -s
31
+
32
+curl -sS "{{PUBLISHER_DEBIAN_GPG_URL}}" | apt-key add -
33
+
34
+echo "deb [arch=all] http://{{PUBLISHER_DEBIAN_SOURCE}} `lsb_release -c -s` main" \
35
+> "/etc/apt/sources.list.d/{{PUBLISHER_DEBIAN_SOURCE}}.list"
36
+
37
+apt-get update
38
+apt-get -y --allow-unauthenticated install mulle-bootstrap
39
+```
40
+
41
+## Windows: How to install
42
+
43
+> if you use the new [Windows 10 bash](http://www.omgubuntu.co.uk/2016/08/enable-bash-windows-10-anniversary-update), ignore this
44
+
45
+Get [Git For Windows](https://git-scm.com/download/win).
46
+Checkout this repository then run
47
+
48
+```console
49
+./install.sh ~/bin
50
+```
0 51
new file mode 100644
... ...
@@ -0,0 +1,216 @@
1
+# mulle-brew, C/C++/Objective-C developer sandboxing with homebrew
2
+
3
+![Last version](https://img.shields.io/github/tag/{{PUBLISHER}}/mulle-bootstrap.svg)
4
+
5
+[Homebrew](//brew.sh) is the de facto standard package manager of OS X. It is also
6
+available on Linux as [Linuxbrew](linuxbrew.sh).
7
+
8
+By default homebrew installs packages system-wide into '/usr/local/' (on OS X). But you can actually clone the [brew repository](https://github.com/Homebrew/brew/) to any place in the filesystem. `brew` will the install packages in that place. This way you can create your own playground development environment of tools and libraries.
9
+
10
+**mulle-brew** helps you set-up and share such playgrounds, which it keeps in a folder called `addictions`.
11
+
12
+## Advantages
13
+
14
+* Keep the runtime and your system clear off temporary downloads.
15
+* Updating brew libraries for one project, doesn't necessarily impact parallel projects
16
+* An easy way to share the required build environments
17
+* A uniform way to access those dependencies via a known name `addictions`
18
+
19
+
20
+## Installing **mulle-brew**
21
+
22
+Install mulle-brew with brew, it makes sense :) :
23
+
24
+```
25
+brew install {{PUBLISHER_TAP}}/mulle-brew
26
+```
27
+
28
+## Install and run hello world using **mulle-brew**
29
+
30
+Install hello:
31
+
32
+```
33
+mulle-brew init
34
+mulle-brew setting -g -r brews hello
35
+mulle-brew
36
+```
37
+
38
+Run hello:
39
+
40
+```
41
+mulle-brew run hello
42
+```
43
+
44
+What does `mulle-brew run` do ? It adds `${PWD}/addictions/bin` to your PATH shell variable. so that **hello** is found for the duration of this command. You could as well have used `./addictions/bin/hello`. The use of `mulle-brew run` becomes more important later on in more complex scenarios.
45
+
46
+
47
+## Install some libraries with **mulle-brew** and use them with cc, Xcode and clang
48
+
49
+Install **libpng** and **zlib**:
50
+
51
+```
52
+mulle-brew init
53
+mulle-brew setting -g -r brews libpng
54
+mulle-brew setting -g -r -a brews zlib
55
+mulle-brew
56
+```
57
+
58
+Create a small test program:
59
+
60
+```
61
+cat <<EOF > x.c
62
+#include <png.h>
63
+#include <zlib.h>
64
+
65
+main()
66
+{
67
+   printf( "png version: %u\n", png_access_version_number());
68
+   printf( "zlib version: %s\n", zlibVersion());
69
+   return( 0);
70
+}
71
+```
72
+
73
+#### Using cc
74
+
75
+Build it with **cc** and run it:
76
+
77
+```
78
+flags="`mulle-brew paths -l cflags`"
79
+cc ${flags} -o x x.c
80
+mulle-brew run ./x
81
+```
82
+
83
+If you are running `mulle-brew paths -l cflags` in `/tmp` it will produce this
84
+line:
85
+
86
+```
87
+-I/tmp/addictions/include -F/tmp/addictions/Frameworks -L/tmp/addictions/lib -lpng -lpng16 -lz
88
+```
89
+
90
+`mulle-brew paths cflags` on its own produces the -I, -F and -L flags. The `-l` option collects all the available libraries from `addictions/lib` and adds them as commandline options.
91
+
92
+
93
+#### Using cmake
94
+
95
+
96
+Create a `CMakeLists.txt`:
97
+
98
+```
99
+cat <<EOF > CMakeLists.txt
100
+cmake_minimum_required (VERSION 3.0)
101
+project (x)
102
+
103
+find_library( PNG_LIBRARY NAMES png)
104
+find_library( ZLIB_LIBRARY NAMES z)
105
+
106
+add_executable( x
107
+x.c)
108
+
109
+target_link_libraries( x
110
+\${PNG_LIBRARY}
111
+\${ZLIB_LIBRARY}
112
+)
113
+EOF
114
+```
115
+
116
+Build it with `cmake` and `make`:
117
+
118
+```
119
+mkdir build
120
+cd build
121
+cmake `mulle-brew paths cmake` ..
122
+make
123
+```
124
+
125
+> Check with `otool -L x` that indeed the libraries from `addictions/lib` have been picked up.
126
+
127
+
128
+
129
+
130
+#### Using Xcode
131
+
132
+Create a C tool project `x.xcodeproj` that resides in the same folder as `x.c`. Remove `main.c` and add `x.c`.
133
+
134
+Now enrich the xcode project with the **mulle-brew** dependencies header and library paths:
135
+
136
+```
137
+mulle-brew xcode add x.xcodeproj
138
+```
139
+
140
+You still need to manually add the libraries though.
141
+
142
+
143
+
144
+## Sharing addictions
145
+
146
+When you have multiple small projects, it would be nice to share a common `addictions` folder. You can do this with  `mulle-brew defer`. This commands links up the current project directory with its immediate parent. 
147
+
148
+The addictions folder will now reside in `../addictions` instead of `./addictions`. Now
149
+if you are already in the habit of using `mulle-brew paths` and `mulle-brew run`, you don't have to modify anything!
150
+
151
+You can remove from a master project with `mulle-brew emancipate`.
152
+
153
+
154
+## Various Playground configurations
155
+
156
+
157
+### Pure playground, gcc/clang based
158
+
159
+You install a complete set of custom tools and libraries. The easiest way then
160
+is to pass `--sysroot` to your tool chain like f.e.
161
+
162
+```
163
+PATH=`mulle-brew paths -m path`
164
+gcc --sysroot="`mulle-brew paths -m addictions`"
165
+```
166
+
167
+### Mixed playground, gcc/clang based
168
+
169
+You use the Xcode supplied toolset, but you want the playground headers and
170
+libraries to override the system files.
171
+
172
+```
173
+gcc `mulle-brew paths -m cflags`
174
+```
175
+
176
+
177
+### Sharing playgrounds with other projects
178
+
179
+You might find that you have multiple projects with overlapping dependencies on
180
+brew formula and the duplication becomes tedious. You can create a "master"
181
+playground in the common parent directory with:
182
+
183
+```
184
+mulle-brew defer
185
+```
186
+
187
+And revert back to a private playground with
188
+
189
+```
190
+mulle-brew emancipate
191
+```
192
+
193
+Here the use of `mulle-brew paths` comes in handy, as it adapts to the
194
+new position of the `addictions` folder in the filesystem.
195
+
196
+## Tips
197
+
198
+### Keep a cache of homebrew locally
199
+
200
+Cloning **brew** from GitHub for every project can get tedious. You can use a local cache with:
201
+
202
+```
203
+mulle-brew config -u "clone_cache" "${HOME}/Library/Caches/mulle-brew"
204
+```
205
+
206
+### Hack the shared libraries to use a proper @rpath
207
+
208
+...
209
+
210
+
211
+
212
+## GitHub and Mulle kybernetiK
213
+
214
+The development is done on [Mulle kybernetiK](https://www.mulle-kybernetik.com/software/git/mulle-bootstrap/master). Releases and bug-tracking are on [GitHub](https://github.com/{{PUBLISHER}}/mulle-bootstrap).
215
+
216
+
0 217
new file mode 100644
... ...
@@ -0,0 +1,144 @@
1
+# Fetch and Build
2
+
3
+At it's core mulle-bootstrap does two things Fetching and Building. This
4
+article deals mainly with the **Fetch** aspect.
5
+
6
+![Fetch and Build](0-loop.svg)