9588b0d3db
This change imports the ports collection from the former porttix and srctix repositories and converts them to port(5) files with metadata pointing to the upstream release tarballs with patches checked into this repository. Ports are now developed and versioned along with the operating system and are automatically built per the PACKAGES environment variable. The patches are licensed under the same license as the relevant ports. Tix has gained support for the new port(5) format. tix-port(8) is the new high level ports build even point that handles downloading pstream releases into the new mirror cache directory, applying the patches, building the port with the lower-level tix-build(8), and finally installing the binary package. The new tix-vars(8) program parses port(5) files and the new tix-rmdiff(8) program produces input for tix-rmpatch(8). The old doc/ directory is discontinued in favor of manual pages documenting the new ports system. The obsolete porttix-create(8) and srctix-create(8) programs are removed.
430 lines
12 KiB
Diff
430 lines
12 KiB
Diff
diff -Paur --no-dereference -- git.upstream/builtin/log.c git/builtin/log.c
|
|
--- git.upstream/builtin/log.c
|
|
+++ git/builtin/log.c
|
|
@@ -249,7 +249,12 @@
|
|
fprintf(rev->diffopt.file, _("Final output: %d %s\n"), nr, stage);
|
|
}
|
|
|
|
+/* PATCH: Sortix does not have obsolescent XSI itimers. */
|
|
+#if defined(__sortix__)
|
|
+static timer_t early_output_timer;
|
|
+#else
|
|
static struct itimerval early_output_timer;
|
|
+#endif
|
|
|
|
static void log_show_early(struct rev_info *revs, struct commit_list *list)
|
|
{
|
|
@@ -297,9 +302,18 @@
|
|
* trigger every second even if we're blocked on a
|
|
* reader!
|
|
*/
|
|
+#if defined(__sortix__)
|
|
+ struct itimerspec its;
|
|
+ its.it_value.tv_sec = 0;
|
|
+ its.it_value.tv_nsec = 500000000;
|
|
+ its.it_interval.tv_sec = 0;
|
|
+ its.it_interval.tv_nsec = 0;
|
|
+ timer_settime(early_output_timer, 0, &its, NULL);
|
|
+#else
|
|
early_output_timer.it_value.tv_sec = 0;
|
|
early_output_timer.it_value.tv_usec = 500000;
|
|
setitimer(ITIMER_REAL, &early_output_timer, NULL);
|
|
+#endif
|
|
}
|
|
|
|
static void early_output(int signal)
|
|
@@ -309,6 +323,13 @@
|
|
|
|
static void setup_early_output(struct rev_info *rev)
|
|
{
|
|
+#if defined(__sortix__) && !defined(__SORTIX_HAS_RESTARTABLE_SYSCALLS__)
|
|
+ /* TODO: Sortix doesn't have restartable system calls at the moment and this
|
|
+ feature creates spurious failures, so this feature is disabled for
|
|
+ now. */
|
|
+ return;
|
|
+#endif
|
|
+
|
|
struct sigaction sa;
|
|
|
|
/*
|
|
@@ -331,13 +352,37 @@
|
|
*
|
|
* This is a one-time-only trigger.
|
|
*/
|
|
+#if defined(__sortix__)
|
|
+ struct sigevent sev;
|
|
+ memset(&sev, 0, sizeof(sev));
|
|
+ sev.sigev_notify = SIGEV_SIGNAL;
|
|
+ sev.sigev_signo = SIGALRM;
|
|
+ timer_create(CLOCK_MONOTONIC, &sev, &early_output_timer);
|
|
+ struct itimerspec its;
|
|
+ its.it_value.tv_sec = 0;
|
|
+ its.it_value.tv_nsec = 100000000;
|
|
+ its.it_interval.tv_sec = 0;
|
|
+ its.it_interval.tv_nsec = 0;
|
|
+ timer_settime(early_output_timer, 0, &its, NULL);
|
|
+#else
|
|
early_output_timer.it_value.tv_sec = 0;
|
|
early_output_timer.it_value.tv_usec = 100000;
|
|
setitimer(ITIMER_REAL, &early_output_timer, NULL);
|
|
+#endif
|
|
}
|
|
|
|
static void finish_early_output(struct rev_info *rev)
|
|
{
|
|
+#if defined(__sortix__) && !defined(__SORTIX_HAS_RESTARTABLE_SYSCALLS__)
|
|
+ /* TODO: Sortix doesn't have restartable system calls at the moment and this
|
|
+ feature creates spurious failures, so this feature is disabled for
|
|
+ now. */
|
|
+ return;
|
|
+#endif
|
|
+
|
|
+#if defined(__sortix__)
|
|
+ timer_delete(early_output_timer);
|
|
+#endif
|
|
int n = estimate_commit_count(rev, rev->commits);
|
|
signal(SIGALRM, SIG_IGN);
|
|
show_early_header(rev, "done", n);
|
|
diff -Paur --no-dereference -- git.upstream/compat/hstrerror.c git/compat/hstrerror.c
|
|
--- git.upstream/compat/hstrerror.c
|
|
+++ git/compat/hstrerror.c
|
|
@@ -2,6 +2,10 @@
|
|
#include <stdio.h>
|
|
#include <netdb.h>
|
|
|
|
+/* PATCH: hstrerror(3) is not used by git when getaddrinfo(3) is available.
|
|
+ Sortix has the modern getaddrinfo(3), but does not have the obsolete
|
|
+ gethostbyname(3). */
|
|
+#ifdef NO_IPV6
|
|
const char *githstrerror(int err)
|
|
{
|
|
static char buffer[48];
|
|
@@ -19,3 +23,4 @@
|
|
snprintf(buffer, sizeof(buffer), "Name resolution error %d", err);
|
|
return buffer;
|
|
}
|
|
+#endif
|
|
diff -Paur --no-dereference -- git.upstream/config.mak.uname git/config.mak.uname
|
|
--- git.upstream/config.mak.uname
|
|
+++ git/config.mak.uname
|
|
@@ -17,6 +17,8 @@
|
|
# because maintaining the nesting to match is a pain. If
|
|
# we had "elif" things would have been much nicer...
|
|
|
|
+# PATCH: Assume unknown operating systems have /dev/tty as required by POSIX.
|
|
+HAVE_DEV_TTY = YesPlease
|
|
ifeq ($(uname_S),OSF1)
|
|
# Need this for u_short definitions et al
|
|
BASIC_CFLAGS += -D_OSF_SOURCE
|
|
diff -Paur --no-dereference -- git.upstream/configure git/configure
|
|
--- git.upstream/configure
|
|
+++ git/configure
|
|
@@ -5315,7 +5315,7 @@
|
|
$as_echo_n "(cached) " >&6
|
|
else
|
|
ac_check_lib_save_LIBS=$LIBS
|
|
-LIBS="-lcurl $LIBS"
|
|
+LIBS="-lcurl -lssl -lcrypto -lz $LIBS"
|
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
/* end confdefs.h. */
|
|
|
|
@@ -5364,52 +5364,13 @@
|
|
|
|
if test -z "$NO_CURL"; then
|
|
|
|
-# Extract the first word of "curl-config", so it can be a program name with args.
|
|
-set dummy curl-config; ac_word=$2
|
|
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
|
-$as_echo_n "checking for $ac_word... " >&6; }
|
|
-if ${ac_cv_prog_CURL_CONFIG+:} false; then :
|
|
- $as_echo_n "(cached) " >&6
|
|
-else
|
|
- if test -n "$CURL_CONFIG"; then
|
|
- ac_cv_prog_CURL_CONFIG="$CURL_CONFIG" # Let the user override the test.
|
|
-else
|
|
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
|
-for as_dir in $PATH
|
|
-do
|
|
- IFS=$as_save_IFS
|
|
- test -z "$as_dir" && as_dir=.
|
|
- for ac_exec_ext in '' $ac_executable_extensions; do
|
|
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
|
- ac_cv_prog_CURL_CONFIG="curl-config"
|
|
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
|
- break 2
|
|
- fi
|
|
-done
|
|
- done
|
|
-IFS=$as_save_IFS
|
|
-
|
|
- test -z "$ac_cv_prog_CURL_CONFIG" && ac_cv_prog_CURL_CONFIG="no"
|
|
-fi
|
|
-fi
|
|
-CURL_CONFIG=$ac_cv_prog_CURL_CONFIG
|
|
-if test -n "$CURL_CONFIG"; then
|
|
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CURL_CONFIG" >&5
|
|
-$as_echo "$CURL_CONFIG" >&6; }
|
|
-else
|
|
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
|
-$as_echo "no" >&6; }
|
|
-fi
|
|
-
|
|
-
|
|
-
|
|
-if test $CURL_CONFIG != no; then
|
|
+# PATCH: pkg-config must be used instead of the bad curl-config.
|
|
|
|
config_appended_defs="$config_appended_defs${newline}CURL_CONFIG=${CURL_CONFIG}"
|
|
if test -z "${NO_OPENSSL}"; then
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Curl supports SSL" >&5
|
|
$as_echo_n "checking if Curl supports SSL... " >&6; }
|
|
- if test $(curl-config --features|grep SSL) = SSL; then
|
|
+ if test -n "$(${PKG_CONFIG:-pkg-config} libcurl --variable=supported_features|grep SSL)"; then
|
|
NEEDS_SSL_WITH_CURL=YesPlease
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
|
$as_echo "yes" >&6; }
|
|
@@ -5423,8 +5384,6 @@
|
|
fi
|
|
fi
|
|
|
|
-fi
|
|
-
|
|
|
|
#
|
|
# Define NO_EXPAT if you do not have expat installed. git-http-push is
|
|
diff -Paur --no-dereference -- git.upstream/git-compat-util.h git/git-compat-util.h
|
|
--- git.upstream/git-compat-util.h
|
|
+++ git/git-compat-util.h
|
|
@@ -325,6 +325,10 @@
|
|
typedef uintmax_t timestamp_t;
|
|
#define PRItime PRIuMAX
|
|
#define parse_timestamp strtoumax
|
|
+/* PATCH: Avoid conflicting Sortix macro. */
|
|
+#ifdef TIME_MAX
|
|
+#undef TIME_MAX
|
|
+#endif
|
|
#define TIME_MAX UINTMAX_MAX
|
|
|
|
#ifndef PATH_SEP
|
|
diff -Paur --no-dereference -- git.upstream/lockfile.c git/lockfile.c
|
|
--- git.upstream/lockfile.c
|
|
+++ git/lockfile.c
|
|
@@ -105,16 +105,10 @@
|
|
int n = 1;
|
|
int multiplier = 1;
|
|
long remaining_ms = 0;
|
|
- static int random_initialized = 0;
|
|
|
|
if (timeout_ms == 0)
|
|
return lock_file(lk, path, flags);
|
|
|
|
- if (!random_initialized) {
|
|
- srand((unsigned int)getpid());
|
|
- random_initialized = 1;
|
|
- }
|
|
-
|
|
if (timeout_ms > 0)
|
|
remaining_ms = timeout_ms;
|
|
|
|
@@ -133,7 +127,8 @@
|
|
|
|
backoff_ms = multiplier * INITIAL_BACKOFF_MS;
|
|
/* back off for between 0.75*backoff_ms and 1.25*backoff_ms */
|
|
- wait_ms = (750 + rand() % 500) * backoff_ms / 1000;
|
|
+ /* PATCH: Avoid rand(3) warning and modulo bias. */
|
|
+ wait_ms = (750 + arc4random_uniform(500)) * backoff_ms / 1000;
|
|
sleep_millisec(wait_ms);
|
|
remaining_ms -= wait_ms;
|
|
|
|
diff -Paur --no-dereference -- git.upstream/Makefile git/Makefile
|
|
--- git.upstream/Makefile
|
|
+++ git/Makefile
|
|
@@ -1176,9 +1176,7 @@
|
|
endif
|
|
ifdef NEEDS_SSL_WITH_CURL
|
|
CURL_LIBCURL += -lssl
|
|
- ifdef NEEDS_CRYPTO_WITH_SSL
|
|
- CURL_LIBCURL += -lcrypto
|
|
- endif
|
|
+ CURL_LIBCURL += -lcrypto
|
|
endif
|
|
ifdef NEEDS_IDN_WITH_CURL
|
|
CURL_LIBCURL += -lidn
|
|
@@ -1252,6 +1250,12 @@
|
|
LIB_4_CRYPTO += -framework Security -framework CoreFoundation
|
|
endif
|
|
endif
|
|
+# PATCH: Link with libintl first so it can statically link with libiconv.
|
|
+ifndef NO_GETTEXT
|
|
+ifndef LIBC_CONTAINS_LIBINTL
|
|
+ EXTLIBS += -lintl
|
|
+endif
|
|
+endif
|
|
ifdef NEEDS_LIBICONV
|
|
ifdef ICONVDIR
|
|
BASIC_CFLAGS += -I$(ICONVDIR)/include
|
|
@@ -1259,19 +1263,11 @@
|
|
else
|
|
ICONV_LINK =
|
|
endif
|
|
- ifdef NEEDS_LIBINTL_BEFORE_LIBICONV
|
|
- ICONV_LINK += -lintl
|
|
- endif
|
|
EXTLIBS += $(ICONV_LINK) -liconv
|
|
endif
|
|
ifdef NEEDS_LIBGEN
|
|
EXTLIBS += -lgen
|
|
endif
|
|
-ifndef NO_GETTEXT
|
|
-ifndef LIBC_CONTAINS_LIBINTL
|
|
- EXTLIBS += -lintl
|
|
-endif
|
|
-endif
|
|
ifdef NEEDS_SOCKET
|
|
EXTLIBS += -lsocket
|
|
endif
|
|
@@ -2184,8 +2180,10 @@
|
|
doc:
|
|
$(MAKE) -C Documentation all
|
|
|
|
+# PATCH: Build manual pages if asciidoc and xmlto are installed.
|
|
+all:: man
|
|
man:
|
|
- $(MAKE) -C Documentation man
|
|
+ if which asciidoc 1>/dev/null 2>/dev/null && which xmlto 1>/dev/null 2>/dev/null; then $(MAKE) -C Documentation man; fi
|
|
|
|
html:
|
|
$(MAKE) -C Documentation html
|
|
@@ -2502,7 +2500,7 @@
|
|
profile-fast-install: profile-fast
|
|
$(MAKE) install
|
|
|
|
-install: all
|
|
+install: all install-man
|
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
|
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
|
|
$(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'
|
|
@@ -2570,8 +2568,9 @@
|
|
install-doc:
|
|
$(MAKE) -C Documentation install
|
|
|
|
+# PATCH: Install manual pages if asciidoc and xmlto are installed.
|
|
install-man:
|
|
- $(MAKE) -C Documentation install-man
|
|
+ if which asciidoc 1>/dev/null 2>/dev/null && which xmlto 1>/dev/null 2>/dev/null; then $(MAKE) -C Documentation install-man; fi
|
|
|
|
install-html:
|
|
$(MAKE) -C Documentation install-html
|
|
@@ -2638,8 +2637,8 @@
|
|
|
|
### Cleaning rules
|
|
|
|
+# PATCH: Don't delete configure when making distclean because it is in the dist.
|
|
distclean: clean
|
|
- $(RM) configure
|
|
$(RM) config.log config.status config.cache
|
|
$(RM) config.mak.autogen config.mak.append
|
|
$(RM) -r autom4te.cache
|
|
diff -Paur --no-dereference -- git.upstream/progress.c git/progress.c
|
|
--- git.upstream/progress.c
|
|
+++ git/progress.c
|
|
@@ -39,6 +39,10 @@
|
|
uint64_t start_ns;
|
|
};
|
|
|
|
+/* PATCH: Sortix does not have obsolescent XSI itimers. */
|
|
+#if defined(__sortix__)
|
|
+static timer_t progress_timer;
|
|
+#endif
|
|
static volatile sig_atomic_t progress_update;
|
|
|
|
static void progress_interval(int signum)
|
|
@@ -48,8 +52,19 @@
|
|
|
|
static void set_progress_signal(void)
|
|
{
|
|
+#if defined(__sortix__) && !defined(__SORTIX_HAS_RESTARTABLE_SYSCALLS__)
|
|
+ /* TODO: Sortix doesn't have restartable system calls at the moment and this
|
|
+ feature creates spurious failures, so this feature is disabled for
|
|
+ now. */
|
|
+ return;
|
|
+#endif
|
|
+
|
|
struct sigaction sa;
|
|
+#if defined(__sortix__)
|
|
+ struct itimerspec v;
|
|
+#else
|
|
struct itimerval v;
|
|
+#endif
|
|
|
|
progress_update = 0;
|
|
|
|
@@ -59,16 +74,39 @@
|
|
sa.sa_flags = SA_RESTART;
|
|
sigaction(SIGALRM, &sa, NULL);
|
|
|
|
+#if defined(__sortix__)
|
|
+ struct sigevent sev;
|
|
+ memset(&sev, 0, sizeof(sev));
|
|
+ sev.sigev_notify = SIGEV_SIGNAL;
|
|
+ sev.sigev_signo = SIGALRM;
|
|
+ timer_create(CLOCK_MONOTONIC, &sev, &progress_timer);
|
|
+ v.it_interval.tv_sec = 1;
|
|
+ v.it_interval.tv_nsec = 0;
|
|
+ v.it_value = v.it_interval;
|
|
+ timer_settime(progress_timer, 0, &v, NULL);
|
|
+#else
|
|
v.it_interval.tv_sec = 1;
|
|
v.it_interval.tv_usec = 0;
|
|
v.it_value = v.it_interval;
|
|
setitimer(ITIMER_REAL, &v, NULL);
|
|
+#endif
|
|
}
|
|
|
|
static void clear_progress_signal(void)
|
|
{
|
|
+#if defined(__sortix__) && !defined(__SORTIX_HAS_RESTARTABLE_SYSCALLS__)
|
|
+ /* TODO: Sortix doesn't have restartable system calls at the moment and this
|
|
+ feature creates spurious failures, so this feature is disabled for
|
|
+ now. */
|
|
+ return;
|
|
+#endif
|
|
+
|
|
+#if defined(__sortix__)
|
|
+ timer_delete(progress_timer);
|
|
+#else
|
|
struct itimerval v = {{0,},};
|
|
setitimer(ITIMER_REAL, &v, NULL);
|
|
+#endif
|
|
signal(SIGALRM, SIG_IGN);
|
|
progress_update = 0;
|
|
}
|
|
diff -Paur --no-dereference -- git.upstream/run-command.c git/run-command.c
|
|
--- git.upstream/run-command.c
|
|
+++ git/run-command.c
|
|
@@ -491,9 +491,12 @@
|
|
#else
|
|
bug_die(pthread_sigmask(SIG_SETMASK, &all, &as->old),
|
|
"blocking all signals");
|
|
+/* PATCH: Sortix doesn't have pthread cancelation. */
|
|
+#ifdef PTHREAD_CANCEL_DISABLE
|
|
bug_die(pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &as->cs),
|
|
"disabling cancellation");
|
|
#endif
|
|
+#endif
|
|
}
|
|
|
|
static void atfork_parent(struct atfork_state *as)
|
|
@@ -502,8 +505,11 @@
|
|
if (sigprocmask(SIG_SETMASK, &as->old, NULL))
|
|
die_errno("sigprocmask");
|
|
#else
|
|
+/* PATCH: Sortix doesn't have pthread cancelation. */
|
|
+#ifdef PTHREAD_CANCEL_DISABLE
|
|
bug_die(pthread_setcancelstate(as->cs, NULL),
|
|
"re-enabling cancellation");
|
|
+#endif
|
|
bug_die(pthread_sigmask(SIG_SETMASK, &as->old, NULL),
|
|
"restoring signal mask");
|
|
#endif
|