about summary refs log tree commit diff
path: root/pkgs/tools/admin/awscli/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/admin/awscli/default.nix')
-rw-r--r--pkgs/tools/admin/awscli/default.nix132
1 files changed, 70 insertions, 62 deletions
diff --git a/pkgs/tools/admin/awscli/default.nix b/pkgs/tools/admin/awscli/default.nix
index 09910f125bc48..568282fa86ab6 100644
--- a/pkgs/tools/admin/awscli/default.nix
+++ b/pkgs/tools/admin/awscli/default.nix
@@ -8,81 +8,89 @@
 , awscli
 }:
 
-python3.pkgs.buildPythonApplication rec {
-  pname = "awscli";
-  version = "1.32.58"; # N.B: if you change this, change botocore and boto3 to a matching version too
-  pyproject = true;
+let
+  botocoreVersion = python3.pkgs.botocore.version;
+  # awscli.version should be pinned to 2 minor versions less than the botocoreVersion
+  versionMinor = toString (lib.toInt (lib.versions.minor botocoreVersion) - 2);
+  versionPatch = lib.versions.patch botocoreVersion;
+  self = python3.pkgs.buildPythonApplication rec {
+    pname = "awscli";
+    version = "1.${versionMinor}.${versionPatch}"; # N.B: if you change this, change botocore and boto3 to a matching version too
+    pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-dffY/BKsQ7vztW2sGn+WaZB0fXnqwwVjA4nkVwRZ1js=";
-  };
+    src = fetchPypi {
+      inherit pname version;
+      hash = "sha256-96hFvXs3Fcvad+PBEpS9RFMJkcD1qHqfQ+8gtVfEbnc=";
+    };
 
-  nativeBuildInputs = [
-    python3.pkgs.pythonRelaxDepsHook
-  ];
+    nativeBuildInputs = [
+      python3.pkgs.pythonRelaxDepsHook
+    ];
 
-  pythonRelaxDeps = [
-    "colorama"
-    "docutils"
-    "rsa"
-  ];
+    pythonRelaxDeps = [
+      # botocore must not be relaxed
+      "colorama"
+      "docutils"
+      "rsa"
+    ];
 
-  build-system = [
-    python3.pkgs.setuptools
-  ];
+    build-system = [
+      python3.pkgs.setuptools
+    ];
 
-  propagatedBuildInputs = with python3.pkgs; [
-    botocore
-    s3transfer
-    colorama
-    docutils
-    rsa
-    pyyaml
-    groff
-    less
-  ];
+    propagatedBuildInputs = with python3.pkgs; [
+      botocore
+      s3transfer
+      colorama
+      docutils
+      rsa
+      pyyaml
+      groff
+      less
+    ];
 
-  postInstall = ''
-    mkdir -p $out/share/bash-completion/completions
-    echo "complete -C $out/bin/aws_completer aws" > $out/share/bash-completion/completions/awscli
+    postInstall = ''
+      mkdir -p $out/share/bash-completion/completions
+      echo "complete -C $out/bin/aws_completer aws" > $out/share/bash-completion/completions/awscli
 
-    mkdir -p $out/share/zsh/site-functions
-    mv $out/bin/aws_zsh_completer.sh $out/share/zsh/site-functions
+      mkdir -p $out/share/zsh/site-functions
+      mv $out/bin/aws_zsh_completer.sh $out/share/zsh/site-functions
 
-    rm $out/bin/aws.cmd
-  '';
+      rm $out/bin/aws.cmd
+    '';
 
-  doInstallCheck = true;
+    doInstallCheck = true;
 
-  installCheckPhase = ''
-    runHook preInstallCheck
+    installCheckPhase = ''
+      runHook preInstallCheck
 
-    $out/bin/aws --version | grep "${python3.pkgs.botocore.version}"
-    $out/bin/aws --version | grep "${version}"
+      $out/bin/aws --version | grep "${botocoreVersion}"
+      $out/bin/aws --version | grep "${version}"
 
-    runHook postInstallCheck
-  '';
+      runHook postInstallCheck
+    '';
 
-  passthru = {
-    python = python3; # for aws_shell
-    updateScript = nix-update-script {
-      # Excludes 1.x versions from the Github tags list
-      extraArgs = [ "--version-regex" "^(1\.(.*))" ];
-    };
-    tests.version = testers.testVersion {
-      package = awscli;
-      command = "aws --version";
-      inherit version;
+    passthru = {
+      python = python3; # for aws_shell
+      updateScript = nix-update-script {
+        extraArgs = [ "--version=skip" ];
+      };
+      tests.version = testers.testVersion {
+        package = awscli;
+        command = "aws --version";
+        inherit version;
+      };
     };
-  };
 
-  meta = with lib; {
-    homepage = "https://aws.amazon.com/cli/";
-    changelog = "https://github.com/aws/aws-cli/blob/${version}/CHANGELOG.rst";
-    description = "Unified tool to manage your AWS services";
-    license = licenses.asl20;
-    mainProgram = "aws";
-    maintainers = with maintainers; [ anthonyroussel ];
+    meta = with lib; {
+      homepage = "https://aws.amazon.com/cli/";
+      changelog = "https://github.com/aws/aws-cli/blob/${version}/CHANGELOG.rst";
+      description = "Unified tool to manage your AWS services";
+      license = licenses.asl20;
+      mainProgram = "aws";
+      maintainers = with maintainers; [ anthonyroussel ];
+    };
   };
-}
+in
+assert self ? pythonRelaxDeps -> !(lib.elem "botocore" self.pythonRelaxDeps);
+self