### 3.8.1
* fix archive extraction on linux
### 3.8.0
* new build setting `srcdir` where you can specify the subdirectory, that contains configure, CMakeLists et.c
### 3.7.2
* git fetch exception fixed when mirroring
### 3.7.1
* save git mirrors under their fork names
## 3.7.0
* experimentally added ${GITHUB_REMOTE_ORIGIN} expansion, so you can specify
dependencies relative to the original project.
* when moving embedded directories around, mulle-bootstrap will now create
missing target directories
* renamed `clone_cache` to `git_mirror` because that's better. `refresh_cache` is now `refresh_git_mirror`.
* added option `--no-git-mirror
* added `type` command to introspect the bootstrap topology easier
* avoid superflous updating of mirrored git clones during one session, which
speeds up things considerably, when mirroring
* fix bug of failing symlinks, when the destination itself is accessed via a
symlink
### 3.6.7
* reduce verbosity in some places and hide ugly symlink paths
### 3.6.6
* fix a few regressions
### 3.6.5
* remove superflous set_build_needed
### 3.6.4
* fix accidental create of `.bootstap.local` as a file
* when using clone chaches, mulle-bootstrap update and upgrade now work as one
would expect. It would be good to erase your old clone caches.
### 3.6.3
* fix missing include in warn scripts
### 3.6.2
* fix and improve systeminstall (formerly just install)
### 3.6.1
* bug fixes
## 3.6
* Improved the dependencies copying routing. Now also copies `share` `sbin`
`bin` `libexec` and picks up more possible output directories. `sbin` and `bin`
will me merged into `dependencies/bin`.
* Improve path construction, omitting empty components
* Don't output superflous linefeed with paths
* removed -fb flag, because it's just the same as clean before build.
* Added a --from flag to build, so you can rebuild from a starting point.
### 3.5.4
* fix brews not being installed
* clean dist now also dist cleans minions embedded repositories
### 3.5.4
* fix bug in ${expansion:-default}
### 3.5.2
#### `caches_path`renamed to more sensible `search_path`
* experimentally, don't kill so hard anymore when failing (mostly for
mulle-builds sake)
* Because `mulle-bootstrap setting` now works, init by default does not
create demo files any more. Inverted meaning of -d flag.
* Various improvements to mulle-brew handling
* The paths default is now to output an unquoted one-liner. This is less
correct but simpler.
* Added `mulle-bootstrap run`. See mulle-brew for more details.
* Add proper version check in mulle-functions, so that mulle-brew doesn't
run with wrong libraries
### 3.4.0
* added handling of `additional_repositories`. This is supposed to be used
in `.bootstrap.local`. This way I can specify a "MulleFoundation" dependency
if I want to compile for mulle-objc. But sometimes I want the Apple Foundation.
* finally added list command for `setting`. All that's needed now is a scripts
setting to list all scripts
* -fb automatically adds `-U *` to CMAKEFLAGS so that cached values are ignored,
this reduces a lot of WTF moments.
* `CMAKE_FLAGS` is now `CMAKEFLAGS
### 3.3.0
* `mulle-bootstrap project-path` prints out what it thinks your project path is.
This is helpful for **mulle-build**.
* Improve output of `mulle-bootstrap -v help`.
* An empty expansion in repositories is now an error by default. But you can
change it back to previous behavior with `mulle-bootstrap config -n empty_expansion_is_error`
* The `-g` option no longer works for `mulle-bootstrap config`, use the `-u`
setting to set values in `~/.bootstrap`. This unconfuses the '-g' which means
`.bootstrap` and not `.bootstrap.local`, the default.
* `mulle-bootstrap expansion -l` works now
* You can now use `<key>=<value>` to set settings and expansions. This makes
it easier to copy/paste show output.
* Missing but not required repositories no longer produce a build error
* added `-fb` as lesser -force mode than -f.
* old Frameworks of previous builds are not a problem anymore
* With config `use_cc_cxx=NO` mulle-bootstrap won't read the compiler to use
from `.CC` and `.CXX`.
### 3.2.0
Do not specify cmake dependency in homebrew formula for mulle-bootstrap, since
cmake is not absolutely required. Rather check this at runtime and output
some helpful hints.
### 3.1.0
You can allow optional fetches to fail my listing repository-names, that
are required. (embeded_repositories <-> embedded_required)
Fixes some bugs.
Still alpha though.
# 3.0
#### New commands: defer, emancipate, flags, status
#### mulle-bootstrap command syntax was related to git, but now it's related
to homebrew and apt-get. This has been done, because I wan't to have mulle-brew
as a separate shell command, and the git syntax doesn't fit.
That means, mulle-bootstrap fetch is now just a deprecated synonym for
mulle-bootstrap install
mulle-bootstrap update is now mulle-bootstrap upgrade.
mulle-bootstrap install is now mulle-bootstrap systeminstall
#### The way settings work as drastically changed too much to list here
* config now returns the default value, if nothing is configured
* various changes in variables
Now | Before | Description
------------------|---------------------|--------------------------
DEPENDENCIES_DIR | DEPENDENCIES_DIR |
ADDICTIONS_DIR | ADDICTIONS_DIR |
BOOTSTRAP_DIR | BOOTSTRAP_SUBDIR |
REPOS_DIR | CLONES_SUBDIR |
| CLONESFETCH_SUBDIR | Does not exist anymore
* libexec is now found relative to $0 so the install script does not need to
patch anymore. It's also convenient for the test scripts
* various status files are now prefixed with .bootstrap_
* **tag** as a setting does not exist anymore. Now its part of the repositories line
* A lot of options have changed. Too many to mention. Sorry about this, but progres...
### 2.6.1
* fix bug with absolute paths
## 2.6.0
* mulle-bootstrap announces itself to cmake with -DMULLE_EXECUTABLE_VERSION
### 2.5.2
* -v -h gives more help
* renamed -tt to -tit and -tp to -tip, because it's more logical
### 2.5.1
* Allow --debug and --release as shortcuts for -c Debug and -c Release, because
I am lazy and I expect it.
## 2.5.0
* Improve usage for `mulle-bootstrap init`
* Reduce verbosity for PATH to fluff
* The --no-recursion flag has been fixed, the old behaviour is now available
as --no-embedded.
* Use eval exekutor for cmake to better inherit CMAKEFLAGS and protect paths
with spaces.
* build now acknowledges --check-usr-local-include also
* With --prefix you can change /usr/local on the commandline for build and fetch
### 2.4.2
Make PATH generation compatible with homebrew shims
### 2.4.1
Exit with 0 when printing version.
Emit better .gitignore code for symlinked embedded repos
## 2.4.0
Fix failing update for projects with only embedded repositories.
* experimental fetch flag -es added. This allows fetch to symlink embedded
repositories.
## 2.3
The main new feature of 2.3 is support for working with different repositories.
E.g. I host releases on GitHub on a branch "release", which are accessed via
https://, but when I develop I use Mulle KybernetiK on branch "master".
The "trick" is to use parameterized branches and urls like so:
```
$ cat .bootstrap/repositories
${MULLE_REPOSITORIES}/mulle-c11;;${MULLE_C11_BRANCH:-release}
$ cat .bootstrap/MULLE_REPOSITORIES
https://github.com/mulle-nat
```
This works for the release part. Locally though in the non-committed
`.bootstrap.local`:
```
$ cat MULLE_REPOSITORIES
nat@mulle-kybernetik.com:/scm/public_git/repositories
$ cat MULLE_C11_BRANCH
master
```
### Changes
* clarified the use of options vs. flags some more. e.g. git GITFLAGS command GITOPTIONS.
* update will now also refresh
* improved refresh check, should now properly detect edited config files, except if the
edit is less than a second after the last refresh run. Death of the hidden -fr flag
* start version checking bootstrap contents
* -f flag will now also try to checkout branches, that are checked out
incorrectly
* fetch gains -i option, to ignore "wrongly" checked out repositories
* fails are prefixed with the command, that caused the failure
* use unexpanded URLs for dependency matches and store those into .bootstrap.auto
* mulle-bootstrap now picks up URL changes and corrects them in fetched
repositiories, but that does not per se force an update.
* try to detect changes in .bootstrap better
* improved retrieval of settings for embedded repositories
* improved dependency code
* some more checks, that embedded repositories do not clobber symlinked content
* added -D bootstrap flag to create .bootstrap.local definition files. Convenient for specifiying alternate URLs for example.
### 2.2.1
* fix for Linux
## 2.2
* `mulle-bootstrap tag` will now also tag embedded repositories
* `mulle-bootstrap git` will now also grace embedded repositories, so `mulle-bootstrap git status -s` is now better
* reworked tag to be more aware of git flags, so `mulle-bootstrap tag -l` now
works
### 2.1.4
* use a safer but uglier method to append to .gitignore
### 2.1.3
* Improve performance especially on windows, due to less superflous refreshes
### 2.1.2
* expose some more flags to usage. Distinguish between flags and options.
* The description of -V was wrong.
* Moved -c to fetch options as -cs to avoid clash with build flags
### 2.1.1
* Improve usage to show more available commands
* redid the IFS setting/resetting chores
## 2.1
**The changes should be harmless, but to be safe
`mulle-bootstrap dist clean` your projects**
This version has some additions, that enable a more flexible use of
embedded repositories to "compose" source trees. Up till 2.1 embedded
repositories were always placed into the project root. Now you can
specify the subdirectory like "src/embedded/foo" (relative to project root).
Better fetch and build code checks that dependencies, that are
installed in `/usr/local` already, need not be fetched again. This can
be helpful, when building brew packages (for example). (**-nb**)
Support for `mulle-build` which has an in general more optimistic approach to
life. 2.3 will focus on making operations faster in the Windows bash shell.
#### Commands
* started on `mulle-bootstrap config`. First implemented setting is
`warn_scripts`. You can turn off scripts warning, with
`mulle-bootstrap config -on dont_warn_scripts`
* added `git` command, so you can say `mulle-bootstrap git status`. Going to
become more useful over time.
* renamed hidden option **-r** to **-l** (sorry)
* **-f** option removed from build/fetch options, as it didn't do anything. The
**-f** for mulle-bootstrap is still there though.
* new **-c** switch to enable checking `/usr/local/include` for dependency libraries
conveniently from the command line. Fix build to add `/usr/local/include` to
build, if `check_usr_local_include` is YES.
* remove obsolete `mulle-bootstrap-project.sh` and `mulle-bootstrap project`.
The idea behind that has been moved to `mulle-build`.
#### Features
* embedded repositories can now be placed at an arbitrary position within your
project tree
* allow build and fetch options to be passed to `bootstrap`
* improved comments in repositories` and `embedded_repositories` templates
* pass ADDICTIONS_DIR to build systems
* improve optimistic support, by memorizing if a fetch, refresh, build went
thru successfully. The automatic refresh should run much less often now.
#### Cmake
* fixed multiple path settings for cmake
* a project can indicate its preferred CC or CXX compiler by files .CC and .CXX
in it's project root. e.g. `echo "mulle-clang" > .CC`. This can be overridden
by settings. It's there because I have problems when not specifying the compiler
on the command line.
#### Bugfixes
* fixed a problem in the parsing of the repositories file
* fixed some as of yet unknown bugs, by improving some path functions
* changes in deeply embedded repositories are now better tracked
* call warn scripts earlier, when bootstrapping
* fix dry run for commands with output redirection
* fix ALL/NONE in yes no answers to work again
### 2.0.1
Fixes two bugs
* fix problem in refresh using '==' instead of '='
* fix cut not using -s for extra parameters
# 2.0
#### YOUR OLD STUFF MAY NOT RUN ANYMORE
Do a `mulle-bootstrap dist clean`.
### YOUR OLD SETTINGS MAY NOT WORK ANYMORE!
Move all repo specific setting directories from
`.bootstrap/settings/<reponame> `
to
`.bootstrap/<reponame>`
#### YOUR OLD SCRIPTS MAY NOT WORK ANYMORE!
* Fetch script names have changed. *-install.sh is now *-fetch.sh.
#### Changes
* Add pre-build.sh script phase (for libcurl really)
* Brew formulas are now installed locally into "addictions". A folder which
lies besides "dependencies". This is a pretty huge change. By removing pips and
gems, mulle-bootstrap can now claim to do only project relative installs.
* mulle-bootstrap xcode changed to emit a non-xcode project relative
`$(DEPENDENCIES_DIR)` setting. Admittedly an experimental hack. But the old
more proper way, didn't work with cmake generated xcode projects.
* reorganized repository structure a bit
* You can now specify ALL (always YES) or NONE (always NO) at the y/n prompt.
* Support for MINGW on Windows for cmake and configure (experimental)
* Finally added a proper dependency resolver
* -f option now recognized by build and fetch
* rewrote mulle-bootstrap so that the files in libexec are included and not
executed, which is nicer for less environment pollution and ever so slightly
better performance.
* rewrote mulle-bootstrap so that it works on systems, which do not have
symlinks available. This meant that I had to redo the whole settings
inheritance scheme.
* -v is now more interesting to watch
* renamed build setting OTHER_CPPFLAGS to OTHER_CXXFLAGS (!)
* UNAME is now simplified and lowercased(!)
* redid the settings merge and inheritance logic. It's now a bit more scrutable.
* removed build_order from settings
* script names have changed. For instance, post-install.sh is now post-fetch.sh.
* dist-clean is gone, now dist means "clean dist". You can also say dist clean
it doesn't matter.
* don't pollute .gitignore with embedded repositories inside .repos#
* reduced configurability of mulle-bootstrap, since I didn't use it so far much and it slows things down on MINGW
## 1.1
* Fix tar install, which was broken
* Fix some wordings
* You can now put configuration setting like variables into the URL. Like so:
https://${host:-www.mulle-kybernetik.com}:foo.git. Define the host like
a regular fetch setting. `echo "x.y.com" > .bootstrap/host`
* Fix help screen for refresh and update
* Don't complain if there are no dependencies generated
# 1.0
Version 1.0 breaks compatibility with the previous version. You should "clean"
everything.
* **change in the dependencies/ structure**
it's now dependencies/Debug/lib for Debug and dependencies/lib for Release
* The default built is Release only
* mulle-bootstrap tag can now '-f' force tags and '-d' delete tags
* mulle-bootstrap no longer places headers into `dependencies/usr/local/include`
but just into `dependencies/include`
* the 'tag' command is now less powerful. It just tags the fetched repositories,
because that's mulle-bootstraps scope. The tag 'script facility' has been
eliminated.
* new clean target "install"
* removed convert-pre-0.10 and ibuild commands
* ConsoleMovies are gone, I am too lazy to maintain them.
* Improve generation of -F and -L flags in cmake and configure
* cmake and configure always add `/usr/local/include` and link with `/usr/local/lib`
(mostly due to brew installing dependencies there).
* redid the verbosity logging with -v, -vv , -vvv, -t
* clean before build is no longer the default
## 0.26
* Check library scripts version vs. executable version (paranoia)
* Skip Dirty Harry with -f flag.
* improve FAQ a little
* Reverse oder of repositories when updating, because this catches deep
renames. Update now also fetches repositories, if they aren't there
yet.
* Make the Dirty Harry check less foolproof, but also less annoying.
## 0.25
* Remove python dependency
* **bootstrap: refresh between fetch and build**
## 0.24
* Fix releasenotes underscores
* Fix xcodebuild path
## 0.23
* Added -k options to build, to control cleaning before build.
You can now specify the default configurations to build with -c.
e.g. `mulle-bootstrap -c "Debug"
* Improved library and frameworks searchpath generation.
* You can pass build a "-j <cores>" flag, for cmake/make to parallelize
the build.
* Specify `ARCHS='${NATIVE_ARCH_ACTUAL}' mulle-bootstrap build`, when you
want to override the ARCHS setting for an Xcode build. Kinda hackish.
* xcodebuild routine does not overwrite `INSTALL_PATH` anymore.
* `mulle-bootstrap clean` has **output** as the new default
* Fix accidental IFS overwrite problem, resulting in git calls failing
* Install brews first, since they might load prerequisites for shell scripts.
* Allow user to specify `source_dir` build setting for projects, that do
not have CMakeLists.txt or .xcodeproj or configure in the top level.
* the Source Code Management system is no longer read from a .scm file, but
instead specified in the fourth field of repositories. The default is still
git and the only available alternative is still svn.
url;name;branch;scm
* Improve repository merge order again.
* Fix cmake to not always compile with DEBUG options. Allow to supply
cmake flags via "cmakeflags" root build setting.
## 0.22
* Fix repository order when merging. You should know, that the
repository order in `.bootstrap/repositories` needs to be in proper sorted
order. Only than can mulle-bootstrap figure out the recursive dependencies
correctly.
* Allow clone of specific branches by changing the repository spec line to
url;name;branch
```
https://www.mulle-kybernetik.com/repositories/mulle-configuration;;MulleFoundation
```
uses the default name, but fetches the MulleFoundation branch.
* Huge change: CMake (and configure) are now the prefered build systems even
on OS X (if a `CMakeLists.txt` is available). xcodebuild becomes a fallback
preference. The reasons are:
1. CMake + Make seem faster than xcodebuild
2. It forces me to keep up the CMakeLists.txt with the Xcode project
If you don't like it change the build setting 'build_preferences'.
* mulle-bootstrap recognizes that bare repositories need to be cloned more
often now, if not always.
* Make mulle-bootstrap more resilient against aborted fetches, added Dirty
Harry quote.
* Uses `CMAKE_EXE_LINKER_FLAGS` and `CMAKE_SHARED_LINKER_FLAGS` instead of
`CMAKE_LD_FLAGS`.
* Fix wrong --recursive for svn checkout.
## 0.21
* Fix a bug when updating
* When updating ignore symlinked repositories and do not update embedded
repositories of said symlinks.
* Fixed option handling, so now -y -v and -v -y are possible. It used to be
that the order was -y -v.
* Embeded repository settings do not get inherited, from other repos, which is
just confusing.
* Make the zombiefication code a bit more clever, when expected repos aren't
there (yet).
## 0.20
* Replace `CLONES_FETCH_SUBDIR` with `REPOS_DIR`.
* mulle-bootstrap now uses the zombie repository detection to actually bury
unused repositories. Check out "tests/refresh/refresh.sh" how this
actually works. The upshot is, all changes in the repositories settings
are now reflected on refresh.
* Fix a bug in `combined_escaped_search_path`, which produced ugly and
wrong search paths (that didn't matter).
* Pass `DEPENDENCIES_DIR` via command line, which fixes some subtle problems
with missing libraries, due to -force_load and friends.
* Started mulle-bootstrap project. The general idea is to do also manage
the project that contains the .bootstrap folder (at least a little bit). So
`mulle-bootstrap clone` is now `mulle-bootstrap project clone
* Better deep fetch and refresh avoids redoing repositories (could be
better though still)
* Don't append to log files, overwrite them.
* script build shows better info on failure
* Fix recursive repository agglomeration to not output duplicate lines
* Grep those lines with an exact line match
## 0.19
* Forgot a -f on a ln -s , which could result in an irritating output.
* Now also refresh before fetching. mulle-bootstrap will now be able to
pick up changes in recursive repositories. And fetch additional repos as
needed, so you don't need to clean dist.
* Produce more helpful output if cmake is missing.
* Experimental support for "mulle-bootstrap clone", which will clone and build
a remote repository.
* Nicer markup for RELEASENOTES.md
## 0.18
* Refixed: Fix old favorite bug build_ignore became a directory bug) again ...
* Added refresh, which will be called before build and update automatically
to rebuild .bootstrap.auto.
## 0.17
* Fixed the broken inheritance. The "Always redo bootstrap.auto folder
on fetch" fix in 0.15, was in the wrong position. So 0.15 and 0.16 are
totally broken releases. Sorry.
## 0.16
* Fixed misnamed exekutor.
* Fix old favorite bug build_ignore became a directory bug) again ...
## 0.15
* `tag` checks in all repositories, that a tag does not exist.
* Remove some fluff from regular output.
* Fix a bug involving settings copy (build_ignore became a directory bug)
* Executed commands are now prefixed with ==> for better readability.
* Always redo bootstrap.auto folder on fetch, which means that you don't need
to clean dist anymore after editing .bootstrap files.
* Forgot to write-protect dependencies, when only partial builds were done.
## 0.14
* Fix various uglies.
* Make white terminals more happening with color choices.
* -v circumvents building into a logfile, which is sometimes more convenient.
## 0.13
* Fix colorization by using printf, instead of echo.
## 0.12
* Run post-install.sh also on embedded repositories. Sometimes useful, when
you need ./configure to produce some headers.
* Add parameters to "Executing script" line.
* Add "checkout" git flags, to fine tune the clone. But use --recursive
per default.
## 0.11
* Fixes another stale headers problem. Project is creeping towards a 1.0.
## 0.10
* Fetch settings can be platform specific by using the `uname` as a file
extension. e.g. repositories.Darwin. Other settings may follow, if the need
arises. So far it hasn't.
* Added `embedded_repositories`` for those special moments, where you don't want
to link another project, but just steal a few files. These gits are installed
in your projects root and they are not built. You can not symlink them into
your project, just clone them.
* Because I needed ancient and dying svn for MulleScion, you can now remap
from the default git to svn, by creating a file <reponame>.scm. That contains
the string "svn" then.
* *** Renamed "gits" to "repositories" ***
* Use mulle-bootstrap convert-pre.0.10 ~/src to convert all .bootstrap folders
that `find` can find.
* Do `mulle-bootstrap -n -v convert-pre-0.10 ${HOME}` to check what it's doing.
* Install dummy dirs for xcodebuild too, to avoid boring compiler warnings.
* Always overwrite headers, otherwise old and stale headers make life
unnecessarily more complicated.
### 0.9.8
* Brings more Linux fixes
### 0.9.7
* Allow mulle-bootstrap version to work everywhere.
### 0.9.6
* Figured out that some terminal windows have a white background (duh).
* Fixed shifts for Ubuntu's hated dash.
* Fixed some other Linux problems.
### 0.9.5
* Messed up the tagging somewhat... 0.9.1 and 0.9.2 were the same and
* 0.9.3 doesn't even exist. So now 0.9.5 is the one.
* Don't trace environment reads of `MULLE_BOOTSTRAP_ANSWER` and
* `MULLE_BOOTSTRAP_VERBOSE`.
* Fix xcodebuild log filename generation
* Fix dry run some more.
* Less output during dispensal, when not using -v.
* Reduce usage output to 25 lines.
### 0.9.1
* Fix cmake and configure build.
## 0.9
* Specifying repos with mulle-bootstrap build <repos> was broken.
* Added -y option, so everything is answered YES. I use this all the time.
* Log xcodebuild command line into logfile.
* Fix useless errors during dry run.
* ** Changed the way custom "build.sh" scripts are executed. **
* You can give a xcodeproj to mulle-bootstrap xcode directly, nice for
sharing dependencies with many subprojects.
* Fixes the collection and dispensal of built frameworks.
* Added logging to various 'cd' commands.
* Collect and dispense symbolic links for directories too (not just for files)
* Beautified output a little bit.
* Respect the terse flag (-s) during mulle-bootstrap xcode add.
* Add VENDOR_PREFIX to mulle-bootstrap-tag as third parameter.
### 0.8.1
* And the fix, just minutes after the "release". warn scripts didn't
find a function, and now I have cleaned this up properly, I think.
* No more duplicate functions.
## 0.8
* Added dist shortcut, because I always like to type "dist-clean".
* Allow upper-case user input for yes/no questions.
* Write protect dependencies folder, because I have a tendency to edit
the headers.
* Automatically append boring directories to .gitignore after fetch.
* Inverted script default answer, because it pains me. Also it's not
useful when using -a to just "breeze" through.
* Redirect build logs to "build/.repos/.logs", because especially
xcodebuild is just too verbose.
### 0.7.1
* Fixed an internal error, when using mulle-bootstrap update.
## 0.7
* Added version command
## 0.6
* Improve scripts handling and add a some new phases to
the proceedings. Actually the whole script stuff didn't work before...
* Scripts in general aren't documented yet, because it's still very much
in fluctuation.
* More output during setting inheritance. Fix proper inheritance of
* build_order and build_ignore.
* Lots of en-passant bug fixes. Should be in general better than 0.5
* Add -V option.
* Added new did-install script phase. Depending on actual usage, I'll
probably ditch some of the other phases again. This is all in flux.