diff --git a/recipes/dev/git/git.patch b/recipes/dev/git/git.patch deleted file mode 100644 index 998bd9d6f..000000000 --- a/recipes/dev/git/git.patch +++ /dev/null @@ -1,240 +0,0 @@ -diff -ruwN git-2.13.1/compat/bswap.h source/compat/bswap.h ---- git-2.13.1/compat/bswap.h 2017-06-04 19:08:11.000000000 -0600 -+++ source/compat/bswap.h 2025-04-24 11:20:06.475749424 -0600 -@@ -1,3 +1,7 @@ -+#if defined(__redox__) -+#include -+#endif -+ - /* - * Let's make sure we always have a sane definition for ntohl()/htonl(). - * Some libraries define those as a function call, just to perform byte -diff -ruwN git-2.13.1/compat/terminal.c source/compat/terminal.c ---- git-2.13.1/compat/terminal.c 2017-06-04 19:08:11.000000000 -0600 -+++ source/compat/terminal.c 2025-04-18 10:00:11.318697446 -0600 -@@ -137,6 +137,18 @@ - return buf.buf; - } - -+#elif defined(__redox__) -+ -+ssize_t __getline(char **lptr, size_t *n, FILE *fp); -+ -+char *git_terminal_prompt(const char *prompt, int echo) -+{ -+ char *line = NULL; -+ size_t n = 0; -+ __getline(&line, &n, stdin); -+ return line; // XXX leak -+} -+ - #else - - char *git_terminal_prompt(const char *prompt, int echo) -diff -ruwN git-2.13.1/configure source/configure ---- git-2.13.1/configure 2017-06-04 19:08:11.000000000 -0600 -+++ source/configure 2025-04-18 10:00:11.318697446 -0600 -@@ -6156,7 +6156,7 @@ - ac_res=$ac_cv_search_getaddrinfo - if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -- NO_IPV6= -+ NO_IPV6=YesPlease - else - NO_IPV6=YesPlease - fi -diff -ruwN git-2.13.1/daemon.c source/daemon.c ---- git-2.13.1/daemon.c 2017-06-04 19:08:11.000000000 -0600 -+++ source/daemon.c 2025-04-18 10:00:11.319697447 -0600 -@@ -71,13 +71,21 @@ - return hi->ip_address.buf; - } - -+#if defined(__redox__) -+#define LOG_ERR 0 -+#define LOG_INFO 1 -+#endif -+ - static void logreport(int priority, const char *err, va_list params) - { -+#if !defined(__redox__) - if (log_syslog) { - char buf[1024]; - vsnprintf(buf, sizeof(buf), err, params); - syslog(priority, "%s", buf); -- } else { -+ } else -+#endif -+ { - /* - * Since stderr is set to buffered mode, the - * logging of different processes will not overlap -@@ -888,8 +896,12 @@ - - if (!reuseaddr) - return 0; -+#if defined(__redox__) -+ return 0; -+#else - return setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, - &on, sizeof(on)); -+#endif - } - - struct socketlist { -@@ -1174,11 +1186,7 @@ - if (!group_name) - c.gid = c.pass->pw_gid; - else { -- struct group *group = getgrnam(group_name); -- if (!group) - die("group not found - %s", group_name); -- -- c.gid = group->gr_gid; - } - - return &c; -@@ -1348,10 +1356,12 @@ - usage(daemon_usage); - } - -+#if !defined(__redox__) - if (log_syslog) { - openlog("git-daemon", LOG_PID, LOG_DAEMON); - set_die_routine(daemon_die); - } else -+#endif - /* avoid splitting a message in the middle */ - setvbuf(stderr, NULL, _IOFBF, 4096); - -diff -ruwN git-2.13.1/git-compat-util.h source/git-compat-util.h ---- git-2.13.1/git-compat-util.h 2017-06-04 19:08:11.000000000 -0600 -+++ source/git-compat-util.h 2025-04-18 10:00:11.319697447 -0600 -@@ -1,6 +1,18 @@ - #ifndef GIT_COMPAT_UTIL_H - #define GIT_COMPAT_UTIL_H - -+#ifndef SIG_DFL -+#define SIG_DFL ((void (*)(int))0) -+#endif -+ -+#ifndef SIG_IGN -+#define SIG_IGN ((void (*)(int))1) -+#endif -+ -+#ifndef SIG_ERR -+#define SIG_ERR ((void (*)(int))-1) -+#endif -+ - #define _FILE_OFFSET_BITS 64 - - -@@ -323,6 +335,14 @@ - #define PATH_SEP ':' - #endif - -+#ifndef DEV_NULL -+#if defined(__redox__) -+#define DEV_NULL "/scheme/null" -+#else -+#define DEV_NULL "/dev/null" -+#endif -+#endif -+ - #ifdef HAVE_PATHS_H - #include - #endif -diff -ruwN git-2.13.1/Makefile source/Makefile ---- git-2.13.1/Makefile 2017-06-05 08:08:11.000000000 +0700 -+++ source/Makefile 2025-09-01 04:41:10.339224568 +0700 -@@ -979,7 +979,7 @@ - BUILTIN_OBJS += builtin/write-tree.o - - GITLIBS = common-main.o $(LIB_FILE) $(XDIFF_LIB) --EXTLIBS = -+EXTLIBS = -lnghttp2 - - GIT_USER_AGENT = git/$(GIT_VERSION) - -@@ -1802,7 +1802,6 @@ - - $(BUILT_INS): git$X - $(QUIET_BUILT_IN)$(RM) $@ && \ -- ln $< $@ 2>/dev/null || \ - ln -s $< $@ 2>/dev/null || \ - cp $< $@ - -@@ -2096,7 +2095,6 @@ - - $(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY) - $(QUIET_LNCP)$(RM) $@ && \ -- ln $< $@ 2>/dev/null || \ - ln -s $< $@ 2>/dev/null || \ - cp $< $@ - -@@ -2449,14 +2447,12 @@ - for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \ - $(RM) "$$bindir/$$p" && \ - test -z "$(NO_INSTALL_HARDLINKS)" && \ -- ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \ - ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \ - cp "$$bindir/git$X" "$$bindir/$$p" || exit; \ - done && \ - for p in $(BUILT_INS); do \ - $(RM) "$$execdir/$$p" && \ - test -z "$(NO_INSTALL_HARDLINKS)" && \ -- ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \ - ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \ - cp "$$execdir/git$X" "$$execdir/$$p" || exit; \ - done && \ -@@ -2464,7 +2460,6 @@ - for p in $$remote_curl_aliases; do \ - $(RM) "$$execdir/$$p" && \ - test -z "$(NO_INSTALL_HARDLINKS)" && \ -- ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ - ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ - cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ - done && \ -diff -ruwN git-2.13.1/run-command.c source/run-command.c ---- git-2.13.1/run-command.c 2017-06-04 19:08:11.000000000 -0600 -+++ source/run-command.c 2025-04-18 10:00:11.320697447 -0600 -@@ -120,9 +120,9 @@ - #ifndef GIT_WINDOWS_NATIVE - static inline void dup_devnull(int to) - { -- int fd = open("/dev/null", O_RDWR); -+ int fd = open(DEV_NULL, O_RDWR); - if (fd < 0) -- die_errno(_("open /dev/null failed")); -+ die_errno(_("open %s failed"), DEV_NULL); - if (dup2(fd, to) < 0) - die_errno(_("dup2(%d,%d) failed"), fd, to); - close(fd); -diff -ruwN git-2.13.1/setup.c source/setup.c ---- git-2.13.1/setup.c 2017-06-05 08:08:11.000000000 +0700 -+++ source/setup.c 2025-09-01 04:41:10.339224568 +0700 -@@ -1146,11 +1146,11 @@ - /* if any standard file descriptor is missing open it to /dev/null */ - void sanitize_stdfds(void) - { -- int fd = open("/dev/null", O_RDWR, 0); -+ int fd = open(DEV_NULL, O_RDWR, 0); - while (fd != -1 && fd < 2) - fd = dup(fd); - if (fd == -1) -- die_errno("open /dev/null or dup failed"); -+ die_errno("open %s or dup failed", DEV_NULL); - if (fd > 2) - close(fd); - } -@@ -1169,8 +1169,10 @@ - default: - exit(0); - } -+#if !defined(__redox__) - if (setsid() == -1) - die_errno("setsid failed"); -+#endif - close(0); - close(1); - close(2); diff --git a/recipes/dev/git/gitconfig b/recipes/dev/git/gitconfig new file mode 100644 index 000000000..0c90799a5 --- /dev/null +++ b/recipes/dev/git/gitconfig @@ -0,0 +1,2 @@ +[protocol] + version = 0 diff --git a/recipes/dev/git/recipe.toml b/recipes/dev/git/recipe.toml index 7d057f1c9..0c4adc4f4 100644 --- a/recipes/dev/git/recipe.toml +++ b/recipes/dev/git/recipe.toml @@ -1,15 +1,13 @@ [source] -tar = "https://www.kernel.org/pub/software/scm/git/git-2.13.1.tar.xz" -blake3 = "bc78271bffd60c5b8b938d8c08fd74dc2de8d21fbaf8f8e0e3155436d9263f17" -patches = ["git.patch"] +tar = "https://www.kernel.org/pub/software/scm/git/git-2.56.0.tar.xz" +blake3 = "596b02fea3d67e2ca45208aabebc92d2c14e7f2827f82cba59a630d55eea0854" [build] dependencies=[ "curl", "expat", - "nghttp2", - "openssl3", - "zlib" + "zlib", + "pcre2", ] template = "custom" script = """ @@ -18,36 +16,34 @@ DYNAMIC_INIT MAKEFLAGS=( NEEDS_SSL_WITH_CURL=1 NEEDS_CRYPTO_WITH_SSL=1 - NO_IPV6=1 - NO_PREAD=1 - NO_MMAP=1 - NO_SETITIMER=1 - NO_UNIX_SOCKETS=1 + NO_IPV6=1 # not implemented + NO_MMAP=1 # mmap writes extra null padding + NO_SETITIMER=1 # deprecated + NO_UNIX_SOCKETS=1 # need inotify NEEDS_LIBICONV= NEEDS_LIBRT= BLK_SHA1=1 - V=1 + RUST_TARGETS=$TARGET + INSTALL_SYMLINKS=1 ) -if [ "${COOKBOOK_DYNAMIC}" != "1" ]; then -# git does not use pkgconfig to be aware with zstd - MAKEFLAGS+=( EXTLIBS="-lzstd -lnghttp2 -lz" ) -fi - export CURL_CONFIG="${COOKBOOK_SYSROOT}/usr/bin/curl-config" ./configure \ --host="${GNU_TARGET}" \ --prefix=/usr \ + --sysconfdir=/etc \ ac_cv_fread_reads_directories=yes \ ac_cv_snprintf_returns_bogus=yes \ ac_cv_lib_curl_curl_global_init=yes "${COOKBOOK_MAKE}" "${MAKEFLAGS[@]}" -j"${COOKBOOK_MAKE_JOBS}" "${COOKBOOK_MAKE}" DESTDIR="${COOKBOOK_STAGE}" "${MAKEFLAGS[@]}" install -rm -rf "${COOKBOOK_STAGE}/usr/share/man" + +# TODO: pinned to protocol v0 otherwise silently quit +mkdir -p "${COOKBOOK_STAGE}/etc" +cp "${COOKBOOK_RECIPE}/gitconfig" "${COOKBOOK_STAGE}/etc/" """ [package] dependencies = [ "ca-certificates", - "nghttp2" ] diff --git a/recipes/wip/dev/git-tools/lazygit/recipe.toml b/recipes/wip/dev/git-tools/lazygit/recipe.toml index 4a2442f2e..a9b60975c 100644 --- a/recipes/wip/dev/git-tools/lazygit/recipe.toml +++ b/recipes/wip/dev/git-tools/lazygit/recipe.toml @@ -1,4 +1,4 @@ -#TODO: require git update +#TODO: unable to init TUI due to bugs in pty [source] git = "https://github.com/willnode/lazygit" branch = "redox"