View Issue Details

IDProjectCategoryView StatusLast Update
0002414FreeCADMerge requestpublic2016-05-13 03:57
Reporterblacey Assigned Toblacey  
Status closedResolutionfixed 
PlatformAppleOSMac OS XOS Version10.11.x
Product Version0.15 
Fixed in Version0.16 
Summary0002414: Implement continuous integration for Mac OS X builds
DescriptionCurrently the Mac OS X builds lag the automated Linux and Windows builds. The scope of this change request is to implement continuous integration builds for Mac OS X to provide parity to the community.
Additional InformationThe continuous integration builds will be hosted on Travis-CI and be unified with the current Linux builds.
TagsNo tags attached.
FreeCAD Information


related to 0002421 closedblacey Upgrade to matplotlib 1.5.0 or greater 



2016-02-02 18:15

developer   ~0006795

Status update:

1) On a forked repo, we are successfully compiling, packaging, testing and deploying OS X builds to GitHub
2) This includes the following enhancements:
     -Patch to to add proper .pth support (thanks Peter)
     -Support for 3DConnexion Mice (thanks Ian)
     -Convenience script to generate a cross-platform standardized deployment artifact name from Version.h
     -Packaging the OS build as a broadly accepted dmg disk image

With the aforementioned complete, I'm now working on a unified travis configuration for Linux and OS X so we can integrate the initial capability into master.

Longer term the CI system should compile, package, install the package and verify the package installation with unit and end-to-end tests for each platform and then be used to verify each pull-request before merging any pull-request into master to avoid breakages on master. Unfortunately, going the distance will protract closure of this issue and requires broader community consensus on a different branch/pull/merge/release process. For example, FreeCAD could benefit from Vincent Driessen's generally accepted Git Branching model or some variant thereof - For now, I am not going to tackle changing the Linux or Windows builds to include packaging, installation and verification against installation because what exists is a good enough approximation.

I appreciate everyone's support to this point and I should commit to a hard date for wrapping this up but I am cycle-constrained due to other commitments... Bear with me, we will get this done.



2016-03-08 05:10

developer   ~0006896

Phase I (OS X packaging improvements) completed and submitted in pull request - The actual pull request for review is and the forum pull request post is


2016-03-10 17:34

developer   ~0006901

Found an additional bump in the path - FreeCAD --run-test 0 did not exit with a non-zero exit status. Submitted pull-request that @wwmayer has integrated into master. For additional context/color - see

@wwmayer, I'm re-opening this issue because the entire scope has not yet been fully realized. Thanks for timely merge of the aforementioned pull request - quick merges really help to reduce iteration cycle times.

I will now continue work on port cacheing but have out of town guests arriving today through the weekend so that will percolate slowly...


2016-03-26 05:34

developer   ~0006934

Today we met another milestone towards achieving the full scope of this issue by deploying the ports cache repo that reduces the Travis-CI Mac OS X build time by at least 20 minutes paving the way for combined Linux and OS X builds on FreeCAD master, every pull request and for developer's forked repos (in the spirit of the fail fast, fix early mantra). The unified .travis.yml for both Linux and OS X is nearly complete and currently in test on a forked repo. I plan to switch the OS X-only continuous integration builds on the forked repo over to the unified Travis config Saturday morning for additional soak testing.

Everyone on this Mantis issue is encouraged to review both the ports cache and the unified travis config file and provide feedback - NOTE, there are a couple of known issues such as encapsulating the ports dependencies in a home-brew formula to drive the cache maintenance even lower.

I plan to create a forum post to solicit broader feedback so you can either chime in here or there - may be better in the forum to intellectually stimulate others to provide constructive feedback.

Finally, the next steps are pretty straight-forward:

1) Wrap up development and test of the unified travis config file
2) Create a pull-request to merge the unified travis config file into FreeCAD/FreeCAD master
3) Enable Travis-CI builds on Travis CI (both master and pull-requests)

@Ian, feel free to open a pull request on the cache for Netgen/nglib when it is ready or ping me to do so (thanks for closing this OS X gap).

@sgrogan, thanks again for tirelessly moving the OS X builds from the forked repo to the FreeCAD repo - you rock! We can completely automate the OS X side of the equation and I am interested in knowing more about the Windows side of the process to see if we can unify/simplify for you even further.


2016-04-07 17:38

developer   ~0006955

Ok, our works is done here.

1) Completed key OS X build pre-requisites (packaging, netgen/nglib masher, 3Dconnexion support, exception propagation for cross-platform test failure detection, python module path searching, etc.)
2) Developed and deployed an OS X ports cache system for FreeCAD
3) Developed a unified .travis.yml that now includes Linux and OS X builds
4) Extended Travis config to automatically deploy OS X builds to the FreeCAD GitHub repo
5) Enabled Travis builds for all pull-requests to verify contributions before merge
6) Enabled Travis builds for all push-requests to FreeCAD master to auto-build Linux and OS X and deploy the OS X releases.

Thanks to everyone who helped make FreeCAD for OS X a first class citizen ;)


2016-04-07 17:41

developer   ~0006956

See last update posted for scope.

Pull request was the last mile.

Verified builds over past 24 hours -

Related Changesets

FreeCAD: master ed61d655

2016-03-10 11:18:21


Details Diff
Merge pull request 0000114 from bblacey/set-exitcode-on-unittest-failure

Exit with non-zero status when unit tests fail.
Affected Issues
mod - src/App/ Diff File
mod - src/Mod/Test/ Diff File

Issue History

Date Modified Username Field Change
2016-01-20 23:15 blacey New Issue
2016-01-21 03:33 blacey Assigned To => blacey
2016-01-21 03:33 blacey Status new => assigned
2016-01-27 04:01 blacey Relationship added related to 0002421
2016-01-27 04:56 blacey Status assigned => acknowledged
2016-02-02 18:15 blacey Note Added: 0006795
2016-03-08 05:10 blacey Note Added: 0006896
2016-03-10 10:20 wmayer Changeset attached => FreeCAD Master master ed61d655
2016-03-10 10:20 wmayer Status acknowledged => closed
2016-03-10 10:20 wmayer Resolution open => fixed
2016-03-10 10:20 wmayer Fixed in Version => 0.16
2016-03-10 17:34 blacey Note Added: 0006901
2016-03-10 17:34 blacey Status closed => feedback
2016-03-10 17:34 blacey Resolution fixed => reopened
2016-03-26 05:34 blacey Note Added: 0006934
2016-03-26 05:34 blacey Status feedback => assigned
2016-04-07 17:38 blacey Note Added: 0006955
2016-04-07 17:41 blacey Note Added: 0006956
2016-04-07 17:41 blacey Status assigned => resolved
2016-04-07 17:41 blacey Resolution reopened => fixed
2016-05-13 03:57 yorik Status resolved => closed