{"id":20884362,"url":"https://github.com/qgis/qgis-mac-packager","last_synced_at":"2025-04-07T15:09:33.901Z","repository":{"id":37393424,"uuid":"180745558","full_name":"qgis/QGIS-Mac-Packager","owner":"qgis","description":"Scripts for Official QGIS MacOS Packages","archived":false,"fork":false,"pushed_at":"2025-02-23T13:25:23.000Z","size":1954,"stargazers_count":57,"open_issues_count":42,"forks_count":21,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-03-31T13:18:44.554Z","etag":null,"topics":["macos","package-manager","packager","qgis"],"latest_commit_sha":null,"homepage":"https://www.qgis.org","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qgis.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["qgis"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"custom":"https://qgis.org/funding"}},"created_at":"2019-04-11T08:11:31.000Z","updated_at":"2025-02-23T13:25:27.000Z","dependencies_parsed_at":"2023-02-18T16:01:42.681Z","dependency_job_id":"d19822a8-982a-4a65-87e0-49374c36331b","html_url":"https://github.com/qgis/QGIS-Mac-Packager","commit_stats":{"total_commits":302,"total_committers":9,"mean_commits":33.55555555555556,"dds":"0.19536423841059603","last_synced_commit":"309fb4e35d64cae6a167494c45b75586dbba13bb"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qgis%2FQGIS-Mac-Packager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qgis%2FQGIS-Mac-Packager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qgis%2FQGIS-Mac-Packager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qgis%2FQGIS-Mac-Packager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qgis","download_url":"https://codeload.github.com/qgis/QGIS-Mac-Packager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247675597,"owners_count":20977376,"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":["macos","package-manager","packager","qgis"],"created_at":"2024-11-18T08:09:47.136Z","updated_at":"2025-04-07T15:09:33.880Z","avatar_url":"https://github.com/qgis.png","language":"Shell","funding_links":["https://github.com/sponsors/qgis","https://qgis.org/funding"],"categories":[],"sub_categories":[],"readme":"[![PR Status](https://qgis.org/downloads/macos/qgis-macos-pr.latest.png?raw=true)](https://qgis.org/downloads/macos/qgis-macos-pr.latest.log)\n\n[![LTR Status](https://qgis.org/downloads/macos/qgis-macos-ltr.latest.png?raw=true)](https://qgis.org/downloads/macos/qgis-macos-ltr.latest.log)\n\n[![NIGHTLY Status](https://qgis.org/downloads/macos/qgis-macos-nightly.latest.png?raw=true)](https://qgis.org/downloads/macos/qgis-macos-nightly.latest.log)\n\n# Latest Passed Builds\n\n| PR | LTR | Nightly |\n|:----:|:-----:|:--------:|\n| [DMG](https://qgis.org/downloads/macos/qgis-macos-pr.dmg?raw=true) | [DMG](https://qgis.org/downloads/macos/qgis-macos-ltr.dmg?raw=true) | [DMG](https://qgis.org/downloads/macos/qgis-macos-nightly.dmg?raw=true)  |\n| [SHA256](https://qgis.org/downloads/macos/qgis-macos-pr.sha256sum?raw=true) | [SHA256](https://qgis.org/downloads/macos/qgis-macos-ltr.sha256sum?raw=true) | [SHA256](https://qgis.org/downloads/macos/qgis-macos-nightly.sha256sum?raw=true) |\n| [DEPS](https://qgis.org/downloads/macos/qgis-macos-pr.deps?raw=true) | [DEPS](https://qgis.org/downloads/macos/qgis-macos-ltr.deps?raw=true)| [DEPS](https://qgis.org/downloads/macos/qgis-macos-nightly.deps?raw=true) |\n\n# QGIS Mac Packager\n\nSet of scripts to create MacOS standalone QGIS package (dmg)\n\nTo know when we release, see [QGIS release schedule](https://www.qgis.org/en/site/getinvolved/development/roadmap.html#release-schedule)\n\n# How to report issues \n\n- Add link to the installed package\n- Add crash report if QGIS crashed\n- State MacOS version (e.g. 10.15.0), QGIS version\n- Run `/Applications/QGIS*.app/Contents/MacOS/QGIS` from Terminal and add the output\n- Append any messages from QGIS message log or python warnings log if present\n\n# Debugging Tips\n- [gatekeeper](https://stackoverflow.com/a/29221163/2838364): `codesign --verbose --deep-verify /Applications/QGIS*.app/` \n- loaded dylibs: `ps -A | grep -i qgis; vmmap \u003cpid\u003e`\n- signature: `codesign -d -vvvv \u003cfile\u003e` \n- accept by gatekeeper: `spctl -a -t exec -vv \u003cpath\u003e.dmg`\n- signature: `codesign --verify --deep --strict --verbose=2`\n- library deps (similar to Windows' Dependency Walker): https://github.com/kwin/macdependency\n- to debug Qt Plugins (e.g. SQL), use : `QT_DEBUG_PLUGINS=1 open /Application/QGIS*.app`\n- if QGIS crashes on start, try with clean profile `mv ~/Library/Application\\ Support/QGIS/QGIS3/profiles ~/Library/Application\\ Support/QGIS/QGIS3/profiles_bk`\n- if QGIS crashes after load, try use clean profile from the QGIS Menu \n- list symbols of dynlib: `nm -gU \u003clibname\u003e`\n\n# Server Setup \n\n- Get macOS Big Sur server \n- Get Apple Development Program for your Apple ID\n- Login to the server (have static IP)\n- Change default password to some secure one\n- Open Settings \u003e Spotlight and disable all search locations \u0026 add `/opt` and `~/qgis` to exclude locations  \n- Install XCode from App Store (It is enough to JUST install command line tools!)\n- Go to Apple Developer Download page -\u003e More and command line tools. Install both\n- Sign out from the apple developer page and app store\n- Open XCode and accept license\n- install homebrew and QGIS deps by running `install_brew.bash`\n- Download MrSID SDK [referenced in](https://github.com/OSGeo/homebrew-osgeo4mac/blob/master/Formula/osgeo-mrsid-sdk.rb) and place it in the folder `$HOME/Library/Caches/Homebrew`. Make a symbolic link in `../external/MrSID_DSDK-\u003cver\u003e-darwin14.universal.clang60`\n- Download erdas-ecw-jp2 5.5.0 [referenced in](https://github.com/OSGeo/homebrew-osgeo4mac/blob/master/Formula/osgeo-ecwjp2-sdk.rb). Open dmg, open pkg and install to default location (Desktop Read-Only Free type). Make a symbolic link in `../external/ERDASEcwJpeg2000SDK\u003cver\u003e`\n- Download Oracle (18.1.0.0.0) package [from Oracle Download Section](https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html). Only  \"Instant Client Package - Basic\" and \"Instant Client Package - SDK\" are needed. Unpack/install to `../external/oracle`\n- install homebrew packages by `install_brew_dev_packages.bash`\n- Update `~/.bash_profile` from `scrips/bash_profile`\n- now clone this repository\n- for upload, add you ssh keys to `qgis/ssh/` and secure them\n- copy `run_cronjob` one folder above\n- to Code Signing (you need Apple certificate to be \"Identified developer\")\n    - You need application certificate from https://developer.apple.com/account\n    - Generate production/development signing identify\n    - Get cer file and scp to the server\n    - Double click on cer file and install it on the server\n    - On Machine where you created request, export private key and copy and install on server too.\n    - install p12 cert to `login` identity\n    - `security find-identity -v` to find existing identities \n    - create `sign_identity.txt` with the ID of your identity\n    - allow to use it in cronjob (https://stackoverflow.com/a/20324331/2838364)\n    - create symbolic link to keychain with the imported identity\n    - if used for signing the qgis-deps, you may need to \"unlock\" it in KeyChain Access App \n  \n- so your folders structure is\n```\n  sign_identity.txt\n  qgis.keychain.db --\u003e ~/Library/Keychains/login.keychain-db\n  run_cronjob.bash\n  QGIS-Mac-Packager/\n  external/ECW.. --\u003e link to SDK\n  external/MrSid.. --\u003e link to SDK\n  external/Oracle/sdk\n  external/Oracle/instantclient\n  builds/\n  logs/\n  ssh/\n```\n- Run `run_pkg.bash` with nightly/ltr/pr to build releases/nightlies (detects the latest version)\n- Nightly releases should be set as launchd once per day (use tabs!)\n``` \ncp scripts/org.qgis.build.plist ~/Library/LaunchAgents/\nplutil ~/Library/LaunchAgents/org.qgis.build.plist \necho $UID\nlaunchctl bootstrap gui/503 ~/Library/LaunchAgents/org.qgis.build.plist\nlaunchctl enable gui/503/org.qgis.build\n``` \n\nIf you want to kick the cron manually and see the errors try\n\n```\nlaunchctl kickstart gui/503/org.qgis.build\ntail -n 200 -f /var/log/system.log | grep qgis\ncat \n```\n\n## Server Update\n\n- remove all build folders \n- remove homebrew (`/usr/local/*`)\n- reinstall homebrew packages\n- clear ccache `ccache -C`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqgis%2Fqgis-mac-packager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqgis%2Fqgis-mac-packager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqgis%2Fqgis-mac-packager/lists"}