diff --git a/README.md b/README.md index c73c0595..997cb8ad 100644 --- a/README.md +++ b/README.md @@ -35,17 +35,19 @@ dnf install -y libtool-ltdl krb5-libs # For SUSE zypper install -y libltdl7 libkrb5-3 libgssapi-krb5-2 +# For SUSE/openSUSE +zypper install -y libltdl7 + pip install mssql-python ``` ## Key Features ### Supported Platforms -Windows, MacOS and Linux (manylinux - Debian, Ubuntu, RHEL & musllinux - Alpine) +Windows, MacOS and Linux (manylinux - Debian, Ubuntu, RHEL, SUSE (x64 only) & musllinux - Alpine) > **Note:** -> Support for additional Linux OSs (SUSE Linux) will come soon -> +> SUSE Linux ARM64 is not supported by Microsoft ODBC Driver. Use x64 architecture for SUSE deployments. ### DBAPI v2.0 Compliance diff --git a/mssql_python/libs/linux/suse/x86_64/lib/libmsodbcsql-18.5.so.1.1 b/mssql_python/libs/linux/suse/x86_64/lib/libmsodbcsql-18.5.so.1.1 new file mode 100755 index 00000000..589787d4 Binary files /dev/null and b/mssql_python/libs/linux/suse/x86_64/lib/libmsodbcsql-18.5.so.1.1 differ diff --git a/mssql_python/libs/linux/suse/x86_64/lib/libodbcinst.so.2 b/mssql_python/libs/linux/suse/x86_64/lib/libodbcinst.so.2 new file mode 100755 index 00000000..ad6d9db0 Binary files /dev/null and b/mssql_python/libs/linux/suse/x86_64/lib/libodbcinst.so.2 differ diff --git a/mssql_python/libs/linux/suse/x86_64/share/resources/en_US/msodbcsqlr18.rll b/mssql_python/libs/linux/suse/x86_64/share/resources/en_US/msodbcsqlr18.rll new file mode 100755 index 00000000..0f69236e Binary files /dev/null and b/mssql_python/libs/linux/suse/x86_64/share/resources/en_US/msodbcsqlr18.rll differ diff --git a/mssql_python/pybind/README.md b/mssql_python/pybind/README.md index faf0fbe6..f9cd28f7 100644 --- a/mssql_python/pybind/README.md +++ b/mssql_python/pybind/README.md @@ -99,7 +99,12 @@ mssql_python/ │ ├── debian_ubuntu/ │ │ ├── x86_64/lib/ │ │ └── arm64/lib/ -│ └── rhel/ +│ ├── rhel/ +│ │ ├── x86_64/lib/ +│ │ └── arm64/lib/ +│ ├── suse/ +│ │ └── x86_64/lib/ # ARM64 not supported by Microsoft +│ └── alpine/ │ ├── x86_64/lib/ │ └── arm64/lib/ └── ddbc_bindings.cp{python_version}-{architecture}.{extension} @@ -152,6 +157,20 @@ Linux builds support multiple distributions: - `libmsodbcsql-18.5.so.1.1` - Main driver - `libodbcinst.so.2` - Installer library +**SUSE/openSUSE x86_64:** +- `libmsodbcsql-18.5.so.1.1` - Main driver +- `libodbcinst.so.2` - Installer library + +> **Note:** SUSE/openSUSE ARM64 is not supported by Microsoft ODBC Driver 18 + +**Alpine x86_64:** +- `libmsodbcsql-18.5.so.1.1` - Main driver +- `libodbcinst.so.2` - Installer library + +**Alpine ARM64:** +- `libmsodbcsql-18.5.so.1.1` - Main driver +- `libodbcinst.so.2` - Installer library + ## **Python Extension Modules** Your build system generates architecture-specific Python extension modules: diff --git a/mssql_python/pybind/ddbc_bindings.cpp b/mssql_python/pybind/ddbc_bindings.cpp index 775c3cd5..e78dea3f 100644 --- a/mssql_python/pybind/ddbc_bindings.cpp +++ b/mssql_python/pybind/ddbc_bindings.cpp @@ -653,8 +653,10 @@ std::string GetDriverPathCpp(const std::string& moduleDir) { platform = "alpine"; } else if (fs::exists("/etc/redhat-release") || fs::exists("/etc/centos-release")) { platform = "rhel"; + } else if (fs::exists("/etc/SuSE-release") || fs::exists("/etc/SUSE-brand")) { + platform = "suse"; } else { - platform = "debian_ubuntu"; + platform = "debian_ubuntu"; // Default to debian_ubuntu for other distros } fs::path driverPath = basePath / "libs" / "linux" / platform / arch / "lib" / "libmsodbcsql-18.5.so.1.1"; diff --git a/tests/test_000_dependencies.py b/tests/test_000_dependencies.py index f76a7413..9fa75076 100644 --- a/tests/test_000_dependencies.py +++ b/tests/test_000_dependencies.py @@ -65,8 +65,10 @@ def _detect_linux_distro(self): platform = "alpine"; } else if (fs::exists("/etc/redhat-release") || fs::exists("/etc/centos-release")) { platform = "rhel"; + } else if (fs::exists("/etc/SuSE-release") || fs::exists("/etc/SUSE-brand")) { + platform = "suse"; } else { - platform = "ubuntu"; + platform = "debian_ubuntu"; } fs::path driverPath = basePath / "libs" / "linux" / platform / arch / "lib" / "libmsodbcsql-18.5.so.1.1"; @@ -77,6 +79,8 @@ def _detect_linux_distro(self): distro_name = "alpine" elif (Path("/etc/redhat-release").exists() or Path("/etc/centos-release").exists()): distro_name = "rhel" + elif (Path("/etc/SuSE-release").exists() or Path("/etc/SUSE-brand").exists()): + distro_name = "suse" else: distro_name = "debian_ubuntu" except Exception: