From 09b2fdd6d2701a3cbced65b53816910c73045dbc Mon Sep 17 00:00:00 2001 From: John Doty Date: Tue, 28 Nov 2023 14:38:03 +0000 Subject: [PATCH] Coder setup ODBC fixes --- coder-setup.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/coder-setup.py b/coder-setup.py index 4da7e98..c66a129 100644 --- a/coder-setup.py +++ b/coder-setup.py @@ -1,9 +1,23 @@ import os import pathlib import subprocess +import tempfile import urllib.request +ODBC_INI_CONTENTS = """ +[snowflake] +Description=SnowflakeDB +Driver=SnowflakeDSIIDriver +Locale=en-US +PORT=443 +SSL=on + +[ODBC Data Sources] +snowflake = SnowflakeDSIIDriver +""" + + def run(*args): subprocess.run(args, check=True) @@ -14,6 +28,8 @@ def install_packages(): "fish", "htop", "java-common", + "odbcinst", + "unixodbc", "unixodbc-dev", "wget", ] @@ -55,7 +71,30 @@ def configure_python(): restore_pip() +def install_snowflake_odbc(): + with tempfile.NamedTemporaryFile() as deb_file: + urllib.request.urlretrieve( + "https://sfc-repo.snowflakecomputing.com/odbc/linux/3.1.0/snowflake-odbc-3.1.0.x86_64.deb", + deb_file.name, + ) + run("sudo", "dpkg", "-i", deb_file.name) + + subprocess.run( + ["sudo", "sh", "-c", "cat > /etc/odbc.ini"], + input=ODBC_INI_CONTENTS.encode("utf-8"), + check=True, + ) + run( + "sudo", + "ln", + "-s", + "/usr/lib/x86_64-linux-gnu/libodbcinst.so.2", + "/usr/lib/x86_64-linux-gnu/libodbcinst.so.1", + ) + + install_packages() change_shell() configure_git() configure_python() +install_snowflake_odbc()