ssm-session-manager-plugin: migrate to buildGoModule

Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>

+131 -20
+96
pkgs/by-name/ss/ssm-session-manager-plugin/0001-module-support.patch
··· 1 + From e246c4f87c1af78be5f5a76f79bd66c27d63918f Mon Sep 17 00:00:00 2001 2 + From: Paul Meyer <49727155+katexochen@users.noreply.github.com> 3 + Date: Wed, 3 Jul 2024 21:38:15 +0200 4 + Subject: [PATCH] module support 5 + 6 + Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com> 7 + --- 8 + go.mod | 26 ++++++++++++++++++++++++++ 9 + go.sum | 42 ++++++++++++++++++++++++++++++++++++++++++ 10 + 2 files changed, 68 insertions(+) 11 + create mode 100644 go.mod 12 + create mode 100644 go.sum 13 + 14 + diff --git a/go.mod b/go.mod 15 + new file mode 100644 16 + index 00000000..51c79d4c 17 + --- /dev/null 18 + +++ b/go.mod 19 + @@ -0,0 +1,26 @@ 20 + +module github.com/aws/session-manager-plugin 21 + + 22 + +go 1.22.3 23 + + 24 + +require ( 25 + + github.com/aws/aws-sdk-go v1.54.14 26 + + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 27 + + github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 28 + + github.com/fsnotify/fsnotify v1.7.0 29 + + github.com/gorilla/websocket v1.5.3 30 + + github.com/stretchr/testify v1.9.0 31 + + github.com/twinj/uuid v0.0.0-20151029044442-89173bcdda19 32 + + github.com/xtaci/smux v1.5.24 33 + + golang.org/x/crypto v0.24.0 34 + + golang.org/x/sync v0.7.0 35 + + golang.org/x/sys v0.21.0 36 + +) 37 + + 38 + +require ( 39 + + github.com/davecgh/go-spew v1.1.1 // indirect 40 + + github.com/jmespath/go-jmespath v0.4.0 // indirect 41 + + github.com/pmezard/go-difflib v1.0.0 // indirect 42 + + github.com/stretchr/objx v0.5.2 // indirect 43 + + golang.org/x/term v0.21.0 // indirect 44 + + gopkg.in/yaml.v3 v3.0.1 // indirect 45 + +) 46 + diff --git a/go.sum b/go.sum 47 + new file mode 100644 48 + index 00000000..ca623749 49 + --- /dev/null 50 + +++ b/go.sum 51 + @@ -0,0 +1,42 @@ 52 + +github.com/aws/aws-sdk-go v1.54.14 h1:llJ60MzLzovyDE/rEDbUjS1cICh7krk1PwQwNlKRoeQ= 53 + +github.com/aws/aws-sdk-go v1.54.14/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= 54 + +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= 55 + +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= 56 + +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 57 + +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 58 + +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 59 + +github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 h1:XBBHcIb256gUJtLmY22n99HaZTz+r2Z51xUPi01m3wg= 60 + +github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203/go.mod h1:E1jcSv8FaEny+OP/5k9UxZVw9YFWGj7eI4KR/iOBqCg= 61 + +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 62 + +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 63 + +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= 64 + +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 65 + +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= 66 + +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= 67 + +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= 68 + +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= 69 + +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 70 + +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 71 + +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 72 + +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= 73 + +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 74 + +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 75 + +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 76 + +github.com/twinj/uuid v0.0.0-20151029044442-89173bcdda19 h1:HlxV0XiEKMMyjS3gGtJmmFZsxQ22GsLvA7F980il+1w= 77 + +github.com/twinj/uuid v0.0.0-20151029044442-89173bcdda19/go.mod h1:mMgcE1RHFUFqe5AfiwlINXisXfDGro23fWdPUfOMjRY= 78 + +github.com/xtaci/smux v1.5.24 h1:77emW9dtnOxxOQ5ltR+8BbsX1kzcOxQ5gB+aaV9hXOY= 79 + +github.com/xtaci/smux v1.5.24/go.mod h1:OMlQbT5vcgl2gb49mFkYo6SMf+zP3rcjcwQz7ZU7IGY= 80 + +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= 81 + +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= 82 + +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= 83 + +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 84 + +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= 85 + +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 86 + +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= 87 + +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= 88 + +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= 89 + +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 90 + +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= 91 + +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 92 + +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 93 + +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 94 + -- 95 + 2.45.1 96 +
+35 -20
pkgs/by-name/ss/ssm-session-manager-plugin/package.nix
··· 1 1 { lib 2 2 , fetchFromGitHub 3 - , buildGoPackage 3 + , buildGoModule 4 + , fetchpatch 4 5 }: 5 - 6 - buildGoPackage rec { 6 + buildGoModule rec { 7 7 pname = "ssm-session-manager-plugin"; 8 8 version = "1.2.650.0"; 9 9 10 - goPackagePath = "github.com/aws/session-manager-plugin"; 11 - 12 10 src = fetchFromGitHub { 13 11 owner = "aws"; 14 12 repo = "session-manager-plugin"; ··· 16 14 hash = "sha256-IcDVt/iE/EYV9Blvl7Gj0UFJcdsUCFdaSQkIto0CKRI="; 17 15 }; 18 16 17 + patches = [ 18 + # Add support for Go modules. 19 + # 20 + # This patch doesn't belong to any upstream PR, it is specially crafted for 21 + # nixpkgs. Deleting the vendor dir is left out from the patch and done in 22 + # postPatch instead, as otherwise the patch would be to big and GitHub returns 23 + # an error. 24 + # 25 + # With https://github.com/aws/session-manager-plugin/pull/74 there is an 26 + # upstream PR with the same goal. It isn't pulled here as patch for the same 27 + # reason. 28 + # 29 + # Notice that the dependencies are pinned with the patch, and upstream dependency 30 + # updates won't take effect. Patch should be recreated from time to time. 31 + # - `rm -rf vendor` 32 + # - `go mod init github.com/aws/session-manager-plugin` 33 + # - `go mod tidy` 34 + # - `go get github.com/twinj/uuid@v0.0.0-20151029044442-89173bcdda19` 35 + # - `go mod tidy` 36 + # - `git checkout HEAD vendor` 37 + ./0001-module-support.patch 38 + ]; 39 + 19 40 postPatch = '' 20 - mv vendor{,-old} 21 - mv vendor-old/src vendor 22 - rm -r vendor-old 41 + rm -rf vendor 23 42 ''; 24 43 44 + vendorHash = "sha256-wK+aWRC5yrPtdihXAj6RlYC9ZTTPuGUg9wLY33skzeE="; 45 + 46 + subPackages = [ "src/sessionmanagerplugin-main" ]; 47 + 25 48 preBuild = '' 26 - pushd go/src/${lib.escapeShellArg goPackagePath} 27 49 echo -n ${lib.escapeShellArg version} > VERSION 28 50 go run src/version/versiongenerator/version-gen.go 29 - popd 30 51 ''; 31 52 32 53 doCheck = true; 33 54 checkFlags = [ "-skip=TestSetSessionHandlers" ]; 34 55 35 56 preCheck = '' 36 - if ! [[ $(go/bin/sessionmanagerplugin-main --version) = ${lib.escapeShellArg version} ]]; then 57 + if ! [[ $($GOPATH/bin/sessionmanagerplugin-main --version) = ${lib.escapeShellArg version} ]]; then 37 58 echo 'wrong version' 38 59 exit 1 39 60 fi 40 61 ''; 41 62 42 - installPhase = '' 43 - runHook preInstall 44 - install -Dm555 go/bin/sessionmanagerplugin-main "$out/bin/session-manager-plugin" 45 - runHook postInstall 46 - ''; 47 - 48 - meta = with lib; { 63 + meta = { 49 64 homepage = "https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html"; 50 65 description = "Amazon SSM Session Manager Plugin"; 51 66 mainProgram = "session-manager-plugin"; 52 - license = licenses.asl20; 53 - maintainers = with maintainers; [ amarshall mbaillie ]; 67 + license = lib.licenses.asl20; 68 + maintainers = with lib.maintainers; [ amarshall mbaillie ]; 54 69 }; 55 70 }