RELEASENOTES.md
ed336411
 2.0
 ===
 
55a86360
 ### YOUR OLD STUFF MAY NOT RUN ANYMORE
7d49c598
 
 Do a `mulle-bootstrap dist clean`.
 
55a86360
 ### YOUR OLD SETTINGS MAY NOT WORK ANYMORE!
7d49c598
 
 Move all repo specific setting directories from
 
 `.bootstrap/settings/<reponame> `
 
 to
 
 `.bootstrap/<reponame>`
 
55a86360
 ### YOUR OLD SCRIPTS MAY NOT WORK ANYMORE!
 
 * Fetch script names have changed. *-install.sh is now *-fetch.sh.
 
7d49c598
 
 ## Changes
8f77be37
 
f36a470f
 * Add pre-build.sh script phase (for libcurl really)
ed336411
 * 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
eff55101
 * You can now specify ALL (always YES) or NONE (always NO) at the y/n prompt.
f36a470f
 * Support for MINGW on Windows for cmake and configure (experimental)
5c4e1033
 * Finally added a proper dependency resolver
a3018cdd
 * -f option now recognized by build and fetch
 * rewrote mulle-bootstrap so that the files in libexec are included and not
f36a470f
 executed, which is nicer for less environment pollution and ever so slightly
a3018cdd
 better performance.
f36a470f
 * 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
d2100287
 * renamed build setting OTHER_CPPFLAGS to OTHER_CXXFLAGS (!)
8f77be37
 * UNAME is now simplified and lowercased(!)
 * redid the settings merge and inheritance logic. It's now a bit more scrutable.
7d49c598
 * removed build_order from settings
55a86360
 * script names have changed. For instance, post-install.sh is now post-fetch.sh.
085db3f3
 * dist-clean is gone, now dist means "clean dist". You can also say dist clean
 it doesn't matter.
7be3796e
 * 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
 
ed336411
 
020d550a
 1.1
 ===
 
 * Fix tar install, which was broken
 * Fix some wordings
5fb25a38
 * 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`
c4ce7ff9
 * Fix help screen for refresh and update
 * Don't complain if there are no dependencies generated
020d550a
 
eff55101
 
821cd36e
 1.0
 ===
 
70513e67
 Version 1.0 breaks compatibility with the previous version. You should "clean"
 everything.
821cd36e
 
 * **change in the dependencies/ structure**
    it's now dependencies/Debug/lib for Debug and dependencies/lib for Release
 * The default built is Release only
70513e67
 * mulle-bootstrap tag can now '-f' force tags and '-d' delete tags
821cd36e
 * 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,
70513e67
 because that's mulle-bootstraps scope. The tag 'script facility' has been
821cd36e
 eliminated.
 * new clean target "install"
15af882e
 * removed convert-pre-0.10 and ibuild commands
70513e67
 * ConsoleMovies are gone, I am too lazy to maintain them.
a75ed0ba
 * 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
94eb4f61
 * clean before build is no longer the default
 
821cd36e
 
4aa41e69
 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
58c301d4
   renames. Update now also fetches repositories, if they aren't there
   yet.
 * Make the Dirty Harry check less foolproof, but also less annoying.
 
 
cbf01546
 0.25
 ===
 
 *  Remove python dependency
 *  **bootstrap: refresh between fetch and build**
 
 
fdd375ea
 0.24
 ===
 
 *  Fix releasenotes underscores
 *  Fix xcodebuild path
 
 
61fc7238
 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.
6d5e9672
 *  xcodebuild routine does not overwrite `INSTALL_PATH` anymore.
 *  `mulle-bootstrap clean` has **output** as the new default
61fc7238
 *  Fix accidental IFS overwrite problem, resulting in git calls failing
bf4c7902
 *  Install brews first, since they might load prerequisites for shell scripts.
6d5e9672
 *  Allow user to specify `source_dir` build setting for projects, that do
bf4c7902
    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.
6d5e9672
       url;name;branch;scm
 
bf4c7902
 *  Improve repository merge order again.
 *  Fix cmake to not always compile with DEBUG options. Allow to supply
    cmake flags via "cmakeflags" root build setting.
 
61fc7238
 
602ae7d9
 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
6d5e9672
    on OS X (if a `CMakeLists.txt` is available). xcodebuild becomes a fallback
602ae7d9
    preference. The reasons are:
6d5e9672
       1.  CMake + Make seem faster than xcodebuild
602ae7d9
       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.
6d5e9672
 *  Uses `CMAKE_EXE_LINKER_FLAGS` and `CMAKE_SHARED_LINKER_FLAGS` instead of
    `CMAKE_LD_FLAGS`.
602ae7d9
 *  Fix wrong --recursive for svn checkout.
 
fcfae396
 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).
 
 
7a4ae0c8
 0.20
 ===
f146fd2e
 
6d5e9672
 *  Replace `CLONES_FETCH_SUBDIR` with `CLONESFETCH_SUBDIR`.
7a4ae0c8
 *  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).
6d5e9672
 *  Pass `DEPENDENCIES_DIR` via command line, which fixes some subtle problems
7a4ae0c8
    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
0109072d
 *  Better deep fetch and refresh avoids redoing repositories (could be
    better though still)
f146fd2e
 *  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
 
7a4ae0c8
 
290ab3f7
 0.19
 ===
7a4ae0c8
 *  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
290ab3f7
    pick up changes in recursive repositories. And fetch additional repos as
    needed, so you don't need to clean dist.
7a4ae0c8
 *  Produce more helpful output if cmake is missing.
 *  Experimental support for "mulle-bootstrap clone", which will clone and build
290ab3f7
    a remote repository.
7a4ae0c8
 *  Nicer markup for RELEASENOTES.md
290ab3f7
 
b11d86bc
 0.18
 ===
7a4ae0c8
 *  Refixed: Fix old favorite bug build_ignore became a directory bug) again ...
 *  Added refresh, which will be called before build and update automatically
b11d86bc
    to rebuild .bootstrap.auto.
 
700d4f51
 0.17
 ===
7a4ae0c8
 *  Fixed the broken inheritance. The "Always redo bootstrap.auto folder
700d4f51
    on fetch" fix in 0.15, was in the wrong position. So 0.15 and 0.16 are
    totally broken releases. Sorry.
 
e3c8618a
 0.16
 ===
7a4ae0c8
 *  Fixed misnamed exekutor.
 *  Fix old favorite bug build_ignore became a directory bug) again ...
e3c8618a
 
23cfa536
 0.15
 ===
7a4ae0c8
 *  `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
23cfa536
    to clean dist anymore after editing .bootstrap files.
7a4ae0c8
 *  Forgot to write-protect dependencies, when only partial builds were done.
23cfa536
 
1b26e970
 0.14
 ===
7a4ae0c8
 *  Fix various uglies.
 *  Make white terminals more happening with color choices.
 *  -v circumvents building into a logfile, which is sometimes more convenient.
1b26e970
 
3882a58c
 0.13
 ===
7a4ae0c8
 *  Fix colorization by using printf, instead of echo.
3882a58c
 
57730883
 0.12
 ===
7a4ae0c8
 *  Run post-install.sh also on embedded repositories. Sometimes useful, when
57730883
    you need ./configure to produce some headers.
7a4ae0c8
 *  Add parameters to "Executing script" line.
 *  Add "checkout" git flags, to fine tune the clone. But use --recursive
57730883
    per default.
 
 0.11
 ===
7a4ae0c8
 *  Fixes another stale headers problem. Project is creeping towards a 1.0.
57730883
 
fe01cf28
 0.10
19a91594
 ===
7a4ae0c8
 *  Fetch settings can be platform specific by using the `uname` as a file
23cfa536
    extension. e.g. repositories.Darwin. Other settings may follow, if the need
    arises. So far it hasn't.
6d5e9672
 *  Added `embedded_repositories`` for those special moments, where you don't want
7fdfcd11
    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
fe01cf28
    your project, just clone them.
7a4ae0c8
 *  Because I needed ancient and dying svn for MulleScion,  you can now remap
7fdfcd11
    from the default git to svn, by creating a file <reponame>.scm. That contains
7a4ae0c8
   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
6d782b8f
    unnecessarily more complicated.
 
19a91594
 0.9.8
 ===
7a4ae0c8
 *  Brings more Linux fixes
19a91594
 
d5a9eaee
 0.9.7
 ===
7a4ae0c8
 *  Allow mulle-bootstrap version to work everywhere.
d5a9eaee
 
2d8f68ea
 0.9.6
 ===
7a4ae0c8
 *  Figured out that some terminal windows have a white background (duh).
 *  Fixed shifts for Ubuntu's hated dash.
 *  Fixed some other Linux problems.
2d8f68ea
 
16b407c7
 0.9.5
b6db9b87
 ===
7a4ae0c8
 *  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.
16b407c7
 
6d5e9672
 *  Don't trace environment reads of `MULLE_BOOTSTRAP_ANSWER` and
 *  `MULLE_BOOTSTRAP_VERBOSE`.
7a4ae0c8
 *  Fix xcodebuild log filename generation
 *  Fix dry run some more.
 *  Less output during dispensal, when not using -v.
 *  Reduce usage output to 25 lines.
eaa65bf9
 
93bd7113
 0.9.1
 ===
7a4ae0c8
 *  Fix cmake and configure build.
93bd7113
 
422c21da
 0.9
 ===
7a4ae0c8
 *  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
422c21da
    sharing  dependencies with many subprojects.
7a4ae0c8
 *  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.
422c21da
 
 
 0.8.1
 ===
7a4ae0c8
 *  And the fix, just minutes after the "release". warn scripts didn't
422c21da
    find a function, and now I have cleaned this up properly, I think.
7a4ae0c8
 *  No more duplicate functions.
422c21da
 
a7b563e1
 0.8
 ===
7a4ae0c8
 *  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
a7b563e1
    the headers.
7a4ae0c8
 *  Automatically append boring directories to .gitignore after fetch.
 *  Inverted script default answer, because it pains me. Also it's not
a7b563e1
    useful when using -a to just "breeze" through.
7a4ae0c8
 *  Redirect build logs to "build/.repos/.logs", because especially
a7b563e1
    xcodebuild is just too verbose.
 
49b677c4
 0.7.1
 ===
7a4ae0c8
 *  Fixed an internal error, when using mulle-bootstrap update.
49b677c4
 
18907b05
 0.7
 ===
7a4ae0c8
 *  Added version command
18907b05
 
d7f96955
 0.6
 ===
7a4ae0c8
 *  Improve scripts handling and add a some new phases to
2d8f68ea
    the proceedings. Actually the whole script stuff didn't work before...
7a4ae0c8
 *  Scripts in general aren't documented yet, because it's still very much
d7f96955
    in fluctuation.
 
7a4ae0c8
 *  More output during setting inheritance. Fix proper inheritance of
 *  build_order and build_ignore.
d7f96955
 
7a4ae0c8
 *  Lots of en-passant bug fixes. Should be in general better than 0.5
d7f96955
 
7a4ae0c8
 *  Add -V option.
1e8d5d86
 
7a4ae0c8
 *  Added new did-install script phase. Depending on actual usage, I'll
1e8d5d86
    probably ditch some of the other phases again. This is all in flux.