From 6e634f869d8cf5b20e0d82ed5376b1265adc102c Mon Sep 17 00:00:00 2001 From: Anders Hennum Date: Mon, 1 Apr 2024 21:06:36 +0200 Subject: [PATCH 1/4] snowsql: Add support for darwin platforms --- pkgs/applications/misc/snowsql/darwin.nix | 56 ++++++++++++++++++++++ pkgs/applications/misc/snowsql/default.nix | 53 +++++--------------- pkgs/applications/misc/snowsql/linux.nix | 45 +++++++++++++++++ 3 files changed, 113 insertions(+), 41 deletions(-) create mode 100644 pkgs/applications/misc/snowsql/darwin.nix create mode 100644 pkgs/applications/misc/snowsql/linux.nix diff --git a/pkgs/applications/misc/snowsql/darwin.nix b/pkgs/applications/misc/snowsql/darwin.nix new file mode 100644 index 0000000000000..9ffc4370210b5 --- /dev/null +++ b/pkgs/applications/misc/snowsql/darwin.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchurl, + unzip, + cpio, + gzip, + unar, + darwin, + zlib, + version, + meta, + pname, +}: let + arch = + if stdenv.isAarch64 + then "arm64" + else "x86_64"; +in + stdenv.mkDerivation rec { + inherit pname version meta; + dontStrip = true; + + src = fetchurl { + url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor version}/darwin_${arch}/snowsql-${version}-darwin_${arch}.pkg"; + sha256 = + if arch == "arm64" + then "acb2096b87466f0fdbff544d9f64feafc23cbee1bdf963e84b9658511ade9536" + else "9727c07fc11b1d8adf4a4eb0b5b996d82cd3d9da191a86f4c7b772726f8e5e92"; + }; + + nativeBuildInputs = [unar cpio unzip gzip zlib]; + + unpackPhase = '' + unar $src + ''; + + buildPhase = '' + cd *snowsql-${version}-darwin_${arch} + cat snowsql-darwin.pkg/Payload | gzip -d | cpio -idmv + unzip SnowSQL.app/Contents/MacOS/snowsql-${version}-darwin_${arch}.zip -d zipped-content + ''; + + installPhase = '' + mkdir -p $out/bin + cp -r zipped-content/* $out/bin/ + ''; + + postFixup = + if arch == "arm64" + then '' + install_name_tool -change /usr/lib/libSystem.B.dylib ${darwin.Libsystem}/lib/libSystem.B.dylib $out/bin/snowsql + install_name_tool -change /usr/lib/libz.1.dylib ${zlib}/lib/libz.1.dylib $out/bin/snowsql + '' + else ""; + } diff --git a/pkgs/applications/misc/snowsql/default.nix b/pkgs/applications/misc/snowsql/default.nix index 677f33d267b74..7cf50e92609cc 100644 --- a/pkgs/applications/misc/snowsql/default.nix +++ b/pkgs/applications/misc/snowsql/default.nix @@ -1,49 +1,20 @@ -{ lib -, stdenv -, fetchurl -, rpmextract -, patchelf -, makeWrapper -, openssl -, libxcrypt-legacy -}: - -stdenv.mkDerivation rec { +{ + stdenv, + callPackage, + lib, +}: let pname = "snowsql"; version = "1.3.0"; - - src = fetchurl { - url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor version}/linux_x86_64/snowflake-snowsql-${version}-1.x86_64.rpm"; - sha256 = "sha256-KKCCj+pIwWhuzOuxljQ8Y11mAwD/GONspbXuPAMBdhE="; - }; - - nativeBuildInputs = [ rpmextract makeWrapper ]; - - libPath = lib.makeLibraryPath [ openssl libxcrypt-legacy ]; - - buildCommand = '' - mkdir -p $out/bin/ - cd $out - rpmextract $src - rm -R usr/bin - mv usr/* $out - rmdir usr - - ${patchelf}/bin/patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - lib64/snowflake/snowsql/snowsql - - makeWrapper $out/lib64/snowflake/snowsql/snowsql $out/bin/snowsql \ - --set LD_LIBRARY_PATH "${libPath}":"${placeholder "out"}"/lib64/snowflake/snowsql \ - ''; - meta = with lib; { description = "Command line client for the Snowflake database"; homepage = "https://www.snowflake.com"; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + sourceProvenance = with sourceTypes; [binaryNativeCode]; license = licenses.unfree; - maintainers = with maintainers; [ andehen ]; - platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [andehen]; + platforms = ["x86_64-linux" "x86_64-darwin" "aarch64-darwin"]; mainProgram = "snowsql"; }; -} +in + if stdenv.isDarwin + then callPackage ./darwin.nix {inherit pname version meta;} + else callPackage ./linux.nix {inherit pname version meta;} diff --git a/pkgs/applications/misc/snowsql/linux.nix b/pkgs/applications/misc/snowsql/linux.nix new file mode 100644 index 0000000000000..b5689705b4d68 --- /dev/null +++ b/pkgs/applications/misc/snowsql/linux.nix @@ -0,0 +1,45 @@ +{ + lib, + stdenv, + fetchurl, + rpmextract, + makeWrapper, + openssl, + libxcrypt-legacy, + zlib, + version, + pname, + meta, +}: +stdenv.mkDerivation rec { + inherit pname version meta; + src = fetchurl { + url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor version}/linux_x86_64/snowflake-snowsql-${version}-1.x86_64.rpm"; + sha256 = "28a0828fea48c1686eccebb196343c635d660300ff18e36ca5b5ee3c03017611"; + }; + + nativeBuildInputs = [rpmextract makeWrapper]; + + unpackPhase = '' + rpmextract $src + ''; + + installPhase = '' + mkdir -p $out/bin/ + mkdir -p $out/lib/ + mv usr/lib64/snowflake/snowsql/* $out/lib/ + ''; + + libPath = lib.makeLibraryPath [openssl libxcrypt-legacy zlib]; + + preFixup = '' + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/lib/snowsql + ''; + + postFixup = '' + makeWrapper $out/lib/snowsql $out/bin/snowsql \ + --set LD_LIBRARY_PATH "${libPath}":"$out/lib" + ''; +} From e81b90e629d9032ba2e34df4973ffed3d4493f83 Mon Sep 17 00:00:00 2001 From: Anders Asheim Hennum <754494+andehen@users.noreply.github.com> Date: Sat, 6 Jul 2024 11:16:01 +0200 Subject: [PATCH 2/4] Apply suggestions from review --- pkgs/applications/misc/snowsql/darwin.nix | 75 +++++++++++----------- pkgs/applications/misc/snowsql/default.nix | 22 ++++--- pkgs/applications/misc/snowsql/linux.nix | 22 ++++--- 3 files changed, 65 insertions(+), 54 deletions(-) diff --git a/pkgs/applications/misc/snowsql/darwin.nix b/pkgs/applications/misc/snowsql/darwin.nix index 9ffc4370210b5..05c2b1c8fcb2c 100644 --- a/pkgs/applications/misc/snowsql/darwin.nix +++ b/pkgs/applications/misc/snowsql/darwin.nix @@ -1,6 +1,6 @@ { lib, - stdenv, + stdenvNoCC, fetchurl, unzip, cpio, @@ -11,46 +11,45 @@ version, meta, pname, -}: let - arch = - if stdenv.isAarch64 - then "arm64" - else "x86_64"; -in - stdenv.mkDerivation rec { - inherit pname version meta; - dontStrip = true; +}: +stdenvNoCC.mkDerivation (finalAttrs: { + inherit pname version meta; + dontStrip = true; - src = fetchurl { - url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor version}/darwin_${arch}/snowsql-${version}-darwin_${arch}.pkg"; - sha256 = - if arch == "arm64" - then "acb2096b87466f0fdbff544d9f64feafc23cbee1bdf963e84b9658511ade9536" - else "9727c07fc11b1d8adf4a4eb0b5b996d82cd3d9da191a86f4c7b772726f8e5e92"; - }; + src = fetchurl { + url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor finalAttrs.version}/darwin_${stdenvNoCC.hostPlatform.darwinArch}/snowsql-${finalAttrs.version}-darwin_${stdenvNoCC.hostPlatform.darwinArch}.pkg"; + sha256 = + if stdenvNoCC.isAarch64 then + "acb2096b87466f0fdbff544d9f64feafc23cbee1bdf963e84b9658511ade9536" + else + "9727c07fc11b1d8adf4a4eb0b5b996d82cd3d9da191a86f4c7b772726f8e5e92"; + }; - nativeBuildInputs = [unar cpio unzip gzip zlib]; + nativeBuildInputs = [ + unar + cpio + unzip + gzip + zlib + ]; - unpackPhase = '' - unar $src - ''; + unpackPhase = '' + unar $src + ''; - buildPhase = '' - cd *snowsql-${version}-darwin_${arch} - cat snowsql-darwin.pkg/Payload | gzip -d | cpio -idmv - unzip SnowSQL.app/Contents/MacOS/snowsql-${version}-darwin_${arch}.zip -d zipped-content - ''; + buildPhase = '' + cd *snowsql-${finalAttrs.version}-darwin_${stdenvNoCC.hostPlatform.darwinArch} + cat snowsql-darwin.pkg/Payload | gzip -d | cpio -idmv + unzip SnowSQL.app/Contents/MacOS/snowsql-${finalAttrs.version}-darwin_${stdenvNoCC.hostPlatform.darwinArch}.zip -d zipped-content + ''; - installPhase = '' - mkdir -p $out/bin - cp -r zipped-content/* $out/bin/ - ''; + installPhase = '' + mkdir -p $out/bin + cp -r zipped-content/* $out/bin/ + ''; - postFixup = - if arch == "arm64" - then '' - install_name_tool -change /usr/lib/libSystem.B.dylib ${darwin.Libsystem}/lib/libSystem.B.dylib $out/bin/snowsql - install_name_tool -change /usr/lib/libz.1.dylib ${zlib}/lib/libz.1.dylib $out/bin/snowsql - '' - else ""; - } + postFixup = lib.optionalString stdenvNoCC.isAarch64 '' + install_name_tool -change /usr/lib/libSystem.B.dylib ${darwin.Libsystem}/lib/libSystem.B.dylib $out/bin/snowsql + install_name_tool -change /usr/lib/libz.1.dylib ${zlib}/lib/libz.1.dylib $out/bin/snowsql + ''; +}) diff --git a/pkgs/applications/misc/snowsql/default.nix b/pkgs/applications/misc/snowsql/default.nix index 7cf50e92609cc..15cc1cc633a21 100644 --- a/pkgs/applications/misc/snowsql/default.nix +++ b/pkgs/applications/misc/snowsql/default.nix @@ -1,20 +1,26 @@ { - stdenv, + stdenvNoCC, callPackage, lib, -}: let +}: +let pname = "snowsql"; version = "1.3.0"; meta = with lib; { description = "Command line client for the Snowflake database"; homepage = "https://www.snowflake.com"; - sourceProvenance = with sourceTypes; [binaryNativeCode]; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = licenses.unfree; - maintainers = with maintainers; [andehen]; - platforms = ["x86_64-linux" "x86_64-darwin" "aarch64-darwin"]; + maintainers = with maintainers; [ andehen ]; + platforms = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; mainProgram = "snowsql"; }; in - if stdenv.isDarwin - then callPackage ./darwin.nix {inherit pname version meta;} - else callPackage ./linux.nix {inherit pname version meta;} +if stdenvNoCC.isDarwin then + callPackage ./darwin.nix { inherit pname version meta; } +else + callPackage ./linux.nix { inherit pname version meta; } diff --git a/pkgs/applications/misc/snowsql/linux.nix b/pkgs/applications/misc/snowsql/linux.nix index b5689705b4d68..d0de5aca55bef 100644 --- a/pkgs/applications/misc/snowsql/linux.nix +++ b/pkgs/applications/misc/snowsql/linux.nix @@ -1,6 +1,6 @@ { lib, - stdenv, + stdevnNoCC, fetchurl, rpmextract, makeWrapper, @@ -11,26 +11,32 @@ pname, meta, }: -stdenv.mkDerivation rec { +stdevnNoCC.mkDerivation (finalAttrs: { inherit pname version meta; src = fetchurl { - url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor version}/linux_x86_64/snowflake-snowsql-${version}-1.x86_64.rpm"; + url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor finalAttrs.version}/linux_x86_64/snowflake-snowsql-${finalAttrs.version}-1.x86_64.rpm"; sha256 = "28a0828fea48c1686eccebb196343c635d660300ff18e36ca5b5ee3c03017611"; }; - nativeBuildInputs = [rpmextract makeWrapper]; + nativeBuildInputs = [ + rpmextract + makeWrapper + ]; unpackPhase = '' rpmextract $src ''; installPhase = '' - mkdir -p $out/bin/ - mkdir -p $out/lib/ + mkdir -p $out/{bin,lib} mv usr/lib64/snowflake/snowsql/* $out/lib/ ''; - libPath = lib.makeLibraryPath [openssl libxcrypt-legacy zlib]; + libPath = lib.makeLibraryPath [ + openssl + libxcrypt-legacy + zlib + ]; preFixup = '' patchelf \ @@ -42,4 +48,4 @@ stdenv.mkDerivation rec { makeWrapper $out/lib/snowsql $out/bin/snowsql \ --set LD_LIBRARY_PATH "${libPath}":"$out/lib" ''; -} +}) From 4846c7a5f20af3bd8b7c52f3db89d5dd2eeed361 Mon Sep 17 00:00:00 2001 From: Anders Asheim Hennum Date: Sat, 6 Jul 2024 12:04:09 +0200 Subject: [PATCH 3/4] Switch back to using stdenv for linux --- pkgs/applications/misc/snowsql/linux.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/misc/snowsql/linux.nix b/pkgs/applications/misc/snowsql/linux.nix index d0de5aca55bef..654513a3f3504 100644 --- a/pkgs/applications/misc/snowsql/linux.nix +++ b/pkgs/applications/misc/snowsql/linux.nix @@ -1,6 +1,6 @@ { lib, - stdevnNoCC, + stdenv, fetchurl, rpmextract, makeWrapper, @@ -11,7 +11,7 @@ pname, meta, }: -stdevnNoCC.mkDerivation (finalAttrs: { +stdenv.mkDerivation (finalAttrs: { inherit pname version meta; src = fetchurl { url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor finalAttrs.version}/linux_x86_64/snowflake-snowsql-${finalAttrs.version}-1.x86_64.rpm"; @@ -46,6 +46,6 @@ stdevnNoCC.mkDerivation (finalAttrs: { postFixup = '' makeWrapper $out/lib/snowsql $out/bin/snowsql \ - --set LD_LIBRARY_PATH "${libPath}":"$out/lib" + --set LD_LIBRARY_PATH "${finalAttrs.libPath}":"$out/lib" ''; }) From ab9278f2dfc514034a73ccf1b3786ff49508e492 Mon Sep 17 00:00:00 2001 From: Anders Hennum Date: Sat, 6 Jul 2024 12:56:01 +0200 Subject: [PATCH 4/4] Remove postFixup step for aarch --- pkgs/applications/misc/snowsql/darwin.nix | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/misc/snowsql/darwin.nix b/pkgs/applications/misc/snowsql/darwin.nix index 05c2b1c8fcb2c..c6c20925dc3f6 100644 --- a/pkgs/applications/misc/snowsql/darwin.nix +++ b/pkgs/applications/misc/snowsql/darwin.nix @@ -6,7 +6,6 @@ cpio, gzip, unar, - darwin, zlib, version, meta, @@ -19,10 +18,9 @@ stdenvNoCC.mkDerivation (finalAttrs: { src = fetchurl { url = "https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/${lib.versions.majorMinor finalAttrs.version}/darwin_${stdenvNoCC.hostPlatform.darwinArch}/snowsql-${finalAttrs.version}-darwin_${stdenvNoCC.hostPlatform.darwinArch}.pkg"; sha256 = - if stdenvNoCC.isAarch64 then - "acb2096b87466f0fdbff544d9f64feafc23cbee1bdf963e84b9658511ade9536" - else - "9727c07fc11b1d8adf4a4eb0b5b996d82cd3d9da191a86f4c7b772726f8e5e92"; + if stdenvNoCC.isAarch64 + then "acb2096b87466f0fdbff544d9f64feafc23cbee1bdf963e84b9658511ade9536" + else "9727c07fc11b1d8adf4a4eb0b5b996d82cd3d9da191a86f4c7b772726f8e5e92"; }; nativeBuildInputs = [ @@ -47,9 +45,4 @@ stdenvNoCC.mkDerivation (finalAttrs: { mkdir -p $out/bin cp -r zipped-content/* $out/bin/ ''; - - postFixup = lib.optionalString stdenvNoCC.isAarch64 '' - install_name_tool -change /usr/lib/libSystem.B.dylib ${darwin.Libsystem}/lib/libSystem.B.dylib $out/bin/snowsql - install_name_tool -change /usr/lib/libz.1.dylib ${zlib}/lib/libz.1.dylib $out/bin/snowsql - ''; })