Merge pull request #197607 from SamirTalwar/msodbcsql18

unixODBCDrivers.msodbcsql18: init at 18.1.1.1
This commit is contained in:
Doron Behar 2023-09-29 12:17:51 +00:00 committed by GitHub
commit b909309b4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 113 additions and 4 deletions

View File

@ -15290,6 +15290,12 @@
githubId = 171470;
name = "Sam Hug";
};
SamirTalwar = {
email = "lazy.git@functional.computer";
github = "SamirTalwar";
githubId = 47852;
name = "Samir Talwar";
};
samlich = {
email = "nixos@samli.ch";
github = "samlich";

View File

@ -1,6 +1,19 @@
{ fetchurl, stdenv, unixODBC, cmake, postgresql, mariadb, sqlite, zlib, libxml2, dpkg, lib, openssl, libkrb5, libuuid, patchelf, libiconv, fetchFromGitHub }:
{ fetchurl, stdenv, unixODBC, cmake, postgresql, mariadb, sqlite, zlib, libxml2, dpkg, lib, openssl, libkrb5, libuuid, patchelf, libiconv, fixDarwinDylibNames, fetchFromGitHub }:
# I haven't done any parameter tweaking.. So the defaults provided here might be bad
# Each of these ODBC drivers can be configured in your odbcinst.ini file using
# the various passthru and meta values. Of note are:
#
# * `passthru.fancyName`, the typical name used to reference the driver
# * `passthru.driver`, the path to the driver within the built package
# * `meta.description`, a short description of the ODBC driver
#
# For example, you might generate it as follows:
#
# ''
# [${package.fancyName}]
# Description = ${package.meta.description}
# Driver = ${package}/${package.driver}
# ''
{
psql = stdenv.mkDerivation rec {
@ -14,6 +27,7 @@
buildInputs = [ unixODBC postgresql ];
# see the top of the file for an explanation
passthru = {
fancyName = "PostgreSQL";
driver = "lib/psqlodbcw.so";
@ -59,6 +73,7 @@
"-DWITH_IODBC=OFF"
];
# see the top of the file for an explanation
passthru = {
fancyName = "MariaDB";
driver = "lib/libmaodbc${stdenv.hostPlatform.extensions.sharedLibrary}";
@ -87,6 +102,7 @@
cmakeFlags = [ "-DWITH_UNIXODBC=1" ];
# see the top of the file for an explanation
passthru = {
fancyName = "MySQL";
driver = "lib/libmyodbc3-3.51.12.so";
@ -122,6 +138,7 @@
mv "$out"/*.* "$out/lib"
'';
# see the top of the file for an explanation
passthru = {
fancyName = "SQLite";
driver = "lib/libsqlite3odbc.so";
@ -165,14 +182,15 @@
$out/lib/libmsodbcsql-${versionMajor}.${versionMinor}.so.${versionAdditional}
'';
# see the top of the file for an explanation
passthru = {
fancyName = "ODBC Driver 17 for SQL Server";
fancyName = "ODBC Driver ${versionMajor} for SQL Server";
driver = "lib/libmsodbcsql-${versionMajor}.${versionMinor}.so.${versionAdditional}";
};
meta = with lib; {
broken = stdenv.isDarwin;
description = "ODBC Driver 17 for SQL Server";
description = "ODBC Driver ${versionMajor} for SQL Server";
homepage = "https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
@ -181,6 +199,90 @@
};
};
msodbcsql18 = stdenv.mkDerivation(finalAttrs: {
pname = "msodbcsql${finalAttrs.versionMajor}";
version = "${finalAttrs.versionMajor}.${finalAttrs.versionMinor}.${finalAttrs.versionAdditional}${finalAttrs.versionSuffix}";
versionMajor = "18";
versionMinor = "1";
versionAdditional = "1.1";
versionSuffix = lib.optionalString stdenv.isLinux "-1";
src = fetchurl {
url = {
x86_64-linux = "https://packages.microsoft.com/debian/11/prod/pool/main/m/${finalAttrs.pname}/${finalAttrs.pname}_${finalAttrs.version}_amd64.deb";
aarch64-linux = "https://packages.microsoft.com/debian/11/prod/pool/main/m/${finalAttrs.pname}/${finalAttrs.pname}_${finalAttrs.version}_arm64.deb";
x86_64-darwin = "https://download.microsoft.com/download/6/4/0/64006503-51e3-44f0-a6cd-a9b757d0d61b/${finalAttrs.pname}-${finalAttrs.version}-amd64.tar.gz";
aarch64-darwin = "https://download.microsoft.com/download/6/4/0/64006503-51e3-44f0-a6cd-a9b757d0d61b/${finalAttrs.pname}-${finalAttrs.version}-arm64.tar.gz";
}.${stdenv.system} or (throw "Unsupported platform");
hash = {
x86_64-linux = "sha256:1f0rmh1aynf1sqmjclbsyh2wz5jby0fixrwz71zp6impxpwvil52";
aarch64-linux = "sha256:0zphnbvkqdbkcv6lvv63p7pyl68h5bs2dy6vv44wm6bi89svms4a";
x86_64-darwin = "sha256:1fn80byn1yihflznxcm9cpj42mpllnz54apnk9n46vzm2ng2lj6d";
aarch64-darwin = "sha256:116xl8r2apr5b48jnq6myj9fwqs88yccw5176yfyzh4534fznj5x";
}.${stdenv.system} or (throw "Unsupported platform");
};
nativeBuildInputs =
if stdenv.isDarwin
then
[
# Fix up the names encoded into the dylib, and make them absolute.
fixDarwinDylibNames
]
else
[
dpkg
patchelf
];
unpackPhase = lib.optionalString stdenv.isLinux ''
dpkg -x $src ./
'';
installPhase =
if stdenv.isDarwin
then
''
mkdir -p $out
tar xf $src --strip-components=1 -C $out
''
else
''
mkdir -p $out
mkdir -p $out/lib
cp -r opt/microsoft/msodbcsql${finalAttrs.versionMajor}/lib64 opt/microsoft/msodbcsql${finalAttrs.versionMajor}/share $out/
'';
# Replace the hard-coded paths in the dylib with nixpkgs equivalents.
fixupPhase = lib.optionalString stdenv.isDarwin ''
${stdenv.cc.bintools.targetPrefix}install_name_tool \
-change /usr/lib/libiconv.2.dylib ${libiconv}/lib/libiconv.2.dylib \
-change /opt/homebrew/lib/libodbcinst.2.dylib ${unixODBC}/lib/libodbcinst.2.dylib \
$out/${finalAttrs.passthru.driver}
'';
postFixup = lib.optionalString stdenv.isLinux ''
patchelf --set-rpath ${lib.makeLibraryPath [ unixODBC openssl libkrb5 libuuid stdenv.cc.cc ]} \
$out/${finalAttrs.passthru.driver}
'';
# see the top of the file for an explanation
passthru = {
fancyName = "ODBC Driver ${finalAttrs.versionMajor} for SQL Server";
driver = "lib/libmsodbcsql${if stdenv.isDarwin then ".${finalAttrs.versionMajor}.dylib" else "-${finalAttrs.versionMajor}.${finalAttrs.versionMinor}.so.${finalAttrs.versionAdditional}"}";
};
meta = with lib; {
description = finalAttrs.passthru.fancyName;
homepage = "https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
platforms = platforms.unix;
license = licenses.unfree;
maintainers = with maintainers; [ SamirTalwar ];
};
});
redshift = stdenv.mkDerivation rec {
pname = "redshift-odbc";
version = "1.4.49.1000";
@ -210,6 +312,7 @@
buildInputs = [ unixODBC ];
# see the top of the file for an explanation
passthru = {
fancyName = "Amazon Redshift (x64)";
driver = "lib/libamazonredshiftodbc64.so";