diff --git a/community/fossil/APKBUILD b/community/fossil/APKBUILD
index 08bc86eb1640139cbc8f69602c5c362205f0a071..4fe57654e1e2c43946c42e2b60db471cf8bd3fa3 100644
--- a/community/fossil/APKBUILD
+++ b/community/fossil/APKBUILD
@@ -11,7 +11,10 @@ license="BSD-2-Clause"
 makedepends="openssl-dev>3 tcl-dev zlib-dev"
 checkdepends="coreutils ed tcl-lib"
 subpackages="$pkgname-bash-completion $pkgname-zsh-completion"
-source="https://www.fossil-scm.org/home/tarball/version-$pkgver/fossil-src-$pkgver.tar.gz"
+source="https://www.fossil-scm.org/home/tarball/version-$pkgver/fossil-src-$pkgver.tar.gz
+	fix-tests.patch
+	"
+patch_args="-p0"
 builddir="$srcdir/$pkgname-src-$pkgver"
 
 build() {
@@ -44,4 +47,5 @@ package() {
 
 sha512sums="
 7fc7de7d947b0946866df38c6cb2215f6452d31903cae6470bb4a692816b2803eb66ea372280256e5cd00759e4d02a0ae459de2f56f39af10e873579d53d33ee  fossil-src-2.24.tar.gz
+2ce139acca006a754616409e2b713e814d7daf3633c3171e5ac2f98778fcb990638a4bb2037e2c02e7e3e9227fd1f7e0fad33e7ed8f98cc9a0fdc2f698629ccf  fix-tests.patch
 "
diff --git a/community/fossil/fix-tests.patch b/community/fossil/fix-tests.patch
new file mode 100644
index 0000000000000000000000000000000000000000..4c58e06272491a3609166877bc03b704e7c6f406
--- /dev/null
+++ b/community/fossil/fix-tests.patch
@@ -0,0 +1,274 @@
+Patch-Source: https://fossil-scm.org/home/vpatch?from=merge-in:17c01c549e73c6b8&to=17c01c549e73c6b8
+--
+Index: test/amend.test
+==================================================================
+--- test/amend.test
++++ test/amend.test
+@@ -313,10 +313,11 @@
+   }
+   foreach res [lsort -nocase $result] {
+     append t2exp "sym-$res*"
+   }
+   eval fossil amend $HASH $tags
++  set t1exp [string trimleft $t1exp ,]
+   test amend-tag-$tc.1 {[string match "*hash:*$HASH*tags:*$t1exp*" $RESULT]}
+   fossil tag ls --raw $HASH
+   test amend-tag-$tc.2 {[string match $t2exp $RESULT]}
+   fossil timeline -n 1
+   test amend-tag-$tc.3 {[string match $t3exp $RESULT]}
+
+Index: test/json.test
+==================================================================
+--- test/json.test
++++ test/json.test
+@@ -107,11 +107,11 @@
+     set request [subst {POST $url HTTP/1.0\r
+ Host: localhost\r
+ User-Agent: Fossil-Test\r
+ Cookie: $cookie\r
+ Content-Type: application/json
+-Content-Length $len
++Content-Length: $len
+ \r
+ $data}]
+   } else {
+     set request [subst {GET $url HTTP/1.0\r
+ Host: localhost\r
+
+Index: test/merge5.test
+==================================================================
+--- test/merge5.test
++++ test/merge5.test
+@@ -23,11 +23,11 @@
+ }
+ protOut {
+ fossil sqlite3 --no-repository reacts badly to SQL dumped from
+ repositories created from fossil older than version 2.0.
+ }
+-test merge5-sqlite3-issue false knownBug
++#test merge5-sqlite3-issue false knownBug
+ test_cleanup_then_return
+ 
+ # Verify the results of a check-out
+ #
+ proc checkout-test {testid expected_content} {
+
+Index: test/stash.test
+==================================================================
+--- test/stash.test
++++ test/stash.test
+@@ -168,14 +168,14 @@
+ 
+ ########
+ # fossil stash show|cat ?STASHID? ?DIFF-OPTIONS?
+ # fossil stash [g]diff ?STASHID? ?DIFF-OPTIONS?
+ 
+-fossil stash show
+-test stash-1-show {[normalize_result] eq $diff_stash_1}
+-fossil stash diff
+-test stash-1-diff {[normalize_result] eq $diff_stash_1} knownBug
++#fossil stash show
++#test stash-1-show {[normalize_result] eq $diff_stash_1}
++#fossil stash diff
++#test stash-1-diff {[normalize_result] eq $diff_stash_1} knownBug
+ 
+ ########
+ # fossil stash pop
+ 
+ stash-test 2 pop {
+@@ -206,16 +206,16 @@
+ # fossil: ./src/delta.c:231: checksum: Assertion '...' failed.
+ # Should be triggered by this stash-WY-1 test.
+ fossil checkout --force c1
+ fossil clean
+ fossil mv --soft f1 f1new
+-stash-test WY-1 {-expectError save -m "Reported 2016-02-09"} {
+-  REVERT   f1
+-  DELETE   f1new
+-} -changes {
+-} -addremove {
+-} -exists {f1 f2 f3} -notexists {f1new} -knownbugs {-code -result}
++#stash-test WY-1 {-expectError save -m "Reported 2016-02-09"} {
++#  REVERT   f1
++#  DELETE   f1new
++#} -changes {
++#} -addremove {
++#} -exists {f1 f2 f3} -notexists {f1new} -knownbugs {-code -result}
+ # TODO: add tests that verify the saved stash is sensible. Possibly
+ # by applying it and checking results. But until the SQLITE_CONSTRAINT
+ # error is fixed, there is nothing stashed to test.
+ 
+ 
+@@ -296,16 +296,17 @@
+ }] -changes {
+   RENAMED f2  ->  f2n
+ } -addremove {
+ } -exists {f1 f2n} -notexists {f2}
+ 
+-stash-test 3-2 {save -m f2n} {
+-  REVERT f2
+-  DELETE f2n
+-} -exists {f1 f2} -notexists {f2n} -knownbugs {-result}
++fossil stash save -m f2n
++#stash-test 3-2 {save -m f2n} {
++#  REVERT f2
++#  DELETE f2n
++#} -exists {f1 f2} -notexists {f2n} -knownbugs {-result}
+ fossil stash show
+-test stash-3-2-show-1 {![regexp {\sf1} $RESULT]} knownBug
++#test stash-3-2-show-1 {![regexp {\sf1} $RESULT]} knownBug
+ test stash-3-2-show-2 {[regexp {\sf2n} $RESULT]}
+ stash-test 3-2-pop {pop} {
+   UPDATE f1
+   UPDATE f2n
+ } -changes {
+
+Index: test/tester.tcl
+==================================================================
+--- test/tester.tcl
++++ test/tester.tcl
+@@ -308,10 +308,11 @@
+       comment-format \
+       crlf-glob \
+       crnl-glob \
+       default-csp \
+       default-perms \
++      default-skin \
+       diff-binary \
+       diff-command \
+       dont-commit \
+       dont-push \
+       dotfiles \
+
+Index: test/utf.test
+==================================================================
+--- test/utf.test
++++ test/utf.test
+@@ -35,11 +35,11 @@
+   set i 1
+   foreach {fileName result} $args {
+     set fileName [file join $tempPath $fileName]
+     fossil test-looks-like-utf $fileName
+     set result [string map [list %TEMP% $tempPath \r\n \n] $result]
+-    # if {$::RESULT ne $result} {puts stdout $::RESULT}
++    # if {$::RESULT ne $result} {puts stdout $::RESULT; exit}
+     test utf-check-$testname.$i {$::RESULT eq $result}
+     incr i
+   }
+ }
+ 
+@@ -17609,25 +17609,25 @@
+ Has flag LOOK_LONG: no
+ Has flag LOOK_INVALID: no
+ Has flag LOOK_ODD: no
+ Has flag LOOK_SHORT: no}
+ 
+-utf-check 1179 utf-check-1179-2-129-1.jnk \
+-{File "%TEMP%/utf-check-1179-2-129-1.jnk" has 7 bytes.
+-Starts with UTF-8 BOM: no
+-Starts with UTF-16 BOM: yes
+-Looks like UTF-8: no
+-Has flag LOOK_NUL: yes
+-Has flag LOOK_CR: no
+-Has flag LOOK_LONE_CR: no
+-Has flag LOOK_LF: no
+-Has flag LOOK_LONE_LF: no
+-Has flag LOOK_CRLF: no
+-Has flag LOOK_LONG: no
+-Has flag LOOK_INVALID: yes
+-Has flag LOOK_ODD: no
+-Has flag LOOK_SHORT: no}
++#utf-check 1179 utf-check-1179-2-129-1.jnk \
++#{File "%TEMP%/utf-check-1179-2-129-1.jnk" has 7 bytes.
++#Starts with UTF-8 BOM: no
++#Starts with UTF-16 BOM: yes
++#Looks like UTF-8: yes
++#Has flag LOOK_NUL: no
++#Has flag LOOK_CR: no
++#Has flag LOOK_LONE_CR: no
++#Has flag LOOK_LF: no
++#Has flag LOOK_LONE_LF: no
++#Has flag LOOK_CRLF: no
++#Has flag LOOK_LONG: no
++#Has flag LOOK_INVALID: yes
++#Has flag LOOK_ODD: no
++#Has flag LOOK_SHORT: no}
+ 
+ utf-check 1180 utf-check-1180-2-130-0.jnk \
+ {File "%TEMP%/utf-check-1180-2-130-0.jnk" has 4 bytes.
+ Starts with UTF-8 BOM: no
+ Starts with UTF-16 BOM: yes
+@@ -24121,41 +24121,41 @@
+ Has flag LOOK_LONG: no
+ Has flag LOOK_INVALID: yes
+ Has flag LOOK_ODD: no
+ Has flag LOOK_SHORT: no}
+ 
+-utf-check 1586 utf-check-1586-3-128-0.jnk \
+-{File "%TEMP%/utf-check-1586-3-128-0.jnk" has 6 bytes.
+-Starts with UTF-8 BOM: no
+-Starts with UTF-16 BOM: no
+-Looks like UTF-8: no
+-Has flag LOOK_NUL: yes
+-Has flag LOOK_CR: no
+-Has flag LOOK_LONE_CR: no
+-Has flag LOOK_LF: no
+-Has flag LOOK_LONE_LF: no
+-Has flag LOOK_CRLF: no
+-Has flag LOOK_LONG: no
+-Has flag LOOK_INVALID: yes
+-Has flag LOOK_ODD: no
+-Has flag LOOK_SHORT: no}
+-
+-utf-check 1587 utf-check-1587-3-128-1.jnk \
+-{File "%TEMP%/utf-check-1587-3-128-1.jnk" has 7 bytes.
+-Starts with UTF-8 BOM: no
+-Starts with UTF-16 BOM: no
+-Looks like UTF-8: no
+-Has flag LOOK_NUL: yes
+-Has flag LOOK_CR: no
+-Has flag LOOK_LONE_CR: no
+-Has flag LOOK_LF: no
+-Has flag LOOK_LONE_LF: no
+-Has flag LOOK_CRLF: no
+-Has flag LOOK_LONG: no
+-Has flag LOOK_INVALID: yes
+-Has flag LOOK_ODD: no
+-Has flag LOOK_SHORT: no}
++#utf-check 1586 utf-check-1586-3-128-0.jnk \
++#{File "%TEMP%/utf-check-1586-3-128-0.jnk" has 6 bytes.
++#Starts with UTF-8 BOM: no
++#Starts with UTF-16 BOM: reversed
++#Looks like UTF-16: no
++#Has flag LOOK_NUL: yes
++#Has flag LOOK_CR: no
++#Has flag LOOK_LONE_CR: no
++#Has flag LOOK_LF: no
++#Has flag LOOK_LONE_LF: no
++#Has flag LOOK_CRLF: no
++#Has flag LOOK_LONG: no
++#Has flag LOOK_INVALID: no
++#Has flag LOOK_ODD: no
++#Has flag LOOK_SHORT: no}
++
++#utf-check 1587 utf-check-1587-3-128-1.jnk \
++#{File "%TEMP%/utf-check-1587-3-128-1.jnk" has 7 bytes.
++#Starts with UTF-8 BOM: no
++#Starts with UTF-16 BOM: reversed
++#Looks like UTF-8: no
++#Has flag LOOK_NUL: yes
++#Has flag LOOK_CR: no
++#Has flag LOOK_LONE_CR: no
++#Has flag LOOK_LF: no
++#Has flag LOOK_LONE_LF: no
++#Has flag LOOK_CRLF: no
++#Has flag LOOK_LONG: no
++#Has flag LOOK_INVALID: yes
++#Has flag LOOK_ODD: no
++#Has flag LOOK_SHORT: no}
+ 
+ utf-check 1588 utf-check-1588-3-129-0.jnk \
+ {File "%TEMP%/utf-check-1588-3-129-0.jnk" has 6 bytes.
+ Starts with UTF-8 BOM: no
+ Starts with UTF-16 BOM: no
+