On Thu, Apr 20, 2023 at 02:25:35PM +0200, Landry Breuil wrote:
> yes it is but for complicated cases "make update" cant work iirc. You
> need to update both packages (gitwrapper and git) altogether for it to
> work.
>
> have you tried pointing pkg_add -u at /usr/ports/packages/amd64/all via
> TRUSTED_PKG_PATH (dont remember the exact magic)
sthen@ helped me solve the remaining issue. The fix is to use
@conflict git-<2.40.0p0 instead of @conflict git-<=2.40.0 (which
seems to match any pX revision marker).
This version upgrades fine: git-2.40.0->git-2.40.0p0+gitwrapper-0.87: ok
Quick test, without having gotd running:
$ git init foo.git
Initialized empty Git repository in /tmp/foo.git/.git/
$ git clone ssh://localhost//tmp/foo.git foo2
Cloning into 'foo2'...
warning: You appear to have cloned an empty repository.
$ cat /etc/gotd.conf
user stsp
repository "test" {
path "/tmp/test.git"
permit rw stsp
}
$ gotadmin init /tmp/test.git
gotadmin: directory exists and is not empty
$ git clone ssh://localhost/test test1
Cloning into 'test1'...
git-upload-pack: connect: /var/run/gotd.sock: Connection refused
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
$
Second clone fails as expected since gotd is not running. The point is
that gitwrapper (started as git-upload-pack) ends up launching gotsh(1) for
/tmp/test.git. Whereas the real git-upload-pack, which is still present in
the directory /usr/local/libexec/git/, was launched for /tmp/foo.git.
ok?
diff /usr/ports
commit - 6e3c62131849d4c5d8f47e7e4e2d5d95fb0a263f
path + /usr/ports
blob - ddabef359f8634fd9bbf1bb3b9ca610794cad214
file + devel/git/Makefile
--- devel/git/Makefile
+++ devel/git/Makefile
@@ -3,6 +3,7 @@ DISTNAME = git-${V}
COMMENT-x11 = graphical tools
V = 2.40.0
+REVISION = 0
DISTNAME = git-${V}
CATEGORIES = devel
@@ -41,8 +42,10 @@ RUN_DEPENDS-main = devel/cvsps \
RUN_DEPENDS-main = devel/cvsps \
+ devel/got,-gitwrapper \
devel/p5-Error \
mail/p5-Mail-Tools
+
LIB_DEPENDS-main = devel/gettext,-runtime \
net/curl
@@ -137,5 +140,7 @@ post-install:
perl -pi -e "s|${WRKINST}||g" ${PREFIX}/share/gitweb/gitweb.cgi
${INSTALL_DATA} ${WRKBUILD}/gitweb/README ${PREFIX}/share/gitweb
${MODTCL_WISH_ADJ} ${PREFIX}/libexec/git/git-gui--askpass
+ rm ${PREFIX}/bin/git-receive-pack # handled by gitwrapper
+ rm ${PREFIX}/bin/git-upload-pack # handled by gitwrapper
.include <bsd.port.mk>
blob - ae0a7f1539223a157f78d388e6c358f9f4c8107b
file + devel/git/pkg/PLIST-main
--- devel/git/pkg/PLIST-main
+++ devel/git/pkg/PLIST-main
@@ -5,10 +5,8 @@ bin/git-cvsserver
@rcscript ${RCDIR}/gitdaemon
@bin bin/git
bin/git-cvsserver
-@bin bin/git-receive-pack
@shell bin/git-shell
@bin bin/git-upload-archive
-@bin bin/git-upload-pack
@bin bin/scalar
@static-lib lib/libgit.a
${P5SITE}/Git/
blob - 84f229d487bb8f3fbf6d1b3a1f04693f75daaa3b
file + devel/got/Makefile
--- devel/got/Makefile
+++ devel/got/Makefile
@@ -1,11 +1,13 @@
COMMENT-main = game of trees version control system
COMMENT-server = game of trees repository server
COMMENT-webd = game of trees repository fast-cgi server
+COMMENT-gitwrapper = invoke an appropriate Git repository server
-V = 0.86
+V = 0.87
DISTNAME = got-${V}
PKGNAME-server = gotd-${V}
PKGNAME-webd = gotwebd-${V}
+PKGNAME-gitwrapper = gitwrapper-${V}
CATEGORIES = devel
HOMEPAGE = https://gameoftrees.org
MAINTAINER = Stefan Sperling <[email protected]>
@@ -13,12 +15,15 @@ MULTI_PACKAGES = -main -server -webd
# ISC
PERMIT_PACKAGE = Yes
-MULTI_PACKAGES = -main -server -webd
+RUN_DEPENDS-server = devel/got,-gitwrapper
+MULTI_PACKAGES = -main -server -webd -gitwrapper
+
# uses pledge()
WANTLIB-main = c curses m panel pthread util z
WANTLIB-server = c event m util z
WANTLIB-webd = c event m util z
+WANTLIB-gitwrapper = c
MAKE_FLAGS = CC="${CC}"
ALL_TARGET = all server webd
@@ -38,4 +43,8 @@ FAKE_FLAGS = MANDIR=${PREFIX}/man/man CHROOT_DIR=${VA
TEST_TARGET = regress
FAKE_FLAGS = MANDIR=${PREFIX}/man/man CHROOT_DIR=${VARBASE}/www
+post-install:
+ @ln -s gitwrapper ${PREFIX}/bin/git-upload-pack
+ @ln -s gitwrapper ${PREFIX}/bin/git-receive-pack
+
.include <bsd.port.mk>
blob - e5e69b24f97535a28a03dea6989f19bd9fdd61f6
file + devel/got/distinfo
--- devel/got/distinfo
+++ devel/got/distinfo
@@ -1,2 +1,2 @@
-SHA256 (got-0.86.tar.gz) = JHOjr8U1bRmZ74/qf/P3PqZJGUYq34cQVCSw+jurh+w=
-SIZE (got-0.86.tar.gz) = 806708
+SHA256 (got-0.87.tar.gz) = dPi14M4RWMh3Yo4NlaQrjhzh/gr8L8AZEbpOpHGXhgU=
+SIZE (got-0.87.tar.gz) = 822791
blob - /dev/null
file + devel/got/pkg/DESCR-gitwrapper (mode 644)
--- /dev/null
+++ devel/got/pkg/DESCR-gitwrapper
@@ -0,0 +1,8 @@
+The gitwrapper program is designed to replace git-upload-pack(1) and
+git-receive-pack(1) and to invoke an appropriate Git server based on
+configuration information placed in gotd.conf(5). This permits the
+administrator to configure which Git server is to be invoked on the
+system at run-time. Git repositories which are listed in gotd.conf(5)
+and exist on the filesystem will be served by gotsh(1). Any other Git
+repositories will be served by git-upload-pack(1) and
+git-receive-pack(1).
blob - /dev/null
file + devel/got/pkg/PLIST-gitwrapper (mode 644)
--- /dev/null
+++ devel/got/pkg/PLIST-gitwrapper
@@ -0,0 +1,5 @@
+@conflict git-<2.40.0p0
+bin/git-receive-pack
+bin/git-upload-pack
+@bin bin/gitwrapper
+@man man/man1/gitwrapper.1