diff --git a/recipes/bash/03-autotools-relibc-stuff.patch b/recipes/bash/03-autotools-relibc-stuff.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c3dc542a983225c25da6282bf47e81a61bafdab2
--- /dev/null
+++ b/recipes/bash/03-autotools-relibc-stuff.patch
@@ -0,0 +1,73 @@
+--- a/aclocal.m4	2015-12-02 15:22:19.000000000 +0100
++++ b/aclocal.m4	2018-08-03 17:26:40.798221239 +0200
+@@ -576,49 +576,7 @@
+ fi
+ ])
+ 
+-AC_DEFUN(BASH_FUNC_GETENV,
+-[AC_MSG_CHECKING(to see if getenv can be redefined)
+-AC_CACHE_VAL(bash_cv_getenv_redef,
+-[AC_TRY_RUN([
+-#ifdef HAVE_UNISTD_H
+-#  include <unistd.h>
+-#endif
+-#ifndef __STDC__
+-#  ifndef const
+-#    define const
+-#  endif
+-#endif
+-char *
+-getenv (name)
+-#if defined (__linux__) || defined (__bsdi__) || defined (convex)
+-     const char *name;
+-#else
+-     char const *name;
+-#endif /* !__linux__ && !__bsdi__ && !convex */
+-{
+-return "42";
+-}
+-main()
+-{
+-char *s;
+-/* The next allows this program to run, but does not allow bash to link
+-   when it redefines getenv.  I'm not really interested in figuring out
+-   why not. */
+-#if defined (NeXT)
+-exit(1);
+-#endif
+-s = getenv("ABCDE");
+-exit(s == 0);	/* force optimizer to leave getenv in */
+-}
+-], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
+-   [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes)
+-    bash_cv_getenv_redef=yes]
+-)])
+-AC_MSG_RESULT($bash_cv_getenv_redef)
+-if test $bash_cv_getenv_redef = yes; then
+-AC_DEFINE(CAN_REDEFINE_GETENV)
+-fi
+-])
++bash_cv_getenv_redef=no
+ 
+ # We should check for putenv before calling this
+ AC_DEFUN(BASH_FUNC_STD_PUTENV,
+@@ -1200,7 +1158,7 @@
+   AC_TRY_LINK([#include <signal.h>],[
+     sigset_t ss;
+     struct sigaction sa;
+-    sigemptyset(&ss); sigsuspend(&ss);
++    sigemptyset(&ss); /* sigsuspend(&ss); */
+     sigaction(SIGINT, &sa, (struct sigaction *) 0);
+     sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
+   ], bash_cv_signal_vintage=posix,
+--- a/configure.ac	2016-09-07 22:56:28.000000000 +0200
++++ b/configure.ac	2018-08-03 09:10:42.818015670 +0200
+@@ -52,7 +52,7 @@
+ AC_CANONICAL_BUILD
+ 
+ dnl configure defaults
+-opt_bash_malloc=yes
++opt_bash_malloc=no
+ opt_afs=no
+ opt_curses=no
+ opt_with_installed_readline=no
diff --git a/recipes/curl/03-redox-sys-select.patch b/recipes/curl/03-redox-sys-select.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a99771f5f3c4aa1f380d2ecc4bc2756a1d20d168
--- /dev/null
+++ b/recipes/curl/03-redox-sys-select.patch
@@ -0,0 +1,10 @@
+--- source/include/curl/curl.h	2017-08-07 15:42:29.000000000 -0700
++++ build/include/curl/curl.h	2018-09-20 14:27:20.462414020 -0700
+@@ -74,6 +74,7 @@
+ #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
+     defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
+     defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
++    defined(__redox__) || \
+    (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
+ #include <sys/select.h>
+ #endif
diff --git a/recipes/exampled/recipe.sh b/recipes/exampled/recipe.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b56a7b49fe02dae4818e7f97953f2fdc0c64f720
--- /dev/null
+++ b/recipes/exampled/recipe.sh
@@ -0,0 +1 @@
+GIT=https://gitlab.redox-os.org/redox-os/exampled.git
diff --git a/recipes/gcc/recipe.sh b/recipes/gcc/recipe.sh
index f7ad69a309c31b972ff933509c902366643d08fa..d3e47ea7c951602bec2a6802e13403704a8b45ab 100644
--- a/recipes/gcc/recipe.sh
+++ b/recipes/gcc/recipe.sh
@@ -18,9 +18,6 @@ function recipe_build {
     cp config.sub isl/config.sub
     cp config.sub mpfr/config.sub
     cp -f config.sub mpc/config.sub
-    pushd libstdc++-v3
-    autoconf2.64
-    popd
 
     ./configure --host=${HOST} --target=${HOST} --prefix=/ --enable-static --disable-shared --disable-dlopen --disable-nls --enable-languages=c,c++
     make all-gcc all-target-libgcc all-target-libstdc++-v3
diff --git a/recipes/init/recipe.sh b/recipes/init/recipe.sh
index ee32b737a1dc11c104141bc5143737bc5407b61a..bdc53785afc538d4a5b7a4e7b0431a7548cde58c 100644
--- a/recipes/init/recipe.sh
+++ b/recipes/init/recipe.sh
@@ -1 +1 @@
-GIT=https://gitlab.redox-os.org/redox-os/init
+GIT=https://gitlab.redox-os.org/redox-os/init.git
diff --git a/recipes/ion/recipe.sh b/recipes/ion/recipe.sh
index fda62673fa4cb9bad08e4b4cd1b12702997f0854..3660e6f621a50cab1418799d5d2e35f7fd81ff50 100644
--- a/recipes/ion/recipe.sh
+++ b/recipes/ion/recipe.sh
@@ -1 +1,2 @@
 GIT=https://gitlab.redox-os.org/redox-os/ion.git
+BRANCH=relibc
diff --git a/recipes/libiconv/01_redox.patch b/recipes/libiconv/01_redox.patch
new file mode 100644
index 0000000000000000000000000000000000000000..35034786642cf9a1bb39ce2a41f10bd10ff6f1d1
--- /dev/null
+++ b/recipes/libiconv/01_redox.patch
@@ -0,0 +1,30 @@
+diff -rupNw source-original/srclib/getprogname.c source/srclib/getprogname.c
+--- source-original/srclib/getprogname.c	2017-01-02 00:02:21.000000000 +0100
++++ source/srclib/getprogname.c	2018-10-03 19:32:07.382785859 +0200
+@@ -144,7 +144,7 @@ getprogname (void)
+     }
+   return p;
+ # else
+-#  error "getprogname module not ported to this OS"
++  return "?";
+ # endif
+ }
+ 
+diff -rupNw source-original/srclib/signal.in.h source/srclib/signal.in.h
+--- source-original/srclib/signal.in.h	2017-01-02 00:02:22.000000000 +0100
++++ source/srclib/signal.in.h	2018-10-03 19:46:53.323659264 +0200
+@@ -186,12 +186,12 @@ _GL_WARN_ON_USE (raise, "raise can crash
+ 
+ /* Maximum signal number + 1.  */
+ #  ifndef NSIG
+-#   define NSIG 32
++#   define NSIG 64
+ #  endif
+ 
+ /* This code supports only 32 signals.  */
+ #  if !GNULIB_defined_verify_NSIG_constraint
+-typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
++typedef int verify_NSIG_constraint[NSIG <= 64 ? 1 : -1];
+ #   define GNULIB_defined_verify_NSIG_constraint 1
+ #  endif
+ 
diff --git a/recipes/libiconv/recipe.sh b/recipes/libiconv/recipe.sh
new file mode 100644
index 0000000000000000000000000000000000000000..580e044462ba15dff48eddece026e1a37858350d
--- /dev/null
+++ b/recipes/libiconv/recipe.sh
@@ -0,0 +1,34 @@
+VERSION=1.15
+TAR=https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$VERSION.tar.gz
+
+function recipe_version {
+    echo "$VERSION"
+    skip=1
+}
+
+function recipe_update {
+    echo "skipping update"
+    skip=1
+}
+
+function recipe_build {
+    ./configure --host=${HOST} --prefix='/' --disable-shared --enable-static
+    make
+    skip=1
+}
+
+function recipe_test {
+    echo "skipping test"
+    skip=1
+}
+
+function recipe_clean {
+    make clean
+    skip=1
+}
+
+function recipe_stage {
+    dest="$(realpath $1)"
+    make DESTDIR="$dest" install
+    skip=1
+}
diff --git a/recipes/netdb/recipe.sh b/recipes/netdb/recipe.sh
index 638f3d251a3d50e36a00cc7a9986411fbf47f3a8..12503ac9721b5b7e18bc7463208af35cb47455e6 100644
--- a/recipes/netdb/recipe.sh
+++ b/recipes/netdb/recipe.sh
@@ -1,4 +1,4 @@
-GIT=https://gitlab.redox-os.org/redox-os/netdb
+GIT=https://gitlab.redox-os.org/redox-os/netdb.git
 
 function recipe_version {
     printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
diff --git a/recipes/netsurf/01_redox.patch b/recipes/netsurf/01_redox.patch
index 7d1a715b0fea05fbfb75fbeaccbdbf34e476be02..201a4a801ea2431199fb4bdc6e45561f71198ec0 100644
--- a/recipes/netsurf/01_redox.patch
+++ b/recipes/netsurf/01_redox.patch
@@ -222,7 +222,7 @@ diff -rupNw source-original/netsurf/frontends/framebuffer/Makefile source/netsur
 diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.config
 --- source-original/netsurf/Makefile.config	1970-01-01 01:00:00.000000000 +0100
 +++ source/netsurf/Makefile.config	2018-03-04 20:43:18.244957528 +0100
-@@ -0,0 +1,27 @@
+@@ -0,0 +1,28 @@
 +override NETSURF_HOMEPAGE := "https://www.redox-os.org/"
 +override NETSURF_FB_FRONTEND := sdl
 +
@@ -232,6 +232,7 @@ diff -rupNw source-original/netsurf/Makefile.config source/netsurf/Makefile.conf
 +override NETSURF_USE_CURL := YES
 +override NETSURF_USE_PNG := YES
 +
++override NETSURF_USE_LIBICONV_PLUG := NO
 +override NETSURF_USE_NSSVG := NO
 +override NETSURF_USE_RSVG := NO
 +override NETSURF_USE_DUKTAPE := NO
diff --git a/recipes/netsurf/recipe.sh b/recipes/netsurf/recipe.sh
index f7ede53d603fc0f89e9cb9928fe480c0938674b8..19b3faca497556236589edf8ac2fd3744aa65035 100644
--- a/recipes/netsurf/recipe.sh
+++ b/recipes/netsurf/recipe.sh
@@ -1,6 +1,6 @@
 VERSION=3.7
 TAR=http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$VERSION.tar.gz
-BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype liborbital)
+BUILD_DEPENDS=(curl expat libjpeg libpng openssl sdl zlib freetype liborbital libiconv)
 DEPENDS="ca-certificates orbital"
 
 function recipe_version {
@@ -17,7 +17,7 @@ function recipe_build {
     sysroot="${PWD}/../sysroot"
     export TARGET="framebuffer"
     export CFLAGS="-I$sysroot/include -I${PWD}/inst-${TARGET}/include"
-    export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib"
+    export LDFLAGS="-L$sysroot/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition"
 
     make V=1
     skip=1
diff --git a/recipes/openssl/recipe.sh b/recipes/openssl/recipe.sh
index 872d9d9807afdfa7cdb11e7b111f3412347055ef..21722d841cf2a599f00ed43ad95b0b619c5e0b48 100644
--- a/recipes/openssl/recipe.sh
+++ b/recipes/openssl/recipe.sh
@@ -1,5 +1,5 @@
-GIT=https://github.com/ids1024/openssl.git
-BRANCH=redox
+GIT=https://gitlab.redox-os.org/redox-os/openssl.git
+BRANCH=relibc
 
 function recipe_version {
     printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
diff --git a/recipes/prboom/01_redox.patch b/recipes/prboom/01_redox.patch
index 16cdd8284c7ce4b491316bc9b1ded560a6999c7c..35f29a679a63b6c3afcbbe76dd75fd8a0e32d322 100644
--- a/recipes/prboom/01_redox.patch
+++ b/recipes/prboom/01_redox.patch
@@ -10,27 +10,6 @@ diff -burpN source-original/configure.ac source/configure.ac
  AC_DECL_SYS_SIGLIST
  AC_HEADER_SYS_WAIT
  AC_CHECK_HEADERS(unistd.h asm/byteorder.h sched.h)
-diff -burpN source-original/src/d_deh.c source/src/d_deh.c
---- source-original/src/d_deh.c	2008-10-11 14:10:38.000000000 +0200
-+++ source/src/d_deh.c	2018-04-22 23:41:16.949896859 +0200
-@@ -54,17 +54,6 @@
- #define TRUE 1
- #define FALSE 0
- 
--#ifndef HAVE_STRLWR
--#include <ctype.h>
--
--static char* strlwr(char* str)
--{
--  char* p;
--  for (p=str; *p; p++) *p = tolower(*p);
--  return str;
--}
--#endif
--
- // killough 10/98: new functions, to allow processing DEH files in-memory
- // (e.g. from wads)
- 
 diff -burpN source-original/src/SDL/i_video.c source/src/SDL/i_video.c
 --- source-original/src/SDL/i_video.c	2008-10-18 15:32:29.000000000 +0200
 +++ source/src/SDL/i_video.c	2018-04-23 00:51:18.944949507 +0200
diff --git a/recipes/ripgrep/recipe.sh b/recipes/ripgrep/recipe.sh
new file mode 100644
index 0000000000000000000000000000000000000000..bd1541552f629275212fd657a467d359109f5eb4
--- /dev/null
+++ b/recipes/ripgrep/recipe.sh
@@ -0,0 +1 @@
+GIT=https://github.com/jackpot51/ripgrep.git
diff --git a/recipes/sdl/01_orbital.patch b/recipes/sdl/01_orbital.patch
index 02e2f7996a531c6c5c8b7f71fa2655eed34ee25d..ba7666d2e393d2f81ca182b5db7f5405693205ae 100644
--- a/recipes/sdl/01_orbital.patch
+++ b/recipes/sdl/01_orbital.patch
@@ -373,7 +373,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vi
 diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c
 --- source-original/src/video/orbital/SDL_orbitalvideo.c	1970-01-01 01:00:00.000000000 +0100
 +++ source/src/video/orbital/SDL_orbitalvideo.c	2018-05-01 17:32:53.000320923 +0200
-@@ -0,0 +1,250 @@
+@@ -0,0 +1,249 @@
 +/*
 +    SDL - Simple DirectMedia Layer
 +    Copyright (C) 1997-2012 Sam Lantinga
@@ -416,10 +416,9 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide
 +#include "SDL_orbitalevents_c.h"
 +#include "SDL_orbitalmouse_c.h"
 +
++#include <fcntl.h>
 +#include <sys/types.h>
 +#include <sys/stat.h>
-+#include <sys/fcntl.h>
-+#include <sys/redox.h>
 +#include <unistd.h>
 +
 +#define ORBITALVID_DRIVER_NAME "orbital"