diff --git a/recipes/wip/dev/lang/python310/recipe.toml b/recipes/wip/dev/lang/python310/recipe.toml
index 8ed9e88e98782095242c5fed8a2041a7c61a652f..6c69663f02d01f2026f54814ffa10a3a14711183 100644
--- a/recipes/wip/dev/lang/python310/recipe.toml
+++ b/recipes/wip/dev/lang/python310/recipe.toml
@@ -1,14 +1,45 @@
-#TODO not compiled or tested
+#TODO Fix dynamic loading of C modules
+#TODO Fix openssl dependency
+#TODO Add additional dependencies (readline, ncurses, etc.)
 [source]
 tar = "https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz"
+patches = [
+  'redox.patch'
+]
+
 [build]
 template = "custom"
-dependencies = [
-    "openssl1",
-]
+dependencies = []
 script = """
+# Python cross-compilation requires the same Python version on the build machine
+BUILDMACH_TARGET="$(gcc -dumpmachine)"
+BUILDMACH_BUILD="${COOKBOOK_RECIPE}/target/${BUILDMACH_TARGET}/build"
+BUILDMACH_STAGE="${COOKBOOK_RECIPE}/target/${BUILDMACH_TARGET}/stage"
+
+# If this is a fresh build then we also rebuild the build machine version
+# (Cookbook clean does not remove it so we have to do it manually)
+if [ -z "$(ls -A .)" ]; then
+  rm -rf "${BUILDMACH_BUILD}" "${BUILDMACH_STAGE}"
+fi
+
+mkdir -p "${BUILDMACH_BUILD}"
+mkdir -p "${BUILDMACH_STAGE}"
+
+cd "${BUILDMACH_BUILD}"
+# Use env that does not use the Redox build tools
+env -i PATH="$PATH" CC=gcc "${COOKBOOK_SOURCE}/configure"
+env -i PATH="$PATH" CC=gcc "${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}"
+"${COOKBOOK_MAKE}" install DESTDIR="${BUILDMACH_STAGE}"
+cd -
+
+export PATH="${BUILDMACH_STAGE}/usr/local/bin:${PATH}"
+
+# --enable-optimizations for release build
 COOKBOOK_CONFIGURE_FLAGS+=(
     --disable-ipv6
+    --build="${ARCH}"
+    ac_cv_file__dev_ptmx=no
+    ac_cv_file__dev_ptc=no
 )
 cookbook_configure
 """
diff --git a/recipes/wip/dev/lang/python310/redox.patch b/recipes/wip/dev/lang/python310/redox.patch
new file mode 100644
index 0000000000000000000000000000000000000000..3f42622d31b02a1c6942690c95a40d7dc7dbb3dd
--- /dev/null
+++ b/recipes/wip/dev/lang/python310/redox.patch
@@ -0,0 +1,90 @@
+diff -ur source-orig/configure source/configure
+--- source-orig/configure	2023-08-24 13:46:25.000000000 +0100
++++ source/configure	2024-10-17 16:50:09.377036649 +0100
+@@ -3347,6 +3347,9 @@
+ 	*-*-vxworks*)
+ 	    ac_sys_system=VxWorks
+ 	    ;;
++	*-*-redox*)
++		ac_sys_system=Redox
++		;;
+ 	*)
+ 		# for now, limit cross builds to known configurations
+ 		MACHDEP="unknown"
+@@ -3371,6 +3374,7 @@
+     case $MACHDEP in
+ 	aix*) MACHDEP="aix";;
+ 	linux*) MACHDEP="linux";;
++	redox*) MACHDEP="redox";;
+ 	cygwin*) MACHDEP="cygwin";;
+ 	darwin*) MACHDEP="darwin";;
+ 	'')	MACHDEP="unknown";;
+@@ -3382,7 +3386,7 @@
+ 
+ if test "$cross_compiling" = yes; then
+ 	case "$host" in
+-	*-*-linux*)
++	*-*-linux*|*-*-redox*)
+ 		case "$host_cpu" in
+ 		arm*)
+ 			_host_cpu=arm
+@@ -5989,7 +5993,7 @@
+ 	      PY3LIBRARY=libpython3.so
+ 	  fi
+           ;;
+-    Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*)
++    Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|VxWorks*|Redox*)
+ 	  LDLIBRARY='libpython$(LDVERSION).so'
+ 	  BLDLIBRARY='-L. -lpython$(LDVERSION)'
+ 	  RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
+@@ -9787,7 +9791,7 @@
+ 			BLDSHARED="$LDSHARED"
+ 		fi
+ 		;;
+-	Linux*|GNU*|QNX*|VxWorks*)
++	Linux*|GNU*|QNX*|VxWorks*|Redox*)
+ 		LDSHARED='$(CC) -shared'
+ 		LDCXXSHARED='$(CXX) -shared';;
+ 	FreeBSD*)
+@@ -9856,7 +9860,7 @@
+ 		 else CCSHARED="+z";
+ 		 fi;;
+ 	Linux-android*) ;;
+-	Linux*|GNU*) CCSHARED="-fPIC";;
++	Linux*|GNU*|Redox*) CCSHARED="-fPIC";;
+ 	FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
+ 	OpenUNIX*|UnixWare*)
+ 		if test "$GCC" = "yes"
+@@ -9886,7 +9890,7 @@
+ 	    LINKFORSHARED="-Wl,-E -Wl,+s";;
+ #	    LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
+ 	Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";;
+-	Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
++	Linux*|GNU*|Redox*) LINKFORSHARED="-Xlinker -export-dynamic";;
+ 	# -u libsys_s pulls in all symbols in libsys
+ 	Darwin/*)
+ 		LINKFORSHARED="$extra_undefs -framework CoreFoundation"
+diff -ur source-orig/Include/pyport.h source/Include/pyport.h
+--- source-orig/Include/pyport.h	2023-08-24 13:46:25.000000000 +0100
++++ source/Include/pyport.h	2024-10-17 17:34:54.514295923 +0100
+@@ -843,7 +843,7 @@
+ #  error "Py_TRACE_REFS ABI is not compatible with release and debug ABI"
+ #endif
+ 
+-#if defined(__ANDROID__) || defined(__VXWORKS__)
++#if defined(__ANDROID__) || defined(__VXWORKS__) || defined(__redox__)
+    // Use UTF-8 as the locale encoding, ignore the LC_CTYPE locale.
+    // See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale()
+    // and PyUnicode_EncodeLocale().
+diff -ur source-orig/Modules/timemodule.c source/Modules/timemodule.c
+--- source-orig/Modules/timemodule.c	2023-08-24 13:46:25.000000000 +0100
++++ source/Modules/timemodule.c	2024-10-17 17:38:08.481699567 +0100
+@@ -1453,7 +1453,7 @@
+     return 0;
+ }
+ 
+-#elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID)
++#elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) && defined(CLOCK_THREAD_CPUTIME_ID)
+ #define HAVE_THREAD_TIME
+ 
+ #if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability)