commit cff566e89cb95d37e3bc3478c154504e6cfc4b02 from: Thomas Adam date: Wed Aug 23 11:28:31 2023 UTC portable: enable compiling gotd This enables gotd -- for now, this is opt-in at compile-time, via: ./configure --enable-gotd commit - c8b73ac1663c35b32c7f8ce4173765461b72f3fa commit + cff566e89cb95d37e3bc3478c154504e6cfc4b02 blob - 0d1934c9a5ebcef5a5393c8d83db0384f884c787 blob + c4372610089506fc90094b29f0775201458dc21a --- .gitignore +++ .gitignore @@ -30,6 +30,8 @@ cvg/cvg etc/* got/got gotadmin/gotadmin +gotd/gotd +gotd/parse.c gotwebd/gotwebd gotwebd/pages.c gotwebd/parse.c blob - 04d91efdd5772f5a8034f9cbc1727ccc7767cd11 blob + 07d1985d4531f0737185f7cf2ae4fcaa592b51ac --- Makefile.am +++ Makefile.am @@ -1,5 +1,9 @@ SUBDIRS = compat libexec got tog gotadmin template gotwebd cvg # TODO: gotd gotsh template + +if GOTD_ENABLED +SUBDIRS += gotd +endif include $(top_builddir)/Makefile.common blob - b4694f88ccaecd942d4b26ff0a419a5339868ed0 blob + 3ff825b09b88db266bd8e38e15d6289244fed477 --- configure.ac +++ configure.ac @@ -21,6 +21,8 @@ AC_USE_SYSTEM_EXTENSIONS AC_CANONICAL_HOST AC_CONFIG_SUBDIRS([template]) +AC_ARG_ENABLE([gotd], + AS_HELP_STRING([--enable gotd], [build gotd and gotsh])) # When CFLAGS isn't set at this stage and gcc is detected by the macro below, # autoconf will automatically use CFLAGS="-O2 -g". Prevent that by using an @@ -873,6 +875,8 @@ LIBS="" AH_BOTTOM([#include "got_compat2.h"]) +AM_CONDITIONAL([GOTD_ENABLED], [test "x$enable_gotd" = xyes]) + AC_CONFIG_FILES([Makefile compat/Makefile cvg/Makefile @@ -894,12 +898,21 @@ AC_CONFIG_FILES([Makefile gotwebd/Makefile tog/Makefile Makefile.common:Makefile.common.in]) + +if test "x$enable_gotd" = "xyes"; then + AC_CONFIG_FILES([gotd/Makefile]) +fi + AC_OUTPUT executables="$(eval echo ${exec_prefix}/bin)" helpers="$(eval echo ${libexecdir})" manpages="$(eval echo ${mandir})" +if test -z "$enable_gotd"; then + enable_gotd="no" +fi + echo " Configured got-portable with: @@ -909,6 +922,7 @@ Configured got-portable with: Executables: ${executables} Bison: $YACC CFlags: $CFLAGS + Gotd: ${enable_gotd} Helpers: ${helpers} Man pages: ${manpages} " blob - 877e4d8fa52533fe457b51eefc3aed259e36e6a5 (mode 644) blob + /dev/null --- gotd/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -.PATH:${.CURDIR}/../lib - -.include "../got-version.mk" - -.if ${GOT_RELEASE} == "Yes" -BINDIR ?= ${PREFIX}/sbin -.endif - -PROG= gotd -SRCS= gotd.c auth.c repo_read.c repo_write.c log.c privsep_stub.c \ - listen.c imsg.c parse.y pack_create.c ratelimit.c deltify.c \ - bloom.c buf.c date.c deflate.c delta.c delta_cache.c error.c \ - gitconfig.c gotconfig.c inflate.c lockfile.c murmurhash2.c \ - object.c object_cache.c object_create.c object_idset.c \ - object_open_io.c object_parse.c opentemp.c pack.c path.c \ - read_gitconfig.c read_gotconfig.c reference.c repository.c \ - hash.c sigs.c pack_create_io.c pollfd.c reference_parse.c \ - repo_imsg.c pack_index.c session.c object_qid.c - -CLEANFILES = parse.h - -MAN = ${PROG}.conf.5 ${PROG}.8 - -CPPFLAGS = -I${.CURDIR}/../include -I${.CURDIR}/../lib -I${.CURDIR} -YFLAGS = - -.if defined(PROFILE) -LDADD = -lutil_p -lz_p -lm_p -lc_p -levent_p -.else -LDADD = -lutil -lz -lm -levent -.endif -DPADD = ${LIBZ} ${LIBUTIL} ${LIBM} ${LIBEVENT} - -.if ${GOT_RELEASE} != "Yes" -NOMAN = Yes -.endif - -realinstall: - ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} \ - -m ${BINMODE} ${PROG} ${BINDIR}/${PROG} - -.include blob - /dev/null blob + 466cacf26d2fffa6cc03782eaf718157bfcae71b (mode 644) --- /dev/null +++ gotd/Makefile.am @@ -0,0 +1,57 @@ +sbin_PROGRAMS = gotd + +include $(top_builddir)/Makefile.common + +gotd_SOURCES = gotd.c \ + imsg.c \ + log.c \ + parse.y \ + privsep_stub.c \ + repo_imsg.c \ + repo_read.c \ + repo_write.c \ + $(top_srcdir)/lib/bloom.c \ + $(top_srcdir)/lib/buf.c \ + $(top_srcdir)/lib/date.c \ + $(top_srcdir)/lib/deflate.c \ + $(top_srcdir)/lib/delta.c \ + $(top_srcdir)/lib/delta_cache.c \ + $(top_srcdir)/lib/deltify.c \ + $(top_srcdir)/lib/error.c \ + $(top_srcdir)/lib/gitconfig.c \ + $(top_srcdir)/lib/gotconfig.c \ + $(top_srcdir)/lib/inflate.c \ + $(top_srcdir)/lib/lockfile.c \ + $(top_srcdir)/lib/murmurhash2.c \ + $(top_srcdir)/lib/object.c \ + $(top_srcdir)/lib/object_cache.c \ + $(top_srcdir)/lib/object_create.c \ + $(top_srcdir)/lib/object_idset.c \ + $(top_srcdir)/lib/object_open_io.c \ + $(top_srcdir)/lib/object_parse.c \ + $(top_srcdir)/lib/opentemp.c \ + $(top_srcdir)/lib/pack.c \ + $(top_srcdir)/lib/pack_create.c \ + $(top_srcdir)/lib/pack_create_io.c \ + $(top_srcdir)/lib/pack_index.c \ + $(top_srcdir)/lib/path.c \ + $(top_srcdir)/lib/pollfd.c \ + $(top_srcdir)/lib/ratelimit.c \ + $(top_srcdir)/lib/read_gitconfig.c \ + $(top_srcdir)/lib/read_gotconfig.c \ + $(top_srcdir)/lib/reference.c \ + $(top_srcdir)/lib/reference_parse.c \ + $(top_srcdir)/lib/repository.c \ + $(top_srcdir)/lib/sha1.c \ + $(top_srcdir)/lib/sigs.c + +gotd_DEPENDENCIES = $(top_builddir)/compat/libopenbsd-compat.a +EXTRA_DIST = gotd.8 gotd.conf.5 + +man5_MANS = gotd.conf.5 +man8_MANS = gotd.8 + +LDADD = -L$(top_builddir)/compat -lopenbsd-compat -lm +if HOST_FREEBSD +LDADD += -lmd +endif blob - 63c88141e4edf1caafd25b0612e1ee3094111a79 blob + af44a052722a32c66a572c1d58b97b65193706e1 --- gotd/gotd.c +++ gotd/gotd.c @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include @@ -129,8 +128,13 @@ unix_socket_listen(const char *unix_socket_path, uid_t struct sockaddr_un sun; int fd = -1; mode_t old_umask, mode; + int sock_flags = SOCK_STREAM | SOCK_NONBLOCK; - fd = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK| SOCK_CLOEXEC, 0); +#ifdef SOCK_CLOEXEC + sock_flags |= SOCK_CLOEXEC; +#endif + + fd = socket(AF_UNIX, sock_flags, 0); if (fd == -1) { log_warn("socket"); return -1; blob - acb40dee8cd351b48669c3c3247c42ed5f44501b blob + 3f19d8e3cb52c8795ccedfb4853ac60cab2de702 --- gotd/gotd.h +++ gotd/gotd.h @@ -14,6 +14,7 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "got_compat.h" #define GOTD_UNIX_SOCKET "/var/run/gotd.sock" #define GOTD_UNIX_SOCKET_BACKLOG 10 blob - fff6f87ffd0edd1a69a1db346fad051aadc39c21 blob + 12e74e15e2a0ca034a3518c8172f54a3721a844f --- gotd/log.h +++ gotd/log.h @@ -14,6 +14,8 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "got_compat.h" + void log_init(int, int); void log_procinit(const char *); void log_setverbose(int); blob - e4ef41c13b9df9379aee01fa626867459e06f94e blob + 129aebf9ca0fd4335e15f41ac3374ac4670aa9e2 --- gotd/repo_write.c +++ gotd/repo_write.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include