diff --git a/var/spack/repos/builtin/packages/ninja-fortran/package.py b/var/spack/repos/builtin/packages/ninja-fortran/package.py
index d33de9e2ff299e96f5dbf09a7e8c52a86ec226e3..605c897a72754fc0460d2eb3191896cfbbe76900 100644
--- a/var/spack/repos/builtin/packages/ninja-fortran/package.py
+++ b/var/spack/repos/builtin/packages/ninja-fortran/package.py
@@ -10,21 +10,41 @@ class NinjaFortran(Package):
     """A Fortran capable fork of ninja."""
 
     homepage = "https://github.com/Kitware/ninja"
-    url      = "https://github.com/Kitware/ninja/archive/v1.7.2.gaad58.kitware.dyndep-1.tar.gz"
+    url      = "https://github.com/Kitware/ninja/archive/v1.9.0.g99df1.kitware.dyndep-1.jobserver-1.tar.gz"
 
     # Each version is a fork off of a specific commit of ninja
-    # Hashes don't sort properly, so manually set newest version
-    version('1.7.2.gaad58', 'eb51b042b9dbaf8ecd79a6fb24de1320', preferred=True)
-    version('1.7.2.gcc0ea', '3982f508c415c0abaca34cb5e92e711a')
-    version('1.7.1.g7ca7f', '187a8d15c1e20e5e9b00c5c3f227ca8a')
+    # Hashes don't sort properly, so added "artificial" tweak-level version
+    # number prior to the hashes for sorting puposes
+    version('1.9.0.2.g99df1', 'f0892b1c8fd2984e8f47e9e1fcb9ce32')
+    version('1.9.0.1.g5b44b', 'f7c2e718801c1fd097a728530559e0d4')
+    version('1.9.0.0.gad558', 'cb93ffb5871225e2b813eb9c34b3096d')
+    version('1.8.2.2.g81279', '0e29d0c441dcbd9b9ee9291c3a8dfbdd')
+    version('1.8.2.1.g3bbbe', 'de6257118f2e3ac7fa1abca1e7c70afa')
+    version('1.8.2.0.g972a7', '8ace90ad0c5657022d10ba063783a652')
+    version('1.7.2.1.gaad58', 'eb51b042b9dbaf8ecd79a6fb24de1320')
+    version('1.7.2.0.gcc0ea', '3982f508c415c0abaca34cb5e92e711a')
+    version('1.7.1.0.g7ca7f', '187a8d15c1e20e5e9b00c5c3f227ca8a')
 
     depends_on('python', type=('build', 'run'))
 
     phases = ['configure', 'install']
 
     def url_for_version(self, version):
-        url = 'https://github.com/Kitware/ninja/archive/v{0}.kitware.dyndep-1.tar.gz'
-        return url.format(version)
+        # for some reason the hashes are being stripped from incomming
+        # version, so find the incomming version in all package versions
+        for ver in self.versions:
+            if str(version) in str(ver):
+                break
+
+        # remove the "artificial" tweak-level
+        split_ver = str(ver).split('.')
+        url_version = ".".join(split_ver[:3]) + "." + split_ver[4]
+
+        if version < spack.version.Version('1.8.2.1'):
+            url = 'https://github.com/Kitware/ninja/archive/v{0}.kitware.dyndep-1.tar.gz'
+        else:
+            url = 'https://github.com/Kitware/ninja/archive/v{0}.kitware.dyndep-1.jobserver-1.tar.gz'
+        return url.format(url_version)
 
     def configure(self, spec, prefix):
         python('configure.py', '--bootstrap')