git: 0729ab54ee83 - main - git-arc: add initial non-FreeBSD and `$HOME` install support
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 31 Oct 2026 01:27:49 UTC
The branch main has been updated by ngie:
URL: https://cgit.FreeBSD.org/src/commit/?id=0729ab54ee8350533f319dd3a2bad25becab5bd5
commit 0729ab54ee8350533f319dd3a2bad25becab5bd5
Author: Enji Cooper <ngie@FreeBSD.org>
AuthorDate: 2026-10-29 23:42:56 +0000
Commit: Enji Cooper <ngie@FreeBSD.org>
CommitDate: 2026-10-31 01:27:41 +0000
git-arc: add initial non-FreeBSD and `$HOME` install support
Modify the existing code to permit setting a prefix via the `PREFIX`
make variable, similar to what `--prefix` provides in autotools-based
projects.
Add the required compatibility glue in order to function with vanilla
bmake, which enables installing the commands with Linux and macOS:
- vanilla bmake requires `scripts.mk` to install `SCRIPTS`.
- vanilla bmake does not tack `/man` on to the end of `MANDIR`, like
with FreeBSD.
While here, make the origins for various packages more generic, and
encourage end-users to install the package via the package/port instead
of installing it directly from source.
NOTE:
- regarding Linux support: this should now function out of the box with
Linux as long as the host has access to an appropriate `arc` binary.
- regarding macOS support: the arcanist/phorge packages do not yet
exist in Homebrew or [MacPorts][1], but are being added soon.
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D60995
[1]: https://github.com/macports/macports-ports/pull/36217
---
tools/tools/git/Makefile | 13 ++++++++++++-
tools/tools/git/git-arc.1 | 15 ++++++++-------
tools/tools/git/git-arc.sh | 31 ++++++++++++++++++++-----------
3 files changed, 40 insertions(+), 19 deletions(-)
diff --git a/tools/tools/git/Makefile b/tools/tools/git/Makefile
index ee73ad178486..bbf2e2e7a5f3 100644
--- a/tools/tools/git/Makefile
+++ b/tools/tools/git/Makefile
@@ -1,5 +1,16 @@
SCRIPTS= git-arc.sh git-mfc
-BINDIR?= /usr/local/bin
+PREFIX?= /usr/local
+BINDIR?= ${PREFIX}/bin
MAN= git-arc.1 git-mfc.1
+.if ${.MAKE.OS} == "FreeBSD"
+# This matches the value set in `bsd.own.mk`.
+MANDIR?= ${PREFIX}/share/man/man
+.else
+# Work with vanilla bmake on alternate OSes, e.g., Linux, macOS, etc.
+MANDIR?= ${PREFIX}/share/man
+
+.include <scripts.mk>
+.endif
+
.include <bsd.prog.mk>
diff --git a/tools/tools/git/git-arc.1 b/tools/tools/git/git-arc.1
index d6b9ed686aaa..b1a6736d392e 100644
--- a/tools/tools/git/git-arc.1
+++ b/tools/tools/git/git-arc.1
@@ -24,7 +24,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd August 23, 2026
+.Dd October 30, 2026
.Dt GIT-ARC 1
.Os
.Sh NAME
@@ -68,16 +68,17 @@ Phabricator reviews based on git commits.
It is geared towards
.Fx
development.
-It requires the
-.Pa devel/git ,
-.Pa devel/arcanist-lib
+It requires
+.Pa arc ,
+.Pa git ,
and
-.Pa textproc/jq
-packages; these will be installed automatically if
+.Pa jq .
+The dependencies will be installed automatically if
.Nm
is installed via the
.Pa devel/freebsd-git-arc
-package.
+package on
+.Fx .
.Pp
.Nm
assumes a one-to-one relationship between git commits and
diff --git a/tools/tools/git/git-arc.sh b/tools/tools/git/git-arc.sh
index efc29b92865d..840be477abf3 100755
--- a/tools/tools/git/git-arc.sh
+++ b/tools/tools/git/git-arc.sh
@@ -101,8 +101,8 @@ get_bool_config()
#
setup()
{
- [ -x "${ARC_CMD}" ] || err "arc is required, install devel/arcanist-lib"
- which jq >/dev/null 2>&1 || err "jq is required, install textproc/jq"
+ [ -x "${ARC_CMD}" ] || err "arc is required"
+ which jq >/dev/null 2>&1 || err "jq is required"
if [ "$VERBOSE" ]; then
exec 3>&1
@@ -146,15 +146,24 @@ setup()
trap cleanup EXIT HUP INT QUIT TRAP USR1 TERM
}
-#
-# Invoke the actual arc command. This allows us to only rely on the
-# devel/arcanist-lib port, which installs the actual script, rather than
-# the devel/arcanist-port, which installs a symlink in ${LOCALBASE}/bin
-# but conflicts with the archivers/arc port.
-#
-: "${LOCALBASE:=$(sysctl -n user.localbase)}"
-: "${LOCALBASE:=/usr/local}"
-: "${ARC_CMD:=${LOCALBASE}/lib/php/arcanist/bin/arc}"
+case "$(uname -s)" in
+FreeBSD)
+ #
+ # Invoke the actual arc command. This allows us to only rely on the
+ # devel/*arcanist-lib port, which installs the actual script, rather than
+ # devel/*arcanist, which installs a symlink in ${LOCALBASE}/bin but
+ # conflicts with the archivers/arc port.
+ #
+ : "${LOCALBASE:=$(sysctl -n user.localbase)}"
+ : "${LOCALBASE:=/usr/local}"
+ : "${ARC_CMD:=${LOCALBASE}/lib/php/arcanist/bin/arc}"
+ ;;
+*)
+ # Linux, macOS, etc.
+ : "${ARC_CMD:="$(command -v arc)"}"
+ ;;
+esac
+
arc()
{
${ARC_CMD} "$@"