diff --git a/jeepyb/cmd/create_cgitrepos.py b/jeepyb/cmd/create_cgitrepos.py
index d8da88b..8bd12e6 100644
--- a/jeepyb/cmd/create_cgitrepos.py
+++ b/jeepyb/cmd/create_cgitrepos.py
@@ -16,6 +16,9 @@
 # create_cgitrepos.py reads the project config file called projects.yaml
 # and generates a cgitrepos configuration file which is then copied to
 # the cgit server.
+#
+# It also creates the necessary top-level directories for each project
+# organization (openstack, stackforge, etc)
 
 import os
 import yaml
@@ -39,6 +42,9 @@
         assert name not in names
         names.add(name)
         gitorgs.setdefault(org, []).append((name, description))
+    for org in gitorgs:
+        if not os.path.isdir('%s/%s' % (REPO_PATH, org)):
+            os.makedirs('%s/%s' % (REPO_PATH, org))
     with open(CGIT_REPOS, 'w') as cgit_file:
         cgit_file.write('# Autogenerated by create_cgitrepos.py\n')
         for org in sorted(gitorgs):
diff --git a/jeepyb/cmd/run_mirror.py b/jeepyb/cmd/run_mirror.py
index 8e84479..70a89c9 100644
--- a/jeepyb/cmd/run_mirror.py
+++ b/jeepyb/cmd/run_mirror.py
@@ -50,6 +50,7 @@
 # makes it suitable for running in a cron job with only stdout
 # redirected to a log, and also avoids one broken project preventing
 # caching of requirements for others.
+from __future__ import print_function
 
 import argparse
 import datetime
@@ -122,7 +123,7 @@
 
     def debug(self, msg):
         if self.args.debug:
-            print msg
+            print(msg)
 
     def process_http_requirements(self, reqlist, pip_cache_dir, pip):
         new_reqs = []
@@ -157,9 +158,11 @@
 
     def build_mirror(self, mirror):
         print("Building mirror: %s" % mirror['name'])
-        pip_format = ("%s install -M -U %s --exists-action=w "
+        pip_format = ("%s install -U %s --exists-action=w "
                       "--download-cache=%s --build %s -r %s")
         venv_format = ("virtualenv --clear --extra-search-dir=%s %s")
+        upgrade_format = ("%s install -U --exists-action=w "
+                          "--download-cache=%s --build %s %s")
 
         workdir = tempfile.mkdtemp()
         reqs = os.path.join(workdir, "reqs")
@@ -214,6 +217,12 @@
                 if reqlist:
                     out = self.run_command(venv_format %
                                            (pip_cache_dir, venv))
+                    out = self.run_command(upgrade_format %
+                                           (pip, pip_cache_dir,
+                                            build, "setuptools"))
+                    out = self.run_command(upgrade_format %
+                                           (pip, pip_cache_dir,
+                                            build, "pip"))
                     if os.path.exists(build):
                         shutil.rmtree(build)
                     new_reqs = self.process_http_requirements(reqlist,
