summaryrefslogtreecommitdiff
path: root/www-client
diff options
context:
space:
mode:
authorBertrand Jacquin <bertrand@jacquin.bzh>2022-11-29 23:36:21 +0000
committerBertrand Jacquin <bertrand@jacquin.bzh>2022-11-30 20:12:22 +0000
commit6a43f026c987bff542a086a11baf4a9c0daad6f2 (patch)
tree110999fb64d849a6a5a6d4bfb0a168d6353faf70 /www-client
parentsys-kernel/stable-sources: add 6.0.10, drop 6.0.9 (diff)
downloadportage-6a43f026c987bff542a086a11baf4a9c0daad6f2.tar.xz
www-client/arcanist: version bump
Diffstat (limited to 'www-client')
-rw-r--r--www-client/arcanist/arcanist-20220527.ebuild (renamed from www-client/arcanist/arcanist-20191119.ebuild)102
-rw-r--r--www-client/arcanist/arcanist-9999.ebuild151
-rw-r--r--www-client/arcanist/files/20191119-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch53
-rw-r--r--www-client/arcanist/files/20191119-MINOR-Disable-self-upgrade.patch149
-rw-r--r--www-client/arcanist/files/20191119-breakout-migrate-to-python3.patch77
-rw-r--r--www-client/arcanist/files/20220527-MEDIUM-get-VERSION-from-usr-share-PN-GIT_COMMIT_INFO.patch50
-rw-r--r--www-client/arcanist/files/20220527-MEDIUM-use-system-provided-by-ca-certificates.patch46
-rw-r--r--www-client/arcanist/files/20220527-MINOR-disable-self-upgrade.patch170
-rw-r--r--www-client/arcanist/files/9999-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch53
-rw-r--r--www-client/arcanist/files/9999-MINOR-Disable-self-upgrade.patch149
-rw-r--r--www-client/arcanist/files/9999-breakout-migrate-to-python3.patch77
11 files changed, 338 insertions, 739 deletions
diff --git a/www-client/arcanist/arcanist-20191119.ebuild b/www-client/arcanist/arcanist-20220527.ebuild
index 0751a00f..5e154b7c 100644
--- a/www-client/arcanist/arcanist-20191119.ebuild
+++ b/www-client/arcanist/arcanist-20220527.ebuild
@@ -1,53 +1,54 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
+EAPI=8
-PYTHON_COMPAT=( python{3_8,3_9} )
+PYTHON_COMPAT=( python3_{9..11} )
PYTHON_REQ_USE="ncurses"
-inherit bash-completion-r1 python-single-r1 git-r3
+inherit toolchain-funcs python-single-r1 git-r3
DESCRIPTION="Command-line tool for Phabricator"
HOMEPAGE="https://www.phacility.com"
EGIT_REPO_URI="https://github.com/phacility/arcanist.git"
EGIT_BRANCH="stable"
-EGIT_COMMIT="bac2028421a4be6e34e08764bbbda49e68b3a604"
+EGIT_COMMIT="b6babd9a07f428c68863cb38f2fa87114e9ca2eb"
LICENSE="Apache-2.0"
SLOT="stable"
KEYWORDS="~amd64 ~x86"
IUSE="git lint mercurial subversion ssl test"
-REQUIRED_USE="test? ( lint )"
+REQUIRED_USE="test? ( lint )
+ ${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
-DEPEND="!${CATEGORY}/${PN}:0
- virtual/awk:0
+DEPEND="virtual/awk:0
test? (
+ sys-devel/bison:0
+ >=sys-devel/flex-2.5.35:0
dev-lang/php[xmlwriter]
- =dev-php/libphutil-20190930:stable[test]
)"
-RDEPEND="dev-lang/php[cli,curl,json,ssl?]
- =dev-php/libphutil-20190930:stable[ssl?]
+RDEPEND="dev-lang/php[curl,iconv,mysql,mysqli,pcntl,ssl?,unicode]
git? ( dev-vcs/git:0 )
mercurial? ( dev-vcs/mercurial:0 )
subversion? ( dev-vcs/subversion:0 )
lint? (
app-admin/puppet-lint:0
- dev-haskell/hlint:0
dev-php/PHP_CodeSniffer:0
$(python_gen_cond_dep '
- dev-python/pylint:0[${PYTHON_MULTI_USEDEP}]
- dev-python/flake8:0[${PYTHON_MULTI_USEDEP}]
+ dev-python/pylint:0[${PYTHON_USEDEP}]
+ dev-python/flake8:0[${PYTHON_USEDEP}]
')
dev-util/cppcheck:0
dev-util/cpplint:0
- net-libs/nodejs:0[npm]
- )"
+ net-libs/nodejs[npm]
+ )
+ ${PYTHON_DEPS}"
PATCHES=(
- "${FILESDIR}/${PV}-MINOR-Disable-self-upgrade.patch"
- "${FILESDIR}/${PV}-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch"
- "${FILESDIR}/${PV}-breakout-migrate-to-python3.patch"
+ "${FILESDIR}/${PV}-MEDIUM-get-VERSION-from-usr-share-PN-GIT_COMMIT_INFO.patch"
+ "${FILESDIR}/${PV}-MINOR-disable-self-upgrade.patch"
+ "${FILESDIR}/${PV}-MEDIUM-use-system-provided-by-ca-certificates.patch"
)
src_test() {
@@ -72,9 +73,9 @@ src_test() {
# TO INSTALL: Install Golint using `go get github.com/golang/lint/golint`.
# Set config in .git/arc/config for ArcanistPyLintLinter
- bin/arc set-config --local lint.pylint.codes.advice '^(C|R).*' > /dev/null
- bin/arc set-config --local lint.pylint.codes.error '^(E|F).*' > /dev/null
- bin/arc set-config --local lint.pylint.codes.warning '^W.*' > /dev/null
+ bin/arc set-config --local lint.pylint.codes.advice '^(C|R).*' > /dev/null || die
+ bin/arc set-config --local lint.pylint.codes.error '^(E|F).*' > /dev/null || die
+ bin/arc set-config --local lint.pylint.codes.warning '^W.*' > /dev/null || die
# + https://secure.phabricator.com/T7170
@@ -84,15 +85,21 @@ src_test() {
src_prepare() {
default
- git log --format='%H %ct' -n 1 > "${S}/GIT_COMMIT_INFO"
+ git log --format='%ct%x01%H' -n 1 > "${S}/GIT_COMMIT_INFO"
git remote add origin "${EGIT_REPO_URI}"
git remote -v > "${S}/GIT_REMOTE_INFO"
+ if use test ; then
+ tc-export AR CXX
+ fi
+
find "${S}" -type f -name .gitignore -print0 \
| xargs -0 --no-run-if-empty -- \
- rm
+ rm || die
- rm bin/*.bat
+ rm bin/*.bat || die
+ rm -r resources/ssl || die
+ rm ./src/parser/xhpast/bin/xhpast.exe || die
# Replace 'env' shebang to files it point to
find "${S}" -type f \
@@ -114,22 +121,57 @@ src_prepare() {
einfo "Replace ${REPLY/#${S}\/} shebang to #!${path} ${args}"
sed -i \
-e "1 s:^#!.*:#!${path} ${args}:" \
- "${REPLY}"
- eend $?
+ "${REPLY}" || die
done
}
-src_install() {
- newbashcomp resources/shell/bash-completion "arc"
+src_compile() {
+ if use test ; then
+ cd support/xhpast
+
+ # Avoid sandbox violation for dev-lang/php[snmp]
+ # php -f generate_nodes.php'
+ #
+ # * ACCESS DENIED: open_wr: /var/lib/net-snmp/mib_indexes/0
+ # abs_path: /var/lib/net-snmp/mib_indexes/0
+ # res_path: /var/lib/net-snmp/mib_indexes/0
+ # /usr/lib64/libsandbox.so(+0xd9d1)[0x7f226c8899d1]
+ # /usr/lib64/libsandbox.so(+0xdaf8)[0x7f226c889af8]
+ # /usr/lib64/libsandbox.so(+0x59cf)[0x7f226c8819cf]
+ # /usr/lib64/libsandbox.so(fopen+0x7c)[0x7f226c8843ec]
+ # /usr/lib64/libnetsnmp.so.30(netsnmp_mibindex_new+0x48)[0x7f22695f55e8]
+ # /usr/lib64/libnetsnmp.so.30(add_mibdir+0x9c)[0x7f226960a00c]
+ # /usr/lib64/libnetsnmp.so.30(netsnmp_init_mib+0xca)[0x7f22695f4bea]
+ # /usr/lib64/libnetsnmp.so.30(init_snmp+0x32d)[0x7f226961c2dd]
+ # php(zm_startup_snmp+0x51)[0x7f226cf81e11]
+ # php(zend_startup_module_ex+0x11a)[0x7f226d0bccea]
+ # /proc/15834/cmdline: php -f generate_nodes.php
+ #
+ # See snmp_config(5)
+ export SNMP_PERSISTENT_DIR="${T}"
+
+ emake
+ emake install
+ fi
+}
+src_install() {
insinto "/usr/share/${PN}"
doins GIT_COMMIT_INFO GIT_REMOTE_INFO
insinto "/usr/share/php/${PN}"
doins -r bin externals resources scripts src
- python_scriptinto "/usr/share/php/${PN}/scripts"
- python_doscript scripts/breakout.py
+ insinto "/usr/share/php/${PN}/support"
+ doins -r support/init support/lib
+
+ python_scriptinto "/usr/share/php/${PN}/support/arcanoid"
+ python_doscript support/arcanoid/arcanoid.py
+
+ if use test ; then
+ fperms 755 "/usr/share/php/${PN}/src/parser/xhpast/bin/xhpast"
+ dosym "../share/php/${PN}/src/parser/xhpast/bin/xhpast" /usr/bin/xhpast
+ fi
# Make executable all shebanged files
find "${ED}" -type f \
diff --git a/www-client/arcanist/arcanist-9999.ebuild b/www-client/arcanist/arcanist-9999.ebuild
deleted file mode 100644
index dcebeec8..00000000
--- a/www-client/arcanist/arcanist-9999.ebuild
+++ /dev/null
@@ -1,151 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python{3_8,3_9} )
-PYTHON_REQ_USE="ncurses"
-
-inherit bash-completion-r1 python-single-r1 git-r3
-
-DESCRIPTION="Command-line tool for Phabricator"
-HOMEPAGE="https://www.phacility.com"
-EGIT_REPO_URI="https://github.com/phacility/arcanist.git"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS=""
-IUSE="git lint mercurial subversion ssl test"
-REQUIRED_USE="test? ( lint )"
-
-DEPEND="!${CATEGORY}/${PN}:stable
- virtual/awk:0
- test? (
- dev-lang/php[xmlwriter]
- =dev-php/libphutil-${PV}:0[test]
- )"
-RDEPEND="dev-lang/php[cli,curl,json,ssl?]
- =dev-php/libphutil-${PV}:0[ssl?]
- git? ( dev-vcs/git:0 )
- mercurial? ( dev-vcs/mercurial:0 )
- subversion? ( dev-vcs/subversion:0 )
- lint? (
- app-admin/puppet-lint:0
- dev-haskell/hlint:0
- dev-php/PHP_CodeSniffer:0
- $(python_gen_cond_dep '
- dev-python/pylint:0[${PYTHON_MULTI_USEDEP}]
- dev-python/flake8:0[${PYTHON_MULTI_USEDEP}]
- ')
- dev-util/cppcheck:0
- dev-util/cpplint:0
- net-libs/nodejs:0[npm]
- )"
-
-PATCHES=(
- "${FILESDIR}/${PV}-MINOR-Disable-self-upgrade.patch"
- "${FILESDIR}/${PV}-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch"
- "${FILESDIR}/${PV}-breakout-migrate-to-python3.patch"
-)
-
-src_test() {
- einfo "Note that you need to install some Node JS script manually:"
- einfo " npm install -g coffeelint"
- einfo " npm install -g csslint"
- einfo " npm install -g jscs"
- einfo " npm install -g jshint"
- einfo " npm install -g jsonlint"
- einfo " npm install -g less"
-
- local GIT_NAME="${FUNCNAME} for ${CATEGORY}/${PF}"
- local GIT_EMAIL="portage@localhost"
-
- export GIT_AUTHOR_NAME="${GIT_NAME}"
- export GIT_AUTHOR_EMAIL="${GIT_EMAIL}"
-
- export GIT_COMMITTER_NAME="${GIT_NAME}"
- export GIT_COMMITTER_EMAIL="${GIT_EMAIL}"
-
- # Unable to locate binary "golint" to run linter ArcanistGoLintLinter. You may need to install the binary, or adjust your linter configuration.
- # TO INSTALL: Install Golint using `go get github.com/golang/lint/golint`.
-
- # Set config in .git/arc/config for ArcanistPyLintLinter
- bin/arc set-config --local lint.pylint.codes.advice '^(C|R).*' > /dev/null
- bin/arc set-config --local lint.pylint.codes.error '^(E|F).*' > /dev/null
- bin/arc set-config --local lint.pylint.codes.warning '^W.*' > /dev/null
-
- # + https://secure.phabricator.com/T7170
-
- bin/arc unit --everything --no-coverage || die "arc unit failed"
-}
-
-src_prepare() {
- default
-
- git log --format='%H %ct' -n 1 > "${S}/GIT_COMMIT_INFO"
- git remote add origin "${EGIT_REPO_URI}"
- git remote -v > "${S}/GIT_REMOTE_INFO"
-
- find "${S}" -type f -name .gitignore -print0 \
- | xargs -0 --no-run-if-empty -- \
- rm
-
- rm bin/*.bat
-
- # Replace 'env' shebang to files it point to
- find "${S}" -type f \
- | sort \
- | xargs -n 1 --no-run-if-empty -- \
- awk 'NR == 1 && /^#!\/usr\/bin\/env/ {print FILENAME}' \
- | while read ; do
- set -- $(sed -ne '1 s:^#!\([^ ]*\) ::p;q' ${REPLY})
- cmd="$1" ; shift ; args="$@"
-
- case "${cmd}" in
- bash|php) ;;
- *) continue ;;
- esac
-
- path="$(type -p ${cmd})" || continue
- [[ -z "${path}" ]] && continue
-
- einfo "Replace ${REPLY/#${S}\/} shebang to #!${path} ${args}"
- sed -i \
- -e "1 s:^#!.*:#!${path} ${args}:" \
- "${REPLY}"
- eend $?
- done
-}
-
-src_install() {
- newbashcomp resources/shell/bash-completion "arc"
-
- insinto "/usr/share/${PN}"
- doins GIT_COMMIT_INFO GIT_REMOTE_INFO
-
- insinto "/usr/share/php/${PN}"
- doins -r bin externals resources scripts src
-
- python_scriptinto "/usr/share/php/${PN}/scripts"
- python_doscript scripts/breakout.py
-
- # Make executable all shebanged files
- find "${ED}" -type f \
- | xargs -n 1 --no-run-if-empty -- \
- awk 'NR == 1 && /^#!/ {print FILENAME}' \
- | sed -e "s:${ED}:/:" \
- | xargs --no-run-if-empty -- \
- fperms 755
-
- dosym "../share/php/${PN}/bin/arc" /usr/bin/arc
-
- dodoc NOTICE README.md
-}
-
-pkg_postinst() {
- if use lint; then
- elog
- elog "Some linter need external NodeJS script. To install them, use:"
- elog " npm install -g csslint"
- fi
-}
diff --git a/www-client/arcanist/files/20191119-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch b/www-client/arcanist/files/20191119-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch
deleted file mode 100644
index faffe615..00000000
--- a/www-client/arcanist/files/20191119-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 32df2ddf6e67684d3e333b89b8cbbdbb6e32d387 Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Sun, 18 Dec 2016 01:59:52 +0000
-Subject: [PATCH 1/2] MEDIUM: Get VERSION for files in
- /usr/share/<PN>/GIT_COMMIT_INFO rather than from git
-
----
- src/workflow/ArcanistVersionWorkflow.php | 27 +++++++-----------------
- 1 file changed, 8 insertions(+), 19 deletions(-)
-
-diff --git a/src/workflow/ArcanistVersionWorkflow.php b/src/workflow/ArcanistVersionWorkflow.php
-index 9c470fc6ea05..fefd972786dc 100644
---- a/src/workflow/ArcanistVersionWorkflow.php
-+++ b/src/workflow/ArcanistVersionWorkflow.php
-@@ -35,30 +35,19 @@ EOTEXT
- }
-
- $roots = array(
-- 'arcanist' => dirname(phutil_get_library_root('arcanist')),
-- 'libphutil' => dirname(phutil_get_library_root('phutil')),
-+ 'arcanist',
-+ 'libphutil'
- );
-
-- foreach ($roots as $lib => $root) {
-- $working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
-- $configuration_manager = clone $this->getConfigurationManager();
-- $configuration_manager->setWorkingCopyIdentity($working_copy);
-- $repository = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
-- $configuration_manager);
--
-- if (!Filesystem::pathExists($repository->getMetadataPath())) {
-+ foreach ($roots as $lib) {
-+ $commit_info = "/usr/share/" . $lib . "/GIT_COMMIT_INFO";
-+ if (!Filesystem::pathExists($commit_info)) {
- throw new ArcanistUsageException(
-- pht('%s is not a git working copy.', $lib));
-+ pht('%s has no version registered in %s.', $lib, $commit_info));
- }
-
-- // NOTE: Carefully execute these commands in a way that works on Windows
-- // until T8298 is properly fixed. See PHI52.
--
-- list($commit) = $repository->execxLocal('log -1 --format=%%H');
-- $commit = trim($commit);
--
-- list($timestamp) = $repository->execxLocal('log -1 --format=%%ct');
-- $timestamp = trim($timestamp);
-+ $stdout = file_get_contents($commit_info);
-+ list($commit, $timestamp) = explode(' ', $stdout);
-
- $console->writeOut(
- "%s %s (%s)\n",
diff --git a/www-client/arcanist/files/20191119-MINOR-Disable-self-upgrade.patch b/www-client/arcanist/files/20191119-MINOR-Disable-self-upgrade.patch
deleted file mode 100644
index c08f801d..00000000
--- a/www-client/arcanist/files/20191119-MINOR-Disable-self-upgrade.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From 9d8145b666aef7fd98879b37216383c78dc5859e Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Sun, 18 Dec 2016 02:15:13 +0000
-Subject: [PATCH 2/2] MINOR: Disable self upgrade
-
----
- src/__phutil_library_map__.php | 2 -
- src/workflow/ArcanistUpgradeWorkflow.php | 112 -----------------------
- 2 files changed, 114 deletions(-)
- delete mode 100644 src/workflow/ArcanistUpgradeWorkflow.php
-
-diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
-index 63a4ee80321d..d3e1b34056bb 100644
---- a/src/__phutil_library_map__.php
-+++ b/src/__phutil_library_map__.php
-@@ -391,7 +391,6 @@ phutil_register_library_map(array(
- 'ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase.php',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistUnsafeDynamicStringXHPASTLinterRule.php',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase.php',
-- 'ArcanistUpgradeWorkflow' => 'workflow/ArcanistUpgradeWorkflow.php',
- 'ArcanistUploadWorkflow' => 'workflow/ArcanistUploadWorkflow.php',
- 'ArcanistUsageException' => 'exception/ArcanistUsageException.php',
- 'ArcanistUseStatementNamespacePrefixXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistUseStatementNamespacePrefixXHPASTLinterRule.php',
-@@ -816,7 +815,6 @@ phutil_register_library_map(array(
- 'ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
-- 'ArcanistUpgradeWorkflow' => 'ArcanistWorkflow',
- 'ArcanistUploadWorkflow' => 'ArcanistWorkflow',
- 'ArcanistUsageException' => 'Exception',
- 'ArcanistUseStatementNamespacePrefixXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
-diff --git a/src/workflow/ArcanistUpgradeWorkflow.php b/src/workflow/ArcanistUpgradeWorkflow.php
-deleted file mode 100644
-index 50449ef75f27..000000000000
---- a/src/workflow/ArcanistUpgradeWorkflow.php
-+++ /dev/null
-@@ -1,112 +0,0 @@
--<?php
--
--/**
-- * Upgrade arcanist itself.
-- */
--final class ArcanistUpgradeWorkflow extends ArcanistWorkflow {
--
-- public function getWorkflowName() {
-- return 'upgrade';
-- }
--
-- public function getCommandSynopses() {
-- return phutil_console_format(<<<EOTEXT
-- **upgrade**
--EOTEXT
-- );
-- }
--
-- public function getCommandHelp() {
-- return phutil_console_format(<<<EOTEXT
-- Supports: cli
-- Upgrade arcanist and libphutil to the latest versions.
--EOTEXT
-- );
-- }
--
-- public function run() {
-- $roots = array(
-- 'libphutil' => dirname(phutil_get_library_root('phutil')),
-- 'arcanist' => dirname(phutil_get_library_root('arcanist')),
-- );
--
-- foreach ($roots as $lib => $root) {
-- echo phutil_console_format(
-- "%s\n",
-- pht('Upgrading %s...', $lib));
--
-- $working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
-- $configuration_manager = clone $this->getConfigurationManager();
-- $configuration_manager->setWorkingCopyIdentity($working_copy);
-- $repository = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
-- $configuration_manager);
--
-- if (!Filesystem::pathExists($repository->getMetadataPath())) {
-- throw new ArcanistUsageException(
-- pht(
-- "%s must be in its git working copy to be automatically upgraded. ".
-- "This copy of %s (in '%s') is not in a git working copy.",
-- $lib,
-- $lib,
-- $root));
-- }
--
-- $this->setRepositoryAPI($repository);
--
-- // NOTE: Don't use requireCleanWorkingCopy() here because it tries to
-- // amend changes and generally move the workflow forward. We just want to
-- // abort if there are local changes and make the user sort things out.
-- $uncommitted = $repository->getUncommittedStatus();
-- if ($uncommitted) {
-- $message = pht(
-- 'You have uncommitted changes in the working copy for this '.
-- 'library:');
--
-- $list = id(new PhutilConsoleList())
-- ->setWrap(false)
-- ->addItems(array_keys($uncommitted));
--
-- id(new PhutilConsoleBlock())
-- ->addParagraph($message)
-- ->addList($list)
-- ->draw();
--
-- throw new ArcanistUsageException(
-- pht('`arc upgrade` can only upgrade clean working copies.'));
-- }
--
-- $branch_name = $repository->getBranchName();
-- if ($branch_name != 'master' && $branch_name != 'stable') {
-- throw new ArcanistUsageException(
-- pht(
-- "%s must be on either branch '%s' or '%s' to be automatically ".
-- "upgraded. ".
-- "This copy of %s (in '%s') is on branch '%s'.",
-- $lib,
-- 'master',
-- 'stable',
-- $lib,
-- $root,
-- $branch_name));
-- }
--
-- chdir($root);
--
-- try {
-- execx('git pull --rebase');
-- } catch (Exception $ex) {
-- // If we failed, try to go back to the old state, then throw the
-- // original exception.
-- exec_manual('git rebase --abort');
-- throw $ex;
-- }
-- }
--
-- echo phutil_console_format(
-- "**%s** %s\n",
-- pht('Updated!'),
-- pht('Your copy of arc is now up to date.'));
-- return 0;
-- }
--
--}
diff --git a/www-client/arcanist/files/20191119-breakout-migrate-to-python3.patch b/www-client/arcanist/files/20191119-breakout-migrate-to-python3.patch
deleted file mode 100644
index bd331b28..00000000
--- a/www-client/arcanist/files/20191119-breakout-migrate-to-python3.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From a71802a07c658462187b3c76343c3d15909f6872 Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Sat, 11 Jan 2020 21:05:49 +0000
-Subject: [PATCH] breakout: migrate to python3
-
-python2 is now deprecated
-
-note that breakout still works with python2
----
- scripts/breakout.py | 22 ++++++++++++----------
- 1 file changed, 12 insertions(+), 10 deletions(-)
-
-diff --git a/scripts/breakout.py b/scripts/breakout.py
-index c8c8b18818ad..bea068bd4dde 100755
---- a/scripts/breakout.py
-+++ b/scripts/breakout.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python2
-+#!/usr/bin/env python3
- import sys
- import time
- import select
-@@ -17,10 +17,10 @@ class Block:
- total = 0
-
- def __init__(self, x, y, w, h, c):
-- self.x = x
-- self.y = y
-- self.w = w
-- self.h = h
-+ self.x = int(round(x))
-+ self.y = int(round(y))
-+ self.w = int(round(w))
-+ self.h = int(round(h))
- self.fmt = curses.A_BOLD | curses.color_pair(c)
- self.alive = True
- for i in range(self.x, self.x + self.w):
-@@ -48,8 +48,8 @@ class Ball:
- killed = 0
-
- def __init__(self, x, y, vx, vy):
-- self.x = x
-- self.y = y
-+ self.x = int(round(x))
-+ self.y = int(round(y))
- self.vx = vx
- self.vy = vy
- Ball.alive = True
-@@ -58,6 +58,8 @@ class Ball:
- return True
-
- def encounter(self, dx, dy):
-+ dx = int(round(dx))
-+ dy = int(round(dy))
- ent = grid[self.y + dy + 1][self.x + dx + 1]
- if ent and not ent.collide(self):
- self.vx -= 2 * dx
-@@ -84,8 +86,8 @@ class Ball:
-
- class Ship:
- def __init__(self, x, y):
-- self.x = x
-- self.y = y
-+ self.x = int(round(x))
-+ self.y = int(round(y))
- self.hw = 10
- self.v = 4
- self.last = 1
-@@ -164,7 +166,7 @@ def main(stdscr):
-
- colors = [ 1, 3, 2, 6, 4, 5 ]
- h = height / 10
-- for x in range(1, width / 7 - 1):
-+ for x in range(1, int(width / 7) - 1):
- for y in range(1, 7):
- entities.append(Block(x * 7,
- y * h + x / 2 % 2,
diff --git a/www-client/arcanist/files/20220527-MEDIUM-get-VERSION-from-usr-share-PN-GIT_COMMIT_INFO.patch b/www-client/arcanist/files/20220527-MEDIUM-get-VERSION-from-usr-share-PN-GIT_COMMIT_INFO.patch
new file mode 100644
index 00000000..91e23014
--- /dev/null
+++ b/www-client/arcanist/files/20220527-MEDIUM-get-VERSION-from-usr-share-PN-GIT_COMMIT_INFO.patch
@@ -0,0 +1,50 @@
+From 298a6eb1bdca82209e973c17e1966c5d51715c1f Mon Sep 17 00:00:00 2001
+From: Bertrand Jacquin <bertrand@jacquin.bzh>
+Date: Sun, 18 Dec 2016 01:59:52 +0000
+Subject: [PATCH] MEDIUM: get VERSION from /usr/share/<PN>/GIT_COMMIT_INFO
+ rather than git
+
+---
+ .../workflow/ArcanistVersionWorkflow.php | 22 +++++--------------
+ 1 file changed, 6 insertions(+), 16 deletions(-)
+
+diff --git a/src/toolset/workflow/ArcanistVersionWorkflow.php b/src/toolset/workflow/ArcanistVersionWorkflow.php
+index 6bc673f56e44..6939adbfcb1c 100644
+--- a/src/toolset/workflow/ArcanistVersionWorkflow.php
++++ b/src/toolset/workflow/ArcanistVersionWorkflow.php
+@@ -44,29 +44,19 @@ EOTEXT
+ }
+
+ $roots = array(
+- 'arcanist' => dirname(phutil_get_library_root('arcanist')),
++ 'arcanist'
+ );
+
+- foreach ($roots as $lib => $root) {
+- $working_copy = ArcanistWorkingCopy::newFromWorkingDirectory($root);
++ foreach ($roots as $lib) {
++ $commit_info = "/usr/share/" . $lib . "/GIT_COMMIT_INFO";
+
+- $repository_api = $working_copy->getRepositoryAPI();
+- $is_git = ($repository_api instanceof ArcanistGitAPI);
+-
+- if (!$is_git) {
++ if (!Filesystem::pathExists($commit_info)) {
+ throw new PhutilArgumentUsageException(
+- pht(
+- 'Library "%s" (at "%s") is not a Git working copy, so no version '.
+- 'information can be provided.',
+- $lib,
+- Filesystem::readablePath($root)));
++ pht('%s has no version registered in %s.', $lib, $commit_info));
+ }
+
+- list($commit) = $repository_api->execxLocal(
+- 'log -1 --format=%s',
+- '%ct%x01%H');
++ $commit = file_get_contents($commit_info);
+ $commit = trim($commit);
+-
+ list($timestamp, $commit) = explode("\1", $commit);
+
+ $console->writeOut(
diff --git a/www-client/arcanist/files/20220527-MEDIUM-use-system-provided-by-ca-certificates.patch b/www-client/arcanist/files/20220527-MEDIUM-use-system-provided-by-ca-certificates.patch
new file mode 100644
index 00000000..c5c38e9b
--- /dev/null
+++ b/www-client/arcanist/files/20220527-MEDIUM-use-system-provided-by-ca-certificates.patch
@@ -0,0 +1,46 @@
+From b20cf84b58bb922d6fa99beee3a4160fed4f169b Mon Sep 17 00:00:00 2001
+From: Bertrand Jacquin <bertrand@jacquin.bzh>
+Date: Tue, 13 Aug 2013 16:07:58 +0200
+Subject: [PATCH] MEDIUM: use system provided by ca-certificates
+
+---
+ src/future/http/HTTPSFuture.php | 13 ++-----------
+ 1 file changed, 2 insertions(+), 11 deletions(-)
+
+diff --git a/src/future/http/HTTPSFuture.php b/src/future/http/HTTPSFuture.php
+index 48824fb1848b..4351a769397e 100644
+--- a/src/future/http/HTTPSFuture.php
++++ b/src/future/http/HTTPSFuture.php
+@@ -371,30 +371,21 @@ final class HTTPSFuture extends BaseHTTPFuture {
+ // `setCABundle()` or similar.
+ // - Then, check if a global bundle is set explicitly for all requests,
+ // via `setGlobalCABundle()` or similar.
+- // - Then, if a local custom.pem exists, use that, because it probably
+- // means that the user wants to override everything (also because the
+- // user might not have access to change the box's php.ini to add
+- // curl.cainfo).
+ // - Otherwise, try using curl.cainfo. If it's set explicitly, it's
+ // probably reasonable to try using it before we fall back to what
+ // libphutil ships with.
+- // - Lastly, try the default that libphutil ships with. If it doesn't
++ // - Lastly, try the default from ca-certificates. If it doesn't
+ // work, give up and yell at the user.
+
+ if (!$this->getCABundle()) {
+- $caroot = dirname(phutil_get_library_root('arcanist'));
+- $caroot = $caroot.'/resources/ssl/';
+-
+ $ini_val = ini_get('curl.cainfo');
+ if (self::getGlobalCABundle()) {
+ $this->setCABundleFromPath(self::getGlobalCABundle());
+- } else if (Filesystem::pathExists($caroot.'custom.pem')) {
+- $this->setCABundleFromPath($caroot.'custom.pem');
+ } else if ($ini_val) {
+ // TODO: We can probably do a pathExists() here, even.
+ $this->setCABundleFromPath($ini_val);
+ } else {
+- $this->setCABundleFromPath($caroot.'default.pem');
++ $this->setCABundleFromPath('/etc/ssl/certs/ca-certificates.crt');
+ }
+ }
+
diff --git a/www-client/arcanist/files/20220527-MINOR-disable-self-upgrade.patch b/www-client/arcanist/files/20220527-MINOR-disable-self-upgrade.patch
new file mode 100644
index 00000000..219caa8d
--- /dev/null
+++ b/www-client/arcanist/files/20220527-MINOR-disable-self-upgrade.patch
@@ -0,0 +1,170 @@
+From e9c4a751bb0a3d677be19c8141e29324928a4fad Mon Sep 17 00:00:00 2001
+From: Bertrand Jacquin <bertrand@jacquin.bzh>
+Date: Sun, 18 Dec 2016 02:15:13 +0000
+Subject: [PATCH] MINOR: disable self upgrade
+
+---
+ src/__phutil_library_map__.php | 2 -
+ src/workflow/ArcanistUpgradeWorkflow.php | 133 -----------------------
+ 2 files changed, 135 deletions(-)
+ delete mode 100644 src/workflow/ArcanistUpgradeWorkflow.php
+
+diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
+index a70e5cfe3cc3..c77f86a7e301 100644
+--- a/src/__phutil_library_map__.php
++++ b/src/__phutil_library_map__.php
+@@ -551,7 +551,6 @@ phutil_register_library_map(array(
+ 'ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase.php',
+ 'ArcanistUnsafeDynamicStringXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistUnsafeDynamicStringXHPASTLinterRule.php',
+ 'ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase.php',
+- 'ArcanistUpgradeWorkflow' => 'workflow/ArcanistUpgradeWorkflow.php',
+ 'ArcanistUploadWorkflow' => 'workflow/ArcanistUploadWorkflow.php',
+ 'ArcanistUsageException' => 'exception/ArcanistUsageException.php',
+ 'ArcanistUseStatementNamespacePrefixXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistUseStatementNamespacePrefixXHPASTLinterRule.php',
+@@ -1621,7 +1620,6 @@ phutil_register_library_map(array(
+ 'ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
+ 'ArcanistUnsafeDynamicStringXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
+ 'ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
+- 'ArcanistUpgradeWorkflow' => 'ArcanistArcWorkflow',
+ 'ArcanistUploadWorkflow' => 'ArcanistArcWorkflow',
+ 'ArcanistUsageException' => 'Exception',
+ 'ArcanistUseStatementNamespacePrefixXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
+diff --git a/src/workflow/ArcanistUpgradeWorkflow.php b/src/workflow/ArcanistUpgradeWorkflow.php
+deleted file mode 100644
+index 14f45af947f3..000000000000
+--- a/src/workflow/ArcanistUpgradeWorkflow.php
++++ /dev/null
+@@ -1,133 +0,0 @@
+-<?php
+-
+-final class ArcanistUpgradeWorkflow
+- extends ArcanistArcWorkflow {
+-
+- public function getWorkflowName() {
+- return 'upgrade';
+- }
+-
+- public function getWorkflowInformation() {
+- $help = pht(<<<EOTEXT
+-Upgrade this program to the latest version.
+-EOTEXT
+-);
+-
+- return $this->newWorkflowInformation()
+- ->setSynopsis(pht('Upgrade this program to the latest version.'))
+- ->addExample(pht('**upgrade**'))
+- ->setHelp($help);
+- }
+-
+- public function getWorkflowArguments() {
+- return array();
+- }
+-
+- public function runWorkflow() {
+- $log = $this->getLogEngine();
+-
+- $roots = array(
+- 'arcanist' => dirname(phutil_get_library_root('arcanist')),
+- );
+-
+- $supported_branches = array(
+- 'master',
+- 'stable',
+- );
+- $supported_branches = array_fuse($supported_branches);
+-
+- foreach ($roots as $library => $root) {
+- $log->writeStatus(
+- pht('PREPARING'),
+- pht(
+- 'Preparing to upgrade "%s"...',
+- $library));
+-
+- $working_copy = ArcanistWorkingCopy::newFromWorkingDirectory($root);
+-
+- $repository_api = $working_copy->getRepositoryAPI();
+- $is_git = ($repository_api instanceof ArcanistGitAPI);
+-
+- if (!$is_git) {
+- throw new PhutilArgumentUsageException(
+- pht(
+- 'The "upgrade" workflow uses "git pull" to upgrade, but '.
+- 'the software directory (in "%s") is not a Git working '.
+- 'copy. You must leave this directory as a Git working copy to '.
+- 'use "arc upgrade".',
+- $root));
+- }
+-
+- // NOTE: Don't use requireCleanWorkingCopy() here because it tries to
+- // amend changes and generally move the workflow forward. We just want to
+- // abort if there are local changes and make the user sort things out.
+- $uncommitted = $repository_api->getUncommittedStatus();
+- if ($uncommitted) {
+- $message = pht(
+- 'You have uncommitted changes in the working copy ("%s") for this '.
+- 'library ("%s"):',
+- $root,
+- $library);
+-
+- $list = id(new PhutilConsoleList())
+- ->setWrap(false)
+- ->addItems(array_keys($uncommitted));
+-
+- id(new PhutilConsoleBlock())
+- ->addParagraph($message)
+- ->addList($list)
+- ->addParagraph(
+- pht(
+- 'Discard these changes before running "arc upgrade".'))
+- ->draw();
+-
+- throw new PhutilArgumentUsageException(
+- pht('"arc upgrade" can only upgrade clean working copies.'));
+- }
+-
+- $branch_name = $repository_api->getBranchName();
+- if (!isset($supported_branches[$branch_name])) {
+- throw new PhutilArgumentUsageException(
+- pht(
+- 'Library "%s" (in "%s") is on branch "%s", but this branch is '.
+- 'not supported for automatic upgrades. Supported branches are: '.
+- '%s.',
+- $library,
+- $root,
+- $branch_name,
+- implode(', ', array_keys($supported_branches))));
+- }
+-
+- $log->writeStatus(
+- pht('UPGRADING'),
+- pht(
+- 'Upgrading "%s" (on branch "%s").',
+- $library,
+- $branch_name));
+-
+- $command = csprintf(
+- 'git pull --rebase origin -- %R',
+- $branch_name);
+-
+- $future = (new PhutilExecPassthru($command))
+- ->setCWD($root);
+-
+- try {
+- $this->newCommand($future)
+- ->execute();
+- } catch (Exception $ex) {
+- // If we failed, try to go back to the old state, then throw the
+- // original exception.
+- exec_manual('git rebase --abort');
+- throw $ex;
+- }
+- }
+-
+- $log->writeSuccess(
+- pht('UPGRADED'),
+- pht('This software is now up to date.'));
+-
+- return 0;
+- }
+-
+-}
diff --git a/www-client/arcanist/files/9999-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch b/www-client/arcanist/files/9999-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch
deleted file mode 100644
index 6e08c121..00000000
--- a/www-client/arcanist/files/9999-MEDIUM-Get-VERSION-for-files-in-usr-share-PN-GIT_COM.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From f45ae90ff1cac3b45fe7acc3d376112f707005de Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Sun, 18 Dec 2016 01:59:52 +0000
-Subject: [PATCH 1/2] MEDIUM: Get VERSION for files in
- /usr/share/<PN>/GIT_COMMIT_INFO rather than from git
-
----
- src/workflow/ArcanistVersionWorkflow.php | 27 +++++++-----------------
- 1 file changed, 8 insertions(+), 19 deletions(-)
-
-diff --git a/src/workflow/ArcanistVersionWorkflow.php b/src/workflow/ArcanistVersionWorkflow.php
-index 9c470fc6ea05..fefd972786dc 100644
---- a/src/workflow/ArcanistVersionWorkflow.php
-+++ b/src/workflow/ArcanistVersionWorkflow.php
-@@ -35,30 +35,19 @@ EOTEXT
- }
-
- $roots = array(
-- 'arcanist' => dirname(phutil_get_library_root('arcanist')),
-- 'libphutil' => dirname(phutil_get_library_root('phutil')),
-+ 'arcanist',
-+ 'libphutil'
- );
-
-- foreach ($roots as $lib => $root) {
-- $working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
-- $configuration_manager = clone $this->getConfigurationManager();
-- $configuration_manager->setWorkingCopyIdentity($working_copy);
-- $repository = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
-- $configuration_manager);
--
-- if (!Filesystem::pathExists($repository->getMetadataPath())) {
-+ foreach ($roots as $lib) {
-+ $commit_info = "/usr/share/" . $lib . "/GIT_COMMIT_INFO";
-+ if (!Filesystem::pathExists($commit_info)) {
- throw new ArcanistUsageException(
-- pht('%s is not a git working copy.', $lib));
-+ pht('%s has no version registered in %s.', $lib, $commit_info));
- }
-
-- // NOTE: Carefully execute these commands in a way that works on Windows
-- // until T8298 is properly fixed. See PHI52.
--
-- list($commit) = $repository->execxLocal('log -1 --format=%%H');
-- $commit = trim($commit);
--
-- list($timestamp) = $repository->execxLocal('log -1 --format=%%ct');
-- $timestamp = trim($timestamp);
-+ $stdout = file_get_contents($commit_info);
-+ list($commit, $timestamp) = explode(' ', $stdout);
-
- $console->writeOut(
- "%s %s (%s)\n",
diff --git a/www-client/arcanist/files/9999-MINOR-Disable-self-upgrade.patch b/www-client/arcanist/files/9999-MINOR-Disable-self-upgrade.patch
deleted file mode 100644
index 8410f9f1..00000000
--- a/www-client/arcanist/files/9999-MINOR-Disable-self-upgrade.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From ad1344ba9c5c4854b5d9faf91e9882fab29009fe Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Sun, 18 Dec 2016 02:15:13 +0000
-Subject: [PATCH 2/2] MINOR: Disable self upgrade
-
----
- src/__phutil_library_map__.php | 2 -
- src/workflow/ArcanistUpgradeWorkflow.php | 112 -----------------------
- 2 files changed, 114 deletions(-)
- delete mode 100644 src/workflow/ArcanistUpgradeWorkflow.php
-
-diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
-index 63a4ee80321d..d3e1b34056bb 100644
---- a/src/__phutil_library_map__.php
-+++ b/src/__phutil_library_map__.php
-@@ -391,7 +391,6 @@ phutil_register_library_map(array(
- 'ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase.php',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistUnsafeDynamicStringXHPASTLinterRule.php',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase' => 'lint/linter/xhpast/rules/__tests__/ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase.php',
-- 'ArcanistUpgradeWorkflow' => 'workflow/ArcanistUpgradeWorkflow.php',
- 'ArcanistUploadWorkflow' => 'workflow/ArcanistUploadWorkflow.php',
- 'ArcanistUsageException' => 'exception/ArcanistUsageException.php',
- 'ArcanistUseStatementNamespacePrefixXHPASTLinterRule' => 'lint/linter/xhpast/rules/ArcanistUseStatementNamespacePrefixXHPASTLinterRule.php',
-@@ -816,7 +815,6 @@ phutil_register_library_map(array(
- 'ArcanistUnnecessarySymbolAliasXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
- 'ArcanistUnsafeDynamicStringXHPASTLinterRuleTestCase' => 'ArcanistXHPASTLinterRuleTestCase',
-- 'ArcanistUpgradeWorkflow' => 'ArcanistWorkflow',
- 'ArcanistUploadWorkflow' => 'ArcanistWorkflow',
- 'ArcanistUsageException' => 'Exception',
- 'ArcanistUseStatementNamespacePrefixXHPASTLinterRule' => 'ArcanistXHPASTLinterRule',
-diff --git a/src/workflow/ArcanistUpgradeWorkflow.php b/src/workflow/ArcanistUpgradeWorkflow.php
-deleted file mode 100644
-index 50449ef75f27..000000000000
---- a/src/workflow/ArcanistUpgradeWorkflow.php
-+++ /dev/null
-@@ -1,112 +0,0 @@
--<?php
--
--/**
-- * Upgrade arcanist itself.
-- */
--final class ArcanistUpgradeWorkflow extends ArcanistWorkflow {
--
-- public function getWorkflowName() {
-- return 'upgrade';
-- }
--
-- public function getCommandSynopses() {
-- return phutil_console_format(<<<EOTEXT
-- **upgrade**
--EOTEXT
-- );
-- }
--
-- public function getCommandHelp() {
-- return phutil_console_format(<<<EOTEXT
-- Supports: cli
-- Upgrade arcanist and libphutil to the latest versions.
--EOTEXT
-- );
-- }
--
-- public function run() {
-- $roots = array(
-- 'libphutil' => dirname(phutil_get_library_root('phutil')),
-- 'arcanist' => dirname(phutil_get_library_root('arcanist')),
-- );
--
-- foreach ($roots as $lib => $root) {
-- echo phutil_console_format(
-- "%s\n",
-- pht('Upgrading %s...', $lib));
--
-- $working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
-- $configuration_manager = clone $this->getConfigurationManager();
-- $configuration_manager->setWorkingCopyIdentity($working_copy);
-- $repository = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
-- $configuration_manager);
--
-- if (!Filesystem::pathExists($repository->getMetadataPath())) {
-- throw new ArcanistUsageException(
-- pht(
-- "%s must be in its git working copy to be automatically upgraded. ".
-- "This copy of %s (in '%s') is not in a git working copy.",
-- $lib,
-- $lib,
-- $root));
-- }
--
-- $this->setRepositoryAPI($repository);
--
-- // NOTE: Don't use requireCleanWorkingCopy() here because it tries to
-- // amend changes and generally move the workflow forward. We just want to
-- // abort if there are local changes and make the user sort things out.
-- $uncommitted = $repository->getUncommittedStatus();
-- if ($uncommitted) {
-- $message = pht(
-- 'You have uncommitted changes in the working copy for this '.
-- 'library:');
--
-- $list = id(new PhutilConsoleList())
-- ->setWrap(false)
-- ->addItems(array_keys($uncommitted));
--
-- id(new PhutilConsoleBlock())
-- ->addParagraph($message)
-- ->addList($list)
-- ->draw();
--
-- throw new ArcanistUsageException(
-- pht('`arc upgrade` can only upgrade clean working copies.'));
-- }
--
-- $branch_name = $repository->getBranchName();
-- if ($branch_name != 'master' && $branch_name != 'stable') {
-- throw new ArcanistUsageException(
-- pht(
-- "%s must be on either branch '%s' or '%s' to be automatically ".
-- "upgraded. ".
-- "This copy of %s (in '%s') is on branch '%s'.",
-- $lib,
-- 'master',
-- 'stable',
-- $lib,
-- $root,
-- $branch_name));
-- }
--
-- chdir($root);
--
-- try {
-- execx('git pull --rebase');
-- } catch (Exception $ex) {
-- // If we failed, try to go back to the old state, then throw the
-- // original exception.
-- exec_manual('git rebase --abort');
-- throw $ex;
-- }
-- }
--
-- echo phutil_console_format(
-- "**%s** %s\n",
-- pht('Updated!'),
-- pht('Your copy of arc is now up to date.'));
-- return 0;
-- }
--
--}
diff --git a/www-client/arcanist/files/9999-breakout-migrate-to-python3.patch b/www-client/arcanist/files/9999-breakout-migrate-to-python3.patch
deleted file mode 100644
index 1d85ffd6..00000000
--- a/www-client/arcanist/files/9999-breakout-migrate-to-python3.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 9f22220e75669f0e1041d89630214115aa9ee1be Mon Sep 17 00:00:00 2001
-From: Bertrand Jacquin <bertrand@jacquin.bzh>
-Date: Sat, 11 Jan 2020 21:05:49 +0000
-Subject: [PATCH] breakout: migrate to python3
-
-python2 is now deprecated
-
-note that breakout still works with python2
----
- scripts/breakout.py | 22 ++++++++++++----------
- 1 file changed, 12 insertions(+), 10 deletions(-)
-
-diff --git a/scripts/breakout.py b/scripts/breakout.py
-index c8c8b18818ad..bea068bd4dde 100755
---- a/scripts/breakout.py
-+++ b/scripts/breakout.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python2
-+#!/usr/bin/env python3
- import sys
- import time
- import select
-@@ -17,10 +17,10 @@ class Block:
- total = 0
-
- def __init__(self, x, y, w, h, c):
-- self.x = x
-- self.y = y
-- self.w = w
-- self.h = h
-+ self.x = int(round(x))
-+ self.y = int(round(y))
-+ self.w = int(round(w))
-+ self.h = int(round(h))
- self.fmt = curses.A_BOLD | curses.color_pair(c)
- self.alive = True
- for i in range(self.x, self.x + self.w):
-@@ -48,8 +48,8 @@ class Ball:
- killed = 0
-
- def __init__(self, x, y, vx, vy):
-- self.x = x
-- self.y = y
-+ self.x = int(round(x))
-+ self.y = int(round(y))
- self.vx = vx
- self.vy = vy
- Ball.alive = True
-@@ -58,6 +58,8 @@ class Ball:
- return True
-
- def encounter(self, dx, dy):
-+ dx = int(round(dx))
-+ dy = int(round(dy))
- ent = grid[self.y + dy + 1][self.x + dx + 1]
- if ent and not ent.collide(self):
- self.vx -= 2 * dx
-@@ -84,8 +86,8 @@ class Ball:
-
- class Ship:
- def __init__(self, x, y):
-- self.x = x
-- self.y = y
-+ self.x = int(round(x))
-+ self.y = int(round(y))
- self.hw = 10
- self.v = 4
- self.last = 1
-@@ -164,7 +166,7 @@ def main(stdscr):
-
- colors = [ 1, 3, 2, 6, 4, 5 ]
- h = height / 10
-- for x in range(1, width / 7 - 1):
-+ for x in range(1, int(width / 7) - 1):
- for y in range(1, 7):
- entities.append(Block(x * 7,
- y * h + x / 2 % 2,