diff --git a/pkgs/applications/misc/snowsql/darwin.nix b/pkgs/applications/misc/snowsql/darwin.nix new file mode 100644 index 0000000000000..c6c20925dc3f6 --- /dev/null +++ b/pkgs/applications/misc/snowsql/darwin.nix @@ -0,0 +1,48 @@ +{ + lib, + stdenvNoCC, + fetchurl, + unzip, + cpio, + gzip, + unar, + zlib, + version, + meta, + pname, +}: +stdenvNoCC.mkDerivation (finalAttrs: { + inherit pname version meta; + dontStrip = true; + + 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 + ]; + + unpackPhase = '' + unar $src + ''; + + 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/ + ''; +}) diff --git a/pkgs/applications/misc/snowsql/default.nix b/pkgs/applications/misc/snowsql/default.nix index 677f33d267b74..15cc1cc633a21 100644 --- a/pkgs/applications/misc/snowsql/default.nix +++ b/pkgs/applications/misc/snowsql/default.nix @@ -1,49 +1,26 @@ -{ lib -, stdenv -, fetchurl -, rpmextract -, patchelf -, makeWrapper -, openssl -, libxcrypt-legacy +{ + stdenvNoCC, + callPackage, + lib, }: - -stdenv.mkDerivation rec { +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 ]; license = licenses.unfree; maintainers = with maintainers; [ andehen ]; - platforms = [ "x86_64-linux" ]; + platforms = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; mainProgram = "snowsql"; }; -} +in +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 new file mode 100644 index 0000000000000..654513a3f3504 --- /dev/null +++ b/pkgs/applications/misc/snowsql/linux.nix @@ -0,0 +1,51 @@ +{ + lib, + stdenv, + fetchurl, + rpmextract, + makeWrapper, + openssl, + libxcrypt-legacy, + zlib, + version, + pname, + meta, +}: +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"; + sha256 = "28a0828fea48c1686eccebb196343c635d660300ff18e36ca5b5ee3c03017611"; + }; + + nativeBuildInputs = [ + rpmextract + makeWrapper + ]; + + unpackPhase = '' + rpmextract $src + ''; + + installPhase = '' + mkdir -p $out/{bin,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 "${finalAttrs.libPath}":"$out/lib" + ''; +})