Merge "Be more agressive trying to install requirements."
diff --git a/jeepyb/cmd/run_mirror.py b/jeepyb/cmd/run_mirror.py
index 8e84479..13bdd83 100644
--- a/jeepyb/cmd/run_mirror.py
+++ b/jeepyb/cmd/run_mirror.py
@@ -158,7 +158,7 @@
     def build_mirror(self, mirror):
         print("Building mirror: %s" % mirror['name'])
         pip_format = ("%s install -M -U %s --exists-action=w "
-                      "--download-cache=%s --build %s -r %s")
+                      "--download-cache=%s --build %s %s")
         venv_format = ("virtualenv --clear --extra-search-dir=%s %s")
 
         workdir = tempfile.mkdtemp()
@@ -219,41 +219,39 @@
                     new_reqs = self.process_http_requirements(reqlist,
                                                               pip_cache_dir,
                                                               pip)
-                    (reqfp, reqfn) = tempfile.mkstemp()
-                    os.write(reqfp, '\n'.join(new_reqs))
-                    os.close(reqfp)
+
+                    for req in new_reqs:
+                        out = self.run_command(pip_format %
+                                               (pip, "", pip_cache_dir,
+                                                build, req))
+                        if "\nSuccessfully installed " not in out:
+                            sys.stderr.write(
+                                "Installing pip requires for %s:%s "
+                                "failed.\n%s\n" % (project, branch, out))
+                            print("pip install did not indicate success")
+                    freeze = self.run_command("%s freeze -l" % pip)
+                    requires = self.find_pkg_info(build)
+                    reqfd = open(reqs, "w")
+                    for line in freeze.split("\n"):
+                        if line.startswith("-e ") or (
+                                "==" in line and " " not in line):
+                            requires.add(line)
+                    for r in requires:
+                        reqfd.write(r + "\n")
+                    reqfd.close()
+                    out = self.run_command(venv_format %
+                                           (pip_cache_dir, venv))
+                    if os.path.exists(build):
+                        shutil.rmtree(build)
                     out = self.run_command(pip_format %
-                                           (pip, "", pip_cache_dir,
-                                            build, reqfn))
-                    if "\nSuccessfully installed " not in out:
-                        sys.stderr.write("Installing pip requires for %s:%s "
-                                         "failed.\n%s\n" %
+                                           (pip, "--no-install",
+                                            pip_cache_dir, build, reqs))
+                    if "\nSuccessfully downloaded " not in out:
+                        sys.stderr.write("Downloading pip requires for "
+                                         "%s:%s failed.\n%s\n" %
                                          (project, branch, out))
                         print("pip install did not indicate success")
-                    else:
-                        freeze = self.run_command("%s freeze -l" % pip)
-                        requires = self.find_pkg_info(build)
-                        reqfd = open(reqs, "w")
-                        for line in freeze.split("\n"):
-                            if line.startswith("-e ") or (
-                                    "==" in line and " " not in line):
-                                requires.add(line)
-                        for r in requires:
-                            reqfd.write(r + "\n")
-                        reqfd.close()
-                        out = self.run_command(venv_format %
-                                               (pip_cache_dir, venv))
-                        if os.path.exists(build):
-                            shutil.rmtree(build)
-                        out = self.run_command(pip_format %
-                                               (pip, "--no-install",
-                                                pip_cache_dir, build, reqs))
-                        if "\nSuccessfully downloaded " not in out:
-                            sys.stderr.write("Downloading pip requires for "
-                                             "%s:%s failed.\n%s\n" %
-                                             (project, branch, out))
-                            print("pip install did not indicate success")
-                        print("cached:\n%s" % freeze)
+                    print("cached:\n%s" % freeze)
                 else:
                     print("no requirements")
         shutil.rmtree(workdir)