diff --git a/databases/mongodb/Portfile b/databases/mongodb/Portfile
deleted file mode 100644
index 7832de0..0000000
--- a/databases/mongodb/Portfile
+++ /dev/null
@@ -1,105 +0,0 @@
-# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
-# $Id: Portfile 105364 2013-04-18 22:24:52Z ryandesign@macports.org $
-
-PortSystem          1.0
-PortGroup           compiler_blacklist_versions 1.0
-
-name                mongodb
-epoch               1
-version             2.4.2
-license             AGPL-3
-categories          databases
-maintainers         ryandesign
-revision            1
-
-description         High-performance, schema-free document-oriented database
-long_description    ${description}
-
-platforms           darwin
-
-homepage            http://www.mongodb.org/
-master_sites        http://downloads.mongodb.org/src/
-distname            ${name}-src-r${version}
-
-checksums           rmd160  896884f72ae94caee1405df658bd7878ef5c5fbb \
-                    sha256  d0a26fef7f425a6652ebfc3addbc7e1b01a10be65c9d68e464730687bd6721c3
-
-depends_build       port:scons
-
-depends_lib         port:libpcap \
-                    port:pcre \
-                    port:snappy \
-                    port:v8 \
-                    port:boost
-
-license_noconflict  scons
-
-# As of mongodb 2.2.0, we use the bundled copy of boost to guard against
-# potential incompatible changes that might be made in the boost port.
-
-patchfiles          patch-SConstruct.diff \
-                    patch-distsrc-client-SConstruct.diff \
-                    patch-src-SConscript.client.diff \
-                    patch-src-mongo-util-compress.cpp.diff
-
-post-patch {
-    reinplace "s|@@PREFIX@@|${prefix}|g" \
-        ${worksrcpath}/distsrc/client/SConstruct
-}
-
-use_configure       no
-
-variant universal {}
-
-compiler.blacklist  gcc-4.0 {clang < 318.0.45}
-
-build.env           TERM=xterm \
-                    ARCHFLAGS="[get_canonical_archflags]" \
-                    CPPFLAGS="${configure.cppflags}" \
-                    LDFLAGS="${configure.ldflags}"
-
-build.cmd           ${prefix}/bin/scons
-build.target        all mongobridge mongosniff
-build.args          --cc=${configure.cc} \
-                    --cxx=${configure.cxx} \
-                    --full \
-                    --use-system-pcre \
-                    --use-system-snappy \
-                    --use-system-boost \
-                    --use-system-v8 \
-                    --extralib=pcre,pcrecpp,snappy
-
-eval destroot.env   [option build.env]
-destroot.args       ${build.args}
-destroot.destdir    --prefix=${destroot}${prefix}
-
-set dbdir           ${prefix}/var/db/mongodb
-set logdir          ${prefix}/var/log/mongodb
-set mongouser       _mongo
-add_users           ${mongouser} group=${mongouser} realname=MongoDB\ Server
-
-post-destroot {
-    xinstall -W ${worksrcpath} mongobridge ${destroot}${prefix}/bin
-
-    xinstall -m 755 -o ${mongouser} -g ${mongouser} -d \
-        ${destroot}${dbdir} \
-        ${destroot}${logdir}
-    destroot.keepdirs-append  \
-        ${destroot}${dbdir} \
-        ${destroot}${logdir}
-}
-
-startupitem.create      yes
-startupitem.executable  sudo -u ${mongouser} ${prefix}/bin/mongod --dbpath ${dbdir} --logpath ${logdir}/mongodb.log --logappend
-
-if {${os.platform} == "darwin" && ${os.major} < 10} {
-    depends_build
-    depends_lib
-    pre-fetch {
-        ui_error "${name} ${version} requires OS X 10.6 or greater."
-        return -code error "incompatible OS X version"
-    }
-}
-
-livecheck.url       ${homepage}downloads
-livecheck.regex     {mongodb-src-r(\d+\.\d*[02468]\.\d+)\.}
diff --git a/databases/mongodb/files/patch-SConstruct.diff b/databases/mongodb/files/patch-SConstruct.diff
deleted file mode 100644
index 208989e..0000000
--- a/databases/mongodb/files/patch-SConstruct.diff
+++ /dev/null
@@ -1,24 +0,0 @@
---- SConstruct.orig	2013-03-15 13:59:55.000000000 -0500
-+++ SConstruct	2013-03-20 03:41:22.000000000 -0500
-@@ -491,20 +491,9 @@
-     darwin = True
-     platform = "osx" # prettier than darwin
- 
--    if env["CXX"] is None:
--        if os.path.exists( "/usr/bin/g++-4.2" ):
--            env["CXX"] = "g++-4.2"
--
-     nix = True
- 
--    if force64:
--       env.Append( EXTRACPPPATH=["/usr/64/include"] )
--       env.Append( EXTRALIBPATH=["/usr/64/lib"] )
--       if installDir == DEFAULT_INSTALL_DIR:
--           installDir = "/usr/64/"
--    else:
--       env.Append( EXTRACPPPATH=filterExists(["/sw/include" , "/opt/local/include"]) )
--       env.Append( EXTRALIBPATH=filterExists(["/sw/lib/", "/opt/local/lib"]) )
-+    env.MergeFlags( [ os.getenv("CPPFLAGS"), os.getenv("LDFLAGS"), os.getenv("ARCHFLAGS") ] )
- 
- elif os.sys.platform.startswith("linux"):
-     linux = True
diff --git a/databases/mongodb/files/patch-distsrc-client-SConstruct.diff b/databases/mongodb/files/patch-distsrc-client-SConstruct.diff
deleted file mode 100644
index b1b1692..0000000
--- a/databases/mongodb/files/patch-distsrc-client-SConstruct.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- distsrc/client/SConstruct.orig	2012-08-28 00:28:11.000000000 -0500
-+++ distsrc/client/SConstruct	2012-08-30 04:21:53.000000000 -0500
-@@ -47,7 +47,7 @@
- win = False
- 
- if "darwin" == sys.platform:
--    addExtraLibs( "/opt/local/" )
-+    addExtraLibs( "@@PREFIX@@/" )
-     nix = True
- elif sys.platform in ("linux2", "linux3"):
-     nix = True
diff --git a/databases/mongodb/files/patch-src-SConscript.client.diff b/databases/mongodb/files/patch-src-SConscript.client.diff
deleted file mode 100644
index 75cb4be..0000000
--- a/databases/mongodb/files/patch-src-SConscript.client.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-https://jira.mongodb.org/browse/SERVER-5575
---- src/SConscript.client.orig	2013-03-15 13:59:55.000000000 -0500
-+++ src/SConscript.client	2013-03-20 03:41:50.000000000 -0500
-@@ -177,7 +177,7 @@
- # install
- prefix = GetOption("prefix")
- 
--env.Install(prefix + "/lib", '${LIBPREFIX}mongoclient${LIBSUFFIX}')
-+env.InstallAs(prefix + "/lib", '${LIBPREFIX}mongoclient${LIBSUFFIX}')
- 
- for x in clientHeaderDirectories:
-     inst = env.Install(prefix + "/include/mongo/" + x,
diff --git a/databases/mongodb/files/patch-src-mongo-util-compress.cpp.diff b/databases/mongodb/files/patch-src-mongo-util-compress.cpp.diff
deleted file mode 100644
index 334299c..0000000
--- a/databases/mongodb/files/patch-src-mongo-util-compress.cpp.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/mongo/util/compress.cpp.orig	2013-03-15 13:59:55.000000000 -0500
-+++ src/mongo/util/compress.cpp	2013-03-20 03:48:23.000000000 -0500
-@@ -18,7 +18,7 @@
- 
- #include "mongo/util/compress.h"
- 
--#include "third_party/snappy/snappy.h"
-+#include <snappy.h>
- 
- namespace mongo {
- 
