{"id":13994373,"url":"https://github.com/osrf/homebrew-simulation","last_synced_at":"2025-07-07T17:03:30.760Z","repository":{"id":37502607,"uuid":"11771697","full_name":"osrf/homebrew-simulation","owner":"osrf","description":"Homebrew tap for osrf simulation software","archived":false,"fork":false,"pushed_at":"2024-09-15T20:57:51.000Z","size":3727,"stargazers_count":56,"open_issues_count":11,"forks_count":74,"subscribers_count":26,"default_branch":"master","last_synced_at":"2024-09-15T21:57:43.421Z","etag":null,"topics":["gazebo","hacktoberfest","homebrew","ignition-gazebo","ignition-robotics","macos","robotics","robotics-simulation"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osrf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-07-30T18:04:06.000Z","updated_at":"2024-09-15T20:57:53.000Z","dependencies_parsed_at":"2024-01-18T04:54:31.408Z","dependency_job_id":"b3e37739-5a28-42b1-9f66-8d6367ffdb7b","html_url":"https://github.com/osrf/homebrew-simulation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fhomebrew-simulation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fhomebrew-simulation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fhomebrew-simulation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fhomebrew-simulation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osrf","download_url":"https://codeload.github.com/osrf/homebrew-simulation/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227166698,"owners_count":17740964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gazebo","hacktoberfest","homebrew","ignition-gazebo","ignition-robotics","macos","robotics","robotics-simulation"],"created_at":"2024-08-09T14:02:50.293Z","updated_at":"2025-07-07T17:03:30.743Z","avatar_url":"https://github.com/osrf.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"Build | Status\n-- | --\nbrew test-bot GitHub action | ![brew test-bot](https://github.com/osrf/homebrew-simulation/workflows/brew%20test-bot/badge.svg?branch=master\u0026event=push)\n\nhomebrew-simulation\n===================\n\nHomebrew tap for osrf simulation software\n\nTo use:\n\n    brew tap osrf/simulation\n    brew install gz-harmonic\n\n## Bottle status\n\nStatus        | Fortress | Harmonic | Ionic | Jetty\n------------- | -------- | -------- | ----- | -------\n[gz-cmake][cmake-repo]           | [![Build Status][cmake-fortress-badge]][cmake-fortress] | [![Build Status][cmake-harmonic-badge]][cmake-harmonic] | [![Build Status][cmake-ionic-badge]][cmake-ionic] | [![Build Status][cmake-jetty-badge]][cmake-jetty] | \n[gz-common][common-repo]         | [![Build Status][common-fortress-badge]][common-fortress] | [![Build Status][common-harmonic-badge]][common-harmonic] | [![Build Status][common-ionic-badge]][common-ionic] | [![Build Status][common-jetty-badge]][common-jetty] | \n[gz-fuel-tools][fuel_tools-repo] | [![Build Status][fuel_tools-fortress-badge]][fuel_tools-fortress] | [![Build Status][fuel_tools-harmonic-badge]][fuel_tools-harmonic] | [![Build Status][fuel_tools-ionic-badge]][fuel_tools-ionic] | [![Build Status][fuel_tools-jetty-badge]][fuel_tools-jetty] | \n[gz-gui][gui-repo]               | [![Build Status][gui-fortress-badge]][gui-fortress] | [![Build Status][gui-harmonic-badge]][gui-harmonic] | [![Build Status][gui-ionic-badge]][gui-ionic] | [![Build Status][gui-jetty-badge]][gui-jetty] | \n[gz-launch][launch-repo]         | [![Build Status][launch-fortress-badge]][launch-fortress] | [![Build Status][launch-harmonic-badge]][launch-harmonic] | [![Build Status][launch-ionic-badge]][launch-ionic] | [![Build Status][launch-jetty-badge]][launch-jetty] | \n[gz-math][math-repo]             | [![Build Status][math-fortress-badge]][math-fortress] | [![Build Status][math-harmonic-badge]][math-harmonic] | [![Build Status][math-ionic-badge]][math-ionic] | [![Build Status][math-jetty-badge]][math-jetty] | \n[gz-msgs][msgs-repo]             | [![Build Status][msgs-fortress-badge]][msgs-fortress] | [![Build Status][msgs-harmonic-badge]][msgs-harmonic] | [![Build Status][msgs-ionic-badge]][msgs-ionic] | [![Build Status][msgs-jetty-badge]][msgs-jetty] | \n[gz-physics][physics-repo]       | [![Build Status][physics-fortress-badge]][physics-fortress] | [![Build Status][physics-harmonic-badge]][physics-harmonic] | [![Build Status][physics-ionic-badge]][physics-ionic] | [![Build Status][physics-jetty-badge]][physics-jetty] | \n[gz-plugin][plugin-repo]         | [![Build Status][plugin-fortress-badge]][plugin-fortress] | [![Build Status][plugin-harmonic-badge]][plugin-harmonic] | [![Build Status][plugin-ionic-badge]][plugin-ionic] | [![Build Status][plugin-jetty-badge]][plugin-jetty] | \n[gz-rendering][rendering-repo]   | [![Build Status][rendering-fortress-badge]][rendering-fortress] | [![Build Status][rendering-harmonic-badge]][rendering-harmonic] | [![Build Status][rendering-ionic-badge]][rendering-ionic] | [![Build Status][rendering-jetty-badge]][rendering-jetty] | \n[gz-sensors][sensors-repo]       | [![Build Status][sensors-fortress-badge]][sensors-fortress] | [![Build Status][sensors-harmonic-badge]][sensors-harmonic] | [![Build Status][sensors-ionic-badge]][sensors-ionic] | [![Build Status][sensors-jetty-badge]][sensors-jetty] | \n[gz-sim][sim-repo]               | [![Build Status][sim-fortress-badge]][sim-fortress] | [![Build Status][sim-harmonic-badge]][sim-harmonic] | [![Build Status][sim-ionic-badge]][sim-ionic] | [![Build Status][sim-jetty-badge]][sim-jetty] | \n[gz-tools][tools-repo]           | [![Build Status][tools-fortress-badge]][tools-fortress] | [![Build Status][tools-harmonic-badge]][tools-harmonic] | [![Build Status][tools-ionic-badge]][tools-ionic] | [![Build Status][tools-jetty-badge]][tools-jetty] | \n[gz-transport][transport-repo]   | [![Build Status][transport-fortress-badge]][transport-fortress] | [![Build Status][transport-harmonic-badge]][transport-harmonic] | [![Build Status][transport-ionic-badge]][transport-ionic] | [![Build Status][transport-jetty-badge]][transport-jetty] | \n[gz-utils][utils-repo]           | [![Build Status][utils-fortress-badge]][utils-fortress] | [![Build Status][utils-harmonic-badge]][utils-harmonic] | [![Build Status][utils-ionic-badge]][utils-ionic] | [![Build Status][utils-jetty-badge]][utils-jetty] | \n[sdformat][sdformat-repo]        | [![Build Status][sdformat-fortress-badge]][sdformat-fortress] | [![Build Status][sdformat-harmonic-badge]][sdformat-harmonic] | [![Build Status][sdformat-ionic-badge]][sdformat-ionic] | [![Build Status][sdformat-jetty-badge]][sdformat-jetty] | \ncollection                       | [![Build Status][collection-fortress-badge]][collection-fortress] | [![Build Status][collection-harmonic-badge]][collection-harmonic] | [![Build Status][collection-ionic-badge]][collection-ionic] | [![Build Status][collection-jetty-badge]][collection-jetty] | \n\n[cmake-repo]: https://github.com/gazebosim/gz-cmake\n[cmake-fortress]: https://build.osrfoundation.org/job/gz_cmake2-install_bottle-homebrew-amd64\n[cmake-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_cmake2-install_bottle-homebrew-amd64\n[cmake-harmonic]: https://build.osrfoundation.org/job/gz_cmake3-install_bottle-homebrew-amd64\n[cmake-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_cmake3-install_bottle-homebrew-amd64\n[cmake-ionic]: https://build.osrfoundation.org/job/gz_cmake4-install_bottle-homebrew-amd64\n[cmake-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_cmake4-install_bottle-homebrew-amd64\n[cmake-jetty]: https://build.osrfoundation.org/job/gz_cmake5-install_bottle-homebrew-amd64\n[cmake-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_cmake5-install_bottle-homebrew-amd64\n\n[common-repo]: https://github.com/gazebosim/gz-common\n[common-fortress]: https://build.osrfoundation.org/job/gz_common4-install_bottle-homebrew-amd64\n[common-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_common4-install_bottle-homebrew-amd64\n[common-harmonic]: https://build.osrfoundation.org/job/gz_common5-install_bottle-homebrew-amd64\n[common-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_common5-install_bottle-homebrew-amd64\n[common-ionic]: https://build.osrfoundation.org/job/gz_common6-install_bottle-homebrew-amd64\n[common-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_common6-install_bottle-homebrew-amd64\n[common-jetty]: https://build.osrfoundation.org/job/gz_common7-install_bottle-homebrew-amd64\n[common-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_common7-install_bottle-homebrew-amd64\n\n[fuel_tools-repo]: https://github.com/gazebosim/gz-fuel-tools\n[fuel_tools-fortress]: https://build.osrfoundation.org/job/gz_fuel_tools7-install_bottle-homebrew-amd64\n[fuel_tools-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_fuel_tools7-install_bottle-homebrew-amd64\n[fuel_tools-harmonic]: https://build.osrfoundation.org/job/gz_fuel_tools9-install_bottle-homebrew-amd64\n[fuel_tools-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_fuel_tools9-install_bottle-homebrew-amd64\n[fuel_tools-ionic]: https://build.osrfoundation.org/job/gz_fuel_tools10-install_bottle-homebrew-amd64\n[fuel_tools-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_fuel_tools10-install_bottle-homebrew-amd64\n[fuel_tools-jetty]: https://build.osrfoundation.org/job/gz_fuel_tools11-install_bottle-homebrew-amd64\n[fuel_tools-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_fuel_tools11-install_bottle-homebrew-amd64\n\n[gui-repo]: https://github.com/gazebosim/gz-gui\n[gui-fortress]: https://build.osrfoundation.org/job/gz_gui6-install_bottle-homebrew-amd64\n[gui-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_gui6-install_bottle-homebrew-amd64\n[gui-harmonic]: https://build.osrfoundation.org/job/gz_gui8-install_bottle-homebrew-amd64\n[gui-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_gui8-install_bottle-homebrew-amd64\n[gui-ionic]: https://build.osrfoundation.org/job/gz_gui9-install_bottle-homebrew-amd64\n[gui-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_gui9-install_bottle-homebrew-amd64\n[gui-jetty]: https://build.osrfoundation.org/job/gz_gui10-install_bottle-homebrew-amd64\n[gui-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_gui10-install_bottle-homebrew-amd64\n\n[launch-repo]: https://github.com/gazebosim/gz-launch\n[launch-fortress]: https://build.osrfoundation.org/job/gz_launch5-install_bottle-homebrew-amd64\n[launch-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_launch5-install_bottle-homebrew-amd64\n[launch-harmonic]: https://build.osrfoundation.org/job/gz_launch7-install_bottle-homebrew-amd64\n[launch-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_launch7-install_bottle-homebrew-amd64\n[launch-ionic]: https://build.osrfoundation.org/job/gz_launch8-install_bottle-homebrew-amd64\n[launch-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_launch8-install_bottle-homebrew-amd64\n[launch-jetty]: https://build.osrfoundation.org/job/gz_launch9-install_bottle-homebrew-amd64\n[launch-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_launch9-install_bottle-homebrew-amd64\n\n[math-repo]: https://github.com/gazebosim/gz-math\n[math-fortress]: https://build.osrfoundation.org/job/gz_math6-install_bottle-homebrew-amd64\n[math-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_math6-install_bottle-homebrew-amd64\n[math-harmonic]: https://build.osrfoundation.org/job/gz_math7-install_bottle-homebrew-amd64\n[math-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_math7-install_bottle-homebrew-amd64\n[math-ionic]: https://build.osrfoundation.org/job/gz_math8-install_bottle-homebrew-amd64\n[math-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_math8-install_bottle-homebrew-amd64\n[math-jetty]: https://build.osrfoundation.org/job/gz_math9-install_bottle-homebrew-amd64\n[math-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_math9-install_bottle-homebrew-amd64\n\n[msgs-repo]: https://github.com/gazebosim/gz-msgs\n[msgs-fortress]: https://build.osrfoundation.org/job/gz_msgs8-install_bottle-homebrew-amd64\n[msgs-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_msgs8-install_bottle-homebrew-amd64\n[msgs-harmonic]: https://build.osrfoundation.org/job/gz_msgs10-install_bottle-homebrew-amd64\n[msgs-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_msgs10-install_bottle-homebrew-amd64\n[msgs-ionic]: https://build.osrfoundation.org/job/gz_msgs11-install_bottle-homebrew-amd64\n[msgs-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_msgs11-install_bottle-homebrew-amd64\n[msgs-jetty]: https://build.osrfoundation.org/job/gz_msgs12-install_bottle-homebrew-amd64\n[msgs-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_msgs12-install_bottle-homebrew-amd64\n\n[physics-repo]: https://github.com/gazebosim/gz-physics\n[physics-fortress]: https://build.osrfoundation.org/job/gz_physics5-install_bottle-homebrew-amd64\n[physics-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_physics5-install_bottle-homebrew-amd64\n[physics-harmonic]: https://build.osrfoundation.org/job/gz_physics7-install_bottle-homebrew-amd64\n[physics-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_physics7-install_bottle-homebrew-amd64\n[physics-ionic]: https://build.osrfoundation.org/job/gz_physics8-install_bottle-homebrew-amd64\n[physics-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_physics8-install_bottle-homebrew-amd64\n[physics-jetty]: https://build.osrfoundation.org/job/gz_physics9-install_bottle-homebrew-amd64\n[physics-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_physics9-install_bottle-homebrew-amd64\n\n[plugin-repo]: https://github.com/gazebosim/gz-plugin\n[plugin-fortress]: https://build.osrfoundation.org/job/gz_plugin1-install_bottle-homebrew-amd64\n[plugin-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_plugin1-install_bottle-homebrew-amd64\n[plugin-harmonic]: https://build.osrfoundation.org/job/gz_plugin2-install_bottle-homebrew-amd64\n[plugin-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_plugin2-install_bottle-homebrew-amd64\n[plugin-ionic]: https://build.osrfoundation.org/job/gz_plugin3-install_bottle-homebrew-amd64\n[plugin-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_plugin3-install_bottle-homebrew-amd64\n[plugin-jetty]: https://build.osrfoundation.org/job/gz_plugin4-install_bottle-homebrew-amd64\n[plugin-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_plugin4-install_bottle-homebrew-amd64\n\n[rendering-repo]: https://github.com/gazebosim/gz-rendering\n[rendering-fortress]: https://build.osrfoundation.org/job/gz_rendering6-install_bottle-homebrew-amd64\n[rendering-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_rendering6-install_bottle-homebrew-amd64\n[rendering-harmonic]: https://build.osrfoundation.org/job/gz_rendering8-install_bottle-homebrew-amd64\n[rendering-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_rendering8-install_bottle-homebrew-amd64\n[rendering-ionic]: https://build.osrfoundation.org/job/gz_rendering9-install_bottle-homebrew-amd64\n[rendering-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_rendering9-install_bottle-homebrew-amd64\n[rendering-jetty]: https://build.osrfoundation.org/job/gz_rendering10-install_bottle-homebrew-amd64\n[rendering-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_rendering10-install_bottle-homebrew-amd64\n\n[sensors-repo]: https://github.com/gazebosim/gz-sensors\n[sensors-fortress]: https://build.osrfoundation.org/job/gz_sensors6-install_bottle-homebrew-amd64\n[sensors-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sensors6-install_bottle-homebrew-amd64\n[sensors-harmonic]: https://build.osrfoundation.org/job/gz_sensors8-install_bottle-homebrew-amd64\n[sensors-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sensors8-install_bottle-homebrew-amd64\n[sensors-ionic]: https://build.osrfoundation.org/job/gz_sensors9-install_bottle-homebrew-amd64\n[sensors-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sensors9-install_bottle-homebrew-amd64\n[sensors-jetty]: https://build.osrfoundation.org/job/gz_sensors10-install_bottle-homebrew-amd64\n[sensors-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sensors10-install_bottle-homebrew-amd64\n\n[sim-repo]: https://github.com/gazebosim/gz-sim\n[sim-fortress]: https://build.osrfoundation.org/job/gz_sim6-install_bottle-homebrew-amd64\n[sim-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sim6-install_bottle-homebrew-amd64\n[sim-harmonic]: https://build.osrfoundation.org/job/gz_sim8-install_bottle-homebrew-amd64\n[sim-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sim8-install_bottle-homebrew-amd64\n[sim-ionic]: https://build.osrfoundation.org/job/gz_sim9-install_bottle-homebrew-amd64\n[sim-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sim9-install_bottle-homebrew-amd64\n[sim-jetty]: https://build.osrfoundation.org/job/gz_sim10-install_bottle-homebrew-amd64\n[sim-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_sim10-install_bottle-homebrew-amd64\n\n[tools-repo]: https://github.com/gazebosim/gz-tools\n[tools-fortress]: https://build.osrfoundation.org/job/gz_tools1-install_bottle-homebrew-amd64\n[tools-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_tools1-install_bottle-homebrew-amd64\n[tools-harmonic]: https://build.osrfoundation.org/job/gz_tools2-install_bottle-homebrew-amd64\n[tools-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_tools2-install_bottle-homebrew-amd64\n[tools-ionic]: https://build.osrfoundation.org/job/gz_tools2-install_bottle-homebrew-amd64\n[tools-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_tools2-install_bottle-homebrew-amd64\n[tools-jetty]: https://build.osrfoundation.org/job/gz_tools2-install_bottle-homebrew-amd64\n[tools-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_tools2-install_bottle-homebrew-amd64\n\n[transport-repo]: https://github.com/gazebosim/gz-transport\n[transport-fortress]: https://build.osrfoundation.org/job/gz_transport11-install_bottle-homebrew-amd64\n[transport-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_transport11-install_bottle-homebrew-amd64\n[transport-harmonic]: https://build.osrfoundation.org/job/gz_transport13-install_bottle-homebrew-amd64\n[transport-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_transport13-install_bottle-homebrew-amd64\n[transport-ionic]: https://build.osrfoundation.org/job/gz_transport14-install_bottle-homebrew-amd64\n[transport-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_transport14-install_bottle-homebrew-amd64\n[transport-jetty]: https://build.osrfoundation.org/job/gz_transport15-install_bottle-homebrew-amd64\n[transport-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_transport15-install_bottle-homebrew-amd64\n\n[utils-repo]: https://github.com/gazebosim/gz-utils\n[utils-fortress]: https://build.osrfoundation.org/job/gz_utils1-install_bottle-homebrew-amd64\n[utils-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_utils1-install_bottle-homebrew-amd64\n[utils-harmonic]: https://build.osrfoundation.org/job/gz_utils2-install_bottle-homebrew-amd64\n[utils-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_utils2-install_bottle-homebrew-amd64\n[utils-ionic]: https://build.osrfoundation.org/job/gz_utils3-install_bottle-homebrew-amd64\n[utils-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_utils3-install_bottle-homebrew-amd64\n[utils-jetty]: https://build.osrfoundation.org/job/gz_utils4-install_bottle-homebrew-amd64\n[utils-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_utils4-install_bottle-homebrew-amd64\n\n[sdformat-repo]: https://github.com/gazebosim/gz-sdformat\n[sdformat-fortress]: https://build.osrfoundation.org/job/sdformat12-install_bottle-homebrew-amd64\n[sdformat-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=sdformat12-install_bottle-homebrew-amd64\n[sdformat-harmonic]: https://build.osrfoundation.org/job/sdformat14-install_bottle-homebrew-amd64\n[sdformat-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=sdformat14-install_bottle-homebrew-amd64\n[sdformat-ionic]: https://build.osrfoundation.org/job/sdformat15-install_bottle-homebrew-amd64\n[sdformat-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=sdformat15-install_bottle-homebrew-amd64\n[sdformat-jetty]: https://build.osrfoundation.org/job/sdformat16-install_bottle-homebrew-amd64\n[sdformat-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=sdformat16-install_bottle-homebrew-amd64\n\n[collection-fortress]: https://build.osrfoundation.org/job/gz_fortress-install_bottle-homebrew-amd64\n[collection-fortress-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_fortress-install_bottle-homebrew-amd64\n[collection-harmonic]: https://build.osrfoundation.org/job/gz_harmonic-install_bottle-homebrew-amd64\n[collection-harmonic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_harmonic-install_bottle-homebrew-amd64\n[collection-ionic]: https://build.osrfoundation.org/job/gz_ionic-install_bottle-homebrew-amd64\n[collection-ionic-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_ionic-install_bottle-homebrew-amd64\n[collection-jetty]: https://build.osrfoundation.org/job/gz_jetty-install_bottle-homebrew-amd64\n[collection-jetty-badge]: https://build.osrfoundation.org/buildStatus/icon?job=gz_jetty-install_bottle-homebrew-amd64\n\n## To build bottles\n\nThe https://build.osrfoundation.org jenkins instance is used for building bottles with the following job\n(configured in [brew_release.dsl](https://github.com/ignition-tooling/release-tools/blob/master/jenkins-scripts/dsl/brew_release.dsl)):\n\n* [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=generic-release-homebrew_triggered_bottle_builder)](https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/) https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/\n\nThis jenkins job is triggered for pull requests when an administrator makes a comment\non the pull request that includes the phrase `build bottle`.\nThe job should appear in the GitHub build status interface for the latest commit:\n\n![GitHub build status interface screenshot](.github/github_build_status.png)\n\nFor example, [#1157](https://github.com/osrf/homebrew-simulation/pull/1157) was created after\nrunning our [release.py](https://github.com/ignition-tooling/release-tools/blob/master/release.py) script\nand [this comment](https://github.com/osrf/homebrew-simulation/pull/1157#issuecomment-698111311)\ntriggered the bottle build, resulting in a successful bottle upload and [a4793387](https://github.com/osrf/homebrew-simulation/commit/a47933878a7e073225acf5ceef0960cd6cfd50b2).\n\nBottle builds are not triggered automatically for every pull request for several reasons:\n\n* Not all pull requests require a bottle to be rebuilt (such as\n  [#1007](https://github.com/osrf/homebrew-simulation/pull/1007) that added this text to the README)\n* Successful bottle builds result in binary artifacts being immediately uploaded to our hosting provider\n  so pull requests should be screened for malicious intent by administrators before triggering\n  a bottle build.\n    - This process differs from the approach taken by\n      [homebrew/homebrew-core](https://github.com/Homebrew/homebrew-core)\n      whose bottles are hosted at GitHub Packages, which hosts files\n      according to the hash of their contents rather than by filename.\n      The homebrew-core CI jobs will build bottles for any incoming pull request,\n      which will upload bottles directly to GitHub Packages, but the SHA hash associated with these bottles will not be\n      easily available unless the pull request is merged by a homebrew maintainer.\n\n## Reasons to prefer building bottles in one pull request at a time\n\nWhen releasing multiple packages in a short period of time, there may be\nmultiple pull requests open at the same time. While it may feel proactive to\napply the `build bottle` comment to multiple pull requests at once, please\nkeep the following issues in mind before doing so:\n\n### Issue [#1990](https://github.com/osrf/homebrew-simulation/issues/1990): bottle build may fail if target branch receives commits\n\nAs documented in [#1990](https://github.com/osrf/homebrew-simulation/issues/1990),\nbottle builds may fail if a pull request is merged while another bottle build\nis ongoing. Until this issue is resolved, if you trigger multiple builds at\nonce, merging any of them before all have completed may cause one of them to\nfail. Valid strategies for avoiding build failures due to this issue include:\n\n* Build bottles for one pull request at a time and wait until that pull\n  request is merged before starting another build. If merging the pull requests\n  is not urgent and you receive GitHub notifications for pull requests to this\n  repository, you can use the following procedure:\n    * Check if any open pull requests have ongoing bottle builds. If so,\n      come back later.\n    * If there are no ongoing bottle builds, check if any pull requests have\n      finished building bottles by looking for a commit with message\n      \"update bottle\" and merge them.\n    * Pick a remaining pull request, update its branch with the latest changes\n      from the base branch and comment `build bottle`. The order is important;\n      if you start a bottle building job before updating the branch with the\n      latest changes, just let the build finish without updating the branch.\n    * When you see a notifications for a commit with message \"update bottle\"\n      in this pull request, start this process from the beginning.\n\n* Comment `build bottle` on any open pull requests and wait until all\n  builds have completed before merging any pull requests. Please consider\n  waiting to apply additional `build bottle` comments to new pull requests\n  that are opened to avoid extending the wait time.\n\n* Cherry-pick the changes from multiple pull requests into a single pull\n  request to allow the bottle updates to be built at once. This is also\n  more efficient for formulae in the same dependency chain as it eliminates\n  redundant checking in separate bottle building jobs. See\n  [#2949](https://github.com/osrf/homebrew-simulation/pull/2949) and\n  [#2957](https://github.com/osrf/homebrew-simulation/pull/2957) for examples\n  of this approach.\n\n## To disable broken bottles\n\nWhen a new major or minor version of a formula is merged to homebrew-core that is a dependency of formulae\nin this tap, it may break our bottles, requiring a rebuild (see\n[#1728](https://github.com/osrf/homebrew-simulation/issues/1728) or\n[#1708](https://github.com/osrf/homebrew-simulation/issues/1709) for example).\nAs the osrf/simulation bottles will be broken immediately upon the merge in homebrew-core,\nit can be useful to disable the broken bottles while waiting for new bottles to be rebuilt.\nThe `--remove-bottle-block` parameter to `brew bump-revision` can be used in this instance.\nFor example, the bottle removals from\n[8ca61f3d](https://github.com/osrf/homebrew-simulation/commit/8ca61f3dce52e93d3472450e33d9dc2c59523591)\nin [#1742](https://github.com/osrf/homebrew-simulation/pull/1742) could be repeated with\nthe following commands:\n\n~~~\nbrew bump-revision --remove-bottle-block ignition-msgs1\nbrew bump-revision --remove-bottle-block ignition-msgs5\nbrew bump-revision --remove-bottle-block ignition-msgs6\nbrew bump-revision --remove-bottle-block ignition-msgs7\nbrew bump-revision --remove-bottle-block ignition-msgs8\n~~~\n\nIf all broken formulae properly list an explicit dependency on the breaking formula, the following\nshell script loop can be used to remove all broken bottles. For example, the following\nsnippet was used to remove broken protobuf bottles in https://github.com/osrf/homebrew-simulation/issues/2314#issuecomment-1626396384:\n\n~~~\ncd `brew --repo osrf/simulation`/Formula\nfor f in $(grep -l '^ *bottle do' $(grep -rlI depend.*protobuf .) | sort)\ndo\n  brew bump-revision --remove-bottle-block --message=\"broken bottle\" $f\ndone\n~~~\n\n## Troubleshooting\n\n* Does a new bottle need to be built for every homebrew pull request?\n    - A new bottle is not needed for all pull requests.\n      For example, updates to documentation or a formula's `test do` block do not change\n      the installed binary and thus don't require a new bottle.\n      Changing the tarball `url`, adding patches, or bumping the formula `revision` do\n      require new bottles.\n      If you aren't sure, just ask in the pull request.\n\n* Do I need to wait for the `brew test-bot / test-bot` GitHub action to succeed for starting a bottle build?\n    - No, you don't need to wait. You can start the bottle build as soon as the pull request is opened.\n\n* When can I merge a pull request? Does CI need to be finished?\n    - Yes, CI must be finished and successful. If a new bottle is needed, the\n      `generic-release-homebrew_triggered_bottle_builder` job must be successful as well.\n\n* I commented `build bottle`, but it did not start a\n  [generic-release-homebrew\\_triggered\\_bottle\\_builder](https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder)\n  job.\n    - Confirm that the [build.osrfoundation.org](https://build.osrfoundation.org) web page loads.\n      If it is not accessible, an OSRF build farmer should be notified.\n    - If [build.osrfoundation.org](https://build.osrfoundation.org) is operational,\n      confirm that you have adequate permissions.\n      Currently, you must be a member of the [github.com/ignitionrobotics](https://github.com/ignitionrobotics)\n      org in order to use the `build bottle` trigger phrase (see configuration in\n      [brew_release.dsl](https://github.com/ignition-tooling/release-tools/blob/2ae0424303a5/jenkins-scripts/dsl/brew_release.dsl#L181-L185)).\n\n* I'm updating a Formula to build from a specific commit in a git repository.\nHow do I get the `sha256` for the tarball corresponding to that commit?\n    - First, make sure that you have updated the [url](https://github.com/osrf/homebrew-simulation/blob/376e1f471ba492a936e088596dc365f2bec43798/Formula/ignition-sensors5.rb#L4) to use the commit hash that corresponds to the commit in the repository that you'd like to use.\nAlso be sure to update the [version](https://github.com/osrf/homebrew-simulation/blob/376e1f471ba492a936e088596dc365f2bec43798/Formula/ignition-sensors5.rb#L5), if it exists (in the example linked here, `20201028~c02cd0` is the part that needs to be modified: `20201028` is the date (year-month-day), and `c02cd0` is the first 6 characters of the commit was used in the updated url).\n    - Now, run the command `wget \u003curl\u003e`, where `\u003curl\u003e` is the updated url that was just mentioned.\nOnce you have the `tar` file downloaded, run the command `sha256sum \u003cfile\u003e`, replacing `\u003cfile\u003e` with the file that was downloaded via `wget`.\nThe `sha256` will be printed to the console, which can then be used to update the Formula's [sha256](https://github.com/osrf/homebrew-simulation/blob/376e1f471ba492a936e088596dc365f2bec43798/Formula/ignition-sensors5.rb#L6).\n\n* I ran the [release.py](https://github.com/ignition-tooling/release-tools/blob/master/release.py) script multiple\n  times for the same release and commented `build bottle` on the pull request, but the bottle building job failed,\n  with console output containing the text `Warning: Formula reports different SHA256:`.\n    - It's possible that the tarball uploaded at the time the pull request was created was overwritten\n      by a subsequent call to `release.py` (see [ignition-tooling/release-tools#274](https://github.com/ignition-tooling/release-tools/issues/274)).\n      If so, update the `sha256` field for the tarball (see [#1156](https://github.com/osrf/homebrew-simulation/pull/1156)\n      and [57fa5defcce](https://github.com/osrf/homebrew-simulation/commit/57fa5defcce) for an example).\n\n## Jenkins implementation details\n\nThe [generic-release-homebrew\\_triggered\\_bottle\\_builder](https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder)\njenkins job currently builds bottles for macOS 10.15 `catalina` and 10.16 `big_sur`\nusing the following job configurations and the\n[homebrew\\_bottle\\_creation.bash](https://github.com/ignition-tooling/release-tools/blob/master/jenkins-scripts/lib/homebrew_bottle_creation.bash)\nscript:\n\n* [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=generic-release-homebrew_triggered_bottle_builder%2Flabel%3Dosx_catalina)](https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/label=osx_catalina/) https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/label=osx_catalina\n* [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=generic-release-homebrew_triggered_bottle_builder%2Flabel%3Dosx_bigsur)](https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/label=osx_bigsur/) https://build.osrfoundation.org/job/generic-release-homebrew_triggered_bottle_builder/label=osx_bigsur\n\nIf the bottle building job finishes without errors for each build configuration,\nit will trigger a subsequent [repository\\_uploader\\_packages](https://build.osrfoundation.org/job/repository_uploader_packages/)\njob that uploads the bottles to s3\nand a [generic-release-homebrew\\_pr\\_bottle\\_hash\\_updater](https://build.osrfoundation.org/job/generic-release-homebrew_pr_bottle_hash_updater/)\njob that commits the changes in bottle `sha256` values to the pull request branch\nusing [this script](https://github.com/ignition-tooling/release-tools/blob/master/jenkins-scripts/lib/homebrew_bottle_pullrequest.bash).\n\n## Building bottles for newly supported macOS distributions\n\nWhen we add support for a new version of macOS, we need to build bottles for that formula,\nwhile ideally keeping the existing bottles. This can be done by using the `--keep-old`\nparameter with `brew test-bot` and `brew bottle`.\nSince [ignition-tooling/release-tools#556](https://github.com/ignition-tooling/release-tools/pull/556),\nbottle builds can be triggered for a specified version of macOS using `--keep-old`\nby adding special tags to the `build bottle` comment in a homebrew-simulation pull request.\nUse `brew-bot-tag:` along with `build-for-new-distro-{distro}` in the comment,\nwhere `{distro}` is the version string used in homebrew bottle blocks\n(such as `catalina` or `big_sur`). See [this comment](https://github.com/osrf/homebrew-simulation/pull/1694#issuecomment-978507608)\nin [osrf/homebrew-simulation#1694](https://github.com/osrf/homebrew-simulation/pull/1694)\nas an example that triggered a bottle build for `big_sur` only.\nNote that the `--keep-old` flag only works if the pull request does not change the\nformula version. Adding a comment to a formula (as in\n[osrf/homebrew-simulation#1694](https://github.com/osrf/homebrew-simulation/pull/1694))\nis sufficient.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosrf%2Fhomebrew-simulation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosrf%2Fhomebrew-simulation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosrf%2Fhomebrew-simulation/lists"}