Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/FreeCAD/homebrew-freecad

Homebrew recipes for FreeCAD
https://github.com/FreeCAD/homebrew-freecad

formula freecad homebrew homebrew-freecad homebrew-recipes macos macosx

Last synced: about 1 month ago
JSON representation

Homebrew recipes for FreeCAD

Awesome Lists containing this project

README

        

homebrew-freecad

homebrew logo

freecad logo


**FreeCAD** is a Free (as in Libre) multiplatform Open Source Parametric 3D CAD software.

**Homebrew** is a MacOSX Package Manager.

## Overview

The primary and frequent use case for this formula is for developers to conveniently install all the required FreeCAD dependencies to support FreeCAD development.

#### NOTE: If you are looking for the current macOS builds, please download the latest build from [GitHub](https://github.com/FreeCAD/FreeCAD/releases)

> Alternatively there are versions of FreeCAD & friends built using conda, there are a weekly releases published [**here**](https://github.com/FreeCAD/FreeCAD-Bundle/releases/tag/weekly-builds)

## Prerequisites

Install [homebrew](http://brew.sh)

## Installing FreeCAD dependencies (FreeCAD developers)

Developers may find it convenient to simply install the pre-requisites prior to cloning the FreeCAD repo for development builds.

```sh
brew tap freecad/freecad
brew install --only-dependencies freecad/freecad/freecad
```

#### Install flags

By default, freecad is installed as a binary to be launched from a CLI. ~~To also create a .app bundle use `--with-macos-app`.~~

## Building The Current Release Version of FreeCAD

> due to multiple freecad formula being setup from various taps, ie. **homebrew-cask** it's better to explicitly reference the freecad formula from this tap

```sh
brew tap freecad/freecad
brew install freecad/freecad/freecad
```

## Building HEAD Version of FreeCAD

```sh
brew install --HEAD freecad/freecad/freecad
```

## Continuous Integration Support

the formula in this tap are tested with homebrew test-bot using the workflow files defined within this repo.

~~The Travis CI system uses this freecad formula to build and test FreeCAD every time~~
~~a change is made to the FreeCAD/FreeCAD repo meaning that the formula is very well~~
~~tested itself.~~

## Contributing ๐Ÿค

Submitting PR's for this repo can go along way, that's not to say it's an easy task.
Following the below guidelines will help all that use this repo.

1. when submitting a PR, _rebase_ all commits into a single commit, **please & thank you** ๐Ÿ™
> homebrew test-bot currently will fail โŒ to publish a bottle
> if a PR contains more than one commit. A quick solution is to rebase, and squash
> all unneeded commits thus making the brew test-bot happy. [learn more][lnk3]
2. when submitting a PR that is updating or adding a new formula file, only add or
change one formula file in a PR.
> brew test-bot will fail if a PR contains two distinct formula files being edited
> and will be unable to publish the bottles for the edited formula.
- looking at how upstream homebrew-core manages PRs, each PR only edits one formula
file at a time.

Not all PR's require running through the CI, one example would be updating this README file.
If a PR does not update a formula file within this repo add the following `[no ci]` to the
commit message allowing the PR to be merged into the repo without running CI checks.

## Maintenance ๐Ÿงน

For maintainers of this repo, [I][lnk1] have setup this repo using self-hosted runners
for macOS _Mojave_, _Catalina_, and _Big Sur_ (Intel only) versions of macOS.
These self-hosted runners all run on a late macbook pro 2013 model that runs archlinux
allowing the virtual machines to be started and stopped thanks to qemu+kvm.

Self-hosted runners will [**disappear**][lnk2] from a repo on GitHub if they are not used
within **30 days**. However, a new self-hosted runner can be readded
to this repo using github's web based UI. After the runner is added and labeled
properly than the runner can pick up the job, and the status of the job can be viewed
from the _actions_ tab at the top of github web ui.

> [I've][lnk1] had to readd macos vm's several times due to inactivity, but isn't an issue as
> the self-hosted runner picks up where it left off. More information about this nuance
> can be provided upon request.

Recently a [CI action][lnk5] has been created to check the online status of the self-hosted runners. An
email will be sent to the maintainer designated in the github action.

A great resource for learning how other Operating Systems (GNU+Linux distros) assemble the dependencies for freecad
can be seen at [repology.org][lnk6]

[lnk1]:
[lnk2]:
[lnk3]:
[lnk5]:
[lnk6]:

### Maintenance / creating patch files for formula

Creating patch files for formula contained within this repo can be a difficult task, so the below steps aim to aid
in the creation of patch files.

#### .. / .. / example

When freecad 0.20.1 was released it did not have support for python 3.11 however a [consolidated commit][lnk7] has been made
that should allow the 0.20.1 release to build and run against python 3.11

> the below video demonstrates how I created a patch file for python 3.11 support

[lnk7]:

## TODOs

- [ ] presently i can not get the 0.21.2 freecad release to build using the upstream homebrew-core opencascade at v7.8.x
- [ ] publish bottles for older versions of macos ie. ~~mojave~~ & high sierra, there is an active discussion about the topic [here][lnk4]

[lnk4]:

## Open Issues

See [GitHub Issues][ghi]

[ghi]:

## Recognition

[Sam Nelson](https://github.com/sanelson) originally developed the freecad homebrew recipe repo circa April 2014
and [transferred it to the FreeCAD organization](https://github.com/FreeCAD/homebrew-freecad/issues/20) in October 2016.