Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build: restructure build process on Mac to make it more flexible and allow CI support #1821

Merged
merged 11 commits into from Aug 22, 2017

Conversation

ChristianBeer
Copy link
Member

This allows to build BOINC on a Mac CI system as well as on a developers computer. See script headers for documentation.
The short version is:

  • run ./3rdParty/buildMacDependencies.sh to compile all dependency libraries into 3rdParty/buildCache/mac (can be configured with --cache_dir)
  • run ./mac_build/buildMacBOINC-CI.sh to compile all BOINC components using the build cache (--cache_dir can be used here too)

There are options for building debug versions but they are not very well tested. Currently you can't selectively build single targets using this.

We currently build every BOINC component in one go on Mac. This is kind of intended as the build capacity for OSX on Travis CI is capped at 128 builds at the same time right now and extra builds will only add to the already full queue.

This allows to build BOINC on a Mac CI system as well as on a developers computer. See script headers for documentation.
The short version is:
* run ./3rdParty/buildMacDependencies.sh to compile all dependency libraries into 3rdParty/buildCache/mac (can be configured with --cache_dir)
* run ./mac_build/buildMacBOINC-CI.sh to compile all BOINC components using the build cache (--cache_dir can be used here too)

There are options for building debug versions but they are not very well tested. Currently you can't selectively build single targets using this.
We currently build every BOINC component in one go on Mac. This is kind of intended as the build capacity for OSX on Travis CI is capped at 128 builds at the same time right now and extra builds will only add to the already full queue.
Conflicts:
	.travis.yml (new mingw build added)
Fixes some copy and paste bugs reported by Charlie Fenton.
Added ScreenSaver target aka screensaver coordinator which was missing from the CI build script.
Also supress error message if xcpretty is not available.

reported by Charlie Fenton
@ChristianBeer
Copy link
Member Author

The last remaining work (besides merging master back in and fixing the conflict) is to add a -q|--quiet or -v|--verbose option to the build scripts. This would replace the make 1>/dev/null and make clean 1>/dev/nullredirections in the several build scripts. We don't need the stdout from the makefiles in the automated build since the log size is limited there but a developer may want to see this locally.

Retained Travis changes for Linux that happened in the meantime.

Conflicts:
	.travis.yml
By default stdout is printed on screen. For CI builds this is cluttering the log.

Note: /dev/stdout is not POSIX but is available on MacOS and popular Linux distributions.
@CharlieFenton
Copy link
Contributor

CharlieFenton commented Aug 10, 2017 via email

@ChristianBeer
Copy link
Member Author

@CharlieFenton No there is a general shift after the end of the case block that makes sure the while loop terminates. The extra shift within the case $key in blocks is only needed if the argument is followed by a path (like --prefix is ) because there are two shifts required to get to the next argument.

@CharlieFenton
Copy link
Contributor

CharlieFenton commented Aug 15, 2017 via email

@ChristianBeer ChristianBeer merged commit 5ee9dd8 into master Aug 22, 2017
@ChristianBeer ChristianBeer deleted the travis_osx_build_clean branch January 17, 2018 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants