cartr / homebrew-qt4

Homebrew tap for Qt4 and dependent formulae on Sierra
BSD 2-Clause "Simplified" License
105 stars 42 forks source link

Provide bottles for older OS versions #8

Closed cartr closed 7 years ago

cartr commented 7 years ago

Quick note for Travis CI users: Until this issue is fixed, you may be able to temporarily get your Travis builds working by switching to macOS Sierra with osx_image: xcode8.2. See their docs for more details about that.


Now that Homebrew has completely pulled Qt4 support, some users want to install this tap on older OS versions. In particular, Travis CI still uses El Capitan by default – see #7. It would be nice to have bottles for these platforms, but the only Mac I have runs Sierra, and it's impractical to dual-boot an older version.

The best solution would be to find a CI service that allows El Capitan builds and has a long timeout, as Qt4 can take over an hour to build.

mtola commented 7 years ago

First, thank you for providing qt4 !

Try with that : travis_wait 90 brew install cartr/qt4/qt (here for 90 minutes)

bblacey commented 7 years ago

There is actually a quick and easy way to provide bottles for older macOS versions now as long as the cartr QT4 version remains 4.8.7 (most likely because 4.8.7 is effectively EoL) because all of the homebrew-generated bottles are still available on bintray meaning that you can simply download them from the homebrew bintray account for each port, upload them to your cartr bintray account, and add the respective hashes to each formula. For example, I recently exhumed the qt4 formula from boneyard for the FreeCAD project and am currently using the homebrew bottles directly in each formula. The same holds true for shiboken, pyside-tools, and pyside.

If you copy the homebrew bottles over and add them to your qt4 port formulas (you can use the hashes from the FreeCAD formulas referenced above), it would obviate the need for the aforementioned exhumed formulae on FreeCAD which I would appreciate greatly.

Homebrew QT bottles Homebrew Pyside bottles Homebrew Pyside-tools bottles Homebrew Shiboken bottles

You can optionally download the bottles with curl if you find it more convenient by appending the bottle name to the url 'https://homebrew.bintray.com/bottles/'. For example, you can download the qt-4.8.7 bottle for El Capitan using curl -L -O "https://homebrew.bintray.com/bottles/qt-4.8.7_2.el_capitan.bottle.tar.gz"

I will be happy to test the Yosemite bottles for FreeCAD because we use Yosemite on Travis-CI for continuous integration. In fact, let me know if you want me to create a PR that modifies the formulae above with the requisite hashes (I can also add the download urls for bottle migration from homebrew -> cartr to this issue as a convenience).

Thank you for providing continued qt4 support!

cartr commented 7 years ago

@bblacey I would appreciate your help and testing in getting bottles working on older macOS versions. Unfortunately, I'm not sure it would be possible to simply copy core's bottles – we're currently on 4.8.7_3 because of a patch we added to fix a QSetting issue, and the Homebrew bottles are built for version 4.8.7_2. I'm not sure if changing the version is as easy as just renaming the tar file.

That being said, I'm uploading the bottles from Homebrew to my BinTray repo now. In a few minutes, they should be accessible under both version 4.8.7_2 and version 4.8.7_3. If you could create a Pull Request that uses these bottles and successfully installs on older macOS versions, I would really appreciate it.

bblacey commented 7 years ago

Hi Cartr, will do on the PR and testing. Currently I can easily test on Yosemite (10.10) and assuming that works, then we can be fairly certain the mechanism will work on other old macOS versions. Would you mind uploading bottles for QT, Pyside, Pyside-tools and Shiboken first? I will be happy review the other formulae in your qt4 repo and add them to the pull request if the homebrew bottles exist and this proof-of-concept works. I will start on the PR so let me know when you have uploaded the bottles.

bblacey commented 7 years ago

As suspected, we can't re-use bottles if the formula has changed and in fact, for the main qt formula, we should provide proper bottles here that include the QSetting patch. I will create Yosemite and El Capitan bottles for QT 4.8.7_3 from this repo so it includes the patch and upload them to GitHub so you can copy them to your bintray.

That said, this only affects qt.rb because I know from testing on FreeCAD, that we can re-use bottles for other formula that haven't changed such as pyside and shiboken. If you upload one or more bottles of your choice to your bintray account, I will test those under the pr and ultimately include them in the PR.

bblacey commented 7 years ago

Yosemite bottle:

$ brew bottle freecad/qt4/qt
==> Determining freecad/qt4/qt bottle rebuild...
==> Bottling qt-4.8.7_3.yosemite.bottle.tar.gz...
==> Detecting if qt-4.8.7_3.yosemite.bottle.tar.gz is relocatable...
./qt-4.8.7_3.yosemite.bottle.tar.gz
  bottle do
    sha256 "63e5b332675a16fa7b13623dfa577cb49579d56b9fe43b2f8f04b0747a4ae80a" => :yosemite
  end

El Capitan bottle:

$ brew bottle freecad/qt4/qt
==> Determining freecad/qt4/qt bottle rebuild...
==> Bottling qt-4.8.7_3.el_capitan.bottle.tar.gz...
==> Detecting if qt-4.8.7_3.el_capitan.bottle.tar.gz is relocatable...
./qt-4.8.7_3.el_capitan.bottle.tar.gz
  bottle do
    sha256 "933b11d7efbaa066f5ab75ec56e5319e1422dec940d5035b4242e9766d0555f1" => :el_capitan
  end

Mavericks is no longer supported by Homebrew so I did not create a Mavericks bottle. Current macOS (Sierra) and two prior macOS releases is probably sufficient for broader community support.

You can download the QT4 bottles from https://github.com/FreeCAD/homebrew-qt4/releases/tag/bottling and upload to bintray.com. Once you upload the qt bottles, I will test/verifiy the modified QT formula on both Yosemite and El Capitan. I suggest that you remove the previous mavericks, yosemite and el_capitan '_2' and '_3' bottles from bintray.com before uploading the new bottles.

cartr commented 7 years ago

Thanks for taking the time to build the binary bottle for Qt! I've uploaded it to Bintray, along with bottles for pyside, pyside-tools, and shiboken as you requested.

bblacey commented 7 years ago

Thanks! First test on Yosemite looks good. Forging forward with the other formulae in the PR.

$ brew install freecad/qt4/qt
==> Installing qt from freecad/qt4
==> Downloading https://dl.bintray.com/cartr/bottle-qt4/qt-4.8.7_3.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring qt-4.8.7_3.yosemite.bottle.tar.gz
==> Caveats
We agreed to the Qt opensource license for you.
If this is unacceptable you should uninstall.

Qt Designer no longer picks up changes to the QT_PLUGIN_PATH environment
variable as it was tweaked to search for plug-ins provided by formulae in
  /usr/local/lib/qt4/plugins

Phonon is not supported on macOS Sierra or with Xcode 8.

.app bundles were installed.
Run `brew linkapps qt` to symlink these to /Applications.
==> Summary