I recently made my first homebrew contribution. homebrew is a package manager for osx much like yum/apt-get and the like you know from linux systems. Since this may not be the last time I did this or have to do this I will elaborate what the workflow was. This may help me remember and others get a grip how to do that the first time.
I am using the freeimage library in lot of my projects and since it turned out to be pretty hairy to build this lib on osx by hand I tried to find it in homebrew.
Indeed homebrew has a formular for it: freeimage on homebrew
Updating a formular
Unfortunately the freeimage formular was a bit dated and just supported version 3.16.0.
Since I needed the most recent version I opened a ticket for version 3.17.0 on github: issue #41609.
@bfontaine suggested to do the update myself ;)
After looking into the formular of this version I tried to apply the patches to the src-download of freeimage by hand and found it working.
So the update was pretty streight forward using the instructions for getting a pull request merged for homebrew.
In the case of the freeimage update there were essentially four changes:
- update the download url
- update the version number
- update the file hash
- update the patches
Updating the file hash
Here it got a little tricky, since the sourceforge download info just provided md5 or sha1 hashes. A little googling later I had a working shell line to create the file hash in sha256:
Update the patching
This was the most work since the old patch did not work anymore because the makefiles of freeimage changed from 3.16.0 to 3.17.0. So I created a copy of the targeted makefiles and applied the patches by hand and created the diff using git:
TL;DR - The pull request
So the final change that got merged into homebrew to update the freeimage formular: pull request #41619