From c5afd5d0562f1f9936180952ccf2dfa9022f11f0 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 25 Jul 2023 15:47:34 +0100 Subject: [PATCH] macOS .pkg improvements - don't include GitHub Actions credentials - generate and include RTF version of Homebrew BSD license - create nicer installer with `productbuild` - customise welcome/conclusion messages - add Homebrew logo as a background image - remove unnecessary `preinstall` script - cleanup `postinstall` script to pass `brew doctor` - use `Distribution.xml` for a nicer installer - require CLT or Xcode rather than using our hacks to try and install CLT during installation --- .github/workflows/build-pkg.yml | 67 +++++++++++++++++++++---- .gitignore | 1 + package/Distribution.xml | 47 +++++++++++++++++ package/resources/CONCLUSION.rtf | 43 ++++++++++++++++ package/resources/Homebrew.png | Bin 0 -> 133668 bytes package/resources/WELCOME.rtf | 19 +++++++ package/scripts/postinstall | 83 +++++++++++++++---------------- package/scripts/preinstall | 32 ------------ 8 files changed, 206 insertions(+), 86 deletions(-) create mode 100644 package/Distribution.xml create mode 100644 package/resources/CONCLUSION.rtf create mode 100644 package/resources/Homebrew.png create mode 100644 package/resources/WELCOME.rtf delete mode 100755 package/scripts/preinstall diff --git a/.github/workflows/build-pkg.yml b/.github/workflows/build-pkg.yml index 9306e3bfb880b..ef10308906a6e 100644 --- a/.github/workflows/build-pkg.yml +++ b/.github/workflows/build-pkg.yml @@ -12,20 +12,29 @@ jobs: build: if: github.repository_owner == 'Homebrew' runs-on: macos-13 + permissions: + # To write assets to GitHub release + contents: write env: TEMPORARY_CERTIFICATE_FILE: 'homebrew_developer_id_installer_certificate.p12' TEMPORARY_KEYCHAIN_FILE: 'homebrew_installer_signing.keychain-db' MIN_MACOS_VERSION: '11.0' + PKG_APPLE_DEVELOPER_TEAM_ID: ${{ secrets.PKG_APPLE_DEVELOPER_TEAM_ID }} steps: - - uses: actions/checkout@v3 + - name: Checkout to brew subdirectory + uses: actions/checkout@v3 with: path: brew fetch-depth: 0 + persist-credentials: false - name: Get Homebrew version from Git id: print-version run: echo "version=$(git -C brew describe --tags --always)" >> "${GITHUB_OUTPUT}" + - name: Install Pandoc + run: brew install pandoc + - name: Create and unlock temporary macOS keychain env: PKG_KEYCHAIN_PASSWORD: ${{ secrets.PKG_KEYCHAIN_PASSWORD }} @@ -38,12 +47,16 @@ jobs: - name: Create temporary certificate file env: PKG_APPLE_SIGNING_CERTIFICATE_BASE64: ${{ secrets.PKG_APPLE_SIGNING_CERTIFICATE_BASE64 }} - run: echo -n "${PKG_APPLE_SIGNING_CERTIFICATE_BASE64}" | base64 --decode --output="${RUNNER_TEMP}/${TEMPORARY_CERTIFICATE_FILE}" + run: echo -n "${PKG_APPLE_SIGNING_CERTIFICATE_BASE64}" | + base64 --decode --output="${RUNNER_TEMP}/${TEMPORARY_CERTIFICATE_FILE}" - name: Import certificate file into macOS keychain env: PKG_APPLE_SIGNING_CERTIFICATE_PASSWORD: ${{ secrets.PKG_APPLE_SIGNING_CERTIFICATE_PASSWORD }} - run: security import "${RUNNER_TEMP}/${TEMPORARY_CERTIFICATE_FILE}" -k "${RUNNER_TEMP}/${TEMPORARY_KEYCHAIN_FILE}" -t cert -f pkcs12 -P "${PKG_APPLE_SIGNING_CERTIFICATE_PASSWORD}" -A + run: security import "${RUNNER_TEMP}/${TEMPORARY_CERTIFICATE_FILE}" + -k "${RUNNER_TEMP}/${TEMPORARY_KEYCHAIN_FILE}" + -P "${PKG_APPLE_SIGNING_CERTIFICATE_PASSWORD}" + -t cert -f pkcs12 -A - name: Clean up temporary certificate file if: ${{ always() }} @@ -52,25 +65,57 @@ jobs: - name: Open macOS keychain run: security list-keychain -d user -s "${RUNNER_TEMP}/${TEMPORARY_KEYCHAIN_FILE}" - - name: Build Homebrew installer package - env: - PKG_APPLE_DEVELOPER_TEAM_ID: ${{ secrets.PKG_APPLE_DEVELOPER_TEAM_ID }} + - name: Build Homebrew installer component package # Note: `Library/Homebrew/test/support/fixtures/` contains unsigned # binaries so it needs to be excluded from notarization. - run: pkgbuild --root brew --scripts brew/package/scripts --identifier "sh.brew.homebrew" --version ${{ steps.print-version.outputs.version }} --install-location "/tmp/brew" --filter .DS_Store --filter "(.*)/Library/Homebrew/test/support/fixtures/" --min-os-version "${MIN_MACOS_VERSION}" --sign "${PKG_APPLE_DEVELOPER_TEAM_ID}" Homebrew-${{ steps.print-version.outputs.version }}.pkg + run: pkgbuild --root brew + --scripts brew/package/scripts + --identifier "sh.brew.homebrew" + --version ${{ steps.print-version.outputs.version }} + --install-location "/opt/homebrew" + --filter .DS_Store + --filter "(.*)/Library/Homebrew/test/support/fixtures/" + --min-os-version "${MIN_MACOS_VERSION}" + --sign "${PKG_APPLE_DEVELOPER_TEAM_ID}" Homebrew.pkg + + - name: Convert Homebrew license file to RTF + run: (printf "### " && cat brew/LICENSE.txt) | + pandoc --from markdown --standalone --output brew/package/resources/LICENSE.rtf + + - name: Build Homebrew installer package + run: productbuild --resources brew/package/resources + --distribution brew/package/Distribution.xml + --package-path Homebrew.pkg Homebrew-${{ steps.print-version.outputs.version }}.pkg + --sign "${PKG_APPLE_DEVELOPER_TEAM_ID}" - name: Notarize Homebrew installer package env: - PKG_APPLE_DEVELOPER_TEAM_ID: ${{ secrets.PKG_APPLE_DEVELOPER_TEAM_ID }} PKG_APPLE_ID_USERNAME: ${{ secrets.PKG_APPLE_ID_USERNAME }} PKG_APPLE_ID_APP_SPECIFIC_PASSWORD: ${{ secrets.PKG_APPLE_ID_APP_SPECIFIC_PASSWORD }} - run: xcrun notarytool submit Homebrew-${{ steps.print-version.outputs.version }}.pkg --team-id "${PKG_APPLE_DEVELOPER_TEAM_ID}" --apple-id "${PKG_APPLE_ID_USERNAME}" --password "${PKG_APPLE_ID_APP_SPECIFIC_PASSWORD}" --wait + run: xcrun notarytool submit Homebrew-${{ steps.print-version.outputs.version }}.pkg + --team-id "${PKG_APPLE_DEVELOPER_TEAM_ID}" + --apple-id "${PKG_APPLE_ID_USERNAME}" + --password "${PKG_APPLE_ID_APP_SPECIFIC_PASSWORD}" + --wait - name: Clean up temporary macOS keychain if: ${{ always() }} - run: test -f "${RUNNER_TEMP}/${TEMPORARY_KEYCHAIN_FILE}" && security delete-keychain "${RUNNER_TEMP}/${TEMPORARY_KEYCHAIN_FILE}" + run: | + if [[ -f "${RUNNER_TEMP}/${TEMPORARY_KEYCHAIN_FILE}" ]] + then + security delete-keychain "${RUNNER_TEMP}/${TEMPORARY_KEYCHAIN_FILE}" + fi - - uses: actions/upload-artifact@v3 + - name: Upload installer to GitHub Actions + uses: actions/upload-artifact@v3 with: name: Homebrew ${{ steps.print-version.outputs.version }} path: Homebrew-${{ steps.print-version.outputs.version }}.pkg + + - name: Upload installer to GitHub release + if: startsWith(github.ref, 'refs/tags/') + env: + GH_TOKEN: ${{ github.token }} + run: gh release upload --repo Homebrew/brew + "${GITHUB_REF//refs\/tags\//}" + Homebrew-${{ steps.print-version.outputs.version }}.pkg diff --git a/.gitignore b/.gitignore index 026f2af6218c9..80675e31e1a07 100644 --- a/.gitignore +++ b/.gitignore @@ -337,6 +337,7 @@ # Unignore our packaging files !/package +/package/resources/LICENSE.rtf # Ignore generated documentation site /docs/_site diff --git a/package/Distribution.xml b/package/Distribution.xml new file mode 100644 index 0000000000000..71927bc4c9733 --- /dev/null +++ b/package/Distribution.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + Homebrew.pkg + + Homebrew + sh.brew + + + + + + + + + + + + + diff --git a/package/resources/CONCLUSION.rtf b/package/resources/CONCLUSION.rtf new file mode 100644 index 0000000000000..a853dc32fb28a --- /dev/null +++ b/package/resources/CONCLUSION.rtf @@ -0,0 +1,43 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2709 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;\f2\fnil\fcharset0 Menlo-Regular; +} +{\colortbl;\red255\green255\blue255;} +{\*\expandedcolortbl;;} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid1\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1} +{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid101\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2} +{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid201\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid202\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li1440\lin1440 }{\listname ;}\listid3}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}} +\paperw11900\paperh16840\margl1440\margr1440\vieww13440\viewh7240\viewkind0 +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 + +\f0\b\fs24 \cf0 Homebrew has enabled anonymous aggregate formulae and cask analytics. +\f1\b0 \ +\ +Read the analytics documentation (and how to opt-out) here:\ +\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li720\fi-720\pardirnatural\partightenfactor0 +\ls1\ilvl0\cf0 {\listtext \uc0\u8259 }\ul https://docs.brew.sh/Analytics\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 +\cf0 \ulnone No analytics data has been sent yet.\ +\ +Homebrew is run entirely by unpaid volunteers. Please consider donating:\ +\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li720\fi-720\pardirnatural\partightenfactor0 +\ls2\ilvl0\cf0 {\listtext \uc0\u8259 }\ul https://github.com/Homebrew/brew#donations\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 +\cf0 \ulc0 \ +\ulnone Next steps:\ul \ +\pard\tx220\tx720\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li720\fi-720\pardirnatural\partightenfactor0 +\ls3\ilvl0\cf0 \ulnone {\listtext \uc0\u8259 }To add Homebrew to your +\f2 PATH +\f1 run +\f2 brew shellenv +\f1 in your shell profile (e.g. +\f2 ~/.bash_profile +\f1 or +\f2 ~/.zprofile +\f1 )\ +{\listtext \uc0\u8259 }Run +\f2 brew help +\f1 to get started\ +{\listtext \uc0\u8259 }Further documentation:\ +\pard\tx940\tx1440\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li1440\fi-1440\pardirnatural\partightenfactor0 +\ls3\ilvl1\cf0 {\listtext \uc0\u8259 }\ul https://docs.brew.sh} \ No newline at end of file diff --git a/package/resources/Homebrew.png b/package/resources/Homebrew.png new file mode 100644 index 0000000000000000000000000000000000000000..d529a08dff4b201ad3642066adf2352290c7f791 GIT binary patch literal 133668 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

+Y1vU%*tgdkDO64 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 exit 1 fi -# pick the correct target +# add Git to path +export PATH="/Library/Developer/CommandLineTools/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:${PATH}" + +# reset Git repository +cd "${homebrew_directory}" +git reset --hard +git checkout -f master +git branch | grep -v '\*' | xargs -n 1 git branch -D + +# move to /usr/local if on x86_64 if [[ $(uname -m) == "x86_64" ]] then - target="/usr/local" -else - target="/opt/homebrew" -fi + mv "${homebrew_directory}" "/usr/local/Homebrew" + # create symlink to /usr/local/bin/brew + ln -s "/usr/local/Homebrew/bin/brew" "/usr/local/bin/brew" -loggedInUser=$(echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }') -if [[ -f "${target}/bin/brew" ]] -then - if [[ $(sudo -u"${loggedInUser}" git -C "${target}" branch --show-current) != "master" ]] - then - echo "working on brew modifications, exiting" - rm -rf "${tmp_brew:?}/*" - exit 0 - fi - if [[ $("${tmp_brew}/bin/brew" --version | head -n1) != $("${target}/bin/brew" --version | head -n1) ]] - then - echo "already an outdated install at ${target}, updating" - sudo -u"${loggedInUser}" "${target}/bin/brew" update --auto-update - else - echo "already an up-to-date install at ${target}, exiting" - fi - - rm -rf "${tmp_brew:?}/*" - exit 0 + homebrew_directory="/usr/local" + cd "${homebrew_directory}" fi -group=$(id -gn "${loggedInUser}") - -install -d -o "root" -g "wheel" -m "0755" "${target}" - -cp -RX "${tmp_brew}/" "${target}" +# create missing directories +sudo mkdir -p Cellar Frameworks etc include lib opt sbin share var/homebrew/linked # set permissions -chown -R "${loggedInUser}:${group}" "${target}/*" - -# cleanup -rm -rf "${tmp_brew:?}/*" +logged_in_user=$(echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }') +group=$(id -gn "${logged_in_user}") +if [[ "${homebrew_directory}" == "/usr/local" ]] +then + chown -R "${logged_in_user}:${group}" Cellar Frameworks Homebrew bin etc include lib sbin share var/homebrew/linked +else + chown -R "${logged_in_user}:${group}" . +fi diff --git a/package/scripts/preinstall b/package/scripts/preinstall deleted file mode 100755 index 49afc85251fdc..0000000000000 --- a/package/scripts/preinstall +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# Checked for installed CLT -if [[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]] -then - exit 0 -fi - -CLT_PLACEHOLDER="/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress" -touch "${CLT_PLACEHOLDER}" - -CLT_PACKAGE=$(softwareupdate -l | - grep -B 1 "Command Line Tools" | - awk -F"*" '/^ *\*/ {print $2}' | - sed -e 's/^ *Label: //' -e 's/^ *//' | - sort -V | - tail -n1) -softwareupdate -i "${CLT_PACKAGE}" -rm -f "${CLT_PLACEHOLDER}" -if ! [[ -f "/Library/Developer/CommandLineTools/usr/bin/git" ]] -then - if [[ -z "${COMMAND_LINE_INSTALL}" ]] - then - echo - printf "Requesting user install of Xcode Command Line Tools:" - /usr/bin/xcode-select --install - else - echo - printf "Run 'xcode-select --install' to install the Xcode Command Line Tools before running a headless brew install." - exit 1 - fi -fi