Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

install.sh: check processor. #347

Merged
merged 2 commits into from
Nov 12, 2020
Merged

install.sh: check processor. #347

merged 2 commits into from
Nov 12, 2020

Conversation

MikeMcQuaid
Copy link
Member

Refuse to install unless on Intel processors. If we're on macOS ARM then output a custom message letting people know they can use Rosetta.

This needs to be merged and in a tagged release before Big Sur is released so please prioritise testing and reviewing this ASAP CC @claui @Bo98 @fxcoudert @mistydemeo

@Bo98
Copy link
Member

Bo98 commented Nov 12, 2020

Thoughts on allowing it if HOMEBREW_DEVELOPER is set? Native ARM is ok if people know what they are doing, as shown by those with a DTK.

@MikeMcQuaid
Copy link
Member Author

  • We don't even support Big Sur yet so it's a definite no until that is the case (and we have Intel CI setup)
  • We will need additional logic to use the new ARM prefix

install.sh Outdated Show resolved Hide resolved
Copy link
Contributor

@claui claui left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Providing basic instructions for enabling Rosetta 2 would help, I think.

install.sh Show resolved Hide resolved
if [[ "$UNAME_MACHINE" == "arm64" ]]; then
abort "$(cat <<EOABORT
Homebrew is not (yet) supported on ARM processors!
Rerun the Homebrew installer under Rosetta 2.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Rerun the Homebrew installer under Rosetta 2.
To rerun the Homebrew installer under Rosetta 2,
select your Terminal app in Finder and click Get Info.
Make sure that "Open using Rosetta" is checked.
Then quit and re-open your Terminal.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@claui Does this force your Terminal to always open in Rosetta? I'm wondering if there are any nicer ways than this as it seems like this may not be what people want, I dunno. If not: no worries.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it forces the Terminal to always open in Rosetta.

It may not always be what people want but I’d still prefer to recommend it than recommending to prepend arch -x86_64.
The latter may be more convenient but:

  • it’s extremely easy to forget during daily use, and
  • imho it’s also kind of awkward to describe.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if Rosetta is not yet installed (as it sounds like it isn't/won't be by default)?

It may not always be what people want but I’d still prefer to recommend it than recommending to prepend arch -x86_64.

Doing this and then having something like a rosettabrew alias that runs arch -x86_64 brew feels like it'd be nice.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if Rosetta is not yet installed

Maybe add a link that tells people how to install Rosetta upfront. Like:

If Rosetta is not installed, please follow the instructions at <url>

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving as-is for now but will happily 👀 any PR to improve the text. Thanks for the help and testing @claui ❤️

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving as-is for now but will happily 👀 any PR to improve the text.

@MikeMcQuaid Fyi, Homebrew/brew#9126 includes a few suggestions. I plan to apply those here once they’re merged there.

install.sh Show resolved Hide resolved
Refuse to install unless on Intel processors. If we're on macOS ARM then
output a custom message letting people know they can use Rosetta.
install.sh Outdated Show resolved Hide resolved
Co-authored-by: Claudia Pellegrino <claui@users.noreply.github.com>
@claui
Copy link
Contributor

claui commented Nov 12, 2020

The results are in. 🎉

Running the installer on native Apple Silicon:

Homebrew is not (yet) supported on ARM processors!
Rerun the Homebrew installer under Rosetta 2.
If you really know what you are doing and are prepared for a very broken experience you can use another installation option for installing on ARM:
  https://docs.brew.sh/Installation

Running the installer on Apple Silicon under Rosetta:

Command output
==> You are using macOS 11.0.
==> We do not provide support for this pre-release version.
This installation may not succeed.
After installation, you will encounter build failures with some formulae.
Please create pull requests instead of asking for help on Homebrew\'s GitHub,
Discourse, Twitter or IRC. You are responsible for resolving any issues you
experience while you are running this pre-release version.

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following new directories will be created:
/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
==> The Xcode Command Line Tools will be installed.

Press RETURN to continue or any other key to abort
==> /usr/bin/sudo /bin/mkdir -p /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/sbin/chown brew /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/mkdir -p /var/brew/Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /var/brew/Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown brew /var/brew/Library/Caches/Homebrew
==> Searching online for the Command Line Tools
==> /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
==> Installing Command Line Tools beta 3 for Xcode-12.2
==> /usr/bin/sudo /usr/sbin/softwareupdate -i Command\ Line\ Tools\ beta\ 3\ for\ Xcode-12.2
Software Update Tool

Finding available software

Downloading Command Line Tools beta 3 for Xcode
Downloaded Command Line Tools beta 3 for Xcode
Installing Command Line Tools beta 3 for Xcode
Done with Command Line Tools beta 3 for Xcode
Done.
==> /usr/bin/sudo /bin/rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
Password:
==> /usr/bin/sudo /usr/bin/xcode-select --switch /Library/Developer/CommandLineTools
==> Downloading and installing Homebrew...
remote: Enumerating objects: 43, done.
remote: Counting objects: 100% (43/43), done.
remote: Compressing objects: 100% (43/43), done.
remote: Total 158772 (delta 0), reused 43 (delta 0), pack-reused 158729
Receiving objects: 100% (158772/158772), 40.49 MiB | 705.00 KiB/s, done.
Resolving deltas: 100% (117546/117546), done.
From https://github.com/Homebrew/brew

  • [new branch] dependabot/bundler/Library/Homebrew/ruby-macho-2.5.0 -> origin/dependabot/bundler/Library/Homebrew/ruby-macho-2.5.0
  • [new branch] dependabot/bundler/Library/Homebrew/sorbet-0.5.6049 -> origin/dependabot/bundler/Library/Homebrew/sorbet-0.5.6049
  • [new branch] dependabot/bundler/Library/Homebrew/sorbet-runtime-0.5.6049 -> origin/dependabot/bundler/Library/Homebrew/sorbet-runtime-0.5.6049
  • [new branch] master -> origin/master
  • [new tag] 0.1 -> 0.1
  • [new tag] 0.2 -> 0.2
  • [new tag] 0.3 -> 0.3
  • [new tag] 0.4 -> 0.4
  • [new tag] 0.5 -> 0.5
  • [new tag] 0.6 -> 0.6
  • [new tag] 0.7 -> 0.7
  • [new tag] 0.7.1 -> 0.7.1
  • [new tag] 0.8 -> 0.8
  • [new tag] 0.8.1 -> 0.8.1
  • [new tag] 0.9 -> 0.9
  • [new tag] 0.9.1 -> 0.9.1
  • [new tag] 0.9.2 -> 0.9.2
  • [new tag] 0.9.3 -> 0.9.3
  • [new tag] 0.9.4 -> 0.9.4
  • [new tag] 0.9.5 -> 0.9.5
  • [new tag] 0.9.8 -> 0.9.8
  • [new tag] 0.9.9 -> 0.9.9
  • [new tag] 1.0.0 -> 1.0.0
  • [new tag] 1.0.1 -> 1.0.1
  • [new tag] 1.0.2 -> 1.0.2
  • [new tag] 1.0.3 -> 1.0.3
  • [new tag] 1.0.4 -> 1.0.4
  • [new tag] 1.0.5 -> 1.0.5
  • [new tag] 1.0.6 -> 1.0.6
  • [new tag] 1.0.7 -> 1.0.7
  • [new tag] 1.0.8 -> 1.0.8
  • [new tag] 1.0.9 -> 1.0.9
  • [new tag] 1.1.0 -> 1.1.0
  • [new tag] 1.1.1 -> 1.1.1
  • [new tag] 1.1.10 -> 1.1.10
  • [new tag] 1.1.11 -> 1.1.11
  • [new tag] 1.1.12 -> 1.1.12
  • [new tag] 1.1.13 -> 1.1.13
  • [new tag] 1.1.2 -> 1.1.2
  • [new tag] 1.1.3 -> 1.1.3
  • [new tag] 1.1.4 -> 1.1.4
  • [new tag] 1.1.5 -> 1.1.5
  • [new tag] 1.1.6 -> 1.1.6
  • [new tag] 1.1.7 -> 1.1.7
  • [new tag] 1.1.8 -> 1.1.8
  • [new tag] 1.1.9 -> 1.1.9
  • [new tag] 1.2.0 -> 1.2.0
  • [new tag] 1.2.1 -> 1.2.1
  • [new tag] 1.2.2 -> 1.2.2
  • [new tag] 1.2.3 -> 1.2.3
  • [new tag] 1.2.4 -> 1.2.4
  • [new tag] 1.2.5 -> 1.2.5
  • [new tag] 1.2.6 -> 1.2.6
  • [new tag] 1.3.0 -> 1.3.0
  • [new tag] 1.3.1 -> 1.3.1
  • [new tag] 1.3.2 -> 1.3.2
  • [new tag] 1.3.3 -> 1.3.3
  • [new tag] 1.3.4 -> 1.3.4
  • [new tag] 1.3.5 -> 1.3.5
  • [new tag] 1.3.6 -> 1.3.6
  • [new tag] 1.3.7 -> 1.3.7
  • [new tag] 1.3.8 -> 1.3.8
  • [new tag] 1.3.9 -> 1.3.9
  • [new tag] 1.4.0 -> 1.4.0
  • [new tag] 1.4.1 -> 1.4.1
  • [new tag] 1.4.2 -> 1.4.2
  • [new tag] 1.4.3 -> 1.4.3
  • [new tag] 1.5.0 -> 1.5.0
  • [new tag] 1.5.1 -> 1.5.1
  • [new tag] 1.5.10 -> 1.5.10
  • [new tag] 1.5.11 -> 1.5.11
  • [new tag] 1.5.12 -> 1.5.12
  • [new tag] 1.5.13 -> 1.5.13
  • [new tag] 1.5.14 -> 1.5.14
  • [new tag] 1.5.2 -> 1.5.2
  • [new tag] 1.5.3 -> 1.5.3
  • [new tag] 1.5.4 -> 1.5.4
  • [new tag] 1.5.5 -> 1.5.5
  • [new tag] 1.5.6 -> 1.5.6
  • [new tag] 1.5.7 -> 1.5.7
  • [new tag] 1.5.8 -> 1.5.8
  • [new tag] 1.5.9 -> 1.5.9
  • [new tag] 1.6.0 -> 1.6.0
  • [new tag] 1.6.1 -> 1.6.1
  • [new tag] 1.6.10 -> 1.6.10
  • [new tag] 1.6.11 -> 1.6.11
  • [new tag] 1.6.12 -> 1.6.12
  • [new tag] 1.6.13 -> 1.6.13
  • [new tag] 1.6.14 -> 1.6.14
  • [new tag] 1.6.15 -> 1.6.15
  • [new tag] 1.6.16 -> 1.6.16
  • [new tag] 1.6.17 -> 1.6.17
  • [new tag] 1.6.2 -> 1.6.2
  • [new tag] 1.6.3 -> 1.6.3
  • [new tag] 1.6.4 -> 1.6.4
  • [new tag] 1.6.5 -> 1.6.5
  • [new tag] 1.6.6 -> 1.6.6
  • [new tag] 1.6.7 -> 1.6.7
  • [new tag] 1.6.8 -> 1.6.8
  • [new tag] 1.6.9 -> 1.6.9
  • [new tag] 1.7.0 -> 1.7.0
  • [new tag] 1.7.1 -> 1.7.1
  • [new tag] 1.7.2 -> 1.7.2
  • [new tag] 1.7.3 -> 1.7.3
  • [new tag] 1.7.4 -> 1.7.4
  • [new tag] 1.7.5 -> 1.7.5
  • [new tag] 1.7.6 -> 1.7.6
  • [new tag] 1.7.7 -> 1.7.7
  • [new tag] 1.8.0 -> 1.8.0
  • [new tag] 1.8.1 -> 1.8.1
  • [new tag] 1.8.2 -> 1.8.2
  • [new tag] 1.8.3 -> 1.8.3
  • [new tag] 1.8.4 -> 1.8.4
  • [new tag] 1.8.5 -> 1.8.5
  • [new tag] 1.8.6 -> 1.8.6
  • [new tag] 1.9.0 -> 1.9.0
  • [new tag] 1.9.1 -> 1.9.1
  • [new tag] 1.9.2 -> 1.9.2
  • [new tag] 1.9.3 -> 1.9.3
  • [new tag] 2.0.0 -> 2.0.0
  • [new tag] 2.0.1 -> 2.0.1
  • [new tag] 2.0.2 -> 2.0.2
  • [new tag] 2.0.3 -> 2.0.3
  • [new tag] 2.0.4 -> 2.0.4
  • [new tag] 2.0.5 -> 2.0.5
  • [new tag] 2.0.6 -> 2.0.6
  • [new tag] 2.1.0 -> 2.1.0
  • [new tag] 2.1.1 -> 2.1.1
  • [new tag] 2.1.10 -> 2.1.10
  • [new tag] 2.1.11 -> 2.1.11
  • [new tag] 2.1.12 -> 2.1.12
  • [new tag] 2.1.13 -> 2.1.13
  • [new tag] 2.1.14 -> 2.1.14
  • [new tag] 2.1.15 -> 2.1.15
  • [new tag] 2.1.16 -> 2.1.16
  • [new tag] 2.1.2 -> 2.1.2
  • [new tag] 2.1.3 -> 2.1.3
  • [new tag] 2.1.4 -> 2.1.4
  • [new tag] 2.1.5 -> 2.1.5
  • [new tag] 2.1.6 -> 2.1.6
  • [new tag] 2.1.7 -> 2.1.7
  • [new tag] 2.1.8 -> 2.1.8
  • [new tag] 2.1.9 -> 2.1.9
  • [new tag] 2.2.0 -> 2.2.0
  • [new tag] 2.2.1 -> 2.2.1
  • [new tag] 2.2.10 -> 2.2.10
  • [new tag] 2.2.11 -> 2.2.11
  • [new tag] 2.2.12 -> 2.2.12
  • [new tag] 2.2.13 -> 2.2.13
  • [new tag] 2.2.14 -> 2.2.14
  • [new tag] 2.2.15 -> 2.2.15
  • [new tag] 2.2.16 -> 2.2.16
  • [new tag] 2.2.17 -> 2.2.17
  • [new tag] 2.2.2 -> 2.2.2
  • [new tag] 2.2.3 -> 2.2.3
  • [new tag] 2.2.4 -> 2.2.4
  • [new tag] 2.2.5 -> 2.2.5
  • [new tag] 2.2.6 -> 2.2.6
  • [new tag] 2.2.7 -> 2.2.7
  • [new tag] 2.2.8 -> 2.2.8
  • [new tag] 2.2.9 -> 2.2.9
  • [new tag] 2.3.0 -> 2.3.0
  • [new tag] 2.4.0 -> 2.4.0
  • [new tag] 2.4.1 -> 2.4.1
  • [new tag] 2.4.10 -> 2.4.10
  • [new tag] 2.4.11 -> 2.4.11
  • [new tag] 2.4.12 -> 2.4.12
  • [new tag] 2.4.13 -> 2.4.13
  • [new tag] 2.4.14 -> 2.4.14
  • [new tag] 2.4.15 -> 2.4.15
  • [new tag] 2.4.16 -> 2.4.16
  • [new tag] 2.4.2 -> 2.4.2
  • [new tag] 2.4.3 -> 2.4.3
  • [new tag] 2.4.4 -> 2.4.4
  • [new tag] 2.4.5 -> 2.4.5
  • [new tag] 2.4.6 -> 2.4.6
  • [new tag] 2.4.7 -> 2.4.7
  • [new tag] 2.4.8 -> 2.4.8
  • [new tag] 2.4.9 -> 2.4.9
  • [new tag] 2.5.0 -> 2.5.0
  • [new tag] 2.5.1 -> 2.5.1
  • [new tag] 2.5.2 -> 2.5.2
  • [new tag] 2.5.3 -> 2.5.3
  • [new tag] 2.5.4 -> 2.5.4
  • [new tag] 2.5.5 -> 2.5.5
  • [new tag] 2.5.6 -> 2.5.6
  • [new tag] 2.5.7 -> 2.5.7
  • [new tag] 2.5.8 -> 2.5.8
  • [new tag] 2.5.9 -> 2.5.9
    HEAD is now at 8cffae872 Merge pull request #9113 from Homebrew/sorbet-files-update
    ==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
    https://github.com/Homebrew/brew#donations
    ==> Tapping homebrew/core
    Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
    remote: Enumerating objects: 820744, done.
    remote: Total 820744 (delta 0), reused 0 (delta 0), pack-reused 820744
    Receiving objects: 100% (820744/820744), 323.93 MiB | 8.40 MiB/s, done.
    Resolving deltas: 100% (552081/552081), done.
    Tapped 2 commands and 5341 formulae (5,626 files, 355.6MB).
    Already up-to-date.
    ==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics
No analytics data has been sent yet (or will be during this install run).

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations

==> Next steps:

@claui
Copy link
Contributor

claui commented Nov 12, 2020

Applying Homebrew/brew#9102:

$ cd "$(mktemp -d)" && curl -LO https://patch-diff.githubusercontent.com/raw/Homebrew/brew/pull/9102.patch && git -C /usr/local/Homebrew am "$(pwd)/9102.patch"
Applying: keg: add codesigning

Unsetting HOMEBREW_SKIP_OR_LATER_BOTTLES:

$ unset HOMEBREW_SKIP_OR_LATER_BOTTLES

Installing a formula from bottle:

$ arch -x86_64 brew install nettle
==> Downloading https://homebrew.bintray.com/bottles/gmp-6.2.0.catalina.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/2e6acd6e62d1b8ef0800061e113aea30a63f56b32b99c010234c0420fd6d3ecf?response-con
######################################################################## 100.0%
==> Downloading https://homebrew.bintray.com/bottles/nettle-3.6.catalina.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/7ac7677ba653dbef81dd83ed8cde3dfcb7b464d04442886c396179932f4f9faa?response-con
######################################################################## 100.0%
==> Installing dependencies for nettle: gmp
==> Installing nettle dependency: gmp
==> Pouring gmp-6.2.0.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/gmp/6.2.0: 20 files, 3.2MB
==> Installing nettle
==> Pouring nettle-3.6.catalina.bottle.tar.gz

Testing:

$ arch -x86_64 brew test nettle
==> Testing nettle
==> /usr/bin/clang test.c -L/usr/local/Cellar/nettle/3.6/lib -lnettle -o test
==> ./test

Works just fine.

@@ -317,6 +317,19 @@ EOABORT
)"
fi

UNAME_MACHINE="$(uname -m)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we exclude the whole block when HOMEBREW_ON_LINUX is 1? Just to make sure this Mac-specific code is not run there?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@iMichka sorry the page autorefresh didn't show this until after I merged 😬. This should be there still on ARM on Linux because it's an unsupported configuration.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it is, but it will tell people to use Rosetta on ARM linux I guess?

@MikeMcQuaid MikeMcQuaid merged commit 5ffcdbb into Homebrew:master Nov 12, 2020
@MikeMcQuaid MikeMcQuaid deleted the check_processor branch November 12, 2020 19:10
@Homebrew Homebrew locked as resolved and limited conversation to collaborators Dec 14, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants