diff --git a/spk/borgbackup/Makefile b/spk/borgbackup/Makefile
index a0c94257fcb..e88ba378885 100644
--- a/spk/borgbackup/Makefile
+++ b/spk/borgbackup/Makefile
@@ -1,13 +1,13 @@
SPK_NAME = borgbackup
-SPK_VERS = 1.2.6
-SPK_REV = 14
+SPK_VERS = 1.4.0
+SPK_REV = 15
SPK_ICON = src/borgbackup.png
PYTHON_PACKAGE = python311
SPK_DEPENDS = "python311>=3.11.5-8"
UNSUPPORTED_ARCHS = $(OLD_PPC_ARCHS)
-DEPENDS = cross/attr cross/acl cross/openssl3 cross/lz4 cross/zstd cross/libb2 cross/fuse
+DEPENDS = cross/attr cross/acl cross/openssl3 cross/lz4 cross/zstd cross/libb2 cross/fuse cross/xxhash
# Requirements file generation
# - first create borgbackup wheel defined in src/requirements-crossenv.txt
@@ -30,7 +30,7 @@ DESCRIPTION = Deduplicating backup program with compression and authenticated en
DISPLAY_NAME = Borg
STARTABLE = no
-CHANGELOG = "1. Update borg to v1.2.6.
2. Update borgmatic to v1.8.2.
3. Update emborg to v1.37.
4. Migrate to python 3.11."
+CHANGELOG = "1. Update borgmatic to v1.9.0.
2. Update borg to v1.4.0.
3. Update emborg to v1.40.
4. Add ARMv5 again."
HOMEPAGE = https://borgbackup.readthedocs.io
LICENSE = 3-Clause BSD
@@ -45,6 +45,8 @@ ENV += BORG_OPENSSL_PREFIX="$(OPENSSL_STAGING_PREFIX)"
ENV += BORG_LIBLZ4_PREFIX="$(STAGING_INSTALL_PREFIX)"
ENV += BORG_LIBZSTD_PREFIX="$(STAGING_INSTALL_PREFIX)"
ENV += BORG_LIBB2_PREFIX="$(STAGING_INSTALL_PREFIX)"
+ENV += BORG_LIBXXHASH_PREFIX="$(STAGING_INSTALL_PREFIX)"
+ENV += BORG_LIBACL_PREFIX="$(STAGING_INSTALL_PREFIX)"
include ../../mk/spksrc.common.mk
diff --git a/spk/borgbackup/src/requirements-crossenv.txt b/spk/borgbackup/src/requirements-crossenv.txt
index 9e62c72f2cf..f33fc116a9d 100644
--- a/spk/borgbackup/src/requirements-crossenv.txt
+++ b/spk/borgbackup/src/requirements-crossenv.txt
@@ -1,12 +1,12 @@
# requirements that need crossenv to build wheel for
-borgbackup==1.2.6
+borgbackup==1.4.0
-charset-normalizer==3.2.0
+charset-normalizer==3.4.0
llfuse==1.5.0
-msgpack==1.0.5 # used compiled verrsion for performance
+msgpack==1.1.0 # used compiled verrsion for performance
pyrsistent==0.19.3
-ruamel.yaml.clib==0.2.7
+ruamel.yaml.clib==0.2.12
# [rpds-py]
# Require environment variables
@@ -14,4 +14,4 @@ ruamel.yaml.clib==0.2.7
# PYO3_CROSS_INCLUDE_DIR=$(STAGING_INSTALL_PREFIX)/include/
# Requires path to maturin from crossenv
# ENV += PATH=$(WORK_DIR)/crossenv/build/bin:$(PATH)
-rpds-py==0.10.2
+rpds-py==0.20.1
diff --git a/spk/borgbackup/src/requirements-pure.txt b/spk/borgbackup/src/requirements-pure.txt
index 58d5b712799..2a79058698f 100644
--- a/spk/borgbackup/src/requirements-pure.txt
+++ b/spk/borgbackup/src/requirements-pure.txt
@@ -2,35 +2,36 @@
# to be managed as pure-python
appdirs==1.4.4
-arrow==1.2.3
-attrs==23.1.0
+arrow==1.3.0
+attrs==24.2.0
#borgbackup ==> crossenv
-borgmatic==1.8.2
+borgmatic==1.9.0
#certifi ==> python311:pure
#charset-normalizer ==> crossenv
colorama==0.4.6
#distlib ==> python311:pure
docopt==0.6.2
-emborg==1.37
+emborg==1.40
#filelock ==> python311:pure
-idna==3.4
-inform==1.28
-jsonschema==4.19.0
-jsonschema-specifications==2023.7.1
+idna==3.10
+inform==1.31
+jsonschema==4.23.0
+jsonschema-specifications==2024.10.1
#llfuse ==> crossenv
#msgpack ==> crossenv
-nestedtext==3.6
-packaging==23.1
+nestedtext==3.7
+packaging==24.1
#platformdirs ==> python311:pure
pyparsing==3.1.1
#pyrsistent ==> crossenv
-python-dateutil==2.8.2
-quantiphy==2.19
-referencing==0.30.2
-requests==2.31.0
+python-dateutil==2.9.0.post0
+quantiphy==2.20
+referencing==0.35.1
+requests==2.32.3
#rpds-py ==> crossenv
-ruamel.yaml==0.17.32
+ruamel.yaml==0.18.6
#ruamel.yaml.clib ==> crossenv
#six ==> python311:pure
-urllib3==2.0.4
+types_python_dateutil==2.9.0.20241003
+urllib3==2.2.3
#virtualenv ==> python311:pure