diff --git a/plugins/python-build/share/python-build/pypy-5.3 b/plugins/python-build/share/python-build/pypy-5.3
index e804267c..5e098995 100644
--- a/plugins/python-build/share/python-build/pypy-5.3
+++ b/plugins/python-build/share/python-build/pypy-5.3
@@ -1,56 +1 @@
-case "$(pypy_architecture 2>/dev/null || true)" in
-"linux" )
-  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
-    install_package "pypy2-v5.3.0-linux" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux32.tar.bz2#bd422fe9d0b7d525d1da3f32855b047bc39ba397d0cf708d8f4f96fe874424f2" "pypy" verify_py27 ensurepip
-  else
-    { echo
-      colorize 1 "ERROR"
-      echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
-      echo "try 'pypy-5.3-src' to build from soruce."
-      echo
-    } >&2
-    exit 1
-  fi
-  ;;
-"linux-armel" )
-  require_distro "Ubuntu 12.04" || true
-  install_package "pypy2-v5.3.0-linux-armel" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux-armel.tar.bz2#81b6f589a947d7353bb69408c46d4833d6e9cb501f3c3f0c73bd28d0e3df69aa" "pypy" verify_py27 ensurepip
-  ;;
-"linux-armhf" )
-  if [[ "$(cat /etc/issue 2>/dev/null || true)" == "Raspbian"* ]]; then
-    install_package "pypy2-v5.3.0-linux-armhf-raspbian" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux-armhf-raspbian.tar.bz2#87b3566b6bbb8bf31c2f0d72bf31d95142fdce004d987812336a59d788005bed" "pypy" verify_py27 ensurepip
-  else
-    require_distro "Ubuntu 13.04" || true
-    install_package "pypy2-v5.3.0-linux-armhf-raring" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux-armhf-raring.tar.bz2#bdb911a87e773a292334061b9c33b907f46d987e403fe94cc627a3b9b1c9cb19" "pypy" verify_py27 ensurepip
-  fi
-  ;;
-"linux64" )
-  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
-    install_package "pypy2-v5.3.0-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux64.tar.bz2#ac336e8877ed676bf87a9a546d5926b6afc4679fa2d3fdf9f3ca56f28ec40588" "pypy" verify_py27 ensurepip
-  else
-    { echo
-      colorize 1 "ERROR"
-      echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
-      echo "try 'pypy-5.3-src' to build from soruce."
-      echo
-    } >&2
-    exit 1
-  fi
-  ;;
-"osx64" )
-  install_package "pypy2-v5.3.0-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-osx64.tar.bz2#1b103bacbdcdbbc490660ec0c7b3d99d1ff1cfc2f13cd403db21c27f03d36a1d" "pypy" verify_py27 ensurepip
-  ;;
-"win32" )
-  # FIXME: never tested on Windows
-  install_zip "pypy2-v5.3.0-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-win32.zip#32a9e5286fc344165f63b529a9f84e521e9368e717c583488115654676428a20" "pypy" verify_py27 ensurepip
-  ;;
-* )
-  { echo
-    colorize 1 "ERROR"
-    echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
-    echo "try 'pypy-5.3-src' to build from soruce."
-    echo
-  } >&2
-  exit 1
-  ;;
-esac
+source "${BASH_SOURCE%/*}/pypy2-5.3"
diff --git a/plugins/python-build/share/python-build/pypy-5.3-src b/plugins/python-build/share/python-build/pypy-5.3-src
index 89855977..0dd878b7 100644
--- a/plugins/python-build/share/python-build/pypy-5.3-src
+++ b/plugins/python-build/share/python-build/pypy-5.3-src
@@ -1,2 +1 @@
-require_gcc
-install_package "pypy2-v5.3.0-src" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-src.tar.bz2#4142eb8f403810bc88a4911792bb5a502e152df95806e33e69050c828cd160d5" "pypy_builder" verify_py27 ensurepip
+source "${BASH_SOURCE%/*}/pypy2-5.3-src"
diff --git a/plugins/python-build/share/python-build/pypy-5.3.1 b/plugins/python-build/share/python-build/pypy-5.3.1
index a278d8c6..10392925 100644
--- a/plugins/python-build/share/python-build/pypy-5.3.1
+++ b/plugins/python-build/share/python-build/pypy-5.3.1
@@ -1,44 +1 @@
-case "$(pypy_architecture 2>/dev/null || true)" in
-"linux" )
-  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
-    install_package "pypy2-v5.3.1-linux" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux32.tar.bz2#da69f4280b288e524387103eaa3eb4d036965724c3e546da27135c15a77bd2eb" "pypy" verify_py27 ensurepip
-  else
-    install_package "pypy-5.3.1-linux_i686-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.3.1-linux_i686-portable.tar.bz2#4460dad6376406c221406676208abae989c126115b0f0b2e46c8b8a027bf978a" "pypy" verify_py27 ensurepip
-  fi
-  ;;
-"linux-armel" )
-  require_distro "Ubuntu 12.04" || true
-  install_package "pypy2-v5.3.1-linux-armel" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux-armel.tar.bz2#0425f2022c35ef7f0bb3d2b854c5bcbe500b1aba511a0d83581ba6c784913961" "pypy" verify_py27 ensurepip
-  ;;
-"linux-armhf" )
-  if [[ "$(cat /etc/issue 2>/dev/null || true)" == "Raspbian"* ]]; then
-    install_package "pypy2-v5.3.1-linux-armhf-raspbian" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux-armhf-raspbian.tar.bz2#5c93eb3c54fbb2c7d7332f775a096671512e590565e6051196bbc5039c5033b5" "pypy" verify_py27 ensurepip
-  else
-    require_distro "Ubuntu 13.04" || true
-    install_package "pypy2-v5.3.1-linux-armhf-raring" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux-armhf-raring.tar.bz2#b4859496099bde4b17c1e56cc5749dcdcd25b4c68fde1d2ea426de84130e84cc" "pypy" verify_py27 ensurepip
-  fi
-  ;;
-"linux64" )
-  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
-    install_package "pypy2-v5.3.1-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux64.tar.bz2#6d0e8b14875b76b1e77f06a2ee3f1fb5015a645a951ba7a7586289344d4d9c22" "pypy" verify_py27 ensurepip
-  else
-    install_package "pypy-5.3.1-linux_x86_64-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.3.1-linux_x86_64-portable.tar.bz2#73014c3840609a62c0984b9c383652097f0a8c52fb74dd9de70d9df2a9a743ff" "pypy" verify_py27 ensurepip
-  fi
-  ;;
-"osx64" )
-  install_package "pypy2-v5.3.1-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-osx64.tar.bz2#7a242d7373b4f18c7f5fe6c2fe6f15e2a405d9adf1f4f934c89b875e60ac5def" "pypy" verify_py27 ensurepip
-  ;;
-"win32" )
-  # FIXME: never tested on Windows
-  install_zip "pypy2-v5.3.1-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-win32.zip#d83477e2c5f032ebd8c7f47afce03dc8adbeb41a3c74f7db50d9de317dcf3a4a" "pypy" verify_py27 ensurepip
-  ;;
-* )
-  { echo
-    colorize 1 "ERROR"
-    echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
-    echo "try 'pypy-5.3-src' to build from soruce."
-    echo
-  } >&2
-  exit 1
-  ;;
-esac
+source "${BASH_SOURCE%/*}/pypy2-5.3.1"
diff --git a/plugins/python-build/share/python-build/pypy-5.4-src b/plugins/python-build/share/python-build/pypy-5.4-src
index dd231434..8a7f781e 100644
--- a/plugins/python-build/share/python-build/pypy-5.4-src
+++ b/plugins/python-build/share/python-build/pypy-5.4-src
@@ -1,2 +1 @@
-require_gcc
-install_package "pypy2-v5.4.0-src" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.4.0-src.tar.bz2#d9568ebe9a14d0eaefde887d78f3cba63d665e95c0d234bb583932341f55a655" "pypy_builder" verify_py27 ensurepip
+source "${BASH_SOURCE%/*}/pypy2-5.4-src"
diff --git a/plugins/python-build/share/python-build/pypy2-5.3 b/plugins/python-build/share/python-build/pypy2-5.3
new file mode 100644
index 00000000..66a38b7d
--- /dev/null
+++ b/plugins/python-build/share/python-build/pypy2-5.3
@@ -0,0 +1,56 @@
+case "$(pypy_architecture 2>/dev/null || true)" in
+"linux" )
+  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
+    install_package "pypy2-v5.3.0-linux" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux32.tar.bz2#bd422fe9d0b7d525d1da3f32855b047bc39ba397d0cf708d8f4f96fe874424f2" "pypy" verify_py27 ensurepip
+  else
+    { echo
+      colorize 1 "ERROR"
+      echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
+      echo "try 'pypy2-5.3-src' to build from soruce."
+      echo
+    } >&2
+    exit 1
+  fi
+  ;;
+"linux-armel" )
+  require_distro "Ubuntu 12.04" || true
+  install_package "pypy2-v5.3.0-linux-armel" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux-armel.tar.bz2#81b6f589a947d7353bb69408c46d4833d6e9cb501f3c3f0c73bd28d0e3df69aa" "pypy" verify_py27 ensurepip
+  ;;
+"linux-armhf" )
+  if [[ "$(cat /etc/issue 2>/dev/null || true)" == "Raspbian"* ]]; then
+    install_package "pypy2-v5.3.0-linux-armhf-raspbian" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux-armhf-raspbian.tar.bz2#87b3566b6bbb8bf31c2f0d72bf31d95142fdce004d987812336a59d788005bed" "pypy" verify_py27 ensurepip
+  else
+    require_distro "Ubuntu 13.04" || true
+    install_package "pypy2-v5.3.0-linux-armhf-raring" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux-armhf-raring.tar.bz2#bdb911a87e773a292334061b9c33b907f46d987e403fe94cc627a3b9b1c9cb19" "pypy" verify_py27 ensurepip
+  fi
+  ;;
+"linux64" )
+  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
+    install_package "pypy2-v5.3.0-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-linux64.tar.bz2#ac336e8877ed676bf87a9a546d5926b6afc4679fa2d3fdf9f3ca56f28ec40588" "pypy" verify_py27 ensurepip
+  else
+    { echo
+      colorize 1 "ERROR"
+      echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
+      echo "try 'pypy2-5.3-src' to build from soruce."
+      echo
+    } >&2
+    exit 1
+  fi
+  ;;
+"osx64" )
+  install_package "pypy2-v5.3.0-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-osx64.tar.bz2#1b103bacbdcdbbc490660ec0c7b3d99d1ff1cfc2f13cd403db21c27f03d36a1d" "pypy" verify_py27 ensurepip
+  ;;
+"win32" )
+  # FIXME: never tested on Windows
+  install_zip "pypy2-v5.3.0-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-win32.zip#32a9e5286fc344165f63b529a9f84e521e9368e717c583488115654676428a20" "pypy" verify_py27 ensurepip
+  ;;
+* )
+  { echo
+    colorize 1 "ERROR"
+    echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
+    echo "try 'pypy-5.3-src' to build from soruce."
+    echo
+  } >&2
+  exit 1
+  ;;
+esac
diff --git a/plugins/python-build/share/python-build/pypy2-5.3-src b/plugins/python-build/share/python-build/pypy2-5.3-src
new file mode 100644
index 00000000..89855977
--- /dev/null
+++ b/plugins/python-build/share/python-build/pypy2-5.3-src
@@ -0,0 +1,2 @@
+require_gcc
+install_package "pypy2-v5.3.0-src" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.0-src.tar.bz2#4142eb8f403810bc88a4911792bb5a502e152df95806e33e69050c828cd160d5" "pypy_builder" verify_py27 ensurepip
diff --git a/plugins/python-build/share/python-build/pypy2-5.3.1 b/plugins/python-build/share/python-build/pypy2-5.3.1
new file mode 100644
index 00000000..c8a49a99
--- /dev/null
+++ b/plugins/python-build/share/python-build/pypy2-5.3.1
@@ -0,0 +1,44 @@
+case "$(pypy_architecture 2>/dev/null || true)" in
+"linux" )
+  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
+    install_package "pypy2-v5.3.1-linux" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux32.tar.bz2#da69f4280b288e524387103eaa3eb4d036965724c3e546da27135c15a77bd2eb" "pypy" verify_py27 ensurepip
+  else
+    install_package "pypy-5.3.1-linux_i686-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.3.1-linux_i686-portable.tar.bz2#4460dad6376406c221406676208abae989c126115b0f0b2e46c8b8a027bf978a" "pypy" verify_py27 ensurepip
+  fi
+  ;;
+"linux-armel" )
+  require_distro "Ubuntu 12.04" || true
+  install_package "pypy2-v5.3.1-linux-armel" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux-armel.tar.bz2#0425f2022c35ef7f0bb3d2b854c5bcbe500b1aba511a0d83581ba6c784913961" "pypy" verify_py27 ensurepip
+  ;;
+"linux-armhf" )
+  if [[ "$(cat /etc/issue 2>/dev/null || true)" == "Raspbian"* ]]; then
+    install_package "pypy2-v5.3.1-linux-armhf-raspbian" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux-armhf-raspbian.tar.bz2#5c93eb3c54fbb2c7d7332f775a096671512e590565e6051196bbc5039c5033b5" "pypy" verify_py27 ensurepip
+  else
+    require_distro "Ubuntu 13.04" || true
+    install_package "pypy2-v5.3.1-linux-armhf-raring" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux-armhf-raring.tar.bz2#b4859496099bde4b17c1e56cc5749dcdcd25b4c68fde1d2ea426de84130e84cc" "pypy" verify_py27 ensurepip
+  fi
+  ;;
+"linux64" )
+  if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
+    install_package "pypy2-v5.3.1-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-linux64.tar.bz2#6d0e8b14875b76b1e77f06a2ee3f1fb5015a645a951ba7a7586289344d4d9c22" "pypy" verify_py27 ensurepip
+  else
+    install_package "pypy-5.3.1-linux_x86_64-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-5.3.1-linux_x86_64-portable.tar.bz2#73014c3840609a62c0984b9c383652097f0a8c52fb74dd9de70d9df2a9a743ff" "pypy" verify_py27 ensurepip
+  fi
+  ;;
+"osx64" )
+  install_package "pypy2-v5.3.1-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-osx64.tar.bz2#7a242d7373b4f18c7f5fe6c2fe6f15e2a405d9adf1f4f934c89b875e60ac5def" "pypy" verify_py27 ensurepip
+  ;;
+"win32" )
+  # FIXME: never tested on Windows
+  install_zip "pypy2-v5.3.1-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.3.1-win32.zip#d83477e2c5f032ebd8c7f47afce03dc8adbeb41a3c74f7db50d9de317dcf3a4a" "pypy" verify_py27 ensurepip
+  ;;
+* )
+  { echo
+    colorize 1 "ERROR"
+    echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
+    echo "try 'pypy2-5.3.1-src' to build from soruce."
+    echo
+  } >&2
+  exit 1
+  ;;
+esac
diff --git a/plugins/python-build/share/python-build/pypy2-5.4-src b/plugins/python-build/share/python-build/pypy2-5.4-src
new file mode 100644
index 00000000..dd231434
--- /dev/null
+++ b/plugins/python-build/share/python-build/pypy2-5.4-src
@@ -0,0 +1,2 @@
+require_gcc
+install_package "pypy2-v5.4.0-src" "https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.4.0-src.tar.bz2#d9568ebe9a14d0eaefde887d78f3cba63d665e95c0d234bb583932341f55a655" "pypy_builder" verify_py27 ensurepip