git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, johannes.schindelin@gmx.de,
	Derrick Stolee <dstolee@microsoft.com>,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v2 1/1] ci(osx): use new location of the `perforce` cask
Date: Fri, 18 Oct 2019 12:51:43 +0200	[thread overview]
Message-ID: <20191018105143.GY29845@szeder.dev> (raw)
In-Reply-To: <372ab24acffbc956407cd93ed34135f83156e10d.1571316454.git.gitgitgadget@gmail.com>

On Thu, Oct 17, 2019 at 12:47:33PM +0000, Johannes Schindelin via GitGitGadget wrote:
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
> 
> The CI builds are failing for Mac OS X due to a change in the

s/CI/Azure Pipelines/

Our Travis CI builds are fine.

> location of the perforce cask. The command outputs the following
> error:
> 
>     + brew install caskroom/cask/perforce
>     Error: caskroom/cask was moved. Tap homebrew/cask-cask instead.
> 
> So let's try to call `brew cask install perforce` first (which is what
> that error message suggests, in a most round-about way).
> 
> The "caskroom" way was added in 672f51cb (travis-ci:
> fix Perforce install on macOS, 2017-01-22) and the justification
> is that the call "brew cask install perforce" can fail due to a checksum
> mismatch: the recipe simply downloads the official Perforce distro, and
> whenever that is updated, the recipe needs to be updated, too.

This paragraph is wrong, it mixes up things too much.

Prior to 672f51cb we used to install the 'perforce' _package_ with
'brew install perforce' (note: no 'cask' in there).  The justification
for 672f51cb was that the command 'brew install perforce' simply
stopped working, after Homebrew folks decided that it's better to move
the 'perforce' package to a "cask".  It was _their_ justification for
this move that 'brew install perforce' "can fail due to a checksum
mismatch ...", and casks can be installed without checksum
verification.  And indeed, both 'brew cask install perforce' and 'brew
install caskroom/cask/perforce' printed something along the lines of:

  ==> No checksum defined for Cask perforce, skipping verification

It's unclear to me why 672f51cb used 'brew install
caskroom/cask/perforce' instead of 'brew cask install perforce'.  It
appears (by running both commands on old Travis CI macOS images) that
both commands worked all the same already back then.

Anyway, as the error message at the top of the log message shows,
'brew install caskroom/cask/perforce' has stopped working recently,
but 'brew cask install perforce' still does, so let's use that.

Note that on Travis CI we explicitly specify which macOS image to use,
and nowadays we don't run 'brew update' during the build process [1],
so both commands work in our builds there.

[1] f2f4715033 (ci: don't update Homebrew, 2019-07-03)

> CI servers are typically fresh virtual machines, but not always. To
> accommodate for that, let's try harder if `brew cask install perforce`
> fails, by specifically pulling the latest `master` of the
> `homebrew-cask` repository.

Homebrew didn't record a checksum for Perforce versions r17.1, r17.2
and r18.1, so installing those still works fine.  Our Travis CI images
install r18.1.

However, when Homebrew updated to Perforce r19.1, they included the
checksum again for some reason (intentional or accidental; I didn't
look why).  This worked fine for a while, until a couple of days ago
Perforce updated the r19.1 binaries in place, breaking those
checksums.

If we were to still run 'brew update', then it would shortly fix the
checksum mismatch.  But we don't run it, and we do not want to run it
because it takes ages.  Falling back to pull from the 'homebrew-cask'
repository could be a reasonable and quick workaround.

> This will still fail, of course, when `homebrew-cask` falls behind
> Perforce's release schedule. But once it is updated, we can now simply
> re-run the failed jobs and they will pick up that update.

In our CI builds we don't at all care what the checksums of the
Perforce binaries are, so I would really like to tell 'brew' to ignore
any checksum mismatch when installing 'perforce'.  Alas, it appears
that 'brew' has no public options to turn of or to ignore checksum
verification.

Now, let's take a step back.

All 'brew cask install perforce' really does is run 'curl' to download
a tar.gz from the Perforce servers, verify its checksum, unpack it,
and put the executables somewhere on $PATH.  That's not rocket
science, we could easily do that ourselves; we don't even have to deal
with a tar.gz, the 'p4' and 'p4d' binaries for mac are readily
available for download at:

  http://filehost.perforce.com/perforce/r19.1/bin.macosx1010x86_64/

And, in fact, that's what we have been doing in some of our Linux jobs
since the very beginning, so basically only the download URL has to be
adjusted.


> As for updating `homebrew-cask`: the beginnings of automating this in
> https://dev.azure.com/gitgitgadget/git/_build?definitionId=11&_a=summary
> will be finished once the next Perforce upgrade comes around.
> 
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
> ---
>  ci/install-dependencies.sh | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
> index 85a9d6b15c..ce149ed39c 100755
> --- a/ci/install-dependencies.sh
> +++ b/ci/install-dependencies.sh
> @@ -40,6 +40,11 @@ osx-clang|osx-gcc)
>  	test -z "$BREW_INSTALL_PACKAGES" ||
>  	brew install $BREW_INSTALL_PACKAGES
>  	brew link --force gettext
> +	brew cask install perforce || {
> +		# Update the definitions and try again
> +		git -C "$(brew --repository)"/Library/Taps/homebrew/homebrew-cask pull &&
> +		brew cask install perforce
> +	} ||
>  	brew install caskroom/cask/perforce
>  	case "$jobname" in
>  	osx-gcc)
> -- 
> gitgitgadget

  reply	other threads:[~2019-10-18 10:51 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-15 17:32 [PATCH 0/1] ci: update caskroom/cask/perforce to new location Derrick Stolee via GitGitGadget
2019-10-15 17:32 ` [PATCH 1/1] ci(osx): use new location of the `perforce` cask Johannes Schindelin via GitGitGadget
2019-10-17 10:22 ` [PATCH 0/1] ci: update caskroom/cask/perforce to new location Johannes Schindelin
2019-10-17 12:47 ` [PATCH v2 " Derrick Stolee via GitGitGadget
2019-10-17 12:47   ` [PATCH v2 1/1] ci(osx): use new location of the `perforce` cask Johannes Schindelin via GitGitGadget
2019-10-18 10:51     ` SZEDER Gábor [this message]
2019-10-21  2:21       ` Junio C Hamano
2019-10-22 23:28         ` Johannes Schindelin
2019-10-22 23:37           ` Junio C Hamano
2019-10-22 23:23       ` Johannes Schindelin
2019-10-23  0:26         ` SZEDER Gábor
2019-10-23  0:19   ` [PATCH v3 0/1] ci: update caskroom/cask/perforce to new location Derrick Stolee via GitGitGadget
2019-10-23  0:19     ` [PATCH v3 1/1] ci(osx): use new location of the `perforce` cask Johannes Schindelin via GitGitGadget
2019-10-23 10:05       ` Junio C Hamano
2019-10-23 16:35         ` SZEDER Gábor
2019-10-24  0:20           ` [PATCH v2] ci: fix GCC install in the Travis CI GCC OSX job SZEDER Gábor
2019-11-18 22:18       ` [PATCH v3 1/1] ci(osx): use new location of the `perforce` cask SZEDER Gábor
2019-11-19 20:59         ` Johannes Schindelin
2019-11-20  1:18           ` Junio C Hamano
2019-11-20 10:59             ` Johannes Schindelin
2019-11-20 11:35               ` Junio C Hamano
2019-11-20 22:54             ` SZEDER Gábor
2019-11-21  0:26               ` Junio C Hamano
2019-11-21 11:12               ` Johannes Schindelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191018105143.GY29845@szeder.dev \
    --to=szeder.dev@gmail.com \
    --cc=dstolee@microsoft.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).