mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
feature: generate macOS pkg files
This commit is contained in:
parent
7d04dd9d68
commit
72b3348fb1
43
.github/workflows/build-pkg.yml
vendored
Normal file
43
.github/workflows/build-pkg.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
name: Build Homebrew package
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- .github/workflows/build-pkg.yml
|
||||||
|
- package/scripts
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
release:
|
||||||
|
types:
|
||||||
|
- published
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: macos-12
|
||||||
|
env:
|
||||||
|
IDENTIFIER: sh.brew.Homebrew
|
||||||
|
TMP_PATH: /tmp/brew
|
||||||
|
MIN_OS: '11.0'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
path: brew
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Version name
|
||||||
|
id: print-version
|
||||||
|
run: |
|
||||||
|
echo "version=$(git -C brew describe --tags --always)" > $GITHUB_OUTPUT
|
||||||
|
- name: Build package
|
||||||
|
run: |
|
||||||
|
pkgbuild --root brew \
|
||||||
|
--scripts brew/package/scripts \
|
||||||
|
--install-location "$TMP_PATH" \
|
||||||
|
--identifier "$IDENTIFIER" \
|
||||||
|
--min-os-version "$MIN_OS" \
|
||||||
|
--filter .DS_Store \
|
||||||
|
--version ${{ steps.print-version.outputs.version }} \
|
||||||
|
Homebrew-${{ steps.print-version.outputs.version }}.pkg
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: Homebrew ${{ steps.print-version.outputs.version }}
|
||||||
|
path: Homebrew-${{ steps.print-version.outputs.version }}.pkg
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -179,6 +179,9 @@
|
|||||||
!/docs
|
!/docs
|
||||||
!/manpages
|
!/manpages
|
||||||
|
|
||||||
|
# Unignore our packaging files
|
||||||
|
!/package
|
||||||
|
|
||||||
# Ignore generated documentation site
|
# Ignore generated documentation site
|
||||||
/docs/_site
|
/docs/_site
|
||||||
/docs/bin
|
/docs/bin
|
||||||
|
43
package/scripts/postinstall
Executable file
43
package/scripts/postinstall
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# verify the files exist
|
||||||
|
tmp_brew="$2"
|
||||||
|
if [[ ! -d "${tmp_brew:?}" ]]; then
|
||||||
|
echo "no directory at $tmp_brew, exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# pick the correct target
|
||||||
|
if [[ "$3" != "/" ]]; then
|
||||||
|
target=$3
|
||||||
|
elif [[ $(uname -m) == "x86_64" ]];then
|
||||||
|
target="/usr/local"
|
||||||
|
else
|
||||||
|
target="/opt/Homebrew"
|
||||||
|
fi
|
||||||
|
|
||||||
|
loggedInUser=$(echo "show State:/Users/ConsoleUser" | scutil | awk '/Name :/ { print $3 }')
|
||||||
|
if [[ -f "$target/bin/brew" ]]; then
|
||||||
|
if [[ $(sudo -u"$loggedInUser" "$target/bin/brew" developer) =~ "enabled" ]]; then
|
||||||
|
echo "developer install, exiting"
|
||||||
|
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
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
group=$(id -gn "$loggedInUser")
|
||||||
|
|
||||||
|
install -d -o "$loggedInUser" -g "$group" "$target"
|
||||||
|
cp -RX "$tmp_brew/" "$target"
|
||||||
|
|
||||||
|
# set permissions
|
||||||
|
chown -R "$loggedInUser:$group" "$target/*"
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
rm -rf "${tmp_brew:?}/*"
|
13
package/scripts/preinstall
Executable file
13
package/scripts/preinstall
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Checked for installed CLT
|
||||||
|
if [[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if /usr/bin/xcode-select --install; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "Failed to install CommandLine Tools"
|
||||||
|
exit 1
|
Loading…
x
Reference in New Issue
Block a user