mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2025-01-08 22:57:42 +03:00
Merge pull request #197607 from SamirTalwar/msodbcsql18
unixODBCDrivers.msodbcsql18: init at 18.1.1.1
This commit is contained in:
commit
b909309b4f
@ -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";
|
||||
|
@ -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";
|
||||
|
Loading…
Reference in New Issue
Block a user