Make downloading work on a stock buster installation

Previously it was relying on an old version of libssl being installed.

Change-Id: I9d2bb58dc96d0e7a403c7602ab7e8e034e65de91
diff --git a/frc971/downloader/downloader.py b/frc971/downloader/downloader.py
index e49ee5d..e4826cf 100644
--- a/frc971/downloader/downloader.py
+++ b/frc971/downloader/downloader.py
@@ -10,22 +10,22 @@
 import os
 
 
-def install(ssh_target, pkg):
+def install(ssh_target, pkg, ssh_path, scp_path):
     """Installs a package from NI on the ssh target."""
     print("Installing", pkg)
     PKG_URL = "http://download.ni.com/ni-linux-rt/feeds/2015/arm/ipk/cortexa9-vfpv3/" + pkg
     subprocess.check_call(["wget", PKG_URL, "-O", pkg])
     try:
         subprocess.check_call([
-            "external/ssh/usr/bin/scp", "-S", "external/ssh/usr/bin/ssh", pkg,
+            scp_path, "-S", ssh_path, pkg,
             ssh_target + ":/tmp/" + pkg
         ])
         subprocess.check_call([
-            "external/ssh/usr/bin/ssh", ssh_target, "opkg", "install",
+            ssh_path, ssh_target, "opkg", "install",
             "/tmp/" + pkg
         ])
         subprocess.check_call(
-            ["external/ssh/usr/bin/ssh", ssh_target, "rm", "/tmp/" + pkg])
+            [ssh_path, ssh_target, "rm", "/tmp/" + pkg])
     finally:
         subprocess.check_call(["rm", pkg])
 
@@ -65,25 +65,31 @@
 
     ssh_target = "%s@%s" % (user, hostname)
 
+    ssh_path = "external/ssh/ssh"
+    scp_path = "external/ssh/scp"
+
     rsync_cmd = ([
-        "external/rsync/usr/bin/rsync", "-e", "external/ssh/usr/bin/ssh", "-c",
+        "external/rsync/usr/bin/rsync", "-e", ssh_path, "-c",
         "-v", "-z", "--copy-links"
     ] + srcs + ["%s:%s/%s" % (ssh_target, target_dir, relative_dir)])
     try:
         subprocess.check_call(rsync_cmd)
     except subprocess.CalledProcessError as e:
-        if e.returncode == 127:
+        if e.returncode == 127 or e.returncode == 12:
             print("Unconfigured roboRIO, installing rsync.")
-            install(ssh_target, "libattr1_2.4.47-r0.36_cortexa9-vfpv3.ipk")
-            install(ssh_target, "libacl1_2.2.52-r0.36_cortexa9-vfpv3.ipk")
-            install(ssh_target, "rsync_3.1.0-r0.7_cortexa9-vfpv3.ipk")
+            install(ssh_target, "libattr1_2.4.47-r0.36_cortexa9-vfpv3.ipk",
+                    ssh_path, scp_path)
+            install(ssh_target, "libacl1_2.2.52-r0.36_cortexa9-vfpv3.ipk",
+                    ssh_path, scp_path)
+            install(ssh_target, "rsync_3.1.0-r0.7_cortexa9-vfpv3.ipk",
+                    ssh_path, scp_path)
             subprocess.check_call(rsync_cmd)
         else:
             raise e
 
     if not recursive:
         subprocess.check_call(
-            ("external/ssh/usr/bin/ssh", ssh_target, "&&".join([
+            (ssh_path, ssh_target, "&&".join([
                 "chmod u+s %s/starter_exe" % target_dir,
                 "echo \'Done moving new executables into place\'",
                 "bash -c \'sync && sync && sync\'",